Make your own free website on Tripod.com


滄海遺珠之中文化技巧

中文化軟體可執行檔案 (*.exe) 和動態連結資料庫 (*.dll) 的基本原理

   在 Windows 程式中所有的非源代碼直接提供的內容稱為資源 (包括點陣圖、字串表、對話框...) Windows 為應用程式提供了與 DOS 不同的結構方法,允許將資源附在可執行代碼後面,而且修改資源後可以不用重新編譯生成可執行代碼,直接連接編譯後的資源。 Windows 應用程式的絕大部分字串都是放在程式的資源部分,我們只需將資源中的英文翻譯成中文,用 Microsoft Developer Studio 中的 Resource ManagerBorland IDE 中的 Resource Workshop 以資源編輯方式開啟軟體的可執行檔案 (*.exe) 或動態連結資料庫 (*.dll) ,直接修改替換英文字串或字串後儲存即可。這使得 Windows 程式的中文化工作相對 DOS 程式中文化要為簡單。[Freebird 05/06/98]

   軟體中文化,最簡單的方法就是透過某些應用軟體的功能把原英文軟體資源中的英文字串替換成中文字串即可。一般按照標準格式編寫的 Win32 應用程式 (如: CuteFTP) ,其字串和字串通常放在程式的資源部分,譬如: 對話框 (Dialog) 、選單 (Menu) 和字串表 (String Table) ,我們只要在 Windows NT 系統環境裡使用 Microsoft VC++ 以資源編輯方式開啟軟體的可執行檔案 (*.exe) 和動態連結資料庫 (*.dll) ,改變資源的內碼,然後用滑鼠雙擊開啟資源的英文字串或字串,以手工方式修改替換成對應的中文字串,儲存即可完成中文化。
[關子 05/04/98]

如何一次更改多個資源項目的內碼內容 ?

   要逐一更改待中文化軟體的資源項目,如選單 (Menu) 、對話框 (Dialog) 、字串表 (String table) 等的內碼內容,對於一個資源較多的軟體來說的確是件苦差事。其實可以做到一次全部更改: 在 VC++ 的資源管理環境裡把待中文化軟體的資源項目統統擴展開來並全部選中,按「Enter (Enter) 」鍵一次全部開啟,選擇「Window (視窗) 」選單項下的「Windows (所有視窗) 」把已開啟的資源項目全部「Close window(s) (關閉視窗) 」,趁著所有資源項目還被選中的情況下,單擊滑鼠右鍵選擇資源內容「Properties」把資源的內碼改為「Chinese(Taiwan)」,在單擊「OK (確定) 」後可看到全部資源項目原來的內碼內容 (English(US)) 被清除了,說明一次更改內碼成功。[關子 04/23/98]

如何一次更改多個資源項目的字型內容 ?

   對於一些資源項目,如對話框 (Dialog) ,要保證中文化後可以在中文 Windows 95 中顯示出正常的字型大小,在中文化的過程中就必須注意更改其字型內容,即應該將顯示字型改為 9 號新細明體。正常情況下,在 VC++ 裡只能手工一個個把對話框資源開啟更改其字型內容。如何實現一次全部更改呢 ? 這裡有個小經驗: 使用一個純文字編輯器如 UltraEdit 等開啟用 VC++ 保存的資原始檔案 (*.rc) ,用替換字串的方式把「Arial,8」替換成「新細明體,9」,儲存後再用 VC++ 開啟即可看到所有對話框的字型內容全部已更改。[關子 04/23/98]

中文化軟體可執行檔案 (*.exe) 和動態連結資料庫 (*.dll) 的基本原理

   但是並非所有的 Win32 軟體都按照標準地把字串放在程式的資源部分,有相當一部分軟體 (如: ACDSeeWinamp) 的部分字串 (幸虧一般不會是全部 ! ) 是放在程式代碼裡面的,這樣就只好先修改了在資源部分的字串然後使用一些二進制編輯軟體 (如: UltraEdit) 透過手工尋找替換英文字串 (這時要非常小心,因為如果修改替換的中文字串與原英文字串的長度不一致則導致該軟體再也無法執行,中文化即告失敗 ! ) ,一般修改的原則為: 替換的中文字串長度不應超過原英文字串的長度,如果確實要超過,則以替換原英文字串後的剩餘空間 (如: CA B1 00 00 00 B7 D6...) 為限度 (必須保留一個分隔的剩餘空間: 00 00) ,具體操作請看中文化方法和技巧專欄。[關子 05/05/98]

如何解決中文化後軟體圖示 (Icon) 變形問題 ?

有一些軟體,如 WinampWinZip 等,在進行中文化之後會出現圖示變形而影響觀感的問題,原因是這些軟體的圖示資源採用了多於一個規格的尺寸和顏色,即一個圖示裡面包含了 (16X16,2568X8,16...) 的不同尺寸顏色的規格,由於中文化後不同規格的先後次序被改變了,所以引起圖示顯示變形。解決辦法為手工調整採用多種規格圖示的規格先後次序,把 (16X16,256) 的規格放到最上層即可。下次再中文化該軟體的更新版本時,同樣的圖示可以用已更改的直接替換,不需每次重複更改。[關子 04/23/98]

如何使用 UltraEdit 中文化在程式代碼中的英文字串 ?

    執行已經部分中文化的軟體,記下沒有中文化的英文字串。退出該程式,做好備份,包括 *.exe、*.dll 等。啟動 UltraEdit,開啟要繼續中文化的軟體,如 SomeThing.exe。開始: 在程式選單條上,單擊「搜尋」選單,在下拉的選單列中,單擊「尋找」。 (這兩個步驟可合併為按快速鍵 Alt-F3) 。在彈出的「搜尋」對話框裡的「尋找目標」純文字框裡,輸入要中文化的英文字串,然後單擊「找下一個」,即開始尋找。如果找到,在「覆蓋」模式下,將英文字串用中文字串代替。切記: 中文化的字串長度只能短於原英文字串,剩餘部分可以用空格覆蓋。若中文化字串長度長於原英文字串,將引起不可預測的執行錯誤。若在「插入」模式下中文化,也會引起不可預測的執行錯誤。作為原則,中文化前後被中文化的檔案總長度一定不變。重複步驟,直至修改完畢,儲存退出。如果沒有找到,檢查記下的英文字串是否正確。輸入內容是否與記下的內容一樣。如果無誤,可能這些字串不在本檔案裡,退出修改,再試另一個檔案。也可能這些字串在一種叫做「自定義資源」裡,我目前也沒有想出對付的辦法。
[公僕 05/21/98]

如何快速將 BIG5 碼資原始檔案轉換成 GB 碼資原始檔案 ?

   用 VC++5.0 (BC++ 未試過) 將繁體中文 (BIG5) 的資原始檔案 (*.RC) 開啟,將其中要中文化的資源項目如選單 (Menu) 、對話框 (Dialog) 、字串表 (String table) 的內碼內容全部由 「Chinese (Taiwan) 」 改成 「Chinese (Taiwan)」,具體操作可以參見「如何一次更改多個資源項目的內碼內容」,這時的資源內碼全部變成簡體中文的了,但如果您開啟它們會發覺是繁簡一家歡,而且有些詞語與簡體中文習慣不同,沒關係,我們先將修改過的資原始檔案儲存,再用「Hantools」中的 Trans32.exe 直接將這個資原始檔案轉換一下,轉換後的資原始檔案就是很好的簡體中文資原始檔案了,當然前提您必須不斷充實 Trans32.exe 的繁簡對照字典檔案 Trans.dic (這是一勞永逸的工作) 。[馭海人 07/29/98]

 



回教學