package validator //将验证器错误翻译成中文 import ( "errors" "fmt" "github.com/gin-gonic/gin/binding" "github.com/go-playground/locales/zh" ut "github.com/go-playground/universal-translator" "github.com/go-playground/validator/v10" zh_translations "github.com/go-playground/validator/v10/translations/zh" ) var ( uni *ut.UniversalTranslator // validate *validator.Validate trans ut.Translator ) func Init() { //注册翻译器 zh := zh.New() uni = ut.New(zh, zh) trans, _ = uni.GetTranslator("zh") //获取gin的校验器 validate := binding.Validator.Engine().(*validator.Validate) //注册翻译器 zh_translations.RegisterDefaultTranslations(validate, trans) } // Translate 翻译错误信息 func Translate(err error) map[string][]string { var result = make(map[string][]string) errors := err.(validator.ValidationErrors) for _, err := range errors { result[err.Field()] = append(result[err.Field()], err.Translate(trans)) } return result } func TranslateError(err error) error { var validationErr validator.ValidationErrors if errors.As(err, &validationErr) { errs := err.(validator.ValidationErrors) return errors.New(errs[0].Translate(trans)) } fmt.Println("数据格式校验错误: ", err) return errors.New("数据格式校验不通过,请仔细检查必填项") }