Search code examples
jekylltranslationliquid

Liquid translate array


I'm trying to translate movie directors array in liquid

Source data:

movies.yaml

- name: Titatic
  director: James Cameron
- name: Avatar
  director: James Cameron
- name: A Beautiful Mind
  director: Ron Howard

cast.yaml

"James Cameron": "Джеймс Кэмерон"
"Ron Howard": "Рон Ховард"

movie.html (portion for simplicity)

{% if page.lang == "ru" %}
  {% for director in movie.Director %}
     {% assign directors = directors | concat: site.data.cast[director] %}
  {% endfor %}
  {% else %}
     {% directors = movie.Director %}
{% endif %}
{{ directors | join: ", " }

But can't concat array with the translated director name due to error:

concat filter requires an array argument included

Any suggestions?


Solution

  • Came up to this

    {% assign directors = movie.Director | join: ", " %}
    {% if page.lang == "ru" %}
      {% for director in movie.Director %}
        {% assign directors = directors | replace: director, site.data.cast[director] %}
      {% endfor %}                          
    {% endif %}
    {{ directors }}