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.