package validator import ( "github.com/gin-gonic/gin" "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" "reflect" ) var trans ut.Translator func init() { uni := ut.New(zh.New()) trans, _ = uni.GetTranslator("zh") if v, ok := binding.Validator.Engine().(*validator.Validate); ok { //注册翻译器 _ = zh_translations.RegisterDefaultTranslations(v, trans) //注册一个函数,获取struct tag里自定义的label作为字段名 v.RegisterTagNameFunc(func(fld reflect.StructField) string { name := fld.Tag.Get("label") return name }) } } // ValidatorData 验证数据 func ValidatorData(c *gin.Context, data interface{}) (string, bool) { if err := c.ShouldBind(data); err != nil { for _, v := range err.(validator.ValidationErrors) { return v.Translate(trans), false } } return "", true }