import { createI18n } from 'vue-i18n' import enLocale from './en' import zhCnLocale from './zh-cn' import zhTwLocale from './zh-tw' export const LangType = { en: "en", // 英文 zhTw: "zh-tw", // 繁体中文 zhCn: "zh-cn", // 简体中文 } export const LANGS = Object.values(LangType) // 语言配置整合 const messages = { [LangType.en]: enLocale, [LangType.zhCn]: zhCnLocale, [LangType.zhTw]: zhTwLocale, } const localeLang = localStorage.getItem('language') const defaultLocale = checkLocale(localeLang) ? localeLang! : LangType.en // 创建 i18n const i18n = createI18n({ legacy: false, globalInjection: true, // 全局模式,可以直接使用 $t locale: defaultLocale, messages: messages }) export default i18n // 检查语言是否存在 function checkLocale(lang: any) { return LANGS.includes(lang) } export const setLang = (lang: any) => { if (lang === "") lang = LangType.en if (!checkLocale(lang)) return false i18n.global.locale.value = lang localStorage.setItem('language', lang) return true }