gpt4 book ai didi

c# - PrimaryLanguageOverride 在发布 appxbundle 中不起作用

转载 作者:行者123 更新时间:2023-11-30 17:29:12 24 4
gpt4 key购买 nike

我目前正在做一个 UWP 项目,我已经实现了语言更改功能,下面是用于执行此操作的代码片段

Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = App.userLang;
await Task.Delay(100);
Frame.Navigate(typeof(MainPage));

该功能在调试时工作正常,但从侧面加载的应用程序包安装的应用程序中的功能不起作用。为什么是这样?(该功能不适用于移动设备或 PC)

最佳答案

一个可能的原因是在安装过程中未安装覆盖语言的资源。

By default when you build an app bundle (.appxbundle), only your default resources for language, scale, and DirectX feature level are built into the app package.

您可以将 .appxbundle 文件重命名为 .zip 文件以查看其内容,appxbundle 本质上是一个 zip 文件。

在bundle里面,你可以找到默认资源的应用包,看起来像

YourPackage_1.0.0.1_x64.appx

其他语言的资源包,都是独立的.appx,看起来像

YourPackage_1.0.0.1_language-fr.appx
YourPackage_1.0.0.1_language-de.appx

在安装过程中,只安装应用程序包和设备主要语言所需的资源。因此,如果您稍后切换到另一种语言,应用程序将无法加载资源。

如果您的应用是通过 Windows 应用商店分发的,所需的资源将自动从应用商店下载,但这不会发生,因为您的应用是旁加载的。

要验证是否是这个原因,只需双击缺少语言的资源包进行安装,然后重新启动应用程序,观察症状是否消失。

解决方案是 Build resources into your app package, instead of into a resource pack .

简答

打开项目文件 (.csproj),将以下行添加到 PropertyGroup 元素。

<AppxDefaultResourceQualifiers>Language=en-US;fr-FR;...(add all the languages you need to support)</AppxDefaultResourceQualifiers>

关于c# - PrimaryLanguageOverride 在发布 appxbundle 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51549392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com