J'ai un attribut imbriqué sur lequel j'effectue une validation de présence. J'essaie sans succès de fournir des traductions du nom d'attribut renvoyé dans le texte du message d'erreur complet.
Le modèle est appelé Un message d'erreur typique est actuellement renvoyé comme celui-ci p> i Voulez-vous traduire l'attribut (par défaut J'ai p> si je le fais , Je reçois une erreur p> J'ai essayé d'ajouter des données de pluralisation à cela en modifiant ce qui précède à p> ceci Modifie l'erreur sur P> Identity code> et contient un attribut appelé
identité code> Le modèle est imbriqué dans un autre avec un
has_many code> relation. P>
identité identité code>) dans quelque chose d'autre. p>
I18n::InvalidPluralizationData (translation data {:identity=>{:one=>"one", :other=>"other"}} can not be used with :count => 1):
3 Réponses :
Essayez ceci:
en: activerecord: errors: models: identity: attributes: identity: blank: 'Your new error message here'
Cela traduit le message d'erreur OK, mais je souhaite traduire le nom de l'attribut.
Vous pouvez simplement fournir des valeurs traduites devant les noms d'attribut DB.
en: activerecord: attributes: identity: # this is model name identity: "translated attribute name"
es-tu sûr? Je reçois ne peut pas charger les traductions de ...: #
ne fonctionne pas pour moi. J'ai essayé dans les rails console i18n.t 'aciverecord.errors.atributes.identity.entitity' code> et qui renvoie la valeur attendue (donc mon YML est correct) mais l'attribut ne traduit pas dans le message d'erreur :(
ActiveRecord.Attributes.Ididity.entitity.Identity code> ne fonctionne pas non plus. Après avoir piraté le code d'activemodel pour voir ce qu'il fait, j'ai découvert que le YML requis est
aciverecord.attributes.Vidibutes.entities.Identité code>. Je vais fournir plus de détails dans une réponse.
Ajout de la sortie de débogage au L'exemple a un modèle code> utilisateur code> avec un J'ai regardé dans Human_Attribute_Name code> La méthode révèle ce que le chemin I18N devrait être.
has_many: identités code> relation. L'attribut souhaité est
identité code>, un attribut du modèle code> identité code>, dont le modèle
utilisateur code> a beaucoup em>.
gems / activemodel-4.0.1 / lib / actif_model code>, fichier
traduction.rb code>. La méthode
human_attribute_name code> lève le chemin suivant: p>
activerecord.attributes.user/identities.identity
activerecord.attributes.identities.identity
attributes.identity