使用I18n和Rails ActiveRecord验证消息

时间:2011-11-14 07:51:15

标签: ruby-on-rails ruby-on-rails-3 validation activerecord internationalization

我正在构建一个应用程序,使用I18n显示不同的语言。此时,验证消息以这种方式显示。

EN

USERNAME CAN'T BE BLANK

ZH-CN

USERNAME 不能为空字符

我想将 USERNAME 属性转换为其他字符串。所以我按照Rails Guide中的说明操作,并在我的语言环境文件中添加了以下行。

en:
  activerecord:
    attributes:
      user:
        username: "User Name"


zh-CN:
  activerecord:
    attributes:
      user:
        username: "用户名"

当我运行human_attribute_name命令时,它可以被翻译。

ruby-1.9.2-p290 :001 > User.human_attribute_name("username")
 => "Username"

但是在验证消息中,它只是将属性名称的所有字符都大写。

CURRENT_PASSWORD 不能为空字符

我错过了什么吗?我该如何解决?

谢谢大家。 :)

2 个答案:

答案 0 :(得分:1)

我想你可能需要

en:
  activerecord:
    errors:
      models: 
        user:
          attributes:
            username: "User Name"

答案 1 :(得分:0)

我犯了一个错误。我添加了一个自定义帮助程序来处理验证消息。有问题的I18n翻译是正确的。我可以使用human_attribute_name来转换到达空间。