yh-i18n 2.0.3 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +30 -2
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -31,12 +31,15 @@ const initlang = localStorage.translateLanguage || navLang || "zh_CN";
|
|
|
31
31
|
export let i18n = null;
|
|
32
32
|
window.translateReady = localStorage.translateReady ? localStorage.translateReady === "1" : import.meta.env.DEV;
|
|
33
33
|
const isDev = window.translateReady;
|
|
34
|
+
let contentReady = false;
|
|
34
35
|
|
|
35
36
|
const keySet = new Set();
|
|
36
37
|
Object.keys(zhCNBase).forEach((key) => {
|
|
37
38
|
keySet.add(key);
|
|
38
39
|
});
|
|
39
40
|
|
|
41
|
+
const unHandle = [];
|
|
42
|
+
|
|
40
43
|
function addTranslate(key) {
|
|
41
44
|
if (key.indexOf("vxe") === -1) {
|
|
42
45
|
try {
|
|
@@ -54,12 +57,34 @@ function addTranslate(key) {
|
|
|
54
57
|
}
|
|
55
58
|
}
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
let recursionAddTimer = null;
|
|
61
|
+
function recursionAddTranslate() {
|
|
62
|
+
if (recursionAddTimer !== null) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
// 当触发 content 加载完成触发递归方法后,判断是否有需要处理的键,有则处理,没有则忽略
|
|
66
|
+
if (unHandle.length && contentReady) {
|
|
67
|
+
let key = unHandle.pop();
|
|
59
68
|
if (!keySet.has(key) && window.translateReady) {
|
|
60
69
|
keySet.add(key);
|
|
61
70
|
addTranslate(key);
|
|
62
71
|
}
|
|
72
|
+
// 通过延时降低任务密度,避免挤兑正常逻辑的运算资源
|
|
73
|
+
recursionAddTimer = setTimeout(() => {
|
|
74
|
+
console.log("recursionAddTimer", key, unHandle.length);
|
|
75
|
+
recursionAddTimer = null;
|
|
76
|
+
recursionAddTranslate();
|
|
77
|
+
}, 150);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export const ct = (key, args) => {
|
|
82
|
+
if (isDev) {
|
|
83
|
+
// 将 键的处理全部放入队列中,避免挤兑正常逻辑的运算资源
|
|
84
|
+
if (!unHandle.includes(key)) {
|
|
85
|
+
unHandle.push(key);
|
|
86
|
+
recursionAddTranslate();
|
|
87
|
+
}
|
|
63
88
|
}
|
|
64
89
|
if (i18n) {
|
|
65
90
|
return i18n.global.t(key, args);
|
|
@@ -200,6 +225,9 @@ async function getRemoteMessage(list) {
|
|
|
200
225
|
let m = i18n.global.getLocaleMessage(key);
|
|
201
226
|
i18n.global.setLocaleMessage(key, Object.assign(m, messages[key]));
|
|
202
227
|
});
|
|
228
|
+
// 翻译内容加载完成,打开开关并运行递归函数,处理累积的数据
|
|
229
|
+
contentReady = true;
|
|
230
|
+
recursionAddTranslate();
|
|
203
231
|
} catch (error) {}
|
|
204
232
|
}
|
|
205
233
|
|