我如何在 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>
我有一个允许语言选择的 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>