)
Zod本地化配置指南60语言Locale让校验错误消息说中文含自定义消息技巧【免费下载链接】zodTypeScript-first schema validation with static type inference项目地址: https://gitcode.com/GitHub_Trending/zo/zodZod 是 TypeScript 生态中最流行的 Schema 数据校验库它自带60 种语言的 Locale 本地化支持。本指南教你 3 步把 Zod 的校验错误消息从英文切换成中文并分享自定义错误消息的实用技巧让报错信息对用户友好、对开发可排查。为什么需要 Zod 本地化Locale默认情况下Zod 校验失败会抛出英文消息例如Invalid input: expected string, received number如果你的产品面向中文用户直接把这种报错展示到界面上体验并不好。Zod 内置了多语言Locale 机制——只需一行配置所有错误消息就会自动变成中文例如无效输入期望 string实际接收 数字 数值过小期望 string 5 字符 出现未知的键(key): phone, address快速上手3 步配置中文 Locale第 1 步确认项目已安装 Zod 4.xpnpm add zod。第 2 步在应用入口处配置 Locale。Zod 将所有语言包聚合导出为z.localesimport * as z from zod; z.config(z.locales.zhCN()); // 简体中文一行搞定第 3 步之后所有 Schema 的报错自动说中文const user z.object({ name: z.string().min(5) }); user.safeParse({ name: ab }); // 错误消息数值过小期望 string 5 字符 小贴士标准zod包会自动加载英文enLocale 作为默认而轻量版Zod Minizod/mini默认不加载任何语言包错误消息统一是Invalid input需要手动配置 Locale。中文语言包的完整实现覆盖类型错误、长度、邮箱格式、未知键等场景位于packages/zod/src/v4/locales/zh-CN.ts —— 简体中文packages/zod/src/v4/locales/zh-TW.ts —— 繁体中文packages/zod/src/v4/locales/index.ts —— 全部语言包聚合导出60 语言清单从中文到阿拉伯语都能说Zod 官方内置的 Locale 覆盖了全球主流语言部分常用语言如下导出名语言导出名语言zhCN简体中文 ja日本語zhTW繁体中文ko한국어enEnglishfrFrançaisdeDeutschesEspañolruРусскийthไทยviTiếng Việtarالعربية完整 60 语言清单含加泰罗尼亚语、波斯语、斯瓦希里语区系语言等可查阅packages/zod/src/v4/locales/ 目录或官方文档 error-customization.mdx 中的 Locales 章节。进阶技巧动态按需加载 Locale减小打包体积一次性引入z.locales时Rollup / Webpack 会将语言包tree-shake成你实际使用的部分但如果你想在运行时根据用户偏好动态切换语言推荐用动态导入懒加载async function loadLocale(locale: string) { const mod await import(zod/v4/locales/${locale}.js); z.config(mod.default()); } await loadLocale(zh-CN); // 用户选中文时加载每个语言包都是独立的独立模块按需加载既能控制包体积又能实现界面语言实时切换——因为错误消息是在.parse()时才生成同一个 Schema 每次解析都会采用当前语言。自定义错误消息4 种姿势精准控制文案Locale 是整站级方案而 Zod 还提供更细粒度的自定义能力可组合使用1️⃣ 一行内联文案最常用几乎所有 Zod API 的第一个参数都接受自定义错误z.string(邮箱格式不正确); z.string().min(6, 密码至少 6 位);2️⃣ 错误映射函数动态文案传入函数可以拿到错误上下文生成更智能的消息z.string({ error: (iss) { if (iss.code too_small) return 最少需要 ${iss.minimum} 个字符; return undefined; // 返回 undefined 则回退到 Locale 默认文案 } });3️⃣ 单次解析覆盖A/B 测试、调试利器schema.parse(input, { error: (iss) 本次解析使用临时文案 });4️⃣ 全局兜底z.config的customErrorz.config({ customError: (iss) 字段 ${iss.path.join(.)} 校验失败 });⚖️ 优先级速记谁说了算当多层自定义同时存在时优先级从高到低为检查级错误.min(6, …)Schema 级错误z.string(…)单次解析错误.parse(data, { error })全局customErrorLocale 语言包最后的兜底也就是说用 Locale 打底中文体验再对关键业务字段叠加自定义文案是最推荐的组合 总结Zod 本地化最佳实践场景推荐做法面向中文用户的产品启动时z.config(z.locales.zhCN())多语言站点动态import()懒加载对应语言包关键业务字段叠加内联error自定义文案打包体积敏感按需import { zhCN } from zod/locales掌握了本文的Zod Locale 配置 自定义消息技巧你的项目就能在保持 TypeScript 类型安全的同时让每一条校验错误都说人话。更多细节可继续参考官方文档packages/docs/content/error-customization.mdx。【免费下载链接】zodTypeScript-first schema validation with static type inference项目地址: https://gitcode.com/GitHub_Trending/zo/zod创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考