Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通用应用程序中的多语言支持_C#_Windows_Localization_Windows Phone_Win Universal App - Fatal编程技术网

C# 通用应用程序中的多语言支持

C# 通用应用程序中的多语言支持,c#,windows,localization,windows-phone,win-universal-app,C#,Windows,Localization,Windows Phone,Win Universal App,这不是关于标准本地化的问题-我知道如何本地化应用程序,使用资源,Uid,等等-这非常有效 问题在于该应用程序是捆绑的,因此当用户安装该应用程序时,它只覆盖在设备/电话设置中选择的语言。但我想在设置中提供一个选项,允许选择与设置相关的语言。为此,我可以使用,它在通过VS部署时非常好用,但正如我所提到的,商店的版本缺乏资源,因为并不是所有版本都已安装 有人知道如何绕过此捆绑行为吗 问题还在于我使用的是MAT(多语言应用工具包),我的翻译附带了xliff文件。我花了相当多的时间来找到一种将它们转换为r

这不是关于标准本地化的问题-我知道如何本地化应用程序,使用资源,
Uid
,等等-这非常有效

问题在于该应用程序是捆绑的,因此当用户安装该应用程序时,它只覆盖在设备/电话设置中选择的语言。但我想在设置中提供一个选项,允许选择与设置相关的语言。为此,我可以使用,它在通过VS部署时非常好用,但正如我所提到的,商店的版本缺乏资源,因为并不是所有版本都已安装

有人知道如何绕过此捆绑行为吗


问题还在于我使用的是MAT(多语言应用工具包),我的翻译附带了xliff文件。我花了相当多的时间来找到一种将它们转换为resw文件的方法,但没有成功。有没有办法(或者我必须自己编写转换器)?

您需要使用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;
更多信息,请访问: 和

另外,我在商店里有一个应用程序,在不重新安装的情况下更改语言是没有问题的,所以所有资源都必须在那里

请检查:为了让我上面的代码正常工作,您需要去掉捆绑包。或者,您可以检查所选语言是否已安装在操作系统中,如果未安装,则无法允许用户使用以下选项进行选择:

Windows.System.UserProfile.GlobalizationPreferences.Languages

在Package.appxmanifest中将Generate app bundle设置为Never如何?或者你需要打包一些东西而不是其他?我不确定是否可以做到这一点(但我没有做太多的研究)。@yasen一旦捆绑包发布,下一次更新必须使用捆绑包(AFAIK)完成。所以它不会起作用:(很抱歉,回复晚了-我在休小假。一旦我测试了它,我会给你一个提示。ThanksIt并没有真正回答这个问题。我也有同样的问题。我在应用程序中有9种语言。虽然开发所有9种语言都是可用的,但当应用程序从Windows应用商店安装时,它只有一部分语言是可用的。)在系统中暂停。据我记忆所及,当应用程序已作为捆绑包发布时,摆脱捆绑包存在问题-然后只能使用捆绑包进行更新。有什么东西以这种方式发生了变化吗?是的……不幸的是,你的权利-我最后告诉用户在操作系统中安装其他语言