2023-03-24 09:08:53 +08:00

115 lines
3.5 KiB
JavaScript
Vendored

const utils = require('./utils')
const languageList = utils.languageTypes
const languageType = utils.getLanguage()
const languageRege = {}
/**
* 添加语言数据
* @param data
*/
function addLanguage(data) {
if (!$A.isArray(data)) {
return
}
const keys = Object.assign(Object.keys(languageList))
data.some(item => {
let index = -1;
item.key && keys.some(key => {
const value = item[key] || item['general'] || null
if (value && typeof window.LANGUAGE_DATA[key] !== "undefined") {
index = window.LANGUAGE_DATA[key].push(value) - 1
}
})
if (index > -1) {
window.LANGUAGE_DATA['key'][item.key] = index
}
})
}
/**
* 设置语言
* @param language
*/
function setLanguage(language) {
if (language === undefined) {
return
}
$A.modalConfirm({
content: '切换语言需要刷新后生效,是否确定刷新?',
cancelText: '取消',
okText: '确定',
onOk: () => {
window.localStorage.setItem("__language:type__", language)
$A.reloadUrl()
}
})
}
/**
* 转换语言
* @param text
* @returns {string|*}
*/
function switchLanguage(text) {
if (typeof arguments[1] !== "undefined") {
return switchLanguage(utils.replaceArgumentsLanguage(text, arguments))
}
if (typeof text !== "string" || !text) {
return text
}
//
if (typeof window.LANGUAGE_DATA === "undefined"
|| typeof window.LANGUAGE_DATA["key"] === "undefined"
|| typeof window.LANGUAGE_DATA[languageType] === "undefined") {
return text
}
const index = window.LANGUAGE_DATA["key"][text] || -1
if (index > -1) {
return window.LANGUAGE_DATA[languageType][index] || text
}
if (typeof languageRege[text] === "undefined") {
languageRege[text] = false
for (let key in window.LANGUAGE_DATA["key"]) {
if (key.indexOf("(*)") > -1) {
const rege = new RegExp("^" + utils.replaceEscape(key) + "$", "g")
if (rege.test(text)) {
let j = 0
const index = window.LANGUAGE_DATA["key"][key]
const value = (window.LANGUAGE_DATA[languageType][index] || key)?.replace(/\(\*\)/g, function () {
return "$" + (++j)
})
languageRege[text] = {rege, value}
break
}
}
}
}
if (languageRege[text]) {
return text.replace(languageRege[text].rege, languageRege[text].value)
}
if (window.systemInfo.debug === "yes") {
setTimeout(_ => {
try {
let key = '__language:Undefined__'
let languageTmp = JSON.parse(window.localStorage.getItem(key) || '[]')
if (!$A.isArray(languageTmp)) {
languageTmp = []
}
let tmpRege = null
let tmpData = languageTmp.find((val) => {
tmpRege = new RegExp("^" + val.replace(/\(\*\)/g, "(.*?)") + "$", "g")
return !!text.match(tmpRege)
})
if (!tmpData) {
languageTmp.push(text)
window.localStorage.setItem(key, JSON.stringify(languageTmp))
}
} catch (e) { }
}, 10)
}
return text
}
export { languageType, languageList, addLanguage, setLanguage, switchLanguage }