WEB开发网
开发学院手机开发Symbian 开发 Symbian之Localization 阅读

Symbian之Localization

 2010-07-06 04:40:00 来源:WEB开发网   
核心提示:#elif defined LANGUAGE_31#include "HelloWorld_31.rls"#endif不同语言的字符串文字放在rls文件中,HelloWorld_01.rls和HelloWorld_31.rls分别包含了英文和中文的 qtn_caption_string,Symbia

#elif defined LANGUAGE_31

#include "HelloWorld_31.rls"

#endif

不同语言的字符串文字放在rls文件中。HelloWorld_01.rls和HelloWorld_31.rls分别包含了英文和中文的 qtn_caption_string。当mmp里定义了LANG 01 31后,会分别定义宏LANGUAGE_01和LANGUAGE_31然后编译HelloWorld.rss文件两次,然后才生成.r01和.r31两个文件。当系统加载.r01文件时,相应的qtn_caption_string会显示”HelloWorld”,而加载.r31时则会显示”你好世界”。

综上,当我们需要添加一个新语言时(如12),只需要:

1、新建相应的*_12.rls文件。

2、在*.rss文件的头文件中添加:

#elif defined LANGUAGE_12

#include "*_12.rls"

3、在mmp中的LANG语句添加:

LANG 12

如果想实现安装过程中出现的文字的本地化的话,就需要修改pkg文件。以下是有英文和中文两种语言的pkg范本,如需增加可类推。

;Language - standard language definitions

&EN, ZH

; standard SIS file header

#{"HelloWorld", "你好世界"},(0xA000017F),1,0,0

;Localised Vendor name

%{"Vender-EN", "制造商-ZH"}

;Unique Vendor name

:"Vendor"

;Supports Series 60 v 3.0

[0x101F7961], 0, 0, 0, {"Series60ProductID", "Series60ProductID-ZH"}

文件的拷贝可以有以下两种方式:

IF (LANGUAGE=1)

"..dataagreement_01.txt"-"",FT,TA

ELSEIF (LANGUAGE=31)

"..dataagreement_31.txt"-"",FT,TA

ENDIF

或者

{

"..dataagreement_01.txt"

"..dataagreement_31.txt"

} - "",FT,TA

这样安装的时候如果手机的系统语言是英文则会显示英文安装界面,然后会让你选择安装英文版还是简体中文版,然后根据你的选择拷贝相应的文件。但当系统语言为中文的时候不会弹出语言选择界面,猜测应该是系统的一个BUG。

如果我们在程序中需要多个资源文件该怎么办呢?我另外生成了个TestRss.rsc文件,里面包含TBUF结构的资源 R_TEST_RESOURCE。但程序中StringLoader::LoadLC(R_TEST_RESOURCE)时一直异常退出。个人猜测,因为

Tags:Symbian Localization

编辑录入:coldstar [复制链接] [打 印]
赞助商链接