Symbian中多语言的实现

 

本人原创,特与大家分享,如要转载请注明出处。谢谢!
S60 3rd Mr 实现多语言版本 
实现两种语言 -- 英语 中文 

注: hanhua 这个工程是通过 symbian 的向导生成的

第一步:
先创建两种语言的rls 文件 hanhua_01.rls hanhua_31.rls (可以直接通过 拷贝hanhua.rls 得到两个版本的文件,改个名就行了。)
第二步:
清空hanhua.rls文件,将以下代码写入

#ifdef LANGUAGE_SC
#include "hanhua_01.rls" // default U.K. English
#elif defined LANGUAGE_01
#include "hanhua_01.rls" // U.K. Englishsh
#elif defined LANGUAGE_31
#include "hanhua_31.rls" // PRC Chinese
#endif

第三步:
打开文件 hanhua_31.rls. 选择菜单 Edit/Set Encode.... 将字符集改为 UTF-8.
加入 CHARACTER_SET UTF8 ,很重要,不然会显示乱码
汉化文件中的相关资源
(ps: 最好也将hanhua.rls的字符集也改为 UTF-8)

第四步:
修改 hanhua.mmp 文件中的语言 LANG SC 01 31

第五步:
修改pkg打包文件

1. 修改语言项
;Language - standard language definitions
&EN,ZH
2. 
; standard SIS file header
#{"hanhua","hanhua"},(0xE3DC81A7),1,0,0
3. 
;Localised Vendor name
%{"Vendor-EN", "Vendor-ZH"}
4.
;Supports Series 60 v 3.0
[0x101F7961], 0, 0, 0, {"Series60ProductID","Series60ProductID"}
5.
最关键一步 
{
"$(EPOCROOT)Epoc32/data/z/resource/apps/hanhua_0xE3DC81A7.rsc" 
"$(EPOCROOT)Epoc32/data/z/resource/apps/hanhua_0xE3DC81A7.r31" 
} -"!:/resource/apps/hanhua_0xE3DC81A7.rsc"

以上五个步骤是通过研究系统的例子总结而出,并在N95上测试成功。

最好是每改好一步就立即编译一下。

 

http://discussion.forum.nokia.com/forum/showthread.php?176484-分享-S60-3rd-Mr-实现多语言版本

 

 

http://wiki.forum.nokia.com/index.php/如何向Symbian_C%2B%2B程序中添加多语言支持

 

 

先给出pkg文件bemused.pkg里面的代码再作说明:

&EN,ZH
#{"Bemused1.73 ","Bemused1.73简体汉化版"},(0x12120BAB),1,73,0,type=sisapp
(0x101F6F88), 0, 0, 0, {"Series60ProductID","Series60ProductID"}


"G:/system/apps/Bemused/Bemused.aif"-"!:/system/apps/Bemused/Bemused.aif"
"G:/system/apps/Bemused/Bemused.app"-"!:/system/apps/Bemused/Bemused.app"
"G:/system/apps/Bemused/Bemused_caption.rsc"-"!:/system/apps/Bemused/Bemused_caption.rsc"
"G:/system/apps/Bemused/skins/Basic_fs.png"-"!:/system/apps/Bemused/skins/Basic_fs.png"
"G:/system/apps/Bemused/skins/Basic_fs.txt"-"!:/system/apps/Bemused/skins/Basic_fs.txt"
"G:/system/apps/Bemused/skins/Basic_iw.png"-"!:/system/apps/Bemused/skins/Basic_iw.png"
"G:/system/apps/Bemused/skins/Basic_iw.txt"-"!:/system/apps/Bemused/skins/Basic_iw.txt"


{"G:/system/apps/Bemused/Bemused.rEN"
"G:/system/apps/Bemused/Bemused.rZH"}-"!:/system/apps/Bemused/Bemused.rsc"


注意对比这部分代码和最开始的那部分代码,关键在于红色的部分。

1。&EN,ZH表示这个程序支持英文和中文两种语言。

2。{"Bemused1.73 ","Bemused1.73简体汉化版"}是安装程序标题,需要按语言支持区段的语言顺序
来依次(就是按&EN,ZH那个部分的顺序)输入各语言版本下的标题,标题名称用“,”分割.

3。{"Series60ProductID","Series60ProductID"}是是平台类型校验字符串,用来目标机器的平台类型,
语言安装程序,则需要按语言支持区段的语言顺序来依次(就是按&EN,ZH那个部分的顺序)输入各语言版本下的校验
字符串,字符串间用“,”分割,这里表示两个语言版本都是支持S60平台。

4。最关键的是最后红色标记的那部分代码,手机端目标文件不变,PC端源文件按照该格式书写即可PC端源文件的顺序
要按照语言顺序来依次(就是按&EN,ZH那个部分的顺序)书写(PC端源文件可用空格或换行分隔)。
举例说明,本例的资源文件是rsc文件。汉化完毕以后,若想比打包的文件支持中文和英文两种。则把原来的英文rsc文件
命名为Bemused.rEN,把汉化以后的rsc文件命名为Bemused.rZH。当安装过程中系统自动识别手机的语言版本(或则用户自
行选择以后),安装文件就会在上述两个文件选择一个安装到手机路径中,安装完毕以后的文件名子是Bemused.rsc

注意:这里测试的时候情况是这样的:如果你的手机是中文机,那么安装过程中安装程序就会自动帮你
选择中文汉化版安装在你的手机上。
 


做完上面的工作以后,按照前面的打包方法即可制作出多语言版本的安装文件.

但是刚才说了,由于这个功能在安装的过程中系统有自动识别功能。所以你在中文机上测试上面制作的安装文件的时候是没有选择权的,系统会自动帮你安装中文汉化版。那确实想自己选择怎么办呢?下面提供一种用“可选组件”的方法来实现(当然这个功能可以实现你添加任何想供用户选择是否安装的组件,例如一些视频播放软件中的Demo文件)

 

 

你可能感兴趣的:(测试,语言,手机,character,Symbian,平台)