モデルに次の検証があります。
validates_inclusion_of :whatever, :in => [true, false], :message => I18n.t('please_select_whatever')
翻訳はプロダクションモードでは機能しないようです。すべての言語で、表示されるのは常に英語の翻訳です(おそらく、アプリでデフォルトのロケールとして英語を設定しているためです...?)。
したがって、モデルが一度だけ読み込まれるため、モデルの検証を変換できないと想定しています。サーバーが起動されたとき(そして、デフォルトのロケールが適用されます)。
私は正しいですか?はいの場合、どのようにこの問題を解決しますか?
ご協力いただきありがとうございます!
解決策は、モデルにcustomメッセージキーを含めないことです...
:message => I18n.t('activerecord.errors.models.my_model.attributes.whatever.please_select_whatever')
次に、モデルはデフォルトのメッセージキーを適用します。たとえば、「validates_inclusion_of」の場合は「:inclusion」です。
...そしてconfig/locales/en.ymlには次のものが必要です:
en:
activerecord:
errors:
models:
my_model:
attributes:
whatever:
inclusion: "Please select whatever." # see default key: "inclusion"
参考までに、それぞれのRailsガイド:
http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models
記号を使用して、翻訳を指定できます。
validates_inclusion_of :whatever, :in => [true, false], :message => :select_whatever
そして、それは特定の範囲で翻訳されます。詳細は I18nガイド を参照してください。
OK、iain
の回答は機能しますが、どこに:select_whatever
。
validates_inclusion_of :whatever, :in => [true, false], :message => :select_whatever
OK en.yml
は次のようになります。
en:
errors:
messages:
select_whatever: "error!!"