Chapter 2 Designing a Global Program

People who plan ideal communities spend months and sometimes years researching, documenting, and revising their proposals. It doesn't make sense to spend years planning most commercial software projects, but the complex process of planning a city illustrates some important principles. City planners study other cities and talk to the people who live in them to determine how they should design a new community. They do this before they even dig the first hole to lay a foundation for a building or a street. After all, a city has to attract residents or building it will be a big waste of money. And business districts and neighborhoods must have room to grow. Any city budget director will tell you that having to tear down an existing high-rise or apartment complex to make room for a hospital, library, or police station is expensive.

A decision to release your program in different language editions necessarily affects the coding and user interface design decisions your team makes during the product cycle. A good underlying program design will work for most, if not all, language editions of a product. Even if you have never internationalized software, you can probably imagine some of the issues that might arise if you examine an existing program. As with any project, large or small, the golden rule for creating global software is to plan ahead. Few tasks in software development are more arduous, time-consuming, and expensive than rewriting existing code and redesigning existing features so that they will work for other languages. With a good plan, you can create software in a single effort that will accommodate multiple languages instead of just one.

The Microsoft Windows 95 team has learned this approach from experience. For example, the Chinese, Japanese, and Korean editions of Microsoft Windows 3.x have slightly different application programming interfaces (APIs) for Input Method Editors (IMEs), the modules that handle the input of ideographic characters. (See Chapter 7.) The differences make it hard for developers to create a single executable that will work on all Far East language editions of Windows 3.x. Windows 95, in contrast, has a single unified IME API for all Far East editions of the operating system. Developers who wrote applications for Far East editions of Windows 3.x are no doubt overjoyed at this improvement.

This chapter describes the issues you need to consider when designing the code and user interface for a global program. It also describes strategies for setting up a project team and a development environment. Familiarize yourself with the concepts presented in this chapter before you begin your next software project.