解决Ant Design Vue 日期选择器中文不生效

现象

在src/app.vue全局注册了中文:

TypeScript 复制代码
<script setup>
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';

dayjs.locale(zhCN.locale);
</script>

在picker.vue里引入<a-date-picker picker="month" placeholder="选择月份">,面板仍然出现英文:

临时解决方案

在a-date-picker增加locale变量

html 复制代码
<a-date-picker picker="month" placeholder="选择月份"
    v-model:value="monthDate" :locale="datePickerLocale" />
TypeScript 复制代码
<script>
import zhCN from 'ant-design-vue/es/date-picker/locale/zh_CN';

const datePickerLocale = {
    ...zhCN,
    lang: {
        ...zhCN.lang,
        monthFormat: 'M月',
        shortMonths: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
    },
};

export default {
  data() {
    return { datePickerLocale }
  }

}
<script>

根本原因

这个项目装了两个dayjs:

TypeScript 复制代码
c@xx:~/project/frontend$ npm ls dayjs
frontend@1.0.0 /home/c/project/frontend
├─┬ ant-design-vue@4.2.6
│ └── dayjs@1.11.20
└── dayjs@1.11.19

我回想这个项目的安装顺序,ant-design-vue是因为切换UI库才装的,碰巧项目已经在用dayjs并且yarn.lock已经有dayjs@1.11.19,碰巧装ant-design-vue时dayjs更新到1.11.20,所以装了两个dayjs。而我在app.vue注册中文用的是dayjs@1.11.19,ant-design-vue用dayjs@1.11.20没有注册中文,所以才没生效。

解决办法

在 package.json 加 resolutions:

"resolutions": {

"dayjs": "1.11.20"

}

TypeScript 复制代码
c@xx:~/project/frontend$ npm ls dayjs
frontend@1.0.0 /home/c/frontend
├─┬ ant-design-vue@4.2.6
│ └── dayjs@1.11.20 deduped
└── dayjs@1.11.20
相关推荐
excel6 分钟前
前端加密的作用与使用场景
前端
计算机魔术师1 小时前
纽约时报版权诉讼披露:微软高管内部称训练 AI 是人类历史上最大规模劳动窃取
前端
去伪存真2 小时前
大模型的参数量为什么那么大?
前端·人工智能
IT_陈寒2 小时前
Java空指针这次真把我坑惨了
前端·人工智能·后端
高级程序源3 小时前
django大学生创新创业项目管理系统94923-计算机课程设计、毕业设计
javascript·vue.js·spring boot·后端·python·django·课程设计
八荒启·交互动画3 小时前
# Web特效020—让 Web 特效真正动起来:时间循环应该怎么接
前端·webgl·网页特效·八荒启-交互动画·八荒启
动恰客流统计3 小时前
线下零售数字化浪潮下,客流统计的3个核心发展趋势
大数据·前端·人工智能
lizz22763 小时前
Babel插件手册
javascript
用户938515635073 小时前
从小米前端面试题,彻底搞懂闭包、作用域链与 useState 惰性初始化
前端·面试
粥里有勺糖4 小时前
视野修炼第133期 | Native 回春了?
前端·github·agent