小正正的中文化魔法

Since 1998/4/21

我變我變我變變變~~~

想要自己來中文化軟體嗎? 也找了不少工具,看了不少說明您!! 是不是還是一頭霧煞煞的感覺呢? 真不知從何下手好...。看看小正正怎麼來中文化一套軟體的您!!

我中文化過的軟體中,比具有代表性的有: Microsoft FrontPage 98、NetObjects Fusion 3.0 和 Ulead SmartSaver 3.0。這裡寫了我中文化這幾套比較龐大的軟體之後的一些心得和體驗,和我找出來比較快速且漂亮的中文化方法,供您作為參考!!

我在這裡並沒有寫出每一套軟體的操作使用方法哦!! 那樣的話太囉唆複雜了,我只提供您一個中文化的概念和步驟,軟體的操作使用方法您必須去看那套軟體的使用說明,或是參考小正正或其他人寫的教學檔案,最重要的是自己多動手試試看就清楚啦!!

在這本「魔法書」中提到的工具軟體,大部分都可以在中文天地網、一峰小站和中文化軟體聯盟的 FTP 站找的到 (除了 Visual C++ 是商業軟體以外)。您可以自行去下載來使用。

準備進入中文化的魔法世界了嗎?

一、做出字典檔

1. 保留舊的檔案
剛拿到一套軟體要中文化,先將這套軟體安裝起來,並且建立一個叫做 old 的資料夾,把需要中文化的 exe 檔和 dll 檔備份一份到 old 資料夾中,以便日後做 patch 檔使用。能夠中文化的檔案只有 exe 和 dll 這兩種檔案,但並不是每一個 exe 和 dll 都需要中文化,因為裡面不一定有資源可以讓我們修改翻譯,有些 dll 檔是不需要顯示訊息和字串的。

2. 篩選要翻譯的檔案
用 Visual C++ 把每個 exe 和 dll 的 resource 都開啟來看一遍,看看哪些是有 Dailog、Menu、String Table 需要我們來中文化的,把那些不需要中文化的檔案從 old 資料夾中刪除掉。再建立一個叫做 new 的資料夾,把 old 中剩下的檔案複製一份到 new 中,以後要修改的就是 new 中的檔案了,old 中的就保存好不要去動它。

3. 存成 rc 檔
用 Visual C++ 一個一個的把 exe 和 dll 的 resource 開啟,先轉換 Dailog、Menu、String Table 的語系成為 Chinese (Taiwan),然後另存成 .rc 的檔案 。如果 resource 中有很多 bmp 或 icon 的資源也會一併存出來,所以在存成 rc 檔之前,先把那些資源刪除掉,剩下要翻譯的就好,再另存成 rc,這樣也會加快翻譯的速度。

4. 用 glossary.pl 產生未翻譯字典檔
利用 glossary 中的 glossary.pl,和兩個原始的英文 rc 檔,做出一個尚未翻譯的字典檔。Glossary 的本意是要利用翻譯前和翻譯後的 rc 來做字典檔,但是我們目前都尚未翻譯,所以就先利用兩個同樣為翻譯的 rc,做出未翻譯的字典檔來慢慢翻譯。

5. 用 sortout.pl 將字典檔排序
sortout.pl 也是 glossary 中的工具之一,將字典檔排序用的,可以幫我們去掉重複的字串,而且依照字母將同樣的字放在一起,我們在翻譯時也比較不會出現同一個英文字但前後翻譯不同的狀況 (當您翻譯一個七千多行的字典檔的時候就知道了)。

如果您有之前翻譯過的字典檔 (像是中文化舊版時留下的),或著一些標準的字典檔 (例如: mfc42.dll 的字典檔,很多軟體都是用到 mfc42.dll ),在這時也可以將之和新的字典檔合併。用純文字編輯器把這些已有字典檔的內容,剪貼到新的字典檔的最後面,然後用 sortout.pl 來排序一下新的字典檔就可以了!! 它會用後面的來取代前面的翻譯 (不過有時好像怪怪的)。

當然,您也可以用小飛俠的 cpatch 軟體或是其他會自動幫您抓字串並且自動翻譯的軟體來產生字典檔,反正字典檔都是一樣的,奇數行是英文,偶數行是中文。我比較相信從 rc 檔中抓出來的字串比較完整,而且我喜歡完全自己翻譯,可以控制翻譯品質,所以我習慣用 glossary.pl 來做字典檔。

小正正提供您 mfc42.dll 的字典檔,把它抓回去用您!! 相信對您有很大的幫助的!!

如果用 sortout.pl 來合併字典檔時怪怪的,沒有取代好,那小正正再教您一招: 先用舊的字典檔翻譯原始的 rc 檔,再用這個翻譯不完全的 rc 和原始英文 rc 檔和 glossary.pl 產生字典檔,這樣應該就萬無一失了,因為需要用到舊的字典檔的部份先被翻譯過了。

二、翻譯原始程式

1. 翻譯 rc 檔
將字典檔翻譯好了之後,我們利用 glossary 中的 trans.pl,把剛剛那個英文 rc 檔給翻譯成中文。如果您是用其他的軟體來產生字典檔 (例如: cpatch),請先將字典檔中的特殊記號去掉 (只剩下英文和中文翻譯) 再使用 trans.pl。

2. 將 resource 剪貼回原始程式
用 Visual C++ 開啟這個翻譯過的 rc 檔案和該 rc 檔的原始程式 (例如: Fusion.exe 的 rc 檔是 Fusion.rc),把翻譯過的 rc 中的資源 (Dailog、Menu、String Table) 一一用剪貼複製的方式貼到原始程式的 resource 中,把原來英文的資源刪除掉 (同樣的資源保留一個中文的就好),並且順便檢查翻譯的正確性,Dailog 中有沒有字串被擋住,需要調整大小...等等。

在這裡,如果您之前沒有把 rc 的語系先設成 Chinese (Taiwan) 的話,開啟 rc 中的資源就會變成亂碼,要特別的注意。

3. 回存檔案
都弄好、調整好了以後,就把 resource 回存檔案中您!! 千萬記得, Visual C++ 要在 Windows NT 下才能回存, Windows 95 或 98 都不可以!! 所以之前的步驟您可以在 Windows 95 上做,但是這個步驟一定得在 Windows NT 做上才行。

4. 測試中文化後的程式
把中文化好的程式複製回原本程式安裝的目錄,取代原來的檔案,執行看看,開始測試是否可以正確的執行程式各項功能,或是哪邊有翻譯不妥的地方,再回到 Visual C++ 中修改。

如果程式不能正確執行,表示您在 String Table 中修改到了一些系統變數,回去檢查看看、猜猜哪些比較像是系統變數,把它恢復成原來的英文字串。然後存檔再執行、再測試,您可能需要來回跑好幾遍,到一切都完整無誤才行。(您總不能把一個程式中文化到壞掉您!!)

要特別注意有下拉選單的 Dailog,因為這些下拉選單中的內容往往是 ASCII 文字,不是從 String Table 中去取字串 (我稱之為程式寫的爛,讓我們中文化很麻煩)。 Resource 中都是 Unicode 字串,在 Visual C++ 中也無法看到 ASCII 文字,更糟的是,如果您變動了有下拉選單的 Dailog 的任何內容,存檔時 Visual C++ 就會把 ASCII 文字都存成 Unicode。這時我們測試程式時,下拉選單中的內容就會不見啦!!

所以小正正的方法是,編輯 resource 時不要去動有下拉選單的 Dailog,讓它保有原來的樣子,甚至不要去改變它的語系,這樣存檔時 Visual C++ 就不會去動到它的 ASCII 文字。但這樣就沒有中文化那個 Dailog 了啊!! 沒關係,後面會教您其他的方法來補救。

有些有下拉選單的 Dailog 是可以去編輯修改的,因為該下拉選單的內容並不是 ASCII 文字,它有可能是從 String Table 中去取字串,或是一些系統資訊 (例如: 字型),判斷原則是,那些下拉選單內容是雖情況變動的。這就要靠您自己聰明的頭腦去判斷到底那些可以翻譯,哪些不行了!!

遇到這類 Dailog 時,您可以將翻譯一半的程式先存檔備份,然後來做個試驗,修改這種 Dailog 看看會不會有問題。如果有問題的話再把備份拿回來就好了。要特別注意的是,萬一有問題,您把原始 rc 中的那一個英文 Dialog 剪貼回來可能沒有用處,因為剪貼的過程就相當於修改 Dailog,ASCII 文字早就死翹翹了。 (我只說 "可能" 沒有用處,有些程式這樣剪貼還是有用的。)

三、最後的動作

1. 修改剩下的字串
剛剛不是有一些有下拉選單的 Dailog 還沒有中文化嗎? 雖然程式可以正確執行,但看起來是在很礙眼。(如果沒有,您的運氣很好!!) 我們要利用直接從程式中抓 Unicode 字串的中文化軟體來翻譯這些剩下的東西,不能用 Visual C++ 去編輯 resource。

這類軟體有很多,大家看到中文化工具的大多是這種軟體 (例如: cpatch)。我習慣用林志全的中文化,一個一個字串來修改,這樣或許比較累,但我覺得這樣做可以依據每個 Dailog 替字串保留的長度的不同來翻譯,可以做到比較完美。

這樣的翻譯方法就必須考慮到字數的多寡 (中文字不能比英文多) 和 Dailog 中字串顯示位置的大小。做出來是比直接編輯 resource 醜一點,不過這也是沒辦法之中的辦法。

2. 製作 patch 檔案
都測試翻譯修改完成之後,接下來就是要製作 patch 檔案。我使用張維鈞的 Wpatch 加上 MDIFF 來製作 patch 檔案,而且我們之前有保留 old 和 new 這兩個資料夾。製作完成後最好自己多測試幾次,看看是不是能夠正確的 patch 原始檔,這時您可能需要移除再重新安裝軟體來試試。

3. 寫使用說明,包裝程式
patch 檔案正確無誤了以後,寫一個詳細的使用說明,然後用 Winzip 包裝一下把這幾個檔案壓縮起來,就可以丟到網路上羅!! 如果您更有心的話,還可以用 WinZip Self-Extractor 製作自動解壓縮程式,然後自動執行 patch 檔案。如果有很多個 patch 檔要執行,可以寫一個 .bat 的批次檔,讓使用者更方便!!

4. 散佈出去羅!!
送上網路要送到哪裡好呢? 小正正的習慣都是丟這三個地方: 中文天地網的阿烈、一峰小站的小峰和中文化軟體聯盟的 FTP 站。您可以把檔案附在 Email 中寄給他們,或是用 FTP 直接丟上中文化軟體聯盟的 FTP 站就可啦!! 這樣大半天下的人就能看到您的佳作羅!!

大家最常用製作 patch 的軟體就是 MDIFF,因為它的演算法很好,製作出來的 patch 檔案很小,很適合在龜速資訊網路上面流傳。但是它的缺點是: 它是命令列 dos 模式下的,不容易使用,要套用 patch 檔的人也不方便。不過配合上張維鈞的 Wpatch,就可以很容易的製作 patch 檔 (Wpatch 是 MDIFF 的視窗操作介面)。再加上 Winzip 的自動解壓縮,也可以很容易的讓使用者套用我們做好的 patch 檔案。

製作 patch 檔案的軟體還有很多,像是小正正自己中文化過的 WinPatch,它完全是視窗的介面,而且有很好用的精靈來指導您製作 patch 檔案,也可以做成自動解壓縮檔直接套用,更強的是,它可以分析一整個目錄和下面的多個幾目錄,看哪些檔案需要 patch,如果您有很多檔案需要中文化,可以用 WinPatch 來製作 patch 檔。但缺點是 WinPatch 至做出來的檔案比較大。

我在中文化微軟老大的 FrontPage 98 時,製作 patch 檔真是讓我傷透腦筋了,因為 MDIFF 和 WinPatch 做出來的檔案都不能正確 patch,原來微軟老大把使用者名稱和產品序號和其他不知道什麼資訊都放進程式之中,所以用不同的名稱序號安裝,或是在不同的電腦上安裝,原始檔案都是不一樣的,就無法正確的 patch。

後來我發現林志全先生的改版可以做出正確的 patch 檔,雖然檔案比較大,不過是唯一可以用的。

 



回教學