1

我的目标是使用hugo建立一个多语言网站。为此,我想:

  • 不碰主题文件
  • 有一个配置文件,它定义了所有语言的整体结构(config.toml)
  • 有一个适用于所有语言的“字符串”文件

例如,我会有一个这样的 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 中使用变量。那么有没有一种不同的方法可以实现这一目标?

4

1 回答 1

0

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

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

上面的教程要求“每种语言都有一个单独的域名”。我设法绕过了它并且必须访问站点,一个位于根目录 (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 版本。这偏离了教程,需要 hack。

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

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

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

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

  1. 破解部分。博客文章可以在静态页面(登陆页面)上正常工作/lt/,但不能正常工作。我使用这个指令。

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

slug: "lt/duk"

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

我使用我的 npm scripts 任务使用rsync和手动命令来删除冗余文件夹来恢复它:

"restorefolders": "rsync -a public/lt/lt/ public/lt/ && rm -rf public/lt/lt/",
于 2016-05-29T20:54:44.017 回答