UWP:语言的资源文件未正确部署

Posted

技术标签:

【中文标题】UWP:语言的资源文件未正确部署【英文标题】:UWP: Resource file for languages is not deployed correctly 【发布时间】:2016-12-30 16:18:54 【问题描述】:

我的 Universal-Windows-App 有问题:我让用户可以选择更改应用程序的语言。

为此,我为每种语言创建了一个“Ressources.resw”文件,我的 XAML 代码通过 x:UID= 部分引用资源。通过primaryLanguageOverride更改语言 这在我的环境中运行良好。但是,如果我通过 Store->Create App Packages 部署应用程序,然后尝试在(不同的)Windows-10 机器上侧载应用程序,则语言更改不会正确反映。例如,日期格式正确更改,但指向资源文件的属性未正确更改。

但是:如果用户安装了相应的 Windows-Language-Pack,则该应用程序运行正常。我的猜测是,Windows 将检查它将使用系统上安装的语言部署哪个语言资源文件:

我怎样才能避免这种情况?

【问题讨论】:

FWIW,UWP 资源不依赖于安装语言包。 【参考方案1】:

但是,如果我通过 Store->Create App Packages 部署应用程序,然后尝试在(不同的)Windows-10 机器上侧载应用程序,则语言更改不会正确反映。 但是:如果用户安装了相应的 Windows-Language-Pack,则该应用程序运行正常。我的猜测是,Windows 会 检查它将与安装的语言资源文件一起部署 系统语言:

如果在这种方式正如你所说,只有当用户安装了相应的 Windows-Language-Pack 时,该应用程序才能正常工作。

这是因为如果我们将 "Generate App bundle" 设置为 "always""if needed" >,它将创建应用程序包。这意味着它将您的应用程序分成不同的部分以优化下载。只会下载与设备相关的部分。例如,如果有不同分辨率的资源,它只会下载适合设备的资源。 语言也是如此,它只会下载与设备语言相关的资源文件。因此,如果您尝试更改语言,它仍然会失败,但仍会使用相同的基本语言,因为未安装其他语言。因此,如果您没有安装相应的 Windows-Language-Pack,应用程序将不会显示指向资源文件的该属性的相关语言。

更多信息,请尝试参考this blog。

我怎样才能避免这种情况?

如果您想避免这种情况,解决方法是在创建应用程序包时将“Generate App bundle”设置为“never”,如下所示我已经在我身边测试过,效果很好

【讨论】:

以上是关于UWP:语言的资源文件未正确部署的主要内容,如果未能解决你的问题,请参考以下文章

如何从excel创建本地化资源文件?在 UWP 中

以编程方式更改应用程序语言 - UWP

UWP 切换语言

Xamarin.Forms:UWP 应用的本地化

如何读取部署在 Tomcat 中的未爆炸战争文件中的资源文件?

UWP在不同类库使用ResourceDictionaries