3

我能说流利的法语和英语。我希望我的网站以任何一种语言显示,具体取决于访问者的语言设置。作为记录,此信息由访问者的浏览器提供,即Accept-LanguageHTTP 标头

据我所知,实现这一目标的最佳(也是唯一?)方法是使用 Apache 的mod_negotiation。考虑以下树结构:

.
├── page.html.en
└── page.html.fr

访问page.html以英语或法语显示页面。我想使用一个使用这种 i18n 方法的 CMS。


我正在考虑在我的网站上使用Jekyll2013-06-04-Omelette-du-fromage.markdown.en在下面的目录结构中,我想我需要用法语和英语(等)编写我的包含、布局和帖子。

.
├── _config.yml
├── _includes
│   ├── footer.html
│   └── header.html
├── index.html
├── _layouts
│   ├── page.html
│   └── post.html
├── _posts
│   └── 2013-06-04-Omelette-du-fromage.markdown
└── _site

所以,问题是:如何使用 CMS 在我的网站上实现自动国际化?我几乎无法想象自己会手动编写我所有的网站。

4

1 回答 1

0

Jekyll 本身不支持 i18n。

您可能需要自己翻译包含和布局。您可能希望正确命名您的包含 - 例如 footer_en.html。与您的布局相同 - 称它们为 page_en.html、post.en.html 等。在 YAMl 前端,指定必须使用的布局:

---
layout: post_en
lang: en
---

如果您将 lang 属性设置为自定义 YAML 前端,您甚至可以在帖子列表中仅呈现来自所需语言的帖子,例如,当您有标签云或某个类别中的特定帖子列表时。

但是,这很可能会破坏分页。您可以通过将分页器的每页元素加倍来避免这种情况,然后手动丢弃 for 循环中语言错误的元素:

{% for post in paginator.posts %}
    {% if post.lang == 'en' %}
    <!--- display --->
    {% endif %}
{% endfor %}

当您不翻译每篇文章时,分页会出现问题(如果缺少另一种语言的文章,您最终可能每页的文章数量超过预期)。

如果您不害怕使用插件,甚至可能有更好的选择。

于 2013-06-04T13:51:32.250 回答