import zhCN from 'antd/locale/zh_CN'; import enUS from 'antd/locale/en_US'; // 未来可以添加更多语言支持 // import jaJP from 'antd/locale/ja_JP'; // import koKR from 'antd/locale/ko_KR'; // import frFR from 'antd/locale/fr_FR'; import dayjs from 'dayjs'; import 'dayjs/locale/zh-cn'; import 'dayjs/locale/en'; // import 'dayjs/locale/ja'; // import 'dayjs/locale/ko'; // import 'dayjs/locale/fr'; import type { Locale } from 'antd/es/locale'; /** * Ant Design locale 映射配置 * 键:应用的 locale 代码(如 'zh_CN', 'en_US') * 值:对应的 Ant Design locale 配置对象 */ const LOCALE_MAP: Record = { zh_CN: zhCN, zh_TW: zhCN, // 繁体中文暂时使用简体 locale(可按需导入 zh_TW) en_US: enUS, en_GB: enUS, // 英式英语使用美式英语 locale // 未来可以轻松添加更多语言支持: // ja_JP: jaJP, // ko_KR: koKR, // fr_FR: frFR, }; /** * dayjs locale 映射配置 * 键:应用的 locale 代码(如 'zh_CN', 'en_US') * 值:对应的 dayjs locale 代码(如 'zh-cn', 'en') */ const DAYJS_LOCALE_MAP: Record = { zh_CN: 'zh-cn', zh_TW: 'zh-cn', // 繁体中文暂时使用简体 locale en_US: 'en', en_GB: 'en', // 未来可以添加更多语言: // ja_JP: 'ja', // ko_KR: 'ko', // fr_FR: 'fr', }; /** * 根据应用的 locale 代码获取对应的 Ant Design locale 配置 * @param localeCode - 应用的 locale 代码,如 'zh_CN', 'en_US' * @returns Ant Design locale 配置对象,如果找不到匹配项则返回英语 locale * * @example * ```ts * const locale = getAntdLocale('zh_CN'); // 返回中文 locale * const locale = getAntdLocale('en_US'); // 返回英文 locale * const locale = getAntdLocale('unknown'); // 返回默认英文 locale * ``` */ export function getAntdLocale(localeCode: string): Locale { return LOCALE_MAP[localeCode] || enUS; } /** * 设置 dayjs 的全局 locale * 此函数会根据应用的 locale 代码自动配置 dayjs 的语言环境 * * @param localeCode - 应用的 locale 代码,如 'zh_CN', 'en_US' * * @example * ```ts * setDayjsLocale('zh_CN'); // 设置 dayjs 为中文 * setDayjsLocale('en_US'); // 设置 dayjs 为英文 * ``` */ export function setDayjsLocale(localeCode: string): void { const dayjsLocale = DAYJS_LOCALE_MAP[localeCode] || 'en'; dayjs.locale(dayjsLocale); console.log(`dayjs locale 已设置为: ${dayjsLocale} (应用 locale: ${localeCode})`); }