如何在 Jekyll / Liquid 上合并两个 json 数据

How merge two json data on Jekyll / Liquid

我在文件夹 _data/ 中有两个 .json 数据文件(en.json 和 en-br.json) i18n/

我可以访问这些文件中的任何数据,例如:

site.data.i18n.var1

我喜欢做的是通过用第二个中的数据替换第一个中的数据来合并这两个文件,前提是它们具有相同的索引。没有插件。

en.json:

{
"var1", "1111",
"var2", "2222",
"var3", "3333",
"var4": "4444"
}

pt-br.json:

{
"var1", "5555",
"var4": "6666"
}

我希望的结果是:

myVariable.var1: 5555
myVariable.var2: 2222
myVariable.var3: 3333
myVariable.var4: 6666

我试过这个:

{% assign txt = site.data.i18n.en %}
{% assign txt = site.data.i18n.pt-br %}

但是第二个覆盖第一个清除缺失的字段。

您不能将两个散列与 liquid 合并。

一种解决方案是使用 Jekyll 配置机制。这种机制允许你 运行 jekyll 与多个配置文件 (documentation).

通过 运行 宁 jekyll serve --config _config.yml,_data/lang/en.yml,_data/lang/pt-br.yml,您将 en.yml 中的数据与 pt-br.yml 中的数据合并 '' 之后的文件覆盖中的数据早些时候''.

注意:您必须将文件格式设置为 yaml 而不是 json。 en.yml 的建议:

lang:
  "var1": "1111"
  "var2": "2222"
  "var3": "3333"
  "var4": "4444"

您的变量将在 site.lang.variableName 下可用。

注意 : 如果使用github页面,则必须在本地生成并手动发布。