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