i18n:特定型号的错误消息本地化

fl0*_*00r 10 ruby localization ruby-on-rails internationalization

我可以为每个验证本地化错误消息,但是如何为特定模型创建错误.

普通的语言环境如下所示:

en:
  mongoid:
    errors:
      messages:
        taken: "It is already taken"
Run Code Online (Sandbox Code Playgroud)

但我想改变user模型的消息:

en:
  mongoid:
    errors:
      messages:
        taken: "It is already taken"
        user:
          taken: "It is already taken. %{link_to 'Remember password', reset_password_path'}"
Run Code Online (Sandbox Code Playgroud)

Har*_*tty 30

试试这个:

en:
  mongoid:
    errors:
      messages:
        taken: "It is already taken"
      models:
        user:
          attributes:
            login:
              taken: "It is already taken. %{link}"
Run Code Online (Sandbox Code Playgroud)

参考:

ActiveRecord代码注释

PS: 本地化字符串应使用插值变量进行动态替换.

例如:在对象login字段 上添加错误user:

user.errors.add(:login, :taken, :link => "foo")
Run Code Online (Sandbox Code Playgroud)