我如何在 Jekyll 中使用字符串插值?

How can i use string interpolation with Jekyll?

我有一个允许语言选择的 Jekyll 3 项目。我们使用 'jekyll-multiple-languages-plugin' gem 进行国际化。 我们有一个词汇表,应该根据所选语言显示德语术语或英语术语。我使用 'jekyll-multiple-languages-plugin' gem 提供的变量 site.lang 获取所选语言。 现在 glossary.html 看起来像这样

  <div id="glossary">
    {% if site.lang == "de" %}
      {% for term in site.data['terms_de'] %}
        <!-- German glossary goes here -->
      {% endfor %}
    {% elsif site.lang == "en" %}
      {% for term in site.data['terms_en'] %}
        <!-- English glossary goes here -->
      {% endfor %}
    {% endif %}
  </div>

不过,我很想拥有这样的东西

  <div id="glossary">
     {% for term in site.data["terms_#{site.lang}"] %}
       <!-- Glossary goes here -->
     {% endfor %}
  </div>

但由于某些原因,字符串插值"terms_#{site.lang}" 不起作用。我也试过'terms_'+site.lang

我认为插值不起作用,因为当我在页面中输入 {{ site.lang }} 时,我看到了所选语言,但是当我写 {{ "terms_"+site.lang }} 时,我什么也看不到。

提前致谢。

您可以使用 capture 标签,而不是显示它设置给变量的值:

{% capture term_lang %}{{ 'terms_' | append: site.lang }}{% endcapture%}

然后你可以使用该变量作为数组的索引:

 site.data[term_lang]

在你的例子中:

{% capture term_lang %}{{ 'terms_' | append: site.lang }}{% endcapture%}
<div id="glossary">
 {% for term in site.data[term_lang] %}
   <!-- Glossary goes here -->
 {% endfor %}
</div>