The Prizm OS supports a few localization features. Much of the UI can be shown in a language other than English. The OS has six built-in languages for messages (English, Spanish, German, French, Portuguese and Chinese), and two built-in languages for the function key labels (English and Chinese). It is prepared to support a probably unlimited number of other languages for messages through language add-ins (see CASIOWIN#Add-in software and language and Versions and versioning#Official add-in languages), and it probably also supports add-in languages for function key labels.
The user can select a language for messages independently of the language chosen for function key labels.
At a basic level, translation works by assigning an ID to each string used in the OS, then translating each string separately. The translation will appear everywhere the string with that ID is used. Supposing the string with ID 123 is "Hello World", and a message language translates ID 123 to "Foo Bar", then every place where string with ID 123 appears, will show as "Foo Bar".
The settings for number and currency formats appear to be completely disconnected from the currently selected languages, and there is no way to change decimal separators and the like. There appears to be no support for different collation settings (this would be mostly visible in the way items are sorted in the file browsers). Common words are not ignored when sorting. Message translation may take into account some culture aspects, but none of it is automated - things like abbreviations and numerals must be explicitly specifying them in the translated messages.
Locale in add-in software
Add-ins can display messages and function key labels from the OS library of messages, but they can't register their own messages or labels. For messages not included in the OS, or where not all translations apply (depending on context), add-ins must provide their own localization system. This is what official add-ins appear to do.
Add-in languages are distributed as g3l files, and are meant to be put in the root of the storage memory, just like add-in software (g3a files). As far as it is known, each g3l file can only provide one additional language. These files share the common Casio header.
Once a valid g3l file is installed, its language becomes available for selecting on the Language menu of the built-in System app. When an add-in language for messages is selected on that menu, a section of its g3l file is copied into Flash at address 0x80B60000 / 0xA0B60000, effectively creating a patch that looks very similar to what can be seen in the areas where messages for built-in languages are stored. The OS then refers to this memory area when looking up a certain message. Presumably, the OS keeps somewhere a pointer to the start of the currently selected message table, and changing this pointer is what effectively changes the currently selected message table.
Apparently, if for some reason the OS finds a problem with the installed add-in language, it will automatically revert the language message setting to English.