我创建了一些资源文件来保存字符串。我通过直接将它指向名为MessageBox
的资源文件和名为TestLocalResource
的资源字符串来显示ThisIsMyTest
,只需引用资源字符串,如下所示:
TestLocalResource.ThisIsMyTest
现在看起来确实有效。但是这让我想知道通过这种方式引用资源字符串,我将始终访问默认资源文件(例如,TestLocalResource.resx
)而不是其德语版本(例如{{1} }})?
相反,我必须使用TestLocalResource.de-DE.resx
吗?如果是这样,ResourceManager
如何知道当前语言(文化)?我需要明确设置吗?
我认为我需要使用ResourceManager
:
ResourceManager
但我希望有一种方法可以更方便地访问本地化资源字符串。
答案 0 :(得分:11)
您无需明确使用ResourceManager
看看这里:http://geekswithblogs.net/mapfel/archive/2008/11/01/126465.aspx
要了解如何更改在运行时使用的区域性,请参阅链接中的second comment:
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);
答案 1 :(得分:1)
在article中由@Daniel Hilgarth引用的his answer中,作者指出应在{{1}中创建名为Messages.resx
和Images.resx
的资源文件文件夹。 (Properties
文件夹也是Visual Studio放置名为Properties
的通用资源文件的位置。)
我发现Visual Studio 2013不允许我通过右键单击解决方案资源管理器中的Resources.resx
节点来创建Messages.resx
Properties
文件夹。相反,这就是我所做的:
Properties
。结果:Visual Studio将Messages.resx
放在 Project 文件夹中。Messages.resx
拖到Messages.resx
节点。正如@Daniel指出的那样,一个名为Properties
的新类现在可以方便地为您提供对资源字符串的访问权限。请注意,Messages
可通过Messages
命名空间访问(其中YourProject.Properties
是项目名称,如解决方案资源管理器中所示)。
例如,假设您有一个名为YourProject
的资源字符串。您现在可以通过以下方式访问该资源字符串:
OperationSucceeded
...或者,更方便:
MessageBox.Show(YourProject.Properties.Messages.OperationSucceeded);