-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Open
Labels
Description
Package version:
v10
Enhancement:
Is it possible to translate the param field?
Code sample:
package main
import (
"fmt"
"reflect"
"github.com/go-playground/locales/en"
ut "github.com/go-playground/universal-translator"
"github.com/go-playground/validator/v10"
en_translations "github.com/go-playground/validator/v10/translations/en"
)
var (
uni *ut.UniversalTranslator
validate *validator.Validate
)
func main() {
en := en.New()
uni = ut.New(en, en)
trans, _ := uni.GetTranslator("en")
validate = validator.New()
en_translations.RegisterDefaultTranslations(validate, trans)
validate.RegisterTagNameFunc(func(field reflect.StructField) string {
locale := field.Tag.Get(`json`)
if locale == `` || locale == `-` {
return ``
}
return locale
})
type Num struct {
Num1 uint8 `json:"num1"`
Num2 uint8 `validate:"gtfield=Num1" json:"num2"`
}
num := Num{
Num1: 0,
Num2: 0,
}
err := validate.Struct(num)
if err != nil {
errs := err.(validator.ValidationErrors)
for _, e := range errs {
// can translate each error one at a time.
fmt.Println(e.Translate(trans))
}
}
}What did I expect to see?
num2 must be greater than num1
What did I see instead
num2 must be greater than Num1
tips: num1 is the tag value of struct field Num1
samouss