Planning and designing a software project that is world-ready will require foresight and an ability to see the big global picture. As you plan and take steps to create a single-binary, world-ready product, educate your team about internationalization issues and hold all team members responsible for the internationalization of the product. Make sure you get international input on the product design early in the process, preferably during the specification stage. Pay attention to legal issues that might affect your ability to sell your product internationally.
Create a versatile user interface and code design that make customization easy, as some features will be necessary for some locales but not for others. As part of the globalization process, design your code to handle international issues pertaining to data input, output, display, and encoding. Be aware of accessibility issues, many of which overlap with world-readiness issues.
In addition, use one set of source-code files to create all language editions of your product. Eliminate from your design any compile dependencies such as #ifdef statements, hard-coded strings or constants, and localizable resources in header files. Never use #ifdef statements to handle cases specific to individual languages. Also, steer clear of coding assumptions that are based on a single language (for example, that words are always separated by spaces, that characters are always Latin, or that the text stream is always left-to-right).
Help translators work more efficiently by:
Finally, test international functionality early in the development cycle, and do not wait until after the domestic product is completed to fix international-related bugs. By closely following the practices discussed in this chapter, your software project-just like a carefully planned, ideal community-will reap the rewards.