我有一个大型应用程序,我想迁移到阿拉伯语。我已经在resourcestring关键字下定义了我们向用户显示的字符串。
我正在使用随Delphi 6提供的外部翻译管理器。但是,我对使用该工具不太满意。我想创建一个资源只有dll,其中包含所有翻译的字符串,如Delphi ETM的工作方式,然后在运行时通过单击按钮在语言之间切换。
我能够将资源字符串链接到Dll,但是表单的字幕和提示以及组件属性如何?我在运行时根据语言加载Dll,但表单属性没有反映,因为它们在Dll中不可用。
任何正确方向的指针???
由于 Rahul W
答案 0 :(得分:1)
Delphi本地化工具和运行时支持的作用是将资源加载(包括表单)从可执行文件重定向到DLL。表单,它们的组件和控件(非默认属性)作为资源存储到可执行文件中(只要您不在运行时完全创建它们 - 但是您必须逐个设置它们的属性)。
因此,如果您想要使用标准翻译工具,您必须以相同的方式工作。 DLL资源向导所做的是将所有项目.dfm(以及您手动添加的项目)和资源字符串提取到可以本地化的副本。启动应用程序时,表单加载代码会检查应加载.dfm的位置。您应该覆盖此代码以加载资源。
请注意,运行时更改语言可能需要不同的方法,因为从资源加载整个表单可能会将其“重置”为创建状态。另一方面,与gettext这样的方法相比,它允许远远超过表单文本(包括图像,颜色)进行本地化,并且可以轻松地将控件大小调整为新字符串。恕我直言gettext有利于简单的需求,但当本地化成为一项复杂的任务,你可能需要本地化一个非常不同的“文化”,需要更强大的工具。