Software internationalization is rapidly becoming a programming discipline in its own right, having its own body of knowledge and techniques, and its own group of experts and sources of information. In an expanding global market, the internationalization of software is a growth industry, one that will continue to grow for many years to come.
All software intended for sale outside the US must be internationalized and localized. Foreign purchasers of software are no longer satisfied with software that supports only English. The current attempts to standardize software internationalization are designed, primarily, to minimize the cost of supporting languages other than English.
The most important internationalization features have been standardized by ISO, ANSI-C, POSIX.1, POSIX.2, and X/Open. Software vendors are also contributing to the standardization effort by participating in the standards bodies and through the introduction of de facto standards. The OS vendors are typical of these software vendors. Unicode, Inc. is a non-typical example.
Many internationalization features have not yet been standardized and other features are explicitly left as implementation-defined. No one has yet published guidelines for developers that describe how best to convert software that is not internationalized into software that is, though most vendors have made attempts at this.
I cannot stress enough just how important the standards documents are for developers of internationalized software. They are well written, complete, concise, accurate, and helpful in explaining the concepts. Also important are the man pages of vendors, though these assume that the reader is very familiar with the standards documents.
Most of the remainder of this tutorial is an ordered collection of definitions and facts that serve to present and explain the subject of internationalization. The order is important. Every attempt has been made to reduce forward referencing of concepts as much as possible. The concepts are not sorted lexicographically for pedagogical reasons.
The reader should be aware that concepts are not repeated. The initial presentation of a concept is often the only one and is intended to present all that is needed to understand that concept. Of course, the definition of a concept will always be made in terms of other concepts. The virtue of this approach is that the entire document can be read in a very short time and contains everything the reader needs to know about the subject. The disadvantage is the possibility of ambiguity.