index.ts 693 Bytes
import { createI18n } from "vue-i18n";
import zhCN from "./zh-CN";
import enUS from "./en-US";

// 获取语言设置,优先从 localStorage 获取,否则使用默认值
const getLocale = () => {
  return localStorage.getItem("language") || "zh-CN";
};

const i18n = createI18n({
  legacy: false, // 使用 Composition API 模式
  locale: getLocale(),
  fallbackLocale: "zh-CN",
  messages: {
    "zh-CN": zhCN,
    "en-US": enUS,
  },
  globalInjection: true, // 全局注入 $t 函数
});

// 导出语言切换函数
export const setI18nLocale = (locale: "zh-CN" | "en-US") => {
  i18n.global.locale.value = locale;
  localStorage.setItem("language", locale);
};

export default i18n;