BayChi Seminar

Home
Up
Transliteration
Product_Support
Solaris
LISA-Article
Brazil Case Study
BayChi Seminar

What's So Special About Translating Software?

Software Internationalization and Localization as a Company-Wide Process

A presentation by Tiziana Perinotti, TGP Consulting founder.

Summary written by H.Tamler, BayCHI (Bay Area Computer Human Interface) Organization.

What's so difficult about translating software?

In response to this opening question, several language-related issues were raised:

  • Because of grammatical & semantic differences, languages can't be translated 1-to-1. For example, metaphors often can't be translated, or are especially difficult. As another example, English is non-contextual, whereas Arabic is contextual -- i.e., the same letter is written differently, depending on its context.
  • Different languages have widely different space requirements -- e.g., a German word may be much longer than its English equivalent. Also, complex Chinese characters need to be much larger than English letters. Text grows an average of 30% when translated from English.
  • Directionality differences between different writing systems -- western, middle eastern, and far eastern. For example, Semitic languages go from right to left, while Japanese and Chinese can be vertical or horizontal.
  • Other languages have different punctuation from English, lack blank spaces between words, or are not written in a straight line.
  • Cultural differences in style, approach, the meaning of images and colors, etc.

Furthermore, when you translate a document, the end result is a static object --- the translated document doesn't perform any function. In contrast, when you translate a software program, the result is active in that it can process data (text and numbers). For this reason, software translation always consists of two fundamental processes:

  1. The conversion of the application's UI (everything the user sees on the screen) into the target language
  2. The conversion of the program's logic so that it can handle the special processing requirements of the target writing system.

Given this fact, Tiziana's main thesis is that for software translation to be maximally effective and efficient, a 2-step process of internationalization and then localization must be employed. To support this, she carefully defined and distinguished between these two processes:

  • Internationalization is the process of designing and enabling a software product up front in such a way that it can support all the linguistic features of different locales. In other words, internationalization is the set of processes, procedures, tools, and technologies that facilitate the localization process.
  • Localization is the specific adaptation of an internationalized software product to a locale or multiple locales/writing systems, without the need to re-design the underlying foundation of the original product.

In other words, an internationalized software application has an English UI, but also has built-in support for all the languages/writing systems of the countries where the application will be sold.

This built-in support involves many software development issues that no translation process can resolve. For example, the standard keyboard shortcut Ctrl-C for "copy" can't be simply replicated in a language with a different word for "copy."

Some of the most important engineering guidelines for building in this support are:

  • Support character sets for all the locales where the product will be sold
  • Support double-byte for languages such as Japanese, Chinese, & Korean
  • Deal with sorting, case conversions, and arithmetic functions (the problem of "rounding" as an example of arithmetic function that needs to be redesigned to include different rounding rules used in other countries) and country conventions such as dates, times, calendars, etc.
  • Design menus, dialogs, screens, and status bars that can accommodate the translated text. This means leaving extra space for text to expand, rather than filling the screen with objects.
  • Number all error messages for easy identification and reference
  • Extract all of the graphics, text strings, and other UI objects' positions and sizes from the code, and put them into resource files from which they can be easily translated, rather than hard-coding them. Putting all items needing translation into resource files allows simple replacement of these files for each locale, without impacting functionality.

Again, all of these issues should be part of the product specification and dealt with up front, since postponing them till the time of localization is much more expensive. While this level of internationalization may somewhat compromise the quality of user interfaces in some cases, it's still more cost-effective overall. Finally, because of the level of commitment needed to do internationalization effectively, it needs to be a company-wide effort.

What are the ultimate benefits of doing internationalization prior to any translation?

  1. Shorter time to market: The localization process requires only the translation of the user interface, thereby avoiding repeated development and QA cycles for each localized version. Localized products can be released right after the US version ships, and you can release the internationalized English version everywhere in the world where a fully translated product is not necessary.
  2. Maintenance: It's less expensive and easier to maintain one set of source code than multiple sets for each locale.
  3. Revenue: The earlier you can release localized products after the date when the US product is shipped, the more you can exploit the initial sales spike which is typical of any successful product launch.

Companies which fail to internationalize, and hence take longer to localize, miss this window of opportunity for maximizing early sales, and lose substantial amounts of revenue. Unfortunately, there are still many companies, from startups to large corporations, that are unclear on the benefits of internationalizing their products.