Ant Design Vue 日期选择器英文不变更中文问题
Ant Design Vue 日期选择器中英文混杂问题分析与解决
项目背景
- 技术栈:
Vue 3.5.24+Ant Design Vue 4.2.6 - 日期库:从 v3 起 Ant Design Vue 默认使用
dayjs
问题描述
在全局已经配置中文(ConfigProvider + dayjs.locale('zh-cn'))的情况下,DatePicker 组件仍出现“中英文混杂”:
- “年”“今天”等字样为中文
- 月份(Jan/Feb…)与星期(Mon/Tue…)依旧显示英文
- 无论全局注入还是局部覆盖
locale均无效
深层原因剖析
-
dayjs 版本过旧
早期dayjs的zh-cn语言包缺失months/weekdays的中文定义,或补丁未完全下发。 -
多版本 dayjs 共存
pnpm的去重策略可能导致锁文件里存在多个dayjs版本,入口文件设置的dayjs.locale未必作用于 Ant Design Vue 内部使用的实例。 -
执行顺序/Tree-shaking 问题
Vite 的懒加载或 chunk 切分可能使import 'dayjs/locale/zh-cn'未及时执行;若没有紧跟dayjs.locale('zh-cn'),组件渲染阶段仍使用默认英文。 -
语言包字段缺失
旧版本dayjs的zh-cn语言包里weekdaysShort、monthsShort等字段为空,Antd 组件 fallback 为英文。
排查步骤(建议流程)
-
确认全局中文配置
import dayjs from 'dayjs'; import 'dayjs/locale/zh-cn'; dayjs.locale('zh-cn');
-
检查 dayjs 版本
pnpm list dayjs pnpm why dayjs 关注是否存在多个版本或锁定在 1.11.0 之前。
-
查看本地语言包
打开node_modules/dayjs/locale/zh-cn.js,确认months、weekdays等数组是否为中文。
解决方案
-
结论:升级 dayjs 至 ≥ 1.11.19
-
操作步骤:
pnpm add dayjs@1.11.19 -w
import dayjs from 'dayjs'; import 'dayjs/locale/zh-cn'; dayjs.locale('zh-cn');
- 重启 dev server 并清理缓存,确认
DatePicker面板的月份、星期、按钮均已中文化。
- 重启 dev server 并清理缓存,确认
可选补充
- Ant Design Vue 的日期国际化完全依赖
dayjs,语言异常优先排查dayjs版本和语言包 - Monorepo/多包环境需确保
dayjs版本统一,避免多版本导致的 locale 失效 -
import 'dayjs/locale/zh-cn'后务必紧接dayjs.locale('zh-cn'),并确保在入口同步执行