Summary
- Get international input on the product design early,
preferably during the specification stage.
- Create a flexible user interface and code design that
makes customization easy, as some features will be
necessary for some locales but not for others.
- Use generic graphics and avoid overcrowding to create a
user interface that is internationally acceptable and
easy to localize.
- Make sure that shortcut-key combinations can be
reproduced using international keyboards. Use number and
function keys instead of letter keys in shortcut-key
combinations. Avoid combinations that use Ctl+Alt or
Shift+Ctrl+Alt.
- Pay attention to legal issues that might affect your
ability to sell your product internationally.
- Be aware of accessibility issues. A number of
accessibility and internationalization issues overlap.
- Educate your team about internationalization issues and
hold all team members responsible for the
internationalization of the product.
- Use one set of source code files to create all language
editions of your product.
- Share a single file format among all language editions of
your product.
- Isolate localizable resources in the source code. Use
Windows resource files.
- Eliminate compile dependencies such as #ifdef statements,
hard-coded strings or constants, and localizable
resources in header files. Never use #ifdef statements to
handle special cases for individual languages.
- Remember that although some coding practices are
efficient (for example, using character constants,
concatenating strings to form other strings, and using
strings in multiple contexts), they result in code that
is difficult to localize.
- Steer clear of coding assumptions that are based on a
single language (for example, that characters are always
8 bits, that the code page is always Latin 1 ANSI, or
that the text stream is always left-to-right). In
particular, use caution when optimizing code for case
mapping, string comparison, and other string parsing.
- Make sure that English-language products properly handle
accented characters and run correctly on all localized
editions of Windows.
- Take advantage of internationalization information
provided by the Windows operating system instead of
carrying proprietary data and algorithms in your code.
- Help translators work more efficiently by using comments
to document strings and by allowing translators to
compile and check their work.
- Test international functionality early in the development
cycle. Do not postpone fixing international-related bugs
until after the domestic product is completed.