Hey B.J.,

I think this is a great beginning, and it will go a long way to creating a robust and internationalized server. I can provide a couple of answers/comments to your questions.

B.J. Reed wrote:
Questions/Answers
2) Is there a numbering standard for the key? The standard that I have started for the message key is as follows:
mmmmlxxxx
   mmmm - 4 char module name abbreviation
   l - one char level (E - error, W - warning, I - information
   xxxx - 4 digit error number
Since I haven't gotten very far...if there is a better suggestion, then it will be easier to change this sooner rather than later.

I think this is a good prefix system, but I would put the message level after the message number. I think COMM001W is easier to read than COMMW001 and understand the level. Especially when an E or W or I ends the module name prefix. Compare GJEEE0001 to GJEE0001E.

Also, since you provide an API for fetching these messages, I would prefer not to include the message prefix and level in the message itself. Use the provided GeronimoMessageBundle API to change messages in a standard way. This also makes message writing easier as this first message is easier to write than the second:
COMM0003E=Unable to find message for {0}.
COMM0003E=COMM0003E Error: Unable to find message for {0}.

3) Tell me more about the string substitutions. To make messages more flexible, placeholders can be put in the messages that look like {0} {1} etc. An ArrayList can be passed in to the getMessage method that will be used to replace the placeholders. This way, if a language needs the replacements in a different order, the code will not need to be changed.

Very useful and definitely needed for messages such as
COMM0022E=Could not find the resource named {0}.
The translators will have to move these placeholders around, as different languages have different orders for Subject/Verb/Object etc.

4) How do I add a language? At this time, the geronimo-messages.properties is included in the geronimo-common.jar. The easiest thing that I have found is to copy the .properties file to an apprpriate locale named file (geronimo-messages_de.properties (for German) or geronimo-messages_de_CH.properties for German in Switzerland). Re-create the geronimo-common.jar file.

I think eventually all message translations are going to go in there. Different users are going to want different language messages served to them from the same server assembly.

--
Thanks, Dan Becker

Reply via email to