在 C# 中让多语言应用程序变得更简单






3.64/5 (31投票s)
本文重点介绍如何处理多语言应用程序

引言
本文介绍了如何创建一个多语言应用程序。
关于示例项目
本文提供的示例项目是一个多语言应用程序的例子。在讨论多语言应用程序时,我们需要管理特定于每种文化的资源。在我的示例项目中,我支持了 5 种语言,分别是英语、德语、西班牙语、意大利语和法语。这个示例项目支持在运行时切换到这五种语言中的任何一种。
待办事项
在 C# 中创建一个多语言应用程序非常简单。我使用 Visual Studio .NET 2003 来创建我的示例应用程序。还有一个免费的 IDE,称为 SharpDevelop,看起来与 Visual Studio .NET 类似。
现在开始步骤
- 对
FormLayout
(也就是你的应用程序的设计)进行所有操作。 - 表单设计完成后,该表单现在使用默认的语言设置。现在构建应用程序。
- 将表单属性
Localizable
更改为true
,并将属性Language
设置为你想要使用的任何语言。 - 将
Label
、Button
、Form
等的文本更改为你选择的语言(不仅限于Text
属性,你也可以更改特定于Language
的布局)。 - 构建应用程序。
- 我们现在完成了。对于你想本地化的下一种语言,重复步骤 3 到 5。
现在我们做了一些事情,但我们如何检查这个工作是否有效。我们必须对代码做一些处理。
Thread.CurrentThread.CurrentUICulture=new System.Globalization.CultureInfo("de")
上面的代码指定了你的应用程序的 Currentuiculture
。这段代码必须在组件初始化之前执行。CultureInfo
构造函数中给定的 string
("de
") 指定了该文化的语言名称。下面给出了一些文化名称和语言。
en
- 英语de
- 德语fr
- 法语it
- 意大利语es
- 西班牙语pt
- 葡萄牙语
它是如何工作的
这一节很重要。当我们把表单的 localizable 设置为 true 并构建应用程序时,Visual Studio .NET 会创建特定于表单的 Language
属性中指定的文化的资源。Visual Studio .NET 使用 *resgen.exe* 创建资源文件。我们也可以使用以下语法创建资源
resgen mytext.en-us.txt mytext.en-us.resources
resgen mytext.en-us.resources mytext.en-us.resx
//This command reads a binary resources file mytext.en-us.resources and
//writes an XML-based output file named mytext.en-us.resx
现在资源已经创建好了,但我们需要将它们链接到应用程序,所以 Visual Studio .NET 使用 *AL.exe* (Assembly linker) 来完成这个工作。我们也可以通过以下方式手动完成此操作
al
/t:lib
/embed:mytext.en-us.resx
/culture:en-us
/out:Myapplication.resources.dll
你可以在 MSDN 文档中找到更多关于 *resgen.exe* 和 *al.exe* 的信息。
摘要
我希望这篇文章对你有所帮助。如果你有任何问题或发现任何错误,请告诉我。你可以通过电子邮件联系我:beniton@gmail.com。
请不要忘记评价这篇文章。