2

私は自分のアプリケーション(I18n gem)の国際化にはむしろ別のよりも、次のコードのいずれかを使用する必要があり、私はRailsの3.1にルビーを使用していますが、私はどのようを知りたいのですが、なぜI18n: 't(:test_key)'、 't(' test_key ')'、 't(' test_key ')'の違いは何ですか?

ある
t(:test_key) 
t('test_key') 
t('.test_key') 

t(:test_key)t('test_key')t('.test_key')を使用しての間で "微妙" の違いは何ですか?この問題に関するベストプラクティスは何ですか?

私は最初の二つは等価であり、あなたは自分の翻訳の主キーを参照して、たとえばFO

t('hello_world') 
# t(:hello_world) is an equivalent 

あなたは、ドット表記を使用している場合、その怠惰と呼ばれるしかし

en: 
    hello_world: "Hello world" 

にrefferと思い

答えて

4

ルックアップ コントローラ/アクション表記法に基づいて翻訳構造をより深く見てください

したがって、この内部のユーザー/インデックスプレート

t('.hello_world') 

は、私はそれはあなたが実際に使用したい時に決定するあなたまでが、だと思うあなたはRails Guides

1

に内在化についての詳細を見つけることができます

pl: 
    users: 
    index: 
     hello_world: "Witaj świecie" 

に解決されます私はあなたのビューの範囲にキーが存在しないいくつかの一般的なコンポーネントを変換する必要がない限り、私はビュー内でできるだけ怠惰なルックアップを使用することを好むでしょう。

私は怠け者のルックアップを好む理由は、それがコードを見クリーナーを作ることで、限り、あなたはi18n宝石がどのように動作するかに精通しているとして、あなたはどんなトラブルキーを検索する場所を知っているを持つべきではありません。

一方、そのようなコンポーネントがある場合、それらは実際には部分的に、cellまたはそれに類するものでなければなりません。

怠惰なものに言及する価値のあるものは、問題のキーを探す場所の範囲を提供できることです。繰り返しますが、t('foo.bar.baz.test_key')t(:test_key, :scope => 'foo.bar.baz')が好きかどうかはあなた次第です。

その他のオプションもありますが、これはすべてrails guideに詳しく記述されていますので、ここでは説明しません。

関連する問題