快速说明:gettext 显然可以用作 Win32 平台上的非托管库。看看这个哥们的博文:
http://weblogs.manas.com.ar/spalladino/2009/10/07/gettext-i18n-strings-in-asp-net-controls/
此外,来自 C# 上的 gettext 语言文档:
http://www.gnu.org/software/hello/manual/gettext/C_0023.html#C_0023
另一个谈论 gettext i18n for asp.net:
http://www.expatsoftware.com/articles/2010/03/fixing-internationalization-in-aspnet.html
观点继续:我真的认为 .NET 风格的国际化使用资源文件不太好。首先,您必须在代码中编写字符串:
My.Resources.ErrorMsgDbNotConnected
在您的代码编译之前,您必须将字符串添加到资源文件中。如果您问我,从您正在处理的内容中跳出来将字符串添加到资源文件然后返回是一个障碍。此外,反之亦然:要查找字符串,您需要查看资源文件夹。不那么激烈,但仍然很烦人。
gettext 使用您的母语字符串作为键:
gettext("Sorry, the database connection could not be created.")
如果语言文件中没有键,则解析并使用原始字符串。此外,这意味着翻译者只需打开一个文件即可查看原始语言字符串和翻译后的字符串,而不是打开和比较两个资源文件。
gettext 还支持复数、性别和其他语言变体,因此它可以解决复数问题(“您有 1 封新电子邮件。”),即使是英语!
不要以为我讨厌 .NET:基于文化的 .NET 日历、时间和数字格式真的很棒,我只是觉得翻译的东西有点欠缺。