雖然有一些專業的中文化軟體,如 Sisulizer 、Multilizer、Alchemy Catalyst,
甚至是 VC 等,可以用專案式資料庫的管理方式來進行效率化的中文化,
但這些軟體,對於一個初學者來說是有一定學習門檻的,所以就不提了,
我要介紹的雖然比較麻煩,但學習門檻低,馬上就可以學會如何手動修改。
不過如果常常需要進行中文化或是大量的,還是能學會上面的軟體會比較省事些。
工具:ResScope 或 Resource Hacker 或 eXeScope 皆可
雖然以下是以 ResScope 修改微軟的 Autoruns.exe 檔作為範例,
但不同的工具互有優缺點,請截長補短來搭配交錯使用,沒有孰優孰劣。
也不是只有上面介紹的這幾款,請用自己習慣的就可以了。
用 ResScope 打開 Autoruns.exe 之後,如下圖:
A 區:所有標準資源都會在這裡條列出來,你可以在這裡選擇你要修改的資源區塊。
B 區:這裡可以設定字串的語系,為了不必要的麻煩,
語系改「中文(台灣)」,字碼改「中文(台灣-中華民國,香港)」或「中性」,
不過圖示圖片的語系就不用改了,因為不影響。
C 區:這裡可以設定功能表或對話視窗上的物件屬性,沒必要的話請勿修改,
除非字串因為修改之後,影響版面配置,才需要微調一下。
D 區:就是要修改的字串位置,會依據你所點選的 A 區項目呈現不一樣的風格。
E 區:當你修改完一個項目,比如某個對話盒時,就可以按這個按鈕來預覽結果,
和按 F9 不一樣的是,你可以只看目前修改的項目,不用執行整個程式。
改完之後,執行 Autorun.exe ,如下圖:
你會看到功能表和一些對話視窗的文字都已經變成中文了。
可是你會發現有些字串(紅色框線)還是一樣維持在英文,
第一種情形是這些因為這些英文字串屬於非標準資源,
所以無法使用上述的軟體來進行直接的修改,
第二種則是,這些文字的字串資源不放在主程式,而在其他檔案裡面。
如果後者只要知道主程式執行時調用了哪些檔案,
再將這些檔案的標準資源字串中文化就可以了。
如果事前者那就必須使用另外的軟體來進行修改。
工具:UltraEdit 或 Winhex
個人偏好使用 UltraEdit ,範例也使用UE來操作,
其他類似軟體操作方式大同小異,我們以上圖裡的一個字串「Publisher」作為範例。
啟動 UltraEdit ,開啟 Autoruns.exe 之後,
按「Ctrl+F」尋找字串,如下圖於欄位裡輸入「Publisher」,
並勾選下面的「FindASCII」,然後按「Find Next」,
這時候應該會找到第一個符合的字串,如下圖:
可是符合的字串可能不只一個,所以再繼續尋找,
果然又找到一個,如下圖:
那到底是哪一個?這個例子只找到兩個,有的時候找到的會更多,
剛開始可能要嘗試錯誤一個一個修改看看,
等到經驗累積了,有時候就可以直接判斷出來了,
比如這個例子,在第一個找到的 Publisher 字串前後,
還有其它的字串連接在一起:Entry,Enabled,Description,Publisher,Image
第二個找到前後卻只有空白,程式裡的「Publisher」只有一個字串,
怎還會帶了一堆兄弟姊妹勒?所以字串應該就是第二個了。
當然還會有更難判斷的情形會出現,比如好幾個都是只有單獨字串的,
那就還要看他所在位置區段和其他東西來判斷了,這一樣是經驗累積的問題嚕~
好,那我們在剛剛找到第二個字串「右邊窗格」第一個 P 字開始輸入,
在這裡我輸入「開發商」,然後將後面多餘的英文字去掉。
怎麼去?請不要在右邊窗格直接按空白,那在左邊16進位碼的含意是空白,不是「無」
所以請點擊右邊多餘的英文第一個字母,然後左邊會出現對應的位置,
在左邊反白的位置輸入「00」,依此類推,將後面的英文字都去掉。
然後儲存檔案,準備看修改是否成功。
如下圖,你可以看到原來的英文字串「Publisher」已經變成中文「開發商」了:
接下來還會遇到一個問題,那就是可以修改的空間不夠。
比如要中文化下圖位置的「Drivers」為「驅動程式」,
使用 UltraEdit 搜尋字串後會發現後面位置不夠(如下圖):
「Drivers」字串在左邊16進位顯示字串是「44 72 69 76 65 72 73」(圖片中紅框部分),
依照一個中文字站掉兩格來看,似乎還有空間,但其實 73 後面的 00 是不能用的,
一旦用了,顯示就不會只顯示「驅動程式」,會變成顯示「驅動程式Services」,
所以字串與字串中間至少需保留一個 00 ,因此這個 00 不能用,於是就少一格了。
這時候再看到前面,一共有四個 00 (圖片中黑框部分),所以我們可以從這裡下手,
將整個字串往前挪移一格,這樣就多出一格可以用,也不會用到 73 後面的 00 了。
在改之前要先說明一下概念,這樣才能瞭解為什麼接下來要這麼做。
為什麼程式知道要顯示這個「Drivers」字串,因為在某個地方指向了這個字串的位置,
所以如果我們要往前挪移位置或移到更遠的地方,就必須將這個指向位置改為新的位置,
那麼程式就知道去哪裡找這個新的字串,不過並不是什麼地方都可以,盡量不要跑太遠。
請先點到「Drivers」字串的第一個字母,記住下圖紅框的數字「460500」:
接下來我們需要用到一個幫我們計算指向到此字串的指標位置(也就是算它的偏移量),
我用的點睛工作室的 PosConv ,打開 PosConv後可以看到如下圖:
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」已經變成中文「驅動程式」了。
最後要說的是,其實中文化並非只是一個蘿蔔一個坑,
即使使用了專業的中文化套裝軟體,還是會有需要手動的時候,
畢竟軟體是死的,也是程式設計師一行一行程式碼去寫出來的,
基本上還是離不開人類思維,沒寫進去的,軟體根本沒什麼行為能力。
很多文字字串不只是表面的文字而已,本身可能也是代表一個字串變數,
程式的運作可能會用到這個字串,當你一改,程式就找不到,功能就壞了。
也不是所有的長得一樣字串都是要修改的,有些可能是運算式的一部份。
總之,中文話軟體說簡單也簡單,要很難它也可以很難,
更別說一些已經加了殼的,光是這個就可以讓一堆人頭痛了,呵呵。
留言列表