关于Zod库错误消息本地化的技术咨询
Zod错误消息本地化实现方案
Zod完全支持将错误消息翻译成英语以外的语言,社区里也有大量开发者已经实践过本地化配置,主要有以下几种实现方式:
1. 单个Schema自定义错误消息
最直接的方式是在定义Schema时,为校验规则指定目标语言的错误提示:
import { z } from "zod"; const userNameSchema = z.string().min(3, { message: "用户名长度不能少于3个字符" });
2. 全局批量配置本地化
如果需要统一替换所有错误消息,推荐使用z.setErrorMap()全局重写错误映射逻辑,这是规模化本地化的高效方案:
import { z } from "zod"; const zhErrorMap: z.ZodErrorMap = (issue, ctx) => { switch (issue.code) { case z.ZodIssueCode.invalid_type: return { message: `类型错误:预期${issue.expected},实际传入${issue.received}` }; case z.ZodIssueCode.too_small: if (issue.type === "string") { return { message: `长度不能小于${issue.min}个字符` }; } if (issue.type === "number") { return { message: `数值不能小于${issue.min}` }; } case z.ZodIssueCode.required: return { message: "此字段为必填项" }; // 可根据需求扩展更多错误类型的翻译 default: return { message: ctx.defaultError }; } }; // 启用全局中文错误提示 z.setErrorMap(zhErrorMap);
3. 复用社区现成的本地化配置
不少开发者已经公开了针对不同语言的完整errorMap实现,你可以直接参考或复用这些配置,快速完成本地化,不需要从零开始编写所有错误类型的翻译。
这种本地化配置不仅能实现多语言切换,还能让错误提示更贴合业务场景,适配不同地区用户的阅读习惯。
内容的提问来源于stack exchange,提问作者marius
相关产品推荐
相关产品推荐

