Book Review - .NET Internationalization

A Roadmap for the Internationalization Process

A Roadmap for the Internationalization Process
This chapter sets the scene, explaining that internationalisation isn’t just about translating all the text (which is the simplistic view). Guy compares technical work, including internationalisation, to the false summits that a mountain climber encounters – as one technical plateau is reached, another is discovered.

It doesn’t take the author long to mention internationalisation buzzwords: Unicode, mirroring, cultures, right-to-left. Indeed, no time is wasted explaining that, if you’re serious about internationalisation, using a Unicode version of Windows is highly recommended.

A discussion about .NET 1.1 and 2.0 explains that some of the “good stuff” in .NET 2.0 can be retrofitted into .NET 1.1. As one might expect, newer in this case is better as the author extols the virtues of Visual Studio 2005 and .NET 2.0. He cites greater functionality for typed resources in the IDE, property reflecting in WinForms and repeats the fact that ASP.NET built using Visual Studio 2005 now supports localisation.

Generally speaking, Latin languages, such as French, German and Spanish, are considerably easier to work with than East Asian languages such as Chinese, Japanese and Korean (CJK). He provides an explanation of how the operating system might deal with rendering right-to-left languages, using mirroring and font-linking to find characters (glyphs) as used in the CJK languages. .NET 2.0 support for custom cultures is touched on, yet another indication that you should be using .NET 2.0 over .NET 1.1. Given the complexity of custom cultures, the author recommends that you use virtualisation (VirtualPC) in order to test your applications.

Resource formats (strings, bitmaps, icons, and anything else in your application that needs to be localised) are discussed albeit briefly. The virtues of using Visual Studio 2003 or 2005 for resource editing are pushed home once again.

Languages and cultural formatting discusses the subtleties of intra-language variation, e.g. the differences between US English and British/UK English. Similar differences exist in other languages, e.g. French in Canada differs from French in France.

Windows Forms Applications outlines some of the problems you might come up against if you have used .NET Framework dialog controls, such as MessageBox. These controls use resources from the operating system and the .NET Framework Language packs – you could end up with an application that is part French and part Spanish for example!

ASP.NET Applications provides a further reminder that we really should be using .NET 2.0 and Visual Studio 2005. The author firms home the fact that internationalising an ASP.NET 1.1 application is possible, but that it involves a lot of manual effort and enjoys little tool support. There’s an interesting discussion about the relative merits of absolute versus relative positioning of controls, especially if you plan to use right-to-left languages such as Arabic, Hebrew and Persian [Farsi].

Another “isation” is introduced: Globalisation. The author presents a non-exhaustive collection of cultural misconceptions. For example, the Windows Program Files folder isn’t always known as “Program Files” on non-English versions of Windows. This was an interesting topic and one that got me thinking – cultural misconceptions are so often ignored: how often have you made do with “mm/dd/yy” date formats? Luckily, the .NET Framework classes (not dialog controls) understand such things and do a pretty good job sorting them out.

Localisation brings with it further decisions that you must consider. For example, once your application has been localised into, say, French, what language do you want your exceptions thrown in? It’s likely that they’ll be read using a different language. The author describes the problems of automating the translation process, citing examples such as hotkey assignment as being a significant problem – the most logical key may not be the key that gets assigned.

Machine translation is touched on; the need for a human to review the automated translation should go without being said, however the author, rightly so, chooses to make sure by reminding us of this need. Human verification is a form of testing and is a topic that the author firmly believes in. Indeed, he provides a brief discussion here and a full chapter on the topic of static code analysis using FxCop – a tool that uses rules to enforce design decisions and application choices/decisions.

This 13-page chapter was a good introduction to the concepts behind internationalisation. It sets the scene for the rest of the book rather well, using the occasional forward reference to chapters, thus indicating that there’s more detail available later on in the book.

You might also like...

Comments

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Before software should be reusable, it should be usable.” - Ralph Johnson