在hugo配置文件

时间:2016-05-27 15:09:31

标签: hugo toml

我的目标是使用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中使用变量。 那么有什么不同的方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

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

多语言网站即将作为Hugo 0.16的一个功能出现,但我设法使用this教程和一些黑客在当前的Hugo上构建了一个多语言网站。

上述教程要求每种语言都有一个单独的域名"。我成功绕过了那个网站,一个是根(EN),另一个是文件夹(/ LT /)。

以下是我使用的步骤。

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

  2. 根据教程在根文件夹中设置config_en.toml和config_de.toml。

  3. 以下摘录自我的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上设置代码段:

      {{(index $ .Site.Data.translations $ .Site.Params.locale)。@ cursor}}

    3. 每当我输入" trn"时,我都会得到上述内容,剩下的就是从翻译文件中粘贴密钥,我得到正确语言的值。

      1. 黑客部分。博客帖子可以在/lt/上正常使用,但不能在静态页面(着陆页)上正常工作。我使用this指令。
      2. 基本上,每个静态页面,例如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/",