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

201 lines
5.0 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,
2020-07-26 15:46:09 +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
2020-07-20 16:18:09 +03:00
[:octicons-file-code-24: Source][1] · :octicons-milestone-24: Default: `en`
2020-07-17 01:15:59 +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:
2020-12-21 19:38:58 +03:00
<div class="tx-columns" markdown="1">
- `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
- `en` English
- `eo` Esperanto
- `es` Spanish
- `et` Estonian
- `fa` Persian (Farsi)
- `fi` Finnish
- `fr` French
- `gl` Galician
- `gr` Greek
- `he` Hebrew
- `hi` Hindi
- `hr` Croatian
- `hu` Hungarian
- `id` Indonesian
- `it` Italian
- `ja` Japanese
- `ka` Georgian
- `kr` Korean
- `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)
- [Add language](https://bit.ly/38F5RCa)
</div>
2020-07-17 01:15:59 +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,
as [documented here][2]._
2021-01-26 12:48:59 +03:00
[1]: https://github.com/squidfunk/mkdocs-material/blob/master/src/partials/languages/en.html
2020-09-06 14:36:25 +03:00
[2]: setting-up-navigation.md#slugify
2020-07-17 01:15:59 +03:00
### Site language selector
2020-07-17 01:15:59 +03:00
[:octicons-file-code-24: Source][3] ·
:octicons-beaker-24: Experimental ·
[:octicons-heart-fill-24:{: .tx-heart } Insiders only][3]{: .tx-insiders }
If your documentation is available in multiple languages, a _language selector_
can be added to the header next to the search bar. Languages can be defined via
`mkdocs.yml`:
``` yaml
extra:
alternate:
2020-12-21 19:38:58 +03:00
# Switch to English
- name: English
2020-12-21 19:38:58 +03:00
link: <your-site>/en/
lang: en
2020-12-21 19:38:58 +03:00
# Switch to German
- name: Deutsch
2020-12-21 19:38:58 +03:00
link: <your-site>/de/
lang: de
2020-12-21 19:38:58 +03:00
# Switch to Japanese
- name: 日本語
2020-12-21 19:38:58 +03:00
link: <your-site>/ja/
lang: ja
```
This will render a language selector in the header next to the search bar:
2020-12-21 19:38:58 +03:00
[![Language selection][4]][4]
[3]: ../insiders.md
[4]: ../assets/screenshots/language-selection.png
### Site search language
[:octicons-file-code-24: Source][5] ·
2020-07-20 16:18:09 +03:00
:octicons-milestone-24: Default: _automatically set_
2020-07-17 01:15:59 +03:00
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
2020-07-20 20:28:13 +03:00
more information.
2020-12-21 19:38:58 +03:00
[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] ·
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
supports `rtl` (right-to-left) _directionality_ which is inferred 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="tx-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
2020-07-17 01:15:59 +03:00
var name = document.querySelector("#__code_1 code span:nth-child(5)")
name.textContent = attr
2020-07-17 01:15:59 +03:00
})
})
</script>
2020-12-21 19:38:58 +03:00
[8]: https://github.com/squidfunk/mkdocs-material/blob/master/src/base.html
## Customization
### Custom translations
2020-07-21 17:01:22 +03:00
2020-07-20 16:18:09 +03:00
[:octicons-file-code-24: Source][1] ·
2020-07-21 17:01:22 +03:00
:octicons-mortar-board-24: Difficulty: _easy_
2020-07-20 16:18:09 +03:00
If you want to customize some (or all) of the translations for your language,
you may follow the guide on [theme extension][9] and create a new partial in
2021-01-26 12:48:59 +03:00
`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
{% macro t(key) %}{{ {
"toc.title": "On this page"
}[key] }}{% endmacro %}
```
Then, add the following lines to `mkdocs.yml`:
``` yaml
theme:
language: en-custom
```
[9]: ../customization.md#extending-the-theme