我已经开发了大约 300 个应用程序,我想为它们提供独立于操作系统的多语言功能。我已经编写了一个即时翻译器,但是在具有许多组件的应用程序中这太慢了。你会建议我做什么?
7 回答
我们正在使用TsiLang并且对它非常满意。
最好的一点是您可以使用字典(从现有翻译中填充)预翻译项目。
我听说TsiLang 组件很好,但是您正在寻找就地解决方案...
我已经为 Delphi 使用了 GNU gettext,它完全符合您的要求,它从文本文件加载翻译并替换组件中的文本。它甚至有一个 pas/dfm 扫描仪来自动生成英文翻译文件。
也可以自动更改您的 pascal 源代码以注入 gettext 过程来代替您的静态字符串。如果我没记错的话,它只是添加了一个下划线作为函数,如下所示。
ShowMessage('Hello'); // before
ShowMessage(_('Hello')); // after
我必须说自从我上次使用这种方法已经 2 年了。
有一件事仍然存在问题,Delphi 组件没有启用 unicode(D2009 修复了这个问题),所以当您不更改组件时,您对其他语言的支持仍然有限。
一个好的免费解决方案是GNU gettext for Delphi。它有一些 TsiLang 不具备的功能 - 例如,您可以将有关如何计算事物(一、二、四、百零二、许多...的不同结尾)的知识放入翻译文件中,这样您就不会’不必教每个程序都知道这些东西。
Delphi 部分的许可证非常宽松,但我不确定包含的 GNU 内容会对您的应用程序产生多大影响。
获取Multilizer。它是用 Delphi 制作的,它可以处理 Delphi 程序,特别支持 VCL。您甚至可以轻松地为每种语言重做屏幕。使用 Multilizer,您可以使用不同的技术来翻译和运行您的程序。
Delphi 2009 添加了集成翻译环境/外部翻译管理器 ITE 和 ETM 现在可用于 Delphi 和 C++Builder。
在 Codegear 的文章:What's New in Delphi and C++Builder 2009中,他们指出:
集成翻译环境 (ITE) 是简化项目本地化的 IDE 的一部分。ITE 可以从现有项目创建新的本地化项目。ITE 不会自动翻译文本,但会提供一个对话框,列出所有需要本地化的文本以及输入相应翻译文本的字段。输入翻译文本并构建本地化项目后,您可以设置另一种语言活动并在本地化文本中显示表单;您不必切换语言环境并重新启动系统。这使您无需本地化系统即可执行本地化。
外部翻译管理器 (ETM) 是一个独立的应用程序,可处理源代码中的 DFM 文件和文本字符串。尽管 ETM 不允许您创建新的本地化项目,但它确实提供了一个对话框,列出了本地化文本和翻译的文本,类似于 ITE。
这是我计划在我想要将我的产品国际化时首先尝试的。
然而,对我来说,最简单的部分是翻译程序。困难的部分是翻译帮助文件。
我会说GNU gettext for Delphi结合TMS Unicode 组件包(以前在 TntWare 下免费)以获得组件中的 unicode 支持。
要使用或让翻译人员使用 gettext 文件,我建议查看可以编辑 .po 文件的免费跨平台Poedit 。
如果您拥有 DexExpress 组件,只需提及cxLocalizer 。