转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/608.html
貌似又是一个很久没有写博客的时段过去了 =。 = ,公司第一款游戏已经上线,相继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)
2.HimiInternation.strings(Chinese)
OK,以上步骤完成后,下面我们来看看如何使用吧:(备注3)(这里拿cocos2d项目模版代码讲解)
OK,首先我们运行项目,当前我的手机语言为中文简体,运行截图如下:
然后我从进入手机的“设置”-“通用”-“多语言环境”-语言-选择 English ,点击完成将系统语种换成英文,重新打开我们的项目,截图如下:
注意备注1与备注3:
如果在备注1步骤时命名.strings文件为 Localizable.strings 时,那么你就可以在备注3使用的时候,用以下方式调用即可:
如果备注1步骤创建.strings文件是自定义的名字的话,如当前我起名为 HimiInternation.strings,那么调用的方式为备注3的方式:
NSLocalizedStringFromTable(@”title”,@”HimiInternation”, nil) NSLocalizedStringFromTable(@”name”,@”HimiInternation”, nil)
当自定义名字后,使用NSLocalizedString的方式不起作用,这里要注意;
本篇源码下载: “InternationProject.zip” 下载地址: http://vdisk.weibo.com/s/hq1NT