如何在 Hugo 中翻译标签(分类法)?

art*_*.sw 5 internationalization taxonomy hugo

我正在尝试翻译 Hugo 中的标签。

\n\n

我的标签仅在我的帖子的元数据中声明:

\n\n
---\nauthor: arthur.sw\ndate: 2007-01-01T00:00:35Z\ntags:\n  - experiment\n  - reflection\n---\n\n... post content ...\n
Run Code Online (Sandbox Code Playgroud)\n\n

我将它们翻译成我的语言文件:

\n\n

/i18n/en.toml:

\n\n
[Experiment]\none = "Experiment"\nother = "Experiments"\n\n[Reflection]\none = "Reflection"\nother = "Reflections"\n
Run Code Online (Sandbox Code Playgroud)\n\n

/i18n/fr.toml:

\n\n
[Experiment]\none = "Exp\xc3\xa9rience"\nother = "Exp\xc3\xa9riences"\n\n[Reflection]\none = "R\xc3\xa9flexion"\nother = "R\xc3\xa9flexions"\n
Run Code Online (Sandbox Code Playgroud)\n\n

但无论我是否使用大写字母,它都不会翻译标签。

\n\n

我还尝试修改我的layouts/_default/list.html

\n\n
[...]\n\n        <h1 class=\'title\'>\n          {{- if eq .Kind "taxonomy" -}}\n          <span class=\'taxonomy-type\'>\n            {{- ( ( i18n .Data.Singular 1 ) | default .Data.Singular ) | title -}}\n            {{- print ": " -}}\n          </span>\n          {{- end -}}\n\n          {{- i18n .Title -}}\n\n        </h1>\n\n[...]\n
Run Code Online (Sandbox Code Playgroud)\n\n

(我i18n之前添加了.Title翻译分类名称)但这也不起作用。

\n\n

如何翻译标签?

\n

小智 6

每个标签都是分类的一部分。类别是另一个例子 - 两种类型都已在 Hugo 中预定义。

Hugo 中多语言页面的工作方式是,您将有两个单独的文件来填充不同的内容。这里您需要知道的是,分类法也是您可以直接在相应的内容文件中翻译的内容,而不是在其他地方。

在您的特定情况下,如果您将标签作为翻译标签放入帖子文件中,它们将显示在每个翻译页面中。

这看起来确实很明显,但您很快就会认识到,如果您转到分类列表页面(例如<URL>/tags/),那么您将看到默认语言的所有标签。如果您切换另一种语言,比如说法语,它可能会转到另一个 URI <URL>/fr/tags/,并显示该特定语言的所有标签。接下来,您期望的是您可以单击任何标签并查看与其相关的页面。是的,您可以 - 但在该特定概述页面上切换语言会显示其他语言没有这样的标签(除非它们的名称完全相同,有时可能会发生这种情况)。

这就是 Hugo 在两个标签之间建立连接变得有点不方便的地方,您将需要在前面创建/taxonomy/tag/<mytagname>.fr.md一个translationKey包含小写英文名称的属性的附加模板文件。

这就是所谓的“绕过默认链接”,您可以从相应的Hugo 文档页面阅读更多相关信息。