Symbian之Localization
2010-07-06 04:40:00 来源:WEB开发网每次从头开始写一个新项目都会有新的收获,今次研究的是程序的多语言支持。一般我们会把程序里的所有字符串文字都写在一个资源文件里,这样当我们需要支持另一种语言时只需要简单的替换这个资源文件里的内容即可。
在Symbian中有很多与资源文件相关的文件,我们以HelloWorld工程为例子。首先看data目录下的HelloWorld_reg.rss,rss是资源源文件,带后缀reg表示这个是注册资源文件。需要在mmp中添加以下内容:
SOURCEPATH ..data
START RESOURCE HelloWorld_reg.rss
TARGET HelloWorld_reg
TARGETPATH private10003a3fapps
//LANG 01 31
END //RESOURCE
这段话的意思是:编译..data目录下的HelloWorld_reg.rss文件,并将生成的文件放在private10003a3f apps目录下,并命名为HelloWorld_reg。默认生成的是.rsc后缀的文件。如果将上面LANG前面的注释去掉,则会生成.r01 和.r31后缀的两个文件。注意这里的LANG只对单个资源有效,如果希望mmp中所有的资源都生成多个文件则要在START RESOURCE …… END的外面添加LANG语句。
我们再来看HelloWorld_reg.rss文件中的APP_REGISTRATION_INFO结构:
RESOURCE APP_REGISTRATION_INFO
{
localisable_resource_file = "\resource\apps\HelloWorld";
localisable_resource_id = R_LOCALISABLE_APP_INFO;
}
localisable_resource_file指明了程序用到的本地化资源文件名,不带文件后缀。localisable_resource_id则是相应的本地化资源文件中LOCALISABLE_APP_INFO结构的索引值。
我们再来看HelloWorld.rss文件。首先文件的最开头需要注明:
// RESOURCE IDENTIFIER
NAME HELL // 4 letter ID
每个rss文件编译后除了生成.rsc或者.r01系列的文件以外,还会生成.rsg文件,里面包含了该资源文件中各个资源的索引值。不加NAME 字段时,索引会从1开始,加了之后则会从0x*****001开始。这个32位数的前20位,是根据不同的NAME字段生成的用来标识资源文件,后12位是从1开始到0xfff(4095)用来标识资源的。所以这里要注意,命名NAME的时候必须避免与系统的资源文件重名,如EIK、AKN、CONE等等。
第二部分是头文件:
#ifdef LANGUAGE_01
#include "HelloWorld_01.rls"
Tags:Symbian Localization
编辑录入:coldstar [复制链接] [打 印]赞助商链接