### Make Your Program International

You can make your program adapt to different cultural environments by using locales and taking advantage of other features provided by IBM C and C++ Compilers to support internationalization.

To make your program international, complete the following steps:

1. Isolate your resources from the executable code at the source level and at the module level.
   By isolating your resources at the source level, they can be translated easily into many languages. If the resource is isolated from the executable code at the load module level, it is possible for the appropriate language version to be loaded at execution time.
2. Respect your user's culture and conventions by using setlocale to select the appropriate locale categories during program execution.
   The IBM C and C++ Compilers localization model provides the standard locale categories, each of which defines one aspect of the cultural environment, as well as some IBM extensions. The default environment in which programs run is the POSIX C Locale, which conforms to US English conventions. IBM C and C++ Compilers includes a large number of additional locales that define many national environments. You can use any of these, or modify one to create your own.
3. Code your program to use the IBM C and C++ Compilers locale-sensitive interfaces provided by functions in the runtime library.
   These functions conform to the XPG4 standard. Call functions to select locale categories, and to manipulate characters, date and time data, monetary and numeric quantities, and other locale-sensitive data, as required by your cultural environment.
   Note: IBM C and C++ Compilers also supports the C++ Localization library, as recommended by the ANSI committee in the December 1996 draft.
4. To convert data from one code set to another, use the IBM C and C++ Compilers code set conversion utility and functions. IBM C and C++ Compilers provides code set converters that allow you to convert to and from many different coded character sets, including Unicode.

For more information on designing an internationalized application, see IBM's "National Language Design Guide - Designing Internationalized Products, SE09-8001".

Internationalization
What is a Resource?
Localization and Locales

Select a Locale
Convert Character Coding
Supply DLLs for Locale Handling

Locale Categories
Locale-Sensitive Interfaces