在 hugo 配置文件中使用可变语言特定字符串

Use variable language specific strings in hugo config file

我的目标是使用 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

或以同样的方式。

为此,我需要使用在 english.toml 或 german.toml

中定义的 config.toml 中的变量

我的 google 搜索到目前为止说,我不能在 toml 中使用变量。 那么有没有不同的方法可以实现这一点?

您使用变量的方法不是最优的,请使用下面的教程。

多语言站点将作为 Hugo 0.16 的一个功能出现,但我使用 this 教程和一些技巧在当前的 Hugo 上成功地构建了一个多语言站点。

以上教程需要"have a separate domain name for each language"。我设法绕过它,必须访问站点,一个在根目录 (EN),一个在文件夹 (/LT/)。

这是我使用的步骤。

  1. 设置可靠的构建运行器,你可以使用Grunt/Gulp,但我使用了npm脚本。我黑了 npm-build-boilerplate 并从 Hugo 外包了渲染。 Hugo 仅用于生成文件。 这很重要,因为 1) 我们将生成两个站点; 2) 黑客需要对文件夹进行操作,这在 npm 上很容易(我不精通构建自定义 Grunt/Gulp 脚本)。

  2. 按照教程在根文件夹中设置 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 版本。这偏离了教程,需要修改。

  1. 按照教程在 /data 文件夹中设置翻译。

  2. 奖励:在 Dash 上设置代码段:

    {{ ( 索引 $.Site.Data.translations $.Site.Params.locale ).@cursor }}

每当我输入 "trn" 时,我都会得到上面的结果,剩下的就是从翻译文件中粘贴密钥,然后我会得到正确语言的值。

  1. 破解部分。博客 posts/lt/ 上运行良好,但在静态页面(landing pages)上运行良好。我使用 this 指令。

基本上,每个静态页面,例如 content/lt/duk.md 都会设置 slug:

slug: "lt/duk"

但是这个 slug 会导致 double URL 路径,例如 lt/lt/duk.

我使用 rsync 和手动命令删除冗余文件夹,使用我的 npm 脚本任务恢复此文件:

"restorefolders": "rsync -a public/lt/lt/ public/lt/ && rm -rf public/lt/lt/",