我需要在delphi上翻译一个应用程序。现在俄语界面中的所有字符串。 有哪些工具可以快速查找,为字符串常量分配所有的句子?
人们如何翻译大型应用程序?
答案 0 :(得分:8)
GetText应该能够做到,在http://dxgettext.po.dk/documentation/how-to
搜索“提取”如果只需要在源代码中翻译GUI和 resourcestring ,并且不需要Pascal源代码中的内联字符串常量进行翻译,那么您可以尝试使用Delphi内置方法。然而论坛说ITE是错误的。但至少那是德尔福官方的方式。
要使用ITM翻译来源,需要手动准备,如http://www.gunsmoker.ru/2010/06/delphi-ite-integrated-translation.html
中的源表所示我记得我为JediVCL团队转换了Polaris文本 - 所以他们做了一些提取。但我认为他们只提取了所有字符> #127成文本文件 - 没有结构,有常量和注释,都在一起。 尽管如此,仍有一些组件,但我怀疑它可以按照您的需要使用:http://wiki.delphi-jedi.org/wiki/JVCL_Help:TJvTranslator
还有商业工具。但我不知道他们的功能是否可以帮助您完成初始提取和翻译任务。当你需要保存翻译成多种语言的大型应用程序时,它们可能会有很大的帮助,但是当你需要进行一次性转换时则不然。但也许我错了,如果你愿意,请查看他们的试用版。通过评论,这些套房被认为是最好的商业套房:
答案 1 :(得分:5)
首先,我建议将所有可本地化的字符串常量移动到其单元文件中的资源字符串部分。即。
raise Exception.Create('Error: что-то пошло не так (in Russian language)');
将转换为
resourcestring
rsSomeErrorMessage = 'Error: что-то пошло не так (in Russian language)';
...
raise Exception.Create(rsSomeErrorMessage);
使用共同作者Delphi IDE refactoring command或第{* 3}}等第三方实用程序可以加快此过程。
然后,您可以使用任何可用的本地化程序来翻译甚至国际化您的程序。我建议ModelMaker Tools - 它是免费的。
答案 2 :(得分:3)
基本上,你有两种方式
前者利用Windows资源支持,可以在启动应用程序时将资源加载重定向到存储到DLL中的另一个。优点是整个表格可以是本地化的,包括图像,颜色,控制尺寸等,而不仅仅是字符串。而且,不需要更改代码。缺点是最终用户本地化通常是不可能的,并且在不重新启动应用程序的情况下更改语言可能会更棘手。 Microsoft应用程序(包括Windows本身)使用此技术。它适用于任何Delphi库,它们可以正确地将字符串存储到资源和dfms中。
后者将字符串存储在外部“数据库”中(它甚至可以是文本文件......)。优点通常是用户可以添加/修改翻译,并且可以更轻松地切换语言。缺点是这种技术更具侵入性(它必须挂钩字符串加载/显示)并且可能需要更改代码,工具通常仅限于字符串本地化并且不提供更广泛的控制(图像,大小等),并且可能不会使用未知的控件/库,他们无法正确挂钩。通常,跨平台应用程序使用此技术,因为并非所有操作系统都支持类似Windows的资源支持。
您应该选择最适合您和您的应用的技术。此外,一些工具可以简化与外部翻译人员的协作,而其他工具则不然。我更喜欢基于资源的方法,因为它不需要更改代码,也不会将我绑定到给定的库。
答案 3 :(得分:1)
我们正在使用dxgettext(用于Delphi和C ++ Builder的GNUGettext)和Gorm(来自同一作者)。请注意,大多数工具都要求您使用英语作为主要语言并仅从中进行翻译。 dxgettext允许使用其他语言,但必然存在未知问题。做好准备,将大型应用程序国际化比你目前想象的更多。