Foreword

Since its inception, Microsoft has realized the importance of the international market in software development projects. We entered the Japanese market in 1978 and established our first European office in 1982. In May 1983, we completed and licensed our first double-byte character set (DBCS) operating system with the kanji releases of MS-DOS 2.1 for the IBM 5550 and the NEC PC-9801. Five months later, Microsoft shipped a European edition of MS-DOS. The following year we were already expanding further into Asia with a hangul (Korean) release of MS-DOS.

Our research into these new markets revealed that many international-language issues could be handled as algorithms and APIs that any good developer could understand and use—key parts of the international engineering process, then, could be considered core code. This awareness greatly changed the way that Microsoft approached the internationalization process, as many coding issues could be resolved in the initial planning stages of a product. Internationalization now extended well beyond localization.

During this time, we internally circulated a confidential document that described international design concepts we wanted our software development staff to know. As technology became more sophisticated and the demand for information about globalization strategies escalated, the document grew in popularity and was revised and expanded—evidence of the momentum building in the software industry. Clearly, communicating our knowledge beyond Microsoft's development staff would be of great value. So that all developers could have access to this information, we wrote this book based on the concept and intent of the original document.

Microsoft Windows brought device independence to the PC and offered application developers a way to address a wide variety of hardware peripherals through a common programming interface. International developers benefited because they could unify different international hardware platform standards, and users benefited because they could more efficiently and conveniently handle international-language requirements through a graphical user interface. With each new release of Windows, Microsoft has brought the software developer closer to the goal of creating products that can be used in any number of countries, regardless of the developer's physical location. Windows 3.1 was the first operating system we simultaneously shipped in several Western European languages, and that product was also extended for language requirements in Asia, Central and Eastern Europe, and the Middle East.

When we created our first 32-bit operating system, we integrated international support in the initial design. The first release of Windows NT, in 1993, included an unprecedented range of APIs for international locale settings, offered developers a choice between a local code page and Unicode, and was simultaneously available in several localized editions. We have also been busy rewriting Windows itself. Windows 95 was designed for an aggressive international ship schedule involving 30 language releases—ranging from 0 to 6 months—all connected to one very large project with many new international features. The work continues as we expand our list of localized operating systems and add additional international capabilities to our future operating systems.

Independent software vendors (ISVs) who target Microsoft Windows will benefit from Windows' rapid expansion into international markets. We have seen rewarding examples of growth in which ISVs have adopted software design practices that anticipate and accommodate international language requirements. We have also seen cases in which customers have switched from one company's product to another company's product based on how that company handled international engineering issues.

We welcome you to explore and implement international software design strategies in the planning of code using the comprehensive information contained in this book, and we urge you to discover new opportunities around the world.

Ken Fowles
Manager, Developer Relations Group
Microsoft Corporation