In localization, "Catalyst" is a tool from Alchemy Software. Among other things, it allows you to localize UI elements within software resource files, sometimes without the need to rebuild the software manually into binary format.
Since software binaries come from text files, part of Catalyst's value lies in straddling the divide between allowing the translator to change strings in the these text files (say, from English to Japanese) and displaying them in the binary, run-time format in which the user will see them on screen.
Last month a vendor returned some resource files to me which we had them localize from English to Japanese. I rebuilt the binaries (language-resource DLLs) and ran them. Unfortunately, a number of items were suddenly missing from the Japanese menus, so I had to troubleshoot the problem.
My first thought was that either a person or a tool (or a person using a tool) had modified something that should not be affected by the localization process. I had handed off a resource file containing these lines:
32777 MENU DISCARDABLE
BEGIN
POPUP "&Tools" BEGIN MENUITEM "Serial P&ort Settings...", ID_TOOLS_SERIALPORTSETTINGS MENUITEM "&Network Settings...", ID_TOOLS_NETWORK MENUITEM "&Battery Settings...", ID_TOOLS_BATTERYSETTINGS ENDEND 32779 MENU DISCARDABLEBEGIN POPUP "&File"ENDThey returned to me a resource file containing these strings:
9 MENU DISCARDABLE BEGIN POPUP "ツール(&T)" BEGIN MENUITEM "シリアルポートの設定(&O)...", ID_TOOLS_SERIALPORTSETTINGS MENUITEM "ネットワーク設定(&N)...", ID_TOOLS_NETWORK MENUITEM "バッテリの設定(&B)...", ID_TOOLS_BATTERYSETTINGS ENDEND 11 MENU DISCARDABLE BEGIN POPUP "ファイル(&F)"ENDThere was nothing wrong with the translation, and the string IDs were intact. The product has long been "double-byte clean," so I knew that the software was not gagging on the Japanese characters.
The problem lay in the menu ID numbers, which are 32777 and 32779 in the English, but which came back in the Japanese files as 9 and 11. The vendor believes that Catalyst changed them, since they had used it to for resizing and QA.
Normally, this renumbering has no effect on how the binary functions. In this case, however, it has a profound effect on how the binary functions, because there is code somewhere in the software that is looking for "32777" and "32779" and when it doesn't find those ID's, it cannot complete the menu. This is poor internationalization in the code base which I have discussed with Engineering, to no avail, so I need to police the resource files in each round of localization.
How is Catalyst working for you? Have you seen similar problems?
Interested in this topic? You might enjoy another article I've written called "
Localized Binaries - The Plot Thickens"
Labels: Alchemy Catalyst, hard-coded strings, internationalization, localization utilities, resource file localization, string localization, UI localization