国际化
这篇解决什么
按钮文案放哪份 JSON、$t 从哪引、菜单为什么还是中文。读完只翻译壳子和操作句,不要指望侧栏跟语言包走。
默认 locale 是 zh-CN。顶栏 widget.languageToggle 为 false,客户包默认不切英文。请求头 Accept-Language 见 请求封装。
示意图:页面操作句走语言包。菜单标题走权限接口。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 应用包 | zh-CN / en-US 的 page.json、utils.json | ruoyi-office-vben/apps/web-antd/src/locales/langs/ |
| 装配 | setupI18n、同步 antd / dayjs | src/locales/index.ts |
| 默认语言 | zh-CN | packages/@core/preferences/src/config.ts |
| 表单必填句 | ui.formRules.required | src/adapter/form.ts |
| 列表操作句 | ui.actionTitle.create | 如 views/system/dept/index.vue |
业务页:import { $t } from '#/locales'。框架包内部用 @vben/locales。两套不要在同一文件混着抄。
应用包按目录扫描 ./langs/**/*.json。新增一句:zh-CN 和 en-US 各加同一 key。缺 key 时开发环境 missingWarn 会警告,生产不喊。
侧栏、页签标题来自 get-permission-info 的 menus.name,目前库里是中文。切 en-US 不会自动翻译菜单。要英文菜单得改 system_menu.name 或另做映射,本仓库没有现成开关。
日期、分页那套 Ant Design / dayjs 语言在 loadThirdPartyMessage。只改 page.json 不会让日期控件变英文。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
page.action.* | 新增 / 保存等 | langs/zh-CN/page.json |
preferences.app.locale | 当前语言 | 偏好 |
Accept-Language | 跟 locale 走 | apps/web-antd/src/api/request.ts,后端在 ruoyi-office/yudao-framework/ |
不要翻译业务字典
system_dict_data.label 是运营配置。状态「启用」放字典,不要再写进 page.json 一份。
占位用框架现成句
$t('ui.actionTitle.create', ['组织'])、$t('ui.actionMessage.deleteSuccess', [name])。新模块先复用,少造平行 key。
await coreSetup(app, {
defaultLocale: preferences.app.locale,
loadMessages,
missingWarn: !import.meta.env.PROD,
});摘自 apps/web-antd/src/locales/index.ts。
