在Rails3中共享多个语言环境之间的翻译

时间:2012-06-04 09:48:07

标签: ruby-on-rails ruby-on-rails-3 internationalization

我的语言环境有en-GB,en-US,de-DE,de-AT,de-CH等形式。

现在的问题是de-DE,de-AT,de-CH都共享相同的翻译。 所以不得不多次定义它们很烦人而且不是很干。

在任何人建议使用之前:de as locale,我不能。这就是我以前做过的,由于一些业务逻辑,我无法改变新的en-GB格式被强加给我。

非常感谢帮助。

2 个答案:

答案 0 :(得分:3)

如果您使用YAML进行本地化,那么您已经拥有了必要的工具。 YAML允许你写一些类似mixins的东西:

en: &english
   hello: Hello, %{username}!

en-GB:
  <<: *english

en-US:
  <<: *english

我希望你能在这里得到DRYing的想法。

答案 1 :(得分:1)

仍然干,但更重要的是你的翻译不会在内存中重复:

创建包含回退的i18n初始化程序:

require "i18n/backend/fallbacks" 
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)

将您的翻译移至de:en:区域设置。

像这样的电话

I18n.t :foo, :locale => 'de-AT'

首先会查找de-AT.foo,如果没有匹配,则会查找de.foo

有关i18n wiki的更多信息。