当前我在使用 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 3 小时 31 分钟前
自己写: https://zog.dev/packages/i18n
反正自带我是用不了一点 |
2
aababc OP @Ayanokouji #1 哎,现在就像看看能不能直接用它提供的回调,现在看来是不行的
|