mkdocs-material/docs/setup/changing-the-language.md

222 lines
6.4 KiB
Markdown
Raw Normal View History

2020-07-17 01:15:59 +03:00
---
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,
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
2021-10-10 18:39:53 +03:00
[:octicons-tag-24: 1.12.0][language support] ·
: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:
language: en
```
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
- `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
- `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
- `kr` Korean
2021-05-30 12:52:16 +03:00
- `mn` Mongolian
2020-12-21 19:38:58 +03:00
- `my` Burmese
- `nl` Dutch
- `nn` Norwegian (Nynorsk)
- `no` Norwegian
- `pl` Polish
- `pt` Portuguese
- `ro` Romanian
- `ru` Russian
- `sh` Serbo-Croatian
- `si` Sinhalese
2020-12-21 19:38:58 +03:00
- `sk` Slovak
- `sl` Slovenian
2020-12-21 19:38:58 +03:00
- `sr` Serbian
- `sv` Swedish
- `th` Thai
- `tr` Turkish
- `uk` Ukrainian
- `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].
2021-10-10 18:39:53 +03:00
[language support]: https://github.com/squidfunk/mkdocs-material/releases/tag/1.12.0
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
### Site language selector
2020-07-17 01:15:59 +03:00
2021-10-10 18:39:53 +03:00
[:octicons-tag-24: 7.0.0][alternate support] ·
:octicons-milestone-24: Default: _none_ ·
2021-02-22 22:08:49 +03:00
:octicons-beaker-24: Experimental
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`.
``` yaml
extra:
alternate:
- name: English
2021-12-11 16:30:07 +03:00
link: /en/ # (1)!
lang: en
- name: Deutsch
2021-10-10 18:39:53 +03:00
link: /de/
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.
2021-10-10 18:39:53 +03:00
The following properties must be set for each alternate language:
2021-10-10 18:39:53 +03:00
`name`{ #language-name }
2021-10-10 18:39:53 +03:00
: :octicons-milestone-24: Default: _none_ · :octicons-alert-24: Required
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.
2021-10-10 18:39:53 +03:00
`link`{ #language-link }
: :octicons-milestone-24: Default: _none_ · :octicons-alert-24: Required
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.
`lang`{ #language-lang }
: :octicons-milestone-24: Default: _none_ · :octicons-alert-24: Required
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]
2021-10-10 18:39:53 +03:00
[alternate support]: https://github.com/squidfunk/mkdocs-material/releases/tag/7.0.0
[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
### Directionality
2021-10-10 18:39:53 +03:00
[:octicons-tag-24: 2.5.0][direction support] ·
2020-07-20 16:18:09 +03:00
:octicons-milestone-24: Default: _automatically set_
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
<div class="mdx-switch">
<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() {
var attr = this.getAttribute("data-md-dir")
document.body.dir = attr
var name = document.querySelector("#__code_3 code span.l")
name.textContent = attr
2020-07-17 01:15:59 +03:00
})
})
</script>
2021-10-10 18:39:53 +03:00
[direction support]: https://github.com/squidfunk/mkdocs-material/releases/tag/2.5.0
## Customization
### Custom translations
2020-07-21 17:01:22 +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:
=== ":octicons-file-code-16: overrides/partials/languages/custom.html"
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-10-10 18:39:53 +03:00
<!-- Re-export translations -->
2021-10-10 20:22:13 +03:00
{% macro t(key) %}{{
override(key) or language(key) or fallback.t(key)
}}{% endmacro %}
2021-10-10 18:39:53 +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.
2021-10-10 18:39:53 +03:00
=== ":octicons-file-code-16: mkdocs.yml"
``` yaml
theme:
language: custom
```
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/