Vben Admin 新增维吾尔语(ug-CN)全流程总结
一、背景
项目技术栈:Vue 3 + Vben Admin(pnpm monorepo)
目标:为系统新增维吾尔语ug-CN,使 Vben 框架层、Ant Design Vue、vxe-table、业务页面全部支持语言切换。
二、改动清单
| 层级 | 位置 | 改动内容 |
|---|---|---|
| 类型定义 | @vben-core/typings→SupportedLanguages | 新增'ug-CN': 'ئۇيغۇرچە',使SupportedLanguagesType包含ug-CN |
| 语言列表 | SUPPORT_LANGUAGES/setSupportLanguages | 新增{ label: 'ئۇيغۇرچە', value: 'ug-CN' } |
| 框架语言包 | packages/locales/src/langs/ug-CN/ | 从zh-CN复制,逐个翻译 value |
| 应用语言包 | apps/web-antd/src/locales/langs/ug-CN/ | 业务覆盖(demos.json、page.json) |
| Ant Design Vue | node_modules/.../es/locale/ug_CN.js | 拷贝 8 个文件(见下方) |
| dayjs | dayjs/locale/ug-cn | 确认存在,否则用英文兜底 |
| vxe-table | vxe-pc-ui/lib/language/ug-CN | 已提交官方正式版,在localMap中注册 |
Ant Design Vue 需要的 8 个文件
es/locale/ug_CN.js es/locale/ug_CN.d.ts es/date-picker/locale/ug_CN.js es/date-picker/locale/ug_CN.d.ts es/time-picker/locale/ug_CN.js es/time-picker/locale/ug_CN.d.ts es/calendar/locale/ug_CN.js es/calendar/locale/ug_CN.d.tslocale/ug_CN.js内部会 importdate-picker、time-picker、calendar三个子模块,只拷入口文件会导致解析失败。
三、踩坑记录
1. Vite 504:Outdated Optimize Dep
- 现象:新增依赖文件后,浏览器报
504 (Outdated Optimize Dep) - 原因:Vite 依赖预构建缓存过期
- 解决:删除
apps/web-antd/node_modules/.vite,重启pnpm dev
2. esbuild 解析失败
- 现象:
Could not resolve "../date-picker/locale/ug_CN" - 原因:只拷贝了
locale/ug_CN.js,缺少三个子模块 - 解决:补齐
date-picker、time-picker、calendar下的ug_CN
3. 切换语言后界面仍为中文
- 现象:语言切到维吾尔语,Vben 界面文字不变
- 原因:框架语言包在
packages/locales/src/langs/,缺失ug-CN目录,全部 key 回退到zh-CN - 解决:在框架层创建
ug-CN目录并复制翻译文件
4. vxe-table 不跟随切换
- 现象:Vben 界面切换成功,但 vxe-table 表格文字不变
- 原因:Vben 的 vxe-table 初始化里
localMap未注册ug-CN - 解决:
importugCNfrom'vxe-pc-ui/lib/language/ug-CN';constlocalMap:Partial<Record<SupportedLanguagesType,any>>={'zh-CN':normalizeVxeLocale(zhCN),'ug-CN':normalizeVxeLocale(ugCN),};四、两条经验
不要直接改
node_modulespnpm install/ 更新依赖时会丢失- 推荐
pnpm patch固化,或直接在 workspace 源码(如packages/locales)中修改
改语言后必须清缓存
localStorage(偏好设置持久化)node_modules/.vite(Vite 依赖预构建)- 浏览器硬刷新
Ctrl+Shift+R
五、最终效果
语言切换器中可选维吾尔语,切换后:
- Vben 框架文字
- Ant Design Vue 组件
- vxe-table 表格
- 业务页面内容
全部同步切换为维吾尔语。