mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-17 19:23:26 +00:00
perf: 优化国际化
This commit is contained in:
parent
c7dafa6199
commit
d565501e04
101
resources/assets/js/language/index.js
vendored
101
resources/assets/js/language/index.js
vendored
@ -95,6 +95,31 @@ export default {
|
|||||||
return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == '[object array]' && typeof obj.length == "number";
|
return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == '[object array]' && typeof obj.length == "number";
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换Ascii编码
|
||||||
|
* @param value
|
||||||
|
* @returns {string}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
__convertAscii(value) {
|
||||||
|
if (typeof value !== "string") {
|
||||||
|
value = String(value)
|
||||||
|
}
|
||||||
|
let nativecode = value.split("");
|
||||||
|
let ascii = "";
|
||||||
|
for (let i = 0; i < nativecode.length; i++) {
|
||||||
|
let code = Number(nativecode[i].charCodeAt(0));
|
||||||
|
if (code > 127) {
|
||||||
|
let charAscii = code.toString(16);
|
||||||
|
charAscii = String("0000").substring(charAscii.length, 4) + charAscii;
|
||||||
|
ascii += "\\u" + charAscii;
|
||||||
|
} else {
|
||||||
|
ascii += nativecode[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ascii
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监听语言变化
|
* 监听语言变化
|
||||||
* @param callback
|
* @param callback
|
||||||
@ -190,53 +215,55 @@ export default {
|
|||||||
}
|
}
|
||||||
this.__initLanguageData();
|
this.__initLanguageData();
|
||||||
//
|
//
|
||||||
if (typeof languageCachesObjects[text] === "undefined") {
|
const ascii = this.__convertAscii(text)
|
||||||
|
if (typeof languageCachesObjects[ascii] === "undefined") {
|
||||||
|
let tmpKey = null;
|
||||||
let tmpRege = null;
|
let tmpRege = null;
|
||||||
let tmpData = this.languageData.find((obj) => {
|
let tmpData = this.languageData.find((obj) => {
|
||||||
if (typeof obj._ !== "undefined") {
|
tmpKey = obj._ || obj.CN
|
||||||
tmpRege = new RegExp("^" + this.replaceEscape(obj._).replace(/%/g, "(.*?)") + "$", "g");
|
if (String(tmpKey).indexOf("%")) {
|
||||||
|
tmpRege = new RegExp("^" + this.replaceEscape(tmpKey).replace(/%/g, "(.*?)") + "$", "g");
|
||||||
return !!text.match(tmpRege);
|
return !!text.match(tmpRege);
|
||||||
|
} else {
|
||||||
|
return text == tmpKey
|
||||||
}
|
}
|
||||||
return Object.values(obj).find((val) => {
|
|
||||||
tmpRege = new RegExp("^" + this.replaceEscape(val).replace(/%/g, "(.*?)") + "$", "g");
|
|
||||||
return !!text.match(tmpRege);
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
languageCachesObjects[text] = {
|
languageCachesObjects[ascii] = {rege: tmpRege, data: tmpData};
|
||||||
rege: tmpRege,
|
|
||||||
data: tmpData,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
const {rege, data} = languageCachesObjects[text];
|
const {rege, data} = languageCachesObjects[ascii];
|
||||||
if (data
|
if (data) {
|
||||||
&& typeof data === "object"
|
|
||||||
&& typeof data[this.languageType] !== "undefined"
|
|
||||||
&& data[this.languageType]) {
|
|
||||||
let index = 0;
|
|
||||||
let value = data[this.languageType];
|
let value = data[this.languageType];
|
||||||
value = value.replace(/%/g, function () {
|
if (value) {
|
||||||
return "$" + (++index);
|
if (rege === null) {
|
||||||
});
|
return value
|
||||||
return text.replace(rege, value);
|
}
|
||||||
|
let index = 0;
|
||||||
|
value = value.replace(/%/g, function () {
|
||||||
|
return "$" + (++index);
|
||||||
|
});
|
||||||
|
return text.replace(rege, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
if (this.languageType == "CN") {
|
if (this.languageType == "CN") {
|
||||||
try {
|
setTimeout(_ => {
|
||||||
let key = '__language:Undefined__';
|
try {
|
||||||
let languageTmp = JSON.parse(window.localStorage[key] || '[]');
|
let key = '__language:Undefined__';
|
||||||
if (!this.__isArray(languageTmp)) {
|
let languageTmp = JSON.parse(window.localStorage[key] || '[]');
|
||||||
languageTmp = [];
|
if (!this.__isArray(languageTmp)) {
|
||||||
}
|
languageTmp = [];
|
||||||
let tmpRege = null;
|
}
|
||||||
let tmpData = languageTmp.find((val) => {
|
let tmpRege = null;
|
||||||
tmpRege = new RegExp("^" + val.replace(/%/g, "(.*?)") + "$", "g");
|
let tmpData = languageTmp.find((val) => {
|
||||||
return !!text.match(tmpRege);
|
tmpRege = new RegExp("^" + val.replace(/%/g, "(.*?)") + "$", "g");
|
||||||
});
|
return !!text.match(tmpRege);
|
||||||
if (!tmpData) {
|
});
|
||||||
languageTmp.push(text);
|
if (!tmpData) {
|
||||||
window.localStorage[key] = JSON.stringify(languageTmp);
|
languageTmp.push(text);
|
||||||
}
|
window.localStorage[key] = JSON.stringify(languageTmp);
|
||||||
} catch (e) { }
|
}
|
||||||
|
} catch (e) { }
|
||||||
|
}, 10)
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
return text;
|
return text;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user