当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]随着Symbian OS逐渐成为未来手机的产业标准,基于Symbian OS的智能手机软件在我国必将有所普及,软件的本地化成为我们迫切需要解决的问题之一。本文以Symbian OS应用开发平台Series60为例,首先对基于Symbian OS的Series60平台应用程序的文件架构、骨架类做了全面综述,其次重点介绍Symbian OS对手机软件的本地所化提供的便利支持,最后对对实现国产软件的本地化提出了自己的解决方案。

一、引言

Symbian OS是一种开放、非常健壮的嵌入式操作系统,它由Symbian公司开发。Symbian OS是针对未来无线互联手持设备的新一代移动系统平台,其目标是把Symbian OS开发成为未来手机的产业标准。所以它对应用程序的本地化提供了便利的条件和强有力的支持。Symbian OS内置了Unicode编码,应用程序的开发架构也将源文件与资源文件相分离。因此对于拉丁字符集,使用不同的语言文本改编应用程序应该只需改变资源文件,因为用户可视文本不会嵌入到源文件当中。但对于非拉丁语言,比如生产使用汉语、日语、朝鲜语等的应用程序,文本的本地化要复杂一些,需要做一些额外的工作。下面以Symbian OS的应用开发平台Series 60为例,在重点讲述Symbian OS对本地化支持的基础上,对应用程序的汉化加以解决。

二、 Symbian OS应用开发平台Series 60介绍

由于各厂商之间在用户接口、硬件设计及互通性上存在的差别及其自身的革新,Symbian OS给移动设备制造商提供很大的灵活性。这种灵活性可以使用同一个内核的操作系统设计出不同的产品,而且给设备制造商提供了更新空间,从而使得其在移动市场上支持更多的设备。Series 60平台正是基于Symbian OS的这种灵活性,在其之上进行构建。如图1所示。

Series60平台的内核是Symbian OS GT(Generic Technology,通用技术)层。提供了扩展的Avkon UI层、基于Avkon和Uikon库的完整应用程序套件以及第三方GUI应用程序所使用的用户接口和框架API。

三、 Series 60开发平台下应用程序架构对本地化的支持

3.1 应用程序的文件架构


在开发应用程序之前必须了解Series60平台的应用程序文件架构。Carbide C++是当前诺基亚公司为自己的S60系列智能手机应用程序开发提供的新一款IDE工具。在利用Carbide C++创建一项工程后(例如工程名为HelloWorld,程序架构为单视图),我们能看到如下的应用程序文件架构:

(1)data文件夹中的.rss文件与src中的.cpp源文件相分离,为实现应用程序本地化提供了便利的条件。后面的内容将详细剖析它的具体实现机制。

(2)Aif文件夹中包含可选的应用程序信息文件(.aif文件),用于指定应用程序的本地化图标、标题及系统特性(如可嵌入性)。

(3)inc文件夹中包含的是定义程序骨架类的.h头文件,和实现本地化所定义的.loc和.lXX文件。

(4)src文件夹中包含的是.cpp源文件,实现.h中定义的类。联编时各文件之间具体的关系如图2所示

3.2 应用程序框架类的关系

与编写普通的VC MFC程序一样,必须熟悉程序中各个类之间的关系。每一个应用程序必须定义4个对象:

l Application类定义了应用程序的属性如UID、标题并创建一个新的文档。是应用程序的主入口,它也将应用程序相关信息传递回框架。应用程序类并不涉及应用程序的数据和算法。

l Document类描述应用程序的数据模型。对一个基于文件的应用程序,它存储和刷新应用程序的数据,响应AppUI类产生对一个文档编辑的请求。

l AppUI是主要的用户接口类,它是大量框架所发出通知的接受者,例如用户的按键或者重要的系统事件。AppUI将处理事件本身,或者在适当地情况下,将这些事件传递给它所拥有的视图,达到处理的目的。

l View类用于在屏幕上显示应用程序数据并允许用户与之交互。对一个复杂的程序可能有多种方法显示其数据,因此包含多个视图类。它们之间的关系如图3所示。

可以简单地归纳为:Application类创建一个文档,文档类创建AppUI,AppUI类创建视图。从图3我们可以看到应用程序还包括一个model类,model类用于封装应用程序数据和它的算法,给程序的其他部分提供良好的API。

3.3 实现应用程序的本地化机制

为详细说明实现应用程序本地化的内部机制,我们以上面的HelloWorldLoc工程为例,只针对为实现这种机制的.rss文件,.rsg文件,.loc文件,.lXX文件进行分析。在图2当中,我们看到.l01、.l02、.l03和.loc这类文件。.lXX文件中定义了不同的语言,比如HelloWorldLoc.l01中把要显示的文本定义成英文,HelloWorldLoc.l02中定义成了法语,而HelloWorldLoc.l03中定义成了德语。通过编译发布,可以很方便实现应用程序和资源的本地化,在真机显示相对应的语言。例如在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文件中根据本地化需求包含相应的.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++集成开发环境下,资源编译器rcomp.exe对包含本地化资源的HelloWorldLoc.rss文件编译后,输出一个二进制资源文件HelloWorldLoc.rsc和一个HelloWorldLoc.rsg头文件。HelloWorldLoc.rsg头文件中利用#define定义符号名R_LABEL_TEXT来引用本地化资源。如下定义:

#define R_LABEL_TEXT 0x2aa81006

在显示数据的View类的.cpp源文件中,包含HelloWorldLoc.rsg头文件,通过引用R_LABEL_TEXT就可以显示它所标识的"Hello World!"字符串。

3.4 实现应用程序的汉化技术

对于英语、法语、德语这些拉丁字符集均是通过Unicode标准进行编码,Symbian OS内置了Unicode编码,所以通过改变.loc文件中所包含的.lXX文件,可以很方便的生成不同语言文本的应用程序。在Symbian OS的epoc32Includee32std.h头文件中我们可以看到定义了这些语言标识码,每种支持的语言都具有两位数字的标识码。例如英语是01,法语是02,德语是03:

enum TLanguage

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

ELangFrench = 2, /** French. */

……

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

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

……

}

在上面定义的标识代码中,我们可以看到对汉语的标识代码也有所定义,分别是30和31。但我们并不能简单地在.lXX文件中定义中文文本。中文文本属于非拉丁语系,对于非拉丁语言,文本的本地化要复杂一些。对于生产使用汉语、日语、朝鲜语等的应用程序,Symbian OS和Series60 SDK确实提供了一些支持,但我们需要做一些额外的工作。要解决汉字问题,必须转换我们的汉字编码。下面是实现中文本地化的具体实现方法,称之为静态方法。

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

然后将这个.lXX文件用WORD或记事本转换成UTF8编码。这里要注意,有时在转换时,会在转换生成后的文件头部添加上一个文本编辑器无法看到的标志字符,需要用edit编辑器将其打开,删除标志字符,否则编译将会出错。在.loc文件中包含.lXX文件:#include ".lXX"。在.RSS文件中定义字符串:RESOURCE TBUF r_label_text{buf=LABEL_TEXT;}

同时在.RSS文件头添加一行代码:CHARACTER_SET UTF8。在.cpp文件中,包含.rsg头文件,通过引用R_LABEL_TEXT就可以显示它所标识的"字符串_中文"字符串。

四、 Symbian OS在我国的发展前景

随着Symbian OS对本地化的进一步支持,基于Symbain OS的我国国产智能手机软件必将有所大力普及。作为一种面向未来无线通信的操作系统,一方面由于它所具有的强大功能,另一方面有世界各大移动设备商(包括其股东)的支持,还有像Intel、TI、IBM等各大公司都陆续宣布和Symbian公司合作开发无线通信设备软件应用程序,Symbian OS在我国国内将具有良好的发展前景。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭