拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Vben Admin 国际化之旅 : 新增维吾尔语(ug-CN)全流程总结

Vben Admin 国际化之旅 : 新增维吾尔语(ug-CN)全流程总结

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 Vuenode_modules/.../es/locale/ug_CN.js拷贝 8 个文件(见下方)
dayjsdayjs/locale/ug-cn确认存在,否则用英文兜底
vxe-tablevxe-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.ts

locale/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),};

四、两条经验

  1. 不要直接改node_modules

    • pnpm install/ 更新依赖时会丢失
    • 推荐pnpm patch固化,或直接在 workspace 源码(如packages/locales)中修改
  2. 改语言后必须清缓存

    • localStorage(偏好设置持久化)
    • node_modules/.vite(Vite 依赖预构建)
    • 浏览器硬刷新Ctrl+Shift+R

五、最终效果

语言切换器中可选维吾尔语,切换后:

  • Vben 框架文字
  • Ant Design Vue 组件
  • vxe-table 表格
  • 业务页面内容

全部同步切换为维吾尔语。

返回列表