在UWP中使用PCL resx字符串

时间:2016-04-09 10:03:30

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

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

  1. 包含函数的可移植类库和用于本地化的LocalizedStrings.resx文件
  2. Windows 7的WPF应用程序
  3. 适用于Windows 10的通用应用
  4. 在我的WPF应用程序中,我使用以下代码访问resx文件中的字符串:

    private ResourceManager localizedStrings;
    
    public MainWindow()
    {
        localizedStrings = new ResourceManager(typeof(LocalizedStrings));
    
        InitializeComponent();
    
        tbTest.Text = localizedStrings.GetString("headerToolData");
    

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

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

2 个答案:

答案 0 :(得分:2)

在UWP应用程序中只提供默认语言的原因是,应用程序并不知道它应该支持其他语言。

UWP通过惯例知道的方式。在UWP中,您通常会为所有支持的文化创建一个名为Strings和子文件夹的文件夹,其中包含resw文件。

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

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

它们是针对Win8编写的,但它们应该对UWP起作用。

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

答案 1 :(得分:2)

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

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