在 UWP 中使用 PCL resx 字符串

Use PCL resx strings in UWP

我有一个包含 3 个项目的解决方案:

  1. 便携式 class 库,包含用于本地化的函数和 LocalizedStrings.resx 文件
  2. WPF 申请 Windows 7
  3. Windows10
  4. 的通用应用程序

在我的 WPF 应用程序中,我使用以下代码访问 resx 文件中的字符串:

private ResourceManager localizedStrings;

public MainWindow()
{
    localizedStrings = new ResourceManager(typeof(LocalizedStrings));

    InitializeComponent();

    tbTest.Text = localizedStrings.GetString("headerToolData");

现在我想在我的 UWP 应用程序中使用相同的代码,但它不起作用。我总是在包清单中将语言设置为 "Default language" 的值。

如何正确访问 UWP 应用程序 pcl 中包含的 resx 文件中定义的字符串?

在 UWP 应用程序中仅获得默认语言的一个原因是应用程序不知道它应该支持其他语言。

UWP 知道的方式是通过约定。在 UWP 中,您通常会有一个名为 Strings 的文件夹和所有支持的区域性的子文件夹,其中包含 resw 文件。

我猜你的 UWP 应用中没有这个结构。要测试是否是这种情况,请尝试创建此结构并在包含至少一种资源的文件夹中添加至少一个文件。

如果这不起作用,您可能需要查看这两个链接 Shared localization for WP8 and W Share localization files between WP8 and Win8

它们是为 Win8 编写的,但它们应该同样适用于 UWP。

简而言之,他们的建议是创建一个 class 来公开本地化资源。

当您的本地化资源不在您的启动项目中时,您可以在 package.appxmanifest:

中指定支持的语言
  <Resources>
    <Resource Language="de-AT"/>
    <Resource Language="en-US"/>
  </Resources>