Gin模型数据绑定验证器用的是go-playground/validator/v10。默认提示是英文内容,我们需要翻译成中文内容。
创建一个文件validator.go
:
package utils
import (
"github.com/gin-gonic/gin/binding"
"github.com/go-playground/locales/en"
"github.com/go-playground/locales/zh"
ut "github.com/go-playground/universal-translator"
"github.com/go-playground/validator/v10"
zhtranslations "github.com/go-playground/validator/v10/translations/zh"
"log"
)
var trans ut.Translator
//设置验证器中文翻译
func init() {
if trans != nil {
return
}
zhLoc := zh.New()
enLoc := en.New()
uni := ut.New(enLoc, zhLoc)
trans, _ = uni.GetTranslator("zh")
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
if err := zhtranslations.RegisterDefaultTranslations(v, trans); err != nil {
log.Fatalln(err)
}
}
}
//TransError 翻译验证器错误提示
func TransError(err error) map[string]string {
if errs, ok := err.(validator.ValidationErrors); ok {
return errs.Translate(trans)
}
log.Println("[TransError]", err)
return nil
}
主要功能是创建一个工具方法,方便我们调用翻译。
使用:
if err := g.ShouldBind(&add); err != nil {
g.JSON(http.StatusBadRequest, gin.H{"error": utils.TransError(err)})
return
}
utils.TransError(err)
就会把err的英文内容翻译成中文了。
本文链接:https://360us.net/article/73.html