6.2 KiB
title, linkTitle, description, categories, keywords
| title | linkTitle | description | categories | keywords |
|---|---|---|---|---|
| Configure languages | Languages | Configure the languages in your multilingual site. |
Base settings
Configure the following base settings within the site's root configuration:
{{< code-toggle file=hugo >}} defaultContentLanguage = 'en' defaultContentLanguageInSubdir = false disableDefaultLanguageRedirect = false disableLanguages = [] {{< /code-toggle >}}
- defaultContentLanguage
- (
string) The project's default language key, conforming to the syntax described in RFC 5646. This value must match one of the defined language keys. Default isen. - defaultContentLanguageInSubdir
- (
bool) Whether to publish the default language site to a subdirectory matching thedefaultContentLanguage. Default isfalse. - disableDefaultLanguageRedirect
- {{< new-in 0.140.0 />}}
- (
bool) Whether to disable generation of the alias redirect to the default language whenDefaultContentLanguageInSubdiristrue. Default isfalse. - disableLanguages
- (
[]string]) A slice of language keys representing the languages to disable during the build process. Although this is functional, consider using thedisabledkey under each language instead.
Language settings
Configure each language under the languages key:
{{< code-toggle config=languages />}}
In the above, en is the language key.
- disabled
- (
bool) Whether to disable this language when building the site. Default isfalse. - languageCode
- (
string) The language tag as described in RFC 5646. This value does not affect localization or URLs. Hugo uses this value to populate:- The
langattribute of thehtmlelement in the embedded alias template - The
languageelement in the embedded RSS template - The
localeproperty in the embedded OpenGraph template
Access this value from a template using the
Language.LanguageCodemethod on aSiteorPageobject. - The
- languageDirection
- (
string) The language direction, either left-to-right (ltr) or right-to-left (rtl). Use this value in your templates with the globaldirHTML attribute. Access this value from a template using theLanguage.LanguageDirectionmethod on aSiteorPageobject. - languageName
- (
string) The language name, typically used when rendering a language switcher. Access this value from a template using theLanguage.LanguageNamemethod on aSiteorPageobject. - title
- (
string) The site title for this language. Access this value from a template using theTitlemethod on aSiteobject. - weight
- (
int) The language weight. When set to a non-zero value, this is the primary sort criteria for this language. Access this value from a template using theLanguage.Weightmethod on aSiteorPageobject.
Localized settings
Some configuration settings can be defined separately for each language. For example:
{{< code-toggle file=hugo >}} [languages.en] languageCode = 'en-US' languageName = 'English' weight = 1 title = 'Project Documentation' timeZone = 'America/New_York' [languages.en.pagination] path = 'page' [languages.en.params] subtitle = 'Reference, Tutorials, and Explanations' {{< /code-toggle >}}
The following configuration keys can be defined separately for each language:
{{< per-lang-config-keys >}}
Any key not defined in a languages object will fall back to the global value in the root of the site configuration.
Language keys
Language keys must conform to the syntax described in RFC 5646. For example:
{{< code-toggle file=hugo >}} defaultContentLanguage = 'de' [languages.de] weight = 1 [languages.en-US] weight = 2 [languages.pt-BR] weight = 3 {{< /code-toggle >}}
Artificial languages with private use subtags as defined in RFC 5646 § 2.2.7 are also supported. Omit the art-x- prefix from the language key. For example:
{{< code-toggle file=hugo >}} defaultContentLanguage = 'en' [languages.en] weight = 1 [languages.hugolang] weight = 2 {{< /code-toggle >}}
Note
Private use subtags must not exceed 8 alphanumeric characters.
Example
{{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = true disableDefaultLanguageRedirect = false
[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' {{< /code-toggle >}}
Note
In the example above, omit
contentDirif translating by file name.
Multihost
Hugo supports multiple languages in a multihost configuration. This means you can configure a baseURL per language.
Note
If you define a
baseURLfor one language, you must define a uniquebaseURLfor all languages.
For example:
{{< code-toggle file=hugo >}} 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 {{</ code-toggle >}}
With the above, Hugo publishes two sites, each with their own root:
public
├── en
└── fr