Ruby on rails 3 如何翻译ActiveRecord完整错误消息?

Ruby on rails 3 如何翻译ActiveRecord完整错误消息?,ruby-on-rails-3,Ruby On Rails 3,如何翻译ActiveRecord完整的错误消息? 例如,我想用西班牙语展示它们 我创建了这个文件config/locales/es.yml: es: errors: attributes: email: blank: "El email no puede estar en blanco" 但是,当提交带有presence:true的表单时,验证总是在消息的开头包含属性: Email El email no puede estar en blanco 第

如何翻译ActiveRecord完整的错误消息? 例如,我想用西班牙语展示它们

我创建了这个文件
config/locales/es.yml

es:
  errors:
    attributes:
      email:
        blank: "El email no puede estar en blanco"
但是,当提交带有
presence:true
的表单时,验证总是在消息的开头包含属性:

Email El email no puede estar en blanco

第一个“Email”字是不必要的。我怎样才能摆脱它呢?

好的,在反复阅读官方i18n指南之后,我在第5.2.2节中发现:

ActiveModel::Errors#full_消息将属性名称前置到 使用将从中查找的分隔符的错误消息 errors.format(默认为“%{attribute}%{message}”)

因此,解决方案是配置格式,如下所示:

es:
  errors:
    format: "%{message}"
    attributes:
      email:
        blank: "El email no puede estar en blanco"

您可以提供通用消息和字段名本身的翻译,而不必在错误消息中包含字段名,也不必为每个字段翻译每条消息。生成的config/locales/en.yml有一个指向更多翻译的链接:使用从那里下载的适当文件,并提供字段名的翻译,如Rails I18n指南中所示:


请参阅此答案以获取示例:

我在使用Desive和Rails时遇到了类似的问题。对我起作用的是:

<% resource.errors.values.each do |message| %>
<%= message[0] %>
<% end %>