All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 5m53s
49 lines
1.8 KiB
JavaScript
49 lines
1.8 KiB
JavaScript
|
||
// 导入国际化JSON文件
|
||
import langJSON from './index.json'
|
||
(function () {
|
||
// 定义翻译函数
|
||
let $t = function (key, val, nameSpace) {
|
||
// 获取指定命名空间下的语言包
|
||
const langPackage = $t[nameSpace];
|
||
// 返回翻译结果,如果不存在则返回默认值
|
||
return (langPackage || {})[key] || val;
|
||
};
|
||
// 定义简单翻译函数,直接返回传入的值
|
||
let $$t = function (val) {
|
||
return val;
|
||
};
|
||
// 定义设置语言包的方法
|
||
$t.locale = function (locale, nameSpace) {
|
||
// 将指定命名空间下的语言包设置为传入的locale
|
||
$t[nameSpace] = locale || {};
|
||
};
|
||
// 将翻译函数挂载到window对象上,如果已经存在则使用已有的
|
||
window.$t = window.$t || $t;
|
||
// 将简单翻译函数挂载到window对象上
|
||
window.$$t = $$t;
|
||
// 定义从JSON文件中获取指定键的语言对象的方法
|
||
window._getJSONKey = function (key, insertJSONObj = undefined) {
|
||
// 获取JSON对象
|
||
const JSONObj = insertJSONObj;
|
||
// 初始化语言对象
|
||
const langObj = {};
|
||
// 遍历JSON对象的所有键
|
||
Object.keys(JSONObj).forEach((value) => {
|
||
// 将每个语言的对应键值添加到语言对象中
|
||
langObj[value] = JSONObj[value][key];
|
||
});
|
||
// 返回语言对象
|
||
return langObj;
|
||
};
|
||
})();
|
||
// 定义语言映射对象
|
||
const langMap = {
|
||
'en': window?.lang?.en || window._getJSONKey('en', langJSON),
|
||
'zhcn': window?.lang?.zhcn || window._getJSONKey('zhcn', langJSON)
|
||
};
|
||
// 从本地存储中获取当前语言,如果不存在则使用源语言
|
||
const lang = window.localStorage.getItem('lang') || 'zhcn';
|
||
// 根据当前语言设置翻译函数的语言包
|
||
window.$t.locale(langMap[lang], 'lang');
|
||
|