On 24/03/2010, Luc Maisonobe <luc.maison...@free.fr> wrote: > Gilles Sadowski a écrit : > > > Hello. > > > > I'd like to suggest that there could be a nicer way to handle localization > > of error messages. Please have a look at > > http://cal10n.qos.ch/ > > > This looks promising, and I also considered developing a maven plugin > with some asm magic to help make sure all messages are translated > properly. However, I wanted to have a tool that would be only use at > build time. > > > > > > Of course, the first point that will be raised is that it creates an > > external dependency. Is this a "no-no" or, given some benefits, could it be > > acceptable? > > > The runtime dependency is a no-no (at least from me). Is it possible to > use only the build part and not the runtime part ? > > > > > > Basically, I think that dealing with strings inside the math library code > is > > ugly and error-prone. E.g. > > > > throw MathRuntimeException.createIllegalArgumentException("{0} out of > [{1}, {2}] range", > > x, xval[0], > xval[xval.length - 1]); > > > > A simple spelling mistake will defeat the purpose, as the localized version > > will not be found. > > > You are right. > > > > The above library takes care of this problem. > > > > Even so, I think that *messages* should not appear at this level. It is > much > > simpler to use a set of specific exceptions. I.e. instead of the above > > statement, one would use: > > > > throw new OutOfRangeException(x, xval[0], xval[xval.length - 1]); > > > > where the exception is defined as > > > > public OutOfRangeException extends IllegalArgumentException { > > private double val, min, max; > > > > public OutOfRangeException(val, min, max) { > > this.val = val; > > this.min = min; > > this.max = max; > > } > > > > public String getMessage() { > > // ... The string (or "enum" if using the "cal10n" library) > > // should appear at this level. > > } > > } > > > > Admittedly, this means creating a lot of exception classes; but the > > advantage is that they will allow more control. > > > Perhaps some intermediate solution with more exception classes than we > have but not one class for each message. > > At least, I agree the messages should be defined only once. > > Are there good localization framework with no runtime dependency > available somewhere ? >
For example, Tomcat and Harmony have built-in message frameworks. I think they both use property files, and have a class or two for the message handling. > Luc > > > > > > > > Best, > > Gilles > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > > For additional commands, e-mail: dev-h...@commons.apache.org > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org