Skip to content

Why Internationalize Your Code Base

It is a well known fact that English is no longer the universal language for reaching an Internet audience. Statistics show that although English is still the first language used on the Internet, it is now the primary spoken language for only about 30% of Internet users around the globe. English is also among the languages that has shown the slowest growth on the Internet since 2000. While there are around 2.5 times more English Internet users in 2009 than in 2000, Chinese and Spanish Internet users have increased 9 and 6 times respectively over the same period of time.

A portion of the 70% of non-English users on the Internet may also speak English as a second language. This percentage of non-English users who know English as a second language will actually reduce while Internet penetration across other languages continues to grow.

As a result of these trends, many companies have already invested time and money to localize their products and websites into other languages or are planning to do so in the near future. This leads to a critical question:

“What is the best way to adapt and translate my existing English based application or website into other languages?”

To effectively answer this question, it is necessary to introduce two concepts: Localization and Internationalization. According to the World Wide Web Consortium (W3C):

Localization (l10n)

Is the adaptation of a product, application or document content to meet the language, cultural and other requirements of the specific target market (a “locale”).

Internationalization (i18n)

Is the design and development or modification of a product, application or document content that enables easy localization for target audiences that vary in culture, region, or language.

The best way to translate or localize an application/website is to follow a 2-step process:

  1. internationalize the application first and then
  2. localize the application into the desired languages (locales).

Unfortunately, most translation and localization customers do not follow this path; the majority skip the first step and just try to localize their products with no prior preparation. On the surface, this choice might appear to save time and money, but in the long run the result is quite the opposite. Internationalization dramatically saves time and money by having key tasks performed just once, which reduces the effort to localize an application into other languages.

Benefits of Internationalization

Internationalization’s key concept is to convert your locale-dependent application, which might have been developed for English or any other language, into a core, locale-neutral application and a collection of satellite locale-dependent components (often referred to as resource files). Use of this method will make your code application completely independent of the locale; it can be shared between all localized versions.

Common Internationalization Issues

This new locale-neutral application will need to accommodate and resolve certain issues that are usually present in any locale-centric application. There are many of these internationalization issues; several common examples are listed below.

Locale Implementation:

kandinsky

The application must have a locale layer that allows the user to select the locale that should display at any given time. Also, many applications, and especially web-based applications, will try to detect the best locale for each particular user and select it as a default option. The locale layer will be responsible for storing the selected locale for the rest of the application layers.

Encoding:

When any application needs to store or retrieve content from any type of media (disk, memory, etc) it needs to use a specific encoding for that task. An application that is targeted for any locale must use an encoding that will support any possible writing script or language. The most common encoding in use today is Unicode.

Content Externalization:

As described above, any type of content that might change based on the locale, such as text, images or media, must be externalized from the core application and put into external resource files. When the application is localized, the core application does not need to be modified for each locale, but only the resource files corresponding to those locales.

Locale Sensitive Formatting:

Cyrillic

locale has specific rules to display numbers, currency and date/times. Dates in the USA are displayed in a different way than in the UK, even though the language is English in both locales. An application that is correctly internationalized and locale-neutral should accommodate this situation and display locale sensitive information in the way users expect for their specific locale at any given time. Most modern programming languages have libraries in their frameworks to help developers achieve this goal with minimal effort.

User Interface Layout Localization:

Some languages display text from left-to-right while others (such as Arabic layout) display text from right-to-left. Also, some languages need more space to express the same message: English to German text translation might expand the number of text characters by 33% or more. A locale-independent application must also accommodate these issues and dynamically modify the user interface (UI) to present text and labels to the user in a clear and well-organized fashion.

Application Localization Goals

In summary, adapting an application for a specific language and locale involves more than just translating visible text. It is a much more complex process and, ideally, the steps described in this article should be considered from the first day of application design and development. Having all internationalization issues in mind while designing an application will dramatically save time and money when that application is localized into other languages.

Although more applications are now being developed with internationalization in mind, all too many of them are still being developed with no foundation for internationalization. Fortunately, there is some good news for developers in the later category: many tools have been developed to help localization engineers and programmers test and fix the types of issues described in this article. Tools of this nature facilitate this highly complex process, especially for repetitive tasks like extracting content from an application.