访问本地化资源字符串而不创建“ResourceManager”实例?

我创建了一些资源文件来保存字符串。 我通过直接将它指向名为TestLocalResource的资源文件和名为ThisIsMyTest的资源字符串TestLocalResource显示MessageBox ,只需引用资源字符串,如下所示:

 TestLocalResource.ThisIsMyTest 

现在这确实有效。 但这让我想知道通过这种方式引用资源字符串,我是否总是访问默认资源文件(例如, TestLocalResource.resx )而不是其德语版本(例如, TestLocalResource.de-DE.resx )?

所以相反,我必须使用ResourceManager吗? 如果是这样, ResourceManager如何知道当前的语言( 文化 )? 我需要明确设置它吗?

这就是我认为我需要使用ResourceManager

 ResourceManager resmgr = new ResourceManager("MyApplication.MyResource", Assembly.GetExecutingAssembly()); 

但我希望有一种方法可以更方便地访问本地化资源字符串。

您不需要显式使用ResourceManager。
看看这里: http : //geekswithblogs.net/mapfel/archive/2008/11/01/126465.aspx
要了解如何更改在运行时使用的区域性,请参阅链接中的第二条注释 :

 switch (comboBox1.Text) { case "neutral": Thread.CurrentThread.CurrentUICulture = new CultureInfo(""); break; case "en-GB": Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB"); break; case "de-DE": Thread.CurrentThread.CurrentUICulture = new CultureInfo("de-DE"); break; } string messageText = Messages.MsgSampleText; MessageBox.Show(messageText); 

在@Daniel Hilgarth在他的回答中引用的文章中,作者指出应该在Properties文件夹中创建名为Messages.resxImages.resx的资源文件。 ( Properties文件夹也是Visual Studio放置名为Resources.resx的通用资源文件的位置。)

我发现Visual Studio 2013不允许我通过右键单击解决方案资源管理器中的“ Properties节点来创建和放置Messages.resx 。 相反,这就是我所做的:

  1. 在Solution Explorer中,右键单击Project节点。
  2. 选择Add => New Item … => Resources File => Messages.resx 。 结果:Visual Studio将Messages.resx放在Project文件夹中。
  3. 在解决方案资源管理器中,将Messages.resx拖到“ Properties节点。

正如@Daniel指出的那样,名为Messages的新类现在可以方便地为您提供对资源字符串的访问。 请注意,可以通过YourProject.Properties命名空间访问Messages (其中YourProject是项目的名称,如解决方案资源管理器中所示)。

例如,假设您有一个名为OperationSucceeded的资源字符串。 您现在可以通过以下方式访问该资源字符串:

 MessageBox.Show(YourProject.Properties.Messages.OperationSucceeded); 

……或者,更方便:

 using YourProject.Properties; MessageBox.Show(Messages.OperationSucceeded);