当前我在使用 gin + validator 的过程中,想实现 validator 根据 accept-language 自动切换验证的错误信息,看了一下 validator 的示例代码,感觉完全没有看明白要怎么用?
import ( "fmt" "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" ) ... en := en.New() uni = ut.New(en, zh.New()) // this is usually know or extracted from http 'Accept-Language' header // also see uni.FindTranslator(...) trans, _ := uni.GetTranslator("en") validate = validator.New() en_translations.RegisterDefaultTranslations(validate, trans)
我按照这个代码测试之后,发现完全不能正常的工作,需有变成这种模式
switch locale { case "en": err = enTranslations.RegisterDefaultTranslations(v, trans) case "zh": err = zhTranslations.RegisterDefaultTranslations(v, trans) default: err = enTranslations.RegisterDefaultTranslations(v, trans) }
但是这样写就需要构造多个 validator 实例,大家平常在使用这个库的时候是怎么配置的
1 Ayanokouji 218 天前 自己写: https://zog.dev/packages/i18n 反正自带我是用不了一点 |
2 aababc OP @Ayanokouji #1 哎,现在就像看看能不能直接用它提供的回调,现在看来是不行的 |