前言

根据使用者的反馈,对开源项目:go-gin-api 新增两个小功能。

两个小功能都与语言包有关:

  • 功能1:接口返回的错误信息支持中英文;
  • 功能2:参数验证的错误信息支持中英文;

我的实现方式是在项目安装的时候,选择 语言,然后项目中根据选择的语言进行输出对应的中英文,如下图。

lang.png

接口返回的错误信息支持中英文

代码位置

项目代码位置:internal/pkg/code

使用方式

  1. // 与原来使用方式一致
  2. code.Text(code.ServerError)

错误信息自定义

  • 中文:internal/pkg/code/zh-cn.go
  • 英文:internal/pkg/code/en-us.go

如果你想新增/编辑错误信息,在对应文件操作即可。

参数验证的错误信息支持中英文

代码位置

项目代码位置:internal/pkg/validation

使用方式

  1. req := new(createRequest)
  2. if err := ctx.ShouldBindForm(req); err != nil {
  3. fmt.Println(validation.Error(err))
  4. }

错误信息语言包

错误信息语言包使用的是 go-playground/validator

  • 中文:v10/translations/zh
  • 英文:v10/translations/en

示例

  1. Username string `form:"username" binding:"required"` // 用户名
  2. Nickname string `form:"nickname" binding:"required"` // 昵称

未使用语言包

  1. // 错误信息
  2. createRequest.Username' Error:Field validation for 'Username' failed on the 'required' tag\nKey: 'createRequest.Nickname' Error:Field validation for 'Nickname' failed on the 'required' tag"

使用中文语言包

  1. // 错误信息
  2. Username为必填字段;Nickname为必填字段;

使用英文语言包

  1. // 错误信息
  2. Username is a required field;Nickname is a required field;

小结

以上,希望能对你有所帮助,代码已提交到 GitHub,下载最新代码用起来吧。

推荐阅读