import Vue from "vue"; import VueI18n from "vue-i18n"; // import Cookies from "js-cookie"; import elementEnLocale from "element-ui/lib/locale/lang/en"; // element-ui lang import elementZhLocale from "element-ui/lib/locale/lang/zh-CN"; // element-ui lang import locale from './local' // 通用国际化配置 import common from './local/common.js' // 处理国际化文件 function getLocaleData (localeObj) { let modulesKeys = Object.keys(localeObj) let zh = {} let en = {} modulesKeys.map((moduleItem) => { let zhObj = {} let enObj = {} let labelKeys = Object.keys(localeObj[moduleItem]) labelKeys.map((item) => { zhObj = { ...zhObj, [item]: item } enObj = { ...enObj, [item]: localeObj[moduleItem][item] } }) zh = { ...zh, [moduleItem]: zhObj } en = { ...en, [moduleItem]: enObj } }) return { zh, en } } /** * 详细文档 * https://kazupon.github.io/vue-i18n/zh/guide/formatting.html#%E5%85%B7%E5%90%8D%E6%A0%BC%E5%BC%8F */ Vue.use(VueI18n); let businessLocal = getLocaleData(locale) let commonLocal = getLocaleData(common) console.log('businessLocal', businessLocal) console.log('commonLocal', commonLocal) const messages = { en: { ...businessLocal.en, ...commonLocal.zh, ...elementZhLocale, }, zh: { ...businessLocal.zh, ...commonLocal.zh, ...elementZhLocale, }, }; // export function getLanguage() { // // const chooseLanguage = Cookies.get("language"); // const chooseLanguage = null; // if (chooseLanguage) return chooseLanguage; // // if has not choose language // 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({ // set locale // options: en | zh | es locale: 'zh', // set locale messages messages, // 隐藏警告 silentTranslationWarn: true, missing: function (locale, key, vm, values) { // 若找不到,默认将key返回 const ks = key.split(".") return ks[ks.length - 1] } }); export default i18n;