Fehlermeldungen in Umbraco-Formularen lokalisieren
Eigene Formulare kann man in Umbraco mit Macro-Partials und einem SurfaceController implementieren. Das funktioniert so wie dokumentiert, bis auf eine „Kleinigkeit”.
Wenn man mehrere Sprachen unterstützt, dann steht man vor dem Problem, die möglichen Fehlermeldungen zu übersetzen. Folgt man dem Microsoft MVC Standard, dann benutzt man DataAnnotations im Model, wie z. B. [Required].
Die Lokalisierung erfolgt über statische Resource-Dateien und das Registrieren einiger Services in der Startup.cs.
Umbraco stellt für derartige Lokalisierungen ein Wörterbuch bereit, dass im Bereich Übersetzung gepflegt werden kann. Allerdings sind standardmäßig keine DataAnnotations vorhanden. Diese kann man jedoch mit dem Package DictionaryLocalizer hinzufügen, das ich für diesen Zweck erstellt habe und auf dieser Website verwende. Das Packet ist Open-Source und auf GitHub zu finden: Our.Umbraco.DictionaryLocalizerPackage
Nachfolgen sehen Sie eine Beispiel für ein POCO mit DataAnnotations. Das Präfix # bedeutet in diesem Zusammenhang, wie in anderen Bereichen von Umbraco auch, dass das Schlüsselwort (ohne Präfix) im Wörterbuch (Bereich: Übersetzung) für die aktuelle Sprache gesucht wird.
public class MyModel { [Dislpay(Name = "#nameLabel")] [Required(ErrorMessage = "#nameRequired")] public string Name { get; set; } [Dislpay(Name = "#emailLabel")] [EmailAddress(ErrorMessage = "#emailInvalid")] [Required(ErrorMessage = "#emailRequired")] public string Email { get; set; } // ... }