在静态主页上使用 pelican i18n 子站点插件
Using the pelican i18n subsites plugin with a static home page
我有一个静态主页,但我也在使用 i18n 子站点插件。所以对于我的主页,在 pelicanconf.py:
INDEX_SAVE_AS = 'blog/index.html'
INDEX_URL = 'blog'
英文版:
I18N_SUBSITES = {
'en': {
'OUTPUT_PATH': 'output/en/',
'INDEX_SAVE_AS': 'blog/index.html',
'INDEX_URL': 'blog',
}
}
(截断了不必要的位)
问题出在主页的翻译 link 上。翻译宏有:
{% for translation in article.translations %}
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang | lookup_lang_name }}</a>
因此,对于英文主页,我可以将 url 和输出文件名设置为:
<meta name="save_as" content="en/index.html">
<meta name="url" content="en/">
这使得翻译 link 转到站点。com/en/en/(并且有效),或将它们设置为:
<meta name="save_as" content="index.html">
<meta name="url" content="/">
与标准语言主页冲突。
另一个相关的问题是索引页面(博客页面)没有任何翻译 link 英语或返回标准语言版本。
我该怎么做才能解决这个问题?
关于问题的第二部分,请查看creating language buttons
我能够使用以下翻译宏解决我的问题:
{% macro translations_for(article) %}
{% if extra_siteurls %}
{% for lang, url in extra_siteurls.items() %}
{% if article %}
<a href="{{ url }}/{{article.permalink}}">{{ lang | lookup_lang_name }}</a>
{% else %}
<a href="{{ url }}">{{ lang | lookup_lang_name }}</a>
{% endif %}
{% endfor %}
{% endif %}
{% endmacro %}
通过为每篇文章和页面添加永久链接选项,我还可以翻译所述文章或页面的 URL(否则你可以在上面的宏中使用 slug)。
最后但同样重要的是,我还从两个主页中删除了 url 和 save_as 数据。
为了修复博客页面,我将其添加到 index.html 模板中:
{% block translation_links %}
{% if lang == 'nl' %}
<a href="/en/blog/">English</a>
{% else %}
<a href="/blog/">Nederlands</a>
{% endif %}
{% endblock %}
我有一个静态主页,但我也在使用 i18n 子站点插件。所以对于我的主页,在 pelicanconf.py:
INDEX_SAVE_AS = 'blog/index.html'
INDEX_URL = 'blog'
英文版:
I18N_SUBSITES = {
'en': {
'OUTPUT_PATH': 'output/en/',
'INDEX_SAVE_AS': 'blog/index.html',
'INDEX_URL': 'blog',
}
}
(截断了不必要的位)
问题出在主页的翻译 link 上。翻译宏有:
{% for translation in article.translations %}
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang | lookup_lang_name }}</a>
因此,对于英文主页,我可以将 url 和输出文件名设置为:
<meta name="save_as" content="en/index.html">
<meta name="url" content="en/">
这使得翻译 link 转到站点。com/en/en/(并且有效),或将它们设置为:
<meta name="save_as" content="index.html">
<meta name="url" content="/">
与标准语言主页冲突。
另一个相关的问题是索引页面(博客页面)没有任何翻译 link 英语或返回标准语言版本。
我该怎么做才能解决这个问题?
关于问题的第二部分,请查看creating language buttons
我能够使用以下翻译宏解决我的问题:
{% macro translations_for(article) %}
{% if extra_siteurls %}
{% for lang, url in extra_siteurls.items() %}
{% if article %}
<a href="{{ url }}/{{article.permalink}}">{{ lang | lookup_lang_name }}</a>
{% else %}
<a href="{{ url }}">{{ lang | lookup_lang_name }}</a>
{% endif %}
{% endfor %}
{% endif %}
{% endmacro %}
通过为每篇文章和页面添加永久链接选项,我还可以翻译所述文章或页面的 URL(否则你可以在上面的宏中使用 slug)。
最后但同样重要的是,我还从两个主页中删除了 url 和 save_as 数据。
为了修复博客页面,我将其添加到 index.html 模板中:
{% block translation_links %}
{% if lang == 'nl' %}
<a href="/en/blog/">English</a>
{% else %}
<a href="/blog/">Nederlands</a>
{% endif %}
{% endblock %}