locale.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import type { SupportedLanguagesType } from '@vben/types';
  2. import type { Locale } from 'ant-design-vue/es/locale';
  3. import { ref } from 'vue';
  4. import defaultLocale from 'ant-design-vue/es/locale/zh_CN';
  5. import dayjs from 'dayjs';
  6. const antdLocale = ref<Locale>(defaultLocale);
  7. async function loadDayjsLocale(lang: SupportedLanguagesType) {
  8. let locale;
  9. switch (lang) {
  10. case 'zh-CN': {
  11. locale = await import('dayjs/locale/zh-cn');
  12. break;
  13. }
  14. case 'en-US': {
  15. locale = await import('dayjs/locale/en');
  16. break;
  17. }
  18. default: {
  19. locale = await import('dayjs/locale/en');
  20. } // 默认使用英语
  21. }
  22. dayjs.locale(locale);
  23. }
  24. async function loadAntdLocale(lang: SupportedLanguagesType) {
  25. switch (lang) {
  26. case 'zh-CN': {
  27. antdLocale.value = defaultLocale;
  28. break;
  29. }
  30. case 'en-US': {
  31. antdLocale.value = (await import(
  32. 'ant-design-vue/es/locale/en_US'
  33. )) as unknown as Locale;
  34. break;
  35. }
  36. }
  37. }
  38. async function loadThirdPartyMessage(land: SupportedLanguagesType) {
  39. await Promise.all([loadAntdLocale(land), loadDayjsLocale(land)]);
  40. }
  41. export { antdLocale, loadThirdPartyMessage };