When i get errors on model Packet, i always see the first (english=not translated) line:
1 error prohibited this packet from being saved:
Naam Gelieve het veld Naam in te vullen!
The translations for the error for the single field is found!
While i have the following in my 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
If have been looking at a lot of stuff, at the rails-i18n, downloaded their nl.yml but nothing seems to help. Does anybody have a clue why it does not work?
I thought it was a possible conflict with other files (i have localisation files for two other gems), but removing those temporarily did not change a thing.
Does anybody have a clue how to debug this?
Can i somehow remove the default translation, so that i get the error which translation would not be found?
Doh! Found it! Stupid me!
In forgot that in rails 3 you no longer use error_messages_for
, so instead in my scaffolded view code there was the following code:
= form_for @packet do |f|
-if @packet.errors.any?
#errorExplanation
%h2= "#{pluralize(@packet.errors.count, "error")} prohibited this packet from being saved:"
So, no wonder i could not translate that. Aaaaarrrgghh!!
The solution is either to use the dynamic-form plugin (which gives you the same functionality as in rails 2.3), or adapt the view accordingly, as i did:
-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
But, as we need to do this for each view possibly having errors, this should go into a partial, or use the plugin mentioned above :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With