Chapter 1: Understanding Internationalization
Developing internationalized products is a continuous balancing act. Developers and their managers often grossly underestimate the level of effort and attention to detail required to create either a world-ready, single-binary application ready for use in many different markets, or high-quality, foreign-language editions of a product. If you are a developer, make sure your management understands what is involved. Familiarity with the kinds of problems that arise will help you make decisions at the beginning of your product cycle, saving you time and money-not to mention grief.
The process of creating internationalized software has two facets (see Figure 1-1):
For example, using the National Language Support (NLS) supplied by the Microsoft Win32 application programming interface (API) is a world-readiness step, whereas modifying the user interface (UI) elements, translating text, and standardizing terminology are localization steps. Developers write code, so they tend to focus primarily on world-readiness issues. But because code and feature design affect how a product is translated and customized, developers must also understand basic localization concepts.
Figure 1.1 - Software internationalization process.
The first two chapters of this book, which comprise Part I, "Introduction," provide a helpful introduction to software internationalization on Microsoft Windows platforms. They discuss general concepts and techniques for creating world-ready applications, define many of the terms used throughout the rest of the book, and provide a framework for later chapters, which cover specific technical details about using Windows-based tools and Win32 API functions. Part II, "Globalization," covers the many steps needed to globalize a product, from handling many different languages and scripts to displaying data in a way that's appropriate to a specific culture. Part III,"Localizability," explains various localizability techniques developers can use in designing and writing their software to make the localization process easier and more cost-effective for the localizer. Part IV, "Localization," meanwhile, provides a background on the localization process itself.
Part V, "Testing," gives development teams insight into the steps necessary to test world-ready software. It also shows how to test the product's localizability without having to translate it. Part VI, "Tools and Technologies," gives an overview of the many components Microsoft offers designers and developers in the creation of world-ready software. Finally, Part VII, "Appendixes," provides references for many aspects of developing world-ready products. Some examples of these helpful resources include international keyboard layouts, selected international punctuation symbols, Win32 country-specific and language-specific information, as well as international address formats.
As an additional resource, included with this book is a companion CD-ROM containing sample code, Windows code pages, international keyboard layouts, double-byte character set (DBCS)/Unicode mapping tables, along with other ancillary material. The CD also contains an electronic version of this book.