C# 在UWP中使用PCL resx字符串

C# 在UWP中使用PCL resx字符串,c#,localization,win-universal-app,portable-class-library,C#,Localization,Win Universal App,Portable Class Library,我有一个包含3个项目的解决方案: 包含用于本地化的函数和LocalizedStrings.resx文件的可移植类库 适用于Windows 7的WPF应用程序 适用于Windows 10的通用应用程序 在我的WPF应用程序中,我使用以下代码访问resx文件中的字符串: private ResourceManager localizedStrings; public MainWindow() { localizedStrings = new ResourceManager(typeof(L

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

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

private ResourceManager localizedStrings;

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

    InitializeComponent();

    tbTest.Text = localizedStrings.GetString("headerToolData");
现在我想在我的UWP应用程序中使用相同的代码,但它不起作用。我总是在包清单中获取设置为默认语言的语言值


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

我想到的一个原因是,UWP应用程序中只有默认语言,而应用程序不知道它应该支持其他语言

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

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

如果这不起作用,你可能想看看这两个链接

它们是为Win8编写的,但对UWP也应该如此


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

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

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

第一个链接中的描述非常棒。我在resw文件中添加了两个字符串,一个用于app title,另一个用于app description。通过这种方式,这两个值可以很容易地本地化,并且一切都按预期进行。非常感谢,PCL方法为我节省了一两天的时间。