import XEUtils from 'xe-utils' import MaliStorage from '../storage' import zhCN from './lang/zh_CN' import enUS from './lang/en_US' const compMessage = { zh_CN: zhCN, en_US: enUS } const sysLang = uni.getSystemInfoSync().language let currLanguage = MaliStorage.getItem('MALI_LANGUAGE') || (/en/i.test(sysLang) ? 'en_US' : 'zh_CN') const localeMessage = {} const MaliI18n = { getLanguage () { return currLanguage }, setLanguage (language) { if (localeMessage[language]) { currLanguage = language MaliStorage.setItem('MALI_LANGUAGE', language) } else { console.error(`国际化 ${language} 不存在`) } }, setLocaleMessage (language, message) { localeMessage[language] = Object.assign({}, compMessage[language], message) }, hasKey (key) { if (key && key.indexOf && key.indexOf('.') > -1) { return XEUtils.has(localeMessage[currLanguage], key) } return false }, t (key, args) { if (key && key.indexOf && key.indexOf('.') > -1) { const str = XEUtils.toFormatString(XEUtils.get(localeMessage[currLanguage], key), args) return str || XEUtils.isNumber(str) ? str : key } return key } } // 组件默认语言 MaliI18n.setLocaleMessage(currLanguage, compMessage[currLanguage]) export default MaliI18n