Developing International Software
Buy it now from Amazon
Book Objective:
The main aim behind the information in this book is to inform a developer of the techniques that need to be used, and points to be kept in mind, while writing software that will be used by people in different geographical locations.
It explains what steps need to be taken in order to localize applications, what culture-specific and legal issues might come up, and what coding practices need to be followed.
Detailed Review:
The book starts of with an introduction to internationalization. Basic concepts are explained such as Locales, the difference between localization and globalization, etc. A few code snippets from a simple C application are displayed, and used for explaining what changes can be made to it in order to make it “internationalized”.
The book then moves on to introducing the user to Unicode. A few of the most common Unicode related functions and data types in the Windows SDK (Visual C++) are mentioned. Methods and commands for use in XML, HTML, ASP and .NET are also touched upon. The next chapter then explains locale and culture formatting in details. This includes stuff like formatting of dates and times, currency and numbers; and also things like string comparisons. Text input, output and display is also covered, which explains about text justification, keyboard layouts, fonts, and the edit and rich edit controls. The importance of resource files and satellite dlls, and their use in multilingual user interfaces is also explained. Mirroring is also illustrated with a few examples (mirroring is a concept where you can create user interfaces for use with different languages, without writing any additional code). As with Unicode, functions that are useful in both Visual C++ and .NET are mentioned. While going through these functions, you will realize that most of them (which you might already be using in your applications) usually take in parameters which allows the application to display and format data automatically according to the user’s chosen culture.
A couple of chapters are devoted to graphics related stuff. For example, displaying some icons might offend people in certain cultures, while some other images might be politically disturbing in some countries (for example, you might have an image displaying the world map. What should you do – display Tibet as an independent nation, or part of China? Whichever option you choose will offend one country or the other).
The 6th part of the book goes into the nitty gritty of the tools and technologies that are affected when developing international software. The topics that are discussed here are GDI+, HTML, IIS and ASP, Microsoft Office, the .NET framework, SQL Server, Microsoft Visual Studio .NET, the Unicode Script Processor (Uniscribe) XML, and the Microsoft Windows Text Services Framework (TSF). For each topic, details are given on how that particular technology can handle multiple cultures - for example, things like - HTML has an attribute which can be applied to specific tags in order to write text in the Right-To-Left direction; IIS can handle cookie parameters even if they are in Unicode format, the namespaces within .NET which contain globalization and localization related classes, functions within SQL Server for handling different character collations, etc.
The last part of the book (which makes up nearly half), is composed of various appendixes containing lookup information – things like the detailed conventions in each locale, the various code page tables, CultureInfo names and identifiers within .NET, international keyboard layouts, paper and envelopes types and sizes, etc.
My conclusion:
If you have never been exposed to the various intricacies that are involved while developing international software, then this book is for you. It will expose you to the various issues you might face, and the various points you need to keep in mind when writing international software.
However, if you have worked on software that had a need for localization and globalization related features to be implemented, then chances are you won’t learn much more by reading this book. Localization / Globalization are features which cannot be split into categories like beginner, medium or advanced – rather, they can only be split into experienced and inexperienced – either you know that a particular feature can have side effects when the entire application is running on a machine that uses a different culture, or you don’t. And if you do, then you will most probably already have been exposed to the various APIs that are mentioned in the book.
Buy it now from Amazon