基于Symbian OS的本地化技術(shù)研究
(3)inc文件夾中包含的是定義程序骨架類(lèi)的.h頭文件,和實(shí)現本地化所定義的.loc和.lXX文件。
(4)src文件夾中包含的是.cpp源文件,實(shí)現.h中定義的類(lèi)。聯(lián)編時(shí)各文件之間具體的關(guān)系如圖2所示
3.2 應用程序框架類(lèi)的關(guān)系
與編寫(xiě)普通的VC MFC程序一樣,必須熟悉程序中各個(gè)類(lèi)之間的關(guān)系。每一個(gè)應用程序必須定義4個(gè)對象:
l Application類(lèi)定義了應用程序的屬性如UID、標題并創(chuàng )建一個(gè)新的文檔。是應用程序的主入口,它也將應用程序相關(guān)信息傳遞回框架。應用程序類(lèi)并不涉及應用程序的數據和算法。
l Document類(lèi)描述應用程序的數據模型。對一個(gè)基于文件的應用程序,它存儲和刷新應用程序的數據,響應AppUI類(lèi)產(chǎn)生對一個(gè)文檔編輯的請求。
l AppUI是主要的用戶(hù)接口類(lèi),它是大量框架所發(fā)出通知的接受者,例如用戶(hù)的按鍵或者重要的系統事件。AppUI將處理事件本身,或者在適當地情況下,將這些事件傳遞給它所擁有的視圖,達到處理的目的。
l View類(lèi)用于在屏幕上顯示應用程序數據并允許用戶(hù)與之交互。對一個(gè)復雜的程序可能有多種方法顯示其數據,因此包含多個(gè)視圖類(lèi)。它們之間的關(guān)系如圖3所示。
可以簡(jiǎn)單地歸納為:Application類(lèi)創(chuàng )建一個(gè)文檔,文檔類(lèi)創(chuàng )建AppUI,AppUI類(lèi)創(chuàng )建視圖。從圖3我們可以看到應用程序還包括一個(gè)model類(lèi),model類(lèi)用于封裝應用程序數據和它的算法,給程序的其他部分提供良好的API。
3.3 實(shí)現應用程序的本地化機制
為詳細說(shuō)明實(shí)現應用程序本地化的內部機制,我們以上面的HelloWorldLoc工程為例,只針對為實(shí)現這種機制的.rss文件,.rsg文件,.loc文件,.lXX文件進(jìn)行分析。在圖2當中,我們看到.l01、.l02、.l03和.loc這類(lèi)文件。.lXX文件中定義了不同的語(yǔ)言,比如HelloWorldLoc.l01中把要顯示的文本定義成英文,HelloWorldLoc.l02中定義成了法語(yǔ),而 HelloWorldLoc.l03中定義成了德語(yǔ)。通過(guò)編譯發(fā)布,可以很方便實(shí)現應用程序和資源的本地化,在真機顯示相對應的語(yǔ)言。例如在 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中定義法語(yǔ)文本:
#define ELanguage ELangFrench // Caption language
#define qtn_app_caption_string "BonjourLoc"
#define qtn_app_short_caption_string "BonjourL"
#define LABEL_TEXT "Bonjour Monde!"
評論