@@ -0,0 +1,68 @@
|
||||
import Vue from 'vue'
|
||||
import VueI18n from 'vue-i18n'
|
||||
import storage from 'store'
|
||||
import moment from 'moment'
|
||||
|
||||
// default lang
|
||||
import enUS from './lang/en-US'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
export const defaultLang = 'en-US'
|
||||
|
||||
const messages = {
|
||||
'en-US': {
|
||||
...enUS
|
||||
}
|
||||
}
|
||||
|
||||
const i18n = new VueI18n({
|
||||
silentTranslationWarn: true,
|
||||
locale: defaultLang,
|
||||
fallbackLocale: defaultLang,
|
||||
messages
|
||||
})
|
||||
|
||||
const loadedLanguages = [defaultLang]
|
||||
|
||||
function setI18nLanguage (lang) {
|
||||
i18n.locale = lang
|
||||
const html = document.documentElement
|
||||
const isRtl = /^ar/i.test(lang)
|
||||
if (html) {
|
||||
// request.headers['Accept-Language'] = lang
|
||||
html.setAttribute('lang', lang)
|
||||
html.setAttribute('dir', isRtl ? 'rtl' : 'ltr')
|
||||
}
|
||||
if (document.body) {
|
||||
document.body.setAttribute('dir', isRtl ? 'rtl' : 'ltr')
|
||||
document.body.classList.toggle('rtl', isRtl)
|
||||
}
|
||||
return lang
|
||||
}
|
||||
|
||||
export function loadLanguageAsync (lang = defaultLang) {
|
||||
return new Promise(resolve => {
|
||||
// 缓存语言设置
|
||||
storage.set('lang', lang)
|
||||
if (i18n.locale !== lang) {
|
||||
if (!loadedLanguages.includes(lang)) {
|
||||
return import(/* webpackChunkName: "lang-[request]" */ `./lang/${lang}`).then(msg => {
|
||||
const locale = msg.default
|
||||
i18n.setLocaleMessage(lang, locale)
|
||||
loadedLanguages.push(lang)
|
||||
moment.updateLocale(locale.momentName, locale.momentLocale)
|
||||
return setI18nLanguage(lang)
|
||||
})
|
||||
}
|
||||
return resolve(setI18nLanguage(lang))
|
||||
}
|
||||
return resolve(lang)
|
||||
})
|
||||
}
|
||||
|
||||
export function i18nRender (key) {
|
||||
return i18n.t(`${key}`)
|
||||
}
|
||||
|
||||
export default i18n
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user