Locale Constants (LCTYPE)

An LCTYPE is a constant that specifies a particular piece of locale information. For example:

typedef  DWORD  LCTYPE;

The list of supported LCTYPES follows. All values are null-terminated, variable-length strings. Numeric values are expressed as strings of decimal digits, unless otherwise noted. The values in the brackets indicate the maximum number of characters allowed for the string (including the null termination). If no maximum is indicated, the string may be of variable length.

Constant name Description
LOCALE_ILANGUAGE A LANGID represented in hexadecimal digits. See the previous sections. [5]
LOCALE_SLANGUAGE The full localized name of the language.
LOCALE_SENGLANGUAGE The full English U.S. name of the language from the ISO Standard 639. This will always be restricted to characters that can be mapped into the ASCII 127-character subset.
LOCALE_SABBREVLANGNAME The abbreviated name of the language, created by taking the two-letter language abbreviation, as found in ISO Standard 639, and adding a third letter as appropriate to indicate the sublanguage.
LOCALE_SNATIVELANGNAME The native name of the language.
LOCALE_ICOUNTRY The country code, based on international phone codes, also referred to as IBM country codes. [6]
LOCALE_SCOUNTRY The full localized name of the country.
LOCALE_SENGCOUNTRY The full English U.S. name of the country. This will always be restricted to characters that can be mapped into the ASCII 127-character subset.
LOCALE_SABBREVCTRYNAME The abbreviated name of the country as found in ISO Standard 3166.
LOCALE_SNATIVECTRYNAME The native name of the country.
LOCALE_IDEFAULTLANGUAGE LANGID for the principal language spoken in this locale. This is provided so that partially specified locales can be completed with default values. [5]
LOCALE_IDEFAULTCOUNTRY Country code for the principal country in this locale. This is provided so that partially specified locales can be completed with default values. [6]
LOCALE_IDEFAULTANSICODEPAGE The ANSI code page associated with this locale.
Format: 4 Unicode decimal digits plus a Unicode null terminator. [10] [6]
LOCALE_IDEFAULTCODEPAGE The OEM code page associated with the country. [6]
LOCALE_SLIST Characters used to separate list items. For example, a comma is used in many locales.
LOCALE_IMEASURE This value is 0 for the metric system (S.I.) and 1 for the U.S. system of measurements. [2]
LOCALE_SDECIMAL Characters used for the decimal separator.
LOCALE_STHOUSAND Characters used as the separator between groups of digits left of the decimal.
LOCALE_SGROUPING Sizes for each group of digits to the left of the decimal. An explicit size is required for each group. Sizes are separated by semicolons. If the last value is 0, the preceding value is repeated. To group thousands, specify 3;0.
LOCALE_IDIGITS The number of fractional digits. [3]
LOCALE_ILZERO Whether to use leading zeros in decimal fields. [2] A setting of 0 means use no leading zeros; 1 means use leading zeros.
LOCALE_SNATIVEDIGITS The ten characters that are the native equivalent of the ASCII 0-9.
LOCALE_INEGNUMBER Negative number mode. [2]

    "0"     (1.1)
    "1"     -1.1
    "2"     -1.1
    "3"     1.1
    "4"     1.1

LOCALE_SCURRENCY The string used as the local monetary symbol.
LOCALE_SINTLSYMBOL Three characters of the International monetary symbol specified in ISO 4217, Codes for the Representation of Currencies and Funds, followed by the character separating this string from the amount.
LOCALE_SMONDECIMALSEP Characters used for the monetary decimal separators.
LOCALE_SMONTHOUSANDSEP Characters used as monetary separator between groups of digits left of the decimal.
LOCALE_SMONGROUPING Sizes for each group of monetary digits to the left of the decimal. An explicit size is needed for each group. Sizes are separated by semicolons. If the last value is 0, the preceding value is repeated. To group thousands, specify 3;0.
LOCALE_ICURRDIGITS Number of fractional digits for the local monetary format. [3]
LOCALE_IINTLCURRDIGITS Number of fractional digits for the international monetary format. [3]
LOCALE_ICURRENCY Positive currency mode. [2]

0    Prefix, no separation.
1    Suffix, no separation.
2    Prefix, 1-character separation.
3    Suffix, 1-character separation.

LOCALE_INEGCURR Negative currency mode. [2]

0    ($1.1)
1    -$1.1
2    $-1.1
3    $1.1-
4    $(1.1$)
5    -1.1$
6    1.1-$
7    1.1$-
8    -1.1 $ (space before $)
9    -$ 1.1 (space after $)
10    1.1 $- (space before $)

LOCALE_ICALENDARTYPE The type of calendar currently in use. [2]

1    Gregorian (as in U.S.)

2    Gregorian (always English strings)

3    Era: Year of the Emperor (Japan)

4    Era: Year of the Taiwan Region

5    Tangun Era (Korea)

LOCALE_IOPTIONALCALENDAR The additional calendar types available for this LCID. Can be a null-separated list of all valid optional calendars. [2]

0    None available

1    Gregorian (as in U.S.)

2    Gregorian (always English strings)

3    Era: Year of the Emperor (Japan)

4    Era: Year of the Taiwan Region

5    Tangun Era (Korea)

LOCALE_SDATE Characters used for the date separator.
LOCALE_STIME Characters used for the time separator.
LOCALE_STIMEFORMAT Time-formatting string. [80]
LOCALE_SSHORTDATE Short Date_Time formatting strings for this locale.
LOCALE_SLONGDATE Long Date_Time formatting strings for this locale.
LOCALE_IDATE Short Date format-ordering specifier. [2]

0    Month – Day – Year
1    Day – Month – Year
2    Year – Month – Day

LOCALE_ILDATE Long Date format ordering specifier. [2]

0    Month – Day – Year
1    Day – Month – Year
2    Year – Month – Day

LOCALE_ITIME Time format specifier. [2]

0    AM/PM 12-hour format.
1    24-hour format.

LOCALE_ITIMEMARKPOSN Whether the time marker string (AM|PM) precedes or follows the time string. (The registry value is named ITimePrefix for previous Far East version compatibility.)

0    Suffix (9:15 AM).

1    Prefix (AM 9:15).

LOCALE_ICENTURY Whether to use full 4-digit century. [2]

0    Two digit.
1    Full century.

LOCALE_ITLZERO Whether to use leading zeros in time fields. [2]

0    No leading zeros.
1    Leading zeros for hours.

LOCALE_IDAYLZERO Whether to use leading zeros in day fields. [2]

0    No leading zeros.
1    Leading zeros.

LOCALE_IMONLZERO Whether to use leading zeros in month fields. [2]

0    No leading zeros.
1    Leading zeros.

LOCALE_S1159 String for the AM designator.
LOCALE_S2359 String for the PM designator.
LOCALE_IFIRSTWEEKOFYEAR Specifies which week of the year is considered first. [2]

0    Week containing 1/1 is the first week of the year.

1    First full week following 1/1is the first week of the year.

2    First week with at least 4 days is the first week of the year.

LOCALE_IFIRSTDAYOFWEEK Specifies the day considered first in the week. [2]

0    SDAYNAME1
1    SDAYNAME2
2    SDAYNAME3
3    SDAYNAME4
4    SDAYNAME5
5    SDAYNAME6
6    DAYNAME7

LOCALE_SDAYNAME1 Long name for Monday.
LOCALE_SDAYNAME2 Long name for Tuesday.
LOCALE_SDAYNAME2 Long name for Tuesday.
LOCALE_SDAYNAME3 Long name for Wednesday.
LOCALE_SDAYNAME4 Long name for Thursday.
LOCALE_SDAYNAME5 Long name for Friday.
LOCALE_SDAYNAME6 Long name for Saturday.
LOCALE_SDAYNAME7 Long name for Sunday.
LOCALE_SABBREVDAYNAME1 Abbreviated name for Monday.
LOCALE_SABBREVDAYNAME2 Abbreviated name for Tuesday.
LOCALE_SABBREVDAYNAME3 Abbreviated name for Wednesday.
LOCALE_SABBREVDAYNAME4 Abbreviated name for Thursday.
LOCALE_SABBREVDAYNAME5 Abbreviated name for Friday.
LOCALE_SABBREVDAYNAME6 Abbreviated name for Saturday.
LOCALE_SABBREVDAYNAME7 Abbreviated name for Sunday.
LOCALE_SMONTHNAME1 Long name for January.
LOCALE_SMONTHNAME2 Long name for February.
LOCALE_SMONTHNAME3 Long name for March.
LOCALE_SMONTHNAME4 Long name for April.
LOCALE_SMONTHNAME5 Long name for May.
LOCALE_SMONTHNAME6 Long name for June.
LOCALE_SMONTHNAME7 Long name for July.
LOCALE_SMONTHNAME8 Long name for August.
LOCALE_SMONTHNAME9 Long name for September.
LOCALE_SMONTHNAME10 Long name for October.
LOCALE_SMONTHNAME11 Long name for November.
LOCALE_SMONTHNAME12 Long name for December.
LOCALE_SMONTHNAME13 Native name for 13th month, if it exists.
LOCALE_SABBREVMONTHNAME1 Abbreviated name for January.
LOCALE_SABBREVMONTHNAME2 Abbreviated name for February.
LOCALE_SABBREVMONTHNAME3 Abbreviated name for March.
LOCALE_SABBREVMONTHNAME4 Abbreviated name for April.
LOCALE_SABBREVMONTHNAME5 Abbreviated name for May.
LOCALE_SABBREVMONTHNAME6 Abbreviated name for June.
LOCALE_SABBREVMONTHNAME7 Abbreviated name for July.
LOCALE_SABBREVMONTHNAME8 Abbreviated name for August.
LOCALE_SABBREVMONTHNAME9 Abbreviated name for September.
LOCALE_SABBREVMONTHNAME10 Abbreviated name for October.
LOCALE_SABBREVMONTHNAME11 Abbreviated name for November.
LOCALE_SABBREVMONTHNAME12 Abbreviated name for December.
LOCALE_SABBREVMONTHNAME13 Native abbreviated name for 13th month, if it exists.
LOCALE_SPOSITIVESIGN String value for the positive sign.
LOCALE_SNEGATIVESIGN String value for the negative sign.
LOCALE_IPOSSIGNPOSN Formatting index for positive values. [2]

0    Parentheses surround the amount and the monetary symbol.

1    The sign string precedes the amount and the monetary symbol.

2    The sign string precedes the amount and the monetary symbol.

3    The sign string precedes the amount and the monetary symbol.

4    The sign string precedes the amount and the monetary symbol.

LOCALE_INEGSIGNPOSN Formatting index for negative values. [2]

0    Parentheses surround the amount and the monetary symbol.

1    The sign string precedes the amount and the monetary symbol.

2    The sign string precedes the amount and the monetary symbol.

3    The sign string precedes the amount and the monetary symbol.

4    The sign string precedes the amount and the monetary symbol.

LOCALE_IPOSSYMPRECEDES If the monetary symbol precedes, 1. If it succeeds a positive amount, 0. [2]
LOCALE_IPOSSEPBYSPACE If the monetary symbol is separated by a space from a positive amount, 1. Otherwise, 0. [2]
LOCALE_INEGSYMPRECEDES If the monetary symbol precedes, 1. If it succeeds a negative amount, 0. [2]
LOCALE_INEGSEPBYSPACE If the monetary symbol is separated by a space from a negative amount, 1. Otherwise, 0. [2]

The following table shows the equivalence between LCTYPE values and the information stored in the [intl] section of Win.ini. These values are retrieved from Win.ini if information for the current system locale is queried. Values for LCTYPEs that are not in the following table do not depend on information stored in Win.ini.

Win.ini settings LCTYPE
sLanguage (1) LOCALE_SABBREVLANGNAME
iCountry LOCALE_ICOUNTRY
sCountry LOCALE_SCOUNTRY
sList LOCALE_SLIST
iMeasure LOCALE_IMEASURE
sDecimal LOCALE_SDECIMAL
sThousand LOCALE_STHOUSAND
iDigits LOCALE_IDIGITS
iLZero LOCALE_ILZERO
sCurrency LOCALE_SCURRENCY
iCurrDigits LOCALE_ICURRDIGITS
iCurrency LOCALE_ICURRENCY
iNegCurr LOCALE_INEGCURR
sDate LOCALE_SDATE
sTime LOCALE_STIME
sShortDate LOCALE_SSHORTDATE
sLongDate LOCALE_SLONGDATE
iDate LOCALE_IDATE
iTime LOCALE_ITIME
iTLZero LOCALE_ITLZERO
s1159 LOCALE_S1159
s2359 LOCALE_S2359
1    Unlike in Win.ini, values returned by LOCALE_SABBREVLANGNAME are always in uppercase.