如何翻译ActiveRecord的完整错误消息?

时间:2012-02-08 21:10:10

标签: 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

不需要第一个“电子邮件”字样。我怎么能摆脱它?

3 个答案:

答案 0 :(得分:7)

好的,经过多次阅读并重新阅读官方的i18n指南后,我在第5.2.2节中发现了这一点:

  

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

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

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

答案 1 :(得分:2)

您可以为通用消息和字段名称本身提供翻译,而不是在错误消息中包含字段名称并且必须为每个字段翻译每条消息。生成的config / locales / en.yml有一个指向更多翻译的链接:https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale使用从那里下载的相应文件并提供字段名称的翻译,如Rails I18n指南中所示:http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

请参阅此答案以获取示例:https://stackoverflow.com/a/2859275/18038

答案 2 :(得分:0)

我在使用Devise和Rails时遇到类似的问题。对我有用的是:

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