Access localized resource strings without creating an instance of 'ResourceManager'?

后端 未结 2 1209
小鲜肉
小鲜肉 2020-12-06 14:51

I have created some resource files to hold strings. I am displaying a MessageBox by pointing it directly at a resource file named TestLocalResource

相关标签:
2条回答
  • 2020-12-06 15:26

    In the article referenced by @Daniel Hilgarth in his answer, the author indicates that the resource files named Messages.resx and Images.resx should each be created in the Properties folder. (The Properties folder is also the location where Visual Studio places its general-purpose resource file named Resources.resx.)

    I found that Visual Studio 2013 would not allow me to create and place Messages.resx in the Properties folder by right-clicking the Properties node in Solution Explorer. Instead, here's what I did:

    1. In Solution Explorer, right-click the Project node.
    2. Select Add => New Item... => Resources File => Messages.resx. Result: Visual Studio places Messages.resx in the Project folder.
    3. In Solution Explorer, drag Messages.resx to the Properties node.

    As @Daniel indicates, a new class named Messages will now conveniently provide you with access to your resource strings. Note that Messages will be accessible via the YourProject.Properties namespace (where YourProject is the name of your project as shown in Solution Explorer).

    For example, let's say that you have a resource string named OperationSucceeded. You will now be able to access that resource string via:

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

    ...or, more conveniently:

    using YourProject.Properties;
    
    MessageBox.Show(Messages.OperationSucceeded);
    
    0 讨论(0)
  • 2020-12-06 15:42

    You don't need to use the ResourceManager explicitly.
    Have a look here: http://geekswithblogs.net/mapfel/archive/2008/11/01/126465.aspx
    To learn how to change the culture to use during runtime, see the second comment in the link:

    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); 
    
    0 讨论(0)
提交回复
热议问题