當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]隨著Symbian OS逐漸成為未來手機(jī)的產(chǎn)業(yè)標(biāo)準(zhǔn),基于Symbian OS的智能手機(jī)軟件在我國必將有所普及,軟件的本地化成為我們迫切需要解決的問題之一。本文以Symbian OS應(yīng)用開發(fā)平臺(tái)Series60為例,首先對(duì)基于Symbian OS的Series60平臺(tái)應(yīng)用程序的文件架構(gòu)、骨架類做了全面綜述,其次重點(diǎn)介紹Symbian OS對(duì)手機(jī)軟件的本地所化提供的便利支持,最后對(duì)對(duì)實(shí)現(xiàn)國產(chǎn)軟件的本地化提出了自己的解決方案。

一、引言

Symbian OS是一種開放、非常健壯的嵌入式操作系統(tǒng),它由Symbian公司開發(fā)。Symbian OS是針對(duì)未來無線互聯(lián)手持設(shè)備的新一代移動(dòng)系統(tǒng)平臺(tái),其目標(biāo)是把Symbian OS開發(fā)成為未來手機(jī)的產(chǎn)業(yè)標(biāo)準(zhǔn)。所以它對(duì)應(yīng)用程序的本地化提供了便利的條件和強(qiáng)有力的支持。Symbian OS內(nèi)置了Unicode編碼,應(yīng)用程序的開發(fā)架構(gòu)也將源文件與資源文件相分離。因此對(duì)于拉丁字符集,使用不同的語言文本改編應(yīng)用程序應(yīng)該只需改變資源文件,因?yàn)橛脩艨梢曃谋静粫?huì)嵌入到源文件當(dāng)中。但對(duì)于非拉丁語言,比如生產(chǎn)使用漢語、日語、朝鮮語等的應(yīng)用程序,文本的本地化要復(fù)雜一些,需要做一些額外的工作。下面以Symbian OS的應(yīng)用開發(fā)平臺(tái)Series 60為例,在重點(diǎn)講述Symbian OS對(duì)本地化支持的基礎(chǔ)上,對(duì)應(yīng)用程序的漢化加以解決。

二、 Symbian OS應(yīng)用開發(fā)平臺(tái)Series 60介紹

由于各廠商之間在用戶接口、硬件設(shè)計(jì)及互通性上存在的差別及其自身的革新,Symbian OS給移動(dòng)設(shè)備制造商提供很大的靈活性。這種靈活性可以使用同一個(gè)內(nèi)核的操作系統(tǒng)設(shè)計(jì)出不同的產(chǎn)品,而且給設(shè)備制造商提供了更新空間,從而使得其在移動(dòng)市場(chǎng)上支持更多的設(shè)備。Series 60平臺(tái)正是基于Symbian OS的這種靈活性,在其之上進(jìn)行構(gòu)建。如圖1所示。

Series60平臺(tái)的內(nèi)核是Symbian OS GT(Generic Technology,通用技術(shù))層。提供了擴(kuò)展的Avkon UI層、基于Avkon和Uikon庫的完整應(yīng)用程序套件以及第三方GUI應(yīng)用程序所使用的用戶接口和框架API。

三、 Series 60開發(fā)平臺(tái)下應(yīng)用程序架構(gòu)對(duì)本地化的支持

3.1 應(yīng)用程序的文件架構(gòu)


在開發(fā)應(yīng)用程序之前必須了解Series60平臺(tái)的應(yīng)用程序文件架構(gòu)。Carbide C++是當(dāng)前諾基亞公司為自己的S60系列智能手機(jī)應(yīng)用程序開發(fā)提供的新一款I(lǐng)DE工具。在利用Carbide C++創(chuàng)建一項(xiàng)工程后(例如工程名為HelloWorld,程序架構(gòu)為單視圖),我們能看到如下的應(yīng)用程序文件架構(gòu):

(1)data文件夾中的.rss文件與src中的.cpp源文件相分離,為實(shí)現(xiàn)應(yīng)用程序本地化提供了便利的條件。后面的內(nèi)容將詳細(xì)剖析它的具體實(shí)現(xiàn)機(jī)制。

(2)Aif文件夾中包含可選的應(yīng)用程序信息文件(.aif文件),用于指定應(yīng)用程序的本地化圖標(biāo)、標(biāo)題及系統(tǒng)特性(如可嵌入性)。

(3)inc文件夾中包含的是定義程序骨架類的.h頭文件,和實(shí)現(xiàn)本地化所定義的.loc和.lXX文件。

(4)src文件夾中包含的是.cpp源文件,實(shí)現(xiàn).h中定義的類。聯(lián)編時(shí)各文件之間具體的關(guān)系如圖2所示

3.2 應(yīng)用程序框架類的關(guān)系

與編寫普通的VC MFC程序一樣,必須熟悉程序中各個(gè)類之間的關(guān)系。每一個(gè)應(yīng)用程序必須定義4個(gè)對(duì)象:

l Application類定義了應(yīng)用程序的屬性如UID、標(biāo)題并創(chuàng)建一個(gè)新的文檔。是應(yīng)用程序的主入口,它也將應(yīng)用程序相關(guān)信息傳遞回框架。應(yīng)用程序類并不涉及應(yīng)用程序的數(shù)據(jù)和算法。

l Document類描述應(yīng)用程序的數(shù)據(jù)模型。對(duì)一個(gè)基于文件的應(yīng)用程序,它存儲(chǔ)和刷新應(yīng)用程序的數(shù)據(jù),響應(yīng)AppUI類產(chǎn)生對(duì)一個(gè)文檔編輯的請(qǐng)求。

l AppUI是主要的用戶接口類,它是大量框架所發(fā)出通知的接受者,例如用戶的按鍵或者重要的系統(tǒng)事件。AppUI將處理事件本身,或者在適當(dāng)?shù)厍闆r下,將這些事件傳遞給它所擁有的視圖,達(dá)到處理的目的。

l View類用于在屏幕上顯示應(yīng)用程序數(shù)據(jù)并允許用戶與之交互。對(duì)一個(gè)復(fù)雜的程序可能有多種方法顯示其數(shù)據(jù),因此包含多個(gè)視圖類。它們之間的關(guān)系如圖3所示。

可以簡(jiǎn)單地歸納為:Application類創(chuàng)建一個(gè)文檔,文檔類創(chuàng)建AppUI,AppUI類創(chuàng)建視圖。從圖3我們可以看到應(yīng)用程序還包括一個(gè)model類,model類用于封裝應(yīng)用程序數(shù)據(jù)和它的算法,給程序的其他部分提供良好的API。

3.3 實(shí)現(xiàn)應(yīng)用程序的本地化機(jī)制

為詳細(xì)說明實(shí)現(xiàn)應(yīng)用程序本地化的內(nèi)部機(jī)制,我們以上面的HelloWorldLoc工程為例,只針對(duì)為實(shí)現(xiàn)這種機(jī)制的.rss文件,.rsg文件,.loc文件,.lXX文件進(jìn)行分析。在圖2當(dāng)中,我們看到.l01、.l02、.l03和.loc這類文件。.lXX文件中定義了不同的語言,比如HelloWorldLoc.l01中把要顯示的文本定義成英文,HelloWorldLoc.l02中定義成了法語,而HelloWorldLoc.l03中定義成了德語。通過編譯發(fā)布,可以很方便實(shí)現(xiàn)應(yīng)用程序和資源的本地化,在真機(jī)顯示相對(duì)應(yīng)的語言。例如在HelloWorldLoc.l01文件中可以定義英文文本:

#define ELanguage ELangEnglish // Caption language

#define qtn_app_caption_string "HelloWorldLoc"

#define qtn_app_short_caption_string "HelloWL"

#define LABEL_TEXT "Hello World!"

而在HelloWorldLoc.l02中定義法語文本:

#define ELanguage ELangFrench // Caption language

#define qtn_app_caption_string "BonjourLoc"

#define qtn_app_short_caption_string "BonjourL"

#define LABEL_TEXT "Bonjour Monde!"

同樣道理,在HelloWorldLoc.l03中可以定義德語文本。

在HelloWorldLoc.loc文件中根據(jù)本地化需求包含相應(yīng)的.lXX文件,例如包含定義英文字符串的HelloWorldLoc.l01文件。

#include "HelloWorldLoc.l01"

在.rss文件中包含HelloWorldLoc.loc文件,可以引用.lXX中的本地化資源。

#include “HelloWorldLoc.loc”

RESOURCE TBUF r_label_text{ buf = LABEL_TEXT;}

假如這里引用的LABEL_TEXT是HelloWorldLoc.l01中定義的英文文本:

#define LABEL_TEXT "Hello World!"

那么在Carbide C++集成開發(fā)環(huán)境下,資源編譯器rcomp.exe對(duì)包含本地化資源的HelloWorldLoc.rss文件編譯后,輸出一個(gè)二進(jìn)制資源文件HelloWorldLoc.rsc和一個(gè)HelloWorldLoc.rsg頭文件。HelloWorldLoc.rsg頭文件中利用#define定義符號(hào)名R_LABEL_TEXT來引用本地化資源。如下定義:

#define R_LABEL_TEXT 0x2aa81006

在顯示數(shù)據(jù)的View類的.cpp源文件中,包含HelloWorldLoc.rsg頭文件,通過引用R_LABEL_TEXT就可以顯示它所標(biāo)識(shí)的"Hello World!"字符串。

3.4 實(shí)現(xiàn)應(yīng)用程序的漢化技術(shù)

對(duì)于英語、法語、德語這些拉丁字符集均是通過Unicode標(biāo)準(zhǔn)進(jìn)行編碼,Symbian OS內(nèi)置了Unicode編碼,所以通過改變.loc文件中所包含的.lXX文件,可以很方便的生成不同語言文本的應(yīng)用程序。在Symbian OS的epoc32Includee32std.h頭文件中我們可以看到定義了這些語言標(biāo)識(shí)碼,每種支持的語言都具有兩位數(shù)字的標(biāo)識(shí)碼。例如英語是01,法語是02,德語是03:

enum TLanguage

{ELangEnglish = 1, /** UK English. */

ELangFrench = 2, /** French. */

……

ELangHongKongChinese = 30, /** Hong Kong Chinese. */

ELangPrcChinese = 31, /** Peoples Republic of Chinas Chinese. */

……

}

在上面定義的標(biāo)識(shí)代碼中,我們可以看到對(duì)漢語的標(biāo)識(shí)代碼也有所定義,分別是30和31。但我們并不能簡(jiǎn)單地在.lXX文件中定義中文文本。中文文本屬于非拉丁語系,對(duì)于非拉丁語言,文本的本地化要復(fù)雜一些。對(duì)于生產(chǎn)使用漢語、日語、朝鮮語等的應(yīng)用程序,Symbian OS和Series60 SDK確實(shí)提供了一些支持,但我們需要做一些額外的工作。要解決漢字問題,必須轉(zhuǎn)換我們的漢字編碼。下面是實(shí)現(xiàn)中文本地化的具體實(shí)現(xiàn)方法,稱之為靜態(tài)方法。

首先,在.lXX文件中定義: #define LABEL_TEXT “字符串_中文”

然后將這個(gè).lXX文件用WORD或記事本轉(zhuǎn)換成UTF8編碼。這里要注意,有時(shí)在轉(zhuǎn)換時(shí),會(huì)在轉(zhuǎn)換生成后的文件頭部添加上一個(gè)文本編輯器無法看到的標(biāo)志字符,需要用edit編輯器將其打開,刪除標(biāo)志字符,否則編譯將會(huì)出錯(cuò)。在.loc文件中包含.lXX文件:#include ".lXX"。在.RSS文件中定義字符串:RESOURCE TBUF r_label_text{buf=LABEL_TEXT;}

同時(shí)在.RSS文件頭添加一行代碼:CHARACTER_SET UTF8。在.cpp文件中,包含.rsg頭文件,通過引用R_LABEL_TEXT就可以顯示它所標(biāo)識(shí)的"字符串_中文"字符串。

四、 Symbian OS在我國的發(fā)展前景

隨著Symbian OS對(duì)本地化的進(jìn)一步支持,基于Symbain OS的我國國產(chǎn)智能手機(jī)軟件必將有所大力普及。作為一種面向未來無線通信的操作系統(tǒng),一方面由于它所具有的強(qiáng)大功能,另一方面有世界各大移動(dòng)設(shè)備商(包括其股東)的支持,還有像Intel、TI、IBM等各大公司都陸續(xù)宣布和Symbian公司合作開發(fā)無線通信設(shè)備軟件應(yīng)用程序,Symbian OS在我國國內(nèi)將具有良好的發(fā)展前景。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉