index.js 2.16 KB
Newer Older
fukai committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
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
李少勇 committed
83
  locale: 'zh',
fukai committed
84 85 86 87 88 89 90 91 92 93 94 95
  // 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;