字符串作为资源文件名
本文关键字:文件名 资源 字符串 | 更新日期: 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方法可以帮助您实现这一点。