Go语言如何做国际化i18n_Go语言国际化多语言教程【秒懂】

张开发
2026/4/8 3:30:03 15 分钟阅读

分享文章

Go语言如何做国际化i18n_Go语言国际化多语言教程【秒懂】
golang.org/x/text/message 是 Go 官方推荐的 i18n 方案需配合 language 包做语言匹配用 Printer per-request 构造以保证并发安全通过 gotext 工具链加载 .po 翻译严禁 fmt.Sprintf 拼接多语言文本。Go 语言用 golang.org/x/text/message 做 i18n 最稳妥标准库不带 i18ngolang.org/x/text/message 是官方维护、生产可用的方案比自己拼字符串或用第三方轻量库更可靠。它支持复数、性别、嵌套消息、格式化占位符且能配合 golang.org/x/text/language 做自动语言匹配。常见错误是直接用 fmt.Sprintf 拼接翻译文本——中文没问题但德语、阿拉伯语等会因词序、格变化、复数规则崩掉。比如 “You have 1 message” 和 “You have 5 messages” 在英语里只差一个 s但在俄语里动词变位、名词格、形容词性数格全得跟着变。必须用 message.Printer 实例调用 Printf / Sprintf不能绕过消息模板写在 .po 或硬编码进 message.Catalog别散落在代码各处语言标签用 language.Make(zh-CN)别传 zh 或 cn 这种非标准值否则匹配失败静默回退到默认语种如何加载多语言消息.po 文件golang.org/x/text/message 本身不读文件需搭配 golang.org/x/text/message/pipeline 或手动解析 .po。更现实的做法是用 gotext 工具链它把 .po 编译成 Go 源码再静态注入 message.Catalog。典型流程go generate 触发 gotext extract 扫描 msg 调用 → 生成 messages.gotext.json → 翻译人员填 .po → gotext generate 输出 catalog.go。立即学习“go语言免费学习笔记深入” 有道翻译AI助手 有道翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译、网页翻译、文档翻译、PDF翻

更多文章