帮酷LOGO
  • 显示原文与译文双语对照的内容
Write elegant multi-language Jekyll sites

  • 源代码名称:multilingual
  • 源代码网址:http://www.github.com/octopress/multilingual
  • multilingual源代码文档
  • multilingual源代码下载
  • Git URL:
    git://www.github.com/octopress/multilingual.git
  • Git Clone代码到本地:
    git clone http://www.github.com/octopress/multilingual
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/octopress/multilingual
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • Octopress多语言

    将多种语言特性添加到你的Jekyll 。 这里插件易于使用:

    • 添加特定于语言的发布索引。存档和RSS提要。
    • 翻译后的文章和页面之间的链接。
    • 在永久链接中使用语言。
    • 将单个帖子交叉张贴到所有语言。
    • 添加翻译词典以简化网站模板。
    • 标记和类别索引自动按语言筛选。

    Build StatusGem VersionLicense

    安装

    如果要使用 bundler,请将这里 gem 添加到 :jekyll_plugins 组中的网站中:

    group :jekyll_plugins do
     gem 'octopress-multilingual'
    end

    然后用Bundler安装 gem

    $ bundle

    要手动安装而不使用 bundler:

    $ gem install octopress-multilingual

    然后将 gem 添加到你的Jekyll配置。

    gems:
     - octopress-multilingual

    一个重要的笔记

    对于多语言站点, Jekyll Jekyll,许多插件不能在这个设置中正常运行。 Octopress和它的插件被设计为支持多语言功能,但没有标准,有些用例可以能被忽略。 如果你有一个支持多语言站点的Octopress插件,请将问题归档,我们将尽可以能地处理它。

    注意:第一方Octopress插件被设计用来支持多语言站点,但是其他插件可能无法工作,你希望多语言站点。 修改插件超出了本指南的范围。

    此外,如果使用标志表示站点上的语言,则可能需要阅读,为何不表示语言的标志。

    帮助插件

    这些插件会自动在Octopress语言中添加多语言功能。

    设置

    将这里插件添加到你的站点时,你需要:

    • 配置站点语言的主要内容,比如 lang: en
    • 将语言添加到你帖子的YAML前问题,比如 lang: de
    • 为第二语言添加发布索引和RSS源。

    首先,一定要配置你的站点语言的变体。 一个主要用英语写的站点将把它添加到它的osm配置中:

    lang: en

    这里我们将默认语言设置为英语。 没有定义的语言的帖子将被视为英文文章。 有关标准语言代码的列表,请参阅 ISO 639 -1 。 你还可以使用 [language] - [region] 方法设置站点的语言,如 en-us 用于美国英语或者用于奥地利德语的de-at

    为页面或者帖子设置语言

    指定在YAML前端的日志或者语言的页面。

    title: "Ein nachdenklicher Beitrag"lang: de

    你可以用 page.lang 或者 post.lang 来引用网页或者文章语言。 这个插件添加了过滤器 language_name,它可以将语言短名称转换为本地语言 NAME 。 例如:

    {{ en | language_name }} # English
    {{ de | language_name }} # Deutsch
    {{ es | language_name }} # Español

    支持许多公共语言代码,但你可以在osm配置的站点中添加或者重写这些代码:

    language_names:
     es: Spanish
     omg: WTFBBQ

    全文索引,RSS提要和归档。

    如果你正在写英语和德语文章,你只需要英语和德语的帖子索引。 为此,只需将你的post索引中的语言设置为 YAML 。

    例如这将只通过德语帖子进行循环:

    ---
    lang: de
    ---
    {% for post in site.posts %}.. . {% endfor %}

    这将只通过英文帖子:

    ---
    lang: en
    ---
    {% for post in site.posts %}.. . {% endfor %}

    如果默认日志索引位于 /index.html 处,则应为每个辅助语言创建附加索引。 如果你还用德语写,你可以在 /de/index.html 上创建一个帖子索引。 这种方法适用于日志存档和RSS提要,但是如果你使用 octopress提要插件,将自动生成每个语言的RSS提要。

    插件是如何使用语言将所有文章分组的。 在构建时,任何带有语言定义的页面都将被筛选为只显示匹配的语言。 这对于 site.categoriessite.tags 也适用。 如果站点使用 octopress-linkblog 发布链接帖子,则你的site.articlessite.linkposts 将被过滤。

    网站模板语言词典

    写多个站点布局是令人烦恼的,并且包括什么时候只是翻译单词。 Octopress多语种添加语言词典使这里更容易。 在 _data 站点目录中,你可以添加带有文件命名 Pattern lang_[language_code].yml的语言词典。 例如:

    _data
     lang_en.yml
     lang_de.yml

    你的文件可能如下所示:

    # lang_en.yml
    title: English title
    # lang_de.yml
    title: Deutsch titel

    现在在布局中或者包括你可以在全局变量 lang 下引用这些字典。 所配置的页或者后语言将决定使用哪种语言词典。 例如:

    # On a page or post where lang: en
    {{ lang.title }} => English title
    # On a page or post where lang: de
    {{ lang.title }} => Deutsch titel

    如果没有为页面或者帖子配置语言,则默认为默认站点语言。

    # No page lang, site is configured lang: en
    {{ lang.title }} => English title

    由于这些是osm数据源,所以在 site.data.lang_ensite.data.lang_de 中也可以访问这些字典。 这个插件仅仅添加了全局 lang 变量,并根据配置的语言交换上下文。

    在翻译后的文章或者页面之间的链接

    url可以改变并手动链接到翻译过的文章,而页面不是最好的想法。 这个插件帮助你使用共享的翻译标识来链接帖子。 使用 ,你可以自动将翻译id添加到页面和日志中。 然后,你可以使用 post.tranlsations 或者 page.translations 引用翻译的array 。 下面是语法:

    $ octopress id path [path path...]

    这将创建一个唯一的键,并自动把它写到YAML前面的每一页或者文章你通过。 下面是一个示例:

    $ octopress id _posts/2015-02-02-english-post.md _posts/2015-02-02-deutsch-post.md _posts/2015-02-02-espanol-post.md

    这将增加 translation_id: fcdbc7e82b45346d67cced3523a2f236 对每一个帖子的YAML前情。 这个键没有什么特殊之处,只是它是独一无二的。 如果你想写你自己的,那就可以了。

    当你拥有带有 translation_id的文章或者页面时,可以以使用 translations 或者 translation_list 标记列出翻译后的文章或者页面链接。 例如:

    {% translations page %} # On a page/post layout
    {% translations post %} # In a post loop
    # Which outputs:
    <a class='translation-link lang-de' href='/de/2015/02/02/deutsch-post'>Deutsch</a>, <a class='translation-link lang-es' href='/es/2015/02/02/espanol-post'>Español</a>
    # If you prefer a list:
    {% translation_list post %}
    # Which ouputs:
    <ul class='translation-list'>
     <li class='translation-item lang-de'>
     <a class='translation-link lang-de' href='/de/2015/02/02/deutsch-post'>Deutsch</a>
     </li>
     <li class='translation-item lang-es'>
     <a class='translation-link lang-es' href='/es/2015/02/02/espanol-post'>Español</a>
     </li>
    </ul>

    如果你希望手动访问翻译过的帖子,你可以按如下所示循环执行翻译:

    {% if page.translated %}
     Translations: {% for t in page.translations %}
     <a href="{{ t.url }}">{{ t.lang | language_name }}</a>
     {% endfor %}
    {% endif %}

    用语言编写的参考文章

    所有帖子均按语言分组,可以通过 site.posts_by_language 直接访问。 例如:

    {% for post in site.posts_by_language.de %} # German posts
    {% for post in site.posts_by_language.en %} # English posts

    如果你有 octopress-linkblog插件安装,你可以访问链接日志和文章组。

    {% for post in site.linkposts_by_language.de %} # German linkposts
    {% for post in site.articles_by_language.de %} # German articles

    过帐语言

    如果你想编写一个在索引和提要中显示的文章,请在of中设置 lang_crosspost: true

    title:"Ein nachdenklicher Beitrag"
    lang: de
    lang_crosspost: true

    这篇文章将显示出每种语言。 但是,它将像一个用德语写的帖子一样被处理,并且有一个典型的URL 。

    永久链接中的语言

    这里插件不使用类别向url添加语言。 它将 :lang 键添加到jekyll模板的永久链接。 任何带有定义语言的帖子都将在网址中显示语言。 如果这改变了站点的url,那么你可能应该设置重定向的位置。

    如果你定义了自己的永久链接样式,你可以使用 :lang 键,如下所示:

    permalink: /posts/:lang/:title/

    如果你没有指定永久样式,或者者如果使用的是,模板中的一个,则你的post url将更改。 使用jekyll模板的pretty 时,url将如下所示:

    /site_updates/en/2015/01/17/moving-to-a-multilingual-site/index.html
    /site_updates/de/2015/01/17/umzug-in-eine-mehrsprachige-website/index.html

    这个插件更新每一个默认的永久永久链接模板,包括 :lang

    pretty => /:lang/:categories/:year/:month/:day/:title/none => /:lang/:categories/:title.html
    date => /:lang/:categories/:year/:month/:day/:title.html
    ordinal => /:lang/:categories/:year/:y_day/:title.html

    如果你不希望语言出现在你的url中,则必须在没有 :lang的情况下配置你自己的永久链接。

    临时语言作用域

    使用 set_lang 流 块时,可以以在呈现站点的一部分时临时使用 switch 语言。 例如:

    {{ page.lang }} # => 'en'
    {{ site.posts }} # => All posts
    {% set_lang de %}
     {{ page.lang }} # => 'de'
     {{ site.posts }} # => German posts
    {% endset_lang %}
    {{ page.lang }} # => 'en'
    {{ site.posts }} # => All posts

    set_lang 标记也将接受变量,例如:

    {% assign lang = 'de' %}
    {% set_lang lang %} # equivilent to {% set_lang de %}
    # On some page
    {% include some_partial.html lang='de' %}
    # In _includes/some_partial.html
    {% set_lang include.lang %} # equivilent to {% set_lang de %} 

    如果安装了 octopress-linkblog插件插件,那么它也会改变你的和 site.linkposts 循环的语言。




    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语