RailsでActiveRecordのValidationによって生成されるエラーメッセージを翻訳するためのメモ。
方法その1:I18nを使う
所定のYAMLに翻訳部分を記述しておく方法。現在はこれが一番スマートなようだ。
(フィールド名とその後のメッセージの間に半角スペースが入ってしまう?)
参考:
Rails 2.2.2でエラーメッセージを日本語化する。|WEBデザイン Tips
Rails 2.2 の ActiveRecord::Validations#add のソースコードを読む - Ruby on Rails 研究 - Ruby on Rails with OIAX
方法その2:GetTextを使う
ActiveRecord::Errorsのdefault_error_messagesをゴリゴリ書き換える方法。
例えば、基本となるModelを作ってその中でメッセージをセットし、他のモデルはそれを継承する方法でもよいと思う。
class BaseModel < ActiveRecord::Baseただし最新のRailsではDeprecation::warnの対象?
ActiveRecord::Errors.default_error_messages[:invalid] = _("がおかしいよ!")
ActiveRecord::Errors.default_error_messages[:empty] = _("を入力してね!")
・
・
end
個々のエラー内容の前に出てくる文(デフォルトでは「<n> errors prohibited this object from being saved」と「There were problems with the following fields:」)は、Module: ActionView::Helpers::ActiveRecordHelperにあるとおり、:header_messageと:messageを指定することにより変えられる。
(2009/10/14追記:Ruby on RailsでRuby-GetText-Packageを使う (Rails-2.3.2以降) - よたらぼ 保管庫に書いてある、「エラーメッセージのタイトル部分をカスタマイズ」のやり方なら、個々のformごとに:header_messageと:messageを指定しなくてすむようだ。)
参考:
エラーメッセージからフィールド名を取り除く
ActiveRecord::Errorsあたりのローカライズ - ハードコアシステム開発
validationのエラーメッセージ(error_messages_for)の日本語化 - Slow Dance
(2009/10/14追加:最新のRails/GetTextについての説明になっていた)
Ruby on RailsでRuby-GetText-Packageを使う (Rails-2.3.2以降) - よたらぼ 保管庫
0 件のコメント:
コメントを投稿