当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]随着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在我国国内将具有良好的发展前景。

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

前端传递:表名 user,字段 username 字符串、age 数字、is_ikun 布尔,并且把这些值封装为了一个对象

关键字: 框架 前端

在六个服务领域表现出显著提升;从2021年的第7位跃居第2位 印度班加罗尔2022年4月11日 /美通社/ -- 下一代数字服务和咨询领域的全球领军者Infosys(印度国家证券交易所、孟买证券交易所和纽约证券交易所代...

关键字: Group os

(全球TMT2022年4月11日讯)下一代数字服务和咨询领域的全球领军者Infosys近期宣布,在Everest Group PEAK Matrix®2022年度 IT服务提供商奖中排名第二。在第六届PEAK Matr...

关键字: Group os

香港2022年3月29日 /美通社/ -- 在传统与创新的十字路口,一些人不仅记录了历史,而且潜心打造未来。回顾Toshiba TV第一次屏幕闪烁的那一刻,创新便已深植于公司的“血液”,致力于真实...

关键字: os

北京2022年3月21日 /美通社/ -- 微美全息软件有限公司(纳斯达克: WIMI)(以下简称为“微美全息”或“公司”),一家全球领先的增强现实(“AR”)服务提供商,今天宣布宣布被纳入Proshares Metav...

关键字: os

Infosys 元宇宙工坊(Infosys metaverse foundry)是 Infosys Living Labs 不可或缺的一部分,它正在推动企业的数字创新议程,以适应新兴的优先事项和市场趋势。 Infosys...

关键字: os

Chronos芯片将搭载于Ouster面向量产车推出的DF系列固态数字激光雷达上,提高其性能与功效...

关键字: 芯片 激光雷达 os

(全球TMT2022年3月11日讯)2022年3月11日,高分辨率数字激光雷达供应商Ouster发布最新Chronos 芯片,这是一款车规级、完全定制化的数字激光雷达接收芯片,将搭载于其DF系列固态激光雷达上。Chro...

关键字: 芯片 激光雷达 os

上海2022年3月10日 /美通社/ -- 中国上海,2022年3月,柏中(Bossard)宣布推出Smart Vending Cloud帮助客户解决MRO耗材管理问题,进一步升级“智能工厂物流”服务。此举也意味着柏中在...

关键字: 全自动 os

(全球TMT2022年2月22日讯)孚昇电子(Fusion Worldwide)收购了位于新加坡的大型电子元件测试公司Prosemi Mfg Pte Ltd。由于供应链经历了历史性的限制,导致周转时间过长,此次收购将进...

关键字: os se 电子元件
关闭
关闭