Files
NapCatQQ/.pnpm-store/v3/files/8a/30f1465362127a4afa3fd5f4620c2e6e011b4fad359e45c24dc2aeef372df22bfaee8c09e36296b55c49dd384002606a833d0343df9d7827e179a10730d646
T
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

77 lines
1.9 KiB
Plaintext

/**
* @file 用于国际化的字符串管理类
* @author mengke01(kekee000@gmail.com)
*/
function appendLanguage(store, languageList) {
languageList.forEach(item => {
const language = item[0];
store[language] = Object.assign(store[language] || {}, item[1]);
});
return store;
}
/**
* 管理国际化字符,根据lang切换语言版本
*
* @class I18n
* @param {Array} languageList 当前支持的语言列表
* @param {string=} defaultLanguage 默认语言
* languageList = [
* 'en-us', // 语言名称
* langObject // 语言字符串列表
* ]
*/
export default class I18n {
constructor(languageList, defaultLanguage) {
this.store = appendLanguage({}, languageList);
this.setLanguage(
defaultLanguage
|| typeof navigator !== 'undefined' && navigator.language && navigator.language.toLowerCase()
|| 'en-us'
);
}
/**
* 设置语言
*
* @param {string} language 语言
* @return {this}
*/
setLanguage(language) {
if (!this.store[language]) {
language = 'en-us';
}
this.lang = this.store[this.language = language];
return this;
}
/**
* 添加一个语言字符串
*
* @param {string} language 语言
* @param {Object} langObject 语言对象
* @return {this}
*/
addLanguage(language, langObject) {
appendLanguage(this.store, [[language, langObject]]);
return this;
}
/**
* 获取当前语言字符串
*
* @param {string} path 语言路径
* @return {string} 语言字符串
*/
get(path) {
const ref = path.split('.');
let refObject = this.lang;
let level;
while (refObject != null && (level = ref.shift())) {
refObject = refObject[level];
}
return refObject != null ? refObject : '';
}
}