Make your own free website on Tripod.com

ASCII資源的中文化(2)   

偉乾

二、ASCII 字串的中文化修正

    對ASCII字串的中文化,現在比較好的方法是,把翻譯和修正工作分開。首先利用字串擷取替換工具,把ascii字串擷取出來,經過翻譯、再寫入檔案中。然後,使用 16進制編輯工具,對中文化有問題、或不完美的地方,進行個別修正。字串替換工具我們推荐字串替換器CXA,16進制編輯工具我們推荐Hexworkshop
我們使用字串替換器中文化寫入檔案後。執行中文化後的程式,雖然界面都變成中文了,但出現礙眼的斷行、換行、文字之間空格、文字偏向一側等問題。造成這問題的原因是中文化後的字串與中文化前的英文字串長度發生變化,大多數情況中文化後字串長度變短,我們寫入exe檔案時,不足的用空格填充 (20) (字串替換器可以用 00 填充不足),造成文字斷行、換行、偏向一側、文字之間的空格的現象。個別情況,中文化後字串長度變長,造成不夠位置寫入,如add ,只好翻譯為加,這樣的界面令人很不滿意。下面我們講講如何處理這些問題 !

(一) 、ASCII中文化後字串變短的處理

  字串中文化後,字串變短,我們使用字串中文化工具寫入時,在大多數情況都可以用20填充不足,在界面中看不出問題。只有字串在界面居中顯示、字串後面跟著字串或變量、浮動提示、界面根據字串的長度自動調整大小的等情況下,會出現文字顯示位置不好看、字串間出現奇怪的空格、斷行、斷句等等現象。

 1.結構字串組:

    前面我們介紹這類的字串類型,字串是透過判斷00作為字串的結束。字串之間以00間隔,而且只能以一個00間隔,在第一個字串的00前面有一個代表這幾個字串資料長度 (16進制) 的長度標示符。所以我們中文化時,只能用空格 (20) 填補空格,絕對不能用00填補不足。除了第一個字串不能改變位置,其他的字串可以調整位置,如圖13







圖 13


      圖13,14 舉的例子是VC++編譯的 pkg檔案,我們可以把多余的空格20刪去,修改字串組的長度標示符,程式執行顯示正常,這說明第一個字串的位置也不是不能改變的,我們也可以增加字串。由於沒有在exe,dll檔案中找到這樣的例子,不知道是否通用。
    如果字串間超過一個00間隔,會導致後面的字串顯示出現問題。如圖14






 

 圖 14


    2. 陣列字串組:

    這種字串類型,字串之間沒有間隔。在這些字串組前面的兩個字串代表字串的個數,前面第三、四個字串代表這個資料段的字串組的總長度 (16進制) (包括字串組個數標示符) 。
    這類的字串,如果我們用空格20填補不足,在某些情況顯示會有問題 (如圖15) 。我們只需要把20改為00,就解決了問題。注意: 這時不要修改字串的長度標示符,否則會出現後面顯示的字串錯位的現象。如圖,我們看到,只要00是在這個字串長度標示符長度范圍內,顯示正常﹔如果00不在長度標示符長度范圍內,就會出現字串顯示移後的現象,有多少個00在控制范圍外,就會移後顯示多少個位置。圖中有一個00在長度標示符控制范圍外,所以後面的字串顯示都依次移後一位 !




 



 圖 15



    3. 獨立字串:

     這類字串一般出現在VB編譯的程式中,字串前後各有一個00間隔,在字串的00前面有一個代表字串資料長度 (16進制) 的字串長度標示符。我們中文化時,如果使用空格 (20) 填補不足,在某些情況下,導致顯示的界面不美觀。
      在圖16中,由於中文化後的字串比英文字串短,導致出現三種情況的不足。如圖所示,第一種情況出現在邊框線連接著字串,使用空格填補不足,導致邊框線不能緊接著中文化後的字串。第二種情況,當選擇某項時,一般會有個虛框框住所選字串,使用空格填補,出現虛框的顯示不足。第三種情況,字串是居中顯示的,使用空格填補不足,導致顯示不能居中。
      我們只要把20改為00,就是說,使用00填補不足,上述的問題均可解決。注意: 這時不要修改字串前面的長度標示符,否則程式無法進行這項功能。就是說我們必須保証有且只能有一個00在字串長度標示符長度范圍外,否則會出錯。




 


 圖 16



    4. C 語系字串:




 


 圖 17


圖17中,字串是浮動提示,我們中文化後用空格20填補不足,就會造成提示後面出面空白,我們把20改為00即可。實際操作時,只需把第一個20改為00就可以了。我們再看下一個例子 (圖18)






 

 圖 18


圖 18中的字串在界面是居中顯示,我們中文化後用空格20填補不足,就會造成提示後面出面空白,我們把20改為00即可。實際操作時,只需把第一個20改為00就可以了。


      5.
Pascal語系字串:
    圖19 的例子,是一個按鈕的字串,文字在按鈕中是居中顯示的。我們中文化後,字串變短,用空格填充不足,造成文字偏向左側,不太美觀。我們只需把 20 改為 00 即可,看看是不是好看多了。
    實際操作中,我們只需在字串後面把一個 20 改為 00 即可,不需要把所有的20 改成 00。因為ASCII是以 00 為結束,我們只要保証字串的後面有一個00就行了。在這個例子中,我們沒有修改長度標示符為字串實際的長度,字串的顯示效果也正常。






    

                                     圖 19



    但在一些情況下,必須修改長度標示符,才能得到滿意的效果。如圖 20,在消息視窗顯示的訊息是由多個字串組成的。[You did nit select a page, or pages, of bookmarks to ]這是第一個字串,它的16進制長度為35,後面跟著其他字串。






    


圖 20


    我們按照上面的方法中文化修改,發現後面的字串不見了。






    


圖 21


       我們把長度標示符 改為實際的長度 1E我們把長度標示符修改後,顯示基本正常,發現[HTML]後面跟著的 [.]中間有空格。仔細研究才發現,這個訊息是由三段字串組成,第二個字串就是我們前面舉的例子[建立HTML]字串,第三個字串是英文的句號[.]。我們前面沒有修改[建立HTML]字串的長度標示符,在這個消息視窗調用了[建立HTML]字串,所以出現空格現象。我們把[建立HTML]字串的長度標示符修改為實際的長度,顯示正常。在這裡我們看到這個訊息視窗的寬度是根據字串的程度自動調整的。  






    



圖 22


       小結: 綜上所述,除了第一種字串 (結構字串組) ,其他的字串我們中文化時,如果字串變短,均可以使用00填補不足。由於第一種字串比較少見,所以使用00填補不足大多數情況下都適用。在我們使用的字串替換工具中,只有梁利鋒的字串替換與香港黃權粲的cxa具有這樣的功能,為我們中文化提供了便利。在各種字串抓取替換工具,中文工具箱 (CKIT) 李國印的軟體中文化2000由於擷取字串的速度慢,作者停止開發或開發暫停,我們不建議大家使用。最近還在開發的字串擷取替換工具,有香港黃權粲的CXA和大陸梁利鋒的字串替換器。這兩個工具,擷取字串的速度較快,而且各有特點。CXA沿用傳統的字典翻譯功能,不過針對字典翻譯效果不佳的情況,作了改進,使用二次翻譯調整,翻譯的效果大大改進。對於不以00結尾的字串,可以自動拆分字串,添加不需要翻譯的字串,擷取字串比較准確。新版本增加了分段翻譯、測試等管理功能。字串替換器採用比對替換代替了以往的翻譯功能,使 ASCII字串的批次中文化 (快速中文化升級) 成為可能。同樣具有分段翻譯、測試等管理功能,它的開發意念最貼近中文化人。不過最近版本0.93,對陣列字串組擷取的效果不佳,希望以後的版本改進。

 

 

--* 如果您發現連結錯誤或其它問題,請寫信通知我們
--* 如果您連結本站本地軟體,請註明來自漢化新世紀,謝謝您的支持 !



回教學