You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:45:34