我正在使用 Pelican 和 i18n 子网站插件构建一个静态网站。
按照我的理解,您可以使用此插件覆盖 pelicanconf.py 中的设置,但我认为我的做法不起作用。
Pelicanconf.py:
I18N_SUBSITES = {
'nl': {
'SITENAME': 'Robin Berghuijs Design',
'INDEX_SAVE_AS': 'nieuws.html',
'MENUITEMS': [
('Nieuws','nieuws.html'),
],
},
'en': {
'SITENAME': 'Robin Berghuijs Design',
'INDEX_SAVE_AS': 'news.html',
'MENUITEMS': [
('News','news.html'),
],
}
}
Index.html 输出:
<nav id="menu"><ul>
<li><a href="./pages/contact.html">Contact</a></li>
</ul></nav><!-- /#menu -->
base.html 模板:
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
我在网站生成时没有收到任何错误。 更多详情请点击这里。
使用 --debug 运行 pelican 给出了这个。
事实证明,i18n 子站点插件正在创建两个新站点,而旧站点则留在输出文件夹中。所以
output/
有一个站点,output/nl/
有一个站点,output/en/
有一个站点。将 DELETE_OUTPUT_DIRECTORY = True
和 'OUTPUT_PATH': '',
添加到荷兰语 i18n 子站点设置解决了该问题。
我有同样的问题,并且对如何覆盖设置有相同的理解,但最终使用了这个“解决方法”,其中
DEFAULT_LANG
根据 Pelican 当前生成的本地化页面获取值 "nl"
或 "en"
。
{% for page_title, page_link in I18N_SUBSITES[DEFAULT_LANG].MENUITEMS %}
<li><a href="{{ page_link }}">{{ page_title }}</a></li>
{% endfor %}