
Hi Ceki I have two type safe message definition idea. I've committed draft code to my cai18n project clone. (http://github.com/takeshi/cai18n/tree/master) Please take it in cai18n project, if you like it,. My ideas is as follows. 1. Message definition by annotation for instance, public enum LocalizedColors { @Message("green") GREEN { @Message("vert") Locale fr = Locale.FRANCE; @Message("midori") Locale ja = Locale.JAPAN; } } Using enum field declaration with annotation, we can define localized message. It is simple , but we can't add other locale. 2. Message definition by switch case for instance, public class ColorDef_fr extends MessageDefinition<Colors> { public Locale getLocale() { return Locale.FRANCE; } public String getMessage(Colors e) { switch (e) { case BLUE: return "blue"; case GREEN: return "vert"; case RED: return "rouge"; } return null; } } Using method return, we can define localized message. It is not simple, but this we can define it per locale.