我使用纯html-css在一个.html文件中创建登陆页(以便能够像apache一样在简单的文件serwer上运行它)。对于SEO,我决定为每种受支持的语言生成不同的.html文件-为了做到这一点,我使用静态-i18n,它使用带有翻译键的模板html文件,并将其更改为单独的html文件(每种语言一个)。我的带有translaton键的代码位于./src目录中,翻译应该在./dist文件夹中使用
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属性意味着标签内容内部是翻译键)
<div class="main__title" i18n >main.title</div>我有两个问题--如何动态地设置:
<html lang="??"> (但不改变提供翻译键的方式,如上面的html例子)<base href="...">标记中的适当href值(用于正确读取资产)--在主语言中应该是<base href="./">,但是在其他语言(在子目录中)中,应该是<base href="../">发布于 2022-09-29 00:01:38
这是我的解决方案--但也许还有更好的存在
"lang"添加到翻译的*.json文件中,并在标记中使用它,如下所示<html data-attr-t lang-t="lang"><base>
<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中)
https://stackoverflow.com/questions/73888950
复制相似问题