【问题标题】:How to always install all localized resources in Windows Store UWP app?如何始终在 Windows Store UWP 应用中安装所有本地化资源?
【发布时间】:2017-04-18 20:16:52
【问题描述】:

默认情况下,Windows 应用商店 UWP 应用仅安装特定于目标计算机的资源。例如,如果应用程序本地化为 5 种不同的语言,并且用户的机器位于 en-US,则仅安装 en-US 资源。

问题是如果我想在我的应用中按需切换语言。即使我使用 fr-FR 资源发布了应用程序,我也无法切换到 fr-FR,因为未安装此语言包。

从 Windows 应用商店安装应用时,是否有方法或设置强制下载所有资源

注意一种方法,解决这个问题的方法是将应用程序打包为 appxbundle,但是一旦应用程序作为 appxbundle 发布,就不可能回到非 appxbundle 格式。

编辑,下面接受的解决方案有效,我刚刚将此配置添加到我的 .csproj 文件中,现在它会在安装过程中下载所有资源文件:

<AppxBundleAutoResourcePackageQualifiers>Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
<AppxDefaultResourceQualifiers>Language=cs-CZ;de-DE;en-US;es-ES;fr-FR;it-IT;pt-PT;ru-RU</AppxDefaultResourceQualifiers>

【问题讨论】:

  • 如果我们要添加所有资源,是否需要添加 AppxDefaultResourceQualifiers?
  • 在本例中,所有语言资源都将包含在您的 app bundle 的应用包中,无论用户设备的语言偏好如何,用户都会下载它们。

标签: localization windows-store-apps uwp


【解决方案1】:

注意一种方法,解决方法是不将应用打包为appxbundle,但是一旦应用发布为appxbundle,就不可能再回到非appxbundle格式了。

如果您需要保留 appxbundle,但仍想保留所有已安装的语言资源。您可以通过将配置文件添加到应用程序包或直接修改项目文件来包含资源。

通过这种方式,用户可以离线更改语言首选项,并且他们的设备可以切换到新设置的最佳资源。

详细步骤请关注Ensure that resources are installed on a device regardless of whether a device requires them,它针对Windows Store 8.1 应用程序,但它也适用于UWP 应用程序。另外,您可以在 MSDN 论坛的this thread 中查看@Amy Peng 的答案。

【讨论】:

  • 是的,我也发现了这个 MSDN 页面,并且这种方法在我的 UWP 应用程序中有效,即使它针对的是 Windows 8.1。太糟糕了,我不得不深入挖掘文档才能找到它。
  • 它是否也适用于新的 MSIX 包格式?
【解决方案2】:

我认为系统不会允许您在不违反约定的情况下强制执行此操作。

作为一种解决方法,您可以以系统本身无法识别它正在处理本地化资源的方式命名资源文件 - 而不是 @987654321 @、Resources.fr-FR.resw 等,您可以将它们命名为 Resources_enUS.reswResources_frFR.resw

然后你可以有一个LocalizationService 类,它将接受文化标签作为构造函数参数并手动加载该特定文化的资源:

public class LocalizationService
{
    private readonly ResourceLoader _loader = null;

    public LocalizationService(string culture)
    {
        culture = culture.Replace("-", "");
        _loader = ResourceLoader.GetForCurrentView($"Resources_{culture}");
    }
}

然后您可以使用请求的文化创建 LocalizationService

var localizer = new LocalizationService( "fr-FR" )

【讨论】:

    【解决方案3】:

    点击此链接获取您的分析器.. https://msdn.microsoft.com/en-us/library/dn482043.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-18
      • 2018-06-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多