The quick fix is pretty easy: just make sure that we initialize the various UserManager classes with a reference to WikiEngine, which would allow us to retrieve the i18n manager and generate a proper message.
HOWEVER, that's not quite the end of the story. These errors, in particular, are NOT internal errors, but errors that ought to be thrown back to the end-user, and thus need to use the locale of the web user (as opposed to the language of the JVM deployer or runtime). So, it would probably be better to change the exception type to make it simply carry the message key and the name of the user, rather than the error message itself. Web-tier JSPs and classes with access to the user context should, instead, be responsible for creating a locale-specific message.
I agree that we probably need to re-think this a bit. The general strategy you suggest makes sense.
The sad thing is that we are going to have to do this in lots more places than just here... It really suggests that we ought to add special constructors to ALL custom JSPWiki Exception types so that they can accept message keys and variable parameters. Yes, varargs would make this MUCH easier...