字符串作为资源文件名

本文关键字:文件名 资源 字符串 | 更新日期: 2023-09-27 18:06:02

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

例如:

我有一个名为"resFile-en-GB"的资源文件我可以通过使用"resFile-en-GB. stringkey"访问字符串。现在我需要将区域性信息添加到字符串的末尾。

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

现在我需要使用"stringC"作为资源文件名,如"stringC。我该怎么做呢?

字符串作为资源文件名

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

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

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

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

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

  • LanguageStrings.resx
  • LanguageStrings-fr-FR.resx
  • LanguageStrings-nl-NL.resx

LanguageStrings。resx将包含default语言,比如英语。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 = ..)。

ResourceManager。GetString方法可以帮助您实现这一点。