エラーメッセージの国際化(2)
前回は、サンプルアプリケーション 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
本日はここまで。次回も、エラーメッセージの国際化を続けます。
(2009/01/10)
記事に関するご質問は、 hermes@oiax.jp までメールでお送りください。
ウェブサイト構築の発注先を検討されているお客様は、ご相談フォームをご利用ください。
- はじめに
- rake rails:update (2008/12/15)
- クッキーストア (2008/12/16)
- ページネーション (2008/12/17)
- 機能テスト冒頭部分の修正、等 (2008/12/19)
- blog_entries コントローラの修正 (2008/12/20)
- シングルトン・リソース (2008/12/21)
- 一気に機能テストを全部通す (2008/12/21)
- 統合テストと rak (2008/12/22)
- 国際化(i18n)の第一歩 (2008/12/26)
- Cookie を使ったロケールの切り替え (2009/01/04)
- ActiveRecord モデルのフィールド名の国際化 (2009/01/08)
- エラーメッセージの国際化(1) (2009/01/09)
- エラーメッセージの国際化(2) (2009/01/10)
- エラーメッセージの国際化(3) (2009/01/17)
- エラーメッセージの国際化(4) (2009/01/24)

