lang.go 750 B

1234567891011121314151617181920212223242526272829303132
  1. package middleware
  2. import (
  3. "github.com/gin-contrib/i18n"
  4. "github.com/gin-gonic/gin"
  5. "golang.org/x/text/language"
  6. )
  7. var translate = map[string]language.Tag{
  8. "zh-CN": language.Chinese,
  9. "zh-TW": language.TraditionalChinese,
  10. "zh-HK": language.TraditionalChinese,
  11. "zh-MO": language.TraditionalChinese,
  12. "zh-SG": language.SimplifiedChinese,
  13. }
  14. func Language() i18n.GetLngHandler {
  15. return func(ctx *gin.Context, defaultLng string) string {
  16. localization := ctx.GetHeader("Localization")
  17. if localization == "" {
  18. localization = defaultLng
  19. }
  20. // Translate to golang.org/x/text/language
  21. if local, ok := translate[localization]; ok {
  22. localization = local.String()
  23. }
  24. ctx.Set("localization", localization)
  25. return localization
  26. }
  27. }