有很多种情况的,我遇到过的有以下几种:
1、在非标资源中,这个不必多说,但是要提醒一点的是有可能被加密保护了。如果这个程序是被加密的话,很可能整个程序包括标准资源都被加密了,当然也可能部分资源被加密了。这类软件需要先解密才能汉化。
2、字串在伪标准资源中。所谓伪标准资源,即本地化软件中可以看到,但显示的是二进制码,典型的是 Passolo 的语言列表和本地化报告内容,一般这些字串资源都作为一个资源项目列出。这个资源项目可以是文本,HTML、数据表等等,甚至可以是一个完整的程序。这类资源一般都需要导出后汉化,然后再导入。有些本地化软件比如 Passolo 本身可以完成这个工作,一些小的本地化工具如 Resource Hacker 也可以这个工作。
3、字串在 HTML 文档中。典型的是 Advanced Installer、InstallShield 2008,其许多界面采用了 HTML 编程, 这些对话框都是调用了外部的 HTML 文档。这类字串比较容易识别,类似于 HTML 界面的大多数是这样的字串。
4、字串在帮助文档中,典型的是 Advanced Installer,其界面中的显示的简单帮助内容,都在帮助文档中,要汉化它必须汉化帮助文档中的相应内容。
5、在语言文件中。这个就不用详细说了,许多支持多语言的软件,都是这种形式的,这些语言文件有的是文本文件,有的是XML文档,有的是特定编码的二进制文件。
6、调用操作系统文件中的字串资源。比如一些常用的打开、浏览、保存等对话框,直接调用了系统提供的资源,还有比如确定、取消常用的字串也可能调用系统的资源,这些字串会随着系统语言改变而改变。通常不用翻译。
7、嵌入在文件中,典型的是 .NET 程序,它其实是各种资源的复合体或者说是被打包成一个文件。需要用 .NET 解析器来解析,或者使用 DotNet Helper 或其他 .NET 反编译程序来解开。现在主流本地化软件都支持 .NET 程序,不需要先反编译。但是并不是所有本地化软件都能提取到所有资源,比如 Passolo 就比 Radialix 差好多,有时 Passolo 甚至不能自动识别 .NET 程序。
8、嵌入在安装程序中。比如 MSI 安装包的验证程序和MSI 安装包,所有的字串都嵌入在CUB文件内部的数据表中。还有早期的InstallShield安装包。如果你想要原汁原味的安装包,就需要解开汉化后再打包。
所以,汉化时建议按以下方法处理:
1、尽可能使用解包软件解开软件安装包到一个单独的文件夹。解包软件常用的是 Universal Extractor,几乎可以解任何安装包。这样所有的安装文件都在一个文件夹中,便于以后查找。
2、如果遇到某些字串没有被汉化,通常的做法就是使用 UltraEdit 的“在文件夹中查找”功能以及各种编码来搜索整个解开的安装文件目录。
3、实在搜索不到,那只能好好研究慢慢找了,比如是否被加密或压缩了。
总之,汉化是一个需要耐心、仔细、时间的工作,有时还需要一些技术和经验。建议初学者多看、多钻研、多练习,实在解决不了再请教。