如何使我的.NET应用程序支持不同的语言

时间:2008-09-18 04:37:53

标签: .net globalization culture

我写的应用程序已基本完成,我希望使用不同语言的人使用它。

我不知道从哪里开始,全球化和文化在编程方面的区别是什么?

如何采用不常见的短语,例如“此应用程序是为了这样做而构建的”而不是“文件”,“打开”,“保存”等...并将它们变成说,西班牙语?

非常感谢: - )

5 个答案:

答案 0 :(得分:5)

微软已经有了非常好的tutorial

答案 1 :(得分:5)

你有不同的事情可以做一个“全球化”的应用程序。

1)翻译申请表格和控件中的每个标签

您需要在每个表单和控件上将属性“Localizable”设置为true。此属性允许在每种语言和区域中创建资源文件。现在,使用“语言”属性,您可以选择要支持的语言。在组合框列表中选择语言时,表单(或控件)将自动切换为该语言。现在,翻译控件中的每个单词都是你的工作。只要进行修改,Visual Studio就会为特定语言创建资源文件。 (例如,法国 - 法国的MyForm.fr-FR.resx)。

2)将代码中的每个硬编码字符串导入resx文件

创建一个资源文件(personnally,我使​​用StringTable.resx)并添加要在此文件中翻译的每个字符串。之后,为要支持的每种语言创建资源文件,并在每个文件中翻译字符串。例如,如果要支持法语,可以为法语 - 法语创建StringTable.fr.resx或StringTable.fr-FR.resx。使用 ResourceManager 类,您可以加载每个字符串。

注意:如果您使用的是Visual Studio 2005或2008,则您已经创建了默认的资源文件。

3)您需要明智地详细说明您的表单和控件

Microsoft指南:Microsoft Guidelines

4)处理日期和数字

如果您的应用程序创建的数据文件可以发送给其他区域的其他用户,则需要在将数据保存到文件中时考虑它。因此,请始终以UTC格式存储日期时间,并仅在加载信息时在本地进行转换。同样的事情适用于十进制数,特别是如果它们存储在文本中。


当您编译应用程序时,Visual Studion将在子文件夹 fr 中创建 MyApplication.fr.dll 等卫星文件。要加载此dll,您需要在应用程序启动时切换当前线程的语言。

这里是代码:

CultureInfo ci = new CultureInfo("fr");
Thread.CurrentThread.CurrentUICulture = ci;

答案 2 :(得分:2)

您的所有疑问都应在下面的书中回答。最初的章节解释了所有主要概念和术语以及像i18n这样的花哨缩写。没有时间把它读到最后......但是直到我读到的那一点都很好。建议如果你认真对待这种方式并且有时间:)

http://www.amazon.com/NET-Internationalization-Developers-Applications-Development/dp/0321341384 Image

答案 3 :(得分:0)

对于一个非常简单的系统,创建一个定义GetSaveText()等方法的接口,并允许将这样的程序集插入到您的应用程序中。

答案 4 :(得分:0)

对于10-1000字符串的任何地方来说,这应该是一个非常好的解决方案:

拥有每个区域设置的资源文件。我不知道.NET,但我确信有一些常见的方法可以做到这一点。然后,在您的资源获取代码中,根据您的用户的浏览器区域设置加载适当的代码。请求此代码为您获取某个键的正确字符串。

示例文件内容,如果我从头开始实现它:

resources.en:

save=Save
close=Close
ok=OK
areYouSure=Are you sure?

resources.es:

save=I don't know how to say anything in Spanish, oops
close=...
ok=...
areYouSure=...