Как вы настраиваете транслитерацию в приложении Rails 3? - PullRequest
2 голосов
/ 12 февраля 2011

В конечном счете, я хотел бы использовать Inflector.parameterize для создания слагов для заголовка статьи, в котором есть набор символов в юникоде (например, "ḤellẒ no" => "hellz-no"). Согласно http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-transliterate говорится, что они должны быть помещены в файл 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 ]

5 голосов
/ 12 февраля 2011

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

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

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

1 голос
/ 03 мая 2013

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

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

...