邱元陽
編者按:也許與計算機的發(fā)展史有關,我們耳熟能詳?shù)能浖鏋橛⑽牡臄?shù)量眾多,如果英語水平欠缺,想順利地使用這些軟件便成了國人的難題。因此,軟件漢化隨之流行。在此,主持人和嘉賓將分兩期就軟件漢化之路進行闡釋,以期能夠為大家使用軟件帶來一些便利。
從計算機誕生之日開始,美國就主導了其發(fā)展,自然沒有考慮讓它支持中文的輸入和輸出,早期的操作系統(tǒng)和編程環(huán)境也一樣是英文的天下。為了便于中國人使用電腦,前輩們付出了不懈的努力。早期的漢字輸入法、漢卡、漢字操作系統(tǒng)、漢字庫等形式銘記下了這些擴大計算機應用范圍的歷史。
時至今日,漢字甚至多國文字在計算機上顯示和支持早已不在話下,然而在軟件上卻仍然有很多純英文的產品,給英文不好的使用者帶來了諸多不便。
雖然操作系統(tǒng)已經(jīng)出了各種不同的語言版本,但是應用軟件開發(fā)者卻不一定會照顧到每個國家的語言。除了一些非常常用的軟件和重要的行業(yè)軟件具有不同的語言版本或者語言包,很多我們要用到的軟件都還是英文版。
在國產軟件之外,仍有很多我們需要用到的英文軟件,為方便國人使用它們,一些編程愛好者們對它們進了“漢化”處理,使它們變成中文的工作界面,這就是軟件漢化。
● 軟件漢化原理
軟件漢化也稱為語言本地化,其目的就是為了使操作界面和提示變成中文方式,從而方便使用。根據(jù)軟件界面顯示方法的不同,實現(xiàn)漢化的方法也有所不同。
一些較小的工具軟件,或者原本沒打算提供多語言支持的軟件,其中的顯示信息是直接寫在程序中的,或者是調用封裝在程序中的資源。這類軟件的漢化就需要對程序進行修改,不過一般不是修改程序代碼,而只是修改相應的字串和資源。
如果軟件支持語言包,但是其中沒有中文語言包,那么漢化起來就容易多了,不需要修改程序,直接添加或修改語言包就行了。根據(jù)其他語言包進行翻譯整理,可以制作出中文語言包,將中文語言包依據(jù)規(guī)則添加到相應文件夾,或者替換掉其他某種用不上的語言包即可。以這種方式漢化的軟件,與中文版基本一樣。有些軟件本來是有中文語言包的,但是出于種種原因,中文語言包可能推出較遲,漢化愛好者就會推出自己的語言包供人使用。這種語言包在制作時,不僅可以做成中文的,還可以同時保留英文,實現(xiàn)雙語界面。比如Maya2012,在沒有推出中文版之前,就有中英雙語補丁流行,軟件菜單是雙語菜單,方便對照采用原版的教程進行練習。
還有一種是機器翻譯的漢化方式,也比較常用,如晴窗中文大俠。這種方法是通過工具軟件,將運行中的外文軟件界面在內存中進行翻譯,并重新顯示軟件界面。這類軟件往往還帶有常用軟件的漢化字典包,加載之后可以比較完美地顯示中文界面,而不是簡單地顯示機器翻譯的結果。
在DOS時代,軟件常常不是模塊化的,除了個別軟件有雙語切換功能外,一般都不具備語言包,外文軟件的漢化就比較困難。因為沒有程序源碼,要對程序進行修改,常常要通過十六進制編輯器甚至磁盤編輯器來進行。大名鼎鼎的PC-Tools,其磁盤編輯功能就常常被用來進行可執(zhí)行文件的修改和漢化,不過其工作過程非常麻煩,翻譯工作量大,字串還不能超過原來的長度,還必須能夠準確地找到字串位置進行替換,不能把變量當成字串進行替換,否則易造成程序出錯,不能運行。這種方法需要一定的經(jīng)驗,才能保證漢化的成功率。DOS程序的漢化,還必須有中文環(huán)境的支持才能正常顯示中文界面,否則會出現(xiàn)亂碼。困為漢化過程只是字串翻譯和替換,不可能進行直接寫屏操作,在沒有中文字庫的西文環(huán)境下并不能顯示漢字。
磁盤編輯的操作比較底層,在Windows時代,使用十六進制編輯器也能對可執(zhí)行文件中的字串進行修改,而且往往是很有效的。十六進制編輯器可以以ASSIC碼的方式顯示和編輯文件,在編輯存盤時不會附加任何其他信息,實現(xiàn)脫離原文件生成環(huán)境而修改文件,因此它不僅可以修改文本文件,也可以修改各種數(shù)據(jù)文件和程序文件,甚至能對內存狀態(tài)進行編輯修改。較常用的十六進制編輯器有UltraEdit32、Winhex等。
Windows下的PE可執(zhí)行文件,還可以通過資源編輯器或PE瀏覽器類的工具軟件進行修改,這也成為軟件漢化的一種方法,比之十六進制編輯器要輕松,也準確得多,在軟件漢化愛好者中被普遍使用。
隨著軟件漢化需求的增多,越來越多的愛好者加入軟件漢化隊伍,這也催生了專業(yè)的軟件漢化工具。利用專門的工具,可以實現(xiàn)傻瓜式的漢化,大大降低了漢化門檻。但是漢化工具并不是翻譯軟件,只是一種字串和資源替換的工具,要完美地進行軟件漢化,仍需要操作者具有一定的相關知識和基礎。
● 軟件漢化工具
工欲善其事,必先利其器。一款合適的工具軟件是進行漢化工作的前提。由于要漢化的軟件可能是各種各樣的,因而要用到的漢化工具也不相同。下面簡要介紹幾種常用的漢化工具。
1.eXeScope
eXeScope是款功能強大的exe程序修改器,能修改exe程序中的字體、菜單位置、對話框排序、字符串、圖片資源等,支持.exe、.dll和.ocx文件,常常用作軟件漢化工具,可直接修改VC++及Delphi編寫的程序。
2.PE Explorer
PE Explorer是功能強悍的可視化軟件漢化工具,也是常用的反編譯工具,可直接瀏覽、修改軟件資源,包括菜單、對話框、字符串表等。另外,還具備W32DASM的反編譯能力和PEditor的PE文件頭編輯功能,能夠容易地分析源代碼,修復損壞了的資源,還能任意修改程序內置的資源、信息,可以處理的文件格式包括EXE、DLL、DRV、BPL、DPL、SYS、CPL、OCX、SCR等32位可執(zhí)行程序。
3.Athena-A
Athena-A是通過字典來快速更新新版軟件中的非標準字符串資源的漢化工具,具有挪移字符串的功能,還有字典提取、字典編輯功能,從而減輕繁重的非標準字符串資源翻譯的工作量。由于其設計理念是通過字典來查找新版本中的字符串,因此無法實現(xiàn)新版本中新添字符串的翻譯,也由于非標準字符串資源的復雜性,還需要在完成翻譯后再耐心進行測試。endprint
Athena-A中附帶的Athena-R小工具用于更新新版本軟件的標準資源。一個軟件升級為新版本時,特別是升級變化不大時,其標準資源的變化也不會很大,這時可以利用這個小工具快速更新標準資源。
4.Radialix
Radialix是比較強大的軟件本地化工具,支持以VC++、Delphi、.net等語言編寫的軟件,以及INI格式文本文件的本地化,具有非標資源的本地化功能,可以設置更多的資源屬性。
5.Passolo
Passolo是目前世界上最流行的軟件本地化專業(yè)工具之一,具有所見即所得的漢化編輯方式,支持所有主流編程語言編譯的程序,能有針對性地漢化軟件界面的對話框、菜單等文字信息,還能修改軟件圖標和圖片。
漢化工作的一大難題就是漢化字典比較稀缺,Passolo支持谷歌和微軟的在線翻譯功能,并且自帶翻譯宏。Passolo的模糊匹配技術,可以將已確定的漢化詞組進行智能匹配,通常一個單詞對應多個含義,能加速翻譯工作。
6.ATC3D
Auto Translate Chinese 3D是一款軟件自動漢化工具,簡稱ATC3D。它可以把任何英文版本的軟件漢化成中文版本,平均漢化率達70%以上,而且是綠色軟件,無需安裝,相當方便,值得收藏。
7.Restorator
Restorator是一個非常好的漢化工具,可以漢化各種語言編的程序,對Delphi和C語言編譯的程序的漢化結果尤為優(yōu)秀。它的功能很強大,除了一般的編輯操作外,還可以采用拖放操作來完成資源的導入導出,可以利用“資源補丁”創(chuàng)建不受版權限制的補丁程序,支持對系統(tǒng)程序的修改,批量修改資源的語言設置。
8.UltraEdit
UltraEdit是一個功能強大的文本編輯器,可以編輯文本、十六進制、ASCII 碼,完全可以取代記事本。它內建英文單詞檢查、C++及VB指令突顯,可同時編輯多個文件,有HTML標簽顏色顯示、搜尋替換以及無限制的還原功能。一般用其來修改EXE或DLL文件,當然也能用來漢化軟件。
9.CrystalTile2
CrystalTile2是游戲漢化界相當知名的字庫漢化工具,不僅是游戲漢化工具,也是游戲字庫編輯器,可以生成、查看以及編輯點陣字庫,還能編輯修改游戲位圖,支持壓縮、解壓Huffman數(shù)據(jù),自帶的十六進制編輯器功能也非常強大,相比winhex擁有更多的功能。
新版CrystalTile2開放nds編輯器,用戶可隨意加載nds模塊編輯器。
10.晴窗中文大俠
晴窗中文大俠是面向個人用戶的一套專業(yè)漢化軟件,采用專業(yè)詞庫對照翻譯模式,即一套目標軟件就有一個和目標軟件相對應的專業(yè)字典包,保證了翻譯后的準確。由于使用界面動態(tài)翻譯技術,即完全是在目標軟件工作運行時,動態(tài)完成翻譯工作,只是對目標軟件在有文字輸出時才做翻譯處理,不會影響目標軟件原有的運行速度。并且所使用的字典搜索引擎經(jīng)過完全優(yōu)化處理,不會影響目標軟件原來的任何運行功能。軟件本身并不能更改目標軟件的內核和設置,完全獨立于目標軟件存在,對目標軟件非常安全,因此稱之為“安全漢化”。
軟件運行時可以隨時在中文與英文兩種界面狀態(tài)下進行切換,增加了用戶使用的靈活性。同時給用戶提供了一個字典編輯器,用戶可以根據(jù)自己的習慣對翻譯的內容進行修改和增補。
晴窗中文大俠基本支持所有CG專業(yè)軟件,幾乎囊括了國內市場上常用的關于平面設計、三維動畫、影視編輯等軟件,是個人使用和學習英文圖形圖像軟件不可多得的好幫手。
● 軟件漢化過程
有了上面的工具軟件,我們就可以開始軟件漢化工作了。但是別急,在選擇工具之前,我們還有不少工作要做,整個漢化過程也并不輕松。
1.軟件脫殼
很多程序為了打包多個文件、瘦身、防止修改等,可能會對原來的程序進行加殼處理。加殼后的程序仍是可執(zhí)行文件,具有與原程序相同的功能,但是文件結構和大小均已發(fā)生變化,不再有原編譯環(huán)境生成的文件的特點,因此普通的可執(zhí)行文件修改工具就無法直接對它們進行修改。
對于加殼后的程序,需要先進行加殼檢測,了解是用什么工具進行加殼處理的,然后再用相應的脫殼工具進行脫殼,還原為原來的可執(zhí)行文件,再進行漢化處理。有的程序可能用不同加殼工具進行過多次加殼,需要不斷脫殼,還原為最初的程序文件。
PEiD可以探測大多數(shù)的PE文件封包器、加密器和編譯器,是最常用的功能強大的查殼工具,幾乎可以偵測出所有的殼,其數(shù)量已超過470種。PE Detective、PE-Scan、FI等也是常用的查殼工具。
流行的脫殼工具有UPX、unAspack、Procdump、PEdump32等,可脫去目前大多數(shù)壓縮加殼軟件的殼。如果工具脫殼不成功,就需要手動脫殼了,一般借助TRW2000、TR、SoftICE等調試工具,對脫殼者的匯編語言水平的軟件調試能力有一定要求。
現(xiàn)在越來越多的軟件經(jīng)過壓縮和加殼處理,給漢化帶來許多不便,漢化愛好者也不得不學習掌握查殼脫殼技能。同樣,漢化之后的軟件,也可以再次加殼。
2.資源檢測
漢化過程主要是針對資源文件的,由于各種編譯環(huán)境使用的標準資源類型是不同的,就需要判斷程序是什么開發(fā)工具生成的,了解它們對應的資源類型。
前面提到的查殼工具PEiD、FI等也可以用來檢測程序資源類型,查看程序是用什么編程語言開發(fā)的,這樣便于有的放矢。VC、MASM生成的程序其標準資源主要在Menu、Dialog、String里面,Delphi、C++Builder等(Borland公司的編譯環(huán)境)生成的程序其標準資源主要在Rcdata和String里,而VB開發(fā)的程序其標準資源則是在Form中。endprint
程序中不在標準資源中的Unicode字串或ASCII字串,則屬于非標準資源,需要用其他工具來漢化。如果程序未能脫殼,可以用freeRes工具釋放出標準資源進行不完整漢化。
對于脫殼后的程序,有時還需要使用FixRes或freeRes等工具來重建資源,使程序的資源段位于最后,方便漢化。如果想對程序進行優(yōu)化,可以在漢化完成后用LordPE來進行,不要在漢化前進行優(yōu)化,否則可能會造成漢化后的程序運行出錯。
3.工具選擇
針對上一步中不同的資源類型,選擇相應的漢化工具進行處理。
對于Delphi、C++Builder編譯的程序,可以用Passolo、Multilizer來漢化,或者采用外掛語言包來漢化標準資源。Borland公司的編譯器默認支持語言包,編譯后的程序會自動檢測是否有語言文件。即使是沒有脫殼的程序,只要用 freeRes釋放標準資源漢化后生成語言包放到原程序目錄下,就可以顯示中文,實現(xiàn)不完整漢化。
VB程序的漢化難度較大,可用漢化工具有VB窗體漢化器、GetVBRes、VBLocalize等,沒有可以可視化調整漢化后界面的工具。
VC和匯編得到的程序,常??梢杂酶鞣N工具漢化,甚至只用eXeScope、ResScope、ResHacker等資源修改工具就能實現(xiàn)漢化。
4.字串漢化
下面就是進行真正的漢化工作了。其實質就是在工具軟件中進行文字翻譯的過程。
以eXeScope為例,打開要漢化的可執(zhí)行文件,左邊的資源欄目里會出現(xiàn)該文件的全部資源,這些資源就是我們要修改的內容。從資源中選擇和展開菜單,右邊就有該菜單的全部內容了,將各個菜單的名字都改成漢字就可以了,如將“File”改成“文件”。注意“&”及其后的字母不要修改,它是菜單對應的快捷鍵。同樣,從左邊資源中展開對話框,右邊就可以看到各個具體的標簽與控件名稱,將這些英文名稱改成漢字就可以了,而且還可以進行可視化修改。
可以想象,手工進行這樣的翻譯工作不僅需要較高的外語水平,也是一種高強度的腦力和體力勞動。比較省事的方法就是使用字典,一般的漢化工具都支持字典導入和導出。沒有字典的情況下,也可以利用漢化工具的字串導出導入功能,將導出的英文字串進行機器翻譯再人工修改校對,最后再導入回去。
上面說到的,都是標準資源,而非標資源的漢化就麻煩多了,需要使用另外的工具,如點睛字符串替換器、CXA、楓葉字符替換器等,把需要漢化的非標準字串提取出來,漢化完后再導入。非標資源漢化要小心謹慎,漢化不當就可能致使程序出錯。
5.測試調整
為避免漢化出錯而前功盡棄,在漢化過程中要多存盤,勤測試,程序運行沒有問題再繼續(xù)漢化。
由于中英文長度和外觀的不同,漢化的對話框可能會出現(xiàn)文字顯示不全、字體難看、按鈕過大或過小等情況,這就需要不斷地測試調整。有些漢化工具可以設置對話框和按鈕字體,有的卻不能設置。手工調整字體需要查找程序中設置字體的函數(shù)來進行修改。非標準資源中的字串字體可以用工具AutoFontSet來修改。
除VB的漢化工具外,大多數(shù)漢化工具都能進行可視化的界面調整,使?jié)h化后的程序在布局上比較美觀。
● 移動應用漢化
隨著智能手機、平板電腦等移動終端設備的普及,越來越多的APP開始走進人們的生活。這些豐富的移動應用中,不乏優(yōu)秀的外文軟件,因而移動應用的漢化需求也越來越多。
下面以最常見的移動操作系統(tǒng)安卓(Android)為例,簡要介紹移動APP的漢化過程。
1.準備
先準備好如下軟件:AndroidResEdit(arsc/xml漢化、簽名工具)、漢化狂人(arsc/xml漢化工具)、Notepad++Portable(dex漢化、文本編輯工具)、APKTool(編譯/反編譯工具)、Undex(dex解包/打包工具)、WinRAR(apk壓縮/解壓縮工具)及Java(apk編譯平臺)。
2.解壓
Android應用程序的擴展名為.apk,這實際上是一個壓縮包,可以用RAR等壓縮工具打開或解壓。APK文件解壓后,一般都會有META-INF和res文件夾,以及classes.dex、resources.arsc、AndroidManifest.xml文件。其中的classes.dex可用Undex繼續(xù)解壓出classes文件夾。resources.arsc是編譯后的資源文件,classes.dex是Java源碼編譯后的代碼文件,這兩個文件里都有單詞、語句需要漢化。AndroidManifest.xml文件里包含了軟件名稱、版本、權限、引用的庫文件等信息,一般不需要漢化。res文件夾里存放的大部分是軟件所需的資源及布局文件,部分需要漢化的單詞、語句會在其中的*.xml文件里。META-INF文件夾里存放的是證書文件,軟件修改后需要將里面*.RSA、*.SF、*.MF三個證書文件刪除再重新簽名,否則軟件無法安裝。
所以,一般我們要漢化的是resources.arsc、classes.dex和res文件夾里的*.xml文件。部分.html、.txt文件中可能也會有需要漢化的單詞,可以直接用Notepad++Portable文本編輯工具修改。如果在.png等圖片文件中有英文,則需要用圖像處理軟件修改。
為了方便打包,可以不解壓,直接在RAR中打開APK文件,要漢化的文件拖出去漢化,漢化完成再拖進來。
3.漢化
先用漢化狂人打開resources.arsc進行漢化,可以通過搜索欄搜索要漢化的單詞、語句。雙擊要漢化的單詞、語句即可在彈出的對話框中填寫中文,完成后點擊“OK”即可。注意不要將文件路徑漢化,用同樣的方法,漢化*.xml文件。endprint
漢化后的文件拖回APK安裝包中,此時可以先簽名,用手機安裝運行,看看漢化是否完整。若所有英文已經(jīng)漢化完成,就可以結束漢化工作,否則,還需要對classes.dex進行漢化。
用文本編輯工具Notepad++ Portable,對解包出的classes文件夾里的文件進行漢化,可以有目的地搜索漢化。完成后用Undex重新打包,再拖進APK安裝包內簽名,用手機安裝測試。
如果仍有漢化不完整處,用Notepad++Portable進一步搜索.txt和.html文件,繼續(xù)漢化。若漢化后出現(xiàn)亂碼,可以嘗試將文本格式更改為utf-8格式。
從以上過程可以看出來,Android應用程序的漢化似乎比Windows的更為麻煩,不過還好,一款革命性的Android程序漢化工具APKTool出現(xiàn)了!
APKTool可以反編譯APK安裝包,直接修改或添加語言包,減少漢化出錯概率,不僅可以對軟件進行漢化,還可以精簡軟件語言和去除廣告。
用APKTool的d命令反編譯PAK文件到一個文件夾中,查看其中res目錄下的文件,可以看到很多values開頭的文件夾,這就是語言包。其中values是英文語言包,values-zh是中國地區(qū)語言包(values-zh-rCN是簡體中文語言包,values-zh-rTW是繁體中文語言包),其他地區(qū)的語言包則可以精簡掉。
在values文件夾里,通常有arrays.xml、strings.xml等語言文件,里面有很多
除語言包外,在res文件夾內的layout和xml文件夾內有時也會有文件需要漢化,配合搜索功能,同樣處理就行。
漢化完成后,再用APKTool的b命令重新編譯打包成PAK文件(到dist目錄中找),簽名,安裝測試。
注意:APKTool是命令行方式工作,且需要Java環(huán)境支持。
4.簽名
前面在漢化完成打包后,安裝測試前,都提到了簽名過程,這是因為Android程序是需要簽名的,只不過平時我們從電子市場下載來的軟件都是已經(jīng)簽好名的,可以直接安裝。當軟件安裝包被我們漢化修改過后,原來的簽名文件就不能用了,需要重新簽名,軟件才能正常安裝。
先刪除META-INF文件夾內的*.RSA、*.SF、*.MF三個原證書文件,下載一個Android簽名工具,如AndroidResEdit(自帶簽名包),運行后,點擊“簽名”—“簽名apk文件”,選擇需要簽名的apk安裝包后點擊“立即簽名”即可。
此后,我們漢化后的軟件才能正常安裝運行。
● 軟件漢化與破解
需要注意的是,漢化版并不等于中文版。中文版是軟件本身的語言本地化結果,不同語言界面不影響軟件功能,而漢化版是第三方來進行的語言本地化工作,與原來的軟件無關,原開發(fā)者不會對由此造成的后果負責。有些軟件本身支持語言包,只是缺少中文語言包,漢化者只需要完成中文語言包的編輯和添加工作即可,不會造成軟件侵權。但對不支持語言包的軟件,漢化者則可使用資源編輯器或一些專用的漢化工具來修改程序的資源文件,最終使軟件的界面中文化,這個過程有可能造成侵權。這也是造成漢化軟件尷尬地位的原因之一。
當漢化者對軟件進行修改時,除了漢化必須的字串和資源修改之外,他還有可能對程序代碼進行修改,從而改變程序的功能。例如,嵌入廣告,繞過正版檢測,精簡軟件功能,解除軟件限制,甚至修正原版Bug等,這就是所謂的“特別版”。如果對共享軟件或商業(yè)軟件進行相應修改,讓它不經(jīng)授權就能使用完整的功能,這種版本的軟件就是“破解版”了?!疤貏e版”往往也是“破解版”,雖然方便了廣大用戶,但是它們侵犯了原版軟件的正當權益,從知識產權保護的角度考慮,不提倡使用。
語言包方式的漢化不影響軟件版權,除非軟件是禁止復制使用的。但未經(jīng)授權修改程序的漢化卻會侵權。不過因為它從正面推動和普及了軟件的使用,只要不涉及破解,一般不會被追究。前面討論漢化的工具和方法,只是從技術層面進行描述和研究,并非主張和推薦,讀者可以自己進行學習和實驗,但不能推廣這樣的作品。
為了尊重原軟件的作者和版權,有些漢化軟件可能會完整保留原來未經(jīng)修改的程序,而將自己漢化的結果文件(往往是主程序文件)附加在原來軟件的安裝包中,由用戶選擇使用。這個漢化后的文件稱為“漢化補丁”,用它替換和覆蓋指定的程序文件后,軟件即成為中文界面。有些軟件的漢化補丁可能比較復雜,涉及多個文件,其安裝方式也可能不是手工替換而是自動安裝。
對應的,如果軟件在漢化的同時還經(jīng)過了破解,那么就會有一個“破解補丁”,其用法與漢化補丁相同,甚至可能同時也是漢化補丁。
在漢化的同時,漢化者可能還會考慮到軟件安裝與使用的便捷性,進行適當修改,讓軟件無需安裝即可運行,這就是常見的“綠色版”。綠色版不一定都是漢化版,也可能原本就是中文版,只是修改后重新進行打包,使程序可以直接解壓使用。有的綠色版并未對程序進行修改,只是增加了一個注冊表文件,即所謂的“綠化補丁”,導入系統(tǒng),以滿足程序讀寫注冊表的要求。
需要說明的是,漢化版的軟件如果是修改程序得到的,可能會導致程序運行不穩(wěn)定或產生錯誤,畢竟它已經(jīng)不是原版。
不可否認,漢化軟件方便了很多國人,一些常用的漢化軟件大受歡迎。然而因為涉及程序的修改,軟件漢化也備受爭議。不管是否應該推崇,畢竟?jié)h化者的努力為我們提供了極大的便利,也成為軟件世界里一道獨具特色的風景線。