多语言支持用户指南
当验证错误需要跟随用户语言,或应用需要维护自己的字段标签和错误文案时,使用本指南。如果你只想先跑通最小示例,从下面的快速开始读起;如果还要接前端语言切换,再继续看前端 i18n 指南。
快速开始
Node.js 要求:
>=18.0.0目录加载(Node >=18)默认支持的语言文件格式:
.js(CommonJS)、.cjs、.json、.jsonc、.json5。
推荐:如果你的应用是type: module/ ESM 项目,优先使用.cjs、.json、.jsonc、.json5。
5 分钟上手
配置方式
方式 1:传入对象配置(推荐小型项目)
schema-dsl 同时支持两种对象写法:
- 兼容包装层:
{ i18n: { locales: { ... } } } - 简写形式:
{ i18n: { 'zh-CN': { ... }, 'en-US': { ... } } }
简写形式:
优点:
- ✅ 简单直接
- ✅ 适合小型项目
- ✅ 无需额外文件
缺点:
- ❌ 语言包较大时代码臃肿
- ❌ 不利于维护
方式 2:从目录加载(推荐大型项目)
目录结构:
配置:
如果 locale 目录只应作为数据目录,或不是可信代码来源,可以在顶层或 i18n 对象内设置 codeLocaleFiles: 'deny',跳过 .js / .cjs,仅加载 .json、.jsonc、.json5。
语言包文件(i18n/labels/zh-CN.cjs):
优点:
- ✅ 清晰维护
- ✅ 支持大型项目
- ✅ 易于协作
缓存配置(可选)
推荐配置:
Schema 定义
使用 key 引用语言包
嵌套字段
语言包:
前端集成
Express 中间件
React 集成
Vue 集成
最佳实践
1. 语言包组织
推荐结构:
2. 命名规范
字段标签:
自定义消息:
3. 语言检测优先级
4. 语言持久化
前端:
常见问题
Q1: 如何添加新语言?
A: 创建新的语言包文件并重启应用
Q2: 如何处理缺失的翻译?
A: 系统会自动回退
Q3: 缓存配置对性能有多大影响?
A: 大型项目提升 3-10 倍
Q4: 是否支持动态加载语言包?
A: 支持,在应用启动后调用 s.config()
对应示例文件
示例入口: i18n-user-guide.ts
说明: 覆盖 s.config({ i18n: { locales: ... } }) 的对象配置方式、已加载语言列表,以及不同 locale 的运行时切换。