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.
On Unix, Linux and other POSIX-type platforms, locale identifiers are defined similar to the RFC 3066 definition of language tags, but the locale variant modifier is defined differently, and the character set is included as a part of the identifier. It is defined in this format: [language[_territory][.codeset][@modifier]].
General locale settings
These settings usually include the following display (output) format settings:
- Display language setting
- Number formats setting
- Date/Time formats setting
- Timezone setting
- Daylight saving time (DST) setting
- Currency formats setting
Less usual, but worth mentioning, is the input format setting. This is mostly defined on a per application basis.
The daylight saving time setting (DST) is derived from the Timezone Setting.
Furthermore, the General settings usually include the keyboard layout setting.
Programming/markup language support
and other (nowadays) Unicode-based environments, they are defined in a format similar to RFC 3066 or one of its successors. They are usually defined with just ISO 639 and ISO 3166-1 alpha-2 codes.
Specifics for Microsoft platforms
Locale identifier (LCID) for unmanaged code
on Microsoft Windows
, a number such as 1033 for English (United States) or 1041 for Japanese (Japan). These numbers consist of a language code (lower 10 bits) and culture code (upper bits) and are therefore often written in hexadecimal
notation, such as 0x0409 or 0x0411. The list of those codesets are described in character encoding
is beginning to introduce unmanaged code Application programming interfaces
(APIs) for .NET that use this format. One of the first to be generally released is a function to mitigate issues with internationalized domain names
but more are in Windows Vista
Beginning with Windows Vista, new functions that use RFC 4646 locale names have been introduced to replace nearly all LCID-based APIs.