程序多語言支持一般來說有以下兩種方式:
1. 傳統(tǒng) INI 文件多語言支持:程序中動態(tài)加載INI內(nèi)容,查找并替換界面中的語言相關(guān)字符串。
優(yōu)點:無需編程知識,普通用戶而已自己定制語言文件。且升級語言文件非常方便(不涉及語言字符串之外的東西)。
缺點:每次運行都耗費額外的工作量在解析語言文件和動態(tài)更新界面字符串上,有性能損失,且有些程序不通用。
2. MUI 方式的多語言支持:基于 Windows 提供的 MUI 支持,每個語言編譯一個DLL。
優(yōu)點:運行高效,無任何性能損失。
缺點:只有開發(fā)者才能做到多語言支持。每添加一種語言都要新建一個DLL/MUI。并且界面的改動,很可能導(dǎo)致 MUI 需要更新。費勁!
ResBorn 是一種高效方便的多語言引擎,它結(jié)合了上述兩種方式的優(yōu)點,但沒有上述兩種方式的缺點。它的工作模式如下:
1.導(dǎo)出字符串: 枚舉指定PE文件(可以是當前進程的EXE文件)中的所有資源,把其中語言相關(guān)的字符串(對話框、菜單、字符表)導(dǎo)出為 LNG 格式的語言字符串列表(UNICODE帶BOM的文本文件),用戶可以使用任何文本編輯器編輯它。
2. 導(dǎo)入字符串:枚舉指定PE文件(可以是當前進程的EXE文件,有自動退出更新機制)中的所有資源,根據(jù)1中所述的LNG文件,把特定的字符串更改結(jié)果回寫到資源中,完成一個多語言版本的重構(gòu)工作。
其中,步驟一可省略,開發(fā)者可以提供原始的語言文件。步驟二僅在切換語言時調(diào)用,正常運行時不需要耗費任何的性能損失(根本不用干活),和MUI方式一樣。
簡而言之,ResBorn 是一個 Win32 PE 資源專用解析引擎!
下面是 ResBorn Engine (源代碼)的相關(guān)內(nèi)容:
1. ResBorn Engine 支持Windows各種版本,包括 Windows Mobile SP/PPC;
2. 支持 UNICODE 和 ASCII 編譯(廢話,我的代碼一直如此)。
3. 加入完整的 ResBorn Engine 到 Pocket PC 程序中會導(dǎo)致程序增大 11KB (夠。C 上不超過 20K
4. 全局 LANG 支持,例如,LNG 中加入一行“LANG=2052”,可以把所有的資源語言更改為中文。
5. 如有需要,稍后可能會 Release 源代碼。
更進一步地,你可以根本不用考慮多語言引擎,因為 ResBorn 本身提供了一個使用 ResBorn Engine 的工具(名字就叫 ResBorn),可以認為是一個專用資源漢化工具(或者英化?等)。使用 ResBorn 工具,可以INI格式的語言字符列表,修改后回寫到EXE/DLL文件中,即可得到一個新語言版本的程序。(理論上針對任何PE有效,不需要在程序中做什么工作,即,對任何第三方程序可用)