8

我需要在delphi 上翻译一个应用程序。现在俄语界面中的所有字符串。有哪些工具可以快速查找、解析字符串常量的所有内容?

人们如何翻译大型应用程序?

4

4 回答 4

9

GetText 应该可以,在http://dxgettext.po.dk/documentation/how-to搜索“extract”


如果您只需要翻译 GUI 和源中的资源字符串,并且不需要翻译 Pascal 源中的内联字符串常量,那么您可以尝试 Delphi 内置方法。然而论坛说 ITE 有问题。但至少那是官方的德尔福方式。

如http://www.gunsmoker.ru/2010/06/delphi-ite-integrated-translation.html的源表中所示,需要使用 ITM 手动准备翻译源


我记得我为 JediVCL 团队翻译了北极星的文本——所以他们做了一些提取。但我认为他们只是将所有字符 > #127 提取到一个文本文件中 - 没有结构,有常量和注释,全部放在一起。尽管如此,还是有一些组件,尽管我怀疑它是否可以按照您需要的方式使用:http ://wiki.delphi-jedi.org/wiki/JVCL_Help:TJvTranslator


还有商业工具。但我不知道他们的功能是否会帮助您完成初始提取和翻译任务。当您需要将大型应用程序翻译成多种语言时,它们可能会有很大帮助,但当您需要进行一次性转换时则不会。但也许我错了,如果您愿意,请查看他们的试用版。根据评论,这些套房被认为是最好的商业套房之一:

于 2012-09-07T06:52:11.930 回答
5

首先,我建议将所有可本地化的字符串常量移动到其单元文件中的资源字符串部分。IE

raise Exception.Create('Error: что-то пошло не так (in Russian language)');

将转换为

resourcestring
  rsSomeErrorMessage = 'Error: что-то пошло не так (in Russian language)';
...
raise Exception.Create(rsSomeErrorMessage);

更多关于资源字符串。

这个过程可以通过使用相应的Delphi IDE 重构命令或使用第三方实用程序(如ModelMaker Tools )来加速。

然后,您可以使用任何可用的本地化工具来翻译甚至国际化您的程序。我推荐我的 Delphi localizer - 它是免费的。

于 2012-09-07T09:23:49.250 回答
3

基本上,你有两种方法

  1. 基于资源的本地化工具(Delphi ITE、Multilizer、ecc.)
  2. 基于数据库的本地化工具(GetText、TsiLang、ecc.)

前者利用 Windows 资源支持,当应用程序启动时,资源加载可以重定向到存储在 DLL 中的不同资源。优点是可以本地化整个表单,包括图像、颜色、控件大小等,而不仅仅是字符串。此外,无需更改代码。缺点是最终用户本地化通常是不可能的,并且在不重新启动应用程序的情况下更改语言可能会比较棘手。Microsoft 应用程序,包括 Windows 本身,都使用这种技术。它将与任何将字符串正确存储到资源和 dfms 中的 Delphi 库一起使用。

后者将字符串存储在外部“数据库”中(甚至可以是文本文件......)。优点通常是用户可以添加/修改翻译,并且更容易即时切换语言。缺点是这种技术更具侵入性(它必须挂钩字符串加载/显示)并且可能需要更改代码,工具通常仅限于字符串本地化并且不提供更广泛的控制(图像,大小等),并且可能不会使用无法正确挂钩的未知控件/库。通常跨平台应用程序使用这种技术,因为并非所有操作系统都支持类似 Windows 的资源。

您应该选择最适合您和您的应用的技术。此外,一些工具简化了与外部翻译的协作,而另一些则没有。我更喜欢基于资源的方法,因为它不需要更改代码,也不会将我绑定到给定的库。

于 2012-09-07T07:17:02.090 回答
1

我们正在使用 dxgettext(用于 Delphi 和 C++ Builder 的 GNUGettext)和 Gorm(来自同一作者)。请注意,大多数工具都要求您使用英语作为主要语言并仅从该语言进行翻译。dxgettext 允许其他语言,但肯定会有未知的问题。准备好将大型应用程序国际化将比您当前想象的要多。

于 2012-09-07T06:59:57.817 回答