Home

hugo i18n

双语

hugo的国际化 由源于 内置 go-i18n

方式

一: 翻译 string

类似与 菜单栏 nav

有两种方式

  1. 在项目根目录

创建 i18n 文件夹

i18n

en.toml/yaml
zh.toml/yaml

en.toml

[home]
  other = "home"

zh.toml

[home]
  other = "主页"

上面的设置好后,在 模版主题中使用

*.html

{{ i18n "home" }}

这样在

html 头的带领下 呈现 en/zh.toml

<html lang='en'>
  1. 第二种

根目录中

config.toml

defaultContentLanguage = "en"
# 这里是 默认网址 https://example.com

# 如果是 true https://example.com/en
defaultContentLanguageInSubdir = false 

[languages.en]
  languageCode = "en-us"

[languages.zh]
  languageCode = "zh-cn"

[[menu.main]]
  name = "Home"
  url = "#about"
  weight = 1

[[Languages.zh.menu.main]]
  name = "主页"
  url = "#about"
  weight = 1

这里有个 第二种的 例子

总结一下:

但其实有时页面过大错误语法带来

不良或不改的页面呈现。 多数情况下,对我们来说,过程是不可见的。

所以应该时刻注意开启 hugo server -v 的 调试日志,查看原因。


二: 翻译文章

md 文件

根据官方文档,文章的翻译在配置好后

会变成

content
      about
          me.md  // me.en.md
          me.zh.md
      doc
          start.md //start.en.md
          start.zh.md

content 文章文件夹,存在着后缀名-有关国家简写

在网站 URL 体现

https://example.com/en/about
https://example.com/zh/about
...

config.toml


DefaultContentLanguage = "en"
copyright = "Everything is mine"

[params.navigation]
help  = "Help"

[Languages]
[Languages.en]  #这
title = "My blog"
weight = 1
[Languages.en.params]
linkedin = "english-link"

[Languages.zh] #和这个是关键
copyright = "都是我的"
title = "我的博客"
weight = 2
[Languages.zh.params]
linkedin = "lien-francais"
[Languages.fr.navigation]
help  = "Aide"

不过 如果 hugo server -v 出来的页面有时 页面呈现不正确

请给予多点耐心,Cao 怎么 英文直接变中文了

这时候,转几圈,重启server or 加 -w file.html watch 文件

的改动, 这里确实有bug,hugo,应该是 并发的问题,hexo server 就没这问题

上面代码 的 关键 就给予了 URL/en – URL/zh

剩下的 就是 翻译 文章 -> 新建 语言后缀文件 -> 放对位置

Done!!