Monday, November 19, 2007

Test Commonalities: Localization

Welcome to part 4 of my Test Commonalities series. In this series we discuss test areas that come up over and over again across many projects. The goal is to create a good cheat sheet so we don't have to reinvent the wheel every single time. Today: localization.

Some people can go their whole career working on English-only applications. Most of us, however, will have to deal with localization. Note that there are degrees of localization, from simple translation to full localization.

So, what are the kinds of things we need to test?
  • Translation Completeness. Are there any words still in English? Be sure to check title bars, prompts, and error messages. Also check logs, if you will have sysadmins looking at the system.
  • Spacing. Other languages often take more space. For example, "Cancel" in English is "Annullieren" in German. Better check that your button is wide enough! Check anything with space constraints - buttons, menus, tabs, field titles, field lengths.
  • Layout. In particular, some cultures prefer a right-to-left layout. For example, your logout button is typically on the upper right in the US; in Dubai that logout button is usually on the upper left. This may go so far as to reverse the entire layout of the screen.*
  • Double-byte character sets. If you're ASCII encoding everything you will have a problem. Be sure to check double-byte character sets - Kanji and Arabic are good choices. One thing to look for here is data entry; if your users enter data it may appear to go in fine but be stored incorrectly, so always be sure to read it all the way back out.
  • Declared encoding. Be sure you haven't declared your encoding as us-en. Ideally you'll declare your encoding based on the user's browser header. Barring that, be as general as possible.
Localization is a huge project for even a small app. So be sure to define how far it goes, and then allot yourself plenty of time for testing, because this is going to touch your app from UI to database.

* Watch out for what this does to your automated tests!

No comments:

Post a Comment