【问题标题】:How do you customize transliterations in a Rails 3 app?如何在 Rails 3 应用程序中自定义音译?
【发布时间】:2011-06-25 22:52:45
【问题描述】:

最终,我想使用 Inflector.parameterize 为其中包含一堆 unicode 字符的文章标题创建 slug(例如“Ḥ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?

【问题讨论】:

    标签: ruby-on-rails-3 unicode inflector


    【解决方案1】:

    嗯,我已经得到了部分答案。与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 应用程序中的什么位置?

    【讨论】:

      【解决方案2】:

      [...] 像 I18n.backend.store_translations(:en,... 这样的代码应该存在于 Rails 3 应用程序中的什么地方?

      我知道。我可能有点晚了,但我会把它放到一个初始化文件中:config/initializers/i18n.rb

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-18
        • 1970-01-01
        • 2012-04-29
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多