首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用statici18n为翻译设置html lang和base

如何使用statici18n为翻译设置html lang和base
EN

Stack Overflow用户
提问于 2022-09-29 00:01:38
回答 1查看 15关注 0票数 1

我使用纯html-css在一个.html文件中创建登陆页(以便能够像apache一样在简单的文件serwer上运行它)。对于SEO,我决定为每种受支持的语言生成不同的.html文件-为了做到这一点,我使用静态-i18n,它使用带有翻译键的模板html文件,并将其更改为单独的html文件(每种语言一个)。我的带有translaton键的代码位于./src目录中,翻译应该在./dist文件夹中使用

代码语言:javascript
运行
复制
static-i18n --fixPaths false --selector [i18n] --useAttr false -o ./dist -l en -i en -i pl ./src

./dist结构如下(我在构建脚本中分别复制了assets.htaccess ):

主要语言(英语)在./dist/index.html文件中,而其他语言则以亚重编码语言(如./dist/pl/index.html )。./src/index.html内部的示例转换( i18n属性意味着标签内容内部是翻译键)

代码语言:javascript
运行
复制
<div class="main__title" i18n >main.title</div>

我有两个问题--如何动态地设置:

  • lang在标签<html lang="??"> (但不改变提供翻译键的方式,如上面的html例子)
  • <base href="...">标记中的适当href值(用于正确读取资产)--在主语言中应该是<base href="./">,但是在其他语言(在子目录中)中,应该是<base href="../">
EN

回答 1

Stack Overflow用户

发布于 2022-09-29 00:01:38

这是我的解决方案--但也许还有更好的存在

  • 将键"lang"添加到翻译的*.json文件中,并在标记中使用它,如下所示
代码语言:javascript
运行
复制
<html data-attr-t lang-t="lang">
  • 从html中删除标记,并在标签顶部使用下面的js代码生成正确的<base>

代码语言:javascript
运行
复制
<script defer>
  // CAUTION! This script must be in <head> tag 
  // (<base> must be set before <body> loading)
  const mainLanguage = 'en'; 

  // set base in dynamic way
  const newBase = document.createElement('base');
  const lang = document.documentElement.lang;
  newBase.setAttribute('href', lang == 'en' ? './' : '../');
  document.getElementsByTagName('head')[0].appendChild(newBase);
</script>

或者类似于在lang中使用<base data-attr-t href-t="base"></base> (并将键"base":"./添加到en.json"base":"../" pl.json中)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73888950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档