You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Liquid模板中添加变量实现Jekyll多语言数据动态调用?

解决Jekyll多语言数据动态访问的问题

嘿,这个需求其实很好实现——Jekyll的Liquid模板天生支持这种动态索引数据的场景,我给你一步步拆解:

核心实现方法

首先得确认你的页面前置属性是对的:你的两个.md文件的Front Matter里,lang属性要分别设为en和it,比如英文页面:

---
layout: your-template-name
lang: en
title: English Version
---

意大利语页面同理:

---
layout: your-template-name
lang: it
title: Versione Italiana
---

接下来就是模板里的关键改动:把原来固定访问site.data.my_data的代码,改成用page.lang动态匹配对应语言的数据集。具体写法是:

{% assign current_lang_data = site.data[page.lang].my_data %}
{% for item in current_lang_data %}
  <!-- 这里放你原来的模板逻辑,比如输出item.title、item.description之类的 -->
  <h3>{{ item.title }}</h3>
  <p>{{ item.description }}</p>
{% endfor %}

这里的核心是Liquid的方括号索引语法:site.data[page.lang]会自动对应到_data/en/或者_data/it/目录,再加上.my_data就精准定位到你翻译好的那个YAML文件了,完全不用写多个重复的循环逻辑。

可选:加个默认 fallback 防出错

如果担心以后新增语言时忘了创建对应的my_data.yml,可以加个判断,当对应语言的数据不存在时,自动回退到你原来的_data/my_data.yml默认数据:

{% assign current_lang_data = site.data[page.lang].my_data | default: site.data.my_data %}
{% for item in current_lang_data %}
  <!-- 模板内容 -->
{% endfor %}

这样即使某个语言的数据文件缺失,页面也能正常加载默认内容,不会出现空白或报错。

快速验证小技巧

要是不确定数据有没有加载对,可以在模板里临时加两行调试代码:

<p>当前页面语言:{{ page.lang }}</p>
<p>加载的数据集:{{ current_lang_data | inspect }}</p>

生成静态页面后查看源码,就能清楚看到page.lang的值和加载的数据结构是否正确了。

内容的提问来源于stack exchange,提问作者DDiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:00:10