2015-06-11 94 views
5

這不是關於標準本地化的問題 - 我知道如何本地化應用程序,使用資源,Uid's等 - 這很好。通用應用程序中的多語言支持

問題是,該應用程序在軟件包內,因此,當用戶安裝應用程序時,它僅涵蓋在設備/手機設置中選擇的語言。但我想在設置中提供一個選項,以便選擇有關設置的語言。爲此,我可以使用ApplicationLanguages.PrimaryLanguageOverride,它在通過VS部署時工作得非常好,但正如我所提到的 - 由於不是所有的都安裝了,所以商店的版本缺乏資源。

有沒有人知道如何繞過這種捆綁行爲?我的翻譯是xliff這個文件。我花了很多時間找到一種方法將它們轉換爲resw文件,但沒有成功。有沒有辦法做到這一點(或我必須寫我自己的轉換器)?

+0

如何在_Package.appxmanifest_ _Generate應用bundle_設置_永遠_?或者你需要捆綁一些東西,但不包括其他人?我不確定這是否可以完成(但我沒有太多研究)。 – yasen

+0

@yasen包發佈後,必須使用包(AFAIK)完成下一次更新。所以它不會工作:( – Romasz

回答

1

您需要使用ResourceContext:

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; 

更多信息在: 'How to load string resources''ResourceContext class'ResourceContext class'

PS。我有商店的應用程序,沒有重新安裝,因此所有資源必須在那裏更改語言沒有問題

+0

對不起,遲到repley - 我是在一個小小的假期,我會給你一個標誌,一旦我測試了一下,謝謝 – Romasz

+0

它並沒有真正回答這個問題,我有同樣的問題,我有9應用程序中的語言雖然開發所有9個都可用,但是當從Windows應用商店安裝應用程序時,它只有安裝到系統中的語言的子集 – Alex

1

看看這個:UWP: Resource file for languages is not deployed correctly你需要擺脫捆綁爲了我的代碼從上面的工作。或者你可以檢查是否安裝在操作系統選擇的語言,如果不使用你不能讓用戶選擇它:

Windows.System.UserProfile.GlobalizationPreferences.Languages 
+0

據我記憶,有一個獲取擺脫束,當應用程序已經發布爲一個包 - 然後它可以更新只有一個捆綁包。有什麼改變這種方式? – Romasz

+0

是啊...不幸的是你的權利 - 我最終告訴用戶安裝額外的語言在OS – Piachu