In computing, a locale is a set of parameters that defines the user's language, region 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 code and a country/region code. Locale is an important aspect of i18n.
General locale settings edit
These settings usually include the following display (output) format settings:
- Number format setting (LC_NUMERIC, C/C++)
- Character classification, case conversion settings (LC_CTYPE, C/C++)
- Date-time format setting (LC_TIME, C/C++)
- String collation setting (LC_COLLATE, C/C++)
- Currency format setting (LC_MONETARY, C/C++)
- Paper size setting (LC_PAPER, ISO 30112)
- Color setting
The locale settings are about formatting output given a locale. So, the time zone information and daylight saving time are not usually part of the locale settings. Less usual is the input format setting, which is mostly defined on a per application basis.
Programming and markup language support edit
In these environments,
International standards edit
In standard C and C++, locale is defined in "categories" of LC_COLLATE (text collation), LC_CTYPE (character class), LC_MONETARY (currency format), LC_NUMERIC (number format), and LC_TIME (time format). The special LC_ALL category can be used to set all locale settings.
There is no standard locale names associated with C and C++ standards besides a "minimal locale" name "C", although the POSIX format is a commonly-used baseline.
POSIX platforms edit
On POSIX platforms such as Unix, Linux and others, locale identifiers are defined in a way similar to the BCP 47 definition of language tags, but the locale variant modifier is defined differently, and the character set is optionally included as a part of the identifier. The POSIX or "XPG" format is [language[_territory][.codeset][@modifier]]. (For example, Australian English using the UTF-8 encoding is en_AU.UTF-8.) Separately, ISO/IEC 15897 describes a different form, language_territory+audience+application,sponsor_version, though it's highly dubious whether it is used at all.
$ locale LANG=cs_CZ.UTF-8 LC_CTYPE="cs_CZ.UTF-8" LC_NUMERIC="cs_CZ.UTF-8" LC_TIME="cs_CZ.UTF-8" LC_COLLATE="cs_CZ.UTF-8" LC_MONETARY="cs_CZ.UTF-8" LC_MESSAGES="cs_CZ.UTF-8" LC_PAPER="cs_CZ.UTF-8" LC_NAME="cs_CZ.UTF-8" LC_ADDRESS="cs_CZ.UTF-8" LC_TELEPHONE="cs_CZ.UTF-8" LC_MEASUREMENT="cs_CZ.UTF-8" LC_IDENTIFICATION="cs_CZ.UTF-8" LC_ALL=
Specifics for Microsoft platforms edit
This section needs to be updated.(June 2016)
Windows uses specific language and territory strings. The locale identifier (LCID) for unmanaged code on Microsoft Windows is 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 a culture code (upper bits), and are therefore often written in hexadecimal notation, such as 0x0409 or 0x0411. Microsoft is starting to introduce managed 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 Beta 1.
A POSIX-like locale name format of language[_country-region[.code-page]] is available in the UCRT (Universal C Run Time) of Windows 10 and 11.
See also edit
- "LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME - cppreference.com". en.cppreference.com.
- "Environment Variables". pubs.opengroup.org.
- "ISO/IEC JTC1/SC22 N610 [draft ISO/IEC 15897:1998(E)] Information technology — Procedures for registration of cultural elements" (PDF). 1998-11-17. Retrieved 8 June 2023.
For Narrative Cultural Specifications and POSIX Locales the token identifier will be: 8_9+11+12,13_14
- "DownlevelGetLocaleScripts function (Windows)". MSDN. Microsoft. Retrieved 2017-12-11.
- "Locale Names (Windows)". MSDN. Microsoft. Retrieved 2017-12-11.
- "Locale Names, Languages, and Country-Region Strings". learn.microsoft.com. 19 October 2022.
This article's use of external links may not follow Wikipedia's policies or guidelines. (September 2019)
- BCP 47
- Language Subtag Registry
- Common Locale Data Repository
java.util.LocaleJavadoc API documentation
- Locale and Language information from Microsoft
- MS-LCID: Windows Language Code Identifier (LCID) Reference from Microsoft
- Microsoft LCID list
- Microsoft LCID chart with decimal equivalents
- POSIX Environment Variables
- Low Level Technical details on defining a POSIX locale
- ICU Locale Explorer
- Debian Wiki on Locales
- Article "The Standard C++ Locale" by Nathan C. Myers
- locale(7): Description of multi-language support - Linux man page
- Apache C++ Standard Library Locale User's Guide
- Sort order charts for various operating system locales and database collations
- NATSPEC Library
- Description of locale-related UNIX environment variables in Debian Linux Reference Manual
- Guides to locales and locale creation on various platforms