0

en-GB、en-US、de-DE、de-AT、de-CH などの形式のロケールがあります。

ここでの問題は、de-DE、de-AT、de-CH がすべて同じ翻訳を共有することです。したがって、それらを複数回定義しなければならないのは煩わしく、あまり DRY ではありません。

誰かが :de をロケールとして使用することを提案する前に、私はできません。それが私が以前に行った方法であり、いくつかのビジネスロジックのために、新しい en-GB 形式を変更することができませんでした。

助けていただければ幸いです。

4

2 に答える 2

3

ローカリゼーションに YAML を使用している場合は、必要なツールが既に用意されています。YAML では mixin のようなものを書くことができます:

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

en-GB:
  <<: *english

en-US:
  <<: *english

ここでDRYingのアイデアが得られたことを願っています.

于 2012-06-04T10:53:00.737 に答える
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ます。

i18nwikiの詳細情報。

于 2012-06-05T14:22:54.697 に答える