我写的应用程序已基本完成,我希望使用不同语言的人使用它。
我不知道从哪里开始,全球化和文化在编程方面的区别是什么?
如何采用不常见的短语,例如“此应用程序是为了这样做而构建的”而不是“文件”,“打开”,“保存”等...并将它们变成说,西班牙语?
非常感谢: - )
答案 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
答案 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=...