我用法语和英语流利地说。我希望我的网站能够以任何一种语言显示,具体取决于访问者的语言设置。为了记录,这些信息由访问者的浏览器提供,Accept-Language
HTTP header。
据我所知,实现这一目标的最好(也是唯一?)方法是使用Apache的mod_negotiation。考虑以下树结构:
.
├── page.html.en
└── page.html.fr
访问page.html
会以英语或法语显示该页面。 我想使用一个使用这种i18n方法的CMS。
我正在考虑将Jekyll用于我的网站。在下面的目录结构中,我想我需要用法语和英语(2013-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实现自动国际化?我很难想象自己手工编写所有网站。
答案 0 :(得分:0)
Jekyll本身不支持i18n。
您可能需要自己翻译包含和布局。您可能希望正确命名您的包含 - 例如footer_en.html。与您的布局相同 - 将它们称为page_en.html,post.en.html等。在YAMl前端,指定必须使用的布局:
---
layout: post_en
lang: en
---
如果您将lang属性设置为自定义YAML Front事项,则您甚至可以仅在帖子列表中呈现所需语言的帖子,例如如果您有一个标签云或一个类别中的特定帖子列表。
但是,这很可能会打破分页。您可以通过将分页器的每页元素加倍,然后手动丢弃for循环中具有错误语言的元素来避免这种情况:{% for post in paginator.posts %}
{% if post.lang == 'en' %}
<!--- display --->
{% endif %}
{% endfor %}
如果您不翻译每篇文章,那么将会出现分页问题(如果其他语言中缺少帖子,您最终可能会有超过预期的每页帖子数量)。
如果你不害怕使用插件,甚至可能有更好的选择。