dynamicI18n.js 1.68 KB
import req from '@/utils/request'
import $store from '@/store'

var dynamicI18n = {
  //获取所有的语言
  getlang(i18n) {
    req
      .post(window.context.portal + `/i18n/custom/i18nMessageType/v1/all`)
      .then((res) => {
        if (res && JSON.stringify(res) != '{}') {
          $store.dispatch('i18n/setLangList', res)
          res.forEach((ele) => {
            dynamicI18n.getMessage(ele.type, i18n)
          })
        }
      })
  },
  //获取语言对应的资源
  getMessage(langKey, i18n) {
    req
      .get(
        window.context.portal +
          `/i18n/custom/i18nMessage/v1/getLangPackage?type=${langKey}`
      )
      .then((res) => {
        const data = res || {}
        //加载本地的资源
        let localMassage = {}
        try {
          localMassage = require(`./${langKey}`).default
        } catch (err) {}
        //加载elementUi的资源
        let elementMessage = {}
        try {
          elementMessage =
            require(`element-ui/lib/locale/lang/${langKey}`).default
        } catch (err) {}
        //加载hotentUi的资源
        let hotentMessage = {}
        try {
          hotentMessage =
            require(`hotent-ui/src/locale/lang/${langKey}`).default
        } catch (err) {}
        let hotentPortalMessage = {}
        try {
          hotentPortalMessage =
            require(`hotent-portal/src/locale/lang/${langKey}`).default
        } catch (err) {}
        i18n.setLocaleMessage(langKey, {
          ...i18n.getLocaleMessage(langKey),
          ...elementMessage,
          ...hotentMessage,
          ...hotentPortalMessage,
          ...localMassage,
          ...data,
        })
      })
  },
}

export default dynamicI18n