Pelican i18n 子站点菜单项覆盖

问题描述 投票:0回答:2

我正在使用 Pelicani18n 子网站插件构建一个静态网站。

按照我的理解,您可以使用此插件覆盖 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 给出了这个

python html localization internationalization pelican
2个回答
1
投票

事实证明,i18n 子站点插件正在创建两个新站点,而旧站点则留在输出文件夹中。所以

output/
有一个站点,
output/nl/
有一个站点,
output/en/
有一个站点。将
DELETE_OUTPUT_DIRECTORY = True
'OUTPUT_PATH': '',
添加到荷兰语 i18n 子站点设置解决了该问题。


0
投票

我有同样的问题,并且对如何覆盖设置有相同的理解,但最终使用了这个“解决方法”,其中

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 %}
© www.soinside.com 2019 - 2024. All rights reserved.