エラーメッセージの国際化(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
本日はここまで。次回も、エラーメッセージの国際化を続けます。
