CocosCreator3.8.x——多语言功能(简单版)
1. 创建语言文件
1)在 assets
下新建 resources/l10n
文件夹
(必须用 resources
才能动态加载)
2)创建中文英文翻译文件:
en.json
、zh.json
//en.json
{"menu_start": "Start Game","menu_exit": "Exit"
}
//zh.json
{"menu_start": "开始游戏","menu_exit": "退出"
}
2.手动实现语言管理器
1)新建 LanguageManager.ts
import { _decorator, resources, JsonAsset } from 'cc';
const { ccclass } = _decorator;@ccclass('LanguageManager')
export class LanguageManager {private static _instance: LanguageManager;private _data: Record<string, string> = {};static get instance() {if (!this._instance) this._instance = new LanguageManager();return this._instance;}async load(lang: string) {return new Promise((resolve) => {resources.load(`l10n/${lang}`, JsonAsset, (err, res) => {this._data = res?.json || {};resolve();});});}t(key: string): string {return this._data[key] || key;}
}
3.初始化语言系统
在游戏启动脚本(如 main.ts
)中:
import { LanguageManager } from './LanguageManager';// 设置英文为默认语言
await LanguageManager.instance.load('en');
4. 使用翻译文本
// 代码中动态获取
this.label.string = LanguageManager.instance.t('menu_start');// UI组件绑定(需自定义组件)// 切换语言
LanguageManager.instance.loadLanguage('zh').then(() => {this.$Label.string = LanguageManager.instance.t('menu_start'); // 显示中文});
5.优缺点
优点:简单单一,便捷
缺点:使用麻烦,需要拿组件信息赋值,翻译条目需自己定义(优化后续再出)