2015-06-11 7 views
5

Dies ist keine Frage über Standard-Lokalisierung - ich weiß, wie die App zu lokalisieren, Ressourcen zu verwenden, Uid und so weiter - das funktioniert perfekt.Mehrsprachige Unterstützung in Universal App

Das Problem ist, dass die App in einem Bundle kommt, daher, wenn der Benutzer die App installiert deckt es nur Sprachen, die in Geräte/Telefoneinstellungen ausgewählt sind. Aber ich möchte eine Option in den Einstellungen zur Verfügung stellen, die es erlauben würde, eine Sprache bezüglich der Einstellungen zu wählen. Zu diesem Zweck kann ich ApplicationLanguages.PrimaryLanguageOverride verwenden, die sehr schön funktioniert, wenn über VS, aber wie ich schon erwähnt habe - Version aus dem Speicher fehlt Ressourcen, da nicht alle installiert sind.

Kann jemand dieses Bündelverhalten umgehen?

Das Problem ist auch, dass ich MAT (mehrsprachige App Toolkit) verwende und meine Übersetzung kommt mit xliff Dateien. Ich habe ziemlich viel Zeit verbracht, um einen Weg zu finden, sie in resw Dateien zu konvertieren, ohne Erfolg. Gibt es eine Möglichkeit, es zu tun (oder ich muss meinen eigenen Konverter schreiben)?

+0

Wie wäre es _Generate App bundle_ zu _Never_ in der _Package.appxmanifest_ Einstellung? Oder Sie müssen einige Sachen bündeln, aber nicht andere? Ich bin mir nicht sicher, ob das möglich ist (aber ich habe es nicht zu oft erforscht). – yasen

+0

@yasen Sobald das Paket veröffentlicht wurde, müssen die nächsten Aktualisierungen mit Bundle (AFAIK) durchgeführt werden. So wird es nicht funktionieren :( – Romasz

Antwort

1

Sie müssen ResourceContext verwenden:

var context = new ResourceContext(); // deliberately not using getForCurrentView() 
context.Languages = new string() {"fr-fr"}; 
ResourceMap resourceMap = ResourceManager.Current.MainResourceMap.GetSubtree("Resources"); 
String str = resourceMap.GetValue("string1", context).ValueAsString; 

Mehr Infos unter: 'How to load string resources' und 'ResourceContext class'ResourceContext class'.

PS. Ich habe App im Geschäft und es gibt kein Problem mit der Sprache ohne Neuinstallation zu ändern, so müssen alle Ressourcen

+0

Entschuldigung für späte Reply - Ich war auf kleinen Urlaub. Ich werde Ihnen ein Zeichen geben, sobald ich es testen. Danke – Romasz

+0

Es beantwortet nicht wirklich die Frage. Ich habe das gleiche Problem. Ich habe 9 Sprachen in der Anwendung.Während der Entwicklung aller 9 sind verfügbar, aber wenn die Anwendung aus dem Windows Store installiert ist, hat es nur die Teilmenge der Sprachen, die in das System installiert sind. – Alex

1

sein Auschecken dieser: UWP: Resource file for languages is not deployed correctly müssen Sie Bündel loswerden, damit mein Code von oben zu arbeiten. Oder Sie könnten überprüfen, ob gewählte Sprache in OS installiert ist, und wenn nicht, kann man nicht zulassen, dass Benutzer sie wählen mit:

Windows.System.UserProfile.GlobalizationPreferences.Languages 
+0

Soweit ich mich erinnere, gibt es ein Problem mit dem Erhalten los bundle, wenn die App bereits als Bundle veröffentlicht ist - dann kann sie nur mit einem Bundle aktualisiert werden Hat sich so etwas geändert? – Romasz

+0

yeah ... leider hast du recht - ich habe dem Nutzer schließlich gesagt, dass er zusätzliche Sprachen installieren soll OS – Piachu