package main
import (
"context"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/i18n/gi18n"
"github.com/gogf/gf/util/gconv"
)
func main() {
type User struct {
Name string `v:"required#ReuiredUserName"`
Type int `v:"required#ReuiredUserType"`
}
var (
data = g.Map{
"name": "john",
}
user = User{}
ctxEn = gi18n.WithLanguage(context.TODO(), "en")
ctxCh = gi18n.WithLanguage(context.TODO(), "zh-CN")
)
if err := gconv.Scan(data, &user); err != nil {
panic(err)
}
// 英文
if err := g.Validator().Ctx(ctxEn).Data(data).CheckStruct(user); err != nil {
g.Dump(err.String())
}
// 中文
if err := g.Validator().Ctx(ctxCh).Data(data).CheckStruct(user); err != nil {
g.Dump(err.String())
}
}
7 Comments
陈俊华
默认的中文错误提示如何在config.toml中配置?
海亮
I18N国际化
陈俊华
我想问的是有没有类似这种配置项
[i18n]
lang = zh-CN
然后默认错误信息就显示成了中文
郭强
没,全局设置的话,目前需要手动调用方法设置。
jason
我想让入参校验提示的错误信息变成中文,然后我在全局中间件里手动设置了本地化语言
g.I18n().SetLanguage("zh-CN")
,随后测试入参校验时错误提示的还是默认的英文,那么应该怎么样设置让错误信息切换中文,这里没有通过自定义配置多语言包,使用的框架里自带验证规则错误信息
另外怎么获取本地化的语言方法
郭强
你在中间件中
r.SetCtx(gi18n.WithLanguage(r.Context(), "zh-CN"))
就可以了jason
多谢,我通过把框架里带的 util/gvalid/i18n/ 下的 cn 目录拷贝到 i18n 目录下重命名为 zh-CN 解决了