UNPKG

logwire-wms-ui-test

Version:

运匠科技wms-PDA基础组件库

88 lines (73 loc) 2.29 kB
/* * 语言切换 * @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()) }) }, }