通過(guò)使用 go-i18n 庫(kù)和集成到 gin 框架,go 語(yǔ)言支持國(guó)際化(i18n),包括:翻譯管理和選擇。渲染翻譯后的消息。將 i18n 集成到 web 框架中。根據(jù)用戶(hù)語(yǔ)言設(shè)置提供多語(yǔ)言支持。
Go 中的國(guó)際化和多語(yǔ)言支持
國(guó)際化(i18n)和多語(yǔ)言支持是國(guó)際化 web 應(yīng)用程序的重要組成部分。Go 語(yǔ)言提供了強(qiáng)大的庫(kù)和工具,使開(kāi)發(fā)者能夠輕松地實(shí)現(xiàn)這些功能。
使用 go-i18n 庫(kù)
go-i18n 是 Go 中一個(gè)流行的 i18n 庫(kù)。它提供了易于使用的 API 來(lái)管理翻譯、選擇語(yǔ)言并渲染翻譯后的消息。
import (
"fmt"
"<a style='color:#f60; text-decoration:underline;' href="https://www.php.cn/zt/15841.html" target="_blank">git</a>hub.com/nicksnyder/go-i18n/v2/i18n"
)
func main() {
bundle := i18n.NewBundle(i18n.LanguageCodes{"en", "es"})
bundle.AddTranslation("en", "Hello", "Hello")
bundle.AddTranslation("es", "Hello", "Hola")
localizer := i18n.NewLocalizer(bundle, "en")
fmt.Println(localizer.MustLocalize(&i18n.Message{
ID: "Hello",
Other: "world",
}))
}
登錄后復(fù)制
集成到 Gin 框架
Gin 框架是一個(gè)流行的 Go web 框架。以下是如何將 i18n 集成到 Gin 中:
import (
"github.com/gin-gonic/gin"
"github.com/nicksnyder/go-i18n/v2/i18n"
)
func main() {
router := gin.Default()
bundle := i18n.NewBundle(i18n.LanguageCodes{"en", "es"})
bundle.AddTranslation("en", "Hello", "Hello")
bundle.AddTranslation("es", "Hello", "Hola")
router.GET("/hello", func(c *gin.Context) {
localizer := i18n.NewLocalizer(bundle, c.GetHeader("Accept-Language"))
c.String(200, localizer.MustLocalize(&i18n.Message{
ID: "Hello",
}))
})
router.Run()
}
登錄后復(fù)制
實(shí)戰(zhàn)案例
考慮一個(gè)名為 “message” 的簡(jiǎn)單 API,它返回基于用戶(hù)語(yǔ)言設(shè)置的消息。
請(qǐng)求:
GET /message HTTP/1.1 Accept-Language: en
登錄后復(fù)制
響應(yīng):
HTTP/1.1 200 OK Content-Type: application/json "Hello"
登錄后復(fù)制
請(qǐng)求:
GET /message HTTP/1.1 Accept-Language: es
登錄后復(fù)制
響應(yīng):
HTTP/1.1 200 OK Content-Type: application/json "Hola"
登錄后復(fù)制






