木太里甫·艾山


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