如何在液体中组合字符串和句柄

时间:2015-12-08 13:06:10

标签: ruby jekyll liquid

我正在使用Jekyll中的数据文件来处理字符串和句柄的组合。

我使用nav.yml - 数据文件为我的Jekyll网站生成菜单,其中nav.title是菜单条目的标题。我的目标是根据主动语言翻译该标题。为此,我有一个il8n.yml - 文件及相应的翻译,并且 - 使用polyglot-plugin - 我可以通过{{site.data.il8n.term[site.active_lang]}}访问这些翻译字符串,其中term是我想要的短语翻译。

这很简单,但是当我尝试将菜单数据文件中的nav.title - 字符串与il8n-data文件的翻译结合起来时,我遇到了问题。

有没有办法在il8n文件中查找nav.title的条目?作为一个例子,我有一个菜单项"出版物"在我的nav.yml - 数据文件中:

- title: "publications"
  href: "/publications/"

和#34;出版物"的翻译条目在我的il8n.yml - 数据文件中:

- title: "publications"
  de: Publikationen
  en: Publications

有没有办法合并这两个句柄?我当前的解决方法是il8n文件中的menu: true条目以及查找该条件的相应循环,但我希望将翻译与菜单项分开。

1 个答案:

答案 0 :(得分:0)

通过设置il8n-data文件,您可以执行以下操作:

<ul>
{% for item in site.data.nav %}
  <li>
  {% assign itemTranslation = site.data.il8n | where: 'title', item.title %}
  {{ itemTranslation[0][site.active_lang] }}
  </li>
{% endfor %}
</ul>

使用这样的il8n.yml命令:

publications:
  de: Publikationen
  en: Publications
toto is great:
  de: toto is great in german
  en: toto is great

你可以这样做:

<ul>
{% for item in site.data.nav %}
    <li>{{ site.data.il8n2[item.title][site.active_lang] }}</li>
{% endfor %}
</ul>