Was wäre ein guter Ansatz, um eine MVVM-basierte WPF-Allizierung zu lokalisieren, die ihre Sprache zur Laufzeit ändern kann? Natürlich könnte ich eine String-Eigenschaft im ViewModel für jeden einzelnen String erstellen, der irgendwo in der View angezeigt wird, aber das scheint mir ziemlich mühsam. Gibt es dafür einen gemeinsamen Ansatz / Best Practice?
WPF hat viel Unterstützung für die Lokalisierung . Vielleicht können Sie das nutzen? Leider denke ich, dass das Ändern der Benutzeroberflächensprache zur Laufzeit etwas schwierig ist und Sie wahrscheinlich ein eigenes Schema entwickeln müssen.
Da das View-Modell UI-agnostisch ist, glaube ich nicht, dass das Speichern von User-Interface-Strings im View-Modell eine gute Lösung ist. Diese gehören zur Ansicht.
Hier ist ein ausgezeichneter Artikel über WPF-Lokalisierung . Es behandelt die Microsoft-unterstützte Lokalisierungstechnik und einige alternative
Ich würde nicht die "offizielle" Lösung für die Lokalisierung empfehlen ... es ist wirklich ein Schmerz zu benutzen, es modifiziert XAML (fügt jedem Element, das lokalisiert werden kann, x: Uid-Attribute hinzu), und es gibt keine guten Werkzeuge von MS, um es zu einer einfachen Lösung zu machen. Eine gute alte Resx-Lokalisierung ist viel einfacher zu verwenden und lässt sich mit ein paar Tricks (nämlich Markup-Erweiterungen und / oder angehängten Eigenschaften) recht gut mit WPF integrieren. Außerdem können Sie die Oberflächensprache zur Laufzeit dank des Bindungssystems leicht ändern.
Anstatt in Ihrem Ansichtsmodell Benutzeroberflächenzeichenfolgen zu verwenden, können Sie sie in den Ressourcen der Assembly speichern und direkt von XAML aus mit x:Static
:
Der Namespace props
sollte sich auf den Properties
-Namespace Ihrer Assembly beziehen:
Sie können eine benutzerdefinierte Markup-Erweiterung verwenden, um lokalisierte Werte zu suchen und sie zu aktualisieren, wenn sich die UI-Kultur ändert.
Hier ist ein Beispiel, wie das funktionieren könnte:
%Vor%Dieses Beispiel stammt aus der ausgezeichneten WPF Localization Guidance von Rick Strahl und Michele Leroux Bustamante hier: Ссылка . Laden Sie den Leitfaden von dieser Website herunter, auf dem diese Technik ausführlich im Dokument und mit einer Beispielanwendung beschrieben wird.
Ein weiterer netter Vorteil dieses Ansatzes ist, dass er im Designer funktioniert.
Wenn Sie sich fast für dieses Thema interessieren, können Sie sich meine Bibliothek ansehen, die ich auf Codeplex entwickle.
LocalizationLibrary: Ссылка
Hier sind ein paar Artikel, die von Interesse sein könnten:
Tags und Links wpf mvvm localization