You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sonic/handler/trans/trans.go

47 lines
1.0 KiB
Go

package trans
import (
"fmt"
"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"
chTranslations "github.com/go-playground/validator/v10/translations/zh"
)
var trans ut.Translator
func init() {
local := "zh"
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
zhT := zh.New() // chinese
enT := en.New() // english
uni := ut.New(enT, zhT, enT)
var o bool
trans, o = uni.GetTranslator(local)
if !o {
panic(fmt.Sprintf("uni.GetTranslator(%s) failed", local))
}
err := chTranslations.RegisterDefaultTranslations(v, trans)
if err != nil {
panic(err)
}
return
}
}
func Translate(errs validator.ValidationErrors) string {
errList := make([]string, 0, len(errs))
for _, e := range errs {
// can translate each error one at a time.
errList = append(errList, e.Translate(trans))
}
return strings.Join(errList, "|")
}