浅谈DOS软件的汉化

来源:网络发布时间:2008-11-24
  近年来新推出的各类DOS软件很多,但由于绝大多数DOS新软件都是英文的,不符合绝大多数国人的习惯,我觉得要做到推广新DOS软件,少不了经过汉化这一环。
    DOS下的软件汉化与WINDOWS9X的不同,WIN9X的软件其文字信息多数使用资源(我实际上不懂EXE文件格式,所以不作准确描述)存放,可以用专门修改文件资源的软件如EXESCOPE等找出来汉化。DOS中的文字信息分散在EXE文件各处,要修改起来相对困难得多,当然FOXPRO例外,在RICHWIN某些版本中有一个汉化了的FOXPRO菜单,可以用它轻易将FOXPRO的菜单汉化。
    要汉化DOS软件,最简单的方法当然是在UCDOS/CCDOS等汉字系统下,用PCTOOLS等的十六进制编辑功能将英文信息逐个修改,然而工作量也最大,效率则最低。
    当然DOS下也有东方快车等自动汉化软件,不过它汉化出来的意思往往难以做到准确,有时用这些软件汉化出来的还不如使用原来的英文软件方便,在这方面我也没有多作尝试。
    还有一种方法是使用文字信息提取软件,将一定长度的文本信息和位置信息从EXE文件中提取出来,成为一个TXT文件,对这个TXT文件进行修改后,再按照位置写回去,这里要注意的是修改后的汉字字符串长度不得长于原来英文字符串的长度。
    我这里主要介绍第三种方法,也推荐想进行汉化的朋友使用,这也可当成一种学习英文单词的途径。我使用的文字提取软件是龚成兵的Editor 2.0(注:可在本站的“中文工具”中下载),用法很简单,如edit2 /s:4 ndd.exe ndd.txt就可将NDD.EXE中不短于4个字节的文字全部提取出来,存成NDD.TXT文件,用我们熟悉的编辑器进行编辑。文件里面是类似下面的字符串:
*0000790A 0009┃Unable to┃
……
    前面是提取的文字在EXE文件中的位置和长度,不要修改。*号表示略过,不将修改后的文字写回NDD.EXE,所以如果要将修改后的文字写入就必须去掉*号。
    后面夹在在表格符间的英文就提取出来的字符串,最好在CCED(或CCDOS97的ED,或CXDOS中自带的CXED)中并在表格锁定状态下进行修改,这样就不用担心修改后汉字的长度会长过原来的英文了。汉化时不妨加载希望辞海或译林英汉词典等,随时查阅不认识的单词。
    修改NDD.TXT之后,可以用edit2 /r ndd.exe ndd.txt将汉化后的信息写回去,然后在汉字系统中运行NDD测试效果,如果要作修改只需再修改NDD.TXT就可以了。
    再补充几点细节问题:
    1、提取出来的文本经常有%a,%d,%C之类的文字,这是程序要显示的变量,不要将它们修改。
    2、DOS早期的汉化比较困难,主要是因为早期的汉字系统不支持直接写屏,需要汉化者精通汇编语言并修改显示方式。现在的汉字系统可以支持绝大部分的英文软件,只需直接翻译即可,所以任何人都可以进行汉化工作。
    3、汉化前最好先运行该软件一次,确信其可以在汉字系统中正常运行。这主要是少数英文图形软件和HD-COPY等与部分汉字系统争夺时钟中断的软件会引起麻烦。

    有部分DOS软件使用了PKLITE等软件压缩,这时需要用UNP等先将它们解压缩,然后才进行文字提取工作。
    希望有更多的朋友加入汉化行列(我正在抽空汉化NORTON 2002中的NDD FOR DOS),使有更多的优秀DOS软件给国人使用。