Changing the language¶
Material for MkDocs supports internationalization (i18n) and provides translations for template variables and labels in 60+ languages. Additionally, the site search can be configured to use a language-specific stemmer, if available.
Configuration¶
Site language¶
1.12.0
en
You can set the site language in mkdocs.yml with:
-
HTML5 only allows to set a single language per document, which is why Material for MkDocs only supports setting a canonical language for the entire project, i.e. one per
mkdocs.yml.The easiest way to build a multi-language documentation is to create one project in a subfolder per language, and then use the language selector to interlink those projects.
The following languages are supported:
-
Afrikaans
af1 translations missing -
Albanian
sq1 translations missing -
Arabic
ar1 translations missing -
Armenian
hy1 translations missing -
Azerbaijani
az3 translations missing -
Bahasa Malaysia
ms17 translations missing -
Basque
eu1 translations missing -
Belarusian
be1 translations missing -
Bengali (Bangla)
bn1 translations missing -
Bulgarian
bg1 translations missing -
Burmese
my28 translations missing -
Catalan
ca1 translations missing -
Chinese (Simplified)
zh1 translations missing -
Chinese (Taiwanese)
zh-TW1 translations missing -
Chinese (Traditional)
zh-Hant1 translations missing -
Croatian
hr1 translations missing -
Czech
cs1 translations missing -
Danish
da1 translations missing -
Dutch
nl1 translations missing -
English
enComplete -
Esperanto
eo1 translations missing -
Estonian
et1 translations missing -
Finnish
fi1 translations missing -
French
fr1 translations missing -
Galician
gl1 translations missing -
Georgian
ka28 translations missing -
German
deComplete -
Greek
el1 translations missing -
Hebrew
he1 translations missing -
Hindi
hi1 translations missing -
Hungarian
hu1 translations missing -
Icelandic
is1 translations missing -
Indonesian
id1 translations missing -
Italian
it1 translations missing -
Japanese
ja1 translations missing -
Kannada
kn1 translations missing -
Korean
ko1 translations missing -
Kurdish (Soranî)
ku-IQ14 translations missing -
Latvian
lv1 translations missing -
Lithuanian
lt1 translations missing -
Luxembourgish
lb1 translations missing -
Macedonian
mk1 translations missing -
Mongolian
mn26 translations missing -
Norwegian Bokmål
nb1 translations missing -
Norwegian Nynorsk
nn1 translations missing -
Persian (Farsi)
fa1 translations missing -
Polish
pl1 translations missing -
Portuguese
pt1 translations missing -
Portuguese (Brasilian)
pt-BR1 translations missing -
Romanian
ro1 translations missing -
Russian
ru1 translations missing -
Sanskrit
sa1 translations missing -
Serbian
sr1 translations missing -
Serbo-Croatian
sh6 translations missing -
Sinhalese
si26 translations missing -
Slovak
sk1 translations missing -
Slovenian
sl1 translations missing -
Spanish
es1 translations missing -
Swedish
sv1 translations missing -
Tagalog
tl4 translations missing -
Tamil
ta1 translations missing -
Telugu
te1 translations missing -
Thai
th1 translations missing -
Turkish
tr1 translations missing -
Ukrainian
uk1 translations missing -
Urdu
ur1 translations missing -
Uzbek
uz1 translations missing -
Vietnamese
vi1 translations missing
Note that some languages will produce unreadable anchor links due to the way the default slug function works. Consider using a Unicode-aware slug function.
Translations missing? Help us out, it takes only 5 minutes
Material for MkDocs relies on outside contributions for adding and updating translations for the more than 60 languages it supports. If your language shows that some translations are missing, click on the link to add them. If your language is not in the list, click here to add a new language.
Site language selector¶
If your documentation is available in multiple languages, a language selector
pointing to those languages can be added to the header. Alternate languages
can be defined via mkdocs.yml.
- Note that this must be an absolute link. If it includes a domain part, it's
used as defined. Otherwise the domain part of the
site_urlas set inmkdocs.ymlis prepended to the link.
The following properties are available for each alternate language:
name-
This value of this property is used inside the language selector as the name of the language and must be set to a non-empty string.
link-
This property must be set to an absolute link, which might also point to another domain or subdomain not necessarily generated with MkDocs.
lang-
This property must contain an ISO 639-1 language code and is used for the
hreflangattribute of the link, improving discoverability via search engines.
Stay on page¶
Insiders improves the user experience when switching between languages, e.g.,
if language en and de contain a page with the same path name, the user will
stay on the current page:
No configuration is necessary. We're working hard on improving multi-language support in 2024, including making switching between languages even more seamless in the future.
Directionality¶
While many languages are read ltr (left-to-right), Material for MkDocs also
supports rtl (right-to-left) directionality which is deduced from the
selected language, but can also be set with:
Click on a tile to change the directionality:
Customization¶
Custom translations¶
If you want to customize some of the translations for a language, just follow
the guide on theme extension and create a new partial in the overrides
folder. Then, import the translations of the language as a fallback and only
adjust the ones you want to override:
<!-- Import translations for language and fallback -->
{% import "partials/languages/de.html" as language %}
{% import "partials/languages/en.html" as fallback %} <!-- (1)! -->
<!-- Define custom translations -->
{% macro override(key) %}{{ {
"source.file.date.created": "Erstellt am", <!-- (2)! -->
"source.file.date.updated": "Aktualisiert am"
}[key] }}{% endmacro %}
<!-- Re-export translations -->
{% macro t(key) %}{{
override(key) or language.t(key) or fallback.t(key)
}}{% endmacro %}
-
Note that
enmust always be used as a fallback language, as it's the default theme language. -
Check the list of available languages, pick the translation you want to override for your language and add them here.
