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:语言的资源文件未正确部署的主要内容,如果未能解决你的问题,请参考以下文章