类库中的本地化/资源文件

use*_*367 5 asp.net localization c#-4.0 web

我正在尝试在类库中实现全球化.NET。在.NETWeb应用程序中,这似乎工作正常。我可以在下方添加多个资源文件App_GlobalResources

例如

LocalizedText.resx
LocalizedText.fr.resx
Run Code Online (Sandbox Code Playgroud)

但是,资源文件在类库中的处理方式有所不同。我通过以下方式添加资源文件:
1)打开类库的属性
2)单击资源选项卡
3)单击链接以创建“默认资源文件”

使用这种模型,似乎只希望允许一个默认资源文件。我可以重命名文件,并且似乎可以绕过“一个文件”的限制,但是如果我生成的资源文件与上面的名称相同,则似乎没有为“ LocalizedText.fr.resx”文件生成任何代码。如果我在代码中引用这样的字符串,则……

myControl.Text = Properties.LocalizedText.MyLocalizedText;
Run Code Online (Sandbox Code Playgroud)

它为值引用LocalizedText.resx文件(忽略了我将区域性设置为French的事实)。我猜想,只要为设计器文件自动生成代码,就会看到已经有一个 “ LocalizedText”类,并且不会生成必要的代码。

没有一种方法(等效于Web应用程序项目)可以在类库中使用多个资源文件为每种区域性使用不同的名称,并能够轻松地在代码中访问它(信任.NET根据区域性信息进行适当的切换) )?

非常感谢

小智 1

首先:在项目中创建一个名为“MyFolder”的文件夹。

第二:将名为“MyResourceFile”的资源文件添加到该文件夹​​中。

第三:在要访问资源值的地方,导入:

using System.Reflection;
using System.Resources;
using MyProject.MyFolder.MyResourceFile;
Run Code Online (Sandbox Code Playgroud)

并创建一个可以访问您的资源的属性。像这样:

public static ResourceManager oResourceManager = new ResourceManager("MyProject.MyFolder.MyResourceFile", typeof(MyResourceFile).Assembly);
Run Code Online (Sandbox Code Playgroud)

第四:从您的财产中获取数据:

oResourceManager.GetString("ResourceKey", System.Globalization.CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)