squidGame/tgx-games-client/assets/module_basic/manager/LanguageManager.ts

83 lines
2.2 KiB
TypeScript

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;