index.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { createI18n } from 'vue-i18n';
  2. import zhCN from './zh-CN/index.json';
  3. import enUS from './en-US/index.json';
  4. const messages = {
  5. 'zh-CN': zhCN,
  6. 'en-US': enUS,
  7. };
  8. const defaultLocale = localStorage.getItem('locale') || 'zh-CN';
  9. const i18n = createI18n({
  10. legacy: false,
  11. locale: defaultLocale,
  12. fallbackLocale: 'zh-CN',
  13. messages,
  14. globalInjection: true,
  15. });
  16. // 初始化时设置 data-locale 属性
  17. if (typeof document !== 'undefined') {
  18. document.querySelector('html')?.setAttribute('lang', defaultLocale);
  19. document.querySelector('html')?.setAttribute('data-locale', defaultLocale);
  20. }
  21. export default i18n;
  22. // 导出语言切换函数
  23. export function setLanguage(locale) {
  24. i18n.global.locale.value = locale;
  25. localStorage.setItem('locale', locale);
  26. document.querySelector('html').setAttribute('lang', locale);
  27. // 设置 data-locale 属性用于样式适配
  28. document.querySelector('html').setAttribute('data-locale', locale);
  29. }
  30. // 导出当前语言
  31. export function getCurrentLanguage() {
  32. return i18n.global.locale.value;
  33. }