A well behaved server application must provide NLS support for every client individually. Because every client potentially has its own language, the default Smalltalk NLS mechanism has been extended for ULC.
ULC clients can operate on any platform that is supported by Java, the language in which the UI Engine component is implemented. Locale information can vary from platform to platform. VisualAge already provides a rich set of NLS tools; ULC leverages these by putting them to use in slightly different ways.
ULC clients deliver country and language information in ISO two-character abbreviated format. This results in a Locale object that represents the locale to be created within a ULC context associated with a given UI Engine client.
ULC uses the MPR file format provided by VisualAge Smalltalk as an external source for language-specific strings. All end-user tools (such as those listed in the System Transcript window's Tools menu) for managing the language resources can be used in ULC. (For details, see the VisualAge User's Guide.)
For support of multiple national environments, you have a choice as to how to create the MPR files:
You must use Unicode encoding for those languages that are enabled but not shipped in VisualAge national language versions (for example, Russian). It is also a good idea to use Unicode for double-byte languages.
ULC implements a straight mapping of classes to MPR files. This approach is a simplification from VisualAge in that ULC does not use named NLS groups. Rather, ULC assumes that the resources of all classes defined in a manager application share one MPR file. This file is defined by the manager application class in the method #abtExternalizedStringBuildingInfo.
UlcSystem is configured by ULC applications with their language-to-file-name substitution information in an application class method (see Implementing NLS support for ULC applications).
Visually constructed views retrieve their view constants on an instance basis by accessing their contexts for the NLS group concerned. UlcProxy implements the #getMRI: method, which in turn sends the UlcContext>>#getMRI:class: message. This scheme allows for multiple contexts, each with its own language, while still using standard VisualAge NLS mechanisms. Applications wishing to make use of this feature can do so by accessing the NLS group through the process owner. For more information about SST process management, see ULC and Server Smalltalk.