Versions Compared
compared with
Key
- This line was added.
- This line was removed.
- Formatting was changed.
数据校验组件支持i18n
特性,内部使用了goframe
框架统一的i18n
组件实现。
在进一步使用之前,关于i18n
国际化功能配置及使用请参考章节:I18N国际化
配置示例
默认i18n
错误提示
默认的英文国际化语言配置文件参考:https://github.com/gogf/gf/tree/master/util/gvalid/i18n/en
中文错误提示
我们提供了建议的中文i18n
国际化语言配置文件:https://github.com/gogf/gf/tree/master/util/gvalid/i18n/cn
默认错误提示
当在i18n
中找不到对应规则的错误提示时,将会使用__default__
配置的错误提示信息。往往使用在自定义规则中。
开发示例
我们通过中间件统一设置请求的错误提示i18n
语言。
目录结构
Code Block | ||
---|---|---|
| ||
├── main.go └── i18n ├── en.toml └── zh-CN.toml |
i18n
文件
en.toml
Code Block | ||
---|---|---|
| ||
"ReuiredUserName" = "Please input user name" "ReuiredUserType" = "Please select user type" |
zh-CN.toml
Code Block | ||
---|---|---|
| ||
"ReuiredUserName" = "请输入用户名称" "ReuiredUserType" = "请选择用户类型" |
示例代码
Code Block | ||
---|---|---|
| ||
package main import ( "context" github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/framev2/i18n/ggi18n" "github.com/gogf/gf/i18nv2/os/gi18ngctx" "github.com/gogf/gf/v2/util/gconv" ) func main() { type User struct { Name string `v:"required#ReuiredUserName"` Type int `v:"required#ReuiredUserType"` } var ( ctx = gctx.New() data = g.Map{ "name": "john", } user = User{} ctxEn = gi18n.WithLanguage(context.TODO()ctx, "en") ctxCh = gi18n.WithLanguage(context.TODO()ctx, "zh-CN") ) if err := gconv.Scan(data, &user); err != nil { panic(err) } // 英文 if err := g.Validator().Ctx(ctxEn).Data(data).CheckStruct(ctxEn, user); err != nil { g.Dump(err.String()) } // 中文 if err := g.Validator().Ctx(ctxCh).Data(data).CheckStruct(ctxCh, user); err != nil { g.Dump(err.String()) } } |
执行后,终端输出:
Code Block | ||
---|---|---|
| ||
Please select user type 请选择用户类型 |
Panel | ||
---|---|---|
| ||
|