Generate multiple pages for different locales based on single template.
Add this line to your application's Gemfile:
gem 'jekyll_i18n_multi_page'
And then execute:
$ bundle
Add the plugin to _config.yml
file:
plugins:
- jekyll_i18n_multi_page
Declare available locales in Jekyll config _config.yml
:
i18n:
- path: /
locale: en
- path: /tw
locale: zh-TW
For each entry must contain path
(the output of localized page) and locale
.
Define files with localized contents in _i18n
folder, filenames aren't mattered. For examples:
# _i18n/my-en-site.yml
en:
index:
title: English title
hello: Hello
# _i18n/my-tw-site.yml
zh-TW:
index:
title: 中文標題
hello: 哈囉
page.i18n
is the way to access the current localized contents, said you have a HTML named index.html
:
---
---
{{ page.i18n.title }}
{{ page.i18n.hello }}
After building, the dist folder should have two files index.html
and tw/index.html
.
Assume you have a file named some/where/my.html
you should have its path in the localization file:
# _i18n/my-en-site.yml
en:
some:
where:
my:
hello: Hello # access this text via page.i18n.hello
For some reason, I have a page which is only available for certain locales
---
i18n_locales: ['zh-TW']
---
{{ page.i18n.hello }}
Using i18n_locales
to declare the supported locales. In this example, Jekyll will build tw/index.html
file only.
How to disable the features on certain pages
---
i18n_disabled: true
---
Using i18n_disabled
to tell the plugin do not do anything for me.
Show/Hide something for certain locales
---
---
{% if page.i18n_locale == 'en' %}
You will see me only in the en page.
{% end %}
Translate helper
{% t index.hello %}
t
tag provides a way to translate content. When you take this way, you must write a full path.
i18n global variable
i18n
is a global variable provides you a way to access the root of localization.
---
i18n_disabled: true
i18n_locale: zh-TW
---
{{ i18n.some.page.title }}
{% for item in i18n.some.array %}
...
{% endfor %}
Bug reports and pull requests are welcome on GitHub at https://github.com/yfxie/jekyll_i18n_multi_page.
The gem is available as open source under the terms of the MIT License.