摘要:該文介紹了軟件漢化的基本概念,漢化的基本原理和理論,對軟件漢化技術的基本知識進行了詳細的說明,并介紹了國內的研究現狀。針對目前使用的漢化方法進行了詳細的總結和說明,同時也介紹了使用Qt搭建系統界面漢化的使用方法。
關鍵詞:軟件漢化;英文提示符;資源文件;Windows平臺
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2011)04-0832-02
Software Localization Technology Theory and Application
WANG Jia-hua,CHENG Shun-shun
(School of Computer Science, Xi'an Shiyou University, Xi'an 710065, China)
Abstract: This paper introduces the basic concepts of software localization, the basic principle and the theory of software localization,which is technology of basic knowledge makes a detailed instruction, and introduced the domestic status of research. Aiming at the use of localization method to carry on the detailed summary and instructions, at the same time also introduces the use Qt build system interface localization use method.
Key words: software localization; English prompt; resource file; Windows platforms
隨著國外大量應用軟件的引入,國內的用戶群在大量的增長。但遺憾的是這些軟件在安裝和應用過程中,所有的接口界面均為英文提示信息,這在一定程度上給用戶帶來很多不便,無疑在很大程度上限制了計算機的應用。軟件漢化是解決這一問題的最好方法。
1 理論和原理
目前市面上應用軟件都需要使用漢字信息進行信息交互。針對使用不同的編程語言編寫的顯示界面,因其語言內部的機制不同,故使用的漢化方法也不同,但漢化的原理和理論是相同的。
1.1 漢化理論
“漢化”是指對軟件用戶界面從其他語言到漢語的轉換。把原有的西文軟件或是代碼文件作適當的修改和調整,使之能夠處理漢字信息。在西文軟件能夠運行的環境中,漢化后的軟件同樣可以運行。漢化后的應用軟件包含的工作環境應該和原軟件含有相同的工作環境。漢化后的應用軟件應不受輸入輸出系統和操作系統版本的限制,應和西文軟件一樣具有較強的兼容性和通用性。
對于一個漢化后的應用軟件有如下幾項要求:
1) 對原外文軟件的代碼變動應盡可能的少,在不丟失原外文軟件功能的條件下,取得最佳的漢化效果;
2) 對外文軟件內的有關子程序實行功能轉化,使其從單一處理外文字母轉化為對中西文均能夠處理 ;
3) 對外文軟件內的有關模塊實行功能強化,使其兼顧到漢字處理的特點;
4) 人機界面的信息漢字化。
1.2 漢化原理
軟件漢化的基本原理是首先找到需要漢化的外文信息提示符,使用有效的方法將其提取,并將提取的信息提示符準確的翻譯成漢語,然后用漢字代替相應的英文信息,顯示到軟件界面中。
軟件漢化一般包含兩個方面的內容:一是把不能接受漢字的軟件改造成能夠接受漢字的軟件;二是把軟件中的提示信息漢字化。
目前基于Windows平臺下的常用軟件漢化有如下幾種類型:
1) 手動修改資源文件;
2) 傳統調試程序Debug;
3) 即時界面漢化。
1.3 漢化工作研究現狀
隨著計算機的普及,軟件行業的迅速發展,國際上涌現出了許多優秀的應用軟件。它們大多以外文為背景,不能直接有效的處理中文信息。故利用漢化技術,對原外文軟件進行二次開發,使其能夠同時處理西文和漢字信息。
1.3.1 軟件的資源漢化
軟件的資源漢化就是直接修改軟件的資源文件。Windows環境下的軟件一般是過Visual C++、Borland C++等常用編程工具使用高級編程語言編寫的。由于編寫軟件的國際性和通用性程度的提高,如使用標準控件、資源文件和Unicode編碼,很多時候我們只需要針對這些標準、通用的資源進行修改就能漢化Windnws下的大多數軟件。
1.3.2 資源反匯編
資源反匯編是比較傳統的一種漢化方法。它依據一些有效的調試工具,進行外文軟件的二次開發。如傳統調試程序Debug、動態調試程序SDebug、反匯編程序Sourcer等。他們將外文軟件的代碼進行反匯編,通過程序跟蹤,顯示高級語言和相應的目標代碼,分離出調試程序的顯示屏幕與其跟蹤程序的屏幕顯示信息,參照源程序有關功能模塊分析原外文軟件的處理能力,制定漢化方案進行相應的漢化處理。
2 應用的環境和漢化方法
目前市場上大多數應用軟件的開發都是基于Windows平臺。因其開發語言的不同,使用的配置環境不同,故使用的漢化方法也不同。
2.1 應用的環境
目前主流的應用軟件都是基于Windows平臺開發的,使用Visual Studio200X系列、VisualC++5.0/6.0開發環境編寫。
2.2 漢化方法
不同語言開發的應用軟件使用的漢化方法是不一樣的。本文結合基于Qt圖形界面開發工具的系統來介紹漢化方法。由于在使用Qt編寫的程序中是不識別中文字符串,故本文介紹的漢化方法與以往的漢化方法是不同的。
2.2.1 Qt設計器
Qt設計器是Qt自有的設計GUI界面的工具,它提供一種可視化的設計方法,方便程序員的應用。使用可視化的設計方法比手工編碼顯得更自然,更快速,并且也希望能通過可視化方法,對那些手工編碼所設計的窗體,進行更加快速、容易的測試和修改。
2.2.2使Qt識別中文
在無任何標識的情況下,如果程序中出現中文字符,那么在編譯后,這些字符將會以亂碼的形式出現在生成的頁面中。在界面中存在部分需要轉換成中文的字符串,而這些字符串又不包含在GUI界面中,那么我們只有選擇單純地在程序內部進行本地漢化。
1) 識別漢字的預編譯指令
在程序中加入識別漢字的預編譯指令:
#include
2) 漢字編碼方式
在程序中加入能夠識別中文的漢字編碼,如GB2312、BIG5等。除了采用英語外,Qt對世界上其他文字系統都提供了廣泛的支持。如果想將英語轉換成其他語言,你只需要加入識別該種語言的編碼方式即可。
QTextCodec::setCodecForTr(QTextCodec::codeForName(“GB2312”));
3) 程序中的實現
在應用程序中實現漢化字符串,只需要將該字符串使用tr( )函數將其提取,并進行相應的翻譯即可。
如:QPushButton* choose_button = new QPushButton(QObject::tr(“類型選擇”));
2.2.3 Qt Linguistg工具
Qt還提供了另外一種工具可以幫助程序員完成界面語言的轉換,即Qt內置的國際化Qt Linguistg工具來幫助對應用程序進行翻譯管理。使用Qt Linguistg工具進行漢化,必須提取這些字符串。Qt只識別QString類型定義的字符串。如果想讓應用程序能夠使用多種語言,進行各個語言之間的轉換,必須確保每一個用戶在程序編譯所產生的界面中的字符串都使用了tr( )函數,并且在程序啟動的時候,也必須載入一個翻譯文件(.qm)。一旦用戶可見的字符串全部使用了tr( )調用封裝,就需要加載翻譯文件。通常是在應用程序的main( )函數中完成的。如:
int main( )
{
QApplication app(argc,argv);
…
QTranslator * qtappTranslator; = new QTranslator;
qApp->installTranslator(qtTranslator);
Qstring path = QApplication::applicationDirPath( )+/”translations”/;
}
我們并不能一次完全提取到所有需要轉換成中文的字符串。在提取到新的字符串,進入Dos運行lupdate命令來更新提取到的字符串,即更新應用程序.pro文件。運行命令如下:
lupdate –verbose 應用程序.pro
一旦有了翻譯過的.ts文件,就需要把它轉換成一個可以用QTranslator使用的二進制.qm文件。如果想為所有的.ts文件生成.qm文件,可以運行lrelease命令來生成,運行命令如下:
lrelease –verbose應用程序.pro
在所有的翻譯完成之后,只需要將翻譯完成的.ts文件和生成的.qm文件打包到應用程序的Debug下面,就可以隨處移植程序。只要含有.ts文件和.qm文件,你就可以任意的轉換語言,不必擔心亂碼的出現。
3 結束語
本文詳細的介紹了目前軟件漢化的狀況和使用方法。在結合Qt圖形界面開發工具搭建的系統中使用的漢化方法是通過具體的項目實踐,總結出來的漢化方法。
本文得到了國家自然科學基金項目:“曲流河儲層建模的自回避隨機游走方法研究” (項目批號50874091) 的資助。
參考文獻:
[1] 嚴博,歐慶于,吳曉平.Q top ia程序中文化方法研究[J].計算機與數字工程,2008(7):60-63.
[2] Blanchette J,Summerfield M.C++ GUI Qt4編程[M].閆鋒欣,譯.北京:電子工業出版社,2008:314-326
[3] 蔡志明,盧傳富,李立夏.精通Qt4編程[M].北京:電子工業出版社,2008,:468-477
[4] 丁林松,黃麗琴.Qt4圖像設計與嵌入式開發[M].北京:人民郵電出版社,2009.
[5] 姜曉靈,周天宏.軟件漢化的一種方法[J].鄖陽師范高等專科學校學報,1998(2):95-97.
[6] 周鐳,李人賢.軟件漢化方法[J].哈爾濱師范大學學報:自然科學版,1999(6):73-75.
[7] 朱禹.系統軟件漢化工具的實現[J].小型微型計算機系統,1998(4):47-49
[8] 王暢.Windows環境下專業軟件漢化[J].阜陽師范學院學報:自然科學版,2005(4):52-53.
[9] Trolltech.Qt-Cross-Platform C++ Development-Troll2tech[EB/OL].2007.http://www.trolltech.com/products/qt/features/index.
[10] Blanchette J,Summerfield M.C++ GUI Programming wiethQt 4[M].USA:Prentice Hall,2006.