代码之家  ›  专栏  ›  技术社区  ›  nathanvda

rails3 i18n:无法覆盖“1个错误禁止保存此数据包:”

  •  8
  • nathanvda  · 技术社区  · 14 年前

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

    1 error prohibited this packet from being saved:
    Naam Gelieve het veld Naam in te vullen!
    

    找到单个字段错误的翻译!

    当我在我的 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的本地化文件),但暂时删除这些文件并没有改变什么。

    有人知道如何调试这个吗?

    我能以某种方式删除默认的翻译吗?这样我就得到了错误,哪一个翻译找不到?

    1 回复  |  直到 14 年前
        1
  •  12
  •   nathanvda    14 年前

    呸!找到了!愚蠢的我!

    忘了在3号轨道你不再使用 error_messages_for ,因此在我的脚手架视图代码中有以下代码:

     = form_for @packet do |f|
       -if @packet.errors.any?
         #errorExplanation
           %h2= "#{pluralize(@packet.errors.count, "error")} prohibited this packet from being saved:"
    

    所以,难怪我不能翻译。啊!啊!!

    解决方案是使用 dynamic-form 插件(它提供与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
    

    但是,由于我们需要为每个可能有错误的视图执行此操作,因此应该将其放入一个部分,或者使用上面提到的插件:)