点击上方亿元程序员+关注和★星标
引言
哈喽大家好,不知道小伙伴们最近有没有发现,如今的游戏出海,已经不是从前的粗放买量靠堆砌素材喂算法了,现在都在拼长线运营或者AI了。
其中Supercell的《荒野乱斗》就是最好的例子,上线五年了,如今成功逆袭。
笔者想起,八年前就已经参与过游戏的多语言版本了,那时候的主流是港台(繁体)、东南亚(英文)、韩国(韩文)。
除去接入对应的SDK外,最为深刻的就是翻译和本地化,那时候不需要很高端的操作,就是把游戏内所有的中文整理出来,给到专门负责翻译的人,完成后导回到游戏即可。
其中最头疼的就是英文,两个字能变10多个字母,很容易导致超框,以上的处理有个“国际化”的简称,叫i18n。
言归正传,今天我们就来聊聊i18n。
什么是i18n?
先简单科普一下
i18n是国际化的简称,来源是英文单词internationalization的首末字符i和n,18为单词中间的字符数。在资讯领域,国际化(
i18n)可以让产品无需做大的改变,就能够满足不同语言和地区的需要。
i18n的优势是什么?
对程序来说,在不修改内部代码的情况下,就能根据不同语言及地区切换相应的语言界面。
正如笔者引言所说,把文本交给翻译人员,回来后原路返回即可。
从最开始就制定严格的规范,所有的文本都需要通过i18n,这样能够减少后期提取文本和导回文本的麻烦操作。
一起来看个例子
既然i18n如此重要,那么我们一起来看看它在Cocos游戏开发中如何使用。
1.安装插件
首先在Store找到i18n多语言化插件,选择添加到项目即可。
添加完成之后,就可以在资源管理器看到插件对应的脚本,分别对应数据、Label管理和Sprite管理。
2.添加语言
首先通过菜单扩展->I18n Setting打开本地化控制面板。
简单添加8个语言,从下到上分别为中文、俄语、韩语、日语、法语、西班牙语、英语和德语(首字母排序)。
为什么是8个?因为可以和别人说你“精通”八国语言(你好,世界)。
编辑完成后,插件会自动在resources\i18n目录生成对应的Ts配置文件。
3.编辑中文
在zh.ts中添加你好,世界,作为示例。
4.翻译其他7种语言
把完成的所有中文内容,交给专业的翻译人员进行翻译,获得其余7种语言,我们这里简单示例就找搭子就行。
还是非常靠谱的。
5.LocalizedLabel组件
插件生成的LocalizedLabel组件,就是对Label的简单封装,根据key和语言配置获取对应的文本。
直接挂到Label组件上,配置对应的文本的key即可。
6.效果演示
我们通过点击本地化编辑面板中不同语言的“小眼睛”,即可完成语言的切换,并且看到切换语言后的效果。
上面只是编辑器演示,实际需要修改默认语言,可以在脚本中修改。
7.进阶
如果一个包体内有多种语言,想要支持动态切换语言,可以通过import * as i18n from 'db://i18n/LanguageData';导入i18n,并通过i18n.init('en');进行语言切换,最后通过i18n.updateSceneRenderers();刷新即可。
此外,LocalizedSprite组件也是同理,对Sprite的简单封装。
结语
当然了,并非所有的项目都需要使用这套插件,国际化的逻辑还是简单的,一般公司项目都有自己的技术积累,有自己的实现。
其实最主要是一个规范的问题,通过语言包的限制,避免文本到处都是。但是也使得配置表比较难以配置,这个需要小伙伴们自己权衡了。
你们使用的是什么方案?
我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。
AD:笔者线上的小游戏《打螺丝闯关》《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》《方块掌机经典》大家可以自行点击搜索体验。
实不相瞒,想要个赞和爱心!请把该文章分享给你觉得有需要的其他小伙伴。谢谢!
推荐专栏:
点击下方灰色按钮+关注。