mirror of
https://github.com/kuaifan/dootask.git
synced 2026-08-01 19:05:55 +00:00
103 lines
2.5 KiB
JavaScript
Vendored
103 lines
2.5 KiB
JavaScript
Vendored
export default {
|
|
contextKeyPattern: /^\[([a-z][a-z0-9_]*)]\.([\s\S]+)$/,
|
|
|
|
/**
|
|
* 语言类型
|
|
*/
|
|
languageList: {
|
|
"zh": "简体中文",
|
|
"zh-CHT": "繁體中文",
|
|
"en": "English",
|
|
"ko": "한국어",
|
|
"ja": "日本語",
|
|
"de": "Deutsch",
|
|
"fr": "Français",
|
|
"id": "Indonesia",
|
|
"ru": "Русский язык",
|
|
},
|
|
|
|
/**
|
|
* 替换(*)遍历
|
|
* @param text
|
|
* @param objects
|
|
* @returns {*}
|
|
*/
|
|
replaceArgumentsLanguage(text, objects) {
|
|
let j = 1;
|
|
return text.replace(/\(\*\)/g, () => this.getArgumentLanguage(objects[j++]));
|
|
},
|
|
|
|
/**
|
|
* 获取语言参数
|
|
* @param value
|
|
* @returns {string|*}
|
|
*/
|
|
getArgumentLanguage(value) {
|
|
if (value === null || typeof value === "undefined" || typeof value === "object") {
|
|
return '';
|
|
}
|
|
return value;
|
|
},
|
|
|
|
/**
|
|
* 规范化参数化语言键
|
|
* @param text
|
|
* @returns {string}
|
|
*/
|
|
normalizeArgumentsLanguage(text) {
|
|
return text.replace(/\(%[TM]\d+\)/g, "(*)");
|
|
},
|
|
|
|
/**
|
|
* 移除翻译上下文前缀,例如 [weekday].一 -> 一
|
|
*/
|
|
stripContextLanguageKey(text) {
|
|
if (typeof text !== "string") {
|
|
return text;
|
|
}
|
|
return text.match(this.contextKeyPattern)?.[2] || text;
|
|
},
|
|
|
|
/**
|
|
* 获取语言
|
|
* @returns {string}
|
|
*/
|
|
getLanguage() {
|
|
let lang = window.localStorage.getItem("__system:languageName__")
|
|
if (typeof lang === "string" && typeof this.languageList[lang] !== "undefined") {
|
|
return lang;
|
|
}
|
|
lang = 'en';
|
|
let navLang = ((window.navigator.language || navigator.userLanguage) + "").toLowerCase();
|
|
switch (navLang) {
|
|
case "zh":
|
|
case "cn":
|
|
case "zh-cn":
|
|
lang = 'zh'
|
|
break;
|
|
case "zh-tw":
|
|
case "zh-tr":
|
|
case "zh-hk":
|
|
case "zh-cnt":
|
|
case "zh-cht":
|
|
lang = 'zh-CHT'
|
|
break;
|
|
default:
|
|
if (typeof this.languageList[navLang] !== "undefined") {
|
|
lang = navLang
|
|
}
|
|
break;
|
|
}
|
|
this.saveLanguage(lang)
|
|
return lang
|
|
},
|
|
|
|
/**
|
|
* 保存语言
|
|
* @param lang
|
|
*/
|
|
saveLanguage(lang) {
|
|
window.localStorage.setItem("__system:languageName__", lang)
|
|
},
|
|
}
|