如何在Pelican站点中为当前页面生成所有语言的顶部链接

6 投票
1 回答
1040 浏览
提问于 2025-04-18 18:49

你好,我正在使用Pelican和Python来搭建一个小型的静态多语言网站。

通过i18n_subsites这个插件,我可以在网站顶部添加语言按钮,显示其他可用的语言。

请问有没有办法让这些语言按钮链接到当前页面(文章)的翻译,而不是链接到主页呢?这样的话,用户可以在同一页面(文章)上切换语言。

非常感谢任何帮助。

1 个回答

4

也许这对其他人会有帮助。

这是一个模板问题。非常感谢 smartass101

你可以这样做:

{% if lang_siteurls %}
{% for lang, url in lang_siteurls.items() %}
<li{% if lang == DEFAULT_LANG %} class="active"{% endif %}>
<a href={% if article and lang != DEFAULT_LANG %}"{{ SITEURL }}/{{ article | extract_trans(lang, url) }}"
     {% elif article %}"{{ SITEURL }}/{{ article.url }}"
     {% elif page and lang != DEFAULT_LANG %}"{{ SITEURL }}/{{ page | extract_trans(lang, url) }}"
     {% elif page %}"{{ SITEURL }}/{{ page.url }}"
     {% else %}"{{ url }}"{% endif %}>{{ lang }}</a></li>
{% endfor %}
<!-- separator -->
<li style="background-color: white; padding: 5px;">&nbsp</li>
{% endif %}

其中,过滤器是这样定义的:

def extract_trans(article, lang, url):
    for trans in article.translations:
        if trans.lang == lang:
            return trans.url
    return url

并通过 JINJA_FILTERS 设置来包含它。这个代码在我所有的页面和文章中都能正常工作,除了归档页面。

撰写回答