如何翻译 Hugo 中的配置文件?

How to translate a config file in Hugo?

我是第一次使用 Hugo,我遇到了翻译问题。

更具体地说,我正在使用 hugo-theme-bootstrap 主题。在 config\_default 中,我有一个名为 author.toml 的文件,其中包含作者姓名、简历、城市等信息。它看起来像这样:

name = "Pascal Bergeron"
avatar = "images/profile.jpg"
bio = "Description française."
location = "Montréal"

问题是我的网站的英文版和法文版都使用了这个文件。但是,我需要根据语言更改 biolocation 字段。我尝试创建一个名为 author.fr.toml 的文件,但它的设置最终被忽略了。事实上,如果我什至将 author.toml 重命名为 author.en.toml,英语的设置将被忽略。好像我只能有一个 author.toml 文件。这很奇怪,因为我可以用这种方式翻译 config 文件夹中的所有其他文件(例如,我有一个 params.en.toml 和一个 params.fr.toml 文件)。

我在我的主题的 layouts 文件夹中做了一些挖掘,我找到了 author.toml 用于创建 HTML 代码的文件。它看起来像这样:

{{- with .Site.Author -}}
<section class="profile surface row">
  <div class="col-xl-6 d-flex align-items-center justify-content-center">
    <img class="profile-avatar img-fluid" src="{{ absURL (default "images/profile.webp" .avatar) }}" alt="{{ .name }}" loading="lazy">
  </div>
  <div class="col-xl-6">
    <h5 class="profile-name my-2">{{ .name }}</h5>
    {{- with .bio -}}
    <div class="profile-bio mb-2">{{ . }}</div>
    {{- end -}}
    {{- with .company -}}
    <div class="profile-company mb-2"><i class="fas fa-fw fa-building"></i>{{ . }}</div>
    {{- end -}}
    {{- with .location -}}
    <div class="profile-location mb-2"><i class="fas fa-fw fa-map-marker-alt"></i>{{ . }}</div>
    {{- end -}}
    {{- if .about -}}
      <div class="profile-about mb-2"><i class="fas fa-fw fa-info-circle"></i><a target="_blank" href="{{ .about }}">{{ i18n "about_me" }}</a></div>
    {{- else -}}
      {{- with $.GetPage "about" -}}
      <div class="profile-about mb-2"><i class="fas fa-fw fa-info-circle"></i><a href="{{ .Permalink }}">{{ .Title }}</a></div>
      {{- end -}}
    {{- end -}}
  </div>
</section>
{{- end -}}

如何为每种语言创建一个 author.toml 文件?

(TLDR - 网站作者将作者数据设置为 1 个配置文件 - 即主题是为整个网站的 1 位作者构建的)。

你好 Pascal,非常感谢你花时间回答我。 澄清一下:

  1. 这不是“hugo”的东西,而是这个小伙子构建这个主题的方式。

  2. 您将不得不修改他的主题(或联系他)。正如您所指出的,我认为有问题的特定文件是边栏中的 profile.html:

    {{- 如果 .Site.Author -}}
    {{- $layout := default "" .Site.Author.params.layout -}}
    {{- if eq $layout "compact" -}}
    {{- 部分“sidebar/profile/compact”。 -}}
    {{- else -}}
    {{- 部分“sidebar/profile/default”。 -}}
    {{- 结束 -}}
    {{- 结束 -}}

如果你遵循这个调用的各个部分,即在整个兔子中你会找到一个例子(这是许多例子之一),就像你在你的问题中描述和引用的那样,它有具体的评论 {{ - 与.Site.Author - }} 意思是,它正在寻找 1 个具有特定名称的文件。
[https://gohugo.io/content-management/multilingual/][1]
涵盖如何设置 hugo 多语言 - 每个站点应该有 1 个配置文件(在 Hugo 中有它自己的含义 - 见上页) 重点是,这是一个主题问题,我建议让主题创建者调整编辑。 我的建议是,如果主题创建者没有帮助——将删除对 TOML 文件的依赖,并简单地引用一个包含作者数据的无头包,并且由于主题具有 i18n,将两者集成(见上文 link) 所以它们是每种语言的无头包。