其實PC和PPC/SP在漢化的許多地方都是相似的,這里所說的漢化,是指漢化Windows下的PE文件,把其他語言界面的程序翻譯為中文界面。
要漢化一個軟件,一般的流程是這樣:
一、檢測軟件是否加了殼:
漢化一個軟件前我們首先要做的就是要看看軟件是否加了殼。因為程序加了殼后,一般情況下資源也被壓縮了,使用普通的漢化工具是無法漢化的。這時一般有兩種辦法:一種是完全脫殼后再漢化,這種方法可以漢化的比較徹底;
另一種是殼太猛,不好脫,只好退而求其次,用 freeRes 這樣的工具來釋放一下資源,再來漢化。這種方法只能漢化標準資源,一般就是主界面看到的部分,非標準資源因為未脫殼,還是無法漢化,所以這種方式漢化的不徹底。平常我們看到的漢化軟件一般都是完整的漢化,就是有殼的脫了殼,標準資源和非標準資源都漢化了。這里脫殼后的文件優(yōu)化也要注意,平常我們分析軟件的時候,只要脫了殼,程序能正常運行,沒有功能丟失就可以了,但要能漢化的話要求要嚴格一些。因為要使用一般的漢化工具來漢化程序的話,最好脫殼后程序的資源段(一般區(qū)段名稱是 .rsrc)要放在最后,這可以使用 FixRes 或 freeRes 這樣的工具來重建資源。
另外,平常我們把脫殼后的程序優(yōu)化時可以用 LordPE 刪除垃圾區(qū)段,再重建一下。但若要用漢化工具來漢化這種用 LordPE 優(yōu)化重建后的程序,很可能生成的漢化程序運行時會出錯。如果你要會手工優(yōu)化的話那是最好,可以刪除垃圾區(qū)段,根據(jù)文件對齊粒度和區(qū)段對齊粒度等來優(yōu)化文件,這樣手工優(yōu)化后的文件一般漢化時不會出錯。
如果不會手工優(yōu)化,可以在脫完殼重建資源后就用漢化工具來漢化,漢化完成后再用 LordPE 這樣的工具來優(yōu)化一下漢化后的程序就可以了。
二、檢測程序資源類型:
檢測程序資源類型我們同樣可以用 PEiD、FI 這樣的工具,主要是看程序是用什么開發(fā)工具寫的。各個開發(fā)工具編譯出來的程序標準資源類型是不同的。一般可以分以下幾種:
1、VC、MASM 這樣的開發(fā)工具做出來的程序要漢化的標準資源主要在 Menu、Dialog、String 等中。
2、Delphi、C++Builder 這樣的 Borland 公司開發(fā)工具做出來的東西要漢化的標準資源主要在 Rcdata 和 String 中。
3、VB 開發(fā)的程序,這種程序我們一般所說的標準資源是指 Form 中的資源,這種 VB 編的程序目前還沒有可以可視化編輯界面資源的工具,相比較而言漢化起來不是很痛快;)
4、上面說的主要是標準資源,再說一下一般定義的非標準資源。非標準資源一般簡稱為非標,指在程序中出現(xiàn),但又不在標準資源中的 UNICODE 字串或ASCII字串,這類字串漢化需要其他的工具。
判斷完程序是什么開發(fā)工具做的,我們就對資源類型大致有數(shù)了。下面就可以開始著手漢化了。
三、使用合適的漢化工具:
這里首先要說明一下,像什么 eXeScope、ResScope、ResHacker、PE Explorer 這樣的工具嚴格來講都不是漢化工具,只能說是資源修改工具。一般所說的漢化工具是指如 Visual Localize、PASSOLO、Multilizer、Alchemy CATALYST 這樣的工具。
這些工具都是可以可視化調整調整界面的,不過這些工具都不能用來漢化 VB 編的程序,關于漢化 VB 編的程序要使用其他的工具,F(xiàn)在針對上面所說的資源類型來談談工具的選用:
1、VC、MASM 類程序:這種程序可以用上面提到的任何一款漢化工具漢化,就我個人來講,我比較喜歡用 PASSOLO,Visual Localize 也是個很不錯的選擇。
2、Delphi、C++Builder 類程序:這種程序可以使用 PASSOLO、Multilizer 來漢化,一般用 PASSOLO 時應該選擇 PASSOLO 的 UNICODE 版本。對這類程序,還可以采用外掛語言包的方式來漢化標準資源。這種外掛語言文件的方法對一些加了猛殼,且又不想脫殼或不好脫殼的程序非常有用。因為 Borland 公司的編譯器編譯出來的程序默認對語言文件支持,編譯好的程序會自動檢測是否有語言文件。
一般的未加殼的此類程序,要采用語言文件漢化標準資源的話,只需生成對應的語言文件放到原程序目錄就可以了。對于加了猛殼的此類程序,如果只是漢化標準資源的話,不需要脫殼,只要用 freeRes 這樣的工具釋放一下壓縮資源,再漢化釋放資源后的程序,生成語言文件后放到原程序目錄下就可以讓主界面顯示對應語言了。用 PASSOLO、Multilizer 來漢化這樣的程序,還有一些區(qū)別的地方:
(1)、PASSOLO,漢化這類程序時選目標為簡體中文時默認生成的目標是后綴名為 CHS 的文件。不過生成的文件其實只是改了后綴名的漢化后的 EXE 或 DLL 等可執(zhí)行文件。這可以預先設置一下目標文件的后綴名,使生成的漢化后的文件后綴名為 EXE 或 DLL 等這樣的可執(zhí)行文件。如果只是想生成語言文件,最好在生成目標文件的高級選項中設置一下,把生成純資源 DLL 的選項選上,再把漢化生成的CHS文件的和漢化資源無關的項如圖標、位圖等刪掉,減小體積。
(2)、Multilizer,這個工具漢化此類的程序時,默認生成的就是語言文件,要想生成漢化后的可執(zhí)行文件,要在工程選項中把輸出文件中的“已本地化的文件”選項選上。而生成的簡體中文語言文件一般也使以 CHS 為后綴名。
采用語言文件方式漢化的話,只要把漢化完標準資源的語言文件和原程序放在同一目錄就可以讓主界面顯示中文了,不受主程序是否加殼的影響。這里要注意的是語言文件名要與原程序名稱一致,如你要漢化 test.exe,語言文件名就要是 test.CHS,同樣,你要是把 test.exe 改名為 test1.exe,語言文件名也相應要改為 test1.CHS。
3、VB 類程序:這種程序目前可以用來漢化的工具有 VB 窗體漢化器、GetVBRes、新出的 VBLocalize 等。缺點就是沒有可以可視化調整漢化后界面的工具。
4、非標準資源:這類非標資源的漢化主要采用的工具有點睛字符串替換器、CXA、楓葉字符替換器等。主要功能是把原程序需要漢化的非標字串提取出來,漢化完后再寫入。漢化非標資源要求程序必須沒有加殼,且這個地方漢化不當?shù)脑捜菀鬃尦绦虺霈F(xiàn)問題,比如不能漢化的字串漢化了等等這樣的情況,會讓程序運行出錯,也就是常說的漢化過度。所以漢化非標資源時要特別注意,要多測試,防止出現(xiàn)因漢化引起的bug。
四、漢化標準資源中的字串:
一般的漢化工具都支持字典及導入導出功能,字典主要靠自己積累,你漢化的軟件越多,生成的字典越多,漢化起其他程序來就越快。因為很多內容都可以直接用字典來漢化完成。如果是漢化一個新的程序,且又沒有什么可用的字典怎么辦?
我一般的做法是采用漢化工具的導出功能,把沒翻譯的源英文字串直接導出(這里注意如果是用 Multilizer 導出的話,需要把目標翻譯語言欄全選,再粘貼原始語言,這樣導出的采用 TAB 分隔的 ASCII 文本才好轉換為對照文本),再用字典轉換工具如 Fantasy Editor 或開心字典轉換工具把導出的文件轉換為對照文本,這樣就可以采用 SeaTools 這樣的工具來進行機器翻譯,機器翻譯完后再進行手工修改,全部翻譯好后再用上面說的字典轉換工具轉換為對應漢化工具的字典文件,現(xiàn)在就可以用這樣的字典文件來翻譯原程序了。
五、調整界面,設置對話框字體,漢化其他內容:
設置字體一些漢化工具在創(chuàng)建工程時就可以完成,如用 Visual Localize 的話需要在工程中設置一下對話框字體。字串漢化完后要做的工作就是調整界面,因為漢化后有些對話框的字串會顯示不全,按鈕過大或過小,對話框大小不合適等等都要調整。如果還有什么其他的資源如圖片等要漢化的,可以導出后修改了再導入。
六、漢化非標資源中的字串:
標準資源漢化完成后就要開始漢化非標準資源字串了。漢化方法與漢化標準資源類似,用我上面所說的非標資源提取工具先把非標字串提取出來,刪除不需要翻譯的,再做一下字典轉換(對于點睛字符串替換器、CXA 這樣的工具,如果有當前漢化的程序以前的非標字串翻譯,可以直接作為字典導入),先機器翻譯,再手工修改后導入。漢化非標字串如果有經(jīng)驗的話比較好,一般可以看出那些東西是需要翻譯的哪些是不需要翻譯的,哪些翻譯后字串長度比原字串短時補 0 還是空格。如果沒什么經(jīng)驗,就要多測試了。
七、漢化后程序測試及字體調整:
這個地方是比較繁瑣的,因為漢化后有可能造成程序出錯,這里就要重點檢測非標部分。另外漢化后有些地方的字體比較難看,這些地方是無法通過在標準資源中設置字體來修改的,這時就要通過調試來設置字體了。設置字體在 OD 中主要斷這幾個函數(shù):CreateFontA(W)、CreateFontIndirectA(W)、GetStockObject。找到地方再作修改。
說到這大致差不多了,其他的還有一些非標字串漢化后字串長度超過原字串長度,需挪移修改、漢化后有程序有自校驗需去除、字串加密后的漢化等等,我就不再這里說了,大家可以自行參考漢化新世紀的相關文章。此外還有一些圖形界面游戲的漢化是不能采取我上面說的這樣的方法的,如你要漢化 StarCraft,用我這種方法是不行的。漢化這樣的游戲可能要你分析程序,采用外掛方式來漢化。