104 lines
3.7 KiB
Markdown
104 lines
3.7 KiB
Markdown
|
+++
|
||
|
title = "Multilingual and i18n"
|
||
|
weight = 6
|
||
|
+++
|
||
|
|
||
|
The Relearn theme is fully compatible with Hugo multilingual mode.
|
||
|
|
||
|
- Available languages: Arabic, Simplified Chinese, Traditional Chinese, Czech, Dutch, English, Finnish French, German, Hindi, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Turkish, Vietnamese. Feel free to contribute!
|
||
|
- Full support for languages written right to left
|
||
|
- Automatic menu generation from multilingual content
|
||
|
- In-browser language switching
|
||
|
|
||
|
![I18n menu](i18n-menu.gif?classes=shadow&width=18.75rem)
|
||
|
|
||
|
## Basic configuration
|
||
|
|
||
|
After learning [how Hugo handle multilingual websites](https://gohugo.io/content-management/multilingual), define your languages in your `config.toml` file.
|
||
|
|
||
|
For example with current English and Piratized English website.
|
||
|
|
||
|
{{% notice note %}}
|
||
|
Make sure your default language is defined as the first one in the `[languages]` array, as the theme needs to make assumptions on it
|
||
|
{{% /notice %}}
|
||
|
|
||
|
|
||
|
```toml
|
||
|
# English is the default language
|
||
|
defaultContentLanguage = "en"
|
||
|
|
||
|
[languages]
|
||
|
[languages.en]
|
||
|
title = "Hugo Relearn Theme"
|
||
|
weight = 1
|
||
|
languageName = "English"
|
||
|
|
||
|
[languages.pir]
|
||
|
title = "Cap'n Hugo Relearrrn Theme"
|
||
|
weight = 2
|
||
|
languageName = "Arrr! Pirrrates"
|
||
|
```
|
||
|
|
||
|
Then, for each new page, append the _id_ of the language to the file.
|
||
|
|
||
|
- Single file `my-page.md` is split in two files:
|
||
|
- in English: `my-page.md`
|
||
|
- in Piratized English: `my-page.pir.md`
|
||
|
- Single file `_index.md` is split in two files:
|
||
|
- in English: `_index.md`
|
||
|
- in Piratized English: `_index.pir.md`
|
||
|
|
||
|
{{% notice info %}}
|
||
|
Be aware that only translated pages are displayed in menu. It's not replaced with default language content.
|
||
|
{{% /notice %}}
|
||
|
|
||
|
{{% notice tip %}}
|
||
|
Use [slug](https://gohugo.io/content-management/multilingual/#translate-your-content) frontmatter parameter to translate urls too.
|
||
|
{{% /notice %}}
|
||
|
|
||
|
## Search
|
||
|
|
||
|
In case each page's content is written in one single language only, the above configuration will already configure the site's search functionality correctly.
|
||
|
|
||
|
{{% notice warning %}}
|
||
|
Although the theme supports a wide variety of supported languages, the site's search via the [Lunr](https://lunrjs.com) search library does not.
|
||
|
You'll see error reports in your browsers console log for each unsupported language. Currently unsupported are:
|
||
|
|
||
|
- Czech
|
||
|
- Indonesian
|
||
|
- Polish
|
||
|
{{% /notice %}}
|
||
|
|
||
|
### Search with mixed language support
|
||
|
|
||
|
In case your page's content contains text in multiple languages (e.g. you are writing a Russian documentation for your english API), you can add those languages to your `config.toml` to broaden search.
|
||
|
|
||
|
```toml
|
||
|
[params]
|
||
|
additionalContentLanguage = [ "en" ]
|
||
|
````
|
||
|
|
||
|
As this is an array, you can add multiple additional languages.
|
||
|
|
||
|
{{% notice note %}}
|
||
|
Keep in mind that the language code required here, is the base language code. E.g. if you have additional content in `zh-CN`, you have to add just `zh` to this parameter.
|
||
|
{{% /notice %}}
|
||
|
|
||
|
## Overwrite translation strings
|
||
|
|
||
|
Translations strings are used for common default values used in the theme (_Edit_ button, _Search placeholder_ and so on). Translations are available in English and Piratized English but you may use another language or want to override default values.
|
||
|
|
||
|
To override these values, create a new file in your local i18n folder `i18n/<idlanguage>.toml` and inspire yourself from the theme `themes/hugo-theme-relearn/i18n/en.toml`
|
||
|
|
||
|
## Disable language switching
|
||
|
|
||
|
Switching the language in the browser is a great feature, but for some reasons you may want to disable it.
|
||
|
|
||
|
Just set `disableLanguageSwitchingButton=true` in your `config.toml`
|
||
|
|
||
|
```toml
|
||
|
[params]
|
||
|
# When using multilingual website, disable the switch language button.
|
||
|
disableLanguageSwitchingButton = true
|
||
|
```
|