0

ローカリゼーション ファイルのルックアップが失敗した場合、デフォルトの I18n 設定をルックアップに使用できますか?

Rails の一部として、 http: //guides.rubyonrails.org/i18n.html#how-i18n-in-ruby-on-rails-works

このソリューションの一環として、Rails フレームワークのすべての静的文字列 (Active Record 検証メッセージ、時刻と日付の形式など) は国際化されているため、Rails アプリケーションのローカライズはこれらのデフォルトを「オーバーライド」することを意味します。

そのため、独自のローカリゼーション ファイルを追加すると、ActiveRecord のデフォルトの Rails エラー テキストが失われます。たとえば、モデル内で次のコードが与えられた場合

validates_length_of :name, :maximum => 50

これが失敗すると、私は得る

translation missing: en-gb, activerecord, errors, models, model_name, attributes, name, too_long

2 つの可能な修正:

  1. :messageすべてのvalidates_*メソッドに追加しますか? 例えば

    validates_length_of :name, :maximum => 50, :message => "is too long (maximum is %{count} characters)"
    

    これに関する問題は、かなりの数の呼び出しがあり、新しいコードを追加する人は、テキストを追加することを覚えておく必要があることです。(そして、変数置換がここで機能するとは思いません!)

  2. Railsがすべてのロケール構成ファイルで使用するデフォルトのセットを追加します。

    errors:
      messages:
        less_than: must be less than %{count}
    

    ここでの問題は、すべてのロケール ファイルに同じテキストを追加する必要があることです (これらを翻訳することに興味がないため)。これはそれほど大きな問題ではありませんが、奇妙に思えます。

もしあれば、どのルートが推奨されますか? 他のアイデアや提案はありますか?

I18n が使用するデフォルト/フォールバック ファイルはありませんか? つまり、ルックアップがロケール ファイルに見つからない場合は?

(レール 2.3.5 を使用)

4

1 に答える 1

2

プロジェクトにrails-i18n gem を含めて、利用可能なすべてのロケールで翻訳できるようにするのが最善の方法だと思います。次に、アプリケーションの翻訳ファイルで、必要なものをオーバーライドします。

注 : gem で定義されているものと同じロケールをプロジェクトで使用する必要があるため、この例en-GBではen-gb.

于 2013-02-26T11:32:50.543 に答える