I would like to weigh in on the side of indirection.

My experience was as part of a very small company (I was the software 
guy), where I created our application initially in English. When we 
ready to translate, all the translator would have to do is edit ".ini" 
files, which only consisted of key=value. I was even nice enough to have 
separate files, e.g., ids.ini for dialog/menu fields, and help.ini  for 
setToolTipText.   For a decent sized application, i.e., one with 30 or 
so dialogs, there were about 1000 ids.ini and 500 help.ini lines to 
translate. But there's more - we had about 6 separate applications. 
Well, for each application, there was a global ini file that could be 
shared (how many times do you have to translate: "File not found: "). 
Bottom line - over 3000 lines to translate. But as painful as this 
sounds,  it was a no-brainer to determine with a few short ksh scripts 
if the translator accidentally deleted/mangled a line. This was only 
possible because the translator was 100% isolated from the dialog/menu 
files, because I made it a policy to never have a single line of 
"English" in the dialog/menu files. Finally, I bundled all the 
translations in a a single res.jar.

Now it's 2005. I've tossed all my home grown code from reading ".ini" 
files and now use ini4j from SourceForge (it uses Properties rather than 
BundledResources).  I am *not* an authority on SwixML, having only used 
it for less than one week, however,  I would find it nearly impossible 
to guarantee the integrity of a translation if the xml files are edited 
directly. *Every* field in the xml file should be exposed to 
indirection. Further, to have the xml files directly exposed directly, 
rather than bundled in a jar file is not acceptable (do you honestly 
want to let uses to fool around with the xml files?) . I was successful 
passing to swix.render a URL for the .xml from a jar file, but gave up 
trying to pass a translation file via URL.

Now if you ever change you mind, I would suggest button text="${ok} /> 
rather than button text="@ok" /> because it would allow for a more 
sophistacted buttontext="${how}${now}${brown}${cow}". This is not my 
idea, ini4j also allows "[EMAIL PROTECTED]/key}" if coming from the properties 
file 
and [EMAIL PROTECTED]/key} if coming from the environment. Very cool.

Steve


_______________________________________________
Forum mailing list
Forum@carlsbadcubes.com
http://carlsbadcubes.com/mailman/listinfo/forum_carlsbadcubes.com

Reply via email to