# 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 You can set the site language in `mkdocs.yml` with: ``` yaml 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: 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]. [single language per document]: https://www.w3.org/International/questions/qa-html-language-declarations.en#attributes [language selector]: #site-language-selector [Unicode-aware slug function]: extensions/python-markdown.md#+toc.slugify ### 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`. ``` yaml 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`][site_url] as set in `mkdocs.yml` is prepended to the link. The following properties are available for each alternate language: : 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. : This property must be set to an absolute link, which might also point to another domain or subdomain not necessarily generated with MkDocs. : 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]][Language selector preview] [site_url]: https://www.mkdocs.org/user-guide/configuration/#site_url [ISO 639-1 language code]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes [Language selector preview]: ../assets/screenshots/language-selection.png #### Stay on page 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 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: ``` yaml theme: direction: ltr ``` Click on a tile to change the directionality: