字符串作为资源文件名

时间:2013-03-25 21:24:41

标签: c# resources

我不确定这里的术语,但我需要访问一个特定的资源文件,其名称是计算的字符串。

例如:

我有一个名为“resFile-en-GB”的资源文件我可以使用“resFile-en-GB.stringKey”访问内部的字符串。现在我需要将文化信息添加到字符串的末尾。

string stringA = "resfile-";
string stringB = "en-GB";
string stringC = stringA + stringB;

现在我需要使用“stringC”作为资源文件名,例如“stringC.stringKey”我将如何进行此操作?

3 个答案:

答案 0 :(得分:2)

您可以通过ResourceManager访问资源,然后使用GetString(密钥),在这种情况下可能更容易:

var resourceManager = new ResourceManager(stringC, Assembly.GetExecutingAssembly())
resourceValue = resourceManager.GetString(key);

答案 1 :(得分:1)

您可以使用资源文件使您的应用程序使用多种语言。

将资源文件添加到您的解决方案

这是显而易见的第一步。例如,在解决方案ResourceFiles中添加一个文件夹并添加resx文件:

  • LanguageStrings.resx
  • LanguageStrings-FR-FR.resx
  • LanguageStrings-NL-NL.resx

LanguageStrings.resx将包含default语言,让我们说英语。 fr-FR将包含法语,而nl-NL将包含荷兰语。您只需将项添加到资源文件即可。例如HelloWorld = Hello world。

是的,所以你将HelloWorld密钥添加到你的三种语言字符串.resx文件中,并附上适当的翻译。

设置文化

您希望能够在应用程序中的某个位置设置语言。它可能在某个事件处理程序(列表框或您想到的任何内容)中。您需要在LanguageStrings上设置所选的文化信息。

var cultureInfo = new System.Globalization.CultureInfo("nl-NL");
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
LanguageStrings.Culture = cultureInfo;

这将语言设置为硬编码为荷兰语。显然你想制作“nl-NL”变量,以便你可以将语言设置为用户选择的任何语言。

获取本地化字符串

最后,您要从资源文件中检索本地化字符串。例如:

 label.Text = LanguageStrings.HelloWorld;

魔法发生了。 不必定义应使用哪个语言资源文件来检索本地化字符串。这是你完成的,因为你已经为资源文件(LanguageStrings.Culture = ..)设置了所需的语言。

这是基础知识,我希望这可以帮助你。

答案 2 :(得分:0)

ResourceManager.GetString方法可以帮助您实现这一目标。