Localization / Application locale |
While it is recommended to use localized strings to internationalize application messages, runtime system error messages are provided in .iem message files. The system message files use the same technique as user defined message files. The default message files (msg) are located in the FGLDIR/msg/en_US directory.
For backward compatibility with IBM® Informix® 4GL, some of these system error messages are used by the runtime system to display messages during a dialog instruction. For example, end users may get the error message -1309 "There are no more rows in the direction you are going" when scrolling an a DISPLAY ARRAY list in TUI mode.
If your application language is not English, you will need to translate some of the system messages to a specific locale and language. If your application language is English, you might just want to customize the default messages.
Here are some examples of system messages that can appear at runtime:
Number | Description |
---|---|
-1204 | Invalid year in date. |
-1304 | Error in field. |
-1305 | This field requires an entered value. |
-1306 | Please type again for verification. |
-1307 | Cannot insert another row - the input array is full. |
-1309 | There are no more rows in the direction you are going. |
To use your own customized system messages, do this:
With this technique, you can deploy multiple message files in different languages and locales in the same FGLDIR/msg directory.
You can use the fglmkmsg tool with the -r option to revert a .iem file to a source .msg file.
There is no need to translate all messages of the .msg files: Most of the error messages are unexpected during a program execution and therefore can stay in English. The messages subject of translation can be found in the 4glusr.msg and rds.msg files.
The locale can be set with different environment variables (see setlocale manual pages for more details). To identify the locale name, the runtime system first looks for the LC_ALL value, then LC_CTYPE and finally LANG.
Pay attention to locale settings when editing message files and compiling with fglmkmsg: The current locale must match the locale used in the .msg files.
The .iem files used at runtime must match the current locale used by programs. This should be automatic, as long as you put the correct files in the corresponding $FGLDIR/msg/$LANG directory.