Cocos Creator 第二优雅的多语言组件实现

谢谢分享,看了下,你们也是监听onLanguageChanged来切换多语言的,不过感觉还是有点问题:有些文本是在不同的函数里赋值的,因为它需要那个函数里的计算,局部变量之类的,这时候如果都在onLanguageChanged里处理总感觉不是很好,可能有些变量你还得从局部变量提到"类变量"里去,很蛋疼,

大佬的类名取得优雅简洁啊 赞:+1:t2:

我虽然没完全明白你的意思,但是感觉你说的这种情况应该不是问题

同感,onLanguageChanged只适合静态,有明确字符串id或者key的时候。
如果是动态的根据不同状态下拼接而成的string就不适合使用了。

1赞

对的 我说的就是指: 动态拼接的文本,类似: 等级提升 lv 级, 变量lv需要动态计算,并且lv只在特定的某个函数内部存在,目前我这里是重新跑一遍界面逻辑,因为文本太多了,不适合放在onLanguageChanged里,另外还有文字图片,

tid 支持加参数, 把动态变化的部分,配成参数,应该就能支持的说的情况比如

使用的时候

// 配置
“TID_LABEL_LV”: "Lv: ${p1}"
“TID_LABEL_LV”: "等级: ${p1}"

const level = 10;
label.tid = `TID_LABEL_LV,${level}`;
// "Lv: 10" | “等级: 10”

类似上面这样, onLanguageChanged 里是可以处理的

id支持参数,能和具体的变量绑定么? 变量可能是函数局部变量哦

发一段我们目前的代码哈:
skillMeta和skillLv都是函数内的局部变量,且需要动态赋值的
this.skillNameTxt = (LangID.SKILL_NAME_LEVEL).format(skillMeta.name, skillLv);


这样是不是就行了, 看你这情况是把格式化好的文本赋值过去的, 我赋值的是要格式化的 id, 所以 onLanguageChanged 重新按新的语言格式化,应该就行了

TID 这个词好熟悉,你是猪厂毕业生吗

并不是,可能是行业普遍这么命名吧

你可以看下标题,[ 怎么跑起来 ] 那里,子模块,和依赖的第三方库需要安装

你好,安装过依赖没有报错了,可是我想做的是多个Scene切换,还需要显示loding进度,您这个是单场景用多个预制体切换这样的吗?

是这样没错, 不过这样也是可以做多个 scene 切换, 并显示 loading 进度的, 只不过我现在还没有写到那, 比如有个预制体,切换场景时专门盖到 sceneRoot 上面,用来显示进度

我是做的3D的,会有多个美术场景,预制体是不行的,不过还是谢谢,我关注下,主要在加载的过程中显示进度(初始化场景内容,动态加载人物等等),然后资源加载和释放这块,看您这边后续有更新了我继续来学习一下,谢谢

最开始我们也是使用多个 fire 文件的, 后来因为 fire 文件切换场景太慢(有些 UI 还要重新创建),所以放弃了多个 fire 的方式, 改用 prefab

对的,就是我已经调用了preloadScene预加载了取的那个onProgress都100%了,最后调用那个loadScene的时候还会卡一段时间,所以想找个成熟的场景管理框架学习一下。

场景大了,创建预制体一样慢,也得卡一下,这除非引擎能优化下

我也想找这个。。。。

多语言还是首选gettext