cc-i18n介绍

基于cocos creator引擎的游戏开发i18n多语言模块,是在nodejs环境下运行的i18n工具,所以需要确保安装nodejs环境。

该工具可以帮助你自动检测游戏预制体中的cc.Label组件,并生成相应的key存储在json文件中,并把相对应的key设置在I18nLabel组件中,同时也支持自动给预制体增加I18nLabel组件

项目源码:https://github.com/hepeidong/cc-i18n

安装

搭建nodejs环境,并查看是否有nodejs和npm版本 node --version npm --version,如果以确定安装了相应环境, 则执行下面命令进行安装:

npm install  cc-i18n -g

示例演示图片:

命令行

工具通过五个命令可以启动运行:

cc-i18n create:

这个命令会在项目的scripts/i18n目录下生成i18n模块代码,同时在resources/i18n生成相应目录结构

cc-i18n gen-key:

 1.  label多语言:

这个命令是根据预制体Label节点中挂载的I18nLabel组件生成相应的key,并把key保存到一个Json文件中;

注意:每一个需要自动生成多语言key的label节点,都需要手动挂载I8nLabel组件,如果想自动挂载,请使用

cc-i18n gen-set-key --g 这个命令,但这个命令会在所有label节点上挂载I18nLabel组件,故使用前需要考虑清楚是不是所有label节点都是静态文本。

2. sprite多语言:

对于sprite多语言来说,会检测assets/resources/i18n/sprite目录下的所有图片资源,并获取图片资源的uuid,把uuid存储在json文件中。在使用时,必须先在i18n/sprite/路径下根据不同的语言增加相应的目录,比如,如果你只发布中文和英语两种语言,那么就在i18n/sprite路径下建zh和en两个文件夹,在这两个文件夹下各自语言的图片,必须要确保同一种图片,在不同语言文件夹下的图片文件名相同。

注意:i18n/sprite/json路径下的文件内容不得更改,除非你完全了解更改后会产生什么后果

cc-i18n set-key:

需要开发者实现在须要进行多语言适配的挂有cc.Label组件或者cc.Sprite组件的节点挂载I18nLabel组件或者I18nSprite组件,

只有挂载了对应的I18nLabel组件和I18nSprite组件,才能对这两个组件设置key。

1. label多语言:

这个命令会检查挂有cc.Label组件的这些节点是否有挂载I18nLabel组件,如果有,则把相应的key设置到组件上

2. sprite多语言:

这个命令会检查挂有cc.Sprite组件的这些节点是否有挂载I18nSprite组件,如果有,则会根据cc.Sprite组件上挂载的相应图片,把这张图片的uuid设置到I18nSprite组件上。

cc-i18n gen-set-key:

这个命令会同时执行 cc-i18n gen-key, cc-i18n set-key命令。

cc-i18n gen-set-key -g:

这个命令是根据预制体节点中挂载的cc.Label组件生成相应的key,并把key保存到一个Json文件中,然后再在挂载了

cc.Label组件的节点上增加I18nLabel组件,并把相应的key设置到组件上(这个功能在大项目中可能会存在问题)

注意:这个命令对sprite多语言不起作用,只有label多语言才有用,当使用这个命令时,sprite多语言不会生成key,以及设置key。

功能使用

初始化

使用时,需要在游戏项目的根目录运行上面所介绍的功能命令,例如TestGame项目在D:\proj\TestGame,那么需要进入

当前这个项目的根目录也就是D:\proj\TestGame目录下工作,第一次在该项目使用时,需要先运行cc-i18n create

此命令是初始化一些配置信息,以及把相关的代码文件和目录拷贝和创建到游戏项目assets的目录下。如图:

静态文本

对于静态文本,需要开发者自行在挂在了cc.Label组件的节点上挂在I18nLabel组件,或者可以使用cc-i18n gen-set-key -g 自动给相应节点挂在I18nLabel组件,需要注意这个命令会给所有挂载了cc.Label组件的节点自动挂载I18nLabel组件,故需要考虑是否所有label节点都是静态文本。

如图:

动态文本

动态文本需要在在具体的语言目录下新建一个任意英文名的json文件,把需要显示的内容同样以键值对的形式存储起来,

然后就可以通过key获取到该json文件的文本内容,可以通过获取节点挂载的I8nLabel组件,通过这个组件的setLabel这个接口去设置相应的文本,该接口通过传入的key获取json文件中的内容,开发者可以事先在相应的json文件中增加对应的键值对,例如在zh.json文件增加 "hello": "你好", 则在代码中可以通过

获取对应语言文件的 "hello" 对应的文本内容。

动态文本还支持动态替换json中设定的文本内容,例如zh.json文件中 "hello": "你好{0}",那么使用时可以通过

node.getComponent(I18nLabel).setLabel("hello", "i18n工具")

那么返回的字符串就是 "你好i18n工具",接口的第二个参数除了传实际的文本内容,也可以传入key。除此之外还可以在I18nLabel组件上面的 params 属性增加相应的文本内容用于替换{0},需要注意,文本中有多少个{},params 参数就可以传多少个用于替换,而且有{}必须严格按照{0},{1},{2}...以此类推,{}里面必须带有当前第几个的数字,从0开始。

例如示例:

如何增加语言

可以在LanguageEnum文件中增加语言枚举,例如:

同时在resources/i18n.text目录下增加与枚举同名的目录,再在这个目录下增加枚举同名的json文件即可

如何使用标签多语言

只需要在项目完成后,把zh.json翻译成所需要的语言版本即可,注意key必须一样,不能改变,即把key对应的文本翻译成不同语言即可。

cocos creator 版本

3.x以上

cocos creator国际化i18n多语言工具cc-i18n相关推荐

  1. vscode函数跳转插件_人生苦短,我们为 Cocos Creator 开发的插件和工具

    在使用 Cocos Creator 开发项目的过程中,为了提高开发效率我们开发了很多扩展插件,本文介绍常用的几款,抛砖引玉,希望给大家带来帮助. 腾讯开心鼠英语 网页扩展:运行时查看场景节点树 Coc ...

  2. cocos creator入门教程(六)—— cc.Action使用

    Action类是动作命令,我们创建Action,然后节点运行action就能够执行Action的动作; Action分为两类: (1) 瞬时就完成的ActionInstant, (2) 要一段时间后才 ...

  3. 【cocos creator】释放不用的资源 cc.assetManager.releaseAsset

    释放前要检查该资源有没有在游戏中被引用 clear_Audio(url) {let count = 0;for (let t in this.questionData) {let element = ...

  4. cocos creator组件化开发 对比 cocos studio +cocos2dx开发

    相对于使用cocos studio + cocos2dx开发模式,使用cocos creator的组件化开发更为高效和简洁 以按钮myButton节点的点击音效为例: 1:cocos studio + ...

  5. cocos creator麻将教程系列(九)—— 幼麟棋牌代码讲解

    这篇文章是官方整理的: 技术栈 客户端 引擎:Cocos Creator 2.0.6. 语言:Javasctipt 可用开发平台:MAC,Windows 可发布平台: iOS,Android,Wind ...

  6. html多语言国际化,gMIS吉密斯i18n多语言国际化更新

    gMIS吉密斯 部署和使用范围日益扩大,跨国多语言版本成为迫切需要的功能,早在2018年年中就考虑要增加这一功能--在gMIS吉密斯中实现多语言版本的支持. 以期实现gMIS吉密斯的跨行业.跨地区和国 ...

  7. 游戏开发-cocos creator技巧-cc.Component.EventHandler自定义click事件

    cocos creator有两种给按钮注册click事件的方式, EventHandler的方式虽然有点麻烦,但是比较灵活,使用时候注意每个参数必须填写正确,否则click时候会报null的错误 第一 ...

  8. cocos creator基础-(五)cc.Component使用

    一.组件入口函数 1: onLoad: 组件加载的时候调用, 保证了你可以获取到场景中的其他节点,以及节点关联的资源数据 2: start: 也就是第一次执行 update 之前触发 3: updat ...

  9. cocos creator运行正常,微信开发者工具中报错XXX is not defined.

    描述 在cocos creator中运行没有问题(浏览器.模拟器不报错): 但是构建发布后,在微信开发者工具中报错XXX is not defined. 解决 1.在cocos creator中定位错 ...

最新文章

  1. Github Pages+Hexo+阿里云域名绑定
  2. python 如何自学-如何系统地自学 Python?
  3. python电脑配置大概要多少钱-学python最电脑配置有要求么
  4. kafka shell
  5. DFT实训教程笔记2(bibili版本)- Scan synthesis practice
  6. matlab 角域重采样,matlab滤波技术与区域处理---区域滤波
  7. 直播预告丨告别后知后觉的指标波动,神策智能预警分析直播来袭
  8. linux下qt多个程序打包,解决Ubuntu下使用linuxdeployqt打包Qt程序问题
  9. 两个企业级产品设计思路:流程效率指标功能生命周期长度
  10. 技术面试问项目难题如何解决的_同轴线如何当网线使用?解决改造项目中难题...
  11. 51Nod-1018 排序【排序】
  12. easyui datagrid 动态绑定列
  13. Sublime Text SFTP 注册码
  14. Windows Server 2019 安装应用商店
  15. Ultra Compare 8 文本比较乱码问题 解决
  16. jquery实现回到顶部和回到底部
  17. java钝化_黑马day14 监听器之javaBean对象的活化和钝化
  18. 1072 开学寄语 C++实现
  19. OpenHarmony啃论文俱乐部方法总结分析
  20. 怎么搜索到最新最全的热点新闻资讯呢?有这四个工具就够了

热门文章

  1. 孟岩:想抓住EOS的机会,从这四个方向入手吧!
  2. Spring教程——Spring注入内部Bean
  3. Failure 与 Error
  4. OpenSSL编译说明:Linux结合libcurl库编程实现人脸识别和车牌识别
  5. 从零到一搭建基础架构(2)-如何构建基础架构模块划分
  6. 力扣146题 LRU 缓存机制
  7. exp/expdp 与 imp/impdp命令导入导出数据库详解
  8. kafka消息存储机制和原理
  9. TransTrack: Multiple Object Tracking with Transformer
  10. 跨境电商淘宝详情解决方案