Moved LCTYPE, GetLocaleInfo, NUMBERFMT, CURRENCYFMT and the related
API to winnls.h.
Moved LANG_xxx, SUBLANG_xxx, SORT_xxx and IS_TEXT_UNICODE_xxx to
winnt.h.

diff --git a/include/winbase.h b/include/winbase.h
index d66218a..67398da 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -1726,9 +1726,6 @@
 UINT      WINAPI GetLogicalDriveStringsA(UINT,LPSTR);
 UINT      WINAPI GetLogicalDriveStringsW(UINT,LPWSTR);
 #define     GetLogicalDriveStrings WINELIB_NAME_AW(GetLogicalDriveStrings)
-INT       WINAPI GetLocaleInfoA(LCID,LCTYPE,LPSTR,INT);
-INT       WINAPI GetLocaleInfoW(LCID,LCTYPE,LPWSTR,INT);
-#define     GetLocaleInfo WINELIB_NAME_AW(GetLocaleInfo)
 DWORD       WINAPI GetModuleFileNameA(HMODULE,LPSTR,DWORD);
 DWORD       WINAPI GetModuleFileNameW(HMODULE,LPWSTR,DWORD);
 #define     GetModuleFileName WINELIB_NAME_AW(GetModuleFileName)
diff --git a/include/windef.h b/include/windef.h
index dd51fe8..cccddff 100644
--- a/include/windef.h
+++ b/include/windef.h
@@ -195,7 +195,6 @@
 typedef HANDLE          HMONITOR;
 typedef DWORD           LCID;
 typedef WORD            LANGID;
-typedef DWORD           LCTYPE;
 typedef float           FLOAT;
 
 /* Pointers types. These are the same for emulator and library. */
@@ -352,6 +351,8 @@
 #define OPTIONAL
 #endif  /* __WINE__ */
 
+#include "winnt.h"
+
 /* Macro for structure packing. */
 
 #ifdef __GNUC__
diff --git a/include/wine/winbase16.h b/include/wine/winbase16.h
index db90ff4..27569b6 100644
--- a/include/wine/winbase16.h
+++ b/include/wine/winbase16.h
@@ -3,6 +3,7 @@
 
 #include "windef.h"
 #include "winbase.h"
+#include "winnls.h"
 #include "wine/windef16.h"
 
 #include "pshpack1.h"
diff --git a/include/winnls.h b/include/winnls.h
index aa4e21c..5736528 100644
--- a/include/winnls.h
+++ b/include/winnls.h
@@ -1,7 +1,11 @@
 #ifndef __WINE_WINNLS_H
 #define __WINE_WINNLS_H
+#ifndef NONLS
 
 #include "windef.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 #define MB_PRECOMPOSED              0x00000001 
 #define MB_COMPOSITE                0x00000002
@@ -152,234 +156,6 @@
 #define WC_COMPOSITECHECK           0x00000200
 #define WC_NO_BEST_FIT_CHARS        0x00000400
 
-#define MAKELCID(l, s)		(MAKELONG(l, s))
-
-#define MAKELANGID(p, s)	((((WORD)(s))<<10) | (WORD)(p))
-#define PRIMARYLANGID(l)	((WORD)(l) & 0x3ff)
-#define SUBLANGID(l)		((WORD)(l) >> 10)
-
-#define LANGIDFROMLCID(lcid)	((WORD)(lcid))
-#define SORTIDFROMLCID(lcid)	((WORD)((((DWORD)(lcid)) >> 16) & 0x0f))
-
-#define LANG_SYSTEM_DEFAULT	(MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
-#define LANG_USER_DEFAULT	(MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
-#define LOCALE_SYSTEM_DEFAULT	(MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT))
-#define LOCALE_USER_DEFAULT	(MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT)) 
-#define LOCALE_NEUTRAL		(MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT))
-
-
-/* Language IDs (were in winnt.h,  for some reason) */
-
-
-/* Language IDs */
-
-/* FIXME: are the symbolic names correct for LIDs:  0x17, 0x20, 0x28,
- *	  0x2a, 0x2b, 0x2c, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
- *	  0x37, 0x39, 0x3a, 0x3b, 0x3c, 0x3e, 0x3f, 0x41, 0x43, 0x44,
- *	  0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
- *	  0x4f, 0x57
- */
-#define LANG_NEUTRAL                     0x00
-#define LANG_AFRIKAANS			 0x36
-#define LANG_ALBANIAN			 0x1c
-#define LANG_ARABIC                      0x01
-#define LANG_ARMENIAN			 0x2b
-#define LANG_ASSAMESE			 0x4d
-#define LANG_AZERI			 0x2c
-#define LANG_BASQUE                      0x2d
-#define LANG_BENGALI			 0x45
-#define LANG_BULGARIAN                   0x02
-#define LANG_BYELORUSSIAN                0x23
-#define LANG_CATALAN                     0x03
-#define LANG_CHINESE                     0x04
-#define LANG_SERBO_CROATIAN              0x1a
-#define LANG_CROATIAN	  LANG_SERBO_CROATIAN
-#define LANG_SERBIAN	  LANG_SERBO_CROATIAN
-#define LANG_CZECH                       0x05
-#define LANG_DANISH                      0x06
-#define LANG_DUTCH                       0x13
-#define LANG_ENGLISH                     0x09
-#define LANG_ESTONIAN                    0x25
-#define LANG_FAEROESE                    0x38
-#define LANG_FARSI                       0x29
-#define LANG_FINNISH                     0x0b
-#define LANG_FRENCH                      0x0c
-#define LANG_GAELIC			 0x3c
-#define LANG_GEORGIAN			 0x37
-#define LANG_GERMAN                      0x07
-#define LANG_GREEK                       0x08
-#define LANG_GUJARATI			 0x47
-#define LANG_HEBREW                      0x0D
-#define LANG_HINDI			 0x39
-#define LANG_HUNGARIAN                   0x0e
-#define LANG_ICELANDIC                   0x0f
-#define LANG_INDONESIAN                  0x21
-#define LANG_ITALIAN                     0x10
-#define LANG_JAPANESE                    0x11
-#define LANG_KANNADA			 0x4b
-#define LANG_KAZAKH			 0x3f
-#define LANG_KONKANI			 0x57
-#define LANG_KOREAN                      0x12
-#define LANG_LATVIAN                     0x26
-#define LANG_LITHUANIAN                  0x27
-#define LANG_MACEDONIAN			 0x2f
-#define LANG_MALAY			 0x3e
-#define LANG_MALAYALAM			 0x4c
-#define LANG_MALTESE			 0x3a
-#define LANG_MAORI			 0x28
-#define LANG_MARATHI			 0x4e
-#define LANG_NORWEGIAN                   0x14
-#define LANG_ORIYA			 0x48
-#define LANG_POLISH                      0x15
-#define LANG_PORTUGUESE                  0x16
-#define LANG_PUNJABI			 0x46
-#define LANG_RHAETO_ROMANCE		 0x17
-#define LANG_ROMANIAN                    0x18
-#define LANG_RUSSIAN                     0x19
-#define LANG_SAAMI			 0x3b
-#define LANG_SANSKRIT			 0x4f
-#define LANG_SLOVAK                      0x1b
-#define LANG_SLOVENIAN                   0x24
-#define LANG_SORBIAN                     0x2e
-#define LANG_SPANISH                     0x0a
-#define LANG_SUTU			 0x30
-#define LANG_SWAHILI			 0x41
-#define LANG_SWEDISH                     0x1d
-#define LANG_TAMIL			 0x49
-#define LANG_TATAR			 0x44
-#define LANG_TELUGU			 0x4a
-#define LANG_THAI                        0x1e
-#define LANG_TSONGA			 0x31
-#define LANG_TSWANA			 0x32
-#define LANG_TURKISH                     0x1f
-#define LANG_UKRAINIAN                   0x22
-#define LANG_URDU			 0x20
-#define LANG_UZBEK			 0x43
-#define LANG_VENDA			 0x33
-#define LANG_VIETNAMESE			 0x2a
-#define LANG_XHOSA			 0x34
-#define LANG_ZULU			 0x35
-/* non standard; keep the number high enough (but < 0xff) */
-#define LANG_ESPERANTO			 0x8f
-#define LANG_WALON			 0x90
-#define LANG_CORNISH                     0x91
-#define LANG_WELSH                       0x92
-#define LANG_BRETON                      0x93
-
-/* Sublanguage definitions */
-#define SUBLANG_NEUTRAL                  0x00    /* language neutral */
-#define SUBLANG_DEFAULT                  0x01    /* user default */
-#define SUBLANG_SYS_DEFAULT              0x02    /* system default */
-
-#define SUBLANG_ARABIC                   0x01
-#define SUBLANG_ARABIC_SAUDI_ARABIA      0x01
-#define SUBLANG_ARABIC_IRAQ              0x02
-#define SUBLANG_ARABIC_EGYPT             0x03
-#define SUBLANG_ARABIC_LIBYA             0x04
-#define SUBLANG_ARABIC_ALGERIA           0x05
-#define SUBLANG_ARABIC_MOROCCO           0x06
-#define SUBLANG_ARABIC_TUNISIA           0x07
-#define SUBLANG_ARABIC_OMAN              0x08
-#define SUBLANG_ARABIC_YEMEN             0x09
-#define SUBLANG_ARABIC_SYRIA             0x0a
-#define SUBLANG_ARABIC_JORDAN            0x0b
-#define SUBLANG_ARABIC_LEBANON           0x0c
-#define SUBLANG_ARABIC_KUWAIT            0x0d
-#define SUBLANG_ARABIC_UAE               0x0e
-#define SUBLANG_ARABIC_BAHRAIN           0x0f
-#define SUBLANG_ARABIC_QATAR             0x10
-#define SUBLANG_CHINESE_TRADITIONAL      0x01
-#define SUBLANG_CHINESE_SIMPLIFIED       0x02
-#define SUBLANG_CHINESE_HONGKONG         0x03
-#define SUBLANG_CHINESE_SINGAPORE        0x04
-#define SUBLANG_CHINESE_MACAU            0x05
-#define SUBLANG_DUTCH                    0x01
-#define SUBLANG_DUTCH_BELGIAN            0x02
-#define SUBLANG_DUTCH_SURINAM		 0x03
-#define SUBLANG_ENGLISH_US               0x01
-#define SUBLANG_ENGLISH_UK               0x02
-#define SUBLANG_ENGLISH_AUS              0x03
-#define SUBLANG_ENGLISH_CAN              0x04
-#define SUBLANG_ENGLISH_NZ               0x05
-#define SUBLANG_ENGLISH_EIRE             0x06
-#define SUBLANG_ENGLISH_SAFRICA          0x07
-#define SUBLANG_ENGLISH_JAMAICA          0x08
-#define SUBLANG_ENGLISH_CARRIBEAN        0x09
-#define SUBLANG_ENGLISH_BELIZE           0x0a
-#define SUBLANG_ENGLISH_TRINIDAD         0x0b
-#define SUBLANG_ENGLISH_ZIMBABWE         0x0c
-#define SUBLANG_ENGLISH_PHILIPPINES      0x0d
-#define SUBLANG_FRENCH                   0x01
-#define SUBLANG_FRENCH_BELGIAN           0x02
-#define SUBLANG_FRENCH_CANADIAN          0x03
-#define SUBLANG_FRENCH_SWISS             0x04
-#define SUBLANG_FRENCH_LUXEMBOURG        0x05
-#define SUBLANG_FRENCH_MONACO            0x06
-#define SUBLANG_GERMAN                   0x01
-#define SUBLANG_GERMAN_SWISS             0x02
-#define SUBLANG_GERMAN_AUSTRIAN          0x03
-#define SUBLANG_GERMAN_LUXEMBOURG        0x04
-#define SUBLANG_GERMAN_LIECHTENSTEIN     0x05
-#define SUBLANG_ITALIAN                  0x01
-#define SUBLANG_ITALIAN_SWISS            0x02
-#define SUBLANG_KOREAN                   0x01
-#define SUBLANG_KOREAN_JOHAB             0x02
-#define SUBLANG_NORWEGIAN_BOKMAL         0x01
-#define SUBLANG_NORWEGIAN_NYNORSK        0x02
-#define SUBLANG_PORTUGUESE               0x02
-#define SUBLANG_PORTUGUESE_BRAZILIAN     0x01
-#define SUBLANG_SPANISH                  0x01
-#define SUBLANG_SPANISH_MEXICAN          0x02
-#define SUBLANG_SPANISH_MODERN           0x03
-#define SUBLANG_SPANISH_GUATEMALA        0x04
-#define SUBLANG_SPANISH_COSTARICA        0x05
-#define SUBLANG_SPANISH_PANAMA           0x06
-#define SUBLANG_SPANISH_DOMINICAN        0x07
-#define SUBLANG_SPANISH_VENEZUELA        0x08
-#define SUBLANG_SPANISH_COLOMBIA         0x09
-#define SUBLANG_SPANISH_PERU             0x0a
-#define SUBLANG_SPANISH_ARGENTINA        0x0b
-#define SUBLANG_SPANISH_ECUADOR          0x0c
-#define SUBLANG_SPANISH_CHILE            0x0d
-#define SUBLANG_SPANISH_URUGUAY          0x0e
-#define SUBLANG_SPANISH_PARAGUAY         0x0f
-#define SUBLANG_SPANISH_BOLIVIA          0x10
-#define SUBLANG_SPANISH_EL_SALVADOR	 0x11
-#define SUBLANG_SPANISH_HONDURAS         0x12
-#define SUBLANG_SPANISH_NICARAGUA        0x13
-#define SUBLANG_SPANISH_PUERTO_RICO      0x14
-/* FIXME: I don't know the symbolic names for those */
-#define SUBLANG_ROMANIAN		 0x01
-#define SUBLANG_ROMANIAN_MOLDAVIA	 0x02
-#define SUBLANG_RUSSIAN			 0x01
-#define SUBLANG_RUSSIAN_MOLDAVIA	 0x02
-#define SUBLANG_CROATIAN		 0x01
-#define SUBLANG_SERBIAN			 0x02
-#define SUBLANG_SERBIAN_LATIN		 0x03
-#define SUBLANG_SWEDISH			 0x01
-#define SUBLANG_SWEDISH_FINLAND		 0x02
-#define SUBLANG_LITHUANIAN		 0x01
-#define SUBLANG_LITHUANIAN_CLASSIC	 0x02
-#define SUBLANG_AZERI			 0x01
-#define SUBLANG_AZERI_CYRILLIC		 0x02
-#define SUBLANG_GAELIC			 0x01
-#define SUBLANG_GAELIC_SCOTTISH		 0x02
-#define SUBLANG_GAELIC_MANX              0x03
-#define SUBLANG_MALAY			 0x01
-#define SUBLANG_MALAY_BRUNEI_DARUSSALAM  0x02
-#define SUBLANG_UZBEK			 0x01
-#define SUBLANG_UZBEK_CYRILLIC		 0x02
-#define SUBLANG_URDU_PAKISTAN            0x01
-
-/* Sort definitions */
-#define SORT_DEFAULT                     0x0
-#define SORT_JAPANESE_XJIS               0x0
-#define SORT_JAPANESE_UNICODE            0x1
-#define SORT_CHINESE_BIG5                0x0
-#define SORT_CHINESE_UNICODE             0x1
-#define SORT_KOREAN_KSC                  0x0
-#define SORT_KOREAN_UNICODE              0x1
-
 
 /* Locale Dependent Mapping Flags */
 #define LCMAP_LOWERCASE	0x00000100	/* lower case letters */
@@ -412,14 +188,6 @@
 /* use this in a WineLib program if you really want all types */
 #define LOCALE_TIMEDATEBOTH    0x00000300  /* full set */
 
-/* Definitions for IsTextUnicode() function */
-#define IS_TEXT_UNICODE_ASCII16		0x0001
-#define IS_TEXT_UNICODE_SIGNATURE	0x0008
-#define IS_TEXT_UNICODE_REVERSE_ASCII16	0x0010
-#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080
-#define IS_TEXT_UNICODE_ILLEGAL_CHARS	0x0100
-#define IS_TEXT_UNICODE_ODD_LENGTH	0x0200
-
 /* Tests that we currently implement */
 #define ITU_IMPLEMENTED_TESTS \
 	IS_TEXT_UNICODE_SIGNATURE| \
@@ -476,6 +244,14 @@
 #define MAX_LEADBYTES     12
 #define MAX_DEFAULTCHAR   2
 
+
+/* Types
+ */
+
+typedef DWORD LCTYPE;
+typedef DWORD CALTYPE;
+typedef DWORD CALID;
+
 typedef struct
 {
     UINT MaxCharSize;
@@ -503,8 +279,60 @@
     WCHAR CodePageName[MAX_PATH];
 } CPINFOEXW, *LPCPINFOEXW;
 
-typedef DWORD CALTYPE;
-typedef DWORD CALID;
+DECL_WINELIB_TYPE_AW(CPINFOEX)
+DECL_WINELIB_TYPE_AW(LPCPINFOEX)
+
+typedef struct _numberfmtA {
+    UINT NumDigits;
+    UINT LeadingZero;
+    UINT Grouping;
+    LPCSTR lpDecimalSep;
+    LPCSTR lpThousandSep;
+    UINT NegativeOrder;
+} NUMBERFMTA, *LPNUMBERFMTA;
+
+typedef struct _numberfmtW {
+    UINT NumDigits;
+    UINT LeadingZero;
+    UINT Grouping;
+    LPCWSTR lpDecimalSep;
+    LPCWSTR lpThousandSep;
+    UINT NegativeOrder;
+} NUMBERFMTW, *LPNUMBERFMTW;
+
+DECL_WINELIB_TYPE_AW(NUMBERFMT)
+DECL_WINELIB_TYPE_AW(LPNUMBERFMT)
+
+typedef struct _currencyfmtA
+{   
+	UINT      NumDigits;   
+	UINT      LeadingZero; 
+	UINT      Grouping;   
+	LPCSTR    lpDecimalSep;   
+	LPCSTR    lpThousandSep; 
+	UINT      NegativeOrder;   
+	UINT      PositiveOrder; 
+	LPCSTR    lpCurrencySymbol;
+} CURRENCYFMTA, *LPCURRENCYFMTA; 
+
+typedef struct _currencyfmtW
+{   
+	UINT      NumDigits;   
+	UINT      LeadingZero; 
+	UINT      Grouping;   
+	LPCWSTR   lpDecimalSep;   
+	LPCWSTR   lpThousandSep; 
+	UINT      NegativeOrder;   
+	UINT      PositiveOrder; 
+	LPCWSTR   lpCurrencySymbol;
+} CURRENCYFMTW, *LPCURRENCYFMTW; 
+
+DECL_WINELIB_TYPE_AW(CURRENCYFMT)
+DECL_WINELIB_TYPE_AW(LPCURRENCYFMT)
+
+
+/* APIs
+ */
 
 typedef BOOL CALLBACK (*CALINFO_ENUMPROCA)(LPSTR);
 typedef BOOL CALLBACK (*CALINFO_ENUMPROCW)(LPWSTR);
@@ -516,9 +344,20 @@
 
 LCID WINAPI ConvertDefaultLocale(LCID   Locale);
 
-BOOL        WINAPI GetCPInfo(UINT,LPCPINFO);
-BOOL        WINAPI GetCPInfoExA(UINT,DWORD,LPCPINFOEXA);
-BOOL        WINAPI GetCPInfoExW(UINT,DWORD,LPCPINFOEXW);
-#define     GetCPInfoEx WINELIB_NAME_AW(GetCPInfoEx)
+BOOL    WINAPI GetCPInfo(UINT,LPCPINFO);
+BOOL    WINAPI GetCPInfoExA(UINT,DWORD,LPCPINFOEXA);
+BOOL    WINAPI GetCPInfoExW(UINT,DWORD,LPCPINFOEXW);
+#define GetCPInfoEx WINELIB_NAME_AW(GetCPInfoEx)
+INT     WINAPI GetLocaleInfoA(LCID,LCTYPE,LPSTR,INT);
+INT     WINAPI GetLocaleInfoW(LCID,LCTYPE,LPWSTR,INT);
+#define GetLocaleInfo WINELIB_NAME_AW(GetLocaleInfo)
+INT     WINAPI GetNumberFormatA(LCID,DWORD,LPCSTR,const NUMBERFMTA*,LPSTR,int);
+INT     WINAPI GetNumberFormatW(LCID,DWORD,LPCWSTR,const NUMBERFMTW*,LPWSTR,int);
+#define GetNumberFormat WINELIB_NAME_AW(GetNumberFormat)
 
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !NONLS */
 #endif  /* __WINE_WINNLS_H */
diff --git a/include/winnt.h b/include/winnt.h
index c678cc1..933e83e 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -826,6 +826,264 @@
 
 #endif  /* __WINE__ */
 
+
+
+/*
+ * Language IDs
+ */
+
+#define MAKELCID(l, s)		(MAKELONG(l, s))
+
+#define MAKELANGID(p, s)        ((((WORD)(s))<<10) | (WORD)(p))
+#define PRIMARYLANGID(l)        ((WORD)(l) & 0x3ff)
+#define SUBLANGID(l)            ((WORD)(l) >> 10)
+
+#define LANGIDFROMLCID(lcid)	((WORD)(lcid))
+#define SORTIDFROMLCID(lcid)	((WORD)((((DWORD)(lcid)) >> 16) & 0x0f))
+
+#define LANG_SYSTEM_DEFAULT	(MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT))
+#define LANG_USER_DEFAULT	(MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT))
+#define LOCALE_SYSTEM_DEFAULT	(MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT))
+#define LOCALE_USER_DEFAULT	(MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT)) 
+#define LOCALE_NEUTRAL		(MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT))
+
+/* FIXME: are the symbolic names correct for LIDs:  0x17, 0x20, 0x28,
+ *	  0x2a, 0x2b, 0x2c, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
+ *	  0x37, 0x39, 0x3a, 0x3b, 0x3c, 0x3e, 0x3f, 0x41, 0x43, 0x44,
+ *	  0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
+ *	  0x4f, 0x57
+ */
+#define LANG_NEUTRAL                     0x00
+#define LANG_AFRIKAANS			 0x36
+#define LANG_ALBANIAN			 0x1c
+#define LANG_ARABIC                      0x01
+#define LANG_ARMENIAN			 0x2b
+#define LANG_ASSAMESE			 0x4d
+#define LANG_AZERI			 0x2c
+#define LANG_BASQUE                      0x2d
+#define LANG_BENGALI			 0x45
+#define LANG_BULGARIAN                   0x02
+#define LANG_BYELORUSSIAN                0x23
+#define LANG_CATALAN                     0x03
+#define LANG_CHINESE                     0x04
+#define LANG_SERBO_CROATIAN              0x1a
+#define LANG_CROATIAN	  LANG_SERBO_CROATIAN
+#define LANG_SERBIAN	  LANG_SERBO_CROATIAN
+#define LANG_CZECH                       0x05
+#define LANG_DANISH                      0x06
+#define LANG_DUTCH                       0x13
+#define LANG_ENGLISH                     0x09
+#define LANG_ESTONIAN                    0x25
+#define LANG_FAEROESE                    0x38
+#define LANG_FARSI                       0x29
+#define LANG_FINNISH                     0x0b
+#define LANG_FRENCH                      0x0c
+#define LANG_GAELIC			 0x3c
+#define LANG_GEORGIAN			 0x37
+#define LANG_GERMAN                      0x07
+#define LANG_GREEK                       0x08
+#define LANG_GUJARATI			 0x47
+#define LANG_HEBREW                      0x0D
+#define LANG_HINDI			 0x39
+#define LANG_HUNGARIAN                   0x0e
+#define LANG_ICELANDIC                   0x0f
+#define LANG_INDONESIAN                  0x21
+#define LANG_ITALIAN                     0x10
+#define LANG_JAPANESE                    0x11
+#define LANG_KANNADA			 0x4b
+#define LANG_KAZAKH			 0x3f
+#define LANG_KONKANI			 0x57
+#define LANG_KOREAN                      0x12
+#define LANG_LATVIAN                     0x26
+#define LANG_LITHUANIAN                  0x27
+#define LANG_MACEDONIAN			 0x2f
+#define LANG_MALAY			 0x3e
+#define LANG_MALAYALAM			 0x4c
+#define LANG_MALTESE			 0x3a
+#define LANG_MAORI			 0x28
+#define LANG_MARATHI			 0x4e
+#define LANG_NORWEGIAN                   0x14
+#define LANG_ORIYA			 0x48
+#define LANG_POLISH                      0x15
+#define LANG_PORTUGUESE                  0x16
+#define LANG_PUNJABI			 0x46
+#define LANG_RHAETO_ROMANCE		 0x17
+#define LANG_ROMANIAN                    0x18
+#define LANG_RUSSIAN                     0x19
+#define LANG_SAAMI			 0x3b
+#define LANG_SANSKRIT			 0x4f
+#define LANG_SLOVAK                      0x1b
+#define LANG_SLOVENIAN                   0x24
+#define LANG_SORBIAN                     0x2e
+#define LANG_SPANISH                     0x0a
+#define LANG_SUTU			 0x30
+#define LANG_SWAHILI			 0x41
+#define LANG_SWEDISH                     0x1d
+#define LANG_TAMIL			 0x49
+#define LANG_TATAR			 0x44
+#define LANG_TELUGU			 0x4a
+#define LANG_THAI                        0x1e
+#define LANG_TSONGA			 0x31
+#define LANG_TSWANA			 0x32
+#define LANG_TURKISH                     0x1f
+#define LANG_UKRAINIAN                   0x22
+#define LANG_URDU			 0x20
+#define LANG_UZBEK			 0x43
+#define LANG_VENDA			 0x33
+#define LANG_VIETNAMESE			 0x2a
+#define LANG_XHOSA			 0x34
+#define LANG_ZULU			 0x35
+/* non standard; keep the number high enough (but < 0xff) */
+#define LANG_ESPERANTO			 0x8f
+#define LANG_WALON			 0x90
+#define LANG_CORNISH                     0x91
+#define LANG_WELSH                       0x92
+#define LANG_BRETON                      0x93
+
+/* Sublanguage definitions */
+#define SUBLANG_NEUTRAL                  0x00    /* language neutral */
+#define SUBLANG_DEFAULT                  0x01    /* user default */
+#define SUBLANG_SYS_DEFAULT              0x02    /* system default */
+
+#define SUBLANG_ARABIC                   0x01
+#define SUBLANG_ARABIC_SAUDI_ARABIA      0x01
+#define SUBLANG_ARABIC_IRAQ              0x02
+#define SUBLANG_ARABIC_EGYPT             0x03
+#define SUBLANG_ARABIC_LIBYA             0x04
+#define SUBLANG_ARABIC_ALGERIA           0x05
+#define SUBLANG_ARABIC_MOROCCO           0x06
+#define SUBLANG_ARABIC_TUNISIA           0x07
+#define SUBLANG_ARABIC_OMAN              0x08
+#define SUBLANG_ARABIC_YEMEN             0x09
+#define SUBLANG_ARABIC_SYRIA             0x0a
+#define SUBLANG_ARABIC_JORDAN            0x0b
+#define SUBLANG_ARABIC_LEBANON           0x0c
+#define SUBLANG_ARABIC_KUWAIT            0x0d
+#define SUBLANG_ARABIC_UAE               0x0e
+#define SUBLANG_ARABIC_BAHRAIN           0x0f
+#define SUBLANG_ARABIC_QATAR             0x10
+#define SUBLANG_CHINESE_TRADITIONAL      0x01
+#define SUBLANG_CHINESE_SIMPLIFIED       0x02
+#define SUBLANG_CHINESE_HONGKONG         0x03
+#define SUBLANG_CHINESE_SINGAPORE        0x04
+#define SUBLANG_CHINESE_MACAU            0x05
+#define SUBLANG_DUTCH                    0x01
+#define SUBLANG_DUTCH_BELGIAN            0x02
+#define SUBLANG_DUTCH_SURINAM		 0x03
+#define SUBLANG_ENGLISH_US               0x01
+#define SUBLANG_ENGLISH_UK               0x02
+#define SUBLANG_ENGLISH_AUS              0x03
+#define SUBLANG_ENGLISH_CAN              0x04
+#define SUBLANG_ENGLISH_NZ               0x05
+#define SUBLANG_ENGLISH_EIRE             0x06
+#define SUBLANG_ENGLISH_SAFRICA          0x07
+#define SUBLANG_ENGLISH_JAMAICA          0x08
+#define SUBLANG_ENGLISH_CARRIBEAN        0x09
+#define SUBLANG_ENGLISH_BELIZE           0x0a
+#define SUBLANG_ENGLISH_TRINIDAD         0x0b
+#define SUBLANG_ENGLISH_ZIMBABWE         0x0c
+#define SUBLANG_ENGLISH_PHILIPPINES      0x0d
+#define SUBLANG_FRENCH                   0x01
+#define SUBLANG_FRENCH_BELGIAN           0x02
+#define SUBLANG_FRENCH_CANADIAN          0x03
+#define SUBLANG_FRENCH_SWISS             0x04
+#define SUBLANG_FRENCH_LUXEMBOURG        0x05
+#define SUBLANG_FRENCH_MONACO            0x06
+#define SUBLANG_GERMAN                   0x01
+#define SUBLANG_GERMAN_SWISS             0x02
+#define SUBLANG_GERMAN_AUSTRIAN          0x03
+#define SUBLANG_GERMAN_LUXEMBOURG        0x04
+#define SUBLANG_GERMAN_LIECHTENSTEIN     0x05
+#define SUBLANG_ITALIAN                  0x01
+#define SUBLANG_ITALIAN_SWISS            0x02
+#define SUBLANG_KOREAN                   0x01
+#define SUBLANG_KOREAN_JOHAB             0x02
+#define SUBLANG_NORWEGIAN_BOKMAL         0x01
+#define SUBLANG_NORWEGIAN_NYNORSK        0x02
+#define SUBLANG_PORTUGUESE               0x02
+#define SUBLANG_PORTUGUESE_BRAZILIAN     0x01
+#define SUBLANG_SPANISH                  0x01
+#define SUBLANG_SPANISH_MEXICAN          0x02
+#define SUBLANG_SPANISH_MODERN           0x03
+#define SUBLANG_SPANISH_GUATEMALA        0x04
+#define SUBLANG_SPANISH_COSTARICA        0x05
+#define SUBLANG_SPANISH_PANAMA           0x06
+#define SUBLANG_SPANISH_DOMINICAN        0x07
+#define SUBLANG_SPANISH_VENEZUELA        0x08
+#define SUBLANG_SPANISH_COLOMBIA         0x09
+#define SUBLANG_SPANISH_PERU             0x0a
+#define SUBLANG_SPANISH_ARGENTINA        0x0b
+#define SUBLANG_SPANISH_ECUADOR          0x0c
+#define SUBLANG_SPANISH_CHILE            0x0d
+#define SUBLANG_SPANISH_URUGUAY          0x0e
+#define SUBLANG_SPANISH_PARAGUAY         0x0f
+#define SUBLANG_SPANISH_BOLIVIA          0x10
+#define SUBLANG_SPANISH_EL_SALVADOR	 0x11
+#define SUBLANG_SPANISH_HONDURAS         0x12
+#define SUBLANG_SPANISH_NICARAGUA        0x13
+#define SUBLANG_SPANISH_PUERTO_RICO      0x14
+/* FIXME: I don't know the symbolic names for those */
+#define SUBLANG_ROMANIAN		 0x01
+#define SUBLANG_ROMANIAN_MOLDAVIA	 0x02
+#define SUBLANG_RUSSIAN			 0x01
+#define SUBLANG_RUSSIAN_MOLDAVIA	 0x02
+#define SUBLANG_CROATIAN		 0x01
+#define SUBLANG_SERBIAN			 0x02
+#define SUBLANG_SERBIAN_LATIN		 0x03
+#define SUBLANG_SWEDISH			 0x01
+#define SUBLANG_SWEDISH_FINLAND		 0x02
+#define SUBLANG_LITHUANIAN		 0x01
+#define SUBLANG_LITHUANIAN_CLASSIC	 0x02
+#define SUBLANG_AZERI			 0x01
+#define SUBLANG_AZERI_CYRILLIC		 0x02
+#define SUBLANG_GAELIC			 0x01
+#define SUBLANG_GAELIC_SCOTTISH		 0x02
+#define SUBLANG_GAELIC_MANX              0x03
+#define SUBLANG_MALAY			 0x01
+#define SUBLANG_MALAY_BRUNEI_DARUSSALAM  0x02
+#define SUBLANG_UZBEK			 0x01
+#define SUBLANG_UZBEK_CYRILLIC		 0x02
+#define SUBLANG_URDU_PAKISTAN            0x01
+
+
+
+/*
+ * Sort definitions
+ */
+
+#define SORT_DEFAULT                     0x0
+#define SORT_JAPANESE_XJIS               0x0
+#define SORT_JAPANESE_UNICODE            0x1
+#define SORT_CHINESE_BIG5                0x0
+#define SORT_CHINESE_UNICODE             0x1
+#define SORT_KOREAN_KSC                  0x0
+#define SORT_KOREAN_UNICODE              0x1
+
+
+
+/*
+ * Definitions for IsTextUnicode()
+ */
+
+#define IS_TEXT_UNICODE_ASCII16		   0x0001
+#define IS_TEXT_UNICODE_STATISTICS         0x0002
+#define IS_TEXT_UNICODE_CONTROLS           0x0004
+#define IS_TEXT_UNICODE_SIGNATURE	   0x0008
+#define IS_TEXT_UNICODE_UNICODE_MASK       0x000F
+#define IS_TEXT_UNICODE_REVERSE_ASCII16	   0x0010
+#define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020
+#define IS_TEXT_UNICODE_REVERSE_CONTROLS   0x0040
+#define IS_TEXT_UNICODE_REVERSE_SIGNATURE  0x0080
+#define IS_TEXT_UNICODE_REVERSE_MASK       0x00F0
+#define IS_TEXT_UNICODE_ILLEGAL_CHARS	   0x0100
+#define IS_TEXT_UNICODE_ODD_LENGTH	   0x0200
+#define IS_TEXT_UNICODE_DBCS_LEADBYTE      0x0400
+#define IS_TEXT_UNICODE_NOT_UNICODE_MASK   0x0F00
+#define IS_TEXT_UNICODE_NULL_BYTES         0x1000
+#define IS_TEXT_UNICODE_NOT_ASCII_MASK     0xF000
+
+
+
 /*
  * Exception codes
  */