Internationalization and localization

From Wikipedia, the free encyclopedia

Internationalization and localization[1] are means of adapting products such as publications, hardware or software for non-native environments, especially other nations and cultures.

Contents

[edit] Scope

Focal points of internationalization and localization efforts include:

  • Language
    • Computer-encoded text
      • Alphabets/scripts; different systems of numerals; left-to-right script vs. right-to-left scripts. Most recent systems use the Unicode to solve many of these character encoding problems.
    • Graphical representations of text (printed materials, online images containing text)
    • Spoken (Audio)
    • sub-titles to video
  • Date/time format, including use of different calendars
  • Formatting of numbers (decimal points, positioning of separators, character used as separator)
  • Time zones (UTC in internationalized environments)
  • Currency
  • Images and colors: issues of comprehensibility and cultural appropriateness
  • Names and titles
  • Government assigned numbers (such as the Social Security number in the US, National Insurance number in the UK) and passports
  • Telephone numbers, addresses and international postal codes
  • Weights and measures
  • Paper sizes

The distinction between internationalization and localization is subtle but important. Internationalization is the adaptation of products for potential use virtually everywhere, while localization is the addition of special features for use in a specific locale. The processes are complementary, and must be combined to lead to the objective of a system that works globally. Subjects unique to localization include:

[edit] Difficulties

In making software products, internationalization and localization pose challenging tasks for developers, particularly if the software is not designed from the beginning with these concerns in mind. A common practice is to separate textual data and other environment-dependent resources from the program code. Thus, supporting a different environment, ideally, only requires change in those separate resources without code modification; greatly simplifying the task.

The development team needs someone who understands foreign languages and cultures and has a technical background; such a person may be difficult to find. Moreover, the duplication of resources could be a maintenance nightmare. For instance, if a message displayed to the user in one of several languages is modified, all of the translated versions must be changed. Software libraries that aid this task are available, such as gettext.

Since open source software can generally be freely modified and redistributed, it is more apt to internationalization. Most proprietary software is only available in languages considered to be economically viable whereas the KDE project, for example, has been translated into over 70 languages.

[edit] Methods

The current prevailing practice is for applications to place text in resource strings which are loaded during program execution as needed. These strings, stored in resource files, are relatively easy to translate. Programs are often built to reference resource libraries depending on the selected locale data.

Thus to get an application to support multiple languages one would design the application to select the relevant language resource file at runtime. Resource files are translated to the required languages. This method tends to be application-specific and at best, vendor-specific. The code required to manage date entry verification and many other locale-sensitive data types also must support differing locale requirements. Modern development systems and operating systems include sophisticated libraries for international support of these types. However, many development environments still lack full Unicode support, which drastically hampers the translation effort, especially to East Asian languages.

[edit] Locale

Main article: Locale

In computing, locale is a set of parameters that defines the user's language, country and any special variant preferences that the user wants to see in their user interface. Usually a locale identifier consists of at least a language identifier and a region identifier.

[edit] Relation to globalization

Internationalization is sometimes used interchangeably with globalization to refer to economic and cultural effects of an increasingly interconnected world.

While internationalization most commonly refers to the addition of a framework for multiple language support, especially in software, it sometimes refers to the process whereby something (a corporation, idea, highway, war, etc.) comes to affect multiple nations. This usage is rare; globalization is preferred. Because of globalization, many companies and products are found in multiple countries worldwide, giving rise to increasing localization requirements.

Localization may describe production of goods nearer to end users to reduce environmental and other external costs of globalization.

[edit] Relation to localization

In software development, after a product has been internationalized, "localization" refers to the process of making it ready for a specific market.

So you can refer to a product as being "internationalized" if it has been developed to meet most of the needs of an international community, but not yet customized to a specific region. The customization to a specific region is called "localization".

[edit] Software localization

Software localization is a process of translating software user interfaces from one language to another and adapting it to suit a foreign culture. This process is labor-intensive and often requires significant efforts from development teams. There are tools that can simplify the localization process. A lot of these projects get outsourced to specialized companies to cut costs.

Software localization can also refer to adapting software from one culture to another. During localization, some references to history or culture are replaced with an equivalent native reference which ideally does not change the meaning of the statement.

In console gaming, localization also describes the controversial process of designing consoles and cartridges so as to make cartridges unplayable outside of the geographic regions for which they were intended. For example, a European cartridge might not function in a North American machine. Additionally, it entails the change of dialogue and plot elements to better suit the country's audience. One reason for doing this is local censorship variations; the rules of censorship for Nintendo of America may be different than those in Japan.

[edit] Alternative names

Internationalization is often abbreviated as I18N (or i18n or I18n) where the number 18 refers to the number of letters omitted (nternationalizatio) [1]. Localization is often abbreviated L10n or l10n in the same manner. (The most common forms are i18n and L10n, respectively. These forms won out because many fonts do not readily distinguish uppercase "I" and lowercase "l", but lowercase "i" and uppercase "L" are always clear.) These abbreviations also avoid picking one spelling (internationalisation vs. internationalization, etc.) over the other. Both notions are sometimes collectively termed globalization (g11n), but that word has a more common meaning. Also seen in some circles, but less commonly, are "p13n" for personalization, "m17n" for multilingualization, and "r3h" for reach, as in the reach of a website across countries and markets. A related concept is a11y (accessibility), which is concerned with adapting products for people with disabilities or age-related limitations.

[edit] Notes

  1. ^ In some regions outside of the United States, the spelling variants internationalisation and localisation are more common.

[edit] Books

  • .NET Internationalization: The Developer's Guide to Building Global Windows and Web Applications, Guy Smith-Ferrier, Addison-Wesley Professional, 7 August 2006. ISBN 0321341384

[edit] See also

[edit] External links

[edit] Wikibooks