Skip to content

Instantly share code, notes, and snippets.

@ppalone
Created July 10, 2022 10:49
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 ppalone/0fd379fe0727a80ab3c34581e052ecbf to your computer and use it in GitHub Desktop.
Save ppalone/0fd379fe0727a80ab3c34581e052ecbf to your computer and use it in GitHub Desktop.
Example usage go-playground/validator/v10
package main
import (
"fmt"
en "github.com/go-playground/locales/en_IN"
ut "github.com/go-playground/universal-translator"
"github.com/go-playground/validator/v10"
entrans "github.com/go-playground/validator/v10/translations/en"
)
type User struct {
Id int `json:"id" bson:"_id,omitempty"`
Username string `json:"username" bson:"username" validate:"required,alphanum"`
Email string `json:"email" bson:"email" validate:"required,email"`
Password string `json:"password" bson:"password" validate:"required,min=8"`
Strategy string `json:"strategy" bson:"strategy"`
GithubId string `json:"githubId" bson:"githubId,omitempty"`
IsAdmin bool `json:"isAdmin" bson:"isAdmin"`
}
func main() {
var u *models.User = &User{
Username: "ppalone",
Email: "p@p.com",
Password: "passwor",
}
v := validator.New()
err := v.Struct(u)
// ut
// universal translator
// english
english := en.New()
uni := ut.New(english, english)
trans, _ := uni.GetTranslator("en_IN")
entrans.RegisterDefaultTranslations(v, trans)
var errors []string = []string{}
if err != nil {
// fmt.Println(err.(validator.ValidationErrors))
for _, e := range err.(validator.ValidationErrors) {
// fmt.Println(e.Translate(trans))
errors = append(errors, e.Translate(trans))
}
}
fmt.Print(errors)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment