Best Practices for Localization and Globalization
The following best practices provide a checklist of the issues associated
with developing world-ready software.
Developers can reduce their development time on almost any international application
by considering the following issues prior to the start of the development cycle:
- Use Unicode as your character encoding to represent text. If you cannot
use Unicode, you will need to implement DBCS enabling, bi-directional (BiDi)
enabling, code page switching, text tagging, and so on.
- Consider implementing a multilingual user interface. If you design the
user interface to open in the default UI language and offer the option
to change to other languages, users of the same machine who speak different
languages reduce down time related to software configuration. This may
be a particularly useful strategy in regions such as Belgium with more
than one culture/locale and official language.
- Watch for Windows messages that indicate changes in the input language,
and use that information for spell checking, font selection, and so on.
- If you are developing for Windows 2000, test your application on all
language variants of Windows 2000, using all possible cultures/locales.
Windows 2000 supports the languages used in more than 120 cultures/locales.
Cultural and Political Issues
Sensitivity towards cultural and political issues is an especially important
topic when developing world-ready applications. In general, these items would
not prevent your application from running; instead, they are items that may
create such negative feelings about the application that customers may seek
alternatives from other companies. Political issues, such as disputes related
to maps, can induce governments to prevent distribution in entire regions.
The following are areas in which problems commonly occur:
- Avoid slang expressions, colloquialisms, and obscure phrasing in all text.
At best, they are difficult to translate; at worst, they are offensive.
- Avoid images in bitmaps and icons that are ethnocentric or offensive
in other cultures/locales.
- Avoid maps that include controversial regional or national boundaries.
They are a notorious source of political offense.
Additional User Interface Issues
You can localize well-designed software to any of the languages supported
by Windows 2000 without changes to the source code. In addition to the guidelines
mentioned above, you should also consider the following:
- Isolate all user interface elements from the program source code. Put them
in resource files, message files, or a private database.
- Use the same resource identifiers throughout the life of the project.
Changing identifiers makes it difficult to update localized resources from
one build to another.
- If used in multiple contexts, make multiple copies of the same string.
The same string may have different translations in different contexts.
- Only place strings requiring localization in resources. Leave non-localized
strings as string constants in the source code.
- Allocate text buffers dynamically since text size may expand when translated.
If you must use static buffers, make them extra large (perhaps doubling
the length of the English string) to accommodate localized strings.
- Keep in mind that dialog boxes may expand due to localization. For example,
a large dialog box that occupies the entire screen in low-resolution mode
may require resizing to an unusable size when localized.
- Avoid text in bitmaps and icons, as these are difficult to localize.
- Do not create a text message dynamically at run time, either by concatenating
multiple strings or by removing characters from static text. Word order
varies by language, so dynamic composition of text in this manner requires
code changes to localize to some languages.
- Similarly, avoid composing text using multiple insertion parameters in
a format string because the insertion order of the arguments changes when
translated to some languages.
- If localizing to a Middle Eastern language, such as Arabic or Hebrew,
use the right-to-left layout APIs to lay out your application right-to-left.
- Test localized applications on all language variants of Windows 2000.
If your application uses Unicode, as recommended, it should run fine with
no modifications. If it uses a Windows code page, you will need to set
the culture/locale to the appropriate value for your localized application
and reboot before testing.