In computing, internationalization and localization are means of adapting computer software to
different languages, regional differences and technical requirements of a target market.
Internationalization is the process of designing a software application so that it can potentially
be adapted to various languages and regions without engineering changes.
Localization is the process of adapting internationalized software for a specific region or language
by adding locale-specific components and translating text.
Localization uses the infrastructure or flexibility provided by internationalization.
The terms are frequently abbreviated to the numeronyms i18n and L10n respectively, due
to the length of the words.
Some companies, like IBM and Sun Microsystems, use the term "globalization" for the combination
of internationalization and localization.
Also known as "glocalization".
Microsoft defines Internationalization as a combination of World-Readiness and localization.
World-Readiness is a developer task, which enables a product to be used with multiple
scripts and cultures and separating user interface resources in a localizable format.
This concept is also known as NLS.
Scope
The main task of language localization is translation.
This may involve: For film, video, and audio, translation of
spoken words or music lyrics, often using either dubbing or subtitles
Text translation for printed materials, digital media
Potentially altering images and logos containing text to contain translations or generic icons
Different translation length and differences in character sizes can cause layouts that
work well in one language to work poorly in others.
Consideration of differences in dialect, register or variety
Writing conventions like: Formatting of numbers
Date and time format, possibly including use of different calendars
Computer software can encounter differences above and beyond straightforward translation
of words and phrases, because computer programs can generate content dynamically.
These differences may need to be taken into account by the internationalization process
in preparation for translation.
Examples include: Different "scripts" in different writing systems
use different characters - a different set of letters, syllograms, logograms, or symbols.
Modern system use the Unicode standard to represent many different languages with a
single character encoding.
Writing direction is left to right in most European languages, right-to-left in Hebrew
and Arabic, and optionally vertical in some Asian languages.
Complex text layout, for languages where characters change shape depending on context.
Capitalization exists in some scripts and not in others.
Different languages and writing systems have different text sorting rules
Different languages have different numeral systems, which might need to be supported
if Western Arabic numerals are not used Different languages have different pluralization
rules, which can complicate programs that dynamically display numerical content.
Different languages use different punctuation, as in English, or guillemets, as in French).
Keyboard shortcuts can only make use of buttons actually on the keyboard layout which is being
localized for.
If a shortcut corresponds to a word in a particular language, it may need to be changed.
Different countries have different economic conventions, including variations in:
Paper sizes Broadcast television systems and popular storage
media Telephone number format
Postal address format, postal codes, and choice of delivery services
Currency - ISO 4217 codes are often used for internationalization
System of measurement Battery sizes
Voltage and current standards Specific third-party services, such as online
maps, weather reports, or payment service providers, might not be available worldwide
from the same carriers, or at all.
Time zones vary across the world, and this must be taken into account if a product originally
only interacted with people in a single time zone.
For internationalization, UTC is often used internally and then converted into a local
time zone for display purposes.
Different countries have different governments, meaning:
Regulatory compliance may require customization for a particular jurisdiction, or a change
to the product as a whole, such as: Privacy law compliance
Additional disclaimers on a web site or packaging Different consumer labelling requirements
Compliance with export restrictions and regulations on encryption
Compliance with an Internet censorship regime or subpoena procedures
Requirements for accessibility Collecting different taxes, such as sales
tax, value added tax, or customs duties Sensitivity to different political issues,
like geographical naming disputes and disputed borders shown on maps
Government assigned numbers have different formats
Localization also may take into account differences in culture, such as:
Local holidays Personal name and title conventions
Aesthetics Comprehensibility and cultural appropriateness
of images and color symbolism Ethnicity, clothing, and socioeconomic status
of people and architecture of locations pictured Local customs and conventions, such as social
taboos, popular local religions, or superstitions such as blood types in Japanese culture vs.
astrological sign in other cultures Business process for internationalizing software
In order to internationalize a product, it is important to look at a variety of markets
that your product will foreseeably enter.
Details such as field length for street addresses, unique format for the address, ability to
make the zip code field optional to address countries that do not have zip codes or the
state field for countries that do not have states, plus the introduction of new registration
flows that adhere to local laws are just some of the examples that make internationalization
a complex project.
A broader approach takes into account cultural factors regarding for example the adaptation
of the business process logic or the inclusion of individual cultural aspects.
Coding practice 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.
One software library that aids this is gettext.
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.
Difficulties While translating existing text to other languages
may seem easy, it is more difficult to maintain the parallel versions of texts throughout
the life of the product.
For instance, if a message displayed to the user is modified, all of the translated versions
must be changed.
This in turn results in a somewhat longer development cycle.
Many localization issues require more profound changes in the software than text translation.
For example, OpenOffice.org achieves this with compilation switches.
To some degree, the development team needs someone who understands foreign languages
and cultures and has a technical background.
In large societies with one dominant language/culture, it may be difficult to find such a person.
One example of the pitfalls of localization is the attempt made by Microsoft to keep some
keyboard shortcuts significant in local languages.
This has resulted in some programs in the Italian version of Microsoft Office using
"CTRL + S" as a replacement for "CTRL + U", rather than the universal "Save" function.
Costs and benefits In a commercial setting, the benefit from
localization is access to more markets.
However, there are considerable costs involved, which go far beyond just engineering.
First, software must generally be re-engineered to make it world-ready.
Then, providing a localization package for a given language is in itself a non-trivial
undertaking, requiring specialized technical writers to construct a culturally appropriate
syntax for potentially complicated concepts, coupled with engineering resources to deploy
and test the localization elements.
Further, business operations must adapt to manage the production, storage and distribution
of multiple discrete localized products, which are often being sold in completely different
currencies, regulatory environments and tax regimes.
Finally, sales, marketing and technical support must also facilitate their own operations
in the new languages, in order to support customers for the localized products.
Particularly for relatively small language populations, it may thus never be economically
viable to offer a localized product.
Even where large language populations could justify localization for a given product,
and a product's internal structure already permits localization, a given software developer/publisher
may lack the size and sophistication to manage the ancillary functions associated with operating
in multiple locales.
For example, Microsoft Windows 7 has 96 language packs available.
One alternative, most often used by open source software communities, is self-localization
by teams of end-users and volunteers.
The KDE3 project, for example, has been translated into over 100 languages, and KDE4 is available
in 68.
However, self-localization requires that the underlying product first be engineered to
support such activities, which is a non-trivial endeavor.
See also Alchemy Catalyst
Bidirectional script support CJK
Computer russification, localization into Russian language
Game localization Global information system
Globalization Globalization Management System
Globalocal Glocalization
Input method editor International Components for Unicode
Language code Language industry
Language localization Multilanguage Electronic Publishing System
Pseudolocalization, a software testing method for testing a software product's readiness
for localization.
Punycode, translating Unicode into the character sets for network host names
Region code SDL Passolo
Separation of concerns Transifex
Translation Website localization
References
Notes
External links ostext.org – Open Source localization database
Internationalization with Qt - Internationalization within a popular C++ GUI framework