如何在Pelican站点中为当前页面生成所有语言的顶部链接
你好,我正在使用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;"> </li>
{% endif %}
其中,过滤器是这样定义的:
def extract_trans(article, lang, url):
for trans in article.translations:
if trans.lang == lang:
return trans.url
return url
并通过 JINJA_FILTERS 设置来包含它。这个代码在我所有的页面和文章中都能正常工作,除了归档页面。