Before considering a development environment for your software or contemplating localising existing software; separate resources, such as strings, images, and videos, from your code; move them into separate, resource-only files.
The next step is to check that Unicode is supported and when localising existing software check that the string type used supports Unicode. Unicode is a character encoding standard supporting most known written languages. Each known character receives a unique identifier, this number can be several bytes long. To achieve compatibility with the older ASCII format the Unicode Transformation Format 8 bit (UTF-8) was invented. UTF-8 varies in length but the ASCII characters all have the exact same code in UTF-8.
The most basic tool to support multiple languages is the use of string tables, where each string used in the software is given a unique string identifier. Each language has its own table containing the unique string identifiers and the string contents in the specific language. It is a good idea to use descriptive names and a naming standard for the string identifiers. Do not reuse strings! For example the string “on” could be correct in two separate places in Eenglish but in another language two different words could be required.
When the language currently used by the application is communicated to other applications the language codes specified by ISO 639 should be used. In some cases it is also necessary to specify which character set is being used, for example in HTML using the charset parameter.
The format used for dates and times used in the world are many, it is recommended to use a standardised form when storing this data, for example RFC 3339 defines date and time formats on the internet. Each user should have their date and time displayed to them and be able to enter date and time in their desired format.
When localising icons and images also need to be changed to adapt to the specific culture. Make sure the development environment allow for different icons and images for different locales. Typically software development environments use resource files to bundle all content for a specific locale. It is a good idea to make sure that your images do not contain any non-decorative text as it would require a new image for every language and more important this text would not be read by a screen reader.
The user interface itself may need to be adapted to handle right to left languages or even vertical text. Thankfully most modern development environments can adapt the user interface to a right to left environment by checking a box. Adapting to right to left basically involves moving user interface components such as menus, input boxes, maximize button, etc to the opposite side and switch them to right to left input/output.
An often overlooked part of the user interface are keyboard shortcuts, these also need to be localised. Also make sure physical and on-screen keyboard are supported in the desired languages on the target platform. If either is unsupported the software should provide it.
In order to properly display the desired languages special fonts could be needed. Make sure the target environment has fonts supporting all the languages used in the software, if not appropriate fonts need to be shipped with the software.
In some parts of the world it is common to use the English version of the operating system and use software in the local language where available. The reason for this practice is two-fold; user have started to use the English version before a version in the local language was available and/or the user lives in a bilingual environment. Due to the latter it is important to allow the user to easily change the language used.
- Separate resources from code.
- Use Unicode and UTF-8.
- Support string tables for each language.
- Support separate icons and images for each language.
- Support right to left user interface.
- Support localised keyboard shortcuts.
- Make sure keyboards and on-screen keyboards are supported for the intended languages on the target platform.
- Make sure appropriate fonts are supported.
- Allow the user to easily change the locale of the software.
- The Unicode Consortium, http://www.unicode.org/
- IETF RFC 3629 – UTF-8, a transformation format of ISO 10646, http://tools.ietf.org/html/rfc3629
- ISO 639 http://www.iso.org/iso/home/standards/language_codes.htm
- IETF RFC 3339 – Date and time on the Internet: Timestamps http://tools.ietf.org/html/rfc3339