HUGO
Menu
GitHub 87548 stars Mastodon

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) 是否禁用默认内容语言的别名重定向。当 defaultContentLanguageInSubdirtrue 时,此设置防止根目录重定向到语言子目录。相反,当 defaultContentLanguageInSubdirfalse 时,此设置防止语言子目录重定向到根目录。此设置被更通用的 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 还使用此值填充:

此值不影响日期、数字和货币的本地化,也不影响站点的 URL 结构。这些由 语言键 控制。

使用 SitePage 对象上的 Language.LanguageCode 方法从模板访问此值。

languageDirection
(string) 语言方向,从左到右 (ltr) 或从右到左 (rtl)。在模板中使用全局 dir HTML 属性时使用此值。使用 SitePage 对象上的 Language.LanguageDirection 方法从模板访问此值。
languageName
(string) 语言名称,通常用于渲染语言切换器。使用 SitePage 对象上的 Language.LanguageName 方法从模板访问此值。
title
(string) 此语言的站点标题。使用 Site 对象上的 Title 方法从模板访问此值。
weight
(int) 语言 权重。当设置为非零值时,这是此语言的主要排序条件。使用 SitePage 对象上的 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
      }
   }
}

以下配置键可以为每种语言单独定义:

任何未在 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

Last updated: January 1, 0001
Improve this page