Requests for comment/Internationalization testing

VERY ROUGH THOUGHTS. INITIATED BY AMIR AHARONI

Internationalization and localization
The general ability of software to be internationalized and localized can be automatically tested without actual translation, by using pseudolocalization. It will verify that the application still works, even after it has been translated into a new language or adapted for a new culture (such as different currencies or time zones).

Actual translation to human languages must be tested, too. Possible localization failures include:
 * Software is often localized by translating a list of strings out of context, and the translator may choose the wrong translation for an ambiguous source string.
 * Technical terminology may become inconsistent if the project is translated by several people without proper coordination or if the translator is imprudent.
 * Literal word-for-word translations may sound inappropriate, artificial or too technical in the target language.
 * Untranslated messages in the original language may be left hard coded in the source code.
 * Some messages may be created automatically at run time and the resulting string may be ungrammatical, functionally incorrect, misleading or confusing.
 * Software may use a keyboard shortcut which has no function on the source language's keyboard layout, but is used for typing characters in the layout of the target language.
 * Software may lack support for the character encoding of the target language.
 * Fonts and font sizes which are appropriate in the source language, may be inappropriate in the target language; for example, CJK characters may become unreadable if the font is too small.
 * A string in the target language may be longer than the software can handle. This may make the string partly invisible to the user or cause the software to crash or malfunction.
 * Software may lack proper support for reading or writing bi-directional text.
 * Software may display images with text that wasn't localized.
 * Localized operating systems may have differently-named system configuration files and environment variables and different formats for date and currency.

To avoid these and other localization problems, a tester who knows the target language must run the program with all the possible use cases for translation to see if the messages are readable, translated correctly in context and don't cause failures.