From 5681238cd0221dbffa76afbfdd8370cd868dfe78 Mon Sep 17 00:00:00 2001 From: lishuang Date: Sat, 20 Jun 2020 17:35:21 +0800 Subject: [PATCH] Ready to migrate lang from Moon to Lang. --- src/common/model/global/Lang.ts | 74 +++++++++++++++++++++++++++++++ src/common/model/user/UserRole.ts | 6 +-- 2 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 src/common/model/global/Lang.ts diff --git a/src/common/model/global/Lang.ts b/src/common/model/global/Lang.ts new file mode 100644 index 0000000..0810ec1 --- /dev/null +++ b/src/common/model/global/Lang.ts @@ -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 + } + +} diff --git a/src/common/model/user/UserRole.ts b/src/common/model/user/UserRole.ts index b634a48..501f71b 100644 --- a/src/common/model/user/UserRole.ts +++ b/src/common/model/user/UserRole.ts @@ -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, },