Search code examples
yamljekyllliquid

Folder _data in theme directory does not get the values


I'm making a Jekyll theme using the command jekyll new-theme mytheme. I want to add translations to this theme, so I created the file _data/translations.yml into the root directory. This is its content:

---
en:
  post: "Post"
es:
  post: "Artículo"

I get the information with this expressions:

{% assign t = site.data.translations %}
{{ t[site.lang]['post'] }}

This setup only works if I move the _data/translations.yml file to my Jekyll website directory, created through the command jekyll new mysite.

Are the data files out of themes territory? Should I place this yml file in another directory? If it's not possible to use it in the themes territory, I would like to set a default value: how can I achieve this?

Thanks in advance.


Solution

  • As of Jekyll 4.0, yes, data files inside a theme-gem are not read.
    You'll need to use a plugin named jekyll-data (authored by me).

    If you plan to publish the theme for other users, I recommend adding the plugin as a runtime dependency in the theme's gemspec. Otherwise, simply adding the plugin to the :jekyll_plugins group in the site's Gemfile will suffice.