Anpassen / Lokalisieren von Nachrichten in Symfony2 bestätigen?

8

Wenn Sie @Assert\NotBlank constraint verwenden und das angegebene Feld leer ist, erhalten Sie den Fehler:

  

Dieser Wert sollte nicht leer sein

Ich möchte diese Nachricht anwendungsweit ändern, ohne den Symfony2-Quellcode zu ändern. Wie erreiche ich das?

    
JohnM2 24.01.2012, 14:03
quelle

2 Antworten

20

Das Ausschneiden von Validierungsfehlermeldungen ist ziemlich einfach, kann aber auf den ersten Blick schwierig erscheinen.

Standardgebietsschema

Zunächst sollten Sie das Standardgebietsschema Ihrer Anwendung ändern. In den Versionen 2.0.x ist der korrekte zu ändernde Wert framework.session.default_locale . Als zukünftige Referenz wird ab 2.1.0 framework.default_locale angezeigt. Konsultieren Sie die Dokumente für die korrekte Syntax.

Ein Gebietsschema sollte aus Ihrer Sprache und Region bestehen und wird als language_REGION ( Liste der Sprachen , Länderliste ). Das in Deutschland für Deutsch verwendete Gebietsschema wäre beispielsweise de_DE .

Validierungsnachrichten

Validierungsnachrichten sind in ihren jeweiligen Einschränkungsklassen fest codiert.

Validierungsnachrichten werden übersetzt

Symfony verwendet Twig, um alle Validierungsnachrichten zu rendern. Der Prozess selbst ist kompliziert und fällt nicht in den Rahmen dieser Frage, aber der wichtige Teil ist, dass jede Constraint-Nachricht über einen Übersetzungsfilter gesendet wird, der abhängig vom Gebietsschema des Benutzers ( default_locale standardmäßig) die Nachrichten in das richtige übersetzt Sprache.

Um eine der Übersetzungen zu ändern, kopieren Sie einfach die Validierungsübersetzungsdatei von vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/translations/validators.{lang}.xlf nach app/Resources/translations/validators.{lang}.xlf , wobei {lang} der Sprachteil Ihres Standardgebietsschemas ist.

Nachdem Sie das erste getan haben, ändern Sie einfach die Standardnachrichten in das, was Sie sehen. Wenn die Sprache, für die Sie Unterstützung benötigen, nicht vorhanden ist, kopieren Sie eine Übersetzungsdatei in das gleiche Verzeichnis und ändern Sie stattdessen diese Datei.

Wenn Sie mehr darüber erfahren möchten, wie die Übersetzung in Symfony2 funktioniert, besuchen Sie die offizielle Dokumentation zur Übersetzung .

    
gilden 24.01.2012, 19:47
quelle
3

Zusätzlich zu den Anweisungen von gilden müssen Sie sicherstellen, dass der framework.translator -Block in config/config.yml unkommentiert ist (er ist heutzutage standardmäßig kommentiert). Wenn Sie das nicht tun, werden Sie immer noch mit den ursprünglichen englischen Nachrichten enden.

    
Denvercoder9 25.07.2013 15:33
quelle

Tags und Links