---
template: overrides/main.html
---
# Changing the language
Material for MkDocs supports internationalization (i18n) and provides
translations for template variables and labels in 40+ languages. Additionally,
the site search can be configured to use a language-specific stemmer (if
available).
## Configuration
### Site language
[:octicons-file-code-24: Source][1] · :octicons-milestone-24: Default: `en`
You can set the _site language_ in `mkdocs.yml` with:
``` yaml
theme:
language: en
```
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,
as [documented here][2]._
[1]: https://github.com/squidfunk/mkdocs-material/blob/master/src/partials/languages/en.html
[2]: setting-up-navigation.md#slugify
### Site language selector
[:octicons-file-code-24: Source][3] ·
:octicons-beaker-24: Experimental
If your documentation is available in multiple languages, a _language selector_
can be added to the header next to the search bar. Alternate languages can be
defined via `mkdocs.yml`:
``` yaml
extra:
alternate:
# Switch to English
- name: English
link: /en/
lang: en
# Switch to German
- name: Deutsch
link: /de/
lang: de
# Switch to Japanese
- name: 日本語
link: /ja/
lang: ja
```
This will render a language selector in the header next to the search bar:
[![Language selection][4]][4]
[3]: https://github.com/squidfunk/mkdocs-material/blob/master/src/partials/header.html
[4]: ../assets/screenshots/language-selection.png
### Site search language
[:octicons-file-code-24: Source][5] ·
:octicons-milestone-24: Default: _automatically set_
Some languages, like Arabic or Japanese, need dedicated stemmers for search to
work properly. Material for MkDocs relies on [lunr-languages][6] to provide this
functionality. See the guide detailing how to [set up site search][7] for
more information.
[5]: https://github.com/squidfunk/mkdocs-material/blob/master/src/assets/javascripts/integrations/search/worker/main/index.ts
[6]: https://github.com/MihaiValentin/lunr-languages
[7]: setting-up-site-search.md
### Directionality
[:octicons-file-code-24: Source][8] ·
:octicons-milestone-24: Default: _automatically set_
While many languages are read `ltr` (left-to-right), Material for MkDocs also
supports `rtl` (right-to-left) _directionality_ which is inferred from the
selected language, but can also be set with:
``` yaml
theme:
direction: ltr
```
Click on a tile to change the directionality:
[8]: https://github.com/squidfunk/mkdocs-material/blob/master/src/base.html
## Customization
### Custom translations
[:octicons-file-code-24: Source][1] ·
:octicons-mortar-board-24: Difficulty: _easy_
If you want to customize some of the translations for a language, just follow
the guide on [theme extension][9] and create a new partial in
`partials/languages`, e.g. `en-custom.html`. Next, look up the translation you
want to change in the [base translation][1] and add it to the partial.
Let's say you want to change "__Table of contents__" to "__On this page__":
``` html
{% import "partials/languages/en.html" as fallback %}
{% macro override(key) %}{{ {
"toc.title": "On this page"
}[key] }}{% endmacro %}
{% macro t(key) %}{{ override(key) or fallback.t(key) }}{% endmacro %}
```
Then, add the following lines to `mkdocs.yml`:
``` yaml
theme:
language: en-custom
```
[9]: ../customization.md#extending-the-theme