如何漢化軟件

 

看到論壇上經常有人問漢化方面的東西,我今天也來灌水一篇,來個漢化掃盲教程。寫的不好的地方歡迎大家指正!OK,現在我們進入正題。
我這裏所說的漢化,是指漢化Windows下的PE文件,把其他語言界面的程序翻譯爲中文界面。要漢化一個軟件,一般的流程是這樣:

一、檢測軟件是否加了殼。
漢化一個軟件前我們首先要做的就是要看看軟件是否加了殼。因爲程序加了殼後,一般情況下資源也被壓縮了,使用普通的漢化工具是無法漢化的。這時一般有兩種辦法:一種是完全脫殼後再漢化,這種方法可以漢化的比較徹底;另一種是殼太猛,不好脫,只好退而求其次,用freeRes這樣的工具來釋放一下資源,再來漢化。這種方法只能漢化標準資源,一般就是主界面看到的部分,非標準資源因爲未脫殼,還是無法漢化,所以這種方式漢化的不徹底。平常我們看到的漢化軟件一般都是完整的漢化,就是有殼的脫了殼,標準資源和非標準資源都漢化了。這裏脫殼後的文件優化也要注意,平常我們分析軟件的時候,只要脫了殼,程序能正常運行,沒有功能丟失就可以了,但要能漢化的話要求要嚴格一些。因爲要使用一般的漢化工具來漢化程序的話,最好脫殼後程序的資源段(一般區段名稱是.rsrc)要放在最後,這可以使用FixRes或freeRes這樣的工具來重建資源。另外,平常我們把脫殼後的程序優化時可以用LordPE刪除垃圾區段,再重建一下。但若要用漢化工具來漢化這種用LordPE優化重建後的程序,很可能生成的漢化程序運行時會出錯。如果你要會手工優化的話那是最好,可以刪除垃圾區段,根據文件對齊粒度和區段對齊粒度等來優化文件,這樣手工優化後的文件一般漢化時不會出錯。關於優化脫殼後文件這方面也有相關文章,我就不多說了。改天若有空我會專門寫一篇這樣的文章,不過不要過於期待,我向來喜歡開空頭支票的
如果不會手工優化,可以在脫完殼重建資源後就用漢化工具來漢化,漢化完成後再用LordPE這樣的工具來優化一下漢化後的程序就可以了。

二、檢測程序資源類型。
檢測程序資源類型我們同樣可以用PEiD、FI這樣的工具,主要是看程序是用什麼開發工具寫的。各個開發工具編譯出來的程序標準資源類型是不同的。一般可以分以下幾種:

1、VC、MASM這樣的開發工具做出來的程序要漢化的標準資源主要在Menu、Dialog、String等中。
2、Delphi、C++Builder這樣的Borland公司開發工具做出來的東西要漢化的標準資源主要在Rcdata和String中。
3、VB開發的程序,這種程序我們一般所說的標準資源是指Form中的資源,這種VB編的程序目前還沒有可以可視化編輯界面資源的工具,相比較而言漢化起來不是很痛快;)
4、上面說的主要是標準資源,再說一下一般定義的非標準資源。非標準資源一般簡稱爲非標,指在程序中出現,但又不在標準資源中的UNICODE字串或ASCII字串,這類字串漢化需要其他的工具。
判斷完程序是什麼開發工具做的,我們就對資源類型大致有數了。下面就可以開始着手漢化了。

三、使用合適的漢化工具
這裏首先要說明一下,像什麼eXeScope、ResScope、ResHacker、PEExplorer這樣的工具嚴格來講都不是漢化工具,只能說是資源修改工具。一般所說的漢化工具是指如VisualLocalize、PASSOLO、Multilizer、AlchemyCATALYST這樣的工具。這些工具都是可以可視化調整調整界面的,不過這些工具都不能用來漢化VB編的程序,關於漢化VB編的程序要使用其他的工具。現在針對上面所說的資源類型來談談工具的選用:
1、VC、MASM類程序:這種程序可以用上面提到的任何一款漢化工具漢化,就我個人來講,我比較喜歡用PASSOLO,VisualLocalize也是個很不錯的選擇。

2、Delphi、C++Builder類程序:這種程序可以使用PASSOLO、Multilizer來漢化,一般用PASSOLO時應該選擇PASSOLO的UNICODE版本。對這類程序,還可以採用外掛語言包的方式來漢化標準資源。這種外掛語言文件的方法對一些加了猛殼,且又不想脫殼或不好脫殼的程序非常有用。因爲Borland公司的編譯器編譯出來的程序默認對語言文件支持,編譯好的程序會自動檢測是否有語言文件。一般的未加殼的此類程序,要採用語言文件漢化標準資源的話,只需生成對應的語言文件放到原程序目錄就可以了。對於加了猛殼的此類程序,如果只是漢化標準資源的話,不需要脫殼,只要用freeRes這樣的工具釋放一下壓縮資源,再漢化釋放資源後的程序,生成語言文件後放到原程序目錄下就可以讓主界面顯示對應語言了。用PASSOLO、Multilizer來漢化這樣的程序,還有一些區別的地方:

(1)、PASSOLO,漢化這類程序時選目標爲簡體中文時默認生成的目標是後綴名爲CHS的文件。不過生成的文件其實只是改了後綴名的漢化後的EXE或DLL等可執行文件。這可以預先設置一下目標文件的後綴名,使生成的漢化後的文件後綴名爲EXE或DLL等這樣的可執行文件。如果只是想生成語言文件,最好在生成目標文件的高級選項中設置一下,把生成純資源DLL的選項選上,再把漢化生成的CHS文件的和漢化資源無關的項如圖標、位圖等刪掉,減小體積。
(2)、Multilizer,這個工具漢化此類的程序時,默認生成的就是語言文件,要想生成漢化後的可執行文件,要在工程選項中把輸出文件中的“已本地化的文件”選項選上。而生成的簡體中文語言文件一般也使以CHS爲後綴名。
採用語言文件方式漢化的話,只要把漢化完標準資源的語言文件和原程序放在同一目錄就可以讓主界面顯示中文了,不受主程序是否加殼的影響。這裏要注意的是語言文件名要與原程序名稱一致,如你要漢化test.exe,語言文件名就要是test.CHS,同樣,你要是把test.exe改名爲test1.exe,語言文件名也相應要改爲test1.CHS。
3、VB類程序:這種程序目前可以用來漢化的工具有VB窗體漢化器、GetVBRes、新出的VBLocalize等。缺點就是沒有可以可視化調整漢化後界面的工具。
4、非標準資源:這類非標資源的漢化主要採用的工具有點睛字符串替換器、CXA、楓葉字符替換器等。主要功能是把原程序需要漢化的非標字串提取出來,漢化完後再寫入。漢化非標資源要求程序必須沒有加殼,且這個地方漢化不當的話容易讓程序出現問題,比如不能漢化的字串漢化了等等這樣的情況,會讓程序運行出錯,也就是常說的漢化過度。所以漢化非標資源時要特別注意,要多測試,防止出現因漢化引起的bug。

四、漢化標準資源中的字串
一般的漢化工具都支持字典及導入導出功能,字典主要靠自己積累,你漢化的軟件越多,生成的字典越多,漢化起其他程序來就越快。因爲很多內容都可以直接用字典來漢化完成。如果是漢化一個新的程序,且又沒有什麼可用的字典怎麼辦?我一般的做法是採用漢化工具的導出功能,把沒翻譯的源英文字串直接導出(這裏注意如果是用Multilizer導出的話,需要把目標翻譯語言欄全選,再粘貼原始語言,這樣導出的採用TAB分隔的ASCII文本纔好轉換爲對照文本),再用字典轉換工具如FantasyEditor或開心字典轉換工具把導出的文件轉換爲對照文本,這樣就可以採用SeaTools這樣的工具來進行機器翻譯,機器翻譯完後再進行手工修改,全部翻譯好後再用上面說的字典轉換工具轉換爲對應漢化工具的字典文件,現在就可以用這樣的字典文件來翻譯原程序了。

五、調整界面,設置對話框字體,漢化其他內容
設置字體一些漢化工具在創建工程時就可以完成,如用VisualLocalize的話需要在工程中設置一下對話框字體。字串漢化完後要做的工作就是調整界面,因爲漢化後有些對話框的字串會顯示不全,按鈕過大或過小,對話框大小不合適等等都要調整。如果還有什麼其他的資源如圖片等要漢化的,可以導出後修改了再導入。

六、漢化非標資源中的字串
標準資源漢化完成後就要開始漢化非標準資源字串了。漢化方法與漢化標準資源類似,用我上面所說的非標資源提取工具先把非標字串提取出來,刪除不需要翻譯的,再做一下字典轉換(對於點睛字符串替換器、CXA這樣的工具,如果有當前漢化的程序以前的非標字串翻譯,可以直接作爲字典導入),先機器翻譯,再手工修改後導入。漢化非標字串如果有經驗的話比較好,一般可以看出那些東西是需要翻譯的哪些是不需要翻譯的,哪些翻譯後字串長度比原字串短時補0還是空格。如果沒什麼經驗,就要多測試了。

七、漢化後程序測試及字體調整
這個地方是比較繁瑣的,因爲漢化後有可能造成程序出錯,這裏就要重點檢測非標部分。另外漢化後有些地方的字體比較難看,這些地方是無法通過在標準資源中設置字體來修改的,這時就要通過調試來設置字體了。設置字體在OD中主要斷這幾個函數:CreateFontA(W)、CreateFontIndirectA(W)、GetStockObject。找到地方再作修改。

說到這大致差不多了,其他的還有一些非標字串漢化後字串長度超過原字串長度,需挪移修改、漢化後有程序有自校驗需去除、字串加密後的漢化等等,我就不再這裏說了,大家可以自行參考漢化新世紀的相關文章。此外還有一些圖形界面遊戲的漢化是不能採取我上面說的這樣的方法的,如你要漢化StarCraft,用我這種方法是不行的。漢化這樣的遊戲可能要你分析程序,採用外掛方式來漢化,這裏不作討論。

發佈了23 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章