1

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

例如:

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

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

现在我需要使用“stringC”作为资源文件名,如“stringC.stringKey”我将如何去做呢?

4

3 回答 3

2

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

var resourceManager = new ResourceManager(stringC, Assembly.GetExecutingAssembly())
resourceValue = resourceManager.GetString(key);
于 2013-03-25T21:37:30.743 回答
1

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

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

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

  • 语言字符串.resx
  • LanguageStrings-fr-FR.resx
  • LanguageStrings-nl-NL.resx

LanguageStrings.resx 将包含default语言,比如说英语。fr-FR 将包含法语,nl-NL 将包含荷兰语。您可以将项目添加到资源文件中。例如 HelloWorld = 你好世界。

对,所以您将 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 = ..) 设置了所需的语言。

以上是基础,希望对你有所帮助。

于 2013-03-25T22:00:07.430 回答
0

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

于 2013-03-25T21:37:56.307 回答