国际化
界面文字通过稳定翻译键显示。业务名称、品牌、协议及用户输入原样保存,不随界面语言改写。
页面翻译接入
| 位置 | 修改内容 |
|---|---|
src/locales/langs/zh-cn.ts | 中文页面资源 |
src/locales/langs/en-us.ts | 对应英文资源,键与结构一致 |
src/typings/app.d.ts | 扩展 App.I18n.Schema 的相关分支 |
| Vue 模板 / 脚本 | 通过 $t 使用文案;脚本从 @/locales 导入 |
业务资源较多时可抽成独立文件再合并到已有资源对象;仅创建文件不会自动加载。页面、表单校验、空状态、错误与菜单一起翻译。完整的资源与类型接线见便签教程。
依赖当前语言的表格列、选项等使用 computed 或项目现有响应式模式,避免只在初始化时调用 $t,导致切换语言后仍显示旧文字。
内置名称与用户内容
菜单使用 i18nKey,角色和 AI 助手等内置数据使用 i18nKeys 元数据。API 同时提供原始内容与翻译键。Web 可通过 localizedText(rawText, key) 展示;编辑与提交仍使用原始值,不把展示译文写回数据库。
用户修改内置名称或说明后,相应字段的翻译绑定会解除,重复种子不会覆盖明确自定义的内容。无需为每种语言复制角色、菜单或业务主键。
增加一种语言
- 新增完整语言资源,覆盖普通页面以及
builtin-*、settings-*、account-*对应内容。 - 更新
App.I18n.LangType与src/locales/locale.ts注册表。 - 在
src/store/modules/app/index.ts的 localeOptions 加入语言选项,并补齐日期与组件库所需语言映射。 - 在后端设置目录的 default_locale 选项注册相同语言代码;需要时调整部署 DEFAULT_LOCALE。
- 更新资源完整性测试,验证切换、持久化、默认语言与缺失键回退。
新增语言需要客户端和后端选项配套,不是只在切换菜单增加一项。桌面与 App 有各自资源和注册入口,按目标客户端分别接入。
回退与验证
保留用户已选择的语言;没有选择时使用租户默认值,并由部署默认提供基础配置。缺失翻译按客户端回退规则使用英文或原文。错误使用稳定 errorCode 匹配文案,不把任意后端 msg 当翻译键。
验证中英文切换、表格内置名称、自定义名称保持不变、刷新后语言保持以及缺失键表现。多语言业务内容属于单独需求,需要明确字段与编辑流程。
