Use custom ValidationError

and pass an i18n'able description with it
Merge remote-tracking branch 'origin/master'