質問

言及する

[1]これ Rails の国際化:i18n はネストされたロケール ディレクトリで検索します

[2]これ http://guides.rubyonrails.org/i18n.html#organization-of-locale-files

このレール ガイドでは、どのように構造化できるかを示すだけで、その後は途切れてしまいます。指定されたファイル構造で検索する方法については何も言及されていませんでした。

それで、とにかくファイル構造でLazy Lookを使用する方法があるかどうか疑問に思っていました

次のディレクトリを検討してください

config/locales             app/views          

|locales                   |views
|-defaults                 |-fruits
|--en.yml                  |--apple 
|--views                   |--banana
|---fruits                 |-meats
|----en.yml                |--chicken
|---meat                   |--beef
|----en.yml 

config/application.rb

 config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/**/*.{rb,yml}"]

.yml

locales/views/fruits/en.yml|  locales/views/meats/en.yml
                           |
en:                        |  en:   
  produce: "Produce"       |   meat_section: "Meat Section" <--- shared key within folder
                           |
  apple:                   |   chicken:
    red: "Red"             |     white_meat: "White Meat"
                           |
  banana:                  |   beef: 
    yellow: "Yellow"       |     red_meat: "Red Meat"

locales/defaults/en.yml

en:
  repeat_key:
    market: "Market"     <------- shared key across folders 

これを行う方法はありますか?またはそれに近いもの??

views/fruits/apple.html.haml 内

= t('.red')                 <------- unique key in apple 
= t('produce')              <------- shared key within fruits folder
= t('repeat_key.maket')     <------- repeat key across fruits and meat folders

次のコードが機能することはわかっていますが、私は Apple ディレクトリにいるので、一意のキーの遅延検索を使用する方法があるはずです。

views/fruits/apple.html.haml 内

= t('apple.red')            <------- unique key in apple 
= t('produce')              <------- shared key within fruits folder
= t('repeat_key.maket')     <------- repeat key across fruits and meat folders 

それが可能であればそう思います。重複キーを最小限に抑えることができ、追加のエイリアスを追加する必要がある場合は、必要なときに追加できます。なぜなら、ほとんどの翻訳チームは単語ごとに料金を請求すると思うからです。

役に立ちましたか?

解決

レールが選択されたネストレベルのためにすべての.ymlファイルを実際に引っ張って、それらを1つに組み合わせることを見つけましたが、それはフードの下で起こる最終的な.ymlと私たちが見ることができないもの(少なくとも私はできませんでした。それを見る方法を見つける。追加では、.ymlの内部が構造化されている限り、.ymlの名前は関係なく、怠惰なルックアップが機能します。

最後に、私は次のように地域を整理しました、それはそれを整理するより良い方法だと思います。

|config
|-locales
|--en
|---en.yml
|---fruits.en.yml
|---meat.en.yml   
.

.yml

locales/en/fruits.en.yml|     locales/en/meats.en.yml
                           |
en:                        |  en:   
  fruits:                  |   meats:
    produce: "Produce"     |     meat_section: "Meat Section" <-shared key within folder
                           |
    apple:                 |     chicken:
      red: "Red"           |       white_meat: "White Meat"
                           |
    banana:                |     beef: 
      yellow: "Yellow"     |       red_meat: "Red Meat"
.

ロケール/ en / en.yml

en:
  repeat_key:
    market: "Market"     <------- shared key across folders 
.

views / fruits / apple.html.haml

= t('.red')                 <------- unique key in apple 
= t('fruits.produce')       <------- shared key within fruits folder
= t('repeat_key.maket')     <------- repeat key across fruits and meat folders
.

この条約

  1. "。"のキーAKA怠惰なこれは、
  2. のどちらを示すものを示すものです。
  3. Forterのファイル名が、共有キーとその場所の場所
  4. フォルダ間で多くの繰り返しのキーはrepeat_keyの下に行くことができ、それらはen / en.yml
  5. のプレゼンスです。

他のヒント

@エアウィック219。

遅延検索を使用したい場合は、ファイルを準備する必要があると思います config/locales/views/fruits/apple/en.yml.

フォルダ内に共有キーが欲しい場合は、ちょっと冗長ですがこんな感じを追加してみてはいかがでしょうか。

config/locales/views/shared/en.yml,

en:
  shared:
    fruits:
      produce: "Produce" 

= t('shared.fruits.produce')

または、遅延検索の使用をあきらめます:(

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top