package middleware

import (
	"github.com/gin-gonic/gin"
	ut "github.com/go-playground/universal-translator"
	en_translations "gopkg.in/go-playground/validator.v9/translations/en"
	zh_translations "gopkg.in/go-playground/validator.v9/translations/zh"
	"zhenyihuibao/conf"
	"gopkg.in/go-playground/validator.v9"
)

func MultiLang() gin.HandlerFunc {
	return func(c *gin.Context) {
		locale:=c.DefaultQuery("locale","zh")
		trans, _ := conf.Uni.GetTranslator(locale)
		conf.Trans = &trans
		switch locale {
		case "zh":
			zh_translations.RegisterDefaultTranslations(conf.Validate, trans)
			break
		case "en":
			en_translations.RegisterDefaultTranslations(conf.Validate, trans)
			break
		default:
			zh_translations.RegisterDefaultTranslations(conf.Validate, trans)
			break
		}
		conf.Validate.RegisterTranslation("required", trans, func(ut ut.Translator) error {
			return ut.Add("required", "{0} 必须有值!", true) // see universal-translator for details
		}, func(ut ut.Translator, fe validator.FieldError) string {
			t, _ := ut.T("required", fe.Field())
			return t
		})
		c.Next()
	}
}