index.js 1.09 KB
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import dynamicI18n from './dynamicI18n'
import utils from 'hotent-ui/src/utils.js'

Vue.use(VueI18n)

const messages = {}

//优先获取url的语言
let language =
  utils.getUrlKey('language') || localStorage.getItem('lang') || 'zh-CN'
localStorage.setItem('lang', language)

const i18n = new VueI18n({
  // set locale
  // options: en | zh
  locale: language,
  // set locale messages
  messages,
  // 隐藏警告
  silentTranslationWarn: true,
})

//动态获取国际化资源
dynamicI18n.getlang(i18n)

/**
 * 扩展国际化方法,如果没有资源则返回默认值
 * @param {*} key 资源key
 * @param {*} defaultMessage 默认值
 * @returns key对应有资源则返回对应的资源,否则返回默认值,若默认值也没有则直接返回key
 */
Vue.prototype.$td = function (key, defaultMessage) {
  if (!key) {
    return defaultMessage
  }
  let result = i18n._t.apply(i18n, [
    key,
    i18n.locale,
    i18n._getMessages(),
    this,
  ])
  return result === key && defaultMessage ? defaultMessage : result
}

export default i18n