エラーメッセージの国際化(2)
2009/01/10
前回は、サンプルアプリケーション asagao のデフォルトのエラーメッセージを国際化しました。
今回は、モデル・フィールド単位でエラーメッセージを国際化します。
member.rb
に次のような記述があります。
validates_uniqueness_of :member_number, :message => 'が他の方と重なっています。', :if => Proc.new {|member| positive_integer?(member.member_number) } (省略) validates_uniqueness_of :login_name, :message => 'が他の方と重なっています。'
validates_uniqueness_of
のデフォルトのメッセージは t('activerecord.errors.messages.taken')
です。
私たちの翻訳ファイルでは「はすでに使用されています。」になっています。
Member
モデルについてのみ validates_uniqueness_of
のエラーメッセージを「が他の方と重なっています。」に変更するには、config/activerecord_ja.yml
に次のように記述します。
(省略) errors: messages: (省略) models: member: taken: が他の方と重なっています。 attributes: # Overrides model and default messages.
これで member.rb
の先ほどの部分は次のように簡単になります。
validates_uniqueness_of :member_number, :if => Proc.new {|member| positive_integer?(member.member_number) } (省略) validates_uniqueness_of :login_name
続いて、フィールド単位でエラーメッセージを変更します。
member.rb
に次のような記述があります。
validates_confirmation_of :password, :message => 'が確認用パスワードと一致しません。'
このメッセージを翻訳ファイルに移動するには、config/activerecord_ja.yml
に次のように記述します。
(省略) errors: messages: (省略) models: member: taken: が他の方と重なっています。 attributes: password: confirmation: が確認用パスワードと一致しません。
先ほどの記述は次のように短くなります。
validates_confirmation_of :password
本日はここまで。次回も、エラーメッセージの国際化を続けます。