雖然有一些專業的中文化軟體,如 Sisulizer 、Multilizer、Alchemy Catalyst,
甚至是 VC 等,可以用專案式資料庫的管理方式來進行效率化的中文化,
但這些軟體,對於一個初學者來說是有一定學習門檻的,所以就不提了,
我要介紹的雖然比較麻煩,但學習門檻低,馬上就可以學會如何手動修改。
不過如果常常需要進行中文化或是大量的,還是能學會上面的軟體會比較省事些。

工具:ResScopeResource Hacker 或 eXeScope 皆可
雖然以下是以 ResScope 修改微軟的 Autoruns.exe 檔作為範例,
但不同的工具互有優缺點,請截長補短來搭配交錯使用,沒有孰優孰劣。
也不是只有上面介紹的這幾款,請用自己習慣的就可以了。

用 ResScope 打開 Autoruns.exe 之後,如下圖:
chinesize.01.gif

A 區:所有標準資源都會在這裡條列出來,你可以在這裡選擇你要修改的資源區塊。
B 區:這裡可以設定字串的語系,為了不必要的麻煩,
        語系改「中文(台灣)」,字碼改「中文(台灣-中華民國,香港)」或「中性」,
        不過圖示圖片的語系就不用改了,因為不影響。
C 區:這裡可以設定功能表或對話視窗上的物件屬性,沒必要的話請勿修改,
        除非字串因為修改之後,影響版面配置,才需要微調一下。
D 區:就是要修改的字串位置,會依據你所點選的 A 區項目呈現不一樣的風格。
E 區:當你修改完一個項目,比如某個對話盒時,就可以按這個按鈕來預覽結果,
        和按 F9 不一樣的是,你可以只看目前修改的項目,不用執行整個程式。

改完之後,執行 Autorun.exe ,如下圖:
chinesize.02.gif

你會看到功能表和一些對話視窗的文字都已經變成中文了。
可是你會發現有些字串(紅色框線)還是一樣維持在英文,
第一種情形是這些因為這些英文字串屬於非標準資源,
所以無法使用上述的軟體來進行直接的修改,
第二種則是,這些文字的字串資源不放在主程式,而在其他檔案裡面。

如果後者只要知道主程式執行時調用了哪些檔案,
再將這些檔案的標準資源字串中文化就可以了。
如果事前者那就必須使用另外的軟體來進行修改。

工具:UltraEdit 或 Winhex
個人偏好使用 UltraEdit ,範例也使用UE來操作,
其他類似軟體操作方式大同小異,我們以上圖裡的一個字串「Publisher」作為範例。


啟動 UltraEdit ,開啟 Autoruns.exe 之後,
按「Ctrl+F」尋找字串,如下圖於欄位裡輸入「Publisher」,
並勾選下面的「FindASCII」,然後按「Find Next」,
這時候應該會找到第一個符合的字串,如下圖:
 chinesize.04.gif

可是符合的字串可能不只一個,所以再繼續尋找,
果然又找到一個,如下圖:
 chinesize.05.gif

那到底是哪一個?這個例子只找到兩個,有的時候找到的會更多,
剛開始可能要嘗試錯誤一個一個修改看看,
等到經驗累積了,有時候就可以直接判斷出來了,
比如這個例子,在第一個找到的 Publisher 字串前後,
還有其它的字串連接在一起:Entry,Enabled,Description,Publisher,Image
第二個找到前後卻只有空白,程式裡的「Publisher」只有一個字串,
怎還會帶了一堆兄弟姊妹勒?所以字串應該就是第二個了。
當然還會有更難判斷的情形會出現,比如好幾個都是只有單獨字串的,
那就還要看他所在位置區段和其他東西來判斷了,這一樣是經驗累積的問題嚕~

好,那我們在剛剛找到第二個字串「右邊窗格」第一個  P 字開始輸入,
在這裡我輸入「開發商」,然後將後面多餘的英文字去掉。
怎麼去?請不要在右邊窗格直接按空白,那在左邊16進位碼的含意是空白,不是「無」
所以請點擊右邊多餘的英文第一個字母,然後左邊會出現對應的位置,
在左邊反白的位置輸入「00」,依此類推,將後面的英文字都去掉。
然後儲存檔案,準備看修改是否成功。

如下圖,你可以看到原來的英文字串「Publisher」已經變成中文「開發商」了:
chinesize.06.gif

接下來還會遇到一個問題,那就是可以修改的空間不夠。
比如要中文化下圖位置的「Drivers」為「驅動程式」,
使用 UltraEdit 搜尋字串後會發現後面位置不夠(如下圖):
chinesize.07.gif

「Drivers」字串在左邊16進位顯示字串是「44 72 69 76 65 72 73」(圖片中紅框部分),
依照一個中文字站掉兩格來看,似乎還有空間,但其實 73 後面的 00 是不能用的,
一旦用了,顯示就不會只顯示「驅動程式」,會變成顯示「驅動程式Services」,
所以字串與字串中間至少需保留一個 00 ,因此這個 00 不能用,於是就少一格了。

這時候再看到前面,一共有四個 00 (圖片中黑框部分),所以我們可以從這裡下手,
將整個字串往前挪移一格,這樣就多出一格可以用,也不會用到 73 後面的 00 了。

在改之前要先說明一下概念,這樣才能瞭解為什麼接下來要這麼做。
為什麼程式知道要顯示這個「Drivers」字串,因為在某個地方指向了這個字串的位置,
所以如果我們要往前挪移位置或移到更遠的地方,就必須將這個指向位置改為新的位置,
那麼程式就知道去哪裡找這個新的字串,不過並不是什麼地方都可以,盡量不要跑太遠。

請先點到「Drivers」字串的第一個字母,記住下圖紅框的數字「460500」:
chinesize.08.gif

接下來我們需要用到一個幫我們計算指向到此字串的指標位置(也就是算它的偏移量),
我用的點睛工作室的 PosConv ,打開 PosConv後可以看到如下圖:
chinesize.09.gif

A:請按右邊的瀏覽按鈕選取要修改的檔案,以此例就是 Autoruns.exe。
B:便於記憶,請選擇 10 進位,當然 16 進位也是可以的。
C:輸入剛剛記的數字「460500」。
D:在C輸入數字時,這裡就會自動計算,把這裡的「D4144700」記下來或複製。

然後再回到 UltraEdit ,按 Ctrl + F 會出現搜尋對話方塊,
在欄位裡輸入剛剛在 D 看到的「D4144700」或有複製的話直接貼上。
在搜尋之前記得先移到檔案最前面,免得找不到,
因為那個字串在你目前的位置前面,這個時候按搜尋會往你現在的位置後面找,
當然找不到,不要最後自己搞個烏龍了。

按搜尋後就會找到所在位置,在開始之前要多按幾次,
因為有的時候是同時有好幾個指向字串,這些位置「可能」也都要改,
如果指出現一個,像這個「D4144700」就只有一個,所以應該就是它沒錯了。
至於這個「
D4144700」會隨著你的電腦記憶體配置情形而有不同,不一定會一樣。


由於我們要往前一格,所以位置必須往前算,所以將「D4」改為「D3」,
這樣指標位置就會指到新的地方了,也就是「44 72 69 76 65 72 73 」的 44 前面那個 00 開始。
如果不會換算也沒關係,可以使用剛剛那個換算偏移量的工具,
在 C 輸入 00 所在的 Pos 數值 ,以此例就是「460499」,就會得到「D3144700」,
所以跟在上面直接手動是一樣的,只是有的時候移動的位置較多,
怕計算錯誤,還是使用工具比較不會算錯,改好記得先儲存。

然後再回到剛剛「Drivers」字串所在的位置,從前面的 00 開始輸入「驅動程式」,
這裡可以先點左邊窗格的 00 後,再於右邊窗格輸入中文來完成,最後儲存。

結果完成,你可以看到「Drivers」已經變成中文「驅動程式」了。
chinesize.11.gif

最後要說的是,其實中文化並非只是一個蘿蔔一個坑,
即使使用了專業的中文化套裝軟體,還是會有需要手動的時候,
畢竟軟體是死的,也是程式設計師一行一行程式碼去寫出來的,
基本上還是離不開人類思維,沒寫進去的,軟體根本沒什麼行為能力。
很多文字字串不只是表面的文字而已,本身可能也是代表一個字串變數,
程式的運作可能會用到這個字串,當你一改,程式就找不到,功能就壞了。
也不是所有的長得一樣字串都是要修改的,有些可能是運算式的一部份。

總之,中文話軟體說簡單也簡單,要很難它也可以很難,
更別說一些已經加了殼的,光是這個就可以讓一堆人頭痛了,呵呵。

arrow
arrow
    全站熱搜

    ALVIN 發表在 痞客邦 留言(0) 人氣()