【问题标题】:rails3 I18n: can't override "1 error prohibited this packet from being saved:"rails3 I18n:无法覆盖“1 错误禁止保存此数据包:”
【发布时间】:2011-04-18 20:13:43
【问题描述】:

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

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

有人知道如何调试吗?

我可以以某种方式删除默认翻译,以便我得到找不到翻译的错误吗?

【问题讨论】:

    标签: internationalization ruby-on-rails-3


    【解决方案1】:

    哇!找到了!骗我!

    忘记了在 Rails 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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 2014-05-19
      • 2020-01-07
      相关资源
      最近更新 更多