Lorsque je soumets un formulaire contenant une erreur, il renvoie un message d'erreur. Comment traduire ces messages d'erreur avec i18n? J'ai déjà la traduction de tous les autres textes dans mes vues, donc je sais comment l18n fonctionne dans Rails. Je reçois maintenant ceci:
2 errors prohibited this user from being saved:
Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank
Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank
Je veux traduire à la fois le titre et les erreurs.
La traduction du titre serait:
nl:
activerecord:
errors:
template:
header:
one: "1 error prohibited this %{model} from being saved"
other: "%{count} errors prohibited this %{model} from being saved"
body: "There were problems with the following fields:"
Pour traduire les messages d'erreur, Rails utilisera l'ordre de traductions suivant:
activerecord.errors.models.user.attributes.name.blank
activerecord.errors.models.user.blank
activerecord.errors.messages.blank
errors.attributes.name.blank
errors.messages.blank
Vous pouvez donc ajouter:
nl:
activerecord:
errors:
models:
user:
attributes:
email:
blank: "foo blank in nl bar baz"
Il est documenté dans le Rails Internationalization (I18n) API Guide , qui pourrait vous donner plus d'informations.
Utilisez simplement le fichier de traduction néerlandais que vous pouvez trouvez ici . Il contient des traductions pour la plupart (sinon la totalité) des messages de validation ActiveRecord.
Copiez le fichier dans config/locales/
dans votre projet.
Méthode alternative
Si vous souhaitez bénéficier de traductions mises à jour, ajoutez ce qui suit à votre Gemfile
au lieu de copier les fichiers de traduction à la main:
gem 'Rails-i18n'
Le guide Rails I18n couvre assez bien cela.
Vous pouvez mettre ce qui suit dans config/locales/nl.yml
pour traduire les attributs:
nl:
activerecord:
models:
user: "User"
attributes:
email: "Email"
Pour les messages d'erreur, ActiveRecord les recherchera dans les espaces de noms suivants:
activerecord.errors.models.[model_name].attributes.[attribute_name]
activerecord.errors.models.[model_name]
activerecord.errors.messages
errors.attributes.[attribute_name]
errors.messages
model
, attribute
et value
sont interpolés et disponibles dans vos traductions, par exemple:
nl:
errors:
messages:
blank: "Please fill the %{model}'s %{attribute}"