1

私はRailsアプリをローカライズしていますが、なぜ人々はこれを行うのだろうか:

# de.yml
helpers:
  select:
    prompt: "Bitte wählen..."
  submit:
    create: "Erstellen"
    submit: "Speichern"
    update: "Aktualisieren"

# some_view.html.erb
f.submit t('helpers.submit.update')

これが標準的なやり方のようです。

しかし、代わりにこれを行うだけではどうですか:

# de.yml
prompt: "Bitte wählen..."
create: "Erstellen"
submit: "Speichern"
update: "Aktualisieren"

# some_view.html.erb
f.submit t('update')

とにかくYAMLファイルの名前空間のポイントは何ですか? 同じパス ( helpers.submit.update) を常に繰り返す必要があるだけです。

理解できません...

誰か助けてくれませんか?

4

2 に答える 2

2

理由は非常に単純です。通常のrailsアプリでは、数百または数千の異なる値が存在する可能性があります。これらの値は同じ名前である可能性がありますが、微妙な違いがあります。あなたが言っているように、あなたがトップレベルだけに行った場合、それらは簡単に曖昧になります:あなたはどのラベルがどのビュー/モデルに属しているのかわかりません。

これを想像してみてください:

name_missing: "you must enter a name"

YAMLファイルでそれを確認した場合、それが製品名、ユーザー名、またはその他の名前に使用されることを意図しているかどうかはわかりません。したがって、コードを検索して、それがどこで使用されているかを確認する必要があります。

一方、次のようなものです。

product:
  validation_errors:
    name_missing: "you must enter a name"

明確です。

巨大なフィールドツリーを見るのは恣意的に思えるかもしれませんが、数千または数万のラベルとコピースニペットを処理する場合、保守性にとって組織化が重要です。

于 2013-01-29T19:04:44.840 に答える
2

日付とアクティブなレコード メッセージ、gem、プラグインのローカライズのための名前空間の必要性を脇に置いておけば....独自の i18n データの名前空間には多くの利点があります。特に、アプリケーションが複雑になったり、時間の経過とともに進化したりする場合:

  • たとえば、新しい言語を追加する場合など、メッセージの作成に画像の作成と同じ単語が使用されない場合など、特別な場合にキーの翻訳を変更できます。
  • create名前空間付きのファイルは、翻訳と保守がはるかに簡単です (たとえば、すべての の出現箇所を他の言語で翻訳できるかどうかを確認するためにコードをチェックする必要はありませんerstellen)。
    外部の翻訳者を雇う場合、この点はさらに重要になります。
  • プロジェクトが大きくなると、大量のキーをナビゲートし、変更が必要なキーを見つけるのがより簡単になります。

一方、プログラマーだけが yaml ファイルに触れ、プロジェクトが大きくない場合は、フラット ファイルを使用することに同意します。このシナリオでは、 orの
ような偽の名前空間でさえ、 /などを使用してテキストファイル内で見つけやすいという利点があります。messages_createpictures_creategrepack

于 2013-01-29T19:25:19.050 に答える