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

时间:2016-08-23 18:01:20

标签: c# xaml windows-store-apps uwp

我的Universal-Windows-App存在问题:我正在为用户提供更改应用语言的选项。

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

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

enter image description here

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:13)

  

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

如果我将“生成应用套装”设置为“始终”“,如果需要”,我可以重现此行为正如你所说的那样,只有当用户安装了相应的Windows-Language-Pack时,该应用程序才能正常工作。

之所以如此,是因为如果我们将“生成应用程序包”设置为“始终”“如果需要”,它将创建应用程序包。这意味着它会将您的应用程序分成不同的部分以优化下载。仅下载与设备相关的部件。例如,如果资产的分辨率不同,则只下载适合该设备的资产。 语言相同,它只会下载与设备语言相关的资源文件。因此,如果您尝试更改语言,它将失败仍然会使用相同的基本语言,因为其他语言未安装。因此,如果您没有安装相应的Windows-Language-Pack,则应用程序将不会显示指向资源文件的该属性的相关语言。

有关详情,请尝试参考this blog

  

我该如何避免这种情况?

如果您想避免这种情况,解决方法是在创建应用包时将“生成应用包”设置为“从不”,如下所示我在我身边测试过,它运行良好enter image description here