一个go的支持多语言的error自动生成插件

文章介绍了如何在Go语言项目中实现多语言错误处理,首先展示了传统的硬编码方式,然后提出其缺点。接着,文章介绍了一个名为go-error-generator的插件,该插件通过protobuf文件自动生成多语言错误,提高了代码的可维护性和灵活性,减少了代码修改的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,我是peachesTao,今天给大家推荐一个go的支持多语言的error自动生成的插件,插件主页可以访问下方链接。

在一个多语言国际化的项目中,后端接口返回给前端的错误描述也需要国际化,我们来看一下后端给前端返回多语言错误描述的实现方式有哪些。

常规实现

服务端将错误码和不同语言的错误描述硬编码在代码中,通过前端从http head中传过来的language来决定是返回中文还是英文。

1、定义Error结构体

该结构体实现标准库的error接口,实现自定义error

type Error struct {
   
	Code int
	Msg  string
}

func (e *Error) Error() string {
   
	return fmt.Sprintf("%d,%s", e.Code, e.Msg)
}

2、定义错误码和错误描述map

const (
	Err_Code_Success       = 0
	Err_Code_UnKnown       = -1
	Err_Code_InValid_Phone = 10001
)

const (
	Language_Chinese = 0 //中文
	Language_Enligh  = 1 //英文
)

//不同语言对应的错误描述
var errMap = map[int]map[int]string{
   
	Language_Chinese: {
   
		Err_Code_Success:       "成功",
		Err_Code_InValid_Phone: "手机号格式不正确",
		Err_Code_UnKnown:       "未知错误",
	},
	Language_Enligh: {
   
		Err_Code_Success:       "success",
		Err_Code_InValid_Phone: "invalid phone no",
		Err_Code_UnKnown:       "unknown err",
	},
}

3、申明一个用户注册的api

根据客户端传过来的http header中的language的值决定返回中文还是英文的错误描述

func main() {
   
	http.HandleFunc("/user/register", func(w http.ResponseWriter, r *http.Request) {
   
		languageStr := r.Header.Get("language")
		language, _ := strconv.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值