Как вы настраиваете транслитерацию в приложении Rails 3?

В конечном счете, я хотел бы использовать Inflector.parameterize для создания слагов для заголовка статьи, в котором есть набор символов в юникоде (например, "ḤellẒ no" => "hellz-no"). Согласно http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html говорится, что они должны быть помещены в файл locales/en.yml.

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

Я пробовал это, но следующее не работает:

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

Однако, когда я изменяю его в Ruby, как предполагает второй абзац, он работает.

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

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

Думаю, мне хотелось бы знать, почему не удается поместить пользовательские транслитерации в locales/en.yml.

И даже если кто-то ответит на это, будучи нубом Rails, я также хотел бы знать, куда обычно помещают код, такой как второй блок, для ручной установки I18n.backend.store_translations?

2 ответа

Решение

Эхх, у меня есть часть ответа. В отличие от того, что сказано в документе по адресу http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html, в файлах yml по-прежнему должен указываться язык - т.е. de:

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

Пожалуйста, все же ответьте на вторую часть вопроса, где должен код, такой как I18n.backend.store_translations(:en,... жить в приложении на Rails 3?

[...] где код должен выглядеть как I18n.backend.store_translations(:en,... жить в приложении на Rails 3?

Я знаю. Я мог бы немного опоздать с этим, но я поместил бы это в файл инициализатора: config/initializers/i18n.rb

Другие вопросы по тегам