点击上方亿元程序员+关注和★星标

引言
哈喽大家好 ,不知道小伙伴们最近有没有发现,如今的游戏出海,已经不是从前的粗放买量靠堆砌素材喂算法了,现在都在拼长线运营或者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:笔者线上的小游戏《打螺丝闯关》《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》《方块掌机经典》大家可以自行点击搜索体验。
实不相瞒,想要个赞 和爱心 !请把该文章分享给你觉得有需要的其他小伙伴。谢谢!
推荐专栏:
点击下方灰色按钮+关注。