Hugo 配置语言
Hugo 配置多语言站点中的语言。
基本设置
在站点的根配置中配置以下基本设置:
defaultContentLanguage: en
defaultContentLanguageInSubdir: false
disableDefaultLanguageRedirect: false
disableLanguages: []
defaultContentLanguage = 'en'
defaultContentLanguageInSubdir = false
disableDefaultLanguageRedirect = false
disableLanguages = []
{
"defaultContentLanguage": "en",
"defaultContentLanguageInSubdir": false,
"disableDefaultLanguageRedirect": false,
"disableLanguages": []
}
- defaultContentLanguage
- (
string) 项目的默认内容语言,符合 RFC 5646 中描述的语法。此值必须匹配一个已定义的 语言键。默认值是en。 - defaultContentLanguageInSubdir
- (
bool) 是否将默认内容语言发布到与defaultContentLanguage匹配的子目录。默认值是false。 - disableDefaultLanguageRedirect
- New in v0.140.0
- (
bool) 是否禁用默认内容语言的别名重定向。当defaultContentLanguageInSubdir为true时,此设置防止根目录重定向到语言子目录。相反,当defaultContentLanguageInSubdir为false时,此设置防止语言子目录重定向到根目录。此设置被更通用的disableDefaultSiteRedirect设置取代。默认值是false。 - disableLanguages
- (
[]string) 表示在构建过程中要禁用的语言的语言键切片。虽然这是有效的,但请考虑改用每个语言下的disabled键。
语言设置
在 languages 键下配置每种语言:
languages:
en:
disabled: false
languageCode: ''
languageDirection: ''
languageName: ''
title: ''
weight: 0
[languages]
[languages.en]
disabled = false
languageCode = ''
languageDirection = ''
languageName = ''
title = ''
weight = 0
{
"languages": {
"en": {
"disabled": false,
"languageCode": "",
"languageDirection": "",
"languageName": "",
"title": "",
"weight": 0
}
}
}
在上例中,en 是 语言键。
- disabled
- (
bool) 是否在构建站点时禁用此语言。默认值是false。 - languageCode
- (
string) 语言标签,如 RFC 5646 中所述。这是language.Translate函数用于选择翻译表的主要值,如果不存在匹配的翻译表,则回退到语言键。Hugo 还使用此值填充:
- 嵌入式别名模板 中
html元素的lang属性 - 嵌入式 RSS 模板 中的
language元素 - 嵌入式 OpenGraph 模板 中的
locale属性
此值不影响日期、数字和货币的本地化,也不影响站点的 URL 结构。这些由 语言键 控制。
使用
Site或Page对象上的Language.LanguageCode方法从模板访问此值。 - 嵌入式别名模板 中
- languageDirection
- (
string) 语言方向,从左到右 (ltr) 或从右到左 (rtl)。在模板中使用全局dirHTML 属性时使用此值。使用Site或Page对象上的Language.LanguageDirection方法从模板访问此值。 - languageName
- (
string) 语言名称,通常用于渲染语言切换器。使用Site或Page对象上的Language.LanguageName方法从模板访问此值。 - title
- (
string) 此语言的站点标题。使用Site对象上的Title方法从模板访问此值。 - weight
- (
int) 语言 权重。当设置为非零值时,这是此语言的主要排序条件。使用Site或Page对象上的Language.Weight方法从模板访问此值。
本地化设置
某些配置设置可以为每种语言单独定义。例如:
languages:
en:
languageCode: en-US
languageName: English
pagination:
path: page
params:
subtitle: 参考、教程和解释
timeZone: America/New_York
title: 项目文档
weight: 1
[languages]
[languages.en]
languageCode = 'en-US'
languageName = 'English'
timeZone = 'America/New_York'
title = '项目文档'
weight = 1
[languages.en.pagination]
path = 'page'
[languages.en.params]
subtitle = '参考、教程和解释'
{
"languages": {
"en": {
"languageCode": "en-US",
"languageName": "English",
"pagination": {
"path": "page"
},
"params": {
"subtitle": "参考、教程和解释"
},
"timeZone": "America/New_York",
"title": "项目文档",
"weight": 1
}
}
}
以下配置键可以为每种语言单独定义:
baseURL
buildDrafts
buildExpired
buildFuture
canonifyURLs
capitalizeListTitles
contentDir
copyright
disableAliases
disableHugoGeneratorInject
disableKinds
disableLiveReload
disablePathToLower
enableEmoji
frontmatter
hasCJKLanguage
languageCode
mainSections
markup
mediaTypes
menus
outputFormats
outputs
page
pagination
params
permalinks
pluralizeListTitles
privacy
refLinksErrorLevel
refLinksNotFoundURL
related
relativeURLs
removePathAccents
renderSegments
sectionPagesMenu
security
services
sitemap
staticDir
summaryLength
taxonomies
timeZone
title
titleCaseStyle
任何未在 languages 对象中定义的键将回退到站点配置根目录中的全局值。
语言键
语言键必须符合 RFC 5646 中描述的语法。例如:
defaultContentLanguage: de
languages:
de:
weight: 1
en-US:
weight: 2
pt-BR:
weight: 3
defaultContentLanguage = 'de'
[languages]
[languages.de]
weight = 1
[languages.en-US]
weight = 2
[languages.pt-BR]
weight = 3
{
"defaultContentLanguage": "de",
"languages": {
"de": {
"weight": 1
},
"en-US": {
"weight": 2
},
"pt-BR": {
"weight": 3
}
}
}
也支持 RFC 5646 § 2.2.7 中定义的带有私有用途子标签的人工语言。从语言键中省略 art-x- 前缀。例如:
defaultContentLanguage: en
languages:
en:
weight: 1
hugolang:
weight: 2
defaultContentLanguage = 'en'
[languages]
[languages.en]
weight = 1
[languages.hugolang]
weight = 2
{
"defaultContentLanguage": "en",
"languages": {
"en": {
"weight": 1
},
"hugolang": {
"weight": 2
}
}
}
私有用途子标签不得超过 8 个字母数字字符。
示例
defaultContentLanguage: de
defaultContentLanguageInSubdir: true
disableDefaultLanguageRedirect: false
languages:
de:
contentDir: content/de
disabled: false
languageCode: de-DE
languageDirection: ltr
languageName: Deutsch
params:
subtitle: Referenz, Tutorials und Erklärungen
title: Projekt Dokumentation
weight: 1
en:
contentDir: content/en
disabled: false
languageCode: en-US
languageDirection: ltr
languageName: English
params:
subtitle: Reference, Tutorials, and Explanations
title: Project Documentation
weight: 2
defaultContentLanguage = 'de'
defaultContentLanguageInSubdir = true
disableDefaultLanguageRedirect = false
[languages]
[languages.de]
contentDir = 'content/de'
disabled = false
languageCode = 'de-DE'
languageDirection = 'ltr'
languageName = 'Deutsch'
title = 'Projekt Dokumentation'
weight = 1
[languages.de.params]
subtitle = 'Referenz, Tutorials und Erklärungen'
[languages.en]
contentDir = 'content/en'
disabled = false
languageCode = 'en-US'
languageDirection = 'ltr'
languageName = 'English'
title = 'Project Documentation'
weight = 2
[languages.en.params]
subtitle = 'Reference, Tutorials, and Explanations'
{
"defaultContentLanguage": "de",
"defaultContentLanguageInSubdir": true,
"disableDefaultLanguageRedirect": false,
"languages": {
"de": {
"contentDir": "content/de",
"disabled": false,
"languageCode": "de-DE",
"languageDirection": "ltr",
"languageName": "Deutsch",
"params": {
"subtitle": "Referenz, Tutorials und Erklärungen"
},
"title": "Projekt Dokumentation",
"weight": 1
},
"en": {
"contentDir": "content/en",
"disabled": false,
"languageCode": "en-US",
"languageDirection": "ltr",
"languageName": "English",
"params": {
"subtitle": "Reference, Tutorials, and Explanations"
},
"title": "Project Documentation",
"weight": 2
}
}
}
在上面的示例中,如果 按文件名翻译,请省略 contentDir。
多主机
Hugo 支持多主机配置中的多种语言。这意味着您可以为每种语言配置一个 baseURL。
如果您为一种语言定义了 baseURL,则必须为所有语言定义唯一的 baseURL。
例如:
defaultContentLanguage: fr
languages:
en:
baseURL: https://en.example.org/
languageName: English
title: In English
weight: 2
fr:
baseURL: https://fr.example.org
languageName: Français
title: En Français
weight: 1
defaultContentLanguage = 'fr'
[languages]
[languages.en]
baseURL = 'https://en.example.org/'
languageName = 'English'
title = 'In English'
weight = 2
[languages.fr]
baseURL = 'https://fr.example.org'
languageName = 'Français'
title = 'En Français'
weight = 1
{
"defaultContentLanguage": "fr",
"languages": {
"en": {
"baseURL": "https://en.example.org/",
"languageName": "English",
"title": "In English",
"weight": 2
},
"fr": {
"baseURL": "https://fr.example.org",
"languageName": "Français",
"title": "En Français",
"weight": 1
}
}
}
使用上述配置,Hugo 发布两个站点,每个站点都有自己的根:
public
├── en
└── fr