icon 《基础 Ruby on Rails》的示例程序asagao与Rails2.2相适应

错误信息的国际化(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)