index.js 1.38 KB
Newer Older
dragondean@qq.com's avatar
dragondean@qq.com committed
1
import Vue from 'vue'
2
import VueI18n from './vue-i18n/vue-i18n.common'
dragondean@qq.com's avatar
dragondean@qq.com committed
3
import {getLocale} from '@/utils/db'
dragondean@qq.com's avatar
dragondean@qq.com committed
4 5 6 7

import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'

dragondean@qq.com's avatar
dragondean@qq.com committed
8 9 10 11 12 13
Vue.use(VueI18n)

const i18n = new VueI18n({
    locale: getLocale() || 'zh_CN',
    formatFallbackMessages: true,
    messages: {
dragondean@qq.com's avatar
dragondean@qq.com committed
14 15
        'en_US': Object.assign({}, enLocale, require('./languages/en_US.json')),
        'zh_CN': Object.assign({}, zhLocale, require('./languages/zh_CN.json')),
dragondean@qq.com's avatar
dragondean@qq.com committed
16 17
    }
})
dragondean@qq.com's avatar
dragondean@qq.com committed
18 19 20 21

// 自动提取脚本只匹配$t,所以给个别名
i18n.$t = i18n.t
/* 
dragondean@qq.com's avatar
dragondean@qq.com committed
22
window.i18n = i18n
dragondean@qq.com's avatar
dragondean@qq.com committed
23
console.log({i18n}) */
24 25 26 27 28 29 30
/*
用法
$l('title')         => titleZh
$l(item, 'title')   => item.titleZh
$l(null, 'title')   => titleZh
$l()                => Zh
*/
dragondean@qq.com's avatar
dragondean@qq.com committed
31
Vue.prototype.$l = i18n.l = (object, field = '') => {
dragondean@qq.com's avatar
dragondean@qq.com committed
32 33
    let prefix = i18n.locale.split('_')[0]
    let append = prefix.charAt(0).toUpperCase() + prefix.toLowerCase().substr(1)
34 35 36 37
    if(typeof object == 'string'){
        return object + append
    }
    // 如果object是null或者字符串则返回字段名
dragondean@qq.com's avatar
dragondean@qq.com committed
38 39
    if(!object) return field + append

dragondean@qq.com's avatar
dragondean@qq.com committed
40 41
    return object[field + append] || object[field]
}
dragondean@qq.com's avatar
dragondean@qq.com committed
42 43 44 45 46 47 48 49 50
/* 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