\"he开发者_StackOverflow中文版llz-no\"). A" />
开发者

How do you customize transliterations in a Rails 3 app?

Ultimately, I would like to use Inflector.parameterize to create slugs for article heading that have a bunch of unicode chars in them (e.g. "ḤellẒ no" => "he开发者_StackOverflow中文版llz-no"). According to http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-transliterate it says to put them in the locales/en.yml file.

# Store the transliterations in locales/en.yml
i18n:
  transliterate:
    rule:
      Ḥ: "h"
      Ẓ: "z"

I tried that but the following does not work:

"ḤellẒ no".parameterize
# => "ell-no"

However, when I change it in Ruby like the second paragraph suggests, it works.

I18n.backend.store_translations(:en, :i18n => {
   :transliterate => {
     :rule => {
       "Ḥ" => "H",
       "Ẓ" => "Z"
     }
   }
})

"ḤellẒ no".parameterize
# => "hellz-no"

I guess I would like to know why putting the custom transliterations in locales/en.yml doesn't work.

And even if someone give the answer for that, being a Rails noob, I would also like to know where one usually puts code like the second block to manually set the I18n.backend.store_translations?


Ehh, I've got a part of the answer. Unlike what the doc at http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-transliterate says, the yml files should still specify the language - i.e. de:

# Store the transliterations in locales/de.yml
de:
  i18n:
    transliterate:
      rule:
        ü: "ue"
        ö: "oe"

Please still answer the second part of the question, where should code like I18n.backend.store_translations(:en,... live in a Rails 3 app?


[...] where should code like I18n.backend.store_translations(:en,... live in a Rails 3 app?

I know. I might be a little late on this but I would put it into an initializer file: config/initializers/i18n.rb

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜