我的目标是使用hugo构建一个多语言网站。为此,我想:
例如,我会有一个这样的config.toml文件:
[params.navigation]
brand = "out-website"
[params.navigation.links]
about = $ABOUT_NAME
services = $SERVICES_NAME
team = $TEAM_NAME
impressum = $IMPRESSUM_NAME
英文文件:
ABOUT_NAME=About
SERVICES_NAME=Services
TEAM_NAME=Team
IMPRESSUM_NAME=Impressum
和这样的德语文件:
ABOUT_NAME=Über uns
SERVICES_NAME=Dienste
TEAM_NAME=Mitarbeiter
IMPRESSUM_NAME=Impressum
然后我想编译英语项目,我做了一些事情:
hugo --theme=... --config=config.toml --config=english.toml
和德语:
hugo --theme=... --config=config.toml --config=german.toml
或以相同的方式。
为此,我需要在config.toml中使用在english.toml或german.toml中定义的变量
到目前为止,我的谷歌搜索说,我不能在toml中使用变量。 那么有什么不同的方法可以实现这个目标吗?
答案 0 :(得分:0)
使用变量的方法不是最优的,请使用下面的教程。
多语言网站即将作为Hugo 0.16的一个功能出现,但我设法使用this教程和一些黑客在当前的Hugo上构建了一个多语言网站。
上述教程要求每种语言都有一个单独的域名"。我成功绕过了那个网站,一个是根(EN),另一个是文件夹(/ LT /)。
以下是我使用的步骤。
设置可靠的构建运行器,您可以使用Grunt / Gulp,但我使用了npm脚本。我攻击npm-build-boilerplate并从Hugo外包渲染。 Hugo仅用于生成文件。 这很重要,因为1)我们将生成两个网站; 2)hacks将需要对文件夹进行操作,这对npm来说很容易(我不熟练构建自定义的Grunt / Gulp脚本)。
根据教程在根文件夹中设置config_en.toml和config_de.toml。
以下摘录自我的config_en.toml:
contentdir = "content/en"
publishdir = "public"
以下摘录自我的config_lt.toml(在您的情况下将其更改为DE):
contentdir = "content/lt"
publishdir = "public/lt"
基本上,我希望我的website.com
显示EN版本,website.com/lt/
显示LT版本。这与教程不同,需要黑客攻击。
根据教程在/data
文件夹中设置翻译。
奖励:在Dash上设置代码段:
{{(index $ .Site.Data.translations $ .Site.Params.locale)。@ cursor}}
每当我输入" trn"时,我都会得到上述内容,剩下的就是从翻译文件中粘贴密钥,我得到正确语言的值。
/lt/
上正常使用,但不能在静态页面(着陆页)上正常工作。我使用this指令。基本上,每个静态页面,例如content/lt/duk.md
都将设置slug:
slug: "lt/duk"
但是这个slug会产生 double 网址路径,例如lt/lt/duk
。
我使用rsync
和手动命令使用我的npm脚本任务恢复此操作以删除冗余文件夹:
"restorefolders": "rsync -a public/lt/lt/ public/lt/ && rm -rf public/lt/lt/",