【问题标题】:Use PCL resx strings in UWP在 UWP 中使用 PCL resx 字符串
【发布时间】:2016-04-09 10:03:29
【问题描述】:

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

  1. 包含用于本地化的函数和 LocalizedStrings.resx 文件的可移植类库
  2. 适用于 Windows 7 的 WPF 应用程序
  3. 适用于 Windows 10 的通用应用程序

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

private ResourceManager localizedStrings;

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

    InitializeComponent();

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

现在我想在我的 UWP 应用中使用相同的代码,但它不起作用。我总是在包清单中将语言设置为“默认语言”的值。

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

【问题讨论】:

    标签: c# localization win-universal-app portable-class-library


    【解决方案1】:

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

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

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

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

    它们是为 Win8 编写的,但它们在 UWP 上的工作方式应该相同。

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

    【讨论】:

    • 第一个链接中的描述真的很棒。我在 resw 文件中添加了两个字符串,一个用于应用程序标题,另一个用于应用程序描述。这样,这两个值可以很容易地本地化,并且一切都按预期工作。
    • 非常感谢,PCL 方法为我节省了一两天时间。
    【解决方案2】:

    当您的本地化资源不在您的启动项目中时,您可以在 package.appxmanifest 中指定支持的语言:

      <Resources>
        <Resource Language="de-AT"/>
        <Resource Language="en-US"/>
      </Resources>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-15
      • 2011-04-25
      • 1970-01-01
      • 2023-02-13
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 2015-12-21
      相关资源
      最近更新 更多