mirror of
https://github.com/eyebluecn/tank-front
synced 2024-04-21 12:31:55 +00:00
Ready to migrate lang from Moon to Lang.
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* 全局性的国际化
|
||||
*/
|
||||
import BrowserUtil from "../../util/BrowserUtil";
|
||||
import Cookies from "js-cookie";
|
||||
import LangEn from "./i18n/LangEn";
|
||||
import LangZh from "./i18n/LangZh";
|
||||
|
||||
|
||||
export default class Lang {
|
||||
|
||||
//当前使用的语言,默认中文
|
||||
lang: string = "zh"
|
||||
|
||||
//全局的一个store对象
|
||||
private static singleton: Lang | null = null
|
||||
|
||||
//使用懒加载模式。
|
||||
static getSingleton(): Lang {
|
||||
if (Lang.singleton == null) {
|
||||
Lang.singleton = new Lang();
|
||||
|
||||
//读取默认的语言
|
||||
let lang = BrowserUtil.browserLang()
|
||||
let localLang = Cookies.get("_lang");
|
||||
if (localLang === "zh" || localLang === "en") {
|
||||
lang = localLang
|
||||
}
|
||||
Lang.singleton.lang = lang
|
||||
console.log("当前浏览器默认语言是:", lang)
|
||||
|
||||
}
|
||||
|
||||
return Lang.singleton
|
||||
}
|
||||
|
||||
//快捷获取一种语言对应的文字。
|
||||
static t(key: string, ...params: any[]): string {
|
||||
|
||||
let json: { [key: string]: any } = LangEn
|
||||
|
||||
let lang = Lang.getSingleton().lang
|
||||
if (lang == "zh") {
|
||||
json = LangZh
|
||||
}
|
||||
|
||||
let keyParts: string[] = key.split(".")
|
||||
let jsonBody: any = json
|
||||
for (let i = 0; i < keyParts.length; i++) {
|
||||
let part: string = keyParts[i]
|
||||
jsonBody = jsonBody[part]
|
||||
if (jsonBody === undefined || jsonBody === null) {
|
||||
//找不到key对应的内容,直接返回key
|
||||
return key
|
||||
}
|
||||
}
|
||||
|
||||
//到这里已经找到了
|
||||
if (typeof jsonBody !== "string") {
|
||||
return key
|
||||
}
|
||||
|
||||
//依次将参数写入进去。
|
||||
if (params && params.length > 0) {
|
||||
for (let i = 0; i < params.length; i++) {
|
||||
let param = params[i]
|
||||
jsonBody = jsonBody.replace("{}", param)
|
||||
}
|
||||
}
|
||||
|
||||
return jsonBody
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,17 +12,17 @@ let UserRoles: UserRole[] = Object.keys(UserRole).map(k => k as UserRole);
|
||||
|
||||
let UserRoleMap: { [key in keyof typeof UserRole]: ColorSelectionOption } = {
|
||||
GUEST: {
|
||||
'name': '游客',
|
||||
'name': "user.roleGuest",
|
||||
'value': 'GUEST',
|
||||
'color': Color.WARNING,
|
||||
},
|
||||
USER: {
|
||||
'name': '普通用户',
|
||||
'name': "user.roleUser",
|
||||
'value': 'USER',
|
||||
'color': Color.PRIMARY,
|
||||
},
|
||||
ADMINISTRATOR: {
|
||||
'name': '管理员',
|
||||
'name': "user.roleAdministrator",
|
||||
'value': 'ADMINISTRATOR',
|
||||
'color': Color.DANGER,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user