Jekyll I18n MultiPage

Maintainability Test Coverage Build Status Gem Version

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:

  - jekyll_i18n_multi_page


Declare available locales in Jekyll config _config.yml:

  - 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
    title: English title
    hello: Hello
# _i18n/my-tw-site.yml
    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
        hello: Hello # access this text via page.i18n.hello

Use cases

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
{{ }}
{% for item in i18n.some.array %}
{% endfor %}


Bug reports and pull requests are welcome on GitHub at


The gem is available as open source under the terms of the MIT License.