当我在模型数据包上遇到错误时,我总是看到第一行(英语=未翻译):
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 的本地化文件),但暂时删除这些文件并没有改变任何事情。
有人知道如何调试这个吗?
我可以以某种方式删除默认翻译,以便我收到找不到翻译的错误吗?
哎哟!找到了!愚蠢的我!
忘记了在 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:"
所以,难怪我无法翻译它。啊啊啊!!
解决方案是使用动态形式 http://github.com/rails/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
但是,由于我们需要对每个可能有错误的视图执行此操作,因此应该将其放入部分视图中,或者使用上面提到的插件:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)