lang.go 980 B

12345678910111213141516171819202122232425262728293031323334
  1. package middleware
  2. import (
  3. "github.com/gin-contrib/i18n"
  4. "github.com/gin-gonic/gin"
  5. "golang.org/x/text/language"
  6. "sikey.com/backend/internal/constant"
  7. )
  8. var translate = map[string]language.Tag{
  9. constant.Chinese: language.Chinese,
  10. constant.ChinesetTaditional: language.TraditionalChinese,
  11. constant.ChineseHongKong: language.TraditionalChinese,
  12. constant.ChineseTaiwan: language.TraditionalChinese,
  13. constant.ChineseMacao: language.TraditionalChinese,
  14. constant.Singapore: language.SimplifiedChinese,
  15. }
  16. func Language() i18n.GetLngHandler {
  17. return func(ctx *gin.Context, defaultLng string) string {
  18. localization := ctx.GetHeader(constant.HeaderLocalization)
  19. if localization == "" {
  20. localization = defaultLng
  21. }
  22. // Translate to golang.org/x/text/language
  23. if local, ok := translate[localization]; ok {
  24. localization = local.String()
  25. }
  26. ctx.Set(constant.ContextValueLocalization, localization)
  27. return localization
  28. }
  29. }