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 elementThLocale from "element-ui/lib/locale/lang/th"; // element-ui lang import elementViLocale from "element-ui/lib/locale/lang/vi"; // element-ui lang import enLocale from "./local/en/"; import zhLocale from "./local/zh/"; import thLocale from "./local/en/"; //TODO 本地th暂无 import viLocale from "./local/en/"; //TODO 本地vi暂无 /** * 详细文档 * 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); const messages = { en: { ...enLocale, ...elementEnLocale, }, zh: { ...zhLocale, ...elementZhLocale, }, th: { ...thLocale, ...elementThLocale, }, vi: { ...viLocale, ...elementViLocale, }, }; export function getLanguage() { const chooseLanguage = Cookies.get("language"); 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: getLanguage(), // set locale messages messages, missing: function (locale, key, vm, values) { // 若找不到,默认将key返回 const ks = key.split(".") return ks[ks.length - 1] } }); export default i18n;