Previous Topic: InternationalizationNext Topic: SmCPW, APSAdmin & Forgot (User Interfaces)


APS Internationalization Introduced

As every developer that has ever attempted it knows, internationalization is a very complex subject. This section is not intended to be a treatise on internationalization; it is intended only as instructions and guidelines for using the internationalization features of APS to localize its functionality at your site.

Internationalization is the capability of a program to be localized, that is, to vary the display of information based on where the user is and what the user (and the user's browser) is capable of. Typically, this is primarily equated to language translation, but may include more than that.

For example, most Canadians speak English, but Canada is not divided into "states"; instead, it is divided into "provinces". To vary the output for Canadian users to display a prompt as "Province" instead of "State" is part of localization. Whereas internationalization is the capability, localization is the actual implementation for a specific locality; a locality being defined (at least for our purposes) as a combination of language and country code.

Every piece of text or graphic presented to a user by APS can be modified by a site. For our purposes, the word translation can be used, though it is not entirely accurate in the traditional sense, just as localization is not strictly language translation.

Every error message, prompt, and result is stored within the APS programs as a key. With each key is a default translation. During processing, APS asks the APSXlate library for text associated with the key. If there is no text associated with a given key, APS will use the default text. All default text is in US English.

APSXlate uses translation files to look up text for each key. When APS asks for a translation, it tells APSXlate what the user's language and country settings are. APSXlate then will select the appropriate files to use to look up the correct translation.

These translation files are stored on both the Policy Server and on the Web Server. Under Windows, they are stored in a directory called Language that must exist as a subdirectory under where APSXlate.DLL is located. Under Unix, APSXlate uses an environment variable to locate the Language directory.

Under the language directory, there are subdirectories for each language and locality. For example, there should be directories called EN and EN-US. Files located in the EN subdirectory are for general English and files in EN-US contain overrides that are specific for English in the United States. APSXlate loads files from the EN directory first, then loads files from the EN-US directory, the EN-US translations overlaying any duplicate entries loaded from the EN directory.

There is actually a total of up to four files loaded by APSXlate for any translation; "Common" files and files that are specific to an application. The details of how files are loaded and reloaded are detailed in the APSXlate documentation. What you need to know here is the names of the files that APS uses.

SmCPW (the web-server-side CGI program users access to change their passwords) uses a file called SmCPW.lang, stored in the language directories on the Web Server. APS uses a file called APS.lang, stored in the language directories on the Policy Server. There may be multiple copies of each of these files, one for each locale supported by the site.

Within each file, there are definitions for each key and the translation for that key. To change the text associated with a given key, locate the key within the file (for the target language) and change the associated text.

The keys should never be changed, since the key is what is used to locate the text. Only the text should ever be changed.

Since every text string is "translated", even from English to English, you can change the actual text for every message in the system by modifying the translation files.

The files, as supplied, contain all default strings. If you were to delete the translation files (this is not recommended!), the default text would still be displayed to the user, because it is actually hard-coded into APS. The advantage is that if the user's locale has no translation files (for example, he wants Greek), the default English translation will still be used.

There are three points of contact between APS and the user: