mirror of https://github.com/go-sonic/sonic.git
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.
47 lines
1.0 KiB
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, "|")
|
|
}
|