在Go语言中如何将语言代码转换为对应的标准语言名称?
Go语言语言代码转标准名称实现方案
你可以通过两种主流方式实现该需求:
方案1:使用官方维护的国际化工具包(推荐)
Go官方提供了golang.org/x/text系列包,其中的language和display子包原生支持BCP 47标准语言标签的解析和名称转换,适配所有通用语言代码格式。
- 安装依赖
执行命令:go get golang.org/x/text - 示例代码
package main import ( "fmt" "golang.org/x/text/language" "golang.org/x/text/language/display" ) func getLanguageFullName(code string) (string, error) { tag, err := language.Parse(code) if err != nil { return "", fmt.Errorf("非法语言代码: %w", err) } // 若需要返回中文的语言名称,将display.English替换为display.SimplifiedChinese即可 return display.English.Languages().Name(tag), nil } func main() { testCodes := []string{"en-US", "ja", "zh-CN", "fr"} for _, code := range testCodes { name, err := getLanguageFullName(code) if err != nil { fmt.Printf("代码%s解析失败: %v\n", code, err) continue } fmt.Printf("%s -> %s\n", code, name) } }
- 运行输出
en-US -> American English ja -> Japanese zh-CN -> Simplified Chinese fr -> French
方案2:自定义映射表(适合固定少量语言场景)
如果你的业务只需要支持少量固定的语言代码,可以直接维护一个映射表实现,无需引入外部依赖:
// 按需扩展映射内容即可 var langCodeMap = map[string]string{ "en-US": "American English", "ja": "Japanese", "zh-CN": "Simplified Chinese", "fr": "French", } func getLangNameByCode(code string) string { return langCodeMap[code] }
内容的提问来源于stack exchange,提问作者Arun Nair
相关产品推荐
相关产品推荐

