import Vue from 'vue' import VueI18n from './vue-i18n/vue-i18n.common' import {getLocale} from '@/utils/db' import enLocale from 'element-ui/lib/locale/lang/en' import zhLocale from 'element-ui/lib/locale/lang/zh-CN' Vue.use(VueI18n) const i18n = new VueI18n({ locale: getLocale() || 'zh_CN', formatFallbackMessages: true, messages: { 'en_US': Object.assign({}, enLocale, require('./languages/en_US.json')), 'zh_CN': Object.assign({}, zhLocale, require('./languages/zh_CN.json')), } }) // 自动提取脚本只匹配$t,所以给个别名 i18n.$t = i18n.t /* window.i18n = i18n console.log({i18n}) */ /* 用法 $l('title') => titleZh $l(item, 'title') => item.titleZh $l(null, 'title') => titleZh $l() => Zh */ Vue.prototype.$l = i18n.l = (object, field = '') => { let prefix = i18n.locale.split('_')[0] let append = prefix.charAt(0).toUpperCase() + prefix.toLowerCase().substr(1) if(typeof object == 'string'){ return object + append } // 如果object是null或者字符串则返回字段名 if(!object) return field + append return object[field + append] || object[field] } /* Vue.filter('$t', Vue.$i18n) */ // 重新console.warn来捕获未翻译的内容 /* console.wareOrig = console.warn console.warn = (...data) => { console.log('warn', typeof data) console.wareOrig(data) } */ export default i18n