Skip to content

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:

theme:
  language: en # (1)!
  1. 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:

  1. ๐Ÿ‡ฟ๐Ÿ‡ฆ Afrikaans af
  2. ๐Ÿ‡ฆ๐Ÿ‡ฑ Albanian sq
  3. ๐Ÿ‡ฆ๐Ÿ‡ช Arabic ar
  4. ๐Ÿ‡ฆ๐Ÿ‡ฒ Armenian hy
  5. ๐Ÿ‡ฆ๐Ÿ‡ฟ Azerbaijani az
  6. ๐Ÿ‡ฒ๐Ÿ‡พ Bahasa Malaysia ms
  7. ๐Ÿ‡ช๐Ÿ‡ธ Basque eu
  8. ๐Ÿ‡ง๐Ÿ‡พ Belarusian be
  9. ๐Ÿ‡ง๐Ÿ‡ฉ Bengali (Bangla) bn
  10. ๐Ÿ‡ง๐Ÿ‡ฌ Bulgarian bg
  11. ๐Ÿ‡ฒ๐Ÿ‡ฒ Burmese my
  12. ๐Ÿ‡ช๐Ÿ‡ธ Catalan ca
  13. ๐Ÿ‡จ๐Ÿ‡ณ Chinese (Simplified) zh
  14. ๐Ÿ‡น๐Ÿ‡ผ Chinese (Taiwanese) zh-TW
  15. ๐Ÿ‡จ๐Ÿ‡ณ Chinese (Traditional) zh-Hant
  16. ๐Ÿ‡ญ๐Ÿ‡ท Croatian hr
  17. ๐Ÿ‡จ๐Ÿ‡ฟ Czech cs
  18. ๐Ÿ‡ฉ๐Ÿ‡ฐ Danish da
  19. ๐Ÿ‡ณ๐Ÿ‡ฑ Dutch nl
  20. ๐Ÿ‡บ๐Ÿ‡ธ English en
  21. ๐Ÿ‡ช๐Ÿ‡บ Esperanto eo
  22. ๐Ÿ‡ช๐Ÿ‡ช Estonian et
  23. ๐Ÿ‡ซ๐Ÿ‡ฎ Finnish fi
  24. ๐Ÿ‡ซ๐Ÿ‡ท French fr
  25. ๐Ÿ‡ช๐Ÿ‡ธ Galician gl
  26. ๐Ÿ‡ฌ๐Ÿ‡ช Georgian ka
  27. ๐Ÿ‡ฉ๐Ÿ‡ช German de
  28. ๐Ÿ‡ฌ๐Ÿ‡ท Greek el
  29. ๐Ÿ‡ฎ๐Ÿ‡ฑ Hebrew he
  30. ๐Ÿ‡ฎ๐Ÿ‡ณ Hindi hi
  31. ๐Ÿ‡ญ๐Ÿ‡บ Hungarian hu
  32. ๐Ÿ‡ฎ๐Ÿ‡ธ Icelandic is
  33. ๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesian id
  34. ๐Ÿ‡ฎ๐Ÿ‡น Italian it
  35. ๐Ÿ‡ฏ๐Ÿ‡ต Japanese ja
  36. ๐Ÿ‡ฎ๐Ÿ‡ณ Kannada kn
  37. ๐Ÿ‡ฐ๐Ÿ‡ท Korean ko
  38. ๐Ÿ‡ฎ๐Ÿ‡ถ Kurdish (Soranรฎ) ku-IQ
  39. ๐Ÿ‡ฑ๐Ÿ‡ป Latvian lv
  40. ๐Ÿ‡ฑ๐Ÿ‡น Lithuanian lt
  41. ๐Ÿ‡ฑ๐Ÿ‡บ Luxembourgish lb
  42. ๐Ÿ‡ฒ๐Ÿ‡ฐ Macedonian mk
  43. ๐Ÿ‡ฒ๐Ÿ‡ณ Mongolian mn
  44. ๐Ÿ‡ณ๐Ÿ‡ด Norwegian Bokmรฅl nb
  45. ๐Ÿ‡ณ๐Ÿ‡ด Norwegian Nynorsk nn
  46. ๐Ÿ‡ฎ๐Ÿ‡ท Persian (Farsi) fa
  47. ๐Ÿ‡ต๐Ÿ‡ฑ Polish pl
  48. ๐Ÿ‡ต๐Ÿ‡น Portuguese pt
  49. ๐Ÿ‡ง๐Ÿ‡ท Portuguese (Brasilian) pt-BR
  50. ๐Ÿ‡ท๐Ÿ‡ด Romanian ro
  51. ๐Ÿ‡ท๐Ÿ‡บ Russian ru
  52. ๐Ÿ‡ฎ๐Ÿ‡ณ Sanskrit sa
  53. ๐Ÿ‡ท๐Ÿ‡ธ Serbian sr
  54. ๐Ÿ‡ท๐Ÿ‡ธ Serbo-Croatian sh
  55. ๐Ÿ‡ฑ๐Ÿ‡ฐ Sinhalese si
  56. ๐Ÿ‡ธ๐Ÿ‡ฐ Slovak sk
  57. ๐Ÿ‡ธ๐Ÿ‡ฎ Slovenian sl
  58. ๐Ÿ‡ช๐Ÿ‡ธ Spanish es
  59. ๐Ÿ‡ธ๐Ÿ‡ช Swedish sv
  60. ๐Ÿ‡ต๐Ÿ‡ญ Tagalog tl
  61. ๐Ÿ‡ฎ๐Ÿ‡ณ Tamil ta
  62. ๐Ÿ‡ฎ๐Ÿ‡ณ Telugu te
  63. ๐Ÿ‡น๐Ÿ‡ญ Thai th
  64. ๐Ÿ‡น๐Ÿ‡ท Turkish tr
  65. ๐Ÿ‡บ๐Ÿ‡ฆ Ukrainian uk
  66. ๐Ÿ‡ต๐Ÿ‡ฐ Urdu ur
  67. ๐Ÿ‡บ๐Ÿ‡ฟ Uzbek uz
  68. ๐Ÿ‡ป๐Ÿ‡ณ Vietnamese vi
  69. ๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ Welsh cy

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.

Site language selector

7.0.0

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.

extra:
  alternate:
    - name: English
      link: /en/ # (1)!
      lang: en
    - name: Deutsch
      link: /de/
      lang: de
  1. 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_url as set in mkdocs.yml is 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 hreflang attribute of the link, improving discoverability via search engines.

Language selector preview

Stay on page

9.7.0

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:

docs.example.com/en/     -> docs.example.com/de/
docs.example.com/en/foo/ -> docs.example.com/de/foo/
docs.example.com/en/bar/ -> docs.example.com/de/bar/

No configuration is necessary.

Directionality

2.5.0

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:

theme:
  direction: ltr

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 %}
  1. Note that en must always be used as a fallback language, as it's the default theme language.

  2. Check the list of available languages, pick the translation you want to override for your language and add them here.

theme:
  language: custom