Skip to content
Snippets Groups Projects
Commit 0ab84b02 authored by squidfunk's avatar squidfunk Committed by Martin Donath
Browse files

Added documentation for language configuration

parent 9f513d64
No related branches found
No related tags found
No related merge requests found
master master
* Added support for setting language(s) via mkdocs.yml
* Added support for default localization and German translations
* Fixed #374: Search bar misalignment on big screens * Fixed #374: Search bar misalignment on big screens
mkdocs-material-1.11.0 (2017-10-19) mkdocs-material-1.11.0 (2017-10-19)
......
...@@ -378,66 +378,54 @@ automatically included. ...@@ -378,66 +378,54 @@ automatically included.
#### Translations #### Translations
Material for MkDocs supports internationalization (i18n). In order to translate Material for MkDocs supports internationalization (i18n) and provides
the labels (e.g. *Previous* and *Next* in the footer), you can override the translations for all template variables and labels in English `en` and German
file `partials/language.html` and provide your own translations inside the `de`. Specify the language with:
macro `t`:
``` jinja ``` yaml
{% macro t(key) %}{{ { extra:
"language": "en", language: 'en'
"clipboard.copy": "Copy to clipboard", ```
"clipboard.copied": "Copied to clipboard",
"edit.link.title": "Edit this page", If the language is not specified, Material falls back to English. To create a
"footer.previous": "Previous", translation for another language, copy the localization file of an existing
"footer.next": "Next", language, name the new file using the [2-letter language code][19] and adjust
"meta.comments": "Comments", all translations:
"meta.source": "Source",
"search.languages": "", ``` sh
"search.placeholder": "Search", cp partials/language/en.html partials/language/jp.html
"search.result.placeholder": "Type to start searching",
"search.result.none": "No matching documents",
"search.result.one": "1 matching document",
"search.result.other": "# matching documents",
"search.tokenizer": "[\s\-]+",
"source.link.title": "Go to repository",
"toc.title": "Table of contents"
}[key] }}{% endmacro %}
``` ```
Just copy the file from the original theme and make your adjustments. See the Feel free to contribute your localization to Material for MkDocs by opening a
section on [overriding partials][19] and the general guide on Pull Request.
[theme extension][20] in the customization guide. Furthermore, see the
[example configuration][21] for a head start.
[19]: customization.md#overriding-partials [19]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
[20]: customization.md#extending-the-theme
[21]: https://github.com/squidfunk/mkdocs-material/tree/master/examples/language
#### Site search #### Site search
Site search is implemented using [lunr.js][22], which includes stemmers for the Site search is implemented using [lunr.js][20], which includes stemmers for the
English language by default, while stemmers for other languages are included English language by default, while stemmers for other languages are included
with [lunr-languages][23], both of which are integrated with this theme. Support with [lunr-languages][21], both of which are integrated with this theme. Support
for other languages and even multilingual search can be activated by setting for other languages and even multilingual search can be activated in your
the key `search.languages` to a comma-separated list of supported 2-letter project's `mkdocs.yml`:
language codes, e.g.:
``` jinja ``` yaml
{% macro t(key) %}{{ { extra:
... language:
"search.languages": "en, de, ru", - 'en'
... - 'de'
}[key] }}{% endmacro %} - 'ru'
``` ```
This will automatically load the stemmers for the specified languages and The first language specified is used as the document language as described in
set them up with site search, nothing else to be done. the section above. All other languages are used only for stemming. This will
automatically load the stemmers for the specified languages and set them up
with site search.
At the time of writing, the following languages are supported: English `en`, At the time of writing, the following languages are supported: English `en`,
French `fr`, Spanish `es`, Italian `it`, Japanese `jp`, Dutch `du`, Danish `da`, French `fr`, German `de`, Spanish `es`, Italian `it`, Japanese `jp`, Dutch `du`,
Portguese `pt`, Finnish `fi`, Romanian `ro`, Hungarian `hu`, Russian `ru`, Danish `da`, Portguese `pt`, Finnish `fi`, Romanian `ro`, Hungarian `hu`,
Norwegian `no`, Swedish `sv` and Turkish `tr`. Russian `ru`, Norwegian `no`, Swedish `sv` and Turkish `tr`.
!!! warning "Only specify the languages you really need" !!! warning "Only specify the languages you really need"
...@@ -445,19 +433,20 @@ Norwegian `no`, Swedish `sv` and Turkish `tr`. ...@@ -445,19 +433,20 @@ Norwegian `no`, Swedish `sv` and Turkish `tr`.
JavaScript payload by around 20kb (without gzip) and by another 15-30kb per JavaScript payload by around 20kb (without gzip) and by another 15-30kb per
language. language.
The separator for tokenization can also be customized, which makes it possible The separator for tokenization can be customized which makes it possible
to index parts of words that are separated by `-` or `.` for example: to index parts of words that are separated by `-` or `.`. This can be done by
overriding `partials/language.html`:
``` jinja ``` jinja
{% macro t(key) %}{{ { {% macro t(key) %}{{ {
... ...
"search.tokenizer": "[\s\-\.]+", "search.tokenizer": "[\s\-\.]+",
... ...
}[key] }}{% endmacro %} }[key] or lang.t(key) }}{% endmacro %}
``` ```
[22]: https://lunrjs.com [20]: https://lunrjs.com
[23]: https://github.com/MihaiValentin/lunr-languages [21]: https://github.com/MihaiValentin/lunr-languages
### Tabs ### Tabs
...@@ -475,13 +464,13 @@ extra: ...@@ -475,13 +464,13 @@ extra:
### More advanced customization ### More advanced customization
If you want to change the general appearance of the Material theme, see If you want to change the general appearance of the Material theme, see
[this article][24] for more information on advanced customization. [this article][22] for more information on advanced customization.
[24]: customization.md [22]: customization.md
## Extensions ## Extensions
MkDocs supports several [Markdown extensions][25]. The following extensions MkDocs supports several [Markdown extensions][23]. The following extensions
are not enabled by default (see the link for which are enabled by default) are not enabled by default (see the link for which are enabled by default)
but highly recommended, so they should be switched on at all times: but highly recommended, so they should be switched on at all times:
...@@ -497,20 +486,20 @@ markdown_extensions: ...@@ -497,20 +486,20 @@ markdown_extensions:
For more information, see the following list of extensions supported by the For more information, see the following list of extensions supported by the
Material theme including more information regarding installation and usage: Material theme including more information regarding installation and usage:
* [Admonition][26] * [Admonition][24]
* [Codehilite][27] * [Codehilite][25]
* [Footnotes][28] * [Footnotes][26]
* [Metadata][29] * [Metadata][27]
* [Permalinks][30] * [Permalinks][28]
* [PyMdown Extensions][31] * [PyMdown Extensions][29]
[25]: http://www.mkdocs.org/user-guide/writing-your-docs/#markdown-extensions [23]: http://www.mkdocs.org/user-guide/writing-your-docs/#markdown-extensions
[26]: extensions/admonition.md [24]: extensions/admonition.md
[27]: extensions/codehilite.md [25]: extensions/codehilite.md
[28]: extensions/footnotes.md [26]: extensions/footnotes.md
[29]: extensions/metadata.md [27]: extensions/metadata.md
[30]: extensions/permalinks.md [28]: extensions/permalinks.md
[31]: extensions/pymdown.md [29]: extensions/pymdown.md
## Full example ## Full example
...@@ -535,6 +524,7 @@ theme: 'material' ...@@ -535,6 +524,7 @@ theme: 'material'
# Options # Options
extra: extra:
language: 'en'
logo: 'images/logo.svg' logo: 'images/logo.svg'
palette: palette:
primary: 'indigo' primary: 'indigo'
......
{% set code = config.extra.language | default("en") %} {% set languages = config.extra.language | default("en") %}
{% import "partials/language/" + code + ".html" as lang %} {% if languages is string %}
{% macro t(key) %}{{ lang.t(key) }}{% endmacro %} {% set languages = languages.split(",") | map("trim") %}
{% endif %}
{% import "partials/language/" + (languages | first) + ".html" as lang %}
{% macro t(key) %}{{ {
"search.languages": languages | join(", ")
}[key] or lang.t(key) }}{% endmacro %}
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
"footer.next": "Nächste Seite", "footer.next": "Nächste Seite",
"meta.comments": "Kommentare", "meta.comments": "Kommentare",
"meta.source": "Quellcode", "meta.source": "Quellcode",
"search.languages": "de",
"search.placeholder": "Suche", "search.placeholder": "Suche",
"search.result.placeholder": "Suchbegriff eingeben", "search.result.placeholder": "Suchbegriff eingeben",
"search.result.none": "Keine Suchergebnisse", "search.result.none": "Keine Suchergebnisse",
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
"footer.next": "Next", "footer.next": "Next",
"meta.comments": "Comments", "meta.comments": "Comments",
"meta.source": "Source", "meta.source": "Source",
"search.languages": "",
"search.placeholder": "Search", "search.placeholder": "Search",
"search.result.placeholder": "Type to start searching", "search.result.placeholder": "Type to start searching",
"search.result.none": "No matching documents", "search.result.none": "No matching documents",
......
...@@ -20,9 +20,16 @@ ...@@ -20,9 +20,16 @@
IN THE SOFTWARE. IN THE SOFTWARE.
--> -->
<!-- Normalize language configuration -->
{% set languages = config.extra.language | default("en") %}
{% if languages is string %}
{% set languages = languages.split(",") | map("trim") %}
{% endif %}
<!-- Import translations for given language --> <!-- Import translations for given language -->
{% set code = config.extra.language | default("en") %} {% import "partials/language/" + (languages | first) + ".html" as lang %}
{% import "partials/language/" + code + ".html" as lang %}
<!-- Re-export translations --> <!-- Re-export translations -->
{% macro t(key) %}{{ lang.t(key) }}{% endmacro %} {% macro t(key) %}{{ {
"search.languages": languages | join(", ")
}[key] or lang.t(key) }}{% endmacro %}
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
"footer.next": "Nächste Seite", "footer.next": "Nächste Seite",
"meta.comments": "Kommentare", "meta.comments": "Kommentare",
"meta.source": "Quellcode", "meta.source": "Quellcode",
"search.languages": "de",
"search.placeholder": "Suche", "search.placeholder": "Suche",
"search.result.placeholder": "Suchbegriff eingeben", "search.result.placeholder": "Suchbegriff eingeben",
"search.result.none": "Keine Suchergebnisse", "search.result.none": "Keine Suchergebnisse",
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
"footer.next": "Next", "footer.next": "Next",
"meta.comments": "Comments", "meta.comments": "Comments",
"meta.source": "Source", "meta.source": "Source",
"search.languages": "",
"search.placeholder": "Search", "search.placeholder": "Search",
"search.result.placeholder": "Type to start searching", "search.result.placeholder": "Type to start searching",
"search.result.none": "No matching documents", "search.result.none": "No matching documents",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment