2020-07-17 01:15:59 +03:00
|
|
|
|
# Changing the language
|
|
|
|
|
|
|
|
|
|
Material for MkDocs supports internationalization (i18n) and provides
|
2022-01-09 16:20:09 +03:00
|
|
|
|
translations for template variables and labels in 50+ languages. Additionally,
|
2021-10-10 18:39:53 +03:00
|
|
|
|
the site search can be configured to use a language-specific stemmer, if
|
|
|
|
|
available.
|
2020-07-17 01:15:59 +03:00
|
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
|
|
### Site language
|
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
[:octicons-tag-24: 1.12.0][Site language support] ·
|
2021-10-10 18:39:53 +03:00
|
|
|
|
:octicons-milestone-24: Default: `en`
|
2020-07-17 01:15:59 +03:00
|
|
|
|
|
2021-10-10 18:39:53 +03:00
|
|
|
|
You can set the site language in `mkdocs.yml` with:
|
2020-07-17 01:15:59 +03:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
theme:
|
2022-04-02 15:04:30 +03:00
|
|
|
|
language: en # (1)!
|
2020-07-17 01:15:59 +03:00
|
|
|
|
```
|
|
|
|
|
|
2022-04-02 15:04:30 +03:00
|
|
|
|
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.
|
|
|
|
|
|
2020-07-17 01:15:59 +03:00
|
|
|
|
The following languages are supported:
|
|
|
|
|
|
2021-10-05 00:36:31 +03:00
|
|
|
|
<div class="mdx-columns" markdown>
|
2020-12-21 19:38:58 +03:00
|
|
|
|
|
|
|
|
|
- `af` – Afrikaans
|
|
|
|
|
- `ar` – Arabic
|
2021-01-26 12:48:59 +03:00
|
|
|
|
- `bg` – Bulgarian
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `bn` – Bengali (Bangla)
|
|
|
|
|
- `ca` – Catalan
|
|
|
|
|
- `cs` – Czech
|
|
|
|
|
- `da` – Danish
|
|
|
|
|
- `de` – German
|
2021-11-04 22:50:48 +03:00
|
|
|
|
- `el` – Greek
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `en` – English
|
|
|
|
|
- `eo` – Esperanto
|
|
|
|
|
- `es` – Spanish
|
|
|
|
|
- `et` – Estonian
|
|
|
|
|
- `fa` – Persian (Farsi)
|
|
|
|
|
- `fi` – Finnish
|
|
|
|
|
- `fr` – French
|
|
|
|
|
- `gl` – Galician
|
|
|
|
|
- `he` – Hebrew
|
|
|
|
|
- `hi` – Hindi
|
|
|
|
|
- `hr` – Croatian
|
|
|
|
|
- `hu` – Hungarian
|
2022-08-13 10:00:52 +03:00
|
|
|
|
- `hy` – Armenian
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `id` – Indonesian
|
2021-03-05 12:36:46 +03:00
|
|
|
|
- `is` – Icelandic
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `it` – Italian
|
|
|
|
|
- `ja` – Japanese
|
|
|
|
|
- `ka` – Georgian
|
2022-11-12 15:36:47 +03:00
|
|
|
|
- `ko` – Korean
|
2022-08-13 10:12:58 +03:00
|
|
|
|
- `lt` – Lithuanian
|
2022-01-23 14:17:44 +03:00
|
|
|
|
- `lv` – Latvian
|
2022-04-24 13:38:52 +03:00
|
|
|
|
- `mk` – Macedonian
|
2021-05-30 12:52:16 +03:00
|
|
|
|
- `mn` – Mongolian
|
2022-01-09 16:20:09 +03:00
|
|
|
|
- `ms` – Bahasa Malaysia
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `my` – Burmese
|
|
|
|
|
- `nl` – Dutch
|
2023-01-02 17:26:21 +03:00
|
|
|
|
- `nb` – Norwegian (Bokmål)
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `nn` – Norwegian (Nynorsk)
|
|
|
|
|
- `pl` – Polish
|
|
|
|
|
- `pt` – Portuguese
|
2022-02-10 23:55:45 +03:00
|
|
|
|
- `pt-BR` – Portuguese (Brasilian)
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `ro` – Romanian
|
|
|
|
|
- `ru` – Russian
|
|
|
|
|
- `sh` – Serbo-Croatian
|
2021-02-14 19:36:39 +03:00
|
|
|
|
- `si` – Sinhalese
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `sk` – Slovak
|
2021-02-14 19:36:39 +03:00
|
|
|
|
- `sl` – Slovenian
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `sr` – Serbian
|
|
|
|
|
- `sv` – Swedish
|
|
|
|
|
- `th` – Thai
|
2022-08-13 10:19:16 +03:00
|
|
|
|
- `tl` – Tagalog
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `tr` – Turkish
|
|
|
|
|
- `uk` – Ukrainian
|
2022-08-13 10:00:52 +03:00
|
|
|
|
- `ur` – Urdu
|
2022-05-14 10:47:20 +03:00
|
|
|
|
- `uz` – Uzbek
|
2020-12-21 19:38:58 +03:00
|
|
|
|
- `vi` – Vietnamese
|
|
|
|
|
- `zh` – Chinese (Simplified)
|
|
|
|
|
- `zh-Hant` – Chinese (Traditional)
|
|
|
|
|
- `zh-TW` – Chinese (Taiwanese)
|
2021-10-11 14:38:03 +03:00
|
|
|
|
- [Add language]
|
2020-12-21 19:38:58 +03:00
|
|
|
|
|
|
|
|
|
</div>
|
2020-07-17 01:15:59 +03:00
|
|
|
|
|
2021-10-10 18:39:53 +03:00
|
|
|
|
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].
|
2020-09-06 14:35:18 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
[Site language support]: https://github.com/squidfunk/mkdocs-material/releases/tag/1.12.0
|
2022-04-02 15:04:30 +03:00
|
|
|
|
[single language per document]: https://www.w3.org/International/questions/qa-html-language-declarations.en#attributes
|
|
|
|
|
[language selector]: #site-language-selector
|
2021-10-30 14:55:31 +03:00
|
|
|
|
[Unicode-aware slug function]: extensions/python-markdown.md#toc-slugify
|
|
|
|
|
[Add language]: https://github.com/squidfunk/mkdocs-material/issues/new?template=translate.yml&title=New+language%3A+%7Breplace+with+language+name%7D
|
2020-07-17 01:15:59 +03:00
|
|
|
|
|
2020-12-06 19:41:10 +03:00
|
|
|
|
### Site language selector
|
2020-07-17 01:15:59 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
[:octicons-tag-24: 7.0.0][Site language selector support] ·
|
2023-01-01 21:17:33 +03:00
|
|
|
|
:octicons-milestone-24: Default: _none_
|
2020-12-06 19:41:10 +03:00
|
|
|
|
|
2021-10-10 18:39:53 +03:00
|
|
|
|
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`.
|
2020-12-06 19:41:10 +03:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
extra:
|
|
|
|
|
alternate:
|
|
|
|
|
- name: English
|
2021-12-11 16:30:07 +03:00
|
|
|
|
link: /en/ # (1)!
|
2020-12-06 19:41:10 +03:00
|
|
|
|
lang: en
|
|
|
|
|
- name: Deutsch
|
2021-10-10 18:39:53 +03:00
|
|
|
|
link: /de/
|
2020-12-06 19:41:10 +03:00
|
|
|
|
lang: de
|
|
|
|
|
```
|
|
|
|
|
|
2021-10-10 18:39:53 +03:00
|
|
|
|
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.
|
2020-12-06 19:41:10 +03:00
|
|
|
|
|
2022-06-05 15:43:37 +03:00
|
|
|
|
The following properties are available for each alternate language:
|
2020-12-06 19:41:10 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
[`name`](#+alternate.name){ #+alternate.name }
|
2020-12-06 19:41:10 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
: :octicons-milestone-24: Default: _none_ · :octicons-alert-24: __Required__ –
|
2021-10-31 12:07:39 +03:00
|
|
|
|
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.
|
2020-12-06 19:41:10 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
[`link`](#+alternate.link){ #+alternate.link }
|
2021-10-10 18:39:53 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
: :octicons-milestone-24: Default: _none_ · :octicons-alert-24: __Required__ –
|
2021-10-31 12:07:39 +03:00
|
|
|
|
This property must be set to an absolute link, which might also point to
|
2021-10-10 18:39:53 +03:00
|
|
|
|
another domain or subdomain not necessarily generated with MkDocs.
|
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
[`lang`](#+alternate.lang){ #+alternate.lang }
|
2021-10-10 18:39:53 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
: :octicons-milestone-24: Default: _none_ · :octicons-alert-24: __Required__ –
|
2021-10-31 12:07:39 +03:00
|
|
|
|
This property must contain an [ISO 639-1 language code] and is used for
|
2021-10-10 18:39:53 +03:00
|
|
|
|
the `hreflang` attribute of the link, improving discoverability via search
|
|
|
|
|
engines.
|
2020-07-17 01:15:59 +03:00
|
|
|
|
|
2021-10-10 20:22:13 +03:00
|
|
|
|
[![Language selector preview]][Language selector preview]
|
2020-07-17 14:08:27 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
[Site language selector support]: https://github.com/squidfunk/mkdocs-material/releases/tag/7.0.0
|
2021-10-10 18:39:53 +03:00
|
|
|
|
[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
|
2021-10-10 20:22:13 +03:00
|
|
|
|
[Language selector preview]: ../assets/screenshots/language-selection.png
|
2020-07-17 14:08:27 +03:00
|
|
|
|
|
|
|
|
|
### Directionality
|
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
[:octicons-tag-24: 2.5.0][Directionality support] ·
|
2020-07-20 16:18:09 +03:00
|
|
|
|
:octicons-milestone-24: Default: _automatically set_
|
2020-07-17 14:08:27 +03:00
|
|
|
|
|
2020-07-17 01:15:59 +03:00
|
|
|
|
While many languages are read `ltr` (left-to-right), Material for MkDocs also
|
2021-10-10 18:39:53 +03:00
|
|
|
|
supports `rtl` (right-to-left) directionality which is deduced from the
|
2020-07-17 01:15:59 +03:00
|
|
|
|
selected language, but can also be set with:
|
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
theme:
|
|
|
|
|
direction: ltr
|
|
|
|
|
```
|
|
|
|
|
|
2020-12-21 19:38:58 +03:00
|
|
|
|
Click on a tile to change the directionality:
|
2020-07-17 01:15:59 +03:00
|
|
|
|
|
2021-02-24 20:02:09 +03:00
|
|
|
|
<div class="mdx-switch">
|
2020-07-19 23:23:26 +03:00
|
|
|
|
<button data-md-dir="ltr"><code>ltr</code></button>
|
|
|
|
|
<button data-md-dir="rtl"><code>rtl</code></button>
|
|
|
|
|
</div>
|
2020-07-17 01:15:59 +03:00
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
var buttons = document.querySelectorAll("button[data-md-dir]")
|
|
|
|
|
buttons.forEach(function(button) {
|
|
|
|
|
button.addEventListener("click", function() {
|
2020-07-17 14:08:27 +03:00
|
|
|
|
var attr = this.getAttribute("data-md-dir")
|
|
|
|
|
document.body.dir = attr
|
2022-01-06 12:26:20 +03:00
|
|
|
|
var name = document.querySelector("#__code_3 code span.l")
|
2020-07-17 14:08:27 +03:00
|
|
|
|
name.textContent = attr
|
2020-07-17 01:15:59 +03:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
[Directionality support]: https://github.com/squidfunk/mkdocs-material/releases/tag/2.5.0
|
2020-07-17 15:33:52 +03:00
|
|
|
|
|
|
|
|
|
## Customization
|
|
|
|
|
|
2020-07-23 14:17:50 +03:00
|
|
|
|
### Custom translations
|
2020-07-21 17:01:22 +03:00
|
|
|
|
|
2021-09-20 19:38:36 +03:00
|
|
|
|
If you want to customize some of the translations for a language, just follow
|
2021-10-10 18:39:53 +03:00
|
|
|
|
the guide on [theme extension] and create a new partial in the `overrides`
|
2021-10-10 20:22:13 +03:00
|
|
|
|
folder. Then, import the [translations] of the language as a fallback and only
|
2021-10-10 18:39:53 +03:00
|
|
|
|
adjust the ones you want to override:
|
2020-07-23 14:17:50 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
=== ":octicons-file-code-16: `overrides/partials/languages/custom.html`"
|
2020-07-17 15:33:52 +03:00
|
|
|
|
|
2021-10-10 18:39:53 +03:00
|
|
|
|
``` html
|
2021-10-10 20:22:13 +03:00
|
|
|
|
<!-- Import translations for language and fallback -->
|
|
|
|
|
{% import "partials/languages/de.html" as language %}
|
2021-12-11 16:30:07 +03:00
|
|
|
|
{% import "partials/languages/en.html" as fallback %} <!-- (1)! -->
|
2021-10-10 20:22:13 +03:00
|
|
|
|
|
|
|
|
|
<!-- Define custom translations -->
|
2021-10-10 18:39:53 +03:00
|
|
|
|
{% macro override(key) %}{{ {
|
2021-12-11 16:30:07 +03:00
|
|
|
|
"source.file.date.created": "Erstellt am", <!-- (2)! -->
|
2021-10-27 23:24:09 +03:00
|
|
|
|
"source.file.date.updated": "Aktualisiert am"
|
2021-10-10 18:39:53 +03:00
|
|
|
|
}[key] }}{% endmacro %}
|
2021-09-20 19:38:36 +03:00
|
|
|
|
|
2021-10-10 18:39:53 +03:00
|
|
|
|
<!-- Re-export translations -->
|
2021-10-10 20:22:13 +03:00
|
|
|
|
{% macro t(key) %}{{
|
2022-08-04 13:15:19 +03:00
|
|
|
|
override(key) or language.t(key) or fallback.t(key)
|
2021-10-10 20:22:13 +03:00
|
|
|
|
}}{% endmacro %}
|
2021-10-10 18:39:53 +03:00
|
|
|
|
```
|
2020-07-17 15:33:52 +03:00
|
|
|
|
|
2021-10-10 20:22:13 +03:00
|
|
|
|
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
|
2021-10-10 18:39:53 +03:00
|
|
|
|
to override for your language and add them here.
|
2020-07-17 15:33:52 +03:00
|
|
|
|
|
2022-09-11 20:25:40 +03:00
|
|
|
|
=== ":octicons-file-code-16: `mkdocs.yml`"
|
2021-10-10 18:39:53 +03:00
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
theme:
|
|
|
|
|
language: custom
|
|
|
|
|
```
|
2020-07-17 15:33:52 +03:00
|
|
|
|
|
2021-10-10 18:39:53 +03:00
|
|
|
|
[theme extension]: ../customization.md#extending-the-theme
|
|
|
|
|
[translations]: https://github.com/squidfunk/mkdocs-material/blob/master/src/partials/languages/
|
|
|
|
|
[list of available languages]: https://github.com/squidfunk/mkdocs-material/blob/master/src/partials/languages/
|