前言
根據使用者的反饋,對開源項目:go-gin-api
新增兩個小功能。
兩個小功能都與語言包有關:
- 功能1:接口返回的錯誤信息支持中英文;
- 功能2:參數驗證的錯誤信息支持中英文;
我的實現方式是在項目安裝的時候,選擇 語言
,然后項目中根據選擇的語言進行輸出對應的中英文,如下圖。
接口返回的錯誤信息支持中英文
代碼位置
項目代碼位置:internal/pkg/code
使用方式
// 與原來使用方式一致
code.Text(code.ServerError)
錯誤信息自定義
- 中文:internal/pkg/code/zh-cn.go
- 英文:internal/pkg/code/en-us.go
如果你想新增/編輯錯誤信息,在對應文件操作即可。
參數驗證的錯誤信息支持中英文
代碼位置
項目代碼位置:internal/pkg/validation
使用方式
req := new(createRequest)
if err := ctx.ShouldBindForm(req); err != nil {
fmt.Println(validation.Error(err))
}
錯誤信息語言包
錯誤信息語言包使用的是 go-playground/validator
- 中文:v10/translations/zh
- 英文:v10/translations/en
示例
Username string `form:"username" binding:"required"` // 用戶名
Nickname string `form:"nickname" binding:"required"` // 昵稱
未使用語言包
// 錯誤信息
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"
使用中文語言包
// 錯誤信息
Username為必填字段;Nickname為必填字段;
使用英文語言包
// 錯誤信息
Username is a required field;Nickname is a required field;
小結
以上,希望能對你有所幫助,代碼已提交到 GitHub,下載最新代碼用起來吧。