Delphi程序设计中系统提示信息的汉化

Author: 黄根明 Date: 2000年 第37期

  对广大的编程爱好者来说,最尴尬的事莫过于在执行自己编写的中文软件时却弹出一条英文的提示信息。本文介绍一种快速简便的方法,对Delphi中的系统提示信息进行汉化。
  在Delphi中,定义系统资源字符串常量的源文件(.pas)都放在了Delphi安装目录的\Source目录下,并按其类别分布在几个子目录中,而其编译后的单元文件(.dcu)则全部放在Delphi安装目录的\Lib目录中,系统编译链接应用程序时会自动从这些单元文件中找到所需的字符串常量将其替换。因此,我们只要将\Source目录下的源文件中的提示信息字符串汉化后,编译成单元文件,再将该单元文件拷贝到\Lib目录中,覆盖原先的单元文件就可以达到汉化的目的。我们需要汉化某条提示信息时,找到包含该提示信息的源文件,将该提示信息字符串汉化就可以了。
  首先,在Delphi中建立一个新的项目,该项目中会自动包含一个名为Unit1的窗体文件,将其从项目中移去。然后从菜单中选择Project→Options,在弹出的Project Options对话框中,选择Directories/Conditionals标签,其中的Unit output directory文本框可以指定项目编译后单元文件的存放路径,在这里填上\Lib目录的完整路径,在笔者的系统中该路径为C:\Program Files\Borland\Delphi5\lib。最后将该项目文件存盘,并取名为HanHua.dpr。至此,这个用于汉化的项目文件就建立起来了,那么,怎么利用这个项目文件开始工作呢?下面,我就用一个实例来说明其使用的方法。
  在用Delphi编制某应用软件时,软件编译后,在运行时出现提示信息“Delete record?”,其汉化的步骤如下:
  1.在Delphi中打开项目文件HanHua.dpr。
  2.选择菜单Search→Find in Files,在弹出的对话框中,在Text to find:文本框里输入要查找的文本,在这里我们输入“Delete record?”,然后在Where组件框里选中Search in directories,并在Search Directory Options中输入\Source目录的完整路径,在我的系统中该路径为C:\Program Files\Borland\Delphi5\Source,最后别忘了将Include subdirectories选中,单击“OK”按钮开始查找。
  3.在代码编辑器底部会新增一个窗口,显示出所有包含你所要查找的文本的文件,在这个例子中,只找到一个文件,显示“C:\Program Files\Borland\Delphi5\Source\Vcl\dbconsts.pas(100):SDeleteRecordQuestion='Delete record?';”,双击可以打开该文件,系统会自动将光标移到“Delete record?”前面,将其改为“删除记录?”。
  4.选择菜单Project→Add to Project,在弹出的对话框中,系统会自动将当前打开的文件(这里为dbconsts.pas)作为默认打开文件,可以直接单击“打开”按钮将其添加到项目中。
  5.编译项目HanHua.dpr。
  最后,我们只要把前面的应用软件重新编译一次,其提示信息“Delete record?”就变成了“删除记录?”。怎么样,用这种方法进行汉化是不是又快又准?不过,因为我们是直接在系统目录中对源文件进行修改,有两个方面还存在一点问题,其一,如果在修改过程中出现错误,就找不到可以参照的源文件了;其二,重装Delphi后,所有的汉化结果就全部没有了。所以我们还需要对上面的汉化过程作一点改进,其实,我们只要在上面第3步和第4步之间增加下面这个步骤就可以了:
  选择菜单File→Save As,在弹出的对话框中,将文件换名存盘到别的目录中。
  在增加上面这个步骤后,前面提到的两个问题都得到了解决:系统源文件没有被修改,修改后的文件都放在了我们自己的目录中;重装Delphi后,只要重新编译项目HanHua.dpr就可以将以前汉化过的系统提示信息重新汉化。