module win32.winnls;

// Translated from Microsoft Platform SDK August 2001 Edition
// by Y.Tomino

import win32.windef;
import win32.winbase;

// #ifndef _WINNLS_
// #define _WINNLS_

// #ifdef __cplusplus
// extern "C" {
// #endif

// #ifndef NONLS

// #ifdef _MAC
// #...
// #endif

enum : uint { MAX_LEADBYTES = 12 }
enum : uint { MAX_DEFAULTCHAR = 2 }

enum : uint { MB_PRECOMPOSED = 0x00000001 }
enum : uint { MB_COMPOSITE = 0x00000002 }
enum : uint { MB_USEGLYPHCHARS = 0x00000004 }
enum : uint { MB_ERR_INVALID_CHARS = 0x00000008 }

enum : uint { WC_COMPOSITECHECK = 0x00000200 }
enum : uint { WC_DISCARDNS = 0x00000010 }
enum : uint { WC_SEPCHARS = 0x00000020 }
enum : uint { WC_DEFAULTCHAR = 0x00000040 }

// #if(WINVER >= 0x0500)
enum : uint { WC_NO_BEST_FIT_CHARS = 0x00000400 }
// #endif /* WINVER >= 0x0500 */

enum : uint { CT_CTYPE1 = 0x00000001 }
enum : uint { CT_CTYPE2 = 0x00000002 }
enum : uint { CT_CTYPE3 = 0x00000004 }

enum : uint { C1_UPPER = 0x0001 }
enum : uint { C1_LOWER = 0x0002 }
enum : uint { C1_DIGIT = 0x0004 }
enum : uint { C1_SPACE = 0x0008 }
enum : uint { C1_PUNCT = 0x0010 }
enum : uint { C1_CNTRL = 0x0020 }
enum : uint { C1_BLANK = 0x0040 }
enum : uint { C1_XDIGIT = 0x0080 }
enum : uint { C1_ALPHA = 0x0100 }
enum : uint { C1_DEFINED = 0x0200 }

enum : uint { C2_LEFTTORIGHT = 0x0001 }
enum : uint { C2_RIGHTTOLEFT = 0x0002 }

enum : uint { C2_EUROPENUMBER = 0x0003 }
enum : uint { C2_EUROPESEPARATOR = 0x0004 }
enum : uint { C2_EUROPETERMINATOR = 0x0005 }
enum : uint { C2_ARABICNUMBER = 0x0006 }
enum : uint { C2_COMMONSEPARATOR = 0x0007 }

enum : uint { C2_BLOCKSEPARATOR = 0x0008 }
enum : uint { C2_SEGMENTSEPARATOR = 0x0009 }
enum : uint { C2_WHITESPACE = 0x000A }
enum : uint { C2_OTHERNEUTRAL = 0x000B }

enum : uint { C2_NOTAPPLICABLE = 0x0000 }

enum : uint { C3_NONSPACING = 0x0001 }
enum : uint { C3_DIACRITIC = 0x0002 }
enum : uint { C3_VOWELMARK = 0x0004 }
enum : uint { C3_SYMBOL = 0x0008 }

enum : uint { C3_KATAKANA = 0x0010 }
enum : uint { C3_HIRAGANA = 0x0020 }
enum : uint { C3_HALFWIDTH = 0x0040 }
enum : uint { C3_FULLWIDTH = 0x0080 }
enum : uint { C3_IDEOGRAPH = 0x0100 }
enum : uint { C3_KASHIDA = 0x0200 }
enum : uint { C3_LEXICAL = 0x0400 }

enum : uint { C3_ALPHA = 0x8000 }

enum : uint { C3_NOTAPPLICABLE = 0x0000 }

enum : uint { NORM_IGNORECASE = 0x00000001 }
enum : uint { NORM_IGNORENONSPACE = 0x00000002 }
enum : uint { NORM_IGNORESYMBOLS = 0x00000004 }

enum : uint { NORM_IGNOREKANATYPE = 0x00010000 }
enum : uint { NORM_IGNOREWIDTH = 0x00020000 }

enum : uint { MAP_FOLDCZONE = 0x00000010 }
enum : uint { MAP_PRECOMPOSED = 0x00000020 }
enum : uint { MAP_COMPOSITE = 0x00000040 }
enum : uint { MAP_FOLDDIGITS = 0x00000080 }

// #if(WINVER >= 0x0500)
enum : uint { MAP_EXPAND_LIGATURES = 0x00002000 }
// #endif /* WINVER >= 0x0500 */

enum : uint { LCMAP_LOWERCASE = 0x00000100 }
enum : uint { LCMAP_UPPERCASE = 0x00000200 }
enum : uint { LCMAP_SORTKEY = 0x00000400 }
enum : uint { LCMAP_BYTEREV = 0x00000800 }

enum : uint { LCMAP_HIRAGANA = 0x00100000 }
enum : uint { LCMAP_KATAKANA = 0x00200000 }
enum : uint { LCMAP_HALFWIDTH = 0x00400000 }
enum : uint { LCMAP_FULLWIDTH = 0x00800000 }

enum : uint { LCMAP_LINGUISTIC_CASING = 0x01000000 }

enum : uint { LCMAP_SIMPLIFIED_CHINESE = 0x02000000 }
enum : uint { LCMAP_TRADITIONAL_CHINESE = 0x04000000 }

enum : uint { LGRPID_INSTALLED = 0x00000001 }
enum : uint { LGRPID_SUPPORTED = 0x00000002 }

enum : uint { LCID_INSTALLED = 0x00000001 }
enum : uint { LCID_SUPPORTED = 0x00000002 }
enum : uint { LCID_ALTERNATE_SORTS = 0x00000004 }

enum : uint { CP_INSTALLED = 0x00000001 }
enum : uint { CP_SUPPORTED = 0x00000002 }

enum : uint { SORT_STRINGSORT = 0x00001000 }

enum : uint { CSTR_LESS_THAN = 1 }
enum : uint { CSTR_EQUAL = 2 }
enum : uint { CSTR_GREATER_THAN = 3 }

enum : uint { CP_ACP = 0 }
enum : uint { CP_OEMCP = 1 }
enum : uint { CP_MACCP = 2 }
enum : uint { CP_THREAD_ACP = 3 }
enum : uint { CP_SYMBOL = 42 }

enum : uint { CP_UTF7 = 65000 }
enum : uint { CP_UTF8 = 65001 }

enum : uint { CTRY_DEFAULT = 0 }

enum : uint { CTRY_ALBANIA = 355 }
enum : uint { CTRY_ALGERIA = 213 }
enum : uint { CTRY_ARGENTINA = 54 }
enum : uint { CTRY_ARMENIA = 374 }
enum : uint { CTRY_AUSTRALIA = 61 }
enum : uint { CTRY_AUSTRIA = 43 }
enum : uint { CTRY_AZERBAIJAN = 994 }
enum : uint { CTRY_BAHRAIN = 973 }
enum : uint { CTRY_BELARUS = 375 }
enum : uint { CTRY_BELGIUM = 32 }
enum : uint { CTRY_BELIZE = 501 }
enum : uint { CTRY_BOLIVIA = 591 }
enum : uint { CTRY_BRAZIL = 55 }
enum : uint { CTRY_BRUNEI_DARUSSALAM = 673 }
enum : uint { CTRY_BULGARIA = 359 }
enum : uint { CTRY_CANADA = 2 }
enum : uint { CTRY_CARIBBEAN = 1 }
enum : uint { CTRY_CHILE = 56 }
enum : uint { CTRY_COLOMBIA = 57 }
enum : uint { CTRY_COSTA_RICA = 506 }
enum : uint { CTRY_CROATIA = 385 }
enum : uint { CTRY_CZECH = 420 }
enum : uint { CTRY_DENMARK = 45 }
enum : uint { CTRY_DOMINICAN_REPUBLIC = 1 }
enum : uint { CTRY_ECUADOR = 593 }
enum : uint { CTRY_EGYPT = 20 }
enum : uint { CTRY_EL_SALVADOR = 503 }
enum : uint { CTRY_ESTONIA = 372 }
enum : uint { CTRY_FAEROE_ISLANDS = 298 }
enum : uint { CTRY_FINLAND = 358 }
enum : uint { CTRY_FRANCE = 33 }
enum : uint { CTRY_GEORGIA = 995 }
enum : uint { CTRY_GERMANY = 49 }
enum : uint { CTRY_GREECE = 30 }
enum : uint { CTRY_GUATEMALA = 502 }
enum : uint { CTRY_HONDURAS = 504 }
enum : uint { CTRY_HONG_KONG = 852 }
enum : uint { CTRY_HUNGARY = 36 }
enum : uint { CTRY_ICELAND = 354 }
enum : uint { CTRY_INDIA = 91 }
enum : uint { CTRY_INDONESIA = 62 }
enum : uint { CTRY_IRAN = 981 }
enum : uint { CTRY_IRAQ = 964 }
enum : uint { CTRY_IRELAND = 353 }
enum : uint { CTRY_ISRAEL = 972 }
enum : uint { CTRY_ITALY = 39 }
enum : uint { CTRY_JAMAICA = 1 }
enum : uint { CTRY_JAPAN = 81 }
enum : uint { CTRY_JORDAN = 962 }
enum : uint { CTRY_KAZAKSTAN = 7 }
enum : uint { CTRY_KENYA = 254 }
enum : uint { CTRY_KUWAIT = 965 }
enum : uint { CTRY_KYRGYZSTAN = 996 }
enum : uint { CTRY_LATVIA = 371 }
enum : uint { CTRY_LEBANON = 961 }
enum : uint { CTRY_LIBYA = 218 }
enum : uint { CTRY_LIECHTENSTEIN = 41 }
enum : uint { CTRY_LITHUANIA = 370 }
enum : uint { CTRY_LUXEMBOURG = 352 }
enum : uint { CTRY_MACAU = 853 }
enum : uint { CTRY_MACEDONIA = 389 }
enum : uint { CTRY_MALAYSIA = 60 }
enum : uint { CTRY_MALDIVES = 960 }
enum : uint { CTRY_MEXICO = 52 }
enum : uint { CTRY_MONACO = 33 }
enum : uint { CTRY_MONGOLIA = 976 }
enum : uint { CTRY_MOROCCO = 212 }
enum : uint { CTRY_NETHERLANDS = 31 }
enum : uint { CTRY_NEW_ZEALAND = 64 }
enum : uint { CTRY_NICARAGUA = 505 }
enum : uint { CTRY_NORWAY = 47 }
enum : uint { CTRY_OMAN = 968 }
enum : uint { CTRY_PAKISTAN = 92 }
enum : uint { CTRY_PANAMA = 507 }
enum : uint { CTRY_PARAGUAY = 595 }
enum : uint { CTRY_PERU = 51 }
enum : uint { CTRY_PHILIPPINES = 63 }
enum : uint { CTRY_POLAND = 48 }
enum : uint { CTRY_PORTUGAL = 351 }
enum : uint { CTRY_PRCHINA = 86 }
enum : uint { CTRY_PUERTO_RICO = 1 }
enum : uint { CTRY_QATAR = 974 }
enum : uint { CTRY_ROMANIA = 40 }
enum : uint { CTRY_RUSSIA = 7 }
enum : uint { CTRY_SAUDI_ARABIA = 966 }
enum : uint { CTRY_SERBIA = 381 }
enum : uint { CTRY_SINGAPORE = 65 }
enum : uint { CTRY_SLOVAK = 421 }
enum : uint { CTRY_SLOVENIA = 386 }
enum : uint { CTRY_SOUTH_AFRICA = 27 }
enum : uint { CTRY_SOUTH_KOREA = 82 }
enum : uint { CTRY_SPAIN = 34 }
enum : uint { CTRY_SWEDEN = 46 }
enum : uint { CTRY_SWITZERLAND = 41 }
enum : uint { CTRY_SYRIA = 963 }
enum : uint { CTRY_TAIWAN = 886 }
enum : uint { CTRY_TATARSTAN = 7 }
enum : uint { CTRY_THAILAND = 66 }
enum : uint { CTRY_TRINIDAD_Y_TOBAGO = 1 }
enum : uint { CTRY_TUNISIA = 216 }
enum : uint { CTRY_TURKEY = 90 }
enum : uint { CTRY_UAE = 971 }
enum : uint { CTRY_UKRAINE = 380 }
enum : uint { CTRY_UNITED_KINGDOM = 44 }
enum : uint { CTRY_UNITED_STATES = 1 }
enum : uint { CTRY_URUGUAY = 598 }
enum : uint { CTRY_UZBEKISTAN = 7 }
enum : uint { CTRY_VENEZUELA = 58 }
enum : uint { CTRY_VIET_NAM = 84 }
enum : uint { CTRY_YEMEN = 967 }
enum : uint { CTRY_ZIMBABWE = 263 }

enum : uint { LOCALE_NOUSEROVERRIDE = 0x80000000 }
enum : uint { LOCALE_USE_CP_ACP = 0x40000000 }

// #if(WINVER >= 0x0400)
enum : uint { LOCALE_RETURN_NUMBER = 0x20000000 }
// #endif /* WINVER >= 0x0400 */

enum : uint { LOCALE_ILANGUAGE = 0x00000001 }
enum : uint { LOCALE_SLANGUAGE = 0x00000002 }
enum : uint { LOCALE_SENGLANGUAGE = 0x00001001 }
enum : uint { LOCALE_SABBREVLANGNAME = 0x00000003 }
enum : uint { LOCALE_SNATIVELANGNAME = 0x00000004 }

enum : uint { LOCALE_ICOUNTRY = 0x00000005 }
enum : uint { LOCALE_SCOUNTRY = 0x00000006 }
enum : uint { LOCALE_SENGCOUNTRY = 0x00001002 }
enum : uint { LOCALE_SABBREVCTRYNAME = 0x00000007 }
enum : uint { LOCALE_SNATIVECTRYNAME = 0x00000008 }

enum : uint { LOCALE_IDEFAULTLANGUAGE = 0x00000009 }
enum : uint { LOCALE_IDEFAULTCOUNTRY = 0x0000000A }
enum : uint { LOCALE_IDEFAULTCODEPAGE = 0x0000000B }
enum : uint { LOCALE_IDEFAULTANSICODEPAGE = 0x00001004 }
enum : uint { LOCALE_IDEFAULTMACCODEPAGE = 0x00001011 }

enum : uint { LOCALE_SLIST = 0x0000000C }
enum : uint { LOCALE_IMEASURE = 0x0000000D }

enum : uint { LOCALE_SDECIMAL = 0x0000000E }
enum : uint { LOCALE_STHOUSAND = 0x0000000F }
enum : uint { LOCALE_SGROUPING = 0x00000010 }
enum : uint { LOCALE_IDIGITS = 0x00000011 }
enum : uint { LOCALE_ILZERO = 0x00000012 }
enum : uint { LOCALE_INEGNUMBER = 0x00001010 }
enum : uint { LOCALE_SNATIVEDIGITS = 0x00000013 }

enum : uint { LOCALE_SCURRENCY = 0x00000014 }
enum : uint { LOCALE_SINTLSYMBOL = 0x00000015 }
enum : uint { LOCALE_SMONDECIMALSEP = 0x00000016 }
enum : uint { LOCALE_SMONTHOUSANDSEP = 0x00000017 }
enum : uint { LOCALE_SMONGROUPING = 0x00000018 }
enum : uint { LOCALE_ICURRDIGITS = 0x00000019 }
enum : uint { LOCALE_IINTLCURRDIGITS = 0x0000001A }
enum : uint { LOCALE_ICURRENCY = 0x0000001B }
enum : uint { LOCALE_INEGCURR = 0x0000001C }

enum : uint { LOCALE_SDATE = 0x0000001D }
enum : uint { LOCALE_STIME = 0x0000001E }
enum : uint { LOCALE_SSHORTDATE = 0x0000001F }
enum : uint { LOCALE_SLONGDATE = 0x00000020 }
enum : uint { LOCALE_STIMEFORMAT = 0x00001003 }
enum : uint { LOCALE_IDATE = 0x00000021 }
enum : uint { LOCALE_ILDATE = 0x00000022 }
enum : uint { LOCALE_ITIME = 0x00000023 }
enum : uint { LOCALE_ITIMEMARKPOSN = 0x00001005 }
enum : uint { LOCALE_ICENTURY = 0x00000024 }
enum : uint { LOCALE_ITLZERO = 0x00000025 }
enum : uint { LOCALE_IDAYLZERO = 0x00000026 }
enum : uint { LOCALE_IMONLZERO = 0x00000027 }
enum : uint { LOCALE_S1159 = 0x00000028 }
enum : uint { LOCALE_S2359 = 0x00000029 }

enum : uint { LOCALE_ICALENDARTYPE = 0x00001009 }
enum : uint { LOCALE_IOPTIONALCALENDAR = 0x0000100B }
enum : uint { LOCALE_IFIRSTDAYOFWEEK = 0x0000100C }
enum : uint { LOCALE_IFIRSTWEEKOFYEAR = 0x0000100D }

enum : uint { LOCALE_SDAYNAME1 = 0x0000002A }
enum : uint { LOCALE_SDAYNAME2 = 0x0000002B }
enum : uint { LOCALE_SDAYNAME3 = 0x0000002C }
enum : uint { LOCALE_SDAYNAME4 = 0x0000002D }
enum : uint { LOCALE_SDAYNAME5 = 0x0000002E }
enum : uint { LOCALE_SDAYNAME6 = 0x0000002F }
enum : uint { LOCALE_SDAYNAME7 = 0x00000030 }
enum : uint { LOCALE_SABBREVDAYNAME1 = 0x00000031 }
enum : uint { LOCALE_SABBREVDAYNAME2 = 0x00000032 }
enum : uint { LOCALE_SABBREVDAYNAME3 = 0x00000033 }
enum : uint { LOCALE_SABBREVDAYNAME4 = 0x00000034 }
enum : uint { LOCALE_SABBREVDAYNAME5 = 0x00000035 }
enum : uint { LOCALE_SABBREVDAYNAME6 = 0x00000036 }
enum : uint { LOCALE_SABBREVDAYNAME7 = 0x00000037 }
enum : uint { LOCALE_SMONTHNAME1 = 0x00000038 }
enum : uint { LOCALE_SMONTHNAME2 = 0x00000039 }
enum : uint { LOCALE_SMONTHNAME3 = 0x0000003A }
enum : uint { LOCALE_SMONTHNAME4 = 0x0000003B }
enum : uint { LOCALE_SMONTHNAME5 = 0x0000003C }
enum : uint { LOCALE_SMONTHNAME6 = 0x0000003D }
enum : uint { LOCALE_SMONTHNAME7 = 0x0000003E }
enum : uint { LOCALE_SMONTHNAME8 = 0x0000003F }
enum : uint { LOCALE_SMONTHNAME9 = 0x00000040 }
enum : uint { LOCALE_SMONTHNAME10 = 0x00000041 }
enum : uint { LOCALE_SMONTHNAME11 = 0x00000042 }
enum : uint { LOCALE_SMONTHNAME12 = 0x00000043 }
enum : uint { LOCALE_SMONTHNAME13 = 0x0000100E }
enum : uint { LOCALE_SABBREVMONTHNAME1 = 0x00000044 }
enum : uint { LOCALE_SABBREVMONTHNAME2 = 0x00000045 }
enum : uint { LOCALE_SABBREVMONTHNAME3 = 0x00000046 }
enum : uint { LOCALE_SABBREVMONTHNAME4 = 0x00000047 }
enum : uint { LOCALE_SABBREVMONTHNAME5 = 0x00000048 }
enum : uint { LOCALE_SABBREVMONTHNAME6 = 0x00000049 }
enum : uint { LOCALE_SABBREVMONTHNAME7 = 0x0000004A }
enum : uint { LOCALE_SABBREVMONTHNAME8 = 0x0000004B }
enum : uint { LOCALE_SABBREVMONTHNAME9 = 0x0000004C }
enum : uint { LOCALE_SABBREVMONTHNAME10 = 0x0000004D }
enum : uint { LOCALE_SABBREVMONTHNAME11 = 0x0000004E }
enum : uint { LOCALE_SABBREVMONTHNAME12 = 0x0000004F }
enum : uint { LOCALE_SABBREVMONTHNAME13 = 0x0000100F }

enum : uint { LOCALE_SPOSITIVESIGN = 0x00000050 }
enum : uint { LOCALE_SNEGATIVESIGN = 0x00000051 }
enum : uint { LOCALE_IPOSSIGNPOSN = 0x00000052 }
enum : uint { LOCALE_INEGSIGNPOSN = 0x00000053 }
enum : uint { LOCALE_IPOSSYMPRECEDES = 0x00000054 }
enum : uint { LOCALE_IPOSSEPBYSPACE = 0x00000055 }
enum : uint { LOCALE_INEGSYMPRECEDES = 0x00000056 }
enum : uint { LOCALE_INEGSEPBYSPACE = 0x00000057 }

// #if(WINVER >= 0x0400)
enum : uint { LOCALE_FONTSIGNATURE = 0x00000058 }
enum : uint { LOCALE_SISO639LANGNAME = 0x00000059 }
enum : uint { LOCALE_SISO3166CTRYNAME = 0x0000005A }
// #endif /* WINVER >= 0x0400 */

// #if(WINVER >= 0x0500)
enum : uint { LOCALE_IDEFAULTEBCDICCODEPAGE = 0x00001012 }
enum : uint { LOCALE_IPAPERSIZE = 0x0000100A }
enum : uint { LOCALE_SENGCURRNAME = 0x00001007 }
enum : uint { LOCALE_SNATIVECURRNAME = 0x00001008 }
enum : uint { LOCALE_SYEARMONTH = 0x00001006 }
enum : uint { LOCALE_SSORTNAME = 0x00001013 }
enum : uint { LOCALE_IDIGITSUBSTITUTION = 0x00001014 }

// #endif /* WINVER >= 0x0500 */

enum : uint { TIME_NOMINUTESORSECONDS = 0x00000001 }
enum : uint { TIME_NOSECONDS = 0x00000002 }
enum : uint { TIME_NOTIMEMARKER = 0x00000004 }
enum : uint { TIME_FORCE24HOURFORMAT = 0x00000008 }

enum : uint { DATE_SHORTDATE = 0x00000001 }
enum : uint { DATE_LONGDATE = 0x00000002 }
enum : uint { DATE_USE_ALT_CALENDAR = 0x00000004 }

// #if(WINVER >= 0x0500)
enum : uint { DATE_YEARMONTH = 0x00000008 }
enum : uint { DATE_LTRREADING = 0x00000010 }
enum : uint { DATE_RTLREADING = 0x00000020 }
// #endif /* WINVER >= 0x0500 */

// #if(WINVER >= 0x0500)
alias LOCALE_NOUSEROVERRIDE CAL_NOUSEROVERRIDE;
alias LOCALE_USE_CP_ACP CAL_USE_CP_ACP;
alias LOCALE_RETURN_NUMBER CAL_RETURN_NUMBER;
// #endif /* WINVER >= 0x0500 */

enum : uint { CAL_ICALINTVALUE = 0x00000001 }
enum : uint { CAL_SCALNAME = 0x00000002 }
enum : uint { CAL_IYEAROFFSETRANGE = 0x00000003 }
enum : uint { CAL_SERASTRING = 0x00000004 }
enum : uint { CAL_SSHORTDATE = 0x00000005 }
enum : uint { CAL_SLONGDATE = 0x00000006 }
enum : uint { CAL_SDAYNAME1 = 0x00000007 }
enum : uint { CAL_SDAYNAME2 = 0x00000008 }
enum : uint { CAL_SDAYNAME3 = 0x00000009 }
enum : uint { CAL_SDAYNAME4 = 0x0000000a }
enum : uint { CAL_SDAYNAME5 = 0x0000000b }
enum : uint { CAL_SDAYNAME6 = 0x0000000c }
enum : uint { CAL_SDAYNAME7 = 0x0000000d }
enum : uint { CAL_SABBREVDAYNAME1 = 0x0000000e }
enum : uint { CAL_SABBREVDAYNAME2 = 0x0000000f }
enum : uint { CAL_SABBREVDAYNAME3 = 0x00000010 }
enum : uint { CAL_SABBREVDAYNAME4 = 0x00000011 }
enum : uint { CAL_SABBREVDAYNAME5 = 0x00000012 }
enum : uint { CAL_SABBREVDAYNAME6 = 0x00000013 }
enum : uint { CAL_SABBREVDAYNAME7 = 0x00000014 }
enum : uint { CAL_SMONTHNAME1 = 0x00000015 }
enum : uint { CAL_SMONTHNAME2 = 0x00000016 }
enum : uint { CAL_SMONTHNAME3 = 0x00000017 }
enum : uint { CAL_SMONTHNAME4 = 0x00000018 }
enum : uint { CAL_SMONTHNAME5 = 0x00000019 }
enum : uint { CAL_SMONTHNAME6 = 0x0000001a }
enum : uint { CAL_SMONTHNAME7 = 0x0000001b }
enum : uint { CAL_SMONTHNAME8 = 0x0000001c }
enum : uint { CAL_SMONTHNAME9 = 0x0000001d }
enum : uint { CAL_SMONTHNAME10 = 0x0000001e }
enum : uint { CAL_SMONTHNAME11 = 0x0000001f }
enum : uint { CAL_SMONTHNAME12 = 0x00000020 }
enum : uint { CAL_SMONTHNAME13 = 0x00000021 }
enum : uint { CAL_SABBREVMONTHNAME1 = 0x00000022 }
enum : uint { CAL_SABBREVMONTHNAME2 = 0x00000023 }
enum : uint { CAL_SABBREVMONTHNAME3 = 0x00000024 }
enum : uint { CAL_SABBREVMONTHNAME4 = 0x00000025 }
enum : uint { CAL_SABBREVMONTHNAME5 = 0x00000026 }
enum : uint { CAL_SABBREVMONTHNAME6 = 0x00000027 }
enum : uint { CAL_SABBREVMONTHNAME7 = 0x00000028 }
enum : uint { CAL_SABBREVMONTHNAME8 = 0x00000029 }
enum : uint { CAL_SABBREVMONTHNAME9 = 0x0000002a }
enum : uint { CAL_SABBREVMONTHNAME10 = 0x0000002b }
enum : uint { CAL_SABBREVMONTHNAME11 = 0x0000002c }
enum : uint { CAL_SABBREVMONTHNAME12 = 0x0000002d }
enum : uint { CAL_SABBREVMONTHNAME13 = 0x0000002e }

// #if(WINVER >= 0x0500)
enum : uint { CAL_SYEARMONTH = 0x0000002f }
enum : uint { CAL_ITWODIGITYEARMAX = 0x00000030 }
// #endif /* WINVER >= 0x0500 */

enum : uint { ENUM_ALL_CALENDARS = 0xffffffff }

enum : uint { CAL_GREGORIAN = 1 }
enum : uint { CAL_GREGORIAN_US = 2 }
enum : uint { CAL_JAPAN = 3 }
enum : uint { CAL_TAIWAN = 4 }
enum : uint { CAL_KOREA = 5 }
enum : uint { CAL_HIJRI = 6 }
enum : uint { CAL_THAI = 7 }
enum : uint { CAL_HEBREW = 8 }
enum : uint { CAL_GREGORIAN_ME_FRENCH = 9 }
enum : uint { CAL_GREGORIAN_ARABIC = 10 }
enum : uint { CAL_GREGORIAN_XLIT_ENGLISH = 11 }
enum : uint { CAL_GREGORIAN_XLIT_FRENCH = 12 }

enum : uint { LGRPID_WESTERN_EUROPE = 0x0001 }
enum : uint { LGRPID_CENTRAL_EUROPE = 0x0002 }
enum : uint { LGRPID_BALTIC = 0x0003 }
enum : uint { LGRPID_GREEK = 0x0004 }
enum : uint { LGRPID_CYRILLIC = 0x0005 }
enum : uint { LGRPID_TURKISH = 0x0006 }
enum : uint { LGRPID_JAPANESE = 0x0007 }
enum : uint { LGRPID_KOREAN = 0x0008 }
enum : uint { LGRPID_TRADITIONAL_CHINESE = 0x0009 }
enum : uint { LGRPID_SIMPLIFIED_CHINESE = 0x000a }
enum : uint { LGRPID_THAI = 0x000b }
enum : uint { LGRPID_HEBREW = 0x000c }
enum : uint { LGRPID_ARABIC = 0x000d }
enum : uint { LGRPID_VIETNAMESE = 0x000e }
enum : uint { LGRPID_INDIC = 0x000f }
enum : uint { LGRPID_GEORGIAN = 0x0010 }
enum : uint { LGRPID_ARMENIAN = 0x0011 }

alias DWORD LGRPID;

alias DWORD LCTYPE;

alias DWORD CALTYPE;

alias DWORD CALID;

struct _cpinfo {
  UINT MaxCharSize;
  BYTE DefaultChar[MAX_DEFAULTCHAR];
  BYTE LeadByte[MAX_LEADBYTES];
}
alias _cpinfo CPINFO;
alias _cpinfo* LPCPINFO;

struct _cpinfoexA {
  UINT MaxCharSize;
  BYTE DefaultChar[MAX_DEFAULTCHAR];
  BYTE LeadByte[MAX_LEADBYTES];
  WCHAR UnicodeDefaultChar;
  UINT CodePage;
  CHAR CodePageName[MAX_PATH];
}
alias _cpinfoexA CPINFOEXA;
alias _cpinfoexA* LPCPINFOEXA;

struct _cpinfoexW {
  UINT MaxCharSize;
  BYTE DefaultChar[MAX_DEFAULTCHAR];
  BYTE LeadByte[MAX_LEADBYTES];
  WCHAR UnicodeDefaultChar;
  UINT CodePage;
  WCHAR CodePageName[MAX_PATH];
}
alias _cpinfoexW CPINFOEXW;
alias _cpinfoexW* LPCPINFOEXW;

// #ifdef UNICODE
alias CPINFOEXW CPINFOEX;
alias LPCPINFOEXW LPCPINFOEX;
// #else
// ...
// #endif // UNICODE

struct _numberfmtA {
  UINT NumDigits;
  UINT LeadingZero;
  UINT Grouping;
  LPSTR lpDecimalSep;
  LPSTR lpThousandSep;
  UINT NegativeOrder;
}
alias _numberfmtA NUMBERFMTA;
alias _numberfmtA* LPNUMBERFMTA;

struct _numberfmtW {
  UINT NumDigits;
  UINT LeadingZero;
  UINT Grouping;
  LPWSTR lpDecimalSep;
  LPWSTR lpThousandSep;
  UINT NegativeOrder;
}
alias _numberfmtW NUMBERFMTW;
alias _numberfmtW* LPNUMBERFMTW;

// #ifdef UNICODE
alias NUMBERFMTW NUMBERFMT;
alias LPNUMBERFMTW LPNUMBERFMT;
// #else
// ...
// #endif // UNICODE

struct _currencyfmtA {
  UINT NumDigits;
  UINT LeadingZero;
  UINT Grouping;
  LPSTR lpDecimalSep;
  LPSTR lpThousandSep;
  UINT NegativeOrder;
  UINT PositiveOrder;
  LPSTR lpCurrencySymbol;
}
alias _currencyfmtA CURRENCYFMTA;
alias _currencyfmtA* LPCURRENCYFMTA;

struct _currencyfmtW {
  UINT NumDigits;
  UINT LeadingZero;
  UINT Grouping;
  LPWSTR lpDecimalSep;
  LPWSTR lpThousandSep;
  UINT NegativeOrder;
  UINT PositiveOrder;
  LPWSTR lpCurrencySymbol;
}
alias _currencyfmtW CURRENCYFMTW;
alias _currencyfmtW* LPCURRENCYFMTW;

// #ifdef UNICODE
alias CURRENCYFMTW CURRENCYFMT;
alias LPCURRENCYFMTW LPCURRENCYFMT;
// #else
// ...
// #endif // UNICODE

alias LONG GEOID;
alias DWORD GEOTYPE;
alias DWORD GEOCLASS;

enum { GEOID_NOT_AVAILABLE = -1 }

enum SYSGEOTYPE {
  GEO_NATION = 0x0001,
  GEO_LATITUDE = 0x0002,
  GEO_LONGITUDE = 0x0003,
  GEO_ISO2 = 0x0004,
  GEO_ISO3 = 0x0005,
  GEO_RFC1766 = 0x0006,
  GEO_LCID = 0x0007,
  GEO_FRIENDLYNAME = 0x0008,
  GEO_OFFICIALNAME = 0x0009,
  GEO_TIMEZONES = 0x000A,
  GEO_OFFICIALLANGUAGES = 0x000B,
}

enum SYSGEOCLASS {
  GEOCLASS_NATION = 16,
  GEOCLASS_REGION = 14,
}

// #ifdef STRICT

// ...

// ...

// #else // !STRICT

alias FARPROC LANGUAGEGROUP_ENUMPROCA;
alias FARPROC LANGGROUPLOCALE_ENUMPROCA;
alias FARPROC UILANGUAGE_ENUMPROCA;
alias FARPROC LOCALE_ENUMPROCA;
alias FARPROC CODEPAGE_ENUMPROCA;
alias FARPROC DATEFMT_ENUMPROCA;
alias FARPROC DATEFMT_ENUMPROCEXA;
alias FARPROC TIMEFMT_ENUMPROCA;
alias FARPROC CALINFO_ENUMPROCA;
alias FARPROC CALINFO_ENUMPROCEXA;
alias FARPROC GEO_ENUMPROC;

alias FARPROC LANGUAGEGROUP_ENUMPROCW;
alias FARPROC LANGGROUPLOCALE_ENUMPROCW;
alias FARPROC UILANGUAGE_ENUMPROCW;
alias FARPROC LOCALE_ENUMPROCW;
alias FARPROC CODEPAGE_ENUMPROCW;
alias FARPROC DATEFMT_ENUMPROCW;
alias FARPROC DATEFMT_ENUMPROCEXW;
alias FARPROC TIMEFMT_ENUMPROCW;
alias FARPROC CALINFO_ENUMPROCW;
alias FARPROC CALINFO_ENUMPROCEXW;

// #endif // !STRICT

// #ifdef UNICODE

alias LANGUAGEGROUP_ENUMPROCW LANGUAGEGROUP_ENUMPROC;
alias LANGGROUPLOCALE_ENUMPROCW LANGGROUPLOCALE_ENUMPROC;
alias UILANGUAGE_ENUMPROCW UILANGUAGE_ENUMPROC;
alias LOCALE_ENUMPROCW LOCALE_ENUMPROC;
alias CODEPAGE_ENUMPROCW CODEPAGE_ENUMPROC;
alias DATEFMT_ENUMPROCW DATEFMT_ENUMPROC;
alias DATEFMT_ENUMPROCEXW DATEFMT_ENUMPROCEX;
alias TIMEFMT_ENUMPROCW TIMEFMT_ENUMPROC;
alias CALINFO_ENUMPROCW CALINFO_ENUMPROC;
alias CALINFO_ENUMPROCEXW CALINFO_ENUMPROCEX;

// #else

// #...
// #...
// #...
// #...
// #...
// #...
// #...
// #...
// #...
// #...

// #endif // !UNICODE

extern(Windows) export BOOL IsValidCodePage(
     UINT  CodePage);

extern(Windows) export UINT GetACP();

extern(Windows) export UINT GetOEMCP();

extern(Windows) export BOOL GetCPInfo(
     UINT       CodePage,
     LPCPINFO  lpCPInfo);

extern(Windows) export BOOL GetCPInfoExA(
     UINT          CodePage,
     DWORD         dwFlags,
     LPCPINFOEXA  lpCPInfoEx);
extern(Windows) export BOOL GetCPInfoExW(
     UINT          CodePage,
     DWORD         dwFlags,
     LPCPINFOEXW  lpCPInfoEx);
// #ifdef UNICODE
alias GetCPInfoExW GetCPInfoEx;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL IsDBCSLeadByte(
     BYTE  TestChar);

extern(Windows) export BOOL IsDBCSLeadByteEx(
     UINT  CodePage,
     BYTE  TestChar);

extern(Windows) export int MultiByteToWideChar(
     UINT     CodePage,
     DWORD    dwFlags,
     LPCSTR   lpMultiByteStr,
     int      cbMultiByte,
     LPWSTR  lpWideCharStr,
     int      cchWideChar);

extern(Windows) export int WideCharToMultiByte(
     UINT     CodePage,
     DWORD    dwFlags,
     LPCWSTR  lpWideCharStr,
     int      cchWideChar,
     LPSTR   lpMultiByteStr,
     int      cbMultiByte,
     LPCSTR   lpDefaultChar,
     LPBOOL  lpUsedDefaultChar);

extern(Windows) export int CompareStringA(
     LCID     Locale,
     DWORD    dwCmpFlags,
     LPCSTR  lpString1,
     int      cchCount1,
     LPCSTR  lpString2,
     int      cchCount2);
extern(Windows) export int CompareStringW(
     LCID     Locale,
     DWORD    dwCmpFlags,
     LPCWSTR  lpString1,
     int      cchCount1,
     LPCWSTR  lpString2,
     int      cchCount2);
// #ifdef UNICODE
alias CompareStringW CompareString;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export int LCMapStringA(
     LCID     Locale,
     DWORD    dwMapFlags,
     LPCSTR  lpSrcStr,
     int      cchSrc,
     LPSTR  lpDestStr,
     int      cchDest);
extern(Windows) export int LCMapStringW(
     LCID     Locale,
     DWORD    dwMapFlags,
     LPCWSTR  lpSrcStr,
     int      cchSrc,
     LPWSTR  lpDestStr,
     int      cchDest);
// #ifdef UNICODE
alias LCMapStringW LCMapString;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export int GetLocaleInfoA(
     LCID     Locale,
     LCTYPE   LCType,
     LPSTR  lpLCData,
     int      cchData);
extern(Windows) export int GetLocaleInfoW(
     LCID     Locale,
     LCTYPE   LCType,
     LPWSTR  lpLCData,
     int      cchData);
// #ifdef UNICODE
alias GetLocaleInfoW GetLocaleInfo;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL SetLocaleInfoA(
     LCID     Locale,
     LCTYPE   LCType,
     LPCSTR  lpLCData);
extern(Windows) export BOOL SetLocaleInfoW(
     LCID     Locale,
     LCTYPE   LCType,
     LPCWSTR  lpLCData);
// #ifdef UNICODE
alias SetLocaleInfoW SetLocaleInfo;
// #else
// #...
// #endif // !UNICODE

// #if (WINVER >= 0x040A)
extern(Windows) export int GetCalendarInfoA(
    LCID     Locale,
    CALID    Calendar,
    CALTYPE  CalType,
    LPSTR   lpCalData,
    int      cchData,
    LPDWORD  lpValue);
extern(Windows) export int GetCalendarInfoW(
    LCID     Locale,
    CALID    Calendar,
    CALTYPE  CalType,
    LPWSTR   lpCalData,
    int      cchData,
    LPDWORD  lpValue);
// #ifdef UNICODE
alias GetCalendarInfoW GetCalendarInfo;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL SetCalendarInfoA(
    LCID     Locale,
    CALID    Calendar,
    CALTYPE  CalType,
    LPCSTR  lpCalData);
extern(Windows) export BOOL SetCalendarInfoW(
    LCID     Locale,
    CALID    Calendar,
    CALTYPE  CalType,
    LPCWSTR  lpCalData);
// #ifdef UNICODE
alias SetCalendarInfoW SetCalendarInfo;
// #else
// #...
// #endif // !UNICODE
// #endif

extern(Windows) export int GetTimeFormatA(
     LCID             Locale,
     DWORD            dwFlags,
      SYSTEMTIME *lpTime,
     LPCSTR          lpFormat,
     LPSTR          lpTimeStr,
     int              cchTime);
extern(Windows) export int GetTimeFormatW(
     LCID             Locale,
     DWORD            dwFlags,
      SYSTEMTIME *lpTime,
     LPCWSTR          lpFormat,
     LPWSTR          lpTimeStr,
     int              cchTime);
// #ifdef UNICODE
alias GetTimeFormatW GetTimeFormat;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export int GetDateFormatA(
     LCID             Locale,
     DWORD            dwFlags,
      SYSTEMTIME *lpDate,
     LPCSTR          lpFormat,
     LPSTR          lpDateStr,
     int              cchDate);
extern(Windows) export int GetDateFormatW(
     LCID             Locale,
     DWORD            dwFlags,
      SYSTEMTIME *lpDate,
     LPCWSTR          lpFormat,
     LPWSTR          lpDateStr,
     int              cchDate);
// #ifdef UNICODE
alias GetDateFormatW GetDateFormat;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export int GetNumberFormatA(
     LCID             Locale,
     DWORD            dwFlags,
     LPCSTR          lpValue,
      NUMBERFMTA *lpFormat,
     LPSTR          lpNumberStr,
     int              cchNumber);
extern(Windows) export int GetNumberFormatW(
     LCID             Locale,
     DWORD            dwFlags,
     LPCWSTR          lpValue,
      NUMBERFMTW *lpFormat,
     LPWSTR          lpNumberStr,
     int              cchNumber);
// #ifdef UNICODE
alias GetNumberFormatW GetNumberFormat;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export int GetCurrencyFormatA(
     LCID               Locale,
     DWORD              dwFlags,
     LPCSTR            lpValue,
      CURRENCYFMTA *lpFormat,
     LPSTR            lpCurrencyStr,
     int                cchCurrency);
extern(Windows) export int GetCurrencyFormatW(
     LCID               Locale,
     DWORD              dwFlags,
     LPCWSTR            lpValue,
      CURRENCYFMTW *lpFormat,
     LPWSTR            lpCurrencyStr,
     int                cchCurrency);
// #ifdef UNICODE
alias GetCurrencyFormatW GetCurrencyFormat;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL EnumCalendarInfoA(
     CALINFO_ENUMPROCA lpCalInfoEnumProc,
     LCID              Locale,
     CALID             Calendar,
     CALTYPE           CalType);
extern(Windows) export BOOL EnumCalendarInfoW(
     CALINFO_ENUMPROCW lpCalInfoEnumProc,
     LCID              Locale,
     CALID             Calendar,
     CALTYPE           CalType);
// #ifdef UNICODE
alias EnumCalendarInfoW EnumCalendarInfo;
// #else
// #...
// #endif // !UNICODE

// #if(WINVER >= 0x0500)
extern(Windows) export BOOL EnumCalendarInfoExA(
     CALINFO_ENUMPROCEXA lpCalInfoEnumProcEx,
     LCID                Locale,
     CALID               Calendar,
     CALTYPE             CalType);
extern(Windows) export BOOL EnumCalendarInfoExW(
     CALINFO_ENUMPROCEXW lpCalInfoEnumProcEx,
     LCID                Locale,
     CALID               Calendar,
     CALTYPE             CalType);
// #ifdef UNICODE
alias EnumCalendarInfoExW EnumCalendarInfoEx;
// #else
// #...
// #endif // !UNICODE
// #endif /* WINVER >= 0x0500 */

extern(Windows) export BOOL EnumTimeFormatsA(
     TIMEFMT_ENUMPROCA lpTimeFmtEnumProc,
     LCID              Locale,
     DWORD             dwFlags);
extern(Windows) export BOOL EnumTimeFormatsW(
     TIMEFMT_ENUMPROCW lpTimeFmtEnumProc,
     LCID              Locale,
     DWORD             dwFlags);
// #ifdef UNICODE
alias EnumTimeFormatsW EnumTimeFormats;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL EnumDateFormatsA(
     DATEFMT_ENUMPROCA lpDateFmtEnumProc,
     LCID              Locale,
     DWORD             dwFlags);
extern(Windows) export BOOL EnumDateFormatsW(
     DATEFMT_ENUMPROCW lpDateFmtEnumProc,
     LCID              Locale,
     DWORD             dwFlags);
// #ifdef UNICODE
alias EnumDateFormatsW EnumDateFormats;
// #else
// #...
// #endif // !UNICODE

// #if(WINVER >= 0x0500)
extern(Windows) export BOOL EnumDateFormatsExA(
     DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx,
     LCID                Locale,
     DWORD               dwFlags);
extern(Windows) export BOOL EnumDateFormatsExW(
     DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx,
     LCID                Locale,
     DWORD               dwFlags);
// #ifdef UNICODE
alias EnumDateFormatsExW EnumDateFormatsEx;
// #else
// #...
// #endif // !UNICODE
// #endif /* WINVER >= 0x0500 */

// #if(WINVER >= 0x0500)
extern(Windows) export BOOL IsValidLanguageGroup(
     LGRPID  LanguageGroup,
     DWORD   dwFlags);
// #endif /* WINVER >= 0x0500 */

extern(Windows) export BOOL IsValidLocale(
     LCID   Locale,
     DWORD  dwFlags);

extern(Windows) export int GetGeoInfoA(
    GEOID       Location,
    GEOTYPE     GeoType,
    LPSTR     lpGeoData,
    int         cchData,
    LANGID      LangId);
extern(Windows) export int GetGeoInfoW(
    GEOID       Location,
    GEOTYPE     GeoType,
    LPWSTR     lpGeoData,
    int         cchData,
    LANGID      LangId);
// #ifdef UNICODE
alias GetGeoInfoW GetGeoInfo;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL EnumSystemGeoID(
    GEOCLASS        GeoClass,
    GEOID           ParentGeoId,
    GEO_ENUMPROC    lpGeoEnumProc);

extern(Windows) export GEOID GetUserGeoID(
    GEOCLASS    GeoClass);

extern(Windows) export BOOL SetUserGeoID(
    GEOID       GeoId);

extern(Windows) export LCID ConvertDefaultLocale(
      LCID   Locale);

extern(Windows) export LCID GetThreadLocale();

extern(Windows) export BOOL SetThreadLocale(
     LCID  Locale
    );

// #if(WINVER >= 0x0500)
extern(Windows) export LANGID GetSystemDefaultUILanguage();

extern(Windows) export LANGID GetUserDefaultUILanguage();
// #endif /* WINVER >= 0x0500 */

extern(Windows) export LANGID GetSystemDefaultLangID();

extern(Windows) export LANGID GetUserDefaultLangID();

extern(Windows) export LCID GetSystemDefaultLCID();

extern(Windows) export LCID GetUserDefaultLCID();

extern(Windows) export BOOL GetStringTypeExA(
     LCID     Locale,
     DWORD    dwInfoType,
     LPCSTR  lpSrcStr,
     int      cchSrc,
     LPWORD  lpCharType);
extern(Windows) export BOOL GetStringTypeExW(
     LCID     Locale,
     DWORD    dwInfoType,
     LPCWSTR  lpSrcStr,
     int      cchSrc,
     LPWORD  lpCharType);
// #ifdef UNICODE
alias GetStringTypeExW GetStringTypeEx;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL GetStringTypeA(
     LCID     Locale,
     DWORD    dwInfoType,
     LPCSTR   lpSrcStr,
     int      cchSrc,
     LPWORD  lpCharType);

extern(Windows) export BOOL GetStringTypeW(
     DWORD    dwInfoType,
     LPCWSTR  lpSrcStr,
     int      cchSrc,
     LPWORD  lpCharType);

extern(Windows) export int FoldStringA(
     DWORD    dwMapFlags,
     LPCSTR  lpSrcStr,
     int      cchSrc,
     LPSTR  lpDestStr,
     int      cchDest);
extern(Windows) export int FoldStringW(
     DWORD    dwMapFlags,
     LPCWSTR  lpSrcStr,
     int      cchSrc,
     LPWSTR  lpDestStr,
     int      cchDest);
// #ifdef UNICODE
alias FoldStringW FoldString;
// #else
// #...
// #endif // !UNICODE

// #if(WINVER >= 0x0500)
extern(Windows) export BOOL EnumSystemLanguageGroupsA(
     LANGUAGEGROUP_ENUMPROCA lpLanguageGroupEnumProc,
     DWORD                   dwFlags,
     LONG_PTR                lParam);
extern(Windows) export BOOL EnumSystemLanguageGroupsW(
     LANGUAGEGROUP_ENUMPROCW lpLanguageGroupEnumProc,
     DWORD                   dwFlags,
     LONG_PTR                lParam);
// #ifdef UNICODE
alias EnumSystemLanguageGroupsW EnumSystemLanguageGroups;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL EnumLanguageGroupLocalesA(
     LANGGROUPLOCALE_ENUMPROCA lpLangGroupLocaleEnumProc,
     LGRPID                    LanguageGroup,
     DWORD                     dwFlags,
     LONG_PTR                  lParam);
extern(Windows) export BOOL EnumLanguageGroupLocalesW(
     LANGGROUPLOCALE_ENUMPROCW lpLangGroupLocaleEnumProc,
     LGRPID                    LanguageGroup,
     DWORD                     dwFlags,
     LONG_PTR                  lParam);
// #ifdef UNICODE
alias EnumLanguageGroupLocalesW EnumLanguageGroupLocales;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL EnumUILanguagesA(
     UILANGUAGE_ENUMPROCA lpUILanguageEnumProc,
     DWORD                dwFlags,
     LONG_PTR             lParam);
extern(Windows) export BOOL EnumUILanguagesW(
     UILANGUAGE_ENUMPROCW lpUILanguageEnumProc,
     DWORD                dwFlags,
     LONG_PTR             lParam);
// #ifdef UNICODE
alias EnumUILanguagesW EnumUILanguages;
// #else
// #...
// #endif // !UNICODE
// #endif /* WINVER >= 0x0500 */

extern(Windows) export BOOL EnumSystemLocalesA(
     LOCALE_ENUMPROCA lpLocaleEnumProc,
     DWORD            dwFlags);
extern(Windows) export BOOL EnumSystemLocalesW(
     LOCALE_ENUMPROCW lpLocaleEnumProc,
     DWORD            dwFlags);
// #ifdef UNICODE
alias EnumSystemLocalesW EnumSystemLocales;
// #else
// #...
// #endif // !UNICODE

extern(Windows) export BOOL EnumSystemCodePagesA(
     CODEPAGE_ENUMPROCA lpCodePageEnumProc,
     DWORD              dwFlags);
extern(Windows) export BOOL EnumSystemCodePagesW(
     CODEPAGE_ENUMPROCW lpCodePageEnumProc,
     DWORD              dwFlags);
// #ifdef UNICODE
alias EnumSystemCodePagesW EnumSystemCodePages;
// #else
// #...
// #endif // !UNICODE

// #endif // NONLS

// #ifdef __cplusplus
// }
// #endif

// #endif // _WINNLS_
