All text displayed to the user is stored in .properties files. Whenever a piece of text is required by the platform, the appropriate .properties files are located and the required text is read from them. There are .properties files for each language that the system supports. The two character language code and optionally, the two character country code are appended to the base filename to identify the locale supported by the file. For example:
messages.properties: The default and English version of the messages file
messages_fr.properties: The French language version of the messages file
messages_de.properties: German language version of the messages file
messages_fr_CA.properties: The French Canadian version of the messages file
When a request comes in from a user, the platform detects the country and language for that user and locates the correct language version of the file. The .properties files are read at runtime and not compiled into the platform. This makes performing the translation and seeing the results a simple process.