Platform SDK: International Features

Locale Information

An LCTYPE constant is a constant that specifies a particular piece of locale information. The values in the following list correspond to the names of these values in the configuration registry, under both the user's preferences (as values in the registry key HKEY_CURRENT_USER\Control Panel\International) and the system's installed languages (as files pointed to by registry keys, one key per language installed, under HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\NLS). All values are null-terminated Unicode strings. If no maximum length is indicated, the strings may vary in length.

The following are locale, or LCTYPE, constants.

LOCALE_FONTSIGNATURE
Windows NT 4.0 and Windows 2000: A bit pattern used to determine the relationship between character coverage needed to support the locale and the font contents.
LOCALE_ICALENDARTYPE
Current calendar type. The maximum number of characters allowed for this string is two. This type can be one of the following values.
Value Meaning
1 Gregorian (localized)
2 Gregorian (English strings always)
3 Era: Year of the Emperor (Japan)
4 Era: Year of Taiwan
5 Tangun Era (Korea)
6 Hijri (Arabic lunar)
7 Thai
8 Hebrew (Lunar)
9 Gregorian Middle East French calendar
10 Gregorian Arabic calendar
11 Gregorian Transliterated English calendar
12 Gregorian Transliterated French calendar

LOCALE_ICENTURY
Specifier for a 2-digit or 4-digit century for the short date only. The maximum number of characters allowed for this string is two. The specifier can be one of the following values.
Value Meaning
0 Abbreviated 2-digit century
1 Full 4-digit century

LOCALE_ICOUNTRY
Country/region code, based on international phone codes, also referred to as IBM country codes. The maximum number of characters allowed for this string is six.
LOCALE_ICURRDIGITS
Number of fractional digits for the local monetary format. The maximum number of characters allowed for this string is three.
LOCALE_ICURRENCY
Position of the monetary symbol in the positive currency mode. The maximum number of characters allowed for this string is two. The mode can be one of the following values.
Value Meaning
0 Prefix, no separation, for example $1.1
1 Suffix, no separation, for example 1.1$
2 Prefix, 1-character separation, for example $ 1.1
3 Suffix, 1-character separation, for example 1.1 $

LOCALE_IDATE
Short date format-ordering specifier. The maximum number of characters allowed for this string is two. The specifier can be one of the following values.
Value Meaning
0 Month-Day-Year
1 Day-Month-Year
2 Year-Month-Day

LOCALE_IDAYLZERO
Specifier for leading zeros in day fields for the short date only. The maximum number of characters allowed for this string is two. The specifier can be one of the following values.
Value Meaning
0 No leading zeros for days
1 Leading zeros for days

LOCALE_IDEFAULTANSICODEPAGE
American National Standards Institute (ANSI) code page associated with this locale. If the locale does not use an ANSI code page, the value is 0. The maximum number of characters allowed for this string is six.
LOCALE_IDEFAULTCODEPAGE
Original equipment manufacturer (OEM) code page associated with the country/region. If the locale does not use an OEM code page, the value is 1.The maximum number of characters allowed for this string is six.
LOCALE_IDEFAULTCOUNTRY
Code for the principal country/region in this locale. This is provided so that partially specified locales can be completed with default values. The maximum number of characters allowed for this string is six.
LOCALE_IDEFAULTEBCDICCODEPAGE
Windows 2000: Default EBCDIC code page associated with the locale. The maximum number of characters allowed for this string is six.
LOCALE_IDEFAULTLANGUAGE
Language identifier for the principal language spoken in this locale. This is provided so partially specified locales can be completed with default values. The maximum number of characters allowed for this string is five.
LOCALE_IDEFAULTMACCODEPAGE
Default Macintosh code page associated with the locale. If the locale does not use a Macintosh code page, the value is 2. The maximum number of characters allowed for this string is six.
LOCALE_IDIGITS
Number of fractional digits. The maximum number of characters allowed for this string is two.
LOCALE_IDIGITSUBSTITUTION
Windows 2000: Determines the shape of the digits. For example, Arabic, Thai, and Indic digits have classical shapes different from western digits. The specifier can be one of these values.
Value Meaning
0 Context—the shape depends on the previous text in the same output.
1 None/Arabic—gives full Unicode compatibility.
2 Native—national shapes determined by LOCALE_SNATIVEDIGITS.

LOCALE_IFIRSTDAYOFWEEK
Specifier for the first day in a week. The maximum number of characters allowed for this string is two. The specifier can be one of these values.
Value Meaning
0 LOCALE_SDAYNAME1
1 LOCALE_SDAYNAME2
2 LOCALE_SDAYNAME3
3 LOCALE_SDAYNAME4
4 LOCALE_SDAYNAME5
5 LOCALE_SDAYNAME6
6 LOCALE_SDAYNAME7

LOCALE_IFIRSTWEEKOFYEAR
Specifier for the first week of the year. The maximum number of characters allowed for this string is two. The specifier can be one of these values.
Value Meaning
0 Week containing 1/1 is the first week of that year.
1 First full week following 1/1 is the first week of that year.
2 First week containing at least four days is the first week of that year.

LOCALE_IINTLCURRDIGITS
Number of fractional digits for the international monetary format. The maximum number of characters allowed for this string is three.
LOCALE_ILANGUAGE
Language identifier. The maximum number of characters allowed for this string is five.
LOCALE_ILDATE
Long date format-ordering specifier. The maximum number of characters allowed for this string is two. The specifier can be one of the following values.
Value Meaning
0 Month-Day-Year
1 Day-Month-Year
2 Year-Month-Day

LOCALE_ILZERO
Specifier for leading zeros in decimal fields. The maximum number of characters allowed for this string is two. The specifier can be one of the following values.
Value Meaning
0 No leading zeros
1 Leading zeros

LOCALE_IMEASURE
System of measurement. This value is 0 if the metric system (Systéme International d'Unités, or S.I.) is used, and 1 if the U.S. system is used. The maximum number of characters allowed for this string is two.
LOCALE_IMONLZERO
Specifier for leading zeros in month fields for the short date only. The maximum number of characters allowed for this string is two. The specifier can be one of the following values.
Value Meaning
0 No leading zeros for months
1 Leading zeros for months

LOCALE_INEGCURR
Negative currency mode. The maximum number of characters allowed for this string is three. The mode can be one of the following values.
Mode Format for a negative currency
0 Left parenthesis,monetary symbol,number,right parenthesis.

Example: ($1.1)

1 Negative sign, monetary symbol, number. Example: -$1.1
2 Monetary symbol, negative sign, number. Example: $-1.1
3 Monetary symbol, number, negative sign. Example: $1.1-
4 Left parenthesis, number, monetary symbol, right parenthesis. Example: (1.1$)
5 Negative sign, number, monetary symbol. Example: -1.1$
6 Number, negative sign, monetary symbol. Example: 1.1-$
7 Number, monetary symbol, negative sign. Example: 1.1$-
8 Negative sign, number, space, monetary symbol (like #5, but with a space before the monetary symbol). Example: -1.1 $
9 Negative sign, monetary symbol, space, number (like #1, but with a space after the monetary symbol). Example: -$ 1.1
10 Number, space, monetary symbol, negative sign (like #7, but with a space before the monetary symbol). Example: 1.1 $-
11 Monetary symbol, space, number, negative sign (like #3, but with a space after the monetary symbol). Example: $ 1.1-
12 Monetary symbol, space, negative sign, number (like #2, but with a space after the monetary symbol). Example: $ -1.1
13 Number, negative sign, space, monetary symbol (like #6, but with a space before the monetary symbol). Example: 1.1- $
14 Left parenthesis, monetary symbol, space, number, right

parenthesis (like #0, but with a space after the monetary symbol). Example: ($ 1.1)

15 Left parenthesis, number, space, monetary symbol, right parenthesis (like #4, but with a space before the monetary symbol). Example: (1.1 $)

LOCALE_INEGNUMBER
Negative number mode, that is, the format for a negative number. The maximum number of characters allowed for this string is two. The mode can be one of these values.
Value Format
0 Left parenthesis, number, right parenthesis. Example: (1.1)
1 Negative sign, number. Example: -1.1
2 Negative sign, space, number. Example: - 1.1
3 Number, negative sign. Example: 1.1-
4 Number, space, negative sign. Example: 1.1 -

LOCALE_INEGSEPBYSPACE
Separation of the negative sign in a monetary value. This value is 1 if the monetary symbol is separated by a space from the negative amount, 0 if it is not. The maximum number of characters allowed for this string is two.
LOCALE_INEGSIGNPOSN
Formatting index for the negative sign in currency values. The maximum number of characters allowed for this string is two. The index can be one of the following values.
Value Meaning
0 Parentheses surround the amount and the monetary symbol.
1 The sign precedes the number.
2 The sign follows the number.
3 The sign precedes the monetary symbol.
4 The sign follows the monetary symbol.
LOCALE_INEGSYMPRECEDES
Position of monetary symbol in a negative monetary value. This value is 1 if the monetary symbol precedes the negative amount, 0 if it follows it. The maximum number of characters allowed for this string is two.
LOCALE_IOPTIONALCALENDAR
Additional calendar types that are available for this LCID. This can be a null-separated list of one or more of the following calendar type values. The maximum number of characters allowed for this string is two.
Value Meaning
0 No additional types valid
1 Gregorian (localized)
2 Gregorian (English strings always)
3 Era: Year of the Emperor (Japan)
4 Era: Year of Taiwan
5 Tangun Era (Korea)
6 Hijri (Arabic lunar)
7 Thai
8 Hebrew (Lunar)
9 Gregorian Middle East French calendar
10 Gregorian Arabic calendar
11 Gregorian-transliterated English calendar
12 Gregorian-transliterated French calendar

LOCALE_IPAPERSIZE
Windows 2000: Default paper size associated with the locale. The specifier can be one of the following values.
Value Meaning
1 US Letter
5 US legal
8 A3
9 A4

LOCALE_IPOSSEPBYSPACE
Separation of monetary symbol in a positive monetary value. This value is 1 if the monetary symbol is separated by a space from a positive amount, 0 if it is not. The maximum number of characters allowed for this string is two.
LOCALE_IPOSSIGNPOSN
Formatting index for positive values. This index uses the same values as LOCALE_INEGSIGNPOSN, except that it does not use the zero index. The maximum number of characters allowed for this string is two.
LOCALE_IPOSSYMPRECEDES
Position of monetary symbol in a positive monetary value. This value is 1 if the monetary symbol precedes the positive amount, zero if it follows it. The maximum number of characters allowed for this string is two.
LOCALE_ITIME
Time format specifier. The maximum number of characters allowed for this string is two. The specifier can be one of the following values.
Value Meaning
0 AM / PM 12-hour format.
1 24-hour format.

LOCALE_ITIMEMARKPOSN
Specifier indicating whether the time marker string (AM or PM) precedes or follows the time string. The registry value is iTimePrefix for compatibility with previous Asian versions of Windows. The specifier can take one of the following values.
Value Meaning
0 Use as suffix.
1 Use as prefix.

LOCALE_ITIMEMARKERUSE
Specifier indicating whether the time marker should be used for 12-hour, 24-hour, or both types of clock settings. The specifier can take one of the following values.
Value Meaning
0 Use with 12-hour clock.
1 Use with 24-hour clock.
2 Use with both 12-hour and 24-hour clocks.
3 Never use.

LOCALE_ITLZERO
Specifier for leading zeros in time fields. The maximum number of characters allowed for this string is two. The specifier can be one of the following values.
Value Meaning
0 No leading zeros for hours.
1 Leading zeros for hours.

LOCALE_NOUSEROVERRIDE
This causes the function to bypass any user override and return the system default value for the other LCTYPE specified in the function call. This flag can be combined with other LOCALE values by using the binary-OR operator.
LOCALE_RETURN_NUMBER
Windows NT 4.0 and Windows 2000: This causes the function to return the value as a number instead of as a string. The buffer that receives the value must be at least the length of a DWORD. This flag can be combined with any specifier beginning with LOCALE_I by using the binary-OR operator.
LOCALE_S1159
String for the AM designator. The maximum number of characters allowed for this string is nine.
LOCALE_S2359
String for the PM designator. The maximum number of characters allowed for this string is nine.
LOCALE_SABBREVCTRYNAME
Abbreviated name of the country/region, mostly based on the ISO Standard 3166.
LOCALE_SABBREVDAYNAME1
Native abbreviated name for Monday.
LOCALE_SABBREVDAYNAME2
Native abbreviated name for Tuesday.
LOCALE_SABBREVDAYNAME3
Native abbreviated name for Wednesday.
LOCALE_SABBREVDAYNAME4
Native abbreviated name for Thursday.
LOCALE_SABBREVDAYNAME5
Native abbreviated name for Friday.
LOCALE_SABBREVDAYNAME6
Native abbreviated name for Saturday.
LOCALE_SABBREVDAYNAME7
Native abbreviated name for Sunday.
LOCALE_SABBREVLANGNAME
Abbreviated name of the language. In most cases it is created by taking the two-letter language abbreviation from the ISO Standard 639 and adding a third letter, as appropriate, to indicate the sublanguage.
LOCALE_SABBREVMONTHNAME1
Native abbreviated name for January.
LOCALE_SABBREVMONTHNAME2
Native abbreviated name for February.
LOCALE_SABBREVMONTHNAME3
Native abbreviated name for March.
LOCALE_SABBREVMONTHNAME4
Native abbreviated name for April.
LOCALE_SABBREVMONTHNAME5
Native abbreviated name for May.
LOCALE_SABBREVMONTHNAME6
Native abbreviated name for June.
LOCALE_SABBREVMONTHNAME7
Native abbreviated name for July.
LOCALE_SABBREVMONTHNAME8
Native abbreviated name for August.
LOCALE_SABBREVMONTHNAME9
Native abbreviated name for September.
LOCALE_SABBREVMONTHNAME10
Native abbreviated name for October.
LOCALE_SABBREVMONTHNAME11
Native abbreviated name for November.
LOCALE_SABBREVMONTHNAME12
Native abbreviated name for December.
LOCALE_SABBREVMONTHNAME13
Native abbreviated name for 13th month, if it exists.
LOCALE_SCOUNTRY
Full localized name of the country/region. This is based on the localization of the product, thus it changes for each localized version.
LOCALE_SCURRENCY
String used as the local monetary symbol. The maximum number of characters allowed for this string is six.
LOCALE_SDATE
Character(s) for the date separator. The maximum number of characters allowed for this string is four.
LOCALE_SDAYNAME1
Native long name for Monday.
LOCALE_SDAYNAME2
Native long name for Tuesday.
LOCALE_SDAYNAME3
Native long name for Wednesday.
LOCALE_SDAYNAME4
Native long name for Thursday.
LOCALE_SDAYNAME5
Native long name for Friday.
LOCALE_SDAYNAME6
Native long name for Saturday.
LOCALE_SDAYNAME7
Native long name for Sunday.
LOCALE_SDECIMAL
Character(s) used as the decimal separator. The maximum number of characters allowed for this string is 4.
LOCALE_SENGCOUNTRY
Full English name of the country/region. This is always restricted to characters that can be mapped into the ASCII 127-character subset.
LOCALE_SENGCURRNAME
Windows 2000: The full English name of the currency associated with the locale.
LOCALE_SENGLANGUAGE
Full English name of the language from the International Organization for Standardization (ISO) Standard 639. This is always restricted to characters that can be mapped into the ASCII 127-character subset. This is not always equivalent to the English version of LOCALE_SLANGUAGE.
LOCALE_SGROUPING
Sizes for each group of digits to the left of the decimal. An explicit size is needed for each group, and sizes are separated by semicolons. If the last value is zero, the preceding value is repeated. For example, to group thousands, specify 3;0. Indic locales group the first thousand and then group by hundreds—for example 12,34,56,789, which is represented by 3;2;0.
LOCALE_SINTLSYMBOL
Three characters of the international monetary symbol specified in ISO 4217 followed by the character separating this string from the amount.
LOCALE_SISO3166CTRYNAME
Windows NT 4.0 and Windows 2000: Country/region name, based on ISO Standard 3166.
LOCALE_SISO639LANGNAME
Windows NT 4.0 and Windows 2000: The abbreviated name of the language based entirely on the ISO Standard 639 values.
LOCALE_SLANGUAGE
Full localized name of the language. This name is based on the localization of the product, thus the value changes for each localized version.
LOCALE_SLIST
Character(s) used to separate list items. For example, a comma is used in many locales. The maximum number of characters allowed for this string is 4.
LOCALE_SLONGDATE
Long date formatting string for this locale. The string can consist of a combination of day, month, and year format pictures defined in the Day, Month, Year, and Era Format Pictures table in National Language Support Constants and any string of characters enclosed in single quotes. Characters in single quotes remain as specified. The maximum number of characters allowed for this string is 80.
LOCALE_SMONDECIMALSEP
Character(s) used as the monetary decimal separator. The maximum number of characters allowed for this string is four.
LOCALE_SMONGROUPING
Sizes for each group of monetary digits to the left of the decimal. An explicit size is needed for each group, and sizes are separated by semicolons. If the last value is zero, the preceding value is repeated. For example, to group thousands, specify 3;0. Indic languages group the first thousand and then group by hundreds—for example, 12,34,56,789, which is represented by 3;2;0. The maximum number of characters allowed for this string is four.
LOCALE_SMONTHNAME1
Native long name for January. See note following this list.
LOCALE_SMONTHNAME2
Native long name for February. See note following this list.
LOCALE_SMONTHNAME3
Native long name for March. See note following this list.
LOCALE_SMONTHNAME4
Native long name for April. See note following this list.
LOCALE_SMONTHNAME5
Native long name for May. See note following this list.
LOCALE_SMONTHNAME6
Native long name for June. See note following this list.
LOCALE_SMONTHNAME7
Native long name for July. See note following this list.
LOCALE_SMONTHNAME8
Native long name for August. See note following this list.
LOCALE_SMONTHNAME9
Native long name for September. See note following this list.
LOCALE_SMONTHNAME10
Native long name for October. See note following this list.
LOCALE_SMONTHNAME11
Native long name for November. See note following this list.
LOCALE_SMONTHNAME12
Native long name for December. See note following this list.
LOCALE_SMONTHNAME13
Native name for 13th month, if it exists. See note following this list.
LOCALE_SMONTHOUSANDSEP
Character(s) used as the monetary separator between groups of digits to the left of the decimal. The maximum number of characters allowed for this string is four.
LOCALE_SNATIVECTRYNAME
Native name of the country/region.
LOCALE_SNATIVECURRNAME
Windows 2000: The native name of the currency associated with the locale.
LOCALE_SNATIVEDIGITS
Native equivalents to ASCII zero through 9.
LOCALE_SNATIVELANGNAME
Native name of the language.
LOCALE_SNEGATIVESIGN
String value for the negative sign. The maximum number of characters allowed for this string is five.
LOCALE_SPOSITIVESIGN
String value for the positive sign. The maximum number of characters allowed for this string is five.
LOCALE_SSHORTDATE
Short date formatting string for this locale. The string can consist of a combination of day, month, and year format pictures defined in Day, Month, Year, and Era Format Pictures table in National Language Support Constants. The maximum number of characters allowed for this string is 80.
LOCALE_SSORTNAME
Windows 2000: The full localized name of the sort for the specified locale identifier, dependent on the language of the shell.
LOCALE_STHOUSAND
Character(s) used to separate groups of digits to the left of the decimal. The maximum number of characters allowed for this string is four.
LOCALE_STIME
Character(s) for the time separator. The maximum number of characters allowed for this string is four.
LOCALE_STIMEFORMAT
Time formatting strings for this locale. The string can consist of a combination of the hour, minute, and second format pictures defined in the Hour, Minute, and Second Format Pictures table in National Language Support Constants. The maximum number of characters allowed for this string is 80.
LOCALE_SYEARMONTH
Windows 2000: The Year/Month formatting string for the locale. This string shows the proper format for a date string that contains only the year and the month.
LOCALE_USE_CP_ACP
Uses the system ANSI code page (ACP) for string translation instead of the locale's code page. This is used in the GetLocaleInfo function. This flag can be combined with any other LCTYPE by using the binary-OR operator.

Note  Calling the GetLocaleInfo function with a LOCALE_SMONTHNAMExx flag returns the stand-alone, or nominative, form of the month name. To get the genitive form of the month name, call GetDateFormat with a date picture of ddMMMM and remove the two digits from the beginning of the returned string.

Many of the locale types previously listed are closely related, such that changing one affects the value of the others. The following table shows the relationships between these types.

Constant Affects
LOCALE_ICURRENCY LOCALE_IPOSSEPBYSPACE, LOCALE_IPOSSYMPRECEDES
LOCALE_INEGCURR LOCALE_SNEGATIVE, LOCALE_SPOSITIVE, LOCALE_INEGSEPBYSPACE, LOCALE_INEGSYMPRECEDES, LOCALE_INEGSIGNPOSN, LOCALE_IPOSSIGNPOSN
LOCALE_SSHORTDATE LOCALE_SDATE, LOCALE_IDATE
LOCALE_SLONGDATE LOCALE_ILDATE
LOCALE_STIMEFORMAT LOCALE_STIME, LOCALE_ITIME, LOCALE_ITLZERO, LOCALE_ITIMEMARKPOSN