WPF Lokalisierung in XAML, was ist die einfache, einfache und elegante Art, dies zu tun?

8

Ich habe eine sehr häufige Frage. Was ist der beste Weg, um eine Lokalisierung in einer WPF-App zu machen? Nun, ich habe viel in SO und Binged gesucht. Aber ich konnte keine Hinweise finden, die wirklich einfach und elegant sind.

Angenommen, ich muss in der Benutzeroberfläche etwa Folgendes anzeigen:

In Englisch: Orgnanization - Beoing

Auf Französisch: Organizzazione - Beoing

%Vor%

Grundsätzlich muss ich den lokalisierten Text dem Organization Label TextBlock zuweisen. Soll ich den Bindestrich von "Organisation -" trennen und auf ein separates Etikett setzen?

Wie mache ich das?

    
123Developer 04.10.2010, 11:10
quelle

5 Antworten

6

Erstellen Sie ein Projekt WpfApplication1

Erstellen Sie einen Ordner 'Lokalisierung'

Fügen Sie eine Ressourcendatei (Strings.resx) in 'localization \' hinzu und fügen Sie die Zeichenfolge 'OrganizationText' und den Wert 'Organization'

hinzu

Beim Kompilieren wird eine Datei namens designer.cs generiert. Leider sind alle Methoden in dieser Datei intern und wir benötigen öffentliche Zugriffsrechte, um String-Referenzen von wpf zu aktivieren. Ersetzen Sie dazu das benutzerdefinierte Tool .resx durch 'PublicResXFileCodeGenerator' (& gt; = vs2008) und bauen Sie es erneut auf. Verwenden Sie diese XAML in MainWindow.xaml:

%Vor%

Um '-' hinzuzufügen, müssen Sie Multibinding verwenden (siehe Eric Bole-Feysot 27.09.2012 10:49

quelle
2

I Binden Sie alle Beschriftungen usw. in meiner Anwendung an ein Objekt, das ich für die Anzeige der verschiedenen Sprachen verwende. Ich speichere alle Zeichenfolgen in einer Datenbank und lade nur die richtigen Zeichenfolgen auf der Grundlage der Sprache, die der Benutzer ausgewählt hat. Dies hat den Vorteil, dass es während der Laufzeit sofort aktualisiert wird. Auf diese Weise muss der Benutzer die Anwendung nicht neu starten, als würden Sie das Fenster "Localizable" machen.

    
Stewbob 06.10.2010 20:46
quelle
1

Sehen Sie sich dieses Whitepaper an. Wenn ich mich richtig erinnere, wird erklärt, wie man das Ressourcenwörterbuch in xaml für die Lokalisierung verwendet -

  

Dieses Projekt enthält ein Whitepaper   mit Codebeispielen, um Windows zu helfen   Präsentationsstiftung (WPF)   Entwickler lokalisieren ihre   Anwendungen. Das Whitepaper vergleicht   LocBaml und klassische Resx Ansätze   mit Vor- und Nachteilen.

     

Ссылка

    
akjoshi 04.10.2010 11:47
quelle
0

Wir verfügen über eine Anwendung, die zur Laufzeit UI-Sprachen wechseln kann und neue UI-Sprachen verwenden kann, indem die entsprechenden Ressourcen in ein bestimmtes Verzeichnis kopiert werden. Die Verwendung einiger kompilierter Resoures hierfür ist viel zu unflexibel in Bezug auf die Verteilung usw. So haben wir unsere Sprachressourcen in einem ResourceDictionary als System: Strings - ein ResourceDictionary in einer separaten XAML-Datei für jede Sprache. Die XAML-Dateien werden in VS mit Inhalt gekennzeichnet und kopiert. Sie können sie als DynamicResources in XAML oder über eine Localizer-Instanz in C # verwenden. Dieses Konzept hat sich in unserer Anwendung als sehr nützlich erwiesen.

    
banzai 04.10.2010 11:42
quelle
0

Ich habe eine komplette Lokalisierungslösung (inkl. Übersetzungseditor) erstellt, die auch XAML-Übersetzungen durch eine Reihe von MarkupExtensions unterstützt. Es verwendet ein Wörterbuch mit allen übersetzten Texten (einschließlich Singular- / Pluralformen), auf die über MarkupExtensions von XAML oder normale Methoden aus anderem Code zugegriffen werden kann. Die MarkupExtensions unterstützen auch das Ändern der Sprache zur Laufzeit und sogar ein Update, wenn die zugrunde liegende Wörterbuchdatei geändert wird.

Weitere Funktionen sind lokalisierte Datums- / Uhrzeit- und Zahlenformatierungen und typografische Helfer.

Ich verwende diese Bibliothek erfolgreich in einigen Anwendungen und plane, sie in Zukunft in weiteren Apps einzusetzen.

Ссылка

    
ygoe 26.05.2014 19:34
quelle

Tags und Links