Defer the call to I18n.t for 'error_messages.email_invalid' because the I18n.locale may change between class initialization time and run time. This is definitely true in my app which handles users from multiple locales simultaneously, changing the locale for each request.
Update: OK this now includes a proper test.
fix for issue 332: defer error message translation
better attempt at this fix, now with a working test.