我是 Jekyll 和 Liquid 的新手,我正在尝试做一些小事情,但我不知道如何让它发挥作用。
基本上:
this.works[well]
(我认为)
但是:
this.does.[not].work
this.does[not]work
[this].does.not.work
[this]does.not.work
这就是我的问题:如何在“变量路径”中插入单个变量?
基本上我想调用不同语言的文本字符串,这些文本字符串目前位于我的 _data 文件夹中。 我想做的是类似于:
_data/en.yml:
hello: ‘Hello!’
页面首页:
lang: en
字符串必须出现的位置:
{{ site.data[page.lang]hello }}
有什么正确的方法可以做到这一点吗?
知道我会有几十个这样的字符串,所以它应该尽可能紧凑。
好吧我明白了,是:
site.data[page.lang].hello
我有一个后续问题,那就是我也在包含中传递了这些字符串。
这不起作用,并给出语法错误:
{% include box.html text=site.data[page.lang].hello %}
所以我必须做这样的事情:
{% assign hello=site.data[page.lang].hello %}
{% include box.html text=hello %}
这是非常长和愚蠢的:我最终写了 3 次(!)我的变量名,并创建了很多重复的变量。
有人知道如何写而不需要写3遍我的字符串名称吗? 谢谢!!
(更愚蠢的是,你可以在 include 的第一部分中使用带有 [] 的变量,但不能在第二部分中使用变量?
{% include site.data[page.lang].box text=hello %}
例如可以工作……)
要在变量路径中插入单个变量,您需要使用方括号和点,如下所示:
site.data[page.lang].hello
这将使用 page.lang 的值作为键来访问 site.data 哈希中 hello 键的值
要在包含中传递这些字符串,您可以使用 raw 标签来防止 Liquid 解释花括号。例如:
{% raw %} {% include box.html text=site.data[page.lang].hello %} {% endraw %}
这将输出原始标签内的文字文本,而不尝试将其解析为 Liquid 代码