The standard locale framework was added to ANSI/ISO C++ in 1994. In essence, it consists of template classes called "locales", which use facets
. A facet represents a certain cultural convention that might vary across locales, e.g., a currency sign, date format, or weekday names. A locale's name is typically a string of the form: "en_US" and "es_AR", which stand for English, USA and Spanish, Argentina, respectively. The locale consists of both the language code and country code because a country can have several languages (for instance, Switzerland, Belgium, and Canada have more than one official language). Likewise, the same language can be spoken in several countries (German is spoken in Germany, Austria, Switzerland, Luxembourg, and other countries). Note that the actual locale name is platform dependent. The POSIX standard recommends using lowercase language code followed by an optional uppercase country code. This combination may be followed by an optional affix describing the codeset used, e.g., "jp_JP.jit". However, you may use other names for your locales.
The C++ locale framework classes and functions are defined in the standard header <locale >. Remember not to confuse it with <locale.h > or <clocale >, which declare the C locale framework (the C and C++ locale frameworks are different). A good introduction to C++ locales is available at http://www.research.att.com/~bs/3rd_loc.pdf