2012-03-30 10 views
5

最初に確認することは、データベースに何も複数の言語を用意するつもりはありません。私はちょうどページのテキストについて話しています。Rails 3のI18nで推奨されるレール方法

私はRails Guide内のステートメントについて少し混乱しています:

国際化ライブラリは次のように、唯一のロケール(「言語」)部分を含むロケールキー(いくつかの議論の後)に実用的なアプローチを取ります: en、:en、:en、:enなどの地域の部分ではなく、伝統的に "言語"と "地域の設定"や "方言"の分離に使用されています。多くの国際的なアプリケーションでは、cs、:th、:es(チェコ語、タイ語、スペイン語)などのロケールの「言語」要素のみを使用します。しかし、異なる言語グループの中には、地域の違いもあります。たとえば:en-USロケールでは、通貨記号として$を、en-GBでは£を使用します。このように地域やその他の設定を分離することを止めるものはありません:en-GB辞書に完全な "English - United Kingdom"ロケールを用意するだけです。

アメリカの一部とGBの部分が含まれている完全な英語のローカリゼーションが必要な場合を考えます。

だから私は

-- Rails Root 
    |-- config 
    |-- locale 
     | 
     |-- en.yml 
     |-- en-US.yml 
     |-- en-GB.yml 

、ロケールフォルダ内のen.ymlen-US.ymlen-GB.yml、3つのファイルを持っている必要があり、私はI18n.locale = 'en-US'を設定するとき、それはen-US.ymlで、テキストの翻訳を使用します。 I18nをレール3で使用することをお勧めしますか?

そして、それは私が(月曜日火曜日のように、彼らは米国およびGBに同じ)en.ymlで、同一の部分を維持し、分離したファイルen-US.ymlen-GB.ymlに異なるもの(通貨記号のようなもの)を保つことは良いのですか?レールがen.ymlの同じ部品を自動的に見つけることは可能でしょうか?私がテストしたように、すぐにサポートされているわけではありません。

+2

http://stackoverflow.com/a/7886246/772874 –

答えて

5

en-USとen-GBに共通するすべての翻訳が重複しないように、異なる翻訳に対してカスタムフォールバックルートを定義できます。

I18n.fallbacks.map(:"en-GB" => :"en") 

または

I18n.fallbacks[:"en-GB"] # => [:"en-US", :en] 

だからEN-GBは、あなたが戻って落ちることができ、特定の翻訳がen.ymlまたはEN-US.ymlする必要はありません。このようにして、地域固有の翻訳をen-US.ymlとen-GB.ymlに保存することができます。一方、共通しているものはすべてenにあり、 en-US.ymlまたはen-GB.ymlでの特定の翻訳。

関連する問題