Skip to content

Instantly share code, notes, and snippets.

@avrebarra
Last active January 16, 2021 08:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save avrebarra/b3045dd95b4cd6cfe9c5de708624e466 to your computer and use it in GitHub Desktop.
Save avrebarra/b3045dd95b4cd6cfe9c5de708624e466 to your computer and use it in GitHub Desktop.
Humanize go-playground/validator validation errors and make it a bit more readable
package govalidatorhumanizer // you can change this
import (
"fmt"
"strings"
ut "github.com/go-playground/universal-translator"
en_translations "gopkg.in/go-playground/validator.v9/translations/en"
"github.com/go-playground/locales/en"
"gopkg.in/go-playground/validator.v9"
)
// usage: `err := govalidatorhumanizer.HumanizeErrMsg(err)`
var (
translatr ut.Translator
validatr *validator.Validate
)
func init() {
localeEN := en.New()
uniTranslator := ut.New(localeEN)
translatr, _ = uniTranslator.GetTranslator("en")
validatr = validator.New()
en_translations.RegisterDefaultTranslations(validatr, translatr)
}
func HumanizeErrMsg(err error) error {
if verr, yes := err.(validator.ValidationErrors); yes {
errstr := []string{}
for _, e := range verr {
errstr = append(errstr, e.Translate(translatr))
}
return fmt.Errorf(strings.ToLower(strings.Join(errstr, "; ")))
}
return err
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment