通過使用 go-i18n 庫和集成到 gin 框架,go 語言支持國際化(i18n),包括:翻譯管理和選擇。渲染翻譯后的消息。將 i18n 集成到 web 框架中。根據用戶語言設置提供多語言支持。
Go 中的國際化和多語言支持
國際化(i18n)和多語言支持是國際化 web 應用程序的重要組成部分。Go 語言提供了強大的庫和工具,使開發者能夠輕松地實現這些功能。
使用 go-i18n 庫
go-i18n 是 Go 中一個流行的 i18n 庫。它提供了易于使用的 API 來管理翻譯、選擇語言并渲染翻譯后的消息。
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", })) }
登錄后復制
集成到 Gin 框架
Gin 框架是一個流行的 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() }
登錄后復制
實戰案例
考慮一個名為 “message” 的簡單 API,它返回基于用戶語言設置的消息。
請求:
GET /message HTTP/1.1 Accept-Language: en
登錄后復制
響應:
HTTP/1.1 200 OK Content-Type: application/json "Hello"
登錄后復制
請求:
GET /message HTTP/1.1 Accept-Language: es
登錄后復制
響應:
HTTP/1.1 200 OK Content-Type: application/json "Hola"
登錄后復制