我正在编写的应用程序即将完成,我希望说不同语言的人都可以使用它。

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

如何采用不常见的短语(例如“此应用程序是为了执行此操作而构建的”)而不是“文件”、“打开”、“保存”等...并将它们转换为西班牙语?

非常感谢 :-)

有帮助吗?

解决方案

微软已经有一个非常好的 教程

其他提示

要拥有“全球化”应用程序,您需要做不同的事情。

1) 翻译应用程序中表单和控件中的每个标签

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

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

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

笔记: 如果您使用的是 Visual Studio 2005 或 2008,则默认情况下您已经创建了资源文件。

3)你需要明智地阐述你的表单和控件

微软的指导方针: 微软指南

4) 处理日期和数字

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


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

这里是代码:

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

您的所有疑问都将在下面的书中得到解答。最初的章节解释了所有主要概念和术语以及 i18n 等花哨的缩写。直到最后都没时间读完。。但直到我读到这一点为止都很好。如果您真的想以正确的方式进行操作并且有时间,建议您这样做:)

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

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

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

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

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

resources.en:

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

资源.es:

save=I don't know how to say anything in Spanish, oops
close=...
ok=...
areYouSure=...
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top