Localizing Windows Phone 7 App
-
25-09-2019 - |
Frage
Ich bin ein wenig Mühe, immer lokalisierten Ressourcen-Dateien zu arbeiten auf Windows Phone 7. Hier ist, was ich tue:
- Erstellen Sie eine Ressource-Datei, sagen Sie "Strings.resx" (Build Action: Compile)
- einen Schlüssel erstellen, sagen Sie „TestKey“ mit einem Standardwert von leeren String
- Fügen Sie eine Englisch-Ressource-Datei in dem gleichen Ordner mit einem Wert von „einigen englischen Zeichenfolge“: Strings.en-US.resx (Build Action: Eingebettete Ressource)
- Fügen Sie eine japanische Ressource-Datei in dem gleichen Ordner mit einem Wert von "some Japanese string": strings.ja-jp.resx (Build Action: Eingebettete Ressource)
In meinem PC Silverlight, WPF Apps, die gut funktioniert, wenn ich die Thread.CurrentThread.CurrentCulture ändern. Aber im Telefon scheine ich immer den Wert zu bekommen, dass die in der Strings.resx Datei -. Eine leere Zeichenfolge
Ich habe versucht, den Designer generierten Code und die Ressourcen-Manager von Hand verdrahtet und es scheint keine Rolle zu. Hier ist mein Code:
Type t = typeof(Strings);
_resourceManager = new ResourceManager(
t.Namespace + "." + t.Name,
t.Assembly);
_resourceManager.GetString("TestKey");
Sag mir, lokalisierten Ressourcen auf dem Handy unterstützt werden ...;> Was mache ich falsch? Dank!
Aktualisieren : Danke Olivier für den Link weiterzuleiten. Ich sah, dass als gut, aber ein wichtiger Schritt verpasst. Ich habe den „SupportedCultures“ Knoten meine csproj nicht hinzufügen. Machte den Unterschied - in der Hoffnung jemand anderes tut nicht locker 2 Stunden versucht, dies herauszufinden, wie ich es tat.
<SupportedCultures>de-DE;es-ES;</SupportedCultures>
Lösung
Ich schrieb eine Blog-Post, die Links zu einer Reihe von Windows Phone 7 in 7 Schulungsvideo das half mir die Grundlagen zu verstehen. Danach war es einfach eine Frage des Lernens, wie Datenbindung zu tun:
Der MSDN-Artikel zeigt Ihnen, wie Sie die Dateien und Setup erstellen die LocalizedStrings Klasse, aber sie dann vorausgesetzt, dass Sie wissen, wie das verwenden, Klasse für die Datenbindung. Visual Studio 2010 und Silverlight Griff Daten Bindung anders als Winforms und es wird noch da XAML mehr verwirrend auch hat seine eigene Definition von Ressourcen, die anders sind dann die .NET Ressourcen, die wir gerade erstellt haben. Silverlight verwendet auch den Begriff Ressource beziehen sich auf Dateien, die Verwendung die die Build Action von „Content“, wie Diese Dateien werden in die eingewickelt XAP-Datei ähnlich, wie Dateien mit Build Action von „Resource“ get eingebettet in die .dll-Baugruppe (ex: ein Bild von Inhalt Laden oder Ressourcendateien). Ich fand, dass statt den Text des Verwendens = "{Binding Path = resourceFile.resourceName, Source = {Static Localizedresources}}“XAML-Syntax es die folgenden Schritte war leichter zu verwenden:
Öffnen Sie Ihre primäre XAML-Seite (in der Regel MainPage.xaml) in der Visual Studio-Designer
Öffnen Sie die Eigenschaften für die PhoneApplicationPage und stellen Sie die Datacontext zu sein Application.Resources -> LocalizedStrings. HINWEIS: Wenn Sie bereits ein Datacontext-Objekt verwendet, dann Sie sollte die Integration LocalizedStrings Klasse in die Objekt, so dass es die Lokalisierung hat Unterstützung.
Nachdem die Seite des Datacontext gesetzt wurde können Sie die Daten ändern Bindung für jede Steuerung auf der Seite durch einfach die Auswahl der Unterkunft (ex: Text, überprüft, usw.), wird mit „Übernehmen Datenbindung ...“, und die Einstellung des Pfades zu Localizedresources.BtnText oder was auch immer der Name des gewünschten Ressourcenwert ist.
Andere Tipps
Natürlich lokalisierte Ressourcen werden auf dem Telefon unterstützt:
Gewusst wie: Erstellen Sie eine Lokalisierte Anwendung für Windows Phone