0

我有以 en-GB、en-US、de-DE、de-AT、de-CH 等形式出现的语言环境。

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

在有人建议只使用 :de 作为语言环境之前,我不能。这就是我之前的做法,由于某些业务逻辑,我无法更改新的 en-GB 格式,这迫使我被迫接受。

帮助将不胜感激。

4

2 回答 2

3

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

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

en-GB:
  <<: *english

en-US:
  <<: *english

我希望你在这里有干燥的想法。

于 2012-06-04T10:53:00.737 回答
1

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

创建一个包含 fallbacks 的 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的更多信息。

于 2012-06-05T14:22:54.697 回答