Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Programming for the world
O’Donnell S., Prentice-Hall, Inc., Upper Saddle River, NJ, 1994. Type: Book (9780137221905)
Date Reviewed: Mar 1 1995

The US software market is so large and diverse that most American programmers have never had to think about what it would take to make their programs usable in another country. Nevertheless, as software for the global marketplace becomes more and more important, many programmers are having to learn how to internationalize their programs--to adapt them for use in other countries. Internationalization entails a daunting variety of difficult, subtle, and surprising adjustments to make and simplifying assumptions to discard.

We assume all letters lie between A and Z. That assumption is not valid for most European languages, let alone those languages that use non-Latin scripts. We assume a byte has enough room to hold any character. This is not true for  Oriental  languages. Hebrew is written right-to-left, not left-to-right, although numbers within Hebrew text are still written left-to-right. Some Asian languages use ideographic scripts that have thousands of different characters.

These and other differences among scripts and languages affect just about every operation associated with text processing--collation, sorting, character classification, searching, and parsing, to cite the most important. Other cultural differences also affect program processing: conventions for writing dates, amounts of money, and people’s names, for instance.

Beyond these differences in processing lie the adaptations for different languages that affect program messages and interactions. Menu layout can be affected when short phrases in one language are transformed into long phrases in another. Documentation obviously has to be translated into the language of each country where a program will be sold in a national version.

All these issues and more are covered in O’Donnell’s book. Her treatment of them is authoritative, well written, and useful.

Chapter 1 discusses cultural biases and their consequences for software and outlines a new programming model better adapted for internationalization, which she calls I18N. Chapter 2 revisits the linguistic assumptions we make so easily.

The obvious way to adapt software for use in a different country is to customize it explicitly, either by replacing support for the old language with support for the new or by adding the new support without removing the old. Chapter 3 discusses this approach and contrasts it with a better one: using generalized internationalization functions in the program and then specifying a locale for each national version.

Chapter 4 describes the great variety of code sets and methods for encoding characters. Even the question of what a character is is not straightforward--is an “o” with an umlaut a single character (umlauted “o”) or a combination of two characters, the “o” and the umlaut? The chapter covers these and many other encoding problems for both European scripts and the ideographic scripts used in Pacific Rim countries.

Chapter 5 introduces the concept of a locale--a collection of rules and text specific to a language and geographical area. Locales are a feature of the ISO definition of the C programming language. A program uses locales by calling generalized C functions whose definitions in a particular environment depend on the locale defined for that environment.

Chapter 6 describes methods of writing C code to support multibyte and wide characters. Multibyte characters have a variable number of bytes, while wide characters have a fixed number of bytes. Multibyte-character data are more compact, but wide-character data are easier to process. Chapter7 describes the input and output requirements for generalized text encodings, including fonts, display and editing considerations, and printing. Chapter 8 deals with other processing issues, such as character classification, sorting, and the proper formatting of numbers, dates, times, and monetary quantities.

Chapter 9 discusses the adaptation of program messages for internationalization. Chapter 10, which is quite brief, discusses entities such as programming language keywords that are better left in their original American forms. Chapter11 explains how documentation should be adapted for internationalization, while chapter 12 discusses the vexing and not totally solved problems of multilingual and distributed computing. It is hard enough to create Swedish and Japanese versions of a program, but what is one to do when a program must be able to handle Swedish and Japanese at once? Or when part of the processing of a Swedish version is being farmed out to a computer with a Japanese locale?

This book is a useful, comprehensive treatment of its subject, and is worth having for anyone who must deal with internationalizing a program. My only criticisms of its writing style are that the author has an occasional tendency to belabor the obvious, and a couple of minor observations are off the mark. For instance, in discussing sorting, she remarks that the usual computer science techniques for sorting do not really apply to internationalized data. This statement is false: internationalization affects only the rules for comparing pairs of data items, while the classic sorting methods assume the existence of a comparison function and look at how that function can be used in a complete sort.

My major criticism of the book as a whole is that it implicitly makes the parochial assumption that the only programming language that counts is C (and maybe C++ as well) and the only operating system that counts is UNIX. For a book whose overarching theme is universality, this weakness is particularly ironic. O’Donnell never discusses how internationalization might apply, say, to programs written in Ada or COBOL or to any of the popular DOS and Windows word processing, database, and spreadsheet programs. Given the broad usage of those programs worldwide and the growth of add-ons that have led to applications written in their macro languages, the omission is deeply disappointing. Despite these omissions, however, this book is thoroughly worthwhile.

Reviewer:  P. Abrahams Review #: CR118267
Bookmark and Share
 
Transborder Data Flow (K.4.1 ... )
 
 
Language Translation (J.5 ... )
 
 
Software Development (K.6.3 ... )
 
 
Standards (D.2.3 ... )
 
Would you recommend this review?
yes
no
Other reviews under "Transborder Data Flow": Date
International technical communication
Hoft N., John Wiley & Sons, Inc., New York, NY, 1995. Type: Book (9780471037439)
Dec 1 1995
Information warfare in the trenches
Lathrop S., Conti G., Ragsdale D. In Security education and critical infrastructures. Norwell, MA: Kluwer Academic Publishers, 2003. Type: Book Chapter
Dec 4 2003
Perspectives and policies on ICT in society
Berleur J., Avgerou C., Springer-Verlag New York, Inc., Secaucus, NJ, 2005.  290, Type: Book (9780387255873)
Apr 12 2006

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy