关于 ruby??:Jekyll 有多语言支持吗?

does Jekyll have multi-language support?

实际上,我遇到了一个问题,我无法使用 jekyll 本地编译站点。我在尝试添加不是来自 \\'standard\\' (英文)字符的任何字符时收到此错误(我什至不知道如何表征这些字符,因为我仍然使用包含所有这些字符的 Unicode)。

1
2
Generating... error: incompatible encoding regexp match
    (UTF-8 regexp with IBM866 string). Use --trace to view backtrace

我尝试了不同的语言字母:德语、波兰语、乌克兰语/俄语 (? ü ? ? ? ? л),但结果始终相同 -- 错误。

我在 jekyll 配置 (_config.yml) 中有这一设置。我的 Ruby 本地版本是 1.9.3(我真的只需要本地版本,因为使用预编译文件的方法 - 而不是 jekyll-server)。

1
2
encoding: UTF-8
markdown: redcarpet

(也尝试过 MarkDown :maruku)

我猜,这确实是更多与 Ruby 相关的错误,因为当我在标题中使用列出的字符时

1
2
3
---
title: ? ü ? ? ? ? ? л
---

它工作得很好(这些字符在编译的页面中也很有效),但是当它们被添加到页面正文中进行解析时就不行了。但是,我仍然不是 Ruby 开发人员,也不是那种容易在源代码中找到解决问题的地方的人。

如果不能使用这样的字符,那么 Jekyll 的使用就会非常有限。


实际上,多亏了 Rafal Chmiel,问题所在才变得清晰起来。
这是由 jekyll rss-plugin 引起的,它(似乎)不能处理其他语言,只能处理英语。

我已将问题添加到 github。
暂时停止使用该插件。

这对于使用可能导致其他错误的任何其他插件的任何其他用户很有用。

试着追踪 Jekyll 看看到底发生了什么:

1
jekyll build --trace

更新:

更多调查表明插件内部的问题是Maruku markdown解析方法。实际上,它会导致错误,因为据我了解,rss-plugin 默认使用该代码(即使在 Jekyll 设置中选择了任何其他 'markdown: ...' 方法)。

我试过了:

1
markdown: maruku

(没有任何插件)并遇到了完全相同的问题,这告诉我"使用 maruku markdown 转换时 Jekyll 的多语言支持不可用"。

另一个更新:

一些进一步的调查确实表明 Jekyll 解析器存在问题。我的"标题:[not-standard-unicode-characters]"的工作方式是因为我的编辑器在文件的开头插入了 BOM:redcarpet 然后不将头部部分作为头部处理,而只是作为一些文本和只是像平常一样生成文本。

但是,当我删除BOM时,出现了新的错误(与上面的不同,但也与编码有关):

1
2
... test21.markdown: invalid byte sequence in UTF-8
... gems/jekyll-1.2.1/lib/jekyll/excerpt.rb:110:in `scan': invalid byte sequence in UTF-8 (ArgumentError)

标题文本是:

1
2
3
4
5
6
7
---
layout: post
title: укра?нський заголовок
---

укра?нський текст
some other text

我已将问题请求添加到 Jekyll github。

一般来说,这让我感到好奇的是,因为我是第一个尝试将 Jekyll 用于不仅具有标准英文内容的网站的人吗?!!我是吗?否则,此类错误将是奇怪的行为。没有?

更新:

说到这里"和"Jekyll,处理多语言字符的方法就是使用HTML实体,像这样:

1
2
3
---
title:"          "
---

用引号括起来。

另外,Jekyll 的团队认为:

Once v1.3 comes out, try assigning encoding:"utf-8" in your
_config.yml and trying without the HTML entities. It should correct itself (hopefully).