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