在main.js中引入对应组件的语言包
eg:
import VueI18n from 'vue-i18n'; // 引入国际化
import elementEn from 'element-ui/lib/locale/lang/en'; // element-ui 英语语言包
import elementZh from 'element-ui/lib/locale/lang/zh-CN'; // element-ui 中文语言包
import ivewZh from 'iview/dist/locale/zh-CN'; // ivew 中文语言包
import ivewEn from 'iview/dist/locale/en-US'; // ivew 英文语言包
import zh from './i18n/lang/zh'; // 自己的中文语言包
import en from './i18n/lang/en'; // 自己的英文语言包
// 这是主要没改变的问题所在
Vue.use(iView, {
i18n: (key, value) => i18n.t(key, value)
});
Vue.use(ElementUI, {
i18n: (key, value) => i18n.t(key, value)
});
Vue.use(VueI18n);
//语言国际化
const messages = {
'zh': {
...zh,
...elementZh,
...ivewZh
}, // 中文语言包
'en': {
...en,
...elementEn,
...ivewEn
} //英文语言包
};
// 通过cookie存储
export function getLanguage() {
const chooseLanguage = Cookies.get('language');
if (chooseLanguage) return chooseLanguage;
const language = (navigator.language || navigator.browserLanguage).toLowerCase();
const locales = Object.keys(messages);
for (const locale of locales) {
if (language.indexOf(locale) > -1) {
return locale;
}
}
return 'en';
}
const i18n = new VueI18n({
locale: getLanguage(), // 语言标识
messages
})
new Vue({
el: '#app',
i18n
})