I have created some resource files to hold strings. I am displaying a MessageBox
by pointing it directly at a resource file named TestLocalResource
and a resource string named ThisIsMyTest
by simply referencing the resource string like this:
TestLocalResource.ThisIsMyTest
Now this does appear to work. But this leaves me wondering that by referencing the resource string this way, will I always be accessing the default resource file (e.g., TestLocalResource.resx
) rather than its German version (e.g., TestLocalResource.de-DE.resx
)?
So instead, do I have to use ResourceManager
? If so, how does ResourceManager
know the current language (culture)? Will I need to explicitly set it?
This is how I think I would need to use ResourceManager
:
ResourceManager resmgr =
new ResourceManager("MyApplication.MyResource", Assembly.GetExecutingAssembly());
But I'm hoping that there is a way to access localized resource strings in a more convenient fashion.
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);