import {director, sys} from "cc"; import {configDataKey, ELanguage} from "../component/Enums"; import {areanMgr} from "db://assets/module_arean/scripts/AreanManager"; import {EventName} from "db://assets/core_tgx/easy_ui_framework/EventName"; export default class LanguageManager { private _languageType:number = 1; private static _lang: LanguageManager; public static get Instance(): LanguageManager { if (!this._lang) { this._lang = new LanguageManager(); let type = sys.localStorage.getItem(configDataKey.Language) || ELanguage.EN; if(type){ this._lang._languageType = parseInt(type); }else{ this._lang._languageType=1; } } return this._lang; } /** * 语言类型 * 0:中文 * 1:英文 * 2:繁体 */ public set languageType(v : number) { this._languageType = v; director.emit(EventName.update_language); } public get languageType() : number { return this._languageType; } /** * * @param key 语言key * @returns 语言内容 */ public getLanguage(key: string): string { return areanMgr.cfgMgr.languageData.getCurLanguageData(key); // let str = Language[key]; // if(str=='' || str==undefined){ // return key; // } // return str[this._languageType]; } /** * 获取动态组合语言 * @param key 语言key * @param args 格式化参数 * @returns */ public getLanguageByParam(key: string, ...args: any[]){ let _key = this.getLanguage(key) || key; //@ts-ignore String.prototype.format = function () { if (arguments.length == 0) { return _key; } for (let i = 0; i < args.length; i++) { // key = key.replace(new RegExp("\\{"+i+"\\}","g"), args[i]); _key = _key.replace(new RegExp("\\%" + "[a-z]", "m"), args[i]); } return _key; }; return ""; } } export const LanguageMgr = LanguageManager.Instance;