我已经看过关于这个主题的一些问题,但没有一个可以解决我的问题。我希望有一个多语言的jekyll网站,而不使用任何插件。我有一个带有这个嵌套列表的yaml文件
menu:
fr:
home:
name:"Acceuil"
url:"/"
team:
name:"Équipe"
url:"/equipe"
en:
home:
name:"Home"
url:"/home.html"
team:
name:"Team"
url:"/team"
我想根据yaml前面的页面 lang 选项打印不同的菜单。最小的例子是:
---
lang: en
---
<ul>
{% for item in site.menu.[page.lang] %}
<li><a href="{{ item[1].url }}">{{ item[1].name }}</a></li>
{% endfor %}
</ul>
这应该以原始html打印
但是我的代码没有打印任何东西,我只有两个没有文字的子弹。我看不出我做错了什么,你能帮助我吗?
修改
好吧,我唯一的问题就是我没有在价值指标和价值之间留出空间。现在问题解决了。谢谢!
答案 0 :(得分:0)
根据YAML规范,在菜单文件中的冒号和值之间添加一个空格:
YAML坚持将“:”映射值指标与之分开 白色空间的价值。
同时删除menu:
键并将菜单保存在名为_data/menu.yml
的文件中。
fr:
home:
name: "Acceuil"
url: "/"
team:
name: "Équipe"
url: "/equipe"
en:
home:
name: "Home"
url: "/home.html"
team:
name: "Team"
url: "/team"
然后,您可以site.data.menu
直接访问lang
密钥而.
和menu
之间没有page.lang
来访问该数据:
<ul>
{% for item in site.data.menu[page.lang] %}
<li><a href="{{ item[1].url }}">{{ item[1].name }}</a></li>
{% endfor %}
</ul>
这会产生:
<ul>
<li><a href="/home.html">Home</a></li>
<li><a href="/team">Team</a></li>
</ul>