当我在模型包上出现错误时,我总是看到第一行(英语=未翻译):
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,但似乎没有任何帮助.
有人知道为什么它不起作用?
我认为这可能与其他文件发生冲突(我有两个其他宝石的本地化文件),但暂时删除这些文件并没有改变.
有人知道如何调试这个吗?
解决方法
卫生署!找到了!愚蠢的我!
忘了在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:"
所以,难怪我无法翻译. Aaaaarrrgghh!
解决方案是要么使用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