ResBorn - 及其精妙的多语言引擎和附加工具

| 分类 软件  | 标签 分享  编程 

又要马儿跑,又要马儿不吃草:)

程序多语言支持一般来说有以下两种方式:

  1. 传统 INI 文件多语言支持:程序中动态加载INI内容,查找并替换界面中的语言相关字符串。
    优点:无需编程知识,普通用户而已自己定制语言文件。且升级语言文件非常方便(不涉及语言字符串之外的东西)。
    缺点:每次运行都耗费额外的工作量在解析语言文件和动态更新界面字符串上,有性能损失,且有些程序不通用。

  2. MUI 方式的多语言支持:基于 Windows 提供的 MUI 支持,每个语言编译一个DLL。
    优点:运行高效,无任何性能损失。
    缺点:只有开发者才能做到多语言支持。每添加一种语言都要新建一个DLL/MUI。并且界面的改动,很可能导致 MUI 需要更新。费劲!

ResBorn 是一种高效方便的多语言引擎,它结合了上述两种方式的优点,但没有上述两种方式的缺点。它的工作模式如下:

1.导出字符串: 枚举指定PE文件(可以是当前进程的EXE文件)中的所有资源,把其中语言相关的字符串(对话框、菜单、字符表)导出为 LNG 格式的语言字符串列表(UNICODE带BOM的文本文件),用户可以使用任何文本编辑器编辑它。

  1. 导入字符串:枚举指定PE文件(可以是当前进程的EXE文件,有自动退出更新机制)中的所有资源,根据1中所述的LNG文件,把特定的字符串更改结果回写到资源中,完成一个多语言版本的重构工作。

其中,步骤一可省略,开发者可以提供原始的语言文件。步骤二仅在切换语言时调用,正常运行时不需要耗费任何的性能损失(根本不用干活),和MUI方式一样。

简而言之,ResBorn 是一个 Win32 PE 资源专用解析引擎!

下面是 ResBorn Engine (源代码)的相关内容:

  1. ResBorn Engine 支持Windows各种版本,包括 Windows Mobile SP/PPC;
  2. 支持 UNICODE 和 ASCII 编译(废话,我的代码一直如此)。
  3. 加入完整的 ResBorn Engine 到 Pocket PC 程序中会导致程序增大 11KB (够小)。PC 上不超过 20K
  4. 全局 LANG 支持,例如,LNG 中加入一行“LANG=2052”,可以把所有的资源语言更改为中文。
  5. 如有需要,稍后可能会 Release 源代码。

更进一步地,你可以根本不用考虑多语言引擎,因为 ResBorn 本身提供了一个使用 ResBorn Engine 的工具(名字就叫 ResBorn),可以认为是一个专用资源汉化工具(或者英化?等)。使用 ResBorn 工具,可以INI格式的语言字符列表,修改后回写到EXE/DLL文件中,即可得到一个新语言版本的程序。(理论上针对任何PE有效,不需要在程序中做什么工作,即,对任何第三方程序可用)

2008.09.11 更新为 ResBorn 1.2.150(包含源代码):
ResBorn.1.2.150.rar

注意:第4个版本,已经比较完善了,代码支持在PC/PPC/SP中编译运行。使用前请自行备份要操作的EXE文件。


上一篇     下一篇