logwire-wms-ui-test
Version:
运匠科技wms-PDA基础组件库
88 lines (73 loc) • 2.29 kB
JavaScript
/*
* 语言切换
* @author: 张文
* @date 2022-04-14
* */
import {language} from "../api/common/Language";
import {LocalStorage} from "./LocalStorage";
function checkKey(key){
return key.indexOf('i18n_') === 0 ? key : 'i18n_' + key
}
export const Language = {
/**
* 获取指定key的翻译
* @author 张文
* @date 2022-04-14
* @param {String} key 需要获取的语言的key
* @param {String} dft 当无法从当前语言获取时的默认值
* @param {Object|Array} params 语言中用到的参数
* @return {String} 获取到的语言或默认值
* */
get(key, dft = '未知', params = undefined) {
// const language = window.lwWindowGlobalData.get('language.data') || {}
const language = LocalStorage.get(checkKey(key))
const c = language || dft
if (params) {
if (Array.isArray(params) && params.length) {
return c.replace(/\{(\d+)}/g, (m, i) => params[i])
}
if (typeof params === 'object') {
return c.replace(/\{(\w+)}/g, (m, i) => params[i])
}
}
return c
},
/**
* 获取当前设置语言的key
* @author 张文
* @date 2022-04-14
* @return {String} 当前语言类型
* */
getKey() {
return window.lwWindowGlobalData.get('language.key')
},
/**
* 设置当前设置语言的key
* @author 张文
* @date 2022-04-14
* @param {String} key 设置的语言类型
* */
setKey(key) {
return window.lwWindowGlobalData.set('language.key', key)
},
/**
* 异步设置当前语言的key,设置成功后会调取接口获取当前设置的语言资源
* @author 张文
* @date 2022-04-14
* @param {String} key 设置的语言类型
* @param {Boolean} loading 是否显示加载框,默认显示
* */
asyncSetKey(key, loading = true) {
return new Promise((pres, perr) => {
window.lwWindowGlobalData.set('language.key', key)
LocalStorage.set('lwLanguage', key)
language.get(key, loading).then(res => {
// window.lwWindowGlobalData.set('language.data', res)
for (const resKey in res) {
LocalStorage.set(checkKey(resKey), res[resKey])
}
pres()
}).catch(() => perr())
})
},
}