'winnls.ab

#ifdef UNICODE
Const _FuncName_GetCPInfoEx = "GetCPInfoExW"
Const _FuncName_CompareString = "CompareStringW"
Const _FuncName_LCMapString = "LCMapStringW"
Const _FuncName_GetLocaleInfo = "GetLocaleInfoW"
Const _FuncName_SetLocaleInfo = "SetLocaleInfoW"
Const _FuncName_GetCalendarInfo = "GetCalendarInfoW"
Const _FuncName_SetCalendarInfo = "SetCalendarInfoW"
Const _FuncName_GetTimeFormat = "GetTimeFormatW"
Const _FuncName_GetDateFormat = "GetDateFormatW"
Const _FuncName_GetNumberFormat = "GetNumberFormatW"
Const _FuncName_GetCurrencyFormat = "GetCurrencyFormatW"
Const _FuncName_EnumCalendarInfo = "EnumCalendarInfoW"
Const _FuncName_EnumTimeFormats = "EnumTimeFormatsW"
Const _FuncName_EnumDateFormats = "EnumDateFormatsW"
Const _FuncName_GetGeoInfo = "GetGeoInfoW"
Const _FuncName_GetStringTypeEx = "GetStringTypeExW"
Const _FuncName_FoldString = "FoldStringW"
Const _FuncName_EnumSystemLocales = "EnumSystemLocalesW"
Const _FuncName_EnumSystemCodePages = "EnumSystemCodePagesW"
#else
Const _FuncName_GetCPInfoEx = "GetCPInfoExA"
Const _FuncName_CompareString = "CompareStringA"
Const _FuncName_LCMapString = "LCMapStringA"
Const _FuncName_GetLocaleInfo = "GetLocaleInfoA"
Const _FuncName_SetLocaleInfo = "SetLocaleInfoA"
Const _FuncName_GetCalendarInfo = "GetCalendarInfoA"
Const _FuncName_SetCalendarInfo = "SetCalendarInfoA"
Const _FuncName_GetTimeFormat = "GetTimeFormatA"
Const _FuncName_GetDateFormat = "GetDateFormatA"
Const _FuncName_GetNumberFormat = "GetNumberFormatA"
Const _FuncName_GetCurrencyFormat = "GetCurrencyFormatA"
Const _FuncName_EnumCalendarInfo = "EnumCalendarInfoA"
Const _FuncName_EnumTimeFormats = "EnumTimeFormatsA"
Const _FuncName_EnumDateFormats = "EnumDateFormatsA"
Const _FuncName_GetGeoInfo = "GetGeoInfoA"
Const _FuncName_GetStringTypeEx = "GetStringTypeExA"
Const _FuncName_FoldString = "FoldStringA"
Const _FuncName_EnumSystemLocales = "EnumSystemLocalesA"
Const _FuncName_EnumSystemCodePages = "EnumSystemCodePagesA"
#endif

Const MAX_LEADBYTES = 12
Const MAX_DEFAULTCHAR = 2

Const HIGH_SURROGATE_START = &hd800
Const HIGH_SURROGATE_END = &hdbff
Const LOW_SURROGATE_START = &hdc00
Const LOW_SURROGATE_END = &hdfff

Const MB_PRECOMPOSED = &h00000001
Const MB_COMPOSITE = &h00000002
Const MB_USEGLYPHCHARS = &h00000004
Const MB_ERR_INVALID_CHARS = &h00000008

Const WC_COMPOSITECHECK = &h00000200
Const WC_DISCARDNS = &h00000010
Const WC_SEPCHARS = &h00000020
Const WC_DEFAULTCHAR = &h00000040
'if WINVER >= &h0600
Const WC_ERR_INVALID_CHARS = &h00000080
'#endif

'if WINVER >= &h0500
Const WC_NO_BEST_FIT_CHARS = &h00000400
'#endif

Const CT_CTYPE1 = &h00000001
Const CT_CTYPE2 = &h00000002
Const CT_CTYPE3 = &h00000004

Const C1_UPPER = &h0001
Const C1_LOWER = &h0002
Const C1_DIGIT = &h0004
Const C1_SPACE = &h0008
Const C1_PUNCT = &h0010
Const C1_CNTRL = &h0020
Const C1_BLANK = &h0040
Const C1_XDIGIT = &h0080
Const C1_ALPHA = &h0100
Const C1_DEFINED = &h0200

Const C2_LEFTTORIGHT = &h0001
Const C2_RIGHTTOLEFT = &h0002
Const C2_EUROPENUMBER = &h0003
Const C2_EUROPESEPARATOR = &h0004
Const C2_EUROPETERMINATOR = &h0005
Const C2_ARABICNUMBER = &h0006
Const C2_COMMONSEPARATOR = &h0007
Const C2_BLOCKSEPARATOR = &h0008
Const C2_SEGMENTSEPARATOR = &h0009
Const C2_WHITESPACE = &h000A
Const C2_OTHERNEUTRAL = &h000B
Const C2_NOTAPPLICABLE = &h0000

Const C3_NONSPACING = &h0001
Const C3_DIACRITIC = &h0002
Const C3_VOWELMARK = &h0004
Const C3_SYMBOL = &h0008
Const C3_KATAKANA = &h0010
Const C3_HIRAGANA = &h0020
Const C3_HALFWIDTH = &h0040
Const C3_FULLWIDTH = &h0080
Const C3_IDEOGRAPH = &h0100
Const C3_KASHIDA = &h0200
Const C3_LEXICAL = &h0400
Const C3_HIGHSURROGATE = &h0800
Const C3_LOWSURROGATE = &h1000
Const C3_ALPHA = &h8000
Const C3_NOTAPPLICABLE = &h0000


Const NORM_IGNORECASE = &h00000001
Const NORM_IGNORENONSPACE = &h00000002
Const NORM_IGNORESYMBOLS = &h00000004

Const LINGUISTIC_IGNORECASE = &h00000010
Const LINGUISTIC_IGNOREDIACRITIC = &h00000020

Const NORM_IGNOREKANATYPE = &h00010000
Const NORM_IGNOREWIDTH = &h00020000
Const NORM_LINGUISTIC_CASING = &h08000000

Const MAP_FOLDCZONE = &h00000010
Const MAP_PRECOMPOSED = &h00000020
Const MAP_COMPOSITE = &h00000040
Const MAP_FOLDDIGITS = &h00000080

'if WINVER >= &h0500
Const MAP_EXPAND_LIGATURES = &h00002000
'#endif

Const LCMAP_LOWERCASE = &h00000100
Const LCMAP_UPPERCASE = &h00000200
Const LCMAP_SORTKEY = &h00000400
Const LCMAP_ByteREV = &h00000800
Const LCMAP_HIRAGANA = &h00100000
Const LCMAP_KATAKANA = &h00200000
Const LCMAP_HALFWIDTH = &h00400000
Const LCMAP_FULLWIDTH = &h00800000
Const LCMAP_LINGUISTIC_CASING = &h01000000
Const LCMAP_SIMPLIFIED_CHINESE = &h02000000
Const LCMAP_TRADITIONAL_CHINESE = &h04000000

Const FIND_STARTSWITH = &h00100000
Const FIND_ENDSWITH = &h00200000
Const FIND_FROMSTART = &h00400000
Const FIND_FROMEND = &h00800000

Const LGRPID_INSTALLED = &h00000001
Const LGRPID_SUPPORTED = &h00000002

Const LCID_INSTALLED = &h00000001
Const LCID_SUPPORTED = &h00000002
Const LCID_ALTERNATE_SORTS = &h00000004

'if WINVER >= &h0600
Const LOCALE_ALL = 0
Const LOCALE_WINDOWS = &h00000001
Const LOCALE_SUPPLEMENTAL = &h00000002
Const LOCALE_ALTERNATE_SORTS = &h00000004
Const LOCALE_REPLACEMENT = &h00000008
'#endif

Const CP_INSTALLED = &h00000001
Const CP_SUPPORTED = &h00000002

Const SORT_STRINGSORT = &h00001000

Const CSTR_LESS_THAN = 1
Const CSTR_EQUAL = 2
Const CSTR_GREATER_THAN = 3

Const CP_ACP = 0
Const CP_OEMCP = 1
Const CP_MACCP = 2
Const CP_THREAD_ACP = 3
Const CP_SYMBOL = 42

Const CP_UTF7 = 65000
Const CP_UTF8 = 65001

Const CTRY_DEFAULT = 0

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

Const LOCALE_NOUSEROVERRIDE = &h80000000
Const LOCALE_USE_CP_ACP = &h40000000

'if WINVER >= &h0400
Const LOCALE_RETURN_NUMBER = &h20000000
'#endif

Const LOCALE_ILANGUAGE = &h00000001
Const LOCALE_SLANGUAGE = &h00000002
Const LOCALE_SENGLANGUAGE = &h00001001
Const LOCALE_SABBREVLANGNAME = &h00000003
Const LOCALE_SNATIVELANGNAME = &h00000004

Const LOCALE_ICOUNTRY = &h00000005
Const LOCALE_SCOUNTRY = &h00000006
Const LOCALE_SENGCOUNTRY = &h00001002
Const LOCALE_SABBREVCTRYNAME = &h00000007
Const LOCALE_SNATIVECTRYNAME = &h00000008
Const LOCALE_IGEOID = &h0000005B

Const LOCALE_IDEFAULTLANGUAGE = &h00000009
Const LOCALE_IDEFAULTCOUNTRY = &h0000000A
Const LOCALE_IDEFAULTCODEPAGE = &h0000000B
Const LOCALE_IDEFAULTANSICODEPAGE = &h00001004
Const LOCALE_IDEFAULTMACCODEPAGE = &h00001011

Const LOCALE_SLIST = &h0000000C
Const LOCALE_IMEASURE = &h0000000D

Const LOCALE_SDECIMAL = &h0000000E
Const LOCALE_STHOUSAND = &h0000000F
Const LOCALE_SGROUPING = &h00000010
Const LOCALE_IDIGITS = &h00000011
Const LOCALE_ILZERO = &h00000012
Const LOCALE_INEGNUMBER = &h00001010
Const LOCALE_SNATIVEDIGITS = &h00000013

Const LOCALE_SCURRENCY = &h00000014
Const LOCALE_SINTLSYMBOL = &h00000015
Const LOCALE_SMONDECIMALSEP = &h00000016
Const LOCALE_SMONTHOUSANDSEP = &h00000017
Const LOCALE_SMONGROUPING = &h00000018
Const LOCALE_ICURRDIGITS = &h00000019
Const LOCALE_IINTLCURRDIGITS = &h0000001A
Const LOCALE_ICURRENCY = &h0000001B
Const LOCALE_INEGCURR = &h0000001C

Const LOCALE_SDATE = &h0000001D
Const LOCALE_STIME = &h0000001E
Const LOCALE_SSHORTDATE = &h0000001F
Const LOCALE_SLONGDATE = &h00000020
Const LOCALE_STIMEFORMAT = &h00001003
Const LOCALE_IDATE = &h00000021
Const LOCALE_ILDATE = &h00000022
Const LOCALE_ITIME = &h00000023
Const LOCALE_ITIMEMARKPOSN = &h00001005
Const LOCALE_ICENTURY = &h00000024
Const LOCALE_ITLZERO = &h00000025
Const LOCALE_IDAYLZERO = &h00000026
Const LOCALE_IMONLZERO = &h00000027
Const LOCALE_S1159 = &h00000028
Const LOCALE_S2359 = &h00000029

Const LOCALE_ICALENDARTYPE = &h00001009
Const LOCALE_IOPTIONALCALENDAR = &h0000100B
Const LOCALE_IFIRSTDAYOFWEEK = &h0000100C
Const LOCALE_IFIRSTWEEKOFYEAR = &h0000100D

Const LOCALE_SDAYNAME1 = &h0000002A
Const LOCALE_SDAYNAME2 = &h0000002B
Const LOCALE_SDAYNAME3 = &h0000002C
Const LOCALE_SDAYNAME4 = &h0000002D
Const LOCALE_SDAYNAME5 = &h0000002E
Const LOCALE_SDAYNAME6 = &h0000002F
Const LOCALE_SDAYNAME7 = &h00000030
Const LOCALE_SABBREVDAYNAME1 = &h00000031
Const LOCALE_SABBREVDAYNAME2 = &h00000032
Const LOCALE_SABBREVDAYNAME3 = &h00000033
Const LOCALE_SABBREVDAYNAME4 = &h00000034
Const LOCALE_SABBREVDAYNAME5 = &h00000035
Const LOCALE_SABBREVDAYNAME6 = &h00000036
Const LOCALE_SABBREVDAYNAME7 = &h00000037
Const LOCALE_SMONTHNAME1 = &h00000038
Const LOCALE_SMONTHNAME2 = &h00000039
Const LOCALE_SMONTHNAME3 = &h0000003A
Const LOCALE_SMONTHNAME4 = &h0000003B
Const LOCALE_SMONTHNAME5 = &h0000003C
Const LOCALE_SMONTHNAME6 = &h0000003D
Const LOCALE_SMONTHNAME7 = &h0000003E
Const LOCALE_SMONTHNAME8 = &h0000003F
Const LOCALE_SMONTHNAME9 = &h00000040
Const LOCALE_SMONTHNAME10 = &h00000041
Const LOCALE_SMONTHNAME11 = &h00000042
Const LOCALE_SMONTHNAME12 = &h00000043
Const LOCALE_SMONTHNAME13 = &h0000100E
Const LOCALE_SABBREVMONTHNAME1 = &h00000044
Const LOCALE_SABBREVMONTHNAME2 = &h00000045
Const LOCALE_SABBREVMONTHNAME3 = &h00000046
Const LOCALE_SABBREVMONTHNAME4 = &h00000047
Const LOCALE_SABBREVMONTHNAME5 = &h00000048
Const LOCALE_SABBREVMONTHNAME6 = &h00000049
Const LOCALE_SABBREVMONTHNAME7 = &h0000004A
Const LOCALE_SABBREVMONTHNAME8 = &h0000004B
Const LOCALE_SABBREVMONTHNAME9 = &h0000004C
Const LOCALE_SABBREVMONTHNAME10 = &h0000004D
Const LOCALE_SABBREVMONTHNAME11 = &h0000004E
Const LOCALE_SABBREVMONTHNAME12 = &h0000004F
Const LOCALE_SABBREVMONTHNAME13 = &h0000100F

Const LOCALE_SPOSITIVESIGN = &h00000050
Const LOCALE_SNEGATIVESIGN = &h00000051
Const LOCALE_IPOSSIGNPOSN = &h00000052
Const LOCALE_INEGSIGNPOSN = &h00000053
Const LOCALE_IPOSSYMPRECEDES = &h00000054
Const LOCALE_IPOSSEPBYSPACE = &h00000055
Const LOCALE_INEGSYMPRECEDES = &h00000056
Const LOCALE_INEGSEPBYSPACE = &h00000057

'if WINVER >= &h0400
Const LOCALE_FONTSIGNATURE = &h00000058
Const LOCALE_SISO639LANGNAME = &h00000059
Const LOCALE_SISO3166CTRYNAME = &h0000005A
'#endif

'if WINVER >= &h0500
Const LOCALE_IDEFAULTEBCDICCODEPAGE = &h00001012
Const LOCALE_IPAPERSIZE = &h0000100A
Const LOCALE_SENGCURRNAME = &h00001007
Const LOCALE_SNATIVECURRNAME = &h00001008
Const LOCALE_SYEARMONTH = &h00001006
Const LOCALE_SSORTNAME = &h00001013
Const LOCALE_IDIGITSUBSTITUTION = &h00001014
'#endif

'if WINVER >= &h0600
Const LOCALE_SNAME = &h0000005c
Const LOCALE_SDURATION = &h0000005d
Const LOCALE_SKEYBOARDSTOINSTALL = &h0000005e
Const LOCALE_SSHORTESTDAYNAME1 = &h00000060
Const LOCALE_SSHORTESTDAYNAME2 = &h00000061
Const LOCALE_SSHORTESTDAYNAME3 = &h00000062
Const LOCALE_SSHORTESTDAYNAME4 = &h00000063
Const LOCALE_SSHORTESTDAYNAME5 = &h00000064
Const LOCALE_SSHORTESTDAYNAME6 = &h00000065
Const LOCALE_SSHORTESTDAYNAME7 = &h00000066
Const LOCALE_SISO639LANGNAME2 = &h00000067
Const LOCALE_SISO3166CTRYNAME2 = &h00000068
Const LOCALE_SNAN = &h00000069
Const LOCALE_SPOSINFINITY = &h0000006a
Const LOCALE_SNEGINFINITY = &h0000006b
Const LOCALE_SSCRIPTS = &h0000006c
Const LOCALE_SPARENT = &h0000006d
Const LOCALE_SCONSOLEFALLBACKNAME = &h0000006e
Const LOCALE_SLANGDISPLAYNAME = &h0000006f
'#endif

Const TIME_NOMINUTESORSECONDS = &h00000001
Const TIME_NOSECONDS = &h00000002
Const TIME_NOTIMEMARKER = &h00000004
Const TIME_FORCE24HOURFORMAT = &h00000008

Const DATE_SHORTDATE = &h00000001
Const DATE_LONGDATE = &h00000002
Const DATE_USE_ALT_CALENDAR = &h00000004

'if WINVER >= &h0500
Const DATE_YEARMONTH = &h00000008
Const DATE_LTRREADING = &h00000010
Const DATE_RTLREADING = &h00000020
'#endif

'if WINVER >= &h0500
Const CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE
Const CAL_USE_CP_ACP = LOCALE_USE_CP_ACP
Const CAL_RETURN_NUMBER = LOCALE_RETURN_NUMBER
'#endif

Const CAL_ICALINTVALUE = &h00000001
Const CAL_SCALNAME = &h00000002
Const CAL_IYEAROFFSETRANGE = &h00000003
Const CAL_SERASTRING = &h00000004
Const CAL_SSHORTDATE = &h00000005
Const CAL_SLONGDATE = &h00000006
Const CAL_SDAYNAME1 = &h00000007
Const CAL_SDAYNAME2 = &h00000008
Const CAL_SDAYNAME3 = &h00000009
Const CAL_SDAYNAME4 = &h0000000a
Const CAL_SDAYNAME5 = &h0000000b
Const CAL_SDAYNAME6 = &h0000000c
Const CAL_SDAYNAME7 = &h0000000d
Const CAL_SABBREVDAYNAME1 = &h0000000e
Const CAL_SABBREVDAYNAME2 = &h0000000f
Const CAL_SABBREVDAYNAME3 = &h00000010
Const CAL_SABBREVDAYNAME4 = &h00000011
Const CAL_SABBREVDAYNAME5 = &h00000012
Const CAL_SABBREVDAYNAME6 = &h00000013
Const CAL_SABBREVDAYNAME7 = &h00000014
Const CAL_SMONTHNAME1 = &h00000015
Const CAL_SMONTHNAME2 = &h00000016
Const CAL_SMONTHNAME3 = &h00000017
Const CAL_SMONTHNAME4 = &h00000018
Const CAL_SMONTHNAME5 = &h00000019
Const CAL_SMONTHNAME6 = &h0000001a
Const CAL_SMONTHNAME7 = &h0000001b
Const CAL_SMONTHNAME8 = &h0000001c
Const CAL_SMONTHNAME9 = &h0000001d
Const CAL_SMONTHNAME10 = &h0000001e
Const CAL_SMONTHNAME11 = &h0000001f
Const CAL_SMONTHNAME12 = &h00000020
Const CAL_SMONTHNAME13 = &h00000021
Const CAL_SABBREVMONTHNAME1 = &h00000022
Const CAL_SABBREVMONTHNAME2 = &h00000023
Const CAL_SABBREVMONTHNAME3 = &h00000024
Const CAL_SABBREVMONTHNAME4 = &h00000025
Const CAL_SABBREVMONTHNAME5 = &h00000026
Const CAL_SABBREVMONTHNAME6 = &h00000027
Const CAL_SABBREVMONTHNAME7 = &h00000028
Const CAL_SABBREVMONTHNAME8 = &h00000029
Const CAL_SABBREVMONTHNAME9 = &h0000002a
Const CAL_SABBREVMONTHNAME10 = &h0000002b
Const CAL_SABBREVMONTHNAME11 = &h0000002c
Const CAL_SABBREVMONTHNAME12 = &h0000002d
Const CAL_SABBREVMONTHNAME13 = &h0000002e

'if WINVER >= &h0500
Const CAL_SYEARMONTH = &h0000002f
Const CAL_ITWODIGITYEARMAX = &h00000030
'#endif

'if WINVER >= &h0600
Const CAL_SSHORTESTDAYNAME1 = &h00000031
Const CAL_SSHORTESTDAYNAME2 = &h00000032
Const CAL_SSHORTESTDAYNAME3 = &h00000033
Const CAL_SSHORTESTDAYNAME4 = &h00000034
Const CAL_SSHORTESTDAYNAME5 = &h00000035
Const CAL_SSHORTESTDAYNAME6 = &h00000036
Const CAL_SSHORTESTDAYNAME7 = &h00000037
'#endif

Const ENUM_ALL_CALENDARS = &hffffffff

Const CAL_GREGORIAN = 1
Const CAL_GREGORIAN_US = 2
Const CAL_JAPAN = 3
Const CAL_TAIWAN = 4
Const CAL_KOREA = 5
Const CAL_HIJRI = 6
Const CAL_THAI = 7
Const CAL_HEBREW = 8
Const CAL_GREGORIAN_ME_FRENCH = 9
Const CAL_GREGORIAN_ARABIC = 10
Const CAL_GREGORIAN_XLIT_ENGLISH = 11
Const CAL_GREGORIAN_XLIT_FRENCH = 12
Const CAL_UMALQURA = 23

Const LGRPID_WESTERN_EUROPE = &h0001
Const LGRPID_CENTRAL_EUROPE = &h0002
Const LGRPID_BALTIC = &h0003
Const LGRPID_GREEK = &h0004
Const LGRPID_CYRILLIC = &h0005
Const LGRPID_TURKIC = &h0006
Const LGRPID_TURKISH = &h0006
Const LGRPID_JAPANESE = &h0007
Const LGRPID_KOREAN = &h0008
Const LGRPID_TRADITIONAL_CHINESE = &h0009
Const LGRPID_SIMPLIFIED_CHINESE = &h000a
Const LGRPID_THAI = &h000b
Const LGRPID_HEBREW = &h000c
Const LGRPID_ARABIC = &h000d
Const LGRPID_VIETNAMESE = &h000e
Const LGRPID_INDIC = &h000f
Const LGRPID_GEORGIAN = &h0010
Const LGRPID_ARMENIAN = &h0011

'if WINVER >= &h0600
Const MUI_LANGUAGE_ID = &h4
Const MUI_LANGUAGE_NAME = &h8
Const MUI_MERGE_SYSTEM_FALLBACK = &h10
Const MUI_MERGE_USER_FALLBACK = &h20
Const MUI_THREAD_LANGUAGES = &h40
Const MUI_CONSOLE_FILTER = &h100
Const MUI_COMPLEX_SCRIPT_FILTER = &h200
Const MUI_RESET_FILTERS = &h001
Const MUI_USER_PREFERRED_UI_LANGUAGES = &h10
Const MUI_USE_INSTALLED_LANGUAGES = &h20
Const MUI_USE_SEARCH_ALL_LANGUAGES = &h40
Const MUI_LANG_NEUTRAL_PE_FILE = &h100
Const MUI_NON_LANG_NEUTRAL_FILE = &h200
Const MUI_MACHINE_LANGUAGE_SETTINGS = &h400
Const MUI_BYPASS_SESSION_BEHAVIOR = &h80
Const MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL = &h001
Const MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = &h002
Const MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI = &h004
Const MUI_QUERY_TYPE = &h001
Const MUI_QUERY_CHECKSUM = &h002
Const MUI_QUERY_LANGUAGE_NAME = &h004
Const MUI_QUERY_RESOURCE_TYPES = &h008
Const MUI_FILEINFO_VERSION = &h001
Const MUI_SXS_FALLBACK = &h00010000

Const MUI_FULL_LANGUAGE = &h01
Const MUI_PARTIAL_LANGUAGE = &h02
Const MUI_LIP_LANGUAGE = &h04
Const MUI_LANGUAGE_INSTALLED = &h20
Const MUI_LANGUAGE_LICENSED = &h40

Const MUI_PUBLIC_LANGUAGE_TYPE_FLAGS_MASK = &h67

'Const MUI_CALLBACK_ALL_FLAGS = MUI_CALLBACK_FLAG_UPGRADED_INSTALLATION

'#endif

TypeDef LGRPID = DWord
TypeDef LCTYPE = DWord
TypeDef CALTYPE = DWord
TypeDef CALID = DWord

Type CPINFO
	MaxCharSize As DWord
	DefaultChar[ELM(MAX_DEFAULTCHAR)] As Byte
	LeadByte[ELM(MAX_LEADBYTES)] As Byte
End Type

Type CPINFOEX
	MaxCharSize As DWord
	DefaultChar[ELM(MAX_DEFAULTCHAR)] As Byte
	LeadByte[ELM(MAX_LEADBYTES)] As Byte
	UnicodeDefaultChar As WCHAR
	CodePage As DWord
	CodePageName[ELM(MAX_PATH)] As TCHAR
End Type

Type NUMBERFMTA
	NumDigits As DWord
	LeadingZero As DWord
	Grouping As DWord
	lpDecimalSep As LPSTR
	lpThousandSep As LPSTR
	NegativeOrder As DWord
End Type
Type NUMBERFMTW
	NumDigits As DWord
	LeadingZero As DWord
	Grouping As DWord
	lpDecimalSep As LPWSTR
	lpThousandSep As LPWSTR
	NegativeOrder As DWord
End Type
#ifdef UNICODE
TypeDef NUMBERFMT = NUMBERFMTW
#else
TypeDef NUMBERFMT = NUMBERFMTA
#endif
Type CURRENCYFMTA
	NumDigits As DWord
	LeadingZero As DWord
	Grouping As DWord
	lpDecimalSep As LPSTR
	lpThousandSep As LPSTR
	NegativeOrder As DWord
	PositiveOrder As DWord
	lpCurrencySymbol As LPSTR
End Type
Type CURRENCYFMTW
	NumDigits As DWord
	LeadingZero As DWord
	Grouping As DWord
	lpDecimalSep As LPWSTR
	lpThousandSep As LPWSTR
	NegativeOrder As DWord
	PositiveOrder As DWord
	lpCurrencySymbol As LPWSTR
End Type
#ifdef UNICODE
TypeDef CURRENCYFMT = CURRENCYFMTW
#else
TypeDef CURRENCYFMT = CURRENCYFMTA
#endif
Const Enum SYSNLS_FUNCTION
	COMPARE_STRING = &h0001
End Enum
TypeDef NLS_FUNCTION = DWord

Type NLSVERSIONINFO
	dwNLSVersionInfoSize As DWord
	dwNLSVersion As DWord
	dwDefinedVersion As DWord
End Type

Type NLSVERSIONINFOEX
	dwNLSVersionInfoSize As DWord
	dwNLSVersion As DWord
	dwDefinedVersion As DWord
	dwEffectiveId As DWord
	guidCustomVersion As GUID
End Type

TypeDef GEOID = LONG
TypeDef GEOTYPE = DWord
TypeDef GEOCLASS = DWord

Const GEOID_NOT_AVAILABLE = -1

Const Enum SYSGEOTYPE
	GEO_NATION = &h0001
	GEO_LATITUDE = &h0002
	GEO_LONGITUDE = &h0003
	GEO_ISO2 = &h0004
	GEO_ISO3 = &h0005
	GEO_RFC1766 = &h0006
	GEO_LCID = &h0007
	GEO_FRIENDLYNAME = &h0008
	GEO_OFFICIALNAME = &h0009
	GEO_TIMEZONES = &h000A
	GEO_OFFICIALLANGUAGES = &h000B
End Enum

Const Enum SYSGEOCLASS
	GEOCLASS_NATION = 16
	GEOCLASS_REGION = 14
End Enum

'#if WINVER >= &h0600
Const Enum NORM_FORM
	NormalizationOther = 0
	NormalizationC = &h1
	NormalizationD = &h2
	NormalizationKC = &h5
	NormalizationKD = &h6
End Enum

Const IDN_ALLOW_UNASSIGNED = &h01
Const IDN_USE_STD3_ASCII_RULES = &h02

Const VS_ALLOW_LATIN = &h0001

Const GSS_ALLOW_INHERITED_COMMON = &h0001
'#endif

TypeDef LANGUAGEGROUP_ENUMPROC = *Function(LanguageGroup As LGRPID, lpLanguageGroupString As LPSTR, lpLanguageGroupNameString As LPSTR, dwFlags As DWord, lParam As LONG_PTR) As BOOL
TypeDef LANGGROUPLOCALE_ENUMPROC = *Function(LanguageGroup As LGRPID, locale As LCID, lpLocaleString As LPSTR, lParam As LONG_PTR) As BOOL
TypeDef UILANGUAGE_ENUMPROC = *Function(lpUILanguageString As LPTSTR, lParam As LONG_PTR) As BOOL
TypeDef LOCALE_ENUMPROC = *Function(lpLocaleString As LPTSTR) As BOOL
TypeDef CODEPAGE_ENUMPROC = *Function(lpCodePageString As LPTSTR) As BOOL
TypeDef DATEFMT_ENUMPROC = *Function(lpDateFormatString As LPTSTR) As BOOL
TypeDef DATEFMT_ENUMPROCEX = *Function(lpDateFormatString As LPTSTR, CalendarID As CALID) As BOOL
TypeDef TIMEFMT_ENUMPROC = *Function(lpTimeFormatString As LPTSTR) As BOOL
TypeDef CALINFO_ENUMPROC = *Function(lpCalendarInfoString As LPTSTR) As BOOL
TypeDef CALINFO_ENUMPROCEX = *Function(lpCalendarInfoString As LPTSTR, Calendar As CALID) As BOOL
TypeDef GEO_ENUMPROC = *Function(GeoId As GEOID) As BOOL

Type FILEMUIINFO
	dwSize As DWord
	dwVersion As DWord
	dwFileType As DWord
	pChecksum[ELM(16)] As Byte
	pServiceChecksum[ELM(16)] As Byte
	dwLanguageNameOffset As DWord
	dwTypeIDMainSize As DWord
	dwTypeIDMainOffset As DWord
	dwTypeNameMainOffset As DWord
	dwTypeIDMUISize As DWord
	dwTypeIDMUIOffset As DWord
	dwTypeNameMUIOffset As DWord
	abBuffer[ELM(8)] As Byte
End Type

Const IS_HIGH_SURROGATE(wch) = (((wch) >= HIGH_SURROGATE_START) And ((wch) <= HIGH_SURROGATE_END))
Const IS_LOW_SURROGATE(wch) = (((wch) >= LOW_SURROGATE_START) And ((wch) <= LOW_SURROGATE_END))
Const IS_SURROGATE_PAIR(hs, ls) = (IS_HIGH_SURROGATE(hs) And IS_LOW_SURROGATE(ls))

Function FILEMUIINFO_GET_CULTURE(pInfo As *FILEMUIINFO) As LPWSTR
	If pInfo->dwLanguageNameOffset > 0 Then
		FILEMUIINFO_GET_CULTURE = ((pInfo As ULONG_PTR) + pInfo->dwLanguageNameOffset) As LPWSTR
	End If
End Function
Function FILEMUIINFO_GET_MAIN_TYPEIDS(pInfo As *FILEMUIINFO) As *DWord
	If pInfo->dwTypeIDMainOffset > 0 Then
		FILEMUIINFO_GET_MAIN_TYPEIDS = ((pInfo As ULONG_PTR) + pInfo->dwTypeIDMainOffset) As *DWord
	End If
End Function
Function FILEMUIINFO_GET_MAIN_TYPEID(pInfo As *FILEMUIINFO, iType As SIZE_T) As *DWord
	If iType < pInfo->dwTypeIDMainSize And pInfo->dwTypeIDMainOffset > 0 Then
		FILEMUIINFO_GET_MAIN_TYPEID = ((pInfo As ULONG_PTR) + pInfo->dwTypeIDMainOffset + iType) As *DWord
	End If
End Function
Function FILEMUIINFO_GET_MAIN_TYPENAMES(pInfo As *FILEMUIINFO) As LPWSTR
	If pInfo->dwTypeNameMainOffset > 0 Then
		FILEMUIINFO_GET_MAIN_TYPENAMES = ((pInfo As ULONG_PTR) + pInfo->dwTypeNameMainOffset) As LPWSTR
	End If
End Function
Function FILEMUIINFO_GET_MUI_TYPEIDS(pInfo As *FILEMUIINFO) As *DWord
	If pInfo->dwTypeIDMUIOffset > 0 Then
		FILEMUIINFO_GET_MUI_TYPEIDS = ((pInfo As ULONG_PTR) + pInfo->dwTypeIDMUIOffset) As *DWord
	End If
End Function
Function FILEMUIINFO_GET_MUI_TYPEID(pInfo As *FILEMUIINFO, iType As SIZE_T) As *DWord
	If iType < pInfo->dwTypeIDMUISize And pInfo->dwTypeIDMUIOffset > 0 Then
		FILEMUIINFO_GET_MUI_TYPEID = ((pInfo As ULONG_PTR) + pInfo->dwTypeIDMUIOffset + iType) As *DWord
	End If
End Function
Function FILEMUIINFO_GET_MUI_TYPENAMES(pInfo As *FILEMUIINFO) As LPWSTR
	If pInfo->dwTypeNameMUIOffset > 0 Then
		FILEMUIINFO_GET_MUI_TYPENAMES = ((pInfo As ULONG_PTR) + pInfo->dwTypeNameMUIOffset) As LPWSTR
	End If
End Function

Declare Function IsValidCodePage Lib "kernel32" (CodePage As DWord) As BOOL
Declare Function GetACP Lib "kernel32" () As DWord
Declare Function GetOEMCP Lib "kernel32" () As DWord
Declare Function GetCPInfo Lib "kernel32" (CodePage As DWord, ByRef CPInfo As CPINFO) As BOOL
Declare Function GetCPInfoEx Lib "kernel32" Alias _FuncName_GetCPInfoEx (CodePage As DWord, dwFlags As DWord, ByRef CPInfo As CPINFOEX) As BOOL
Declare Function IsDBCSLeadByte Lib "kernel32" (TestChar As Byte) As BOOL
Declare Function IsDBCSLeadByteEx Lib "kernel32" (CodePage As DWord, TestChar As Byte) As BOOL
Declare Function MultiByteToWideChar Lib "kernel32" (CodePage As DWord, dwFlags As DWord, pMultiByteStr As PCSTR, cchMultiByte As Long, pWideCharStr As PWSTR, cchWideChar As Long) As Long
Declare Function WideCharToMultiByte Lib "Kernel32" (CodePage As DWord, dwFlags As DWord, pWideCharStr As PCWSTR, cchWideChar As Long, pMultiByteStr As PSTR, cbMultiByte As Long, pDefaultChar As PCSTR, pUsedDefaultChar As *BOOL) As Long
Declare Function CompareString Lib "kernel32" Alias _FuncName_CompareString (Locale As LCID, dwCmpFlags As DWord, lpString1 As LPCTSTR, cchCount1 As Long, lpString2 As LPCTSTR, cchCount2 As Long) As Long
'#if WINVER >= &h0600
Declare Function FindNLSString Lib "kernel32" (Locale As LCID, dwFindNLSStringFlags As DWord, lpStringSource As LPCWSTR, cchSource As Long, lpStringValue As LPCWSTR, cchValue As Long, pcchFound As *Long) As Long
'#endif
Declare Function LCMapString Lib "kernel32" Alias _FuncName_LCMapString (Locale As LCID, dwMapFlags As DWord, lpSrcStr As LPCTSTR, cchSrc As Long, lpDestStr As LPTSTR, cchDest As Long) As Long
Declare Function GetLocaleInfo Lib "kernel32" Alias _FuncName_GetLocaleInfo (Locale As LCID, LCType As LCTYPE, lpLCData As LPTSTR, cchData As Long) As Long
Declare Function SetLocaleInfo Lib "kernel32" Alias _FuncName_SetLocaleInfo (Locale As LCID, LCType As LCTYPE, lpLCData As LPTSTR) As BOOL
'#if WINVER >= &h040A
Declare Function GetCalendarInfo Lib "kernel32" Alias _FuncName_GetCalendarInfo (Locale As LCID, Calendar As CALID, CalType As CALTYPE, lpCalData As LPTSTR, cchData As Long, lpValue As *DWord) As Long
Declare Function SetCalendarInfo Lib "kernel32" Alias _FuncName_SetCalendarInfo (Locale As LCID, Calendar As CALID, CalType As CALTYPE, lpCalData As LPTSTR) As BOOL
'#endif
'#if WINVER >= &h0600
Declare Function LCIDToLocaleName Lib "kernel32" (Locale As LCID, lpName As LPWSTR, cchName As Long, dwFlags As DWord) As Long
Declare Function LocaleNameToLCID Lib "kernel32" (lpName As LPCWSTR, dwFlags As DWord) As LCID
'#endif
Declare Function GetTimeFormat Lib "kernel32" Alias _FuncName_GetTimeFormat (Locale As LCID, dwFlags As DWord, ByRef Time As SYSTEMTIME, lpFormat As LPCTSTR, lpTimeStr As LPTSTR, cchTime As Long) As Long
'#if WINVER >= &h0600
Declare Function GetDurationFormat Lib "kernel32" (Locale As LCID, dwFlags As DWord, lpDuration As *SYSTEMTIME, ullDuration As QWord, lpFormat As LPCWSTR, lpDurationStr As LPWSTR, cchDuration As Long) As Long
'#endif
Declare Function GetDateFormat Lib "kernel32" Alias _FuncName_GetDateFormat (Locale As LCID, dwFlags As DWord, ByRef Date As SYSTEMTIME, lpFormat As LPCTSTR, lpDateStr As LPTSTR, cchDate As Long) As Long
Declare Function GetNumberFormat Lib "kernel32" Alias _FuncName_GetNumberFormat (Locale As LCID, dwFlags As DWord, lpValue As LPCTSTR, lpFormat As *NUMBERFMT, lpNumberStr As LPTSTR, cchNumber As Long) As Long
Declare Function GetCurrencyFormat Lib "kernel32" Alias _FuncName_GetCurrencyFormat (Locale As LCID, dwFlags As DWord, lpValue As LPCTSTR, lpFormat As *CURRENCYFMT, lpCurrencyStr As LPTSTR, cchCurrency As Long) As Long
Declare Function EnumCalendarInfo Lib "kernel32" Alias _FuncName_EnumCalendarInfo (lpCalInfoEnumProc As CALINFO_ENUMPROC, Locale As LCID, Calendar As CALID, CalType As CALTYPE) As BOOL
'#if WINVER >= &h0500
Declare Function EnumCalendarInfoEx Lib "kernel32" Alias _FuncName_EnumCalendarInfo (lpCalInfoEnumProcEx As CALINFO_ENUMPROCEX, Locale As LCID, Calendar As CALID, CalType As CALTYPE) As BOOL
'#endif
Declare Function EnumTimeFormats Lib "kernel32" Alias _FuncName_EnumTimeFormats (lpTimeFmtEnumProc As TIMEFMT_ENUMPROC, Locale As LCID, dwFlags As DWord) As BOOL
Declare Function EnumDateFormats Lib "kernel32" Alias _FuncName_EnumDateFormats (lpDateFmtEnumProc As DATEFMT_ENUMPROC, Locale As LCID, dwFlags As DWord) As BOOL
'#if WINVER >= &h0500
'Declare Function EnumDateFormatsEx Lib "kernel32" Alias _FuncName_EnumDateFormatsEx (lpDateFmtEnumProcEx As DATEFMT_ENUMPROCEX, Locale As LCID, dwFlags As DWord) As BOOL
'#endif
'#if WINVER >= &h0500
Declare Function IsValidLanguageGroup Lib "kernel32" (LanguageGroup As LGRPID, dwFlags As DWord) As BOOL
'#endif
Declare Function GetNLSVersion Lib "kernel32" (Function_ As NLS_FUNCTION, Locale As LCID, ByRef VersionInformation As NLSVERSIONINFO) As BOOL
Declare Function GetNLSVersion Lib "kernel32" (Function_ As NLS_FUNCTION, dwFlags As DWord, ByRef VersionInformation As NLSVERSIONINFO, lpString As LPCWSTR, cchStr As Long) As BOOL
Declare Function IsValidLocale Lib "kernel32" (Locale As LCID, dwFlags As DWord) As BOOL
Declare Function GetGeoInfo Lib "kernel32" Alias _FuncName_GetGeoInfo (Location As GEOID, GeoType As GEOTYPE, lpGeoData As LPTSTR, cchData As Long, LangId As LANGID) As Long
Declare Function EnumSystemGeoID Lib "kernel32" (GeoClass As GEOCLASS, ParentGeoId As GEOID, lpGeoEnumProc As GEO_ENUMPROC) As BOOL
Declare Function SetUserGeoID Lib "kernel32" (GeoClass As GEOCLASS) As GEOID
Declare Function SetUserGeoID Lib "kernel32" (GeoId As GEOID) As BOOL
Declare Function ConvertDefaultLocale Lib "kernel32" (Locale As LCID) As LCID
Declare Function GetThreadLocale Lib "kernel32" () As LCID
Declare Function SetThreadLocale Lib "kernel32" (Locale As LCID) As BOOL
'#if WINVER >= &h0500
Declare Function GetSystemDefaultUILanguage Lib "kernel32" () As LANGID
Declare Function GetUserDefaultUILanguage Lib "kernel32" () As LANGID
'#endif
Declare Function GetSystemDefaultLangID Lib "kernel32" () As LANGID
Declare Function GetUserDefaultLangID Lib "kernel32" () As LANGID
Declare Function GetSystemDefaultLCID Lib "kernel32" () As LCID
Declare Function GetUserDefaultLCID Lib "kernel32" () As LCID
Declare Function SetThreadUILanguage Lib "kernel32" (LangId As LANGID) As LANGID
'#if WINVER >= &h0600
Declare Function GetThreadUILanguage Lib "kernel32" () As LANGID
Declare Function GetUserPreferredUILanguages Lib "kernel32" (dwFlags As DWord, ByRef ulNumLanguages As DWord, pwszLanguagesBuffer As PWSTR, ByRef cchLanguagesBuffer As DWord) As BOOL
Declare Function GetSystemPreferredUILanguages Lib "kernel32" (dwFlags As DWord, ByRef ulNumLanguages As DWord, pwszLanguagesBuffer As PWSTR, ByRef cchLanguagesBuffer As DWord) As BOOL
Declare Function GetThreadPreferredUILanguages Lib "kernel32" (dwFlags As DWord, ByRef ulNumLanguages As DWord, pwszLanguagesBuffer As PWSTR, ByRef cchLanguagesBuffer As DWord) As BOOL
Declare Function SetThreadPreferredUILanguages Lib "kernel32" (dwFlags As DWord, pwszLanguagesBuffer As PCWSTR, pulNumLanguages As *DWord) As BOOL
Declare Function GetFileMUIInfo Lib "kernel32" (dwFlags As DWord, pcwszFilePath As PCWSTR, ByRef FileMUIInfo As FILEMUIINFO, ByRef pcbFileMUIInfo As DWord) As BOOL
Declare Function GetFileMUIPath Lib "kernel32" (dwFlags As DWord, pcwszFilePath As PCWSTR, pwszLanguage As PCWSTR, ByRef pcchLanguage As DWord, pwszFileMUIPath As PWSTR, ByRef pcchFileMUIPath As DWord, ByRef ululEnumerator As QWord) As BOOL
Declare Function GetUILanguageInfo Lib "kernel32" (dwFlags As DWord, pwszLanguage As PCWSTR, pwszFallbackLanguages As PWSTR, pcchFallbackLanguages As *DWord, ByRef Attributes As DWord) As BOOL
Declare Function NotifyUILanguageChange Lib "kernel32" (dwFlags As DWord, pcwstrNewLanguage As PCWSTR, pcwstrPreviousLanguage As PCWSTR, dwReserved As DWord, pdwStatusRtrn As *DWord) As BOOL
'#endif
Declare Function GetStringTypeEx Lib "kernel32" Alias _FuncName_GetStringTypeEx (Locale As LCID, dwInfoType As DWord, lpSrcStr As LPCTSTR, cchSrc As Long, ByRef CharType As Word) As BOOL
Declare Function GetStringTypeA Lib "kernel32" (Locale As LCID, dwInfoType As DWord, lpSrcStr As LPCTSTR, cchSrc As Long, ByRef CharType As Word) As BOOL
Declare Function GetStringTypeW Lib "kernel32" (dwInfoType As DWord, lpSrcStr As LPCTSTR, cchSrc As Long, ByRef CharType As Word) As BOOL
Declare Function FoldString Lib "kernel32" Alias _FuncName_FoldString (dwMapFlags As DWord, lpSrcStr As LPCTSTR, cchSrc As Long, lpDestStr As LPTSTR, cchDest As Long) As Long
'#if WINVER >= &h0500
'Declare Function EnumSystemLanguageGroups Lib "kernel32" Alias _FuncName_EnumSystemLanguageGroups (lpLanguageGroupEnumProc As LANGUAGEGROUP_ENUMPROC, dwFlags As DWord, lParam As LONG_PTR) As BOOL
'Declare Function EnumLanguageGroupLocales Lib "kernel32" Alias _FuncName_EnumLanguageGroupLocales (lpLangGroupLocaleEnumProc As LANGGROUPLOCALE_ENUMPROC, dwFlags As DWord, lParam As LONG_PTR) As BOOL
'Declare Function EnumUILanguages Lib "kernel32" Alias _FuncName_EnumUILanguages (EnumUILanguages As UILANGUAGE_ENUMPROC, dwFlags As DWord, lParam As LONG_PTR) As BOOL
'#endif
Declare Function EnumSystemLocales Lib "kernel32" Alias _FuncName_EnumSystemLocales (lpLocaleEnumProc As LOCALE_ENUMPROC, dwFlags As DWord) As BOOL
Declare Function EnumSystemCodePages Lib "kernel32" Alias _FuncName_EnumSystemCodePages (lpCodePageEnumProc As CODEPAGE_ENUMPROC, dwFlags As DWord) As BOOL
'#if WINVER >= &h0600
Declare Function NormalizeString Lib "kernel32" (NormForm As NORM_FORM, lpSrcString As LPCWSTR, cwSrcLength As Long, lpDstString As LPWSTR, cwDstLength As Long) As Long
Declare Function IsNormalizedString Lib "kernel32" (NormForm As NORM_FORM, lpString As LPCWSTR, cwLength As Long) As BOOL
Declare Function IdnToAscii Lib "kernel32" (dwFlags As DWord,lpUnicodeCharStr As LPCWSTR, cchUnicodeChar As Long, lpASCIICharStr As LPWSTR, cchASCIIChar As Long) As Long
Declare Function IdnToNameprepUnicode Lib "kernel32" (dwFlags As DWord, lpUnicodeCharStr As LPCWSTR,cchUnicodeChar As Long, lpNameprepCharStr As LPWSTR, cchNameprepChar As Long) As Long
Declare Function IdnToUnicode Lib "kernel32" (dwFlags As DWord, lpASCIICharStr As LPCWSTR, cchASCIIChar As Long, lpUnicodeCharStr As LPWSTR, cchUnicodeChar As Long) As Long
Declare Function VerifyScripts Lib "kernel32" (dwFlags As DWord, lpLocaleScripts As LPCWSTR, cchLocaleScripts As Long, lpTestScripts As LPCWSTR, cchTestScripts As Long) As BOOL
Declare Function GetStringScripts Lib "kernel32" (dwFlags As DWord, lpString As LPCWSTR, cchString As Long, lpScripts As LPWSTR, cchScripts As Long) As Long
'#endif
'#if WINVER >= &h0600
'Const LOCALE_NAME_USER_DEFAULT = NULL
'Const LOCALE_NAME_INVARIANT = L""
'Const LOCALE_NAME_SYSTEM_DEFAULT = L"!x-sys-default-locale"
Declare Function GetLocaleInfoEx Lib "kernel32" (lpLocaleName As LPCWSTR, LCType As LCTYPE, lpLCData As LPWSTR, cchData As Long) As Long
Declare Function GetCalendarInfoEx Lib "kernel32" (lpLocaleName As LPCWSTR, Calendar As CALID, lpReserved As LPCWSTR, CalType As CALTYPE, lpCalData As LPWSTR, cchData As Long, lpValue As *DWord) As Long
Declare Function GetTimeFormatEx Lib "kernel32" (lpLocaleName As LPCWSTR, dwFlags As DWord, ByRef Time As SYSTEMTIME, lpFormat As LPCWSTR, lpTimeStr As LPWSTR, cchTime As Long) As Long
Declare Function GetDateFormatEx Lib "kernel32" (lpLocaleName As LPCWSTR, dwFlags As DWord, ByRef Date As SYSTEMTIME, lpFormat As LPCWSTR, lpDateStr As LPWSTR, cchDate As Long, lpCalendar As LPCWSTR) As Long
Declare Function GetDurationFormatEx Lib "kernel32" (lpLocaleName As LPCWSTR, dwFlags As DWord, lpDuration As *SYSTEMTIME, ullDuration As QWord, lpFormat As LPCWSTR, lpDurationStr As LPWSTR, cchDuration As Long) As Long
Declare Function GetNumberFormatEx Lib "kernel32" (lpLocaleName As LPCWSTR, dwFlags As DWord, lpValue As LPCWSTR, lpFormat As *NUMBERFMTW, lpNumberStr As LPWSTR, cchNumber As Long) As Long
Declare Function GetCurrencyFormatEx Lib "kernel32" (lpLocaleName As LPCWSTR, dwFlags As DWord, lpValue As LPCWSTR, lpFormat As *CURRENCYFMTW, lpCurrencyStr As LPWSTR, cchCurrency As Long) As Long
Declare Function GetUserDefaultLocaleName Lib "kernel32" (lpLocaleName As LPWSTR, cchLocaleName As Long) As Long
Declare Function GetSystemDefaultLocaleName Lib "kernel32" (lpLocaleName As LPWSTR, cchLocaleName As Long) As Long
Declare Function GetNLSVersionEx Lib "kernel32" (function_ As NLS_FUNCTION, lpLocaleName As LPCWSTR, ByRef VersionInformation As NLSVERSIONINFOEX) As BOOL
Declare Function CompareStringEx Lib "kernel32" (lpLocaleName As LPWSTR, dwCmpFlags As DWord, lpString1 As LPCWSTR, cchCount1 As Long, lpString2 As LPCWSTR, cchCount2 As Long, lpVersionInformation As *NLSVERSIONINFO, lpReserved As VoidPtr, lParam As LPARAM) As Long
Declare Function FindNLSString Lib "kernel32" (lpLocaleName As LPWSTR, dwFindNLSStringFlags As DWord, lpStringSource As LPCWSTR, cchSource As Long, lpStringValue As LPCWSTR, cchValue As Long, pcchFound As *Long, lpVersionInformation As *NLSVERSIONINFO, lpReserved As VoidPtr, lParam As LPARAM) As Long
Declare Function LCMapStringEx Lib "kernel32" (lpLocaleName As LPWSTR, dwMapFlags As DWord, lpSrcStr As LPCWSTR, cchSrc As Long, lpDestStr As LPWSTR, cchDest As Long, lpVersionInformation As *NLSVERSIONINFO, lpReserved As VoidPtr, lParam As LPARAM) As Long
Declare Function CompareStringOrdinal Lib "kernel32" (lpString1 As LPCTSTR, cchCount1 As Long, lpString2 As LPCTSTR, cchCount2 As Long, bIgnoreCase As BOOL) As Long
Declare Function IsValidLocaleName Lib "kernel32" (lpLocaleName As LPCWSTR) As BOOL
TypeDef CALINFO_ENUMPROCEXEX = *Function(lpCalendarInfoString As LPWSTR, Calendar As CALID, lParam As LPARAM) As BOOL
Declare Function EnumCalendarInfoExEx Lib "kernel32" (pCalInfoEnumProcExEx As CALINFO_ENUMPROCEXEX, lpLocaleName As LPCWSTR, Calendar As CALID, lpReserved As LPCWSTR, CalType As CALTYPE, lParam As LPARAM) As BOOL
TypeDef DATEFMT_ENUMPROCEXEX = *Function(lpDateFormatString As LPWSTR, CalendarId As CALID, lParam As LPARAM) As BOOL
Declare Function EnumDateFormatsExEx Lib "kernel32" (lpDateFmtEnumProcExEx As DATEFMT_ENUMPROCEXEX, lpLocaleName As LPCWSTR, dwFlags As DWord, lParam As LPARAM) As BOOL
TypeDef TIMEFMT_ENUMPROCEX = *Function(lpTimeFormatString As LPWSTR, lParam As LPARAM) As BOOL
Declare Function EnumTimeFormatsEx Lib "kernel32" (lpTimeFmtEnumProcEx As TIMEFMT_ENUMPROCEX, lpLocaleName As LPCWSTR, dwFlags As DWord, lParam As LPARAM) As BOOL
TypeDef LOCALE_ENUMPROCEX = *Function(lpTimeFormatString As LPWSTR, dwFlags As DWord, lParam As LPARAM) As BOOL
Declare Function EnumSystemLocalesEx Lib "kernel32" (lpLocaleEnumProcEx As LOCALE_ENUMPROCEX, dwFlags As DWord, lParam As LPARAM, lpReserved As VoidPtr) As BOOL
'#endif
