i18n国际化 - sofastack/sofastack.tech GitHub Wiki
SOFAStack 官网的国际化使用 Hugo Multilingual Mode 实现。
多语言配置
SOFAStack 官网支持中文和英文,网站所支持的语言是在根目录的 config.toml
中配置的,如下:
[languages]
[languages.en]
contentDir = "content/en"
languageName = "English"
weight = 20
[languages.zh]
contentDir = "content/zh"
languageName = "中文"
weight = 10
语言的代码是可以自定义的,文档的存储目录 contentDir
也是可以自定义的,weight 值小的将作为网站的默认语言,且 URL 上不会显示语言代码。对于非默认语言将会在所有文档的 URL 前增加语言代码部分,例如英文文档路径为 /projects/sofa-rpc/intro/
,访问 /en/projects/sofa-rpc/intro/
将会重定向后前面的路径,,对应的中文文档路径为 /zh/projects/sofa-rpc/intro/
。
国际化的内容包括以下两部分:
- 非文档页面:主页及其他导航页面
- 文档页面:项目文档、博客、教程等直接使用 Markdown 文件渲染而成的页面
下面将就以上两部分分别说明。
非文档页面
非文档页面主要通过 Hugo i18n 基于 String ID 来管理,在网站代码仓库的根目录的 i18n
目录下,分别创建网站支持的语言代码的配置文件 zh.yaml
和 en.yaml
。
假如现在网站中有一个字符串需要做多语言设置,需要在源码中这样设置:
{{ i18n "subscribeBoxTitle" }}
然后在 i18n/zh.yaml
和 i18n/en.yaml
中,分别给出该字符串的多语言的值。
- id: subscribeBoxTitle
translation: "All about SOFAStack"
文档页面
在网站代码根目录下 config.toml
中配置了英文和中文文档的路径分别为 content/en/
和 content/zh/
,只要分别在以上两个目录里创建对应语言的文档即可。
另外还可以在文档的 front matter 中加上 translationKey
配置,将不同语言的文档对应起来,详见:https://gohugo.io/content-management/multilingual