Internationalization Rails3i18n:can';“t覆盖”;1禁止保存此数据包的错误:";

Internationalization Rails3i18n:can';“t覆盖”;1禁止保存此数据包的错误:";,internationalization,ruby-on-rails-3,Internationalization,Ruby On Rails 3,当我在模型数据包上出现错误时,我总是看到第一行(英语=未翻译): 找到单个字段错误的翻译 而我的nl.yml nl: activemodel: errors: template: header: one: "1 fout voorkwam dat dit %{model} kon bewaard worden" other: "%{count} fouten voorkwamen dat deze %{mode

当我在模型数据包上出现错误时,我总是看到第一行(英语=未翻译):

找到单个字段错误的翻译

而我的
nl.yml

nl:

  activemodel:
    errors:
      template:
        header:
          one:   "1 fout voorkwam dat dit %{model} kon bewaard worden"
          other: "%{count} fouten voorkwamen dat deze %{model} kon bewaard worden"
        body:    "Er waren problemen met de volgende velden:"

  errors:
    template:
      body: "Controleer alstublieft de volgende velden:"
      header:
        one: "Kon dit {{model}} object niet opslaan: 1 fout."
        other: "Kon dit {{model}} niet opslaan: {{count}} fouten."

  activerecord:
    errors:
      template:
        header:
          one:   "1 fout voorkwam dat dit %{model} kon bewaard worden"
          other: "%{count} fouten voorkwamen dat deze %{model} kon bewaard worden"
        body:    "Er waren problemen met de volgende velden:"
      messages:
        blank: Gelieve het veld %{attribute} in te vullen!
    models:
      survey: test
      packet: woordenlijst
      user: gebruiker
    attributes:
      survey:
        name: Naam
如果你已经看过很多东西,在rails-i18n上,下载了他们的nl.yml,但似乎没有任何帮助。 有人知道它为什么不起作用吗

我认为这可能与其他文件发生冲突(我还有另外两个gem的本地化文件),但暂时删除这些文件并没有改变任何事情

有人知道如何调试这个吗


我是否可以删除默认的翻译,以便得到找不到的翻译错误?

Doh!找到了!愚蠢的我

实际上,在rails 3中,您不再为使用
错误消息,因此在我的框架视图代码中有以下代码:

 = form_for @packet do |f|
   -if @packet.errors.any?
     #errorExplanation
       %h2= "#{pluralize(@packet.errors.count, "error")} prohibited this packet from being saved:"
所以,难怪我不能翻译。aaaarrrgghh

解决方案是要么使用插件(它提供与rails 2.3相同的功能),要么相应地调整视图,就像我所做的那样:

  -if @packet.errors.any?
    #errorExplanation
      %h2
        - if @packet.errors.count == 1
          = t 'activerecord.errors.template.header.one', :model => @packet.class.human_name
        - else
          = t 'activerecord.errors.template.header.other', :model => @packet.class.human_name, :count => @packet.errors.count
      %b= t 'activerecord.errors.template.body'
      %ul
        - @packet.errors.full_messages.each do |msg|
          %li= msg
但是,由于我们需要对每个可能有错误的视图执行此操作,因此应该将其放入部分视图,或者使用上面提到的插件:)

  -if @packet.errors.any?
    #errorExplanation
      %h2
        - if @packet.errors.count == 1
          = t 'activerecord.errors.template.header.one', :model => @packet.class.human_name
        - else
          = t 'activerecord.errors.template.header.other', :model => @packet.class.human_name, :count => @packet.errors.count
      %b= t 'activerecord.errors.template.body'
      %ul
        - @packet.errors.full_messages.each do |msg|
          %li= msg