package forms
type PassWordLoginForm struct{
Mobile string`form:"mobile" json:"mobile" binding:"required,mobile"`//手机号码格式有规范可寻, 自定义validator
PassWord string`form:"password" json:"password" binding:"required,min=3,max=20"`}
2.初始化validator,initialize/validator.go
package initialize
import("fmt""mxshop-api/user-web/global""reflect""strings""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"
en_translations "github.com/go-playground/validator/v10/translations/en"
zh_translations "github.com/go-playground/validator/v10/translations/zh")funcInitTrans(locale string)(err error){//修改gin框架中的validator引擎属性, 实现定制if v, ok := binding.Validator.Engine().(*validator.Validate);ok {//注册一个获取json的tag的自定义方法
v.RegisterTagNameFunc(func(fld reflect.StructField)string{
name := strings.SplitN(fld.Tag.Get("json"),",",2)[0]if name =="-"{return""}return name
})
zhT := zh.New()//中文翻译器
enT := en.New()//英文翻译器//第一个参数是备用的语言环境,后面的参数是应该支持的语言环境
uni := ut.New(enT, zhT, enT)
global.Trans, ok = uni.GetTranslator(locale)if!ok {return fmt.Errorf("uni.GetTranslator(%s)", locale)}switch locale{case"en":
en_translations.RegisterDefaultTranslations(v, global.Trans)case"zh":
zh_translations.RegisterDefaultTranslations(v, global.Trans)default:
en_translations.RegisterDefaultTranslations(v, global.Trans)}return}return}
3.将变量Trans,设置为全局变量。global
package global
import(
ut "github.com/go-playground/universal-translator")var(
Trans ut.Translator)