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

时间:2011-03-09 13:43:27

标签: c# .net resources localization resourcemanager

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

TestLocalResource.ThisIsMyTest

现在看起来确实有效。但是这让我想知道通过这种方式引用资源字符串,我将始终访问默认资源文件(例如,TestLocalResource.resx)而不是其德语版本(例如{{1} }})?

相反,我必须使用TestLocalResource.de-DE.resx吗?如果是这样,ResourceManager如何知道当前语言(文化)?我需要明确设置吗?

我认为我需要使用ResourceManager

ResourceManager

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

2 个答案:

答案 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.resxImages.resx的资源文件文件夹。 (Properties文件夹也是Visual Studio放置名为Properties的通用资源文件的位置。)

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

  1. 在Solution Explorer中,右键单击Project节点。
  2. 选择添加=>新项目... =>资源文件=> Properties。结果:Visual Studio将Messages.resx放在 Project 文件夹中。
  3. 在解决方案资源管理器中,将Messages.resx拖到Messages.resx节点。
  4. 正如@Daniel指出的那样,一个名为Properties的新类现在可以方便地为您提供对资源字符串的访问权限。请注意,Messages可通过Messages命名空间访问(其中YourProject.Properties是项目名称,如解决方案资源管理器中所示)。

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

    OperationSucceeded

    ...或者,更方便:

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