木太里甫·艾山
摘要:隨著網(wǎng)絡(luò)和計(jì)算機(jī)技術(shù)的發(fā)展及應(yīng)用,軟件產(chǎn)品的程序代碼與使用界面的語言數(shù)據(jù)分開,通過翻譯使用界面,或進(jìn)行特殊定制,使得軟件產(chǎn)品能夠在本地語言環(huán)境下使用。就面向國內(nèi)市場的軟件產(chǎn)品而言,本地化可以理解為中文化。在分析Qt庫的基礎(chǔ)上,對目前幾種主要的多語言界面開發(fā)技術(shù)進(jìn)行研究,并對跨平臺Qt庫的優(yōu)點(diǎn)進(jìn)行了分析。
關(guān)鍵詞:Linux;Unix;Qt庫;C++
DOIDOI:10.11907/rjdk.161053
中圖分類號:TP301
文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2016)005-0021-03
0 引言
隨著信息技術(shù)的發(fā)展特別是互聯(lián)網(wǎng)的普及,越來越多的人將計(jì)算機(jī)作為信息提取、存儲和交流的工具。經(jīng)過我國計(jì)算機(jī)專家多年努力,漢字的輸入、顯示和處理已經(jīng)取得了長足進(jìn)展,但是對于多語言方面的資金和人力投入較少,使得這些多語言處理系統(tǒng)不夠標(biāo)準(zhǔn)和統(tǒng)一,嚴(yán)重阻礙了多語言信息技術(shù)的發(fā)展和信息交流。而目前使用Qt來開發(fā)多語言界面實(shí)現(xiàn)多語言處理被很多開發(fā)者看好。
本文在Linux環(huán)境下基于Visual C++進(jìn)行開發(fā)設(shè)計(jì),主要對多語言的顯示問題進(jìn)行研究,實(shí)現(xiàn)了多語言顯示、動態(tài)切換等功能。設(shè)計(jì)并實(shí)現(xiàn)了多語言的顯示處理模型,模型首先使用tr( )函數(shù)處理系統(tǒng)中所使用的文字信息段,并將有關(guān)文字書寫方向的處理封裝在動態(tài)切換模塊中,然后給出水平從左向右的文字格式,通過宏加載調(diào)用語言模塊,解決多語言的顯示及動態(tài)切換問題。
1 Qt庫多語言界面開發(fā)環(huán)境
1.1 Linux
Qt庫是目前Linux環(huán)境下非常流行的一個(gè)面向?qū)ο蟮腃++類庫。隨著時(shí)間的推移, 使用Qt庫來開發(fā)Linux下的面向?qū)ο髴?yīng)用軟件將日益普遍。Qt是Linux下開發(fā)圖形應(yīng)用界面的一個(gè)分支,是一個(gè)多平臺的C++圖形用戶界面應(yīng)用程序框架,為應(yīng)用程序開發(fā)者提供建立藝術(shù)級圖形用戶界面所需的所用功能。
Ubuntu Linux操作系統(tǒng),在Ubuntu Linux桌面版原有基礎(chǔ)上,主要在系統(tǒng)優(yōu)化、硬件兼容、國際化語言支持以及界面設(shè)計(jì)等方面集中進(jìn)行了改進(jìn)[1],使之更加人性化,更加便于用戶使用和維護(hù)。Ubuntu Linux Desktop提供了豐富的在線幫助信息,是用戶使用和學(xué)習(xí)時(shí)的主要求助對象。
1.2 C++
Qt是基于面向?qū)ο蟮腃++語言,它提供了KDE桌面環(huán)境,目前已部分地支持水平反向模式。許多Qt特性基于QObject的繼承,通過標(biāo)準(zhǔn)C++技術(shù)實(shí)現(xiàn)。Qt包括多達(dá)250個(gè)以上的C++類,還提供基于模板的collections、serialization、file、I/O device、directory management、datetime類。甚至還包括正則表達(dá)式的處理功能,支持2D/3D圖形渲染,同時(shí)支持OpenGL。
1.3 Qt設(shè)計(jì)器
即Qt Designer,是用來設(shè)計(jì)和實(shí)現(xiàn)用戶界面并能夠在多平臺下使用的一種工具。Qt設(shè)計(jì)器可以使用戶界面設(shè)計(jì)實(shí)驗(yàn)變得簡單,在任何時(shí)候都可以要求所生成的代碼去重建Qt設(shè)計(jì)器產(chǎn)生的用戶界面文件,并可以根據(jù)用戶的喜好來改變[2]。窗體設(shè)計(jì)工具如圖1所示。
Qt Designer新版本可以實(shí)現(xiàn)將所有Form組織在一起,既方便了管理,也可以在不同的Form之間共享圖像和數(shù)據(jù)。通常,一個(gè)工程中包含以下幾種類型的文件:工程文件 (.Pro)、窗體文件(.Ui)、窗體實(shí)現(xiàn)文件(.Ui.H)和主函數(shù)(.Cpp)等[5]。QtDesigner工作流程如圖2所示。
1.4 Unicode
Unicode是一種字符編碼方法,可以容納全世界所有語言文字的編碼方案。它主要用于解決使用不同語言編寫文本以及字符集種類繁多所帶來的種種問題。它給每個(gè)字符提供了一個(gè)唯一標(biāo)識的二進(jìn)制編碼,以滿足跨語言、跨平臺的文本轉(zhuǎn)換及處理要求。任何字符都可以無損地轉(zhuǎn)換為Unicode。目前,Unicode可以表示90 000余個(gè)編碼符號[7]。
Qt提供完整的Unicode支持,包括輸入法、字體、剪貼板、拖放和文件名。文件I/O缺省為Latin-1,在QTextStream中帶有Unicode選項(xiàng)。Qt程序可以在Windows 95/98和Windows NT之間移植,而無需不同的二進(jìn)制碼以支持Unicode[4]。
2 Qt庫多語言界面實(shí)現(xiàn)
2.1 界面構(gòu)造
Windows環(huán)境為人們所熟知的Visual Basic及Visual C++都有比較方便的圖形界面構(gòu)造方式,而針對Qt也有一個(gè)圖形界面的所見即所得工具QtDesigner。根據(jù)這一工具可以任意構(gòu)造需要的圖形界面,并且可利用UIC工具將生成的UI文件轉(zhuǎn)換為CPP文件和h文件,實(shí)現(xiàn)界面融合。Qt Designer既有Windows系統(tǒng)下的版本,也有Unix等操作系統(tǒng)下的版本,可以根據(jù)需要在任意平臺上開發(fā)。鑒于Qt完美的跨平臺特性,這項(xiàng)工作由一個(gè)項(xiàng)目小組進(jìn)行即可[3]。具體開發(fā)過程如圖3所示。
2.2 動態(tài)語言切換
對于絕大多數(shù)應(yīng)用程序,在main()中檢測用戶的首選語言并且加載適當(dāng)?shù)?qm文件。但是對于用戶則需要動態(tài)切換語言,所有窗口首次生成時(shí)并不含有任何可見文字,所有文字部分全部設(shè)為空白。調(diào)用translate方法從當(dāng)前翻譯器中獲得對應(yīng)于當(dāng)前語言的可見文字,再分別設(shè)置每個(gè)文字項(xiàng)。
語言菜單中的兩個(gè)選項(xiàng)是一個(gè)信號發(fā)射機(jī)制。語言切換信號由MainWindow的translateTo*槽接收。首先由該槽卸載當(dāng)前的翻譯器,然后根據(jù)當(dāng)前語言類型重新將翻譯器加載到應(yīng)用程序中,最后調(diào)用所有有窗口的translate方法實(shí)現(xiàn)即時(shí)翻譯。方法如下:
4 發(fā)展前景
隨著Linux操作系統(tǒng)的普及和對于新一代開發(fā)工具的渴望,利用Qt庫來實(shí)現(xiàn)多種多層次的軟件開發(fā)平臺是一個(gè)必然趨勢。在Linux環(huán)境下,Qt是一種開發(fā)圖形程序應(yīng)用的理想構(gòu)架,利用跨平臺運(yùn)行機(jī)制,可以打破不同操作系統(tǒng)之間的約束,并且其面向?qū)ο蟮沫h(huán)境也是一大優(yōu)點(diǎn)。日益完善的Qt會以嶄新的一面面對廣大用戶群和開發(fā)群,使得基于Qt庫來實(shí)現(xiàn)多語種技術(shù)具有更加廣闊的發(fā)展前景。
5 結(jié)語
本文在介紹Qt庫相關(guān)技術(shù)和平臺的基礎(chǔ)上,闡述了基于Qt庫實(shí)現(xiàn)多語言界面的具體過程。筆者認(rèn)為,Qt庫多語言技術(shù)發(fā)展較為成熟,隨著時(shí)間的推移,使用Qt庫來開發(fā)Linux環(huán)境下的面向?qū)ο髴?yīng)用軟件將會變得越來越廣泛。Qt集成了很多C++類,因而編程起來方便簡潔,可以實(shí)現(xiàn)精美的圖形用戶界面。隨著嵌入式技術(shù)的發(fā)展,它也廣泛應(yīng)用于嵌入式系統(tǒng)編程中,大大提高了編程性能。Qt作為一種新型的GUI應(yīng)用程序開發(fā)工具,無疑是一個(gè)劃時(shí)代的、頗具競爭性的軟件工具。
參考文獻(xiàn):
[1]孫玉芳,姚延棟,吳健.傳統(tǒng)蒙古文變形顯示機(jī)制研究與實(shí)現(xiàn)[J].中文信息報(bào),2004(5):84-85.
[2]劉匯丹,建武,姚延棟,等.基于Qt的國際化圖形用戶界面設(shè)計(jì)與實(shí)現(xiàn)[J].中文信息報(bào),2006(4):94-98.
[3]倪繼利.Qt及Linux操作系統(tǒng)窗口設(shè)計(jì)[M].北京:電子工業(yè)出版社,2006(1):81-100.
[4]許德新,談?wù)穹?,高延濱.基于Qt組件庫應(yīng)用程序的生成及其跨平臺實(shí)現(xiàn)[J].東北農(nóng)業(yè)大學(xué)學(xué)報(bào),2006(3):373-376.
[5]李全虎.交互界面開發(fā)工具——Qt[J].中國科技信息,2005(5):33.
[6]萬長勝,金革,王堅(jiān),等.用Qt進(jìn)行面向?qū)ο筌浖脑O(shè)計(jì)與開發(fā)[J].核電子學(xué)與探測技術(shù),2004(3):311-313.
[7]陳春艷,李寶智.基于高效UTF的Unicode編碼方式研究[J].電腦知識與技術(shù),2007(3):105-106.
(責(zé)任編輯:孫 娟)
Abstract:With the development of computer technology and large-scale application of computer technology, software products and the use of code language interface to separate the data through the use of translation interface, or a special custom-make software products to the local environment, the use of language. On the domestic market for software products, the localization can be understood as in culture. This article is currently on the Qt library to analyze and present several major multi-language interface on the development of the technology introduction and analysis, especially for cross-platform advantages of the Qt library analyzed.
Key Words: Linux;Unix Library;Qt;C++