Preface

In the late 1980s, Microsoft's International Product Group (IPG), the team responsible for creating most of the localized versions of Microsoft products, distributed a booklet internally that contained guidelines for writing code that accommodated the needs of international developers and users. The International Handbook for Software Design, as it was called, was revised over the years, expanding in scope to cover several operating systems and most of the Microsoft localization process—including development, design, testing, translation, documentation, packaging, computer-based tutorials, and help files.

Although Microsoft creates multiple-language versions of dozens of software products each year, its methods for doing so haven't always been enlightened. For IPG engineers, the first internationalization efforts involved inheriting finished product sources, fixing "internationally broken" designs, attempting to alter old code that no one remembered, enlarging buffers, removing hard-coded strings, and generally campaigning (begging, threatening) for more international-aware development practices. The International Handbook was distributed throughout the company as part of this awareness campaign.

IPG worked for a number of years to improve the efficiency and lower the cost of creating international versions of Microsoft products. As a result of steady evolution, Microsoft gradually disbanded IPG starting in late 1991, and its employees joined the teams responsible for producing the English-language products. The company felt that it made better sense to have a single team committed to creating all language versions of a product rather than one domestic team and one international team, each reporting to different chains of command. Following this approach, the teams creating Microsoft Windows NT 3.x and Microsoft Windows 95 worked to release high-quality localized versions of the operating system as quickly and efficiently as possible without compromising the United States product.

As Microsoft was solidifying its internationalization methods, Windows was becoming an international phenomenon. Companies that sought information on creating localized applications for Windows began to ask for copies of Microsoft's internal handbook, which documented several years of Microsoft's collective internationalization experience. In response, Microsoft revised the handbook and made it widely available via the Microsoft Developer Network CD-ROM. By 1994, with two new Windows operating systems on the horizon, it was clear the book needed updating. The book you are holding is a complete revision of the internal handbook and is designed to help developers create 32-bit applications for Windows.

There are many steps to creating an international product, and many pieces to the finished job. This book focuses on development strategies. It doesn't cover documentation, translation, help files, legalities, management, marketing, or distribution, except as they affect software development. The book is intended primarily for programmers who already have some knowledge of Windows-based coding techniques and the Microsoft Visual C/C++ programming language, and for managers who want an overview of internationalization.

Operating system technology constantly evolves. National standards also change. The best use of this handbook is as a companion volume to the Win32 Programmer's Reference, not as the last word. Some information in the appendixes, such as address formats and paper sizes, is provided to show you the kinds of defaults that change from country to country. Always double-check this information when applying it to your product. The code in this book was compiled and tested in Visual C++ on Microsoft Windows NTAS, but the principles behind the code apply to any development environment. If you have any input for future editions of this book, please send it to the Internet address ibook@microsoft.com.

This book was completed with valuable assistance from a number of people. I would like to thank the following reviewers and contributors: Alice Gu, Alison Gilligan, Andrzej Turski, Ben Ting, B. J. Bahk, Chris Weight, David Michael Silver, David Wilcox, Derek Haynes, Emerick Fernando, Eric W. Johnson, F. Avery Bishop, Floyd Rogers, Greg Lowney, Heinz Strobl, Jeff Bell, John Windsor, Jonathan Kagle, Jun Tang, Ken Fowles, Ken Whistler, Lori Hoerth, Michael Leu, Michel Suignard, Nancy Cluts, Peter Engrav, Rebecca Engrav, Ron Murray, Thomas O'Hara, Beom Seok Oh, Jia-jium Lee, Yutaka Suzue, Yutaka Nakajima, the Microsoft Windows 95 team, and the team working on the next version of Windows NT ("Cairo").

Special thanks to Asmus Freytag, technical consultant; and Catherine Wissink, K. D. Chang, and the staff of the Microsoft WPGI Lingua Team, who acted as consulting linguists: Liesbeth van Bijsterveld, Licia Corbolante, Sergio Pelino, Annalisa Gironi, Guadalupe Cordero, Michael McCurdy, Avelino Lopez-Garcia, Alain Dautricourt, Jerome Hingrat, Asa Karlsson, Tuula Nieminen, Hanne Smadahl, Palle Peterson, Alexander Ovstrovsky, Krisztina Searson, Stan Blaszka, Lubomir Skarda, Johan van Trappen, and Caroline den Os.

Finally, I would like to thank Andy Himes, Helen Custer, Johan Sundstrom, Jonathan King, Sabina Nawaz, Teri Schiele, the Microsoft Developer Relations Group, and the people at Microsoft Press who worked so hard on this book: Dean Holmes, Kurt Meyer, Victoria Thulman, Elisabeth Thébaud, Sally Anderson, Ron Lamb, Bill Teel, David Mighell, David Holter, John Callan, and all supporting editorial and production staff.

Nadine Kano

Palo Alto, California