访问本地化资源字符串而不创建“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.resx
和Images.resx
的资源文件。 ( Properties
文件夹也是Visual Studio放置名为Resources.resx
的通用资源文件的位置。)
我发现Visual Studio 2013不允许我通过右键单击解决方案资源管理器中的“ Properties
节点来创建和放置Messages.resx
。 相反,这就是我所做的:
- 在Solution Explorer中,右键单击Project节点。
- 选择Add => New Item … => Resources File =>
Messages.resx
。 结果:Visual Studio将Messages.resx
放在Project文件夹中。 - 在解决方案资源管理器中,将
Messages.resx
拖到“Properties
节点。
正如@Daniel指出的那样,名为Messages
的新类现在可以方便地为您提供对资源字符串的访问。 请注意,可以通过YourProject.Properties
命名空间访问Messages
(其中YourProject
是项目的名称,如解决方案资源管理器中所示)。
例如,假设您有一个名为OperationSucceeded
的资源字符串。 您现在可以通过以下方式访问该资源字符串:
MessageBox.Show(YourProject.Properties.Messages.OperationSucceeded);
……或者,更方便:
using YourProject.Properties; MessageBox.Show(Messages.OperationSucceeded);