1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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("数据格式校验不通过" + err.Error())
- }
|