TCM的小屋
我們生活在一個忙碌的城市, 偶然的放鬆會有無窮的回味。
s20040048
暱稱: TCM
性別: 男
國家: 香港
« June 2017 »
SMTWTFS
123
45678910
11121314151617
18192021222324
252627282930
最新文章
Delphi 及 C++ Builde...
如何中文化一個軟件
第一日註冊Qooza的心情...
文章分類
全部 (3)
個人體驗 (1)
電腦教學專區 (2)
訪客留言
Levitra Onli... (Chassype)
Priligy Fich... (Chassype)
Eroxim Kamag... (Chassype)
Cialis Avis ... (KennImaste)
每月文章
日誌訂閱
尚未訂閱任何日誌
好友名單
網站連結
尚無任何連結
最近訪客
最近沒有訪客
日誌統計
文章總數: 3
留言總數: 4
今日人氣: 0
累積人氣: 988
站內搜尋
RSS 訂閱
RSS Feed
2009 年 3 月 21 日  星期六   晴天


Delphi 及 C++ Builder簡體中文化後(發生亂碼)之處理 愉快 分類: 電腦教學專區

Delphi 及 C++ Builder簡體中文化後(發生亂碼)之處理


如果:使用【CXAT】軟體去把簡體中文程式轉譯成繁體後,會發現部分的文字是:亂碼!
【字型】:

Font.Name =MS Sans Serif  【英文版】或Font.Name =其他英文字型  【英文版】Font.Name =細明體【繁體中文版】或Font.Name =新細明體【繁體中文版】Font.Name =冼极 【簡體中文版】或 Font.Name =宋体【簡體中文版】
這些亂碼的,並不是翻譯的錯誤,而是選錯了字形檔!
Delphi 及 C++ Builder 的字形檔的標簽文字是:
Font.Charset =GB2312_CHARSET  簡體
Font.Charset =CHINESEBIG5_CHARSET  繁體
Font.Charset =DEFAULT_CHARSET  英文

要修改字形,可以選用ResScope9.6工具,把GB2312_CHARSET,全部改成CHINESEBIG5_CHARSET
經過再編譯及存檔後,就會得到不亂碼的繁體中文程式。但是:如果程式是經過加殼,而脫殼又不完整時,就不可能使用ResScope9.6工具。
事實上:要把簡體字形轉成繁體字形,並不一定要用重組資源的方法,還可以使用移花接木的方法,
甚麼是移花接木法,就是更改字形標簽的名稱:
把GB2312_CHARSET指向繁體字形來達到目的!

移花接木的方法:

使用UltraEdit-32軟體開啟中文化後的程式,點選【搜尋】→【取代】→ 不要勾選(ASCII)
簡體轉繁體:
搜尋:(複製→貼上)以下字串
4742323331325F434841525345540000FFFFFFFF130000004348494E455345424947355F43484152534554 取代為:(複製→貼上)以下字串
4742323331335F434841525345540000FFFFFFFF0E0000004742323331325F434841525345549090909090

ResScope9.6下載位置:

註明:只供用戶試用,請在下載24小時後刪除,如果喜歡此軟件請購買正版。



如何中文化一個軟件 愉快 分類: 電腦教學專區

看到論壇上經常有人問中文化方面的東西,我今天也來灌水一篇,來個中文化掃盲教程。寫的不好的地方歡迎大家指正!OK,現在我們進入正題。
我這堜珨〞漱中憭ヾA是指中文化 Windows 下的 PE 文件,把其他語言界面的程序翻譯為中文界面。要中文化一個軟件,一般的流程是這樣:

一、檢測軟件是否加了殼。
中文化一個軟件前我們首先要做的就是要看看軟件是否加了殼。因為程序加了殼後,一般情況下資源也被壓縮了,使用普通的中文化工具是無法中文化的。這時一般有兩種辦法:一種是完全脫殼後再中文化,這種方法可以中文化的比較徹底;另一種是殼太猛,不好脫,只好退而求其次,用 freeRes 這樣的工具來釋放一下資源,再來中文化。這種方法只能中文化標准資源,一般就是主界面看到的部分,非標准資源因為未脫殼,還是無法中文化,所以這種方式中文化的不徹底。平常我們看到的中文化軟件一般都是完整的中文化,就是有殼的脫了殼,標准資源和非標准資源都中文化了。這堬瘣葖嶊漱憟騔u化也要注意,平常我們分析軟件的時候,只要脫了殼,程序能正常運行,沒有功能丟失就可以了,但要能中文化的話要求要嚴格一些。因為要使用一般的中文化工具來中文化程序的話,最好脫殼後程序的資源段(一般區段名稱是 .rsrc)要放在最後,這可以使用 FixRes 或 freeRes 這樣的工具來重建資源。另外,平常我們把脫殼後的程序優化時可以用 LordPE 刪除垃圾區段,再重建一下。但若要用中文化工具來中文化這種用 LordPE 優化重建後的程序,很可能生成的中文化程序運行時會出錯。如果你要會手工優化的話那是最好,可以刪除垃圾區段,根據文件對齊粒度和區段對齊粒度等來優化文件,這樣手工優化後的文件一般中文化時不會出錯。關於優化脫殼後文件這方面也有相關文章,我就不多說了。改天若有空我會專門寫一篇這樣的文章,不過不要過於期待,我向來喜歡開空頭支票的
如果不會手工優化,可以在脫完殼重建資源後就用中文化工具來中文化,中文化完成後再用 LordPE 這樣的工具來優化一下中文化後的程序就可以了。

二、檢測程序資源類型。
檢測程序資源類型我們同樣可以用 PEiD、FI 這樣的工具,主要是看程序是用什麼開發工具寫的。各個開發工具編譯出來的程序標准資源類型是不同的。一般可以分以下幾種:
1、VC、MASM 這樣的開發工具做出來的程序要中文化的標准資源主要在 Menu、Dialog、String 等中。
2、Delphi、C++Builder 這樣的 Borland 公司開發工具做出來的東西要中文化的標准資源主要在 Rcdata 和 String 中。
3、VB 開發的程序,這種程序我們一般所說的標准資源是指 Form 中的資源,這種 VB 編的程序目前還沒有可以可視化編輯界面資源的工具,相比較而言中文化起來不是很痛快;)
4、上面說的主要是標准資源,再說一下一般定義的非標准資源。非標准資源一般簡稱為非標,指在程序中出現,但又不在標准資源中的 UNICODE 字串或 ASCII 字串,這類字串中文化需要其他的工具。
判斷完程序是什麼開發工具做的,我們就對資源類型大致有數了。下面就可以開始著手中文化了。

三、使用合適的中文化工具
這堶漸要說明一下,像什麼 eXeScope、ResScope、ResHacker、PE Explorer 這樣的工具嚴格來講都不是中文化工具,只能說是資源修改工具。一般所說的中文化工具是指如 Visual Localize、PASSOLO、Multilizer、Alchemy CATALYST 這樣的工具。這些工具都是可以可視化調整調整界面的,不過這些工具都不能用來中文化 VB 編的程序,關於中文化 VB 編的程序要使用其他的工具。現在針對上面所說的資源類型來談談工具的選用:
1、VC、MASM 類程序:這種程序可以用上面提到的任何一款中文化工具中文化,就我個人來講,我比較喜歡用 PASSOLO,Visual Localize 也是個很不錯的選擇。
2、Delphi、C++Builder 類程序:這種程序可以使用 PASSOLO、Multilizer 來中文化,一般用 PASSOLO 時應該選擇 PASSOLO 的 UNICODE 版本。對這類程序,還可以采用外掛語言包的方式來中文化標准資源。這種外掛語言文件的方法對一些加了猛殼,且又不想脫殼或不好脫殼的程序非常有用。因為 Borland 公司的編譯器編譯出來的程序默認對語言文件支持,編譯好的程序會自動檢測是否有語言文件。一般的未加殼的此類程序,要采用語言文件中文化標准資源的話,只需生成對應的語言文件放到原程序目錄就可以了。對於加了猛殼的此類程序,如果只是中文化標准資源的話,不需要脫殼,只要用 freeRes 這樣的工具釋放一下壓縮資源,再中文化釋放資源後的程序,生成語言文件後放到原程序目錄下就可以讓主界面顯示對應語言了。用 PASSOLO、Multilizer 來中文化這樣的程序,還有一些區別的地方:
(1)、PASSOLO,中文化這類程序時選目標為簡體中文時默認生成的目標是後綴名為 CHS 的文件。不過生成的文件其實只是改了後綴名的中文化後的 EXE 或 DLL 等可執行文件。這可以預先設置一下目標文件的後綴名,使生成的中文化後的文件後綴名為 EXE 或 DLL 等這樣的可執行文件。如果只是想生成語言文件,最好在生成目標文件的高級選項中設置一下,把生成純資源 DLL 的選項選上,再把中文化生成的CHS文件的和中文化資源無關的項如圖標、位圖等刪掉,減小體積。
(2)、Multilizer,這個工具中文化此類的程序時,默認生成的就是語言文件,要想生成中文化後的可執行文件,要在工程選項中把輸出文件中的「已本地化的文件」選項選上。而生成的簡體中文語言文件一般也使以 CHS 為後綴名。
采用語言文件方式中文化的話,只要把中文化完標准資源的語言文件和原程序放在同一目錄就可以讓主界面顯示中文了,不受主程序是否加殼的影響。這堶n注意的是語言文件名要與原程序名稱一致,如你要中文化 test.exe,語言文件名就要是 test.CHS,同樣,你要是把 test.exe 改名為 test1.exe,語言文件名也相應要改為 test1.CHS。
3、VB 類程序:這種程序目前可以用來中文化的工具有 VB 窗體中文化器、GetVBRes、新出的 VBLocalize 等。缺點就是沒有可以可視化調整中文化後界面的工具。
4、非標准資源:這類非標資源的中文化主要采用的工具有點睛字符串替換器、CXA、楓葉字符替換器等。主要功能是把原程序需要中文化的非標字串提取出來,中文化完後再寫入。中文化非標資源要求程序必須沒有加殼,且這個地方中文化不當的話容易讓程序出現問題,比如不能中文化的字串中文化了等等這樣的情況,會讓程序運行出錯,也就是常說的中文化過度。所以中文化非標資源時要特別注意,要多測試,防止出現因中文化引起的 bug。

四、中文化標准資源中的字串
一般的中文化工具都支持字典及導入導出功能,字典主要靠自己積累,你中文化的軟件越多,生成的字典越多,中文化起其他程序來就越快。因為很多內容都可以直接用字典來中文化完成。如果是中文化一個新的程序,且又沒有什麼可用的字典怎麼辦?我一般的做法是采用中文化工具的導出功能,把沒翻譯的源英文字串直接導出(這堛`意如果是用 Multilizer 導出的話,需要把目標翻譯語言欄全選,再粘貼原始語言,這樣導出的采用 TAB 分隔的 ASCII 文本才好轉換為對照文本),再用字典轉換工具如 Fantasy Editor 或開心字典轉換工具把導出的文件轉換為對照文本,這樣就可以采用 SeaTools 這樣的工具來進行機器翻譯,機器翻譯完後再進行手工修改,全部翻譯好後再用上面說的字典轉換工具轉換為對應中文化工具的字典文件,現在就可以用這樣的字典文件來翻譯原程序了。

五、調整界面,設置對話框字體,中文化其他內容
設置字體一些中文化工具在創建工程時就可以完成,如用 Visual Localize 的話需要在工程中設置一下對話框字體。字串中文化完後要做的工作就是調整界面,因為中文化後有些對話框的字串會顯示不全,按鈕過大或過小,對話框大小不合適等等都要調整。如果還有什麼其他的資源如圖片等要中文化的,可以導出後修改了再導入。

六、中文化非標資源中的字串
標准資源中文化完成後就要開始中文化非標准資源字串了。中文化方法與中文化標准資源類似,用我上面所說的非標資源提取工具先把非標字串提取出來,刪除不需要翻譯的,再做一下字典轉換(對於點睛字符串替換器、CXA 這樣的工具,如果有當前中文化的程序以前的非標字串翻譯,可以直接作為字典導入),先機器翻譯,再手工修改後導入。中文化非標字串如果有經驗的話比較好,一般可以看出那些東西是需要翻譯的哪些是不需要翻譯的,哪些翻譯後字串長度比原字串短時補 0 還是空格。如果沒什麼經驗,就要多測試了。

七、中文化後程序測試及字體調整
這個地方是比較繁瑣的,因為中文化後有可能造成程序出錯,這奡N要重點檢測非標部分。另外中文化後有些地方的字體比較難看,這些地方是無法通過在標准資源中設置字體來修改的,這時就要通過調試來設置字體了。設置字體在 OD 中主要斷這幾個函數:CreateFontA(W)、CreateFontIndirectA(W)、GetStockObject。找到地方再作修改。

說到這大致差不多了,其他的還有一些非標字串中文化後字串長度超過原字串長度,需挪移修改、中文化後有程序有自校驗需去除、字串加密後的中文化等等,我就不再這婸﹞F,大家可以自行參考中文化新世紀的相關文章。此外還有一些圖形界面遊戲的中文化是不能采取我上面說的這樣的方法的,如你要中文化 StarCraft,用我這種方法是不行的。中文化這樣的遊戲可能要你分析程序,采用外掛方式來中文化,這堣ㄖ@討論。



第一日註冊Qooza的心情 愉快 分類: 個人體驗

今次係我第一次系Qooza發表第一篇文章,以後我會繼續發表更多文章!


嘻嘻!我都唔係好識用Qooza,以後我會發表更多有關電腦既文章!


其實我都係學緊電腦以後有d咩野做得唔岩岩既話不妨告訴小弟。