Part I: Introduction
Part I explores what it means to create and design world-ready software for internationalized products and offers vital planning tips. Chapter 1, "Understanding Internationalization," introduces you to two key processes related to creating internationalized products: world-readiness and localization, while breaking down world-readiness further into globalization and localizability. Other concepts such as locales, locale awareness, and localization are also examined. Finally, Chapter 1 outlines the broader issues you'll need to consider when shipping international products.
In Chapter 2, "Designing a World-Ready Program," you'll learn about the steps inherent to designing software for world-readiness. More specifically, the chapter highlights the issues you need to consider when writing specifications, when customizing features, as well as when designing the user interface and code for a single-binary, world-ready program. Chapter 2 also explores strategies for setting up a project team and a development environment, and gives tips regarding testing and translation issues. In short, Part I provides an overview of fundamental concepts essential to creating internationalized products, with an emphasis on developing world-ready software. These concepts are the backbone for many of the technical details that appear later in the book.
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):
- World-readiness. This facet covers generic coding and design issues and comprises two major areas-globalization and localizability. (See "World-Readiness" later in this chapter for information on globalization and localizability.)
- Localization. This involves translating and customizing a product for a specific market.
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.