1

所以,我想为我拥有的许多语言环境预加载音译规则。我在我的一个初始化程序文件(app/config/initializers/locales.rb)中包含了以下代码:

I18n.backend.store_translations(:en, :i18n => {
:transliterate => {
    :rule => {
        "а" => "a",
        "б" => "b"
    }
}
})

但是,如果我尝试音译:I18n.transliterate("Some Russian text"),我会收到一堆“?” 符号,意思是音译者没有规则,所以他不知道如何进行音译。

但!

如果我在语言环境文件(en.yml)中定义了它们(规则),如下所示:

en:
  i18n:
    transliterate:
      rule:
        а: "а"
        б: "b"

然后它起作用了-尽管我有一个问题,关于它是如何工作的。如果我指定I18n.transliterate("абвгд")- 效果很好,但如果我这样做"абвгд".parameterize了,出于某种原因,字母“a”被省略(就像一开始没有“a”字母一样)。

为什么 ?

有人可以帮忙吗?

4

1 回答 1

2

Looks like you have got a cyrillic 'а' (char code 1072) mapped to a cyrillic 'а' in your en.yml. Do you just need to map cyrillic 'а' to roman 'a'?

en:
  i18n:
    transliterate:
      rule:
        а: "a"
        б: "b"

(both seem to look the same on this site I think).

于 2013-04-29T15:42:12.950 回答