12
votes

Traduire le message de validation d'attribut d'attribut Netd

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é Identity code> et contient un attribut appelé identité code> Le modèle est imbriqué dans un autre avec un has_many code> relation. P>

Un message d'erreur typique est actuellement renvoyé comme celui-ci p> xxx pré>

i Voulez-vous traduire l'attribut (par défaut identité identité code>) dans quelque chose d'autre. p>

J'ai p> xxx pré>

si je le fais , Je reçois une erreur p> xxx pré>

J'ai essayé d'ajouter des données de pluralisation à cela en modifiant ce qui précède à p> xxx pré>

ceci Modifie l'erreur sur P>

I18n::InvalidPluralizationData (translation data {:identity=>{:one=>"one", :other=>"other"}} can not be used with :count => 1):


0 commentaires

3 Réponses :


-1
votes

Essayez ceci:

en:
  activerecord:
    errors:
      models:
        identity:
          attributes:
            identity:
              blank: 'Your new error message here'


1 commentaires

Cela traduit le message d'erreur OK, mais je souhaite traduire le nom de l'attribut.



-1
votes

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"


3 commentaires

es-tu sûr? Je reçois ne peut pas charger les traductions de ...: # . Je ne pense pas que c'est valide Yaml.


ne fonctionne pas pour moi. J'ai essayé dans les rails console i18n.t 'aciverecord.errors.atributes.identity.entitity' 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 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é . Je vais fournir plus de détails dans une réponse.



13
votes

Ajout de la sortie de débogage au Human_Attribute_Name code> La méthode révèle ce que le chemin I18N devrait être.

L'exemple a un modèle code> utilisateur code> avec un 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>.

J'ai regardé dans 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


0 commentaires