Lokalisierung von MVVM-basierten WPF-Anwendungen

8

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?

    
bitbonk 25.08.2009, 12:56
quelle

6 Antworten

9

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.

    
Martin Liversage 25.08.2009, 13:00
quelle
9

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.

    
Thomas Levesque 25.08.2009 23:56
quelle
6

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 :

darauf zugreifen %Vor%

Der Namespace props sollte sich auf den Properties -Namespace Ihrer Assembly beziehen:

%Vor%     
Bojan Resnik 25.08.2009 13:15
quelle
1

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.

    
mcohen75 11.06.2010 02:47
quelle
1

Wenn Sie sich fast für dieses Thema interessieren, können Sie sich meine Bibliothek ansehen, die ich auf Codeplex entwickle.

LocalizationLibrary: Ссылка

    
Nicola Gallo 07.12.2010 19:57
quelle
0

Hier sind ein paar Artikel, die von Interesse sein könnten:

Lokalisierung von WPF-Anwendungen mit Locbaml

WPF Runtime Localization

Einfache WPF-Lokalisierung

    
Magnus Johansson 25.08.2009 15:12
quelle

Tags und Links