Lorsque vous utilisez Cette valeur ne doit pas être vide p>
blockQuote>
Je voudrais changer ce message à l'échelle de l'application, sans changer de code source Symfony2. Comment accomplir cela? P> @assert \ nodblank code> contrainte et que le champ donné est vide, vous obtenez l'erreur: p>
3 Réponses :
Les messages d'erreur de validation de la validation sont assez simples, mais peuvent sembler difficiles au début. P>
local par défaut fort> p>
Tout d'abord, vous devriez changer la localisation par défaut de votre application. Dans Versions 2.0.x, la valeur correcte à modifier est Un local doit être composé de votre langue et de votre région et est définie comme Messages de validation forts> p>
Les messages de validation sont codés dur dans leur CLASSES DE CONTRAINTES . p>
traduire des messages de validation strong> p>
symfony utilise la brindille pour rendre tous les messages de validation. Le processus lui-même est compliqué et tombe hors de la portée de cette question, mais la partie importante est que chaque message de contrainte est envoyé via un filtre de traduction, qui dépendant de la locale de l'utilisateur ( Pour changer les traductions, copiez simplement le fichier de traduction de validation de Après avoir fait le premier, modifiez simplement les messages par défaut à ce que vous voyez plus d'ajustement. Si la langue que vous avez besoin de prise en charge n'existe pas, copiez un fichier de traduction dans le même répertoire et modifiez à la place de ce fichier. P>
Pour en savoir plus sur la façon dont les travaux de traduction dans Symfony2, visitez la documentation officielle sur traduction . p> framework.session.default_locale code>. Pour une référence future, à partir de 2.1.0, ce sera cadre.default_locale code>. Consultez Docs pour une syntaxe correcte. P>
language_region code> ( liste des langues , Liste des pays ). Les paramètres régionaux utilisés en Allemagne pour allemand seraient de_de code> par exemple. P>
default_locale code> par défaut) traduit. les messages à la langue appropriée. P>
fournisseur / symfony / src / symfony / paquet / frameworkbundle / ressources / traductions / validateurs. {lang} .xlf code> to à App / Ressources / Traductions / Validateurs. {lang} .xlf code> où {lang} code> est la partie linguistique de votre paramètre local par défaut. P>
AS de Symphony 2.1 Les fichiers sont maintenant dans Vendeur / Symfony / SRC / Symfony / Composant / Validator / Ressources / Validateurs. {Lang} .xlf code>
Juste pour mettre à jour cette réponse au comportement des versions de Symfony plus récentes: dans Symfony 2.5 B>, je n'ai pas eu à copier les fichiers pour activer la traduction du formulaire et des messages de rétroaction de validation. J'ai juste dû ... a) Définir la locale standard souhaitée dans paramètres.yml ( locale: xy code>) b) activer le service de traduction dans config.yml (commenté par défaut et être mis à jour avec Votre langage de secours recherché - dans mon cas "fr") Framework: Traducteur: {Fallback: "fr"} code> c) Assurez-vous que les paramètres paramètres par défaut dans config.yml sont définis sur LOCALE définis à partir de paramètres.yml : Cadre: Default_locale: "% locale%" code>
En outre aux instructions de Gilden, vous devez vous assurer que le bloc structure.translator code> dans config / config.yml code> est non motivé (il est commenté par défaut de par défaut). Si vous ne faites pas cela, vous vous retrouverez toujours avec les messages anglais originaux. p>
Si quelqu'un a des doutes en 2021, voici tout ce que je devais faire pour basculer "Erreur" (fre) Message de contrainte à "Erreur" (FR): P>
Aller à votre Modifiez-le en remplaçant "fr" à "fr" (ou votre langue): Testez-le sur votre localhost:
Remarque: P>
config / packages / traduction.yaml code> fichier p>
li>
p>
li>
p>
li>
ol>