A well-written application program manipulates data and
presents it appropriately for its use.
Programs written with the intention of providing a friendly user
interface often make assumptions about the local customs and
language of the end user. Program interface and processing
requirements vary from country to country, or possibly within a
country. Most existing software does not take this into account and
is appropriate for use only in the country or locality in which
it is written.
The solution to this problem is to design application programs
that can be easily localized. Localization is the adaptation of
a software application or system for use in different countries
or local environments. The end user's native language, customs,
and/or data processing requirements may differ from those
in the environment of the software developer. End users benefit from
application programs which interact with them in their
native language and conform to their local customs.
Native language refers to the user's first language (learned
as a child), such as Finnish, Portuguese, or Japanese.
Local customs refer to conventions such as local date, time, and
currency formats. Traditionally, localization has been achieved
by modifying a program for each specific country.
Applications designed with localization in mind provide a better
solution. Localization can then be accomplished with (ideally)
no modification of code at all.
An applications designer must write the application program with
built-in provisions for localization. Functions that depend on
local language or custom cannot be hard-coded. For example,
all messages and prompts must be stored in an external file or
catalog. Character comparisons and upshifting must be accomplished
by external system-level routines or instructions. The external
files and catalogs can be translated, and the program localized
without rewriting or recompiling the application program.
NLS provides the tools for an applications
designer/programmer to produce localized applications. These tools
may include architecture support, peripheral support, and software
facilities within the operating systems and subsystems. NLS
addresses the internal functions of a program (for example, sorting) and
its user interface (for example, messages and formats).