使用Rails i18n支持不同的区域设置区域

时间:2010-06-07 23:53:40

标签: ruby-on-rails localization internationalization globalize2

我正在使用standard Rails I18n API来定位我们的一些观点。这非常有效,但我们现在有一些用于区域更改en区域设置的用例。

API guide提到不直接支持,应该使用其他插件。但是,我想知道是否有一种更简单的方法可以做到这一点。

我已经有en.yml,所以从理论上讲,我可以创建en-AU.ymlen-US.yml,它们是en.yml的有效克隆,但应用了一些区域更改。然后,我可以在配置中添加其他English - AmericanEnglish - Australian选项,这些选项将映射到特定于区域的新区域设置,并允许用户使用特定于区域的区域设置。

我能想到的唯一问题是它不是DRY - 我会翻译所有常见英语单词的翻译。我无法看到解决方法。

这种方法还有其他缺点吗,或者我应该咬紧牙关并潜入其中一个插件,例如Globalize2?

3 个答案:

答案 0 :(得分:6)

rails-i18n-translation-inheritance-helper现在变得有点老了,所以这是我对Rails 3.2项目的方法。

如果将en-US和en-AU保存在同一个en.yml文件中,则可以使用yml重复节点来创建超级en部分:

例如:

en: &en
  errors:
    messages:
      expired: "has expired, please request a new one"
      not_found: "not found"

en-US
  <<: *en

en-AU
  <<: *en
  errors:
    messages:
      not_found: "tis not found"

答案 1 :(得分:2)

答案 2 :(得分:2)

在较新版本的Rails / i18n中,他们添加了一个后备功能。与过时的translation inheritance helper宝石

类似

请参阅此答案以获取更多信息:Fall back to default language if translation missing