localeHelper.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import zhCN from 'antd/locale/zh_CN';
  2. import enUS from 'antd/locale/en_US';
  3. // 未来可以添加更多语言支持
  4. // import jaJP from 'antd/locale/ja_JP';
  5. // import koKR from 'antd/locale/ko_KR';
  6. // import frFR from 'antd/locale/fr_FR';
  7. import dayjs from 'dayjs';
  8. import 'dayjs/locale/zh-cn';
  9. import 'dayjs/locale/en';
  10. // import 'dayjs/locale/ja';
  11. // import 'dayjs/locale/ko';
  12. // import 'dayjs/locale/fr';
  13. import type { Locale } from 'antd/es/locale';
  14. /**
  15. * Ant Design locale 映射配置
  16. * 键:应用的 locale 代码(如 'zh_CN', 'en_US')
  17. * 值:对应的 Ant Design locale 配置对象
  18. */
  19. const LOCALE_MAP: Record<string, Locale> = {
  20. zh_CN: zhCN,
  21. zh_TW: zhCN, // 繁体中文暂时使用简体 locale(可按需导入 zh_TW)
  22. en_US: enUS,
  23. en_GB: enUS, // 英式英语使用美式英语 locale
  24. // 未来可以轻松添加更多语言支持:
  25. // ja_JP: jaJP,
  26. // ko_KR: koKR,
  27. // fr_FR: frFR,
  28. };
  29. /**
  30. * dayjs locale 映射配置
  31. * 键:应用的 locale 代码(如 'zh_CN', 'en_US')
  32. * 值:对应的 dayjs locale 代码(如 'zh-cn', 'en')
  33. */
  34. const DAYJS_LOCALE_MAP: Record<string, string> = {
  35. zh_CN: 'zh-cn',
  36. zh_TW: 'zh-cn', // 繁体中文暂时使用简体 locale
  37. en_US: 'en',
  38. en_GB: 'en',
  39. // 未来可以添加更多语言:
  40. // ja_JP: 'ja',
  41. // ko_KR: 'ko',
  42. // fr_FR: 'fr',
  43. };
  44. /**
  45. * 根据应用的 locale 代码获取对应的 Ant Design locale 配置
  46. * @param localeCode - 应用的 locale 代码,如 'zh_CN', 'en_US'
  47. * @returns Ant Design locale 配置对象,如果找不到匹配项则返回英语 locale
  48. *
  49. * @example
  50. * ```ts
  51. * const locale = getAntdLocale('zh_CN'); // 返回中文 locale
  52. * const locale = getAntdLocale('en_US'); // 返回英文 locale
  53. * const locale = getAntdLocale('unknown'); // 返回默认英文 locale
  54. * ```
  55. */
  56. export function getAntdLocale(localeCode: string): Locale {
  57. return LOCALE_MAP[localeCode] || enUS;
  58. }
  59. /**
  60. * 设置 dayjs 的全局 locale
  61. * 此函数会根据应用的 locale 代码自动配置 dayjs 的语言环境
  62. *
  63. * @param localeCode - 应用的 locale 代码,如 'zh_CN', 'en_US'
  64. *
  65. * @example
  66. * ```ts
  67. * setDayjsLocale('zh_CN'); // 设置 dayjs 为中文
  68. * setDayjsLocale('en_US'); // 设置 dayjs 为英文
  69. * ```
  70. */
  71. export function setDayjsLocale(localeCode: string): void {
  72. const dayjsLocale = DAYJS_LOCALE_MAP[localeCode] || 'en';
  73. dayjs.locale(dayjsLocale);
  74. console.log(`dayjs locale 已设置为: ${dayjsLocale} (应用 locale: ${localeCode})`);
  75. }