Rails2.3でerror_message_onのi18n対応

なぜかRails2.3のerror_message_onはi18n対応されてないのでしてみました.

対応前 before

error_message_on(:user, :name)
=> "を入力してください。"

対応後 after

error_message_on(:user, :name)
=> "名前を入力してください。"

コード

プラグインなり、初期化時なり適当な(rails起動時に一度だけ実行する)ところで読み込ませてください.

module ActionView
  module Helpers
    module ActiveRecordHelper
      
      # エラーメッセージの翻訳
      alias_method :error_message_on_without_translate, :error_message_on
      def error_message_on(object, method, *args )
        obj = instance_variable_get("@#{object}")
        options = args.extract_options!
        options.reverse_merge!(:prepend_text => obj.class.human_attribute_name(method.to_s))
        
        if args.empty?
          args = options
        else  
          args.push options
        end
        error_message_on_without_translate(object, method, args)
      end
    end
  end
end