我的语言环境有en-GB,en-US,de-DE,de-AT,de-CH等形式。
现在的问题是de-DE,de-AT,de-CH都共享相同的翻译。 所以不得不多次定义它们很烦人而且不是很干。
在任何人建议使用之前:de as locale,我不能。这就是我以前做过的,由于一些业务逻辑,我无法改变新的en-GB格式被强加给我。
非常感谢帮助。
答案 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的更多信息。