ActiveRecord 错误,如何找到更改消息的语言环境路径?

ActiveRecord errors, how do I find out the locale path to change the messages?

我知道您可以像这样在语言环境中更改 ActiveRecord 错误消息:

en:
  activerecord:
    errors:
      models:
        user:
          attributes:
            email:
              blank: "is required"

但那是一个非常具体的树——我怎么知道 ActiveRecord 正在寻找什么?有没有办法检查错误以查看 ActiveRecord 正在搜索的路径?或者有没有办法生成一个包含所有消息的完整 en.yml

在Rails控制台中,您可以输入:

I18n.t 'errors'

这将 return 所有当前错误消息的散列。您可以通过语言环境 .yml 文件

调整该散列

ActiveModel::Error class(如果你调用 record.errors 会得到什么)有一个 details 属性,它是属性及其错误的散列,包括错误键。

foo.valid?
=> false
foo.errors.details
=> {:user=>[{:error=>:blank}]}

ActiveModel source 有一个 en.yml,它将为您提供规范的键集。 rails-i18n gem 包括许多标准键的翻译,但存在一定的差距(即,一些语言环境是完整的,一些不是)。

如@Mirror318 所说,您可以通过 运行 I18n.t 'errors' 查看当前语言环境的一组错误消息翻译。如果您当前的语言环境是 en.yml,那将与规范列表相同;否则它是可用的翻译消息集。