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
1018 B
Go
47 lines
1018 B
Go
2 years ago
|
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 {
|
||
|
var errList []string
|
||
|
for _, e := range errs {
|
||
|
// can translate each error one at a time.
|
||
|
errList = append(errList, e.Translate(trans))
|
||
|
}
|
||
|
return strings.Join(errList, "|")
|
||
|
}
|