83 lines
2.2 KiB
TypeScript
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;
|