【发布时间】:2014-02-04 17:15:12
【问题描述】:
我们的应用程序有大约 400 次 MessageDlg 调用。问题在于翻译按钮和标题。这些文本在 VCL pas 文件中被定义为资源字符串常量,但似乎没有通过 GnuGetText(我已经使用调试器和 gnugettext.log 文件进行了检查)。 GnuGetText.pas 是我的 DPR 文件的 uses 子句中的第一个单元。但是,所有非 VCL 资源字符串以及对 _() 的调用都被正确翻译。
.po 和 .mo 文件中确实存在英文原版按钮文本及其翻译。
将我自己的 consts.pas 副本添加到项目中并没有改变任何事情,但下面的代码显示了一个窗口,显示两次“Sí”(一个来自 GnuGetText,另一个来自 Windows),正如预期的那样:
UseLanguage('es');
MessageBox(0, PChar(SYesButton), '', MB_ICONWARNING or MB_OK);
由于组件兼容性,我必须使用 Delphi5 进行编译。如果我将 VCL50.DE 放入 EXE 目录,则按钮文本是德语。该应用程序应翻译成西班牙语,我不知道有西班牙语 VCL50.xx 文件。
一个非常相似的项目共享 90% 的源代码,使用 Delphi 2010 和 GnuGetText 编译确实使用翻译的按钮文本,但两个编译器之间的窗口光学和字符串处理不同。
您对如何翻译 MessageDlg 按钮的想法?
【问题讨论】:
标签: delphi internationalization gettext