我需要能够在用户使用应用程序时显示特定于语言的UI文本。目前,我将文本存储在每种语言的Properties.Settings文件中。有没有办法创建一个指向设置文件的变量,以便我只是将此变量设置为指向所选的语言设置文件,然后应用程序使用此变量来检索所需的文本字符串。
使用Properties.Settings.Default.textString意味着我必须执行以下操作:
if (language == "English") {
String text = Properties.SettingsEnglish.Default.textString;
} else
if (language == "SomethingElse") {
String text = Properties.SettingsSomethingElse.Default.textString;
}
我更喜欢这样做,因为它只需要执行一次检查:
Properties varSettings;
if (language == "English") {
var = Properties.SettingsEnglish;
} else
if (language == "SomethingElse") {
var = Properties.SettingsSomethingElse;
}
...
String text = varSettings.Default.textString;
有关最佳方法的任何建议 - 请记住,这必须是用户可选择的应用程序选项,而不是操作系统级语言特定的安装选项。
答案 0 :(得分:1)
.Net应用程序已经内置了强大的本地化机制,在How to use localization in C#进行了讨论。总结一下:
Thread.CurrentThread.CurrentUICulture
设置为所需的文化。不要忘记非字符串本地化方面,如时间和日期格式。
有关概述,请参阅http://msdn.microsoft.com/en-us/library/h6270d0z(v=vs.110).aspx。
答案 1 :(得分:0)
基本上,我确信这已经得到了解答(例如:here),但要点通常是相同的。
您需要一个包含字符串值的资源字典(例如:error_message_1,error_message_2,greeting,favorite_peekachu),然后您可以为每种语言提供一个文件,并在设置中设置该文件,或者拥有代码中的大“if-else-otherwise”循环(这让我感到不寒而栗)。
我记得在实际上读过一些关于android的好文章,我想这个想法是一样的:)
以下是CodeProject上文章的链接。
修改强>
这个答案是我正在寻找的答案:Fredrik Mörk How to use localization in C#。