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;