貌似又是一个很久没有写博客的时段过去了 =。 = ,公司第一款游戏已经上线,相继iphone中文版,ipad,android版本都会陆续上线,这里感谢大家的支持与关注!年后呢,himi呢也一直在这里为自己的个人博客各种使劲,由于没有弄过所以比较菊花…不过至少现在弄的还算自己满意,一直关注过himi的童鞋应该知道,himi的博客在各大论坛和社区都有开设,本身himi身处创业中,一方面时间安排不开来写博客,并且到各大博客去繁琐操作更新,另外一方面himi也在努力自我学习中,所以做一个独立博客也是势在必行了; 也因此除了himi的此个人博客外,其他博客将会相继停止更新;望大家相互转告,并能体谅himi;
好了不多说了,转入正题,今天要讲解的是个移动开发中比较基础而又不能少的知识点:游戏本地化
简单概括下游戏“本地化”概念,所谓本地化简单的说就是不同地区的用户进入我们的应用程序后,我们的app中的文字传递给用户的信息都能显示他们能看懂的语言,譬如:中国用户打开我们的app自动显示文字信息语言为简体或者繁体,美国用户打开我们的app自动显示文字信息语言为英文等等;
那么本地化的方式一般有两种形式:
1. 我们自己在app中提供给用户一个语言选择的功能,例如主界面中有一个“语言选择”的按钮,用户点击后进入一个类似列表的ui中,让用户选择“中文”,“英文”…等语言;当用户选择后我们则让程序中的text信息自动选择对应的语言信息文本即可,(或者用户选择语言后自动从我们的server端下载语言资源包灯),此方式相比而言感觉较笨;
2.当用户进入我们的app时,我们根据当前用户当前移动设备的语言自动将我们的app切换对应语言!(虽然此方法省去了用户的选择,而智能判定,但是用户如果需要使用其他语言进行app的话,需要手动去设置手机语言,此方式则相比于第一种形式感觉又不太方便了,不过一般用户不会这么玩咱们的 = =)
那么这里对于第一种本地化的方式himi这里就不多说了,比较容易实现,没有可讲的,这里himi重点说下第二种形式:智能判定用户设备系统语言进而自动设置我们的app为其对应语种!
首先右键你的项目,选择new file…,然后出现如下窗口,在左侧 resource 中选择 strings file 一项,最后自定义名字即可,这里我把这个文件命名为:himiinternation.strings (备注1)

然后我们选中新建的xx.strings文件,然后在“hide or show the utilities”中添加语言,这里himi添加英文和中文为大家举例说明,如下图:(途中箭头是“hide or show the utilities”)
chinese(zh-hans)中文简体 english 英文
当添加了两种语言后,那么一开始我们创建的himiinternation.strings中双击打开后将看到如下两个文件:
1.himiinternation.strings(english) 2.himiinternation.strings(chinese)
两个文件中内容如下:
1.himiinternation.strings(english)
1
2
3
4
5
6
7
8
9
/*
himiinternation.strings
internationpro
created by on 12-2-25.
copyright (c) 2012年 augustimpression. all rights reserved.
*/
"title"="当前系统语言为-中文";
"name"="李华明";
2.himiinternation.strings(chinese)
"title"="当前系统语言为-english";
"name"="himi";
ok,以上步骤完成后,下面我们来看看如何使用吧:(备注3)(这里拿cocos2d项目模版代码讲解)
10
//备注3
cclabelttf *label = [cclabelttf labelwithstring:nslocalizedstringfromtable(@"title",@"himiinternation", nil) fontname:@"marker felt" fontsize:44];
cgsize size = [[ccdirector shareddirector] winsize];
label.position = ccp( size.width /2 , size.height/2 );
[self addchild: label];
//name
label = [cclabelttf labelwithstring:nslocalizedstringfromtable(@"name",@"himiinternation", nil) fontname:@"marker felt" fontsize:24];
label.position = ccp( size.width /2 , size.height/2-100 );
ok,首先我们运行项目,当前我的手机语言为中文简体,运行截图如下:
然后我从进入手机的“设置”-“通用”-“多语言环境”-语言-选择 english ,点击完成将系统语种换成英文,重新打开我们的项目,截图如下:
注意备注1与备注3:
如果在备注1步骤时命名.strings文件为 localizable.strings 时,那么你就可以在备注3使用的时候,用以下方式调用即可:
nslocalizedstring(@"title", nil) nslocalizedstring(@"name", nil)
如果备注1步骤创建.strings文件是自定义的名字的话,如当前我起名为 himiinternation.strings,那么调用的方式为备注3的方式:
nslocalizedstringfromtable(@”title”,@”himiinternation”, nil) nslocalizedstringfromtable(@”name”,@”himiinternation”, nil)
当自定义名字后,使用nslocalizedstring的方式不起作用,这里要注意;