摘 要:針對嵌入式智能設備的俄文圖形界面的需要,進行基于嵌入式Linux平臺的Qtopia俄文化開發。通過研究國際化、本地化機制,設計俄文本地化環境,利用Linux開放源代碼的功能,提取Qtopia圖形界面語言資源并進行本地化,構建基于Linux平臺的俄文圖形界面資源庫,實現Qtopia的界面文字俄文化。通過編制輸入法程序,實現Qtopia的俄文軟鍵盤輸入,實現基于Linux的應用程序的俄文支持,完成了完整的俄文Qtopia的研制工作。
關鍵詞:嵌入式Linux;Qtopia;俄文圖形界面;輸入法程序
中圖分類號:TP391.1文獻標識碼:B
文章編號:1004373X(2008)2004503
Solution of Embedded Linux Based on Qtopia Russian Environment
ZHANG Jianfeng,YUAN Baoshe,WANG Li
(Information Science and Engineering College,Xinjiang University,Urumqi,830046,China)
Abstract:Based on the embedded Linux Qtopia development of Russian against the Russian embedded intelligent graphical interface needs.Qtopia Russian culture and Russian process virtual keyboard design are introduced.Through dissected Font mechanism of Qtopia,the Russia fonts is established,and the foundation of display is provided,Russia scripts is printed on Qtopia.Through developing input method procedure,the Russia keyboard entry and the software-based keyboard entry on Qtopia are realized.
Keywords:embedded Linux;Qtopia;Russian graphical interface;input method procedure
Qtopia是Trolltech面向嵌入式Linux的綜合應用平臺,它是基于Qt的嵌入式版本Qt/Embedded庫的基礎上,專門針對PDA,SmartPhone這類運行嵌入式Linux的移動計算設備和手持設備所開發的一套開放源碼的應用程序包和開發庫。Qtopia 目前成功應用在包括無線電話、PDA、媒體播放器以及其他消費型電子產品,汽車,醫療與工業電子設備中。
本文主要介紹基于Qtopia的嵌入式Linux俄文環境解決方案。
1 Qtopia移植
將Qtopia移植到嵌入式設備中,要在安裝有Linux操作系統的PC機中交叉編譯Qtopia所需要的資源文件和環境,交叉編譯Qtopia源代碼,然后把生成的Qtopia系統下載到設備中。要先建立一個開發環境,其中必須要有提供qte的庫qt-embedded-2.3.10。提供相應的qtdesigner和虛擬qvfb的qt-x11-2.3.2 。 qte的桌面環境程序qtopia-free-2.1.1以及tmake-1.13的關系如表1所示。
在編譯并下載后,可以看到一個英文的虛擬PDA界面。Qtopia包含完整的應用層、靈活的用戶界面、窗口操作系統、應用程序、啟動程序以及開發框架。

2 構建嵌入式Linux俄文環境
由于Qtopia的界面使用Unicode作為內部編碼,可以同時支持多種編碼,對國際化標準支持的非常完備,這就為英文的Qtopia進行俄文本地化提供了可能。
本地化是將國際化的資源(信息、產品等)進行翻譯、注解、融合、交匯等延伸, 賦予其本土特質。本地化是針對應用程序支持的每一個區域性將應用程序的資源翻譯為本地化版本的過程。在Qtopia中,應用程序分為2個概念塊:一個是包含所有用戶界面元素的塊,另一個包含可執行代碼的塊。用戶界面塊僅包含非特定區域性的可本地化用戶界面元素,如字符串、錯誤信息、對話框、菜單、嵌入的對象資源等。代碼塊僅包含由所有支持的區域性使用的應用程序代碼。對所有用戶可見的文本使用tr()將文本標識出來,這樣利用Qt 提供的翻譯工具將很容易把這些文本轉化成所需要的語言。這里的本地化操作只要在用戶界面塊操作就可以,而不需要修改代碼塊。
Qtopia默認的語言是英語。要將Qtopia本地化成俄文,必須重新配置qtopia。
第一步,在終端中輸入命令:configure -languages \"ru\",這會告訴編譯系統,它也需要建立檔案,翻譯俄文。
第二步,輸入命令make lupdate 。 lupdate的功能是讀取一個Qt.pro項目文件并且產生或者更新項目文件中列出的.ts翻譯源文件。ts文件是Qt源代碼中的可翻譯文本,是一個給翻譯者手工編譯的信息文件。ts文件是XML格式,可以用記事本打開,也可以用QT語言學家(QT Linguist)打開。
翻譯人員可以用Qt語言學家(QT Linguist)來讀取這個翻譯文件并且插入翻譯。在Qtopia的i18n文件夾中創建ru文件夾和服務器具體翻譯文件(例如qtopiaapplications.ts ) ,其中TS文件就是待翻譯的文件。 啟動Qt Linguist 將topiaapplications.ts 文件導入,將需要翻譯的內容翻譯成俄文,翻譯完成之后,點擊File →Release,將文件保存為topiaapplications_ru.qm。QM文件是Qtopia程序能夠識別的文件,TS必須要轉換成QM文件才能被系統識別。換句話說TS文件是給我們看的,QM文件是給系統看的。除了這些自動生成的文件,還要手動在ru文件夾中創建一個.directory文件。
[Translation]
File=QtopiaI18N
Context=Russian
[Desktop Entry]
Name[]=Russian
然后重新運行make lupdate命令,重新更新一下系統。如果仔細地分析研究Qtopia的源文件夾,就可以發現解壓后的Qtopia2.1.1里面有src文件夾。其中的每一個應用程序的文件里面都有幾個TS文件,比如在\\\\src\\\\game\\\\snake文件夾里面可以發現有snake-de.ts,snake-ja.ts,snake-no.ts,snake-en_GB.ts等4個TS文件,在每個應用程序文件夾里面復制一個TS文件放到RU文件夾中就可以。接下來把每個TS文件翻譯成俄文。運行語言學家的工具Linguist,就可以很輕松地把所有的英文翻譯成俄文。之后,通過Linguist把翻譯好的TS文件轉換成QM文件放到i18n/ru 文件夾里面。
現在在Qtopia語言欄中選Russian,可以發現Qtopia桌面還是英文的,但是打開每個應用程序,所有的英文已經由俄文取代。這是因為沒有配置*.desktop桌面配置文件,也就是沒有在桌面應用程序啟動器文件里面增加俄文。比如游戲貪食蛇的桌面程序啟動器文件為snake.desktop,在里面增加一句話:Name[ru]=Змейка,其中Змейка的中文意思就是貪食蛇。
[Desktop Entry]
…
Comment=A Snake Game
Name[ru]=Змейка
…
通過搜索.desktop文件依次把所有的啟動器文件找到后,都像上面一樣加上對應的俄文后替換掉原來的文件。現在重新打開Qtopia平臺,可以發現所有的啟動器和程序顯示的都是不正常方塊,這是因為Qtopia的默認字體是helvetica,所以還應該改變字體,就在FONT下面選擇支持俄文的Unfont字體。現在就可到一個俄文的Qtopia界面(如圖1所示)。

3 俄文輸入法
實現俄文界面后,還要編制俄文輸入法程序。俄文屬于拼音文字,共33個字母,分大小寫,共66個字符。在微機鍵盤上定義俄文鍵位,要占用7個符號鍵位。在嵌入式設備上,一般用軟鍵盤(虛擬鍵盤)實現俄文輸入。
Qtopia是通過Inputmethodinterface類提供的接口實現彈出輸入法。所謂的彈出輸入法就是在沒有鍵盤或其他文字輸入設備,當用戶需要輸入信息時,點擊某個圖標,屏幕上就會彈出一個虛擬鍵盤,用戶通過觸摸屏實現文字的輸入。彈出輸入法必須要有一個窗口(Qwidget),使之能在屏幕上顯示,并當用戶在屏幕上按下一個鍵時,該Qwidget接收信號并立刻反饋給系統。QPushButton是QWidget中的一個,像其他每一個QWidget一樣,它管理自己的觀感。其是一個經典的圖形用戶界面按鈕,用戶可以按下去,也可以放開。一個窗口部件就是一個可以處理用戶輸入和繪制圖形的用戶界面對象。程序員可以改變它的全部觀感和它的許多主要的屬性(比如顏色),還有這個窗口部件的內容。
接下來定義虛擬鍵盤的每一個按鍵,每個俄文字母的大寫和小寫放在同一個鍵位上,通過shift鍵來切換。
在虛擬鍵盤代碼編寫完了之后,通過編譯產生一個可執行文件和3個鏈接文件,把這4個文件放到運行目錄下并運行Qtopia,就能看到俄文輸入法界面(如圖2所示)。

4 結 語
通過對Qtopia進行的俄文化開發,產生俄文版的PDA和俄文手機,為開發面向中、西亞應用的智能電子產品提供了基礎。
針對嵌入式智能設備的俄文圖形界面的需要,充分利用linux系統的開源性,把Qtopia俄文化,并且自主開發俄文輸入法。其整個俄文QTOPIA系統已經成功移植到PXA270A平臺和MOTO E680G手機上,已經進入推廣階段,并且根據本文的方法,可以把Qtopia本地化成任何一種語言。
參考文獻
[1]張曉林,崔迎煒.嵌入式系統設計與實踐[M].北京:北京航空航天大學出版社,2006.
[2]倪繼利.Qt及Linux操作系統窗口設計[M].北京:電子工業出版社,2006.
[3]居元群,霍林.Qtopia構架下手機多媒體IPC服務器的設計與實現\\.微計算機信息,2007,23(26):43-45.
[4]佚名.IBM發布整合策略:對開源支持不變\\.開放系統世界,2005(7):10.
[5]臧懷泉,范亞偉.基于嵌入式操作系統的應用軟件設計\\.燕山大學學報,2004,28(4):344-348.
[6]David Marsh.贏得設計成功的嵌入式Linux\\.電子設計技術,2005,12(9):52-66.
[7]王成,劉金剛.基于Linux的嵌入式操作系統的研究現狀及發展展望\\.微型機與應用,2004,23(5):3-5.
[8]Givargis T D,Henkel J,Vahid F.Interface and Cache Power Exploration for Core-based Embedded System Design\\.P Rocd.Esa.Utom.Conf.,2000.
[9]Lin B,Vercauteren S,Man H De.Embedded Architecture Co-synthesis and System Integration\\.Fourth International Workshop on Hardware/Software Co-Design,1996.
[10]吳偉清,王磊,吳朝暉.基于QTE的嵌入式Linux中文環境解決方案\\.計算機工程,2005,31(2):87-88,93.
[11]John Carter,Ming Xu,Gardner W B.Rapid Prototyping of Embedded Software Using Selective Formalism.16th IEEE International Workshop on Rapid System Prototyping,2005.
作者簡介 張劍鋒 男,1982年出生,碩士研究生。主要研究方向為中文信息處理。
袁保社 男,1955年出生,副教授。主要研究方向為中文信息處理。
王 莉 女,1979年出生,助理工程師。主要研究方向為計算機網絡建設。