Archive for April 5th, 2006

卫星DLL

Wednesday, April 5th, 2006

在Dr.International所著Developing International Software一书中,对Windows应用程序本地化推荐使用多资源文件的卫星DLL方式。所有应用程序资源,包括图标、位图、对话框、字符串、菜单等都编译成动态链接库并为每种语言生成一个这样的DLL文件。而主应用程序中只保留的逻辑部分代码。

对于Java应用来说,文本字符串资源文件一般为.properties, .XML;位图、图标等可以打包成.jar文件。程序对话框、菜单则往往和Java代码耦合在一起。Java的处理方式对于本地化要容易一些因为翻译只需要直接编辑这些文本文件或替换图像文件即可。

考虑到Windows的资源DLL因为是二进制无法直接操作。最直接的方法是打开Visual Studio用Resource Editor进行翻译,然后Build:显然是一个很昂贵的解决方案。

另外就是Microsoft Localization Toolset (ftp://ftp.microsoft.com/softlib/mslfiles/rltools.exe) 。它可以直接打开EXE, DLL或者RES文件,通过GUI界面对DLL内部的字符串进行翻译。在完成后可以自动把翻译好的内容生成新版本DLL。这样,对于本地化工程师来说,学会使用这个工具足够完成翻译的任务了。

不过MLT的设计很笨拙:一个项目文件包一个项目文件;project文件中hard code项目路径;生成文件的扩展名有3、4种。最让人吃惊的是其帮助文件中的截屏居然是Windows 3.1时代的。(MLT最后发布日期应该是1996年)