Polyglot · Straightforward I18n for Jekyll Blogs

# Polyglot 1.3.0

23 Jul 2017

Polyglot 的全新版本现已推出。去试试吧！

    gem install jekyll-polyglot

本次发布得益于以下 GitHub 用户的支持：

- vlsi
- pserwylo

### 递归式合并不同语言特定的 `site.data`

现在，在你的 `site.data` 目录下的特定语言内容将会递归地被合并在一起。也就是说，`active_lang` 的内容会优先于 `default_lang` 的内容呈现，也就是优先于非特定语言的内容。（#59）

### 未指定语言的文件仍然会被写入 `default_lang` 的站点根目录

如果没有在 `languages` 中定义 `default_lang`，本功能会确保没有指定语言的文件（也就是被排除在本地化之外的文件）仍然会被写入站点根目录。（#65）

### `i18n_headers` 性能提升以及修复

现在，文档处理速度更快了。此外，修复了 `site.url` 被定义时的 `i18n_headers` 处理。（#67）

### 自定义站点配置文件中的 `active_lang` 键

这将允许 `active_lang` 使用自定义的键，使 Polyglot 可以和其他的插件与主题更好地配合使用。（#68）

# Polyglot 1.2.4

16 Dec 2016

Polyglot 的全新版本现已推出。去试试吧！

    gem install jekyll-polyglot

本版本由 GitHub 用户 vlsi 的热心支持提供，他修复了一些 bug，并添加了下列新特性：

### 支持绝对 URL 的多语言翻译版本

Polyglot 现在会翻译你的 `site.url`，因此，绝对 URL 也会得到翻译了。

### 支持对全部 Jekyll 合集的翻译

Jekyll 合集是一项 Jekyll 的全新特性。本次更新也会把所有现有合集都进行翻译，而不只有文章和页面。

### 当 `site.data[:lang]` 存在时，对 `site.data` 的富文本使用语言特定的 `_data` 内容翻译

根目录下的富文本会在生成时。之前如果想要渲染富文本内容，你需要按照如下方式使用：

    {{ site.data[site.active_lang].richTextString }}

现在，富文本内容可以直接使用如下标签进行渲染：

    {{ site.data.richTextString }}

### `I18n_Headers` 在留空时使用来自 `site.url` 的默认值

用户现在可以在不指定特定 url 的情况下使用下列标签：

    {% I18n_Headers %}

这些标签将会使用你的 `site.url` 的默认值。

# Polyglot 1.2.0

20 Apr 2016

Polyglot 的全新版本现已推出。去试试吧！

    gem install jekyll-polyglot

此外，还请把 `jekyll-polyglot` 添加到你的网站的 `_config.yml` 的 gem 列表中。

本版本主要是为接下来的新特性以及更好的多语言内容管理提供基础准备。此外，本版本还包括了一些新特性：

## {% I18n_Headers %}

请把这些标签和你的网站的 url 一同放入你的 `includes` 文件夹下的 `head.html` 文件中，以此获得最大化的多语言站点 SEO 。其效果与如下 Liquid 代码等同：

    <meta http-equiv="Content-Language" content="{{site.active_lang}}">
    <link rel="alternate"
          hreflang="{{site.default_lang}}"
          href="http://yoursite.com{{page.permalink}}" />
    {% for lang in site.languages %}
    {% if lang == site.default_lang %}
      {% continue %}
    {% endif %}
    <link rel="alternate"
        hreflang="{{lang}}"
        href="http://yoursite.com/{{lang}}{{page.permalink}}" />
    {% endfor %}

同样是要放在你的网页 header 中，但是 Polyglot 的方案更加快捷清晰！若需更多详情，请参照 SEO 页面。

# Polyglot 版本 1.1.0

14 Nov 2015

Polyglot 现已全面支持 Jekyll 3.0 博客！去试试看吧！

    gem 'jekyll-polyglot', '~> 1.1.0'

# Polyglot 简介

19 Sep 2015

在经过数月的打磨后，我很骄傲地为大家介绍 Polyglot：为那些需要为其受众提供多语言内容的网站所打造的，一款 Jekyll 的 i18n 插件。

### 特性

尽管市面上存在其他的 Jekyll 多语言插件，Polyglot 却也有其独特之处。多语言插件，Polyglot 在包揽了那些通常留给 Jekyll 开发者去做的脏活累活（比如为了保持不同语言网站下站点地图保持一致而去折腾 url 的写法）的同时，还为他们提供了高效且简单的 SEO 与内容聚合工具。

## 创建相对化链接

在过去，一款静态网站/博客的多语言插件必须费心地跟进维护网站上所提供的每种语言的相对链接。开发者很容易犯错，然后外语访客就会一下子掉进还没翻译的内容之中。

Polyglot 自动化地为每种你希望网站所拥有的语言的 url 进行相对化处理。这可以让网站的访客可以在浏览你的网站时一直使用同一种语言的版本。

## 应变支持

当你没有为多语言内容提供翻译版本时，Jekyll 依然会为该语言的子站点根据已有的内容进行构建。而在你提供了多语言翻译版本的情况下，Jekyll 会根据该内容对该语言的子站点构建对应内容。就是这么简单。

站点地图对所有语言均保持一致，翻译内容与其所处的子站点一一对应。

## 富文本翻译

一般来讲，富文本内容的多语言翻译很难实现。对一个 Jekyll 网站来说，多语言的短字符串或者某些语言的特定用语很难在显示上保持一致。

但现在却简单如斯：只需在你的 `config.yml` 文件中，按照如下方式存储字符串：

    hello:
      en: Hello!
      es: ¡hola!
      fr: Bonjour!
      de: Guten Tag!

按照如下方式使用 Liquid 模板内容：

    {{ site.hello[site.active_lang]}}

会生成如下内容：

你好！

## 快速，异步，零成本构建

Polyglot 会和构建你的默认语言站点一样构建你的多语言站点。Polyglot 会以最小的成本在各自独立的进程下同时构建你的网站的每种语言的子站点。这意味着，你的网站的构建时间不会因为支持语言的数量而增加。

### 下载

Polyglot 支持 gem 版本，也可以当作 Jekyll 插件使用。可以使用如下代码安装：

      gem install 'jekyll-polyglot'

Older Newer