summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2017-04-17 21:35:35 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-04-26 08:50:54 +0200
commitc70d49c7c888da8cfd73db8585e7be1f37fc398a (patch)
treec0e540401850018464ca76300536faf9aa7e27d2 /include
parentcd4344d3bdef631b3e64ac12a9e64bc9670c1b7c (diff)
use strong_int for LanguageType
Change-Id: If99a944f7032180355da291ad283b4cfcea4f448 Reviewed-on: https://gerrit.libreoffice.org/36629 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'include')
-rw-r--r--include/editeng/edtdlg.hxx2
-rw-r--r--include/editeng/forbiddencharacterstable.hxx11
-rw-r--r--include/editeng/splwrap.hxx4
-rw-r--r--include/filter/msfilter/svdfppt.hxx4
-rw-r--r--include/i18nlangtag/lang.h1151
-rw-r--r--include/i18nlangtag/mslangid.hxx6
-rw-r--r--include/linguistic/hyphdta.hxx13
-rw-r--r--include/linguistic/misc.hxx14
-rw-r--r--include/linguistic/spelldta.hxx13
-rw-r--r--include/o3tl/strong_int.hxx11
-rw-r--r--include/svl/languageoptions.hxx4
-rw-r--r--include/svl/ondemand.hxx35
-rw-r--r--include/svl/zforlist.hxx2
-rw-r--r--include/svx/langbox.hxx4
-rw-r--r--include/unotools/lingucfg.hxx6
-rw-r--r--include/unotools/localedatawrapper.hxx2
-rw-r--r--include/unotools/transliterationwrapper.hxx8
-rw-r--r--include/xmloff/xmlnumfe.hxx3
18 files changed, 658 insertions, 635 deletions
diff --git a/include/editeng/edtdlg.hxx b/include/editeng/edtdlg.hxx
index e8f5521ee095..be4722bc31b0 100644
--- a/include/editeng/edtdlg.hxx
+++ b/include/editeng/edtdlg.hxx
@@ -91,7 +91,7 @@ public:
virtual ~EditAbstractDialogFactory() override; // needed for export of vtable
static EditAbstractDialogFactory* Create();
virtual VclPtr<AbstractThesaurusDialog> CreateThesaurusDialog( vcl::Window*, css::uno::Reference< css::linguistic2::XThesaurus > xThesaurus,
- const OUString &rWord, sal_Int16 nLanguage ) = 0;
+ const OUString &rWord, LanguageType nLanguage ) = 0;
virtual VclPtr<AbstractHyphenWordDialog> CreateHyphenWordDialog( vcl::Window*,
const OUString &rWord, LanguageType nLang,
diff --git a/include/editeng/forbiddencharacterstable.hxx b/include/editeng/forbiddencharacterstable.hxx
index 8c58a55cb006..b14828593112 100644
--- a/include/editeng/forbiddencharacterstable.hxx
+++ b/include/editeng/forbiddencharacterstable.hxx
@@ -24,6 +24,7 @@
#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/i18n/ForbiddenCharacters.hpp>
#include <editeng/editengdllapi.h>
+#include <i18nlangtag/lang.h>
#include <map>
namespace com {
@@ -36,7 +37,7 @@ namespace uno {
class EDITENG_DLLPUBLIC SvxForbiddenCharactersTable : public salhelper::SimpleReferenceObject
{
public:
- typedef std::map<sal_uInt16, css::i18n::ForbiddenCharacters> Map;
+ typedef std::map<LanguageType, css::i18n::ForbiddenCharacters> Map;
private:
Map maMap;
css::uno::Reference< css::uno::XComponentContext > m_xContext;
@@ -44,10 +45,10 @@ private:
public:
SvxForbiddenCharactersTable( const css::uno::Reference< css::uno::XComponentContext >& rxContext);
- Map& GetMap() { return maMap; }
- const css::i18n::ForbiddenCharacters* GetForbiddenCharacters( sal_uInt16 nLanguage, bool bGetDefault );
- void SetForbiddenCharacters( sal_uInt16 nLanguage , const css::i18n::ForbiddenCharacters& );
- void ClearForbiddenCharacters( sal_uInt16 nLanguage );
+ Map& GetMap() { return maMap; }
+ const css::i18n::ForbiddenCharacters* GetForbiddenCharacters( LanguageType nLanguage, bool bGetDefault );
+ void SetForbiddenCharacters( LanguageType nLanguage , const css::i18n::ForbiddenCharacters& );
+ void ClearForbiddenCharacters( LanguageType nLanguage );
};
#endif // INCLUDED_EDITENG_FORBIDDENCHARACTERSTABLE_HXX
diff --git a/include/editeng/splwrap.hxx b/include/editeng/splwrap.hxx
index e5c4df4b9ff5..2b1b01b91091 100644
--- a/include/editeng/splwrap.hxx
+++ b/include/editeng/splwrap.hxx
@@ -83,10 +83,10 @@ public:
static sal_Int16 CheckSpellLang(
css::uno::Reference< css::linguistic2::XSpellChecker1 > const & xSpell,
- sal_Int16 nLang );
+ LanguageType nLang );
static sal_Int16 CheckHyphLang(
css::uno::Reference< css::linguistic2::XHyphenator >const & xHyph,
- sal_Int16 nLang );
+ LanguageType nLang );
static void ShowLanguageErrors();
diff --git a/include/filter/msfilter/svdfppt.hxx b/include/filter/msfilter/svdfppt.hxx
index aa950f44fd37..10baddfc9b91 100644
--- a/include/filter/msfilter/svdfppt.hxx
+++ b/include/filter/msfilter/svdfppt.hxx
@@ -643,7 +643,7 @@ struct PPTTextParagraphStyleAtomInterpreter
struct PPTTextSpecInfo
{
sal_uInt32 nCharIdx;
- sal_uInt16 nLanguage[ 3 ];
+ LanguageType nLanguage[ 3 ];
sal_uInt16 nDontKnow;
explicit PPTTextSpecInfo( sal_uInt32 nCharIdx );
@@ -933,7 +933,7 @@ struct PPTCharPropSet
OUString maString;
std::unique_ptr<SvxFieldItem>
mpFieldItem;
- sal_uInt16 mnLanguage[ 3 ];
+ LanguageType mnLanguage[ 3 ];
void SetFont( sal_uInt16 nFont );
void SetColor( sal_uInt32 nColor );
diff --git a/include/i18nlangtag/lang.h b/include/i18nlangtag/lang.h
index 8240cf63c60f..3e37953868cc 100644
--- a/include/i18nlangtag/lang.h
+++ b/include/i18nlangtag/lang.h
@@ -85,17 +85,25 @@
* comments are used. Do NOT use // C++ style comments. */
/* disable typedef for usage in svtools/source/misc/langtab.src */
-#ifndef __RSC
-typedef unsigned short LanguageType;
+#ifdef __RSC
+#define LanguageType(x) (x)
+#else
+#include <sal/types.h>
+#include <o3tl/strong_int.hxx>
+#include <ostream>
+struct LanguageTypeTag {};
+typedef o3tl::strong_int<sal_uInt16, LanguageTypeTag> LanguageType;
+inline std::ostream& operator<<(std::ostream& os, LanguageType const & lt) { os << sal_uInt16(lt); return os; }
+constexpr LanguageType primary(LanguageType lt) { return LanguageType(sal_uInt16(lt) & 0x03ff); }
#endif
#define LANGUAGE_MASK_PRIMARY 0x03ff
-#define LANGUAGE_DONTKNOW 0x03FF /* yes, the mask */
-#define LANGUAGE_NONE 0x00FF
-#define LANGUAGE_HID_HUMAN_INTERFACE_DEVICE 0x04FF
-#define LANGUAGE_SYSTEM 0x0000 /* OOo/SO definition */
+#define LANGUAGE_DONTKNOW LanguageType(0x03FF) /* yes, the mask */
+#define LANGUAGE_NONE LanguageType(0x00FF)
+#define LANGUAGE_HID_HUMAN_INTERFACE_DEVICE LanguageType(0x04FF)
+#define LANGUAGE_SYSTEM LanguageType(0x0000) /* OOo/SO definition */
/* The Invariant Locale (Locale ID = 0x007f) is a locale that can be used by
* applications when a consistent and locale-independent result is required.
@@ -105,7 +113,7 @@ typedef unsigned short LanguageType;
* The settings of the Invariant Locale are similar to US-English international
* standards, but should not be used to display formatted data. */
/* NOTE: this is taken from the MS documentation! Not supported by OOo/SO! */
-#define LANGUAGE_INVARIANT 0x007F
+#define LANGUAGE_INVARIANT LanguageType(0x007F)
/* Naming conventions:
* * ..._LSO suffix indicates a Language-Script-Only mapping, i.e. no country
@@ -117,360 +125,360 @@ typedef unsigned short LanguageType;
* a value defined by MS.
*/
-#define LANGUAGE_AFRIKAANS 0x0436
-#define LANGUAGE_ALBANIAN 0x041C
-#define LANGUAGE_ALSATIAN_FRANCE 0x0484
-#define LANGUAGE_AMHARIC_ETHIOPIA 0x045E
-#define LANGUAGE_ARABIC_ALGERIA 0x1401
-#define LANGUAGE_ARABIC_BAHRAIN 0x3C01
-#define LANGUAGE_ARABIC_EGYPT 0x0C01
-#define LANGUAGE_ARABIC_IRAQ 0x0801
-#define LANGUAGE_ARABIC_JORDAN 0x2C01
-#define LANGUAGE_ARABIC_KUWAIT 0x3401
-#define LANGUAGE_ARABIC_LEBANON 0x3001
-#define LANGUAGE_ARABIC_LIBYA 0x1001
-#define LANGUAGE_ARABIC_MOROCCO 0x1801
-#define LANGUAGE_ARABIC_OMAN 0x2001
-#define LANGUAGE_ARABIC_PRIMARY_ONLY 0x0001 /* primary only, not a locale! */
-#define LANGUAGE_ARABIC_QATAR 0x4001
-#define LANGUAGE_ARABIC_SAUDI_ARABIA 0x0401
-#define LANGUAGE_ARABIC_SYRIA 0x2801
-#define LANGUAGE_ARABIC_TUNISIA 0x1C01
-#define LANGUAGE_ARABIC_UAE 0x3801
-#define LANGUAGE_ARABIC_YEMEN 0x2401
-#define LANGUAGE_ARMENIAN 0x042B
-#define LANGUAGE_ASSAMESE 0x044D
-#define LANGUAGE_AZERI_CYRILLIC 0x082C
-#define LANGUAGE_AZERI_CYRILLIC_LSO 0x742C
-#define LANGUAGE_AZERI_LATIN 0x042C
-#define LANGUAGE_AZERI_LATIN_LSO 0x782C
-#define LANGUAGE_BASHKIR_RUSSIA 0x046D
-#define LANGUAGE_BASQUE 0x042D
-#define LANGUAGE_BELARUSIAN 0x0423
-#define LANGUAGE_BENGALI 0x0445 /* in India */
-#define LANGUAGE_BENGALI_BANGLADESH 0x0845
-#define LANGUAGE_BOSNIAN_CYRILLIC_LSO 0x641A
-#define LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA 0x201A
-#define LANGUAGE_BOSNIAN_LATIN_LSO 0x681A
-#define LANGUAGE_BOSNIAN_LSO 0x781A
-#define LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA 0x141A
-#define LANGUAGE_BOSNIAN_BOSNIA_HERZEGOVINA LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA /* TODO: remove, only for langtab.src & localize.sdf compatibility */
-#define LANGUAGE_BRETON_FRANCE 0x047E /* obsoletes LANGUAGE_USER_BRETON 0x0629 */
-#define LANGUAGE_BULGARIAN 0x0402
-#define LANGUAGE_BURMESE 0x0455
-#define LANGUAGE_CATALAN 0x0403
-#define LANGUAGE_CATALAN_VALENCIAN 0x0803 /* obsoletes LANGUAGE_USER_CATALAN_VALENCIAN 0x8003 */
-#define LANGUAGE_CHEROKEE_UNITED_STATES 0x045C
-#define LANGUAGE_CHEROKEE_CHEROKEE_LSO 0x7C5C
-#define LANGUAGE_CHINESE_HONGKONG 0x0C04
-#define LANGUAGE_CHINESE_LSO 0x7804
-#define LANGUAGE_CHINESE_MACAU 0x1404
-#define LANGUAGE_CHINESE_SIMPLIFIED 0x0804
-#define LANGUAGE_CHINESE_SINGAPORE 0x1004
-#define LANGUAGE_CHINESE_TRADITIONAL 0x0404
-#define LANGUAGE_CHINESE_SIMPLIFIED_LEGACY 0x0004 /* MS-.NET 'zh-CHS', primary only! but maps to 'zh-CN' */
-#define LANGUAGE_CHINESE_TRADITIONAL_LSO 0x7C04 /* MS-.NET 'zh-CHT' but maps to 'zh-Hant' */
-#define LANGUAGE_CHINESE LANGUAGE_CHINESE_SIMPLIFIED /* most code uses LANGUAGE_CHINESE */
-#define LANGUAGE_CORSICAN_FRANCE 0x0483
-#define LANGUAGE_CROATIAN 0x041A
-#define LANGUAGE_CROATIAN_BOSNIA_HERZEGOVINA 0x101A
-#define LANGUAGE_CZECH 0x0405
-#define LANGUAGE_DANISH 0x0406
-#define LANGUAGE_DARI_AFGHANISTAN 0x048C /* AKA Zoroastrian Dari */
-#define LANGUAGE_DHIVEHI 0x0465 /* AKA Divehi */
-#define LANGUAGE_DUTCH 0x0413
-#define LANGUAGE_DUTCH_BELGIAN 0x0813
-#define LANGUAGE_EDO 0x0466
-#define LANGUAGE_ENGLISH 0x0009 /* primary only, not a locale! */
-#define LANGUAGE_ENGLISH_ARAB_EMIRATES 0x4C09
-#define LANGUAGE_ENGLISH_AUS 0x0C09
-#define LANGUAGE_ENGLISH_BAHRAIN 0x5009
-#define LANGUAGE_ENGLISH_BELIZE 0x2809
-#define LANGUAGE_ENGLISH_CAN 0x1009
-#define LANGUAGE_ENGLISH_CARRIBEAN 0x2409
-#define LANGUAGE_ENGLISH_EGYPT 0x5409
-#define LANGUAGE_ENGLISH_EIRE 0x1809
-#define LANGUAGE_ENGLISH_HONG_KONG_SAR 0x3C09
-#define LANGUAGE_ENGLISH_INDIA 0x4009
-#define LANGUAGE_ENGLISH_INDONESIA 0x3809
-#define LANGUAGE_ENGLISH_JAMAICA 0x2009
-#define LANGUAGE_ENGLISH_JORDAN 0x5809
-#define LANGUAGE_ENGLISH_KUWAIT 0x5C09
-#define LANGUAGE_ENGLISH_MALAYSIA 0x4409
-#define LANGUAGE_ENGLISH_NZ 0x1409
-#define LANGUAGE_ENGLISH_PHILIPPINES 0x3409
-#define LANGUAGE_ENGLISH_SAFRICA 0x1C09
-#define LANGUAGE_ENGLISH_SINGAPORE 0x4809
-#define LANGUAGE_ENGLISH_TRINIDAD 0x2C09
-#define LANGUAGE_ENGLISH_TURKEY 0x6009
-#define LANGUAGE_ENGLISH_UK 0x0809
-#define LANGUAGE_ENGLISH_US 0x0409
-#define LANGUAGE_ENGLISH_YEMEN 0x6409
-#define LANGUAGE_ENGLISH_ZIMBABWE 0x3009
-#define LANGUAGE_ESTONIAN 0x0425
-#define LANGUAGE_FAEROESE 0x0438
-#define LANGUAGE_FARSI 0x0429
-#define LANGUAGE_FILIPINO 0x0464
-#define LANGUAGE_FINNISH 0x040B
-#define LANGUAGE_FRENCH 0x040C
-#define LANGUAGE_FRENCH_BELGIAN 0x080C
-#define LANGUAGE_FRENCH_CAMEROON 0x2C0C
-#define LANGUAGE_FRENCH_CANADIAN 0x0C0C
-#define LANGUAGE_FRENCH_COTE_D_IVOIRE 0x300C
-
-#define LANGUAGE_FRENCH_HAITI 0x3C0C
-#define LANGUAGE_FRENCH_LUXEMBOURG 0x140C
-#define LANGUAGE_FRENCH_MALI 0x340C
-#define LANGUAGE_FRENCH_MONACO 0x180C
-#define LANGUAGE_FRENCH_MOROCCO 0x380C
-#define LANGUAGE_FRENCH_NORTH_AFRICA 0xE40C
-#define LANGUAGE_FRENCH_REUNION 0x200C
-#define LANGUAGE_FRENCH_SENEGAL 0x280C
-#define LANGUAGE_FRENCH_SWISS 0x100C
-#define LANGUAGE_FRENCH_WEST_INDIES 0x1C0C /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */
-#define LANGUAGE_FRENCH_ZAIRE 0x240C
-#define LANGUAGE_FRISIAN_NETHERLANDS 0x0462
-#define LANGUAGE_FULFULDE_LATIN_LSO 0x7C67
-#define LANGUAGE_FULFULDE_NIGERIA 0x0467
-#define LANGUAGE_FULFULDE_SENEGAL 0x0867
-#define LANGUAGE_GAELIC_IRELAND 0x083C
-#define LANGUAGE_GAELIC_SCOTLAND 0x0491 /* apparently it occurred to MS that those are different languages */
-#define LANGUAGE_GAELIC_SCOTLAND_LEGACY 0x043C
-#define LANGUAGE_GALICIAN 0x0456
-#define LANGUAGE_GEORGIAN 0x0437
-#define LANGUAGE_GERMAN 0x0407
-#define LANGUAGE_GERMAN_AUSTRIAN 0x0C07
-#define LANGUAGE_GERMAN_LIECHTENSTEIN 0x1407
-#define LANGUAGE_GERMAN_LUXEMBOURG 0x1007
-#define LANGUAGE_GERMAN_SWISS 0x0807
-#define LANGUAGE_GREEK 0x0408
-#define LANGUAGE_GUARANI_PARAGUAY 0x0474
-#define LANGUAGE_GUJARATI 0x0447
-#define LANGUAGE_HAUSA_LATIN_LSO 0x7C68
-#define LANGUAGE_HAUSA_NIGERIA 0x0468
-#define LANGUAGE_HAWAIIAN_UNITED_STATES 0x0475
-#define LANGUAGE_HEBREW 0x040D
-#define LANGUAGE_HINDI 0x0439
-#define LANGUAGE_HUNGARIAN 0x040E
-#define LANGUAGE_IBIBIO_NIGERIA 0x0469
-#define LANGUAGE_ICELANDIC 0x040F
-#define LANGUAGE_IGBO_NIGERIA 0x0470
-#define LANGUAGE_INDONESIAN 0x0421
-#define LANGUAGE_INUKTITUT_SYLLABICS_CANADA 0x045D
-#define LANGUAGE_INUKTITUT_SYLLABICS_LSO 0x785D
-#define LANGUAGE_INUKTITUT_LATIN_CANADA 0x085D
-#define LANGUAGE_INUKTITUT_LATIN_LSO 0x7C5D
-#define LANGUAGE_ITALIAN 0x0410
-#define LANGUAGE_ITALIAN_SWISS 0x0810
-#define LANGUAGE_JAPANESE 0x0411
-#define LANGUAGE_KALAALLISUT_GREENLAND 0x046F /* obsoletes LANGUAGE_USER_KALAALLISUT 0x062A */
-#define LANGUAGE_KANNADA 0x044B
-#define LANGUAGE_KANURI_NIGERIA 0x0471
-#define LANGUAGE_KASHMIRI 0x0460
-#define LANGUAGE_KASHMIRI_INDIA 0x0860
-#define LANGUAGE_KAZAKH 0x043F
-#define LANGUAGE_KHMER 0x0453
-#define LANGUAGE_KICHE_GUATEMALA 0x0486 /* AKA K'iche', West Central Quiche, */
-#define LANGUAGE_KINYARWANDA_RWANDA 0x0487 /* obsoletes LANGUAGE_USER_KINYARWANDA 0x0621 */
-#define LANGUAGE_KIRGHIZ 0x0440 /* AKA Kyrgyz */
-#define LANGUAGE_KONKANI 0x0457
-#define LANGUAGE_KOREAN 0x0412
-#define LANGUAGE_KOREAN_JOHAB 0x0812 /* not mentioned in MS-LCID.pdf, oh joy */
-#define LANGUAGE_KURDISH_ARABIC_IRAQ 0x0492 /* obsoletes LANGUAGE_USER_KURDISH_IRAQ 0x0E26 */
-#define LANGUAGE_KURDISH_ARABIC_LSO 0x7C92
-#define LANGUAGE_LAO 0x0454
-#define LANGUAGE_LATIN_LSO 0x0476 /* obsoletes LANGUAGE_USER_LATIN 0x0610 */
-#define LANGUAGE_LATVIAN 0x0426
-#define LANGUAGE_LITHUANIAN 0x0427
-#define LANGUAGE_LITHUANIAN_CLASSIC 0x0827 /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */
-#define LANGUAGE_LU_CHINA 0x0490
-#define LANGUAGE_LUXEMBOURGISH_LUXEMBOURG 0x046E /* obsoletes LANGUAGE_USER_LUXEMBOURGISH 0x0630 */
-#define LANGUAGE_MACEDONIAN 0x042F
-#define LANGUAGE_MALAGASY_PLATEAU 0x048D /* obsoletes LANGUAGE_USER_MALAGASY_PLATEAU 0x064F */
-#define LANGUAGE_MALAYALAM 0x044C /* in India */
-#define LANGUAGE_MALAY_BRUNEI_DARUSSALAM 0x083E
-#define LANGUAGE_MALAY_MALAYSIA 0x043E
-#define LANGUAGE_MALTESE 0x043A
-#define LANGUAGE_MANIPURI 0x0458
-#define LANGUAGE_MAORI_NEW_ZEALAND 0x0481 /* obsoletes LANGUAGE_USER_MAORI 0x0620 */
-#define LANGUAGE_MAPUDUNGUN_CHILE 0x047A /* AKA Araucanian */
-#define LANGUAGE_MARATHI 0x044E
-#define LANGUAGE_MOHAWK_CANADA 0x047C
-#define LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA 0x0450
-#define LANGUAGE_MONGOLIAN_CYRILLIC_LSO 0x7850
-#define LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA 0x0C50
-#define LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA 0x0850
-#define LANGUAGE_MONGOLIAN_MONGOLIAN_LSO 0x7C50
-#define LANGUAGE_NEPALI 0x0461
-#define LANGUAGE_NEPALI_INDIA 0x0861
-#define LANGUAGE_NORWEGIAN 0x0014 /* primary only, not a locale! */
-#define LANGUAGE_NORWEGIAN_BOKMAL 0x0414
-#define LANGUAGE_NORWEGIAN_BOKMAL_LSO 0x7C14
-#define LANGUAGE_NORWEGIAN_NYNORSK 0x0814
-#define LANGUAGE_NORWEGIAN_NYNORSK_LSO 0x7814
-#define LANGUAGE_OCCITAN_FRANCE 0x0482 /* obsoletes LANGUAGE_USER_OCCITAN 0x0625 */
-#define LANGUAGE_ODIA 0x0448
-#define LANGUAGE_OROMO 0x0472
-#define LANGUAGE_PAPIAMENTU 0x0479
-#define LANGUAGE_PASHTO 0x0463
-#define LANGUAGE_POLISH 0x0415
-#define LANGUAGE_PORTUGUESE 0x0816
-#define LANGUAGE_PORTUGUESE_BRAZILIAN 0x0416
-#define LANGUAGE_PUNJABI 0x0446
-#define LANGUAGE_PUNJABI_ARABIC_LSO 0x7C46
-#define LANGUAGE_PUNJABI_PAKISTAN 0x0846
-#define LANGUAGE_QUECHUA_BOLIVIA 0x046B
-#define LANGUAGE_QUECHUA_COLOMBIA 0x0493 /* different primary ID */
-#define LANGUAGE_QUECHUA_ECUADOR 0x086B
-#define LANGUAGE_QUECHUA_PERU 0x0C6B
-#define LANGUAGE_RHAETO_ROMAN 0x0417
-#define LANGUAGE_ROMANIAN 0x0418
-#define LANGUAGE_ROMANIAN_MOLDOVA 0x0818
-#define LANGUAGE_RUSSIAN 0x0419
-#define LANGUAGE_RUSSIAN_MOLDOVA 0x0819
-#define LANGUAGE_SAMI_NORTHERN_NORWAY 0x043B
-#define LANGUAGE_SAMI_LAPPISH LANGUAGE_SAMI_NORTHERN_NORWAY /* the old MS definition */
-#define LANGUAGE_SAMI_INARI 0x243B
-#define LANGUAGE_SAMI_INARI_LSO 0x703B
-#define LANGUAGE_SAMI_LULE_LSO 0x7C3B
-#define LANGUAGE_SAMI_LULE_NORWAY 0x103B
-#define LANGUAGE_SAMI_LULE_SWEDEN 0x143B
-#define LANGUAGE_SAMI_NORTHERN_FINLAND 0x0C3B
-#define LANGUAGE_SAMI_NORTHERN_SWEDEN 0x083B
-#define LANGUAGE_SAMI_SKOLT 0x203B
-#define LANGUAGE_SAMI_SKOLT_LSO 0x743B
-#define LANGUAGE_SAMI_SOUTHERN_LSO 0x783B
-#define LANGUAGE_SAMI_SOUTHERN_NORWAY 0x183B
-#define LANGUAGE_SAMI_SOUTHERN_SWEDEN 0x1C3B
-#define LANGUAGE_SANSKRIT 0x044F
-#define LANGUAGE_SEPEDI 0x046C
-#define LANGUAGE_NORTHERNSOTHO LANGUAGE_SEPEDI /* just an alias for the already existing localization */
-#define LANGUAGE_SERBIAN_CYRILLIC_LSO 0x6C1A
-#define LANGUAGE_SERBIAN_CYRILLIC_SAM 0x0C1A /* Serbia and Montenegro (former) */
-#define LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA 0x1C1A
-#define LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO 0x301A
-#define LANGUAGE_SERBIAN_CYRILLIC_SERBIA 0x281A
-#define LANGUAGE_SERBIAN_LATIN_LSO 0x701A
-#define LANGUAGE_SERBIAN_LATIN_SAM 0x081A
-#define LANGUAGE_SERBIAN_LATIN_BOSNIA_HERZEGOVINA 0x181A
-#define LANGUAGE_SERBIAN_LATIN_MONTENEGRO 0x2C1A
-#define LANGUAGE_SERBIAN_LATIN_NEUTRAL 0x7C1A
-#define LANGUAGE_SERBIAN_LATIN_SERBIA 0x241A
-#define LANGUAGE_SESOTHO 0x0430 /* also called Sutu now by MS */
-#define LANGUAGE_SINDHI 0x0459
-#define LANGUAGE_SINDHI_ARABIC_LSO 0x7C59
-#define LANGUAGE_SINDHI_PAKISTAN 0x0859
-#define LANGUAGE_SINHALESE_SRI_LANKA 0x045B
-#define LANGUAGE_SLOVAK 0x041B
-#define LANGUAGE_SLOVENIAN 0x0424
-#define LANGUAGE_SOMALI 0x0477
-#define LANGUAGE_UPPER_SORBIAN_GERMANY 0x042E /* obsoletes LANGUAGE_USER_UPPER_SORBIAN 0x0623 */
-#define LANGUAGE_LOWER_SORBIAN_GERMANY 0x082E /* obsoletes LANGUAGE_USER_LOWER_SORBIAN 0x0624. NOTE: the primary ID is identical to Upper Sorbian, which is not quite correct because they're distinct languages */
-#define LANGUAGE_LOWER_SORBIAN_LSO 0x7C2E
-#define LANGUAGE_SORBIAN LANGUAGE_USER_UPPER_SORBIAN /* a strange MS definition */
-#define LANGUAGE_SPANISH_DATED 0x040A /* old collation, not supported, see #i94435# */
-#define LANGUAGE_SPANISH_ARGENTINA 0x2C0A
-#define LANGUAGE_SPANISH_BOLIVIA 0x400A
-#define LANGUAGE_SPANISH_CHILE 0x340A
-#define LANGUAGE_SPANISH_COLOMBIA 0x240A
-#define LANGUAGE_SPANISH_COSTARICA 0x140A
-#define LANGUAGE_SPANISH_CUBA 0x5C0A
-#define LANGUAGE_SPANISH_DOMINICAN_REPUBLIC 0x1C0A
-#define LANGUAGE_SPANISH_ECUADOR 0x300A
-#define LANGUAGE_SPANISH_EL_SALVADOR 0x440A
-#define LANGUAGE_SPANISH_GUATEMALA 0x100A
-#define LANGUAGE_SPANISH_HONDURAS 0x480A
-#define LANGUAGE_SPANISH_LATIN_AMERICA 0xE40A /* no locale possible */
-#define LANGUAGE_SPANISH_MEXICAN 0x080A
-#define LANGUAGE_SPANISH_MODERN 0x0C0A
-#define LANGUAGE_SPANISH_NICARAGUA 0x4C0A
-#define LANGUAGE_SPANISH_PANAMA 0x180A
-#define LANGUAGE_SPANISH_PARAGUAY 0x3C0A
-#define LANGUAGE_SPANISH_PERU 0x280A
-#define LANGUAGE_SPANISH_PUERTO_RICO 0x500A
-#define LANGUAGE_SPANISH_UNITED_STATES 0x540A
-#define LANGUAGE_SPANISH_URUGUAY 0x380A
-#define LANGUAGE_SPANISH_VENEZUELA 0x200A
-#define LANGUAGE_SPANISH LANGUAGE_SPANISH_MODERN /* modern collation, see #i94435# */
-#define LANGUAGE_SWAHILI 0x0441 /* Kenya */
-#define LANGUAGE_SWEDISH 0x041D
-#define LANGUAGE_SWEDISH_FINLAND 0x081D
-#define LANGUAGE_SYRIAC 0x045A
-#define LANGUAGE_TAI_NUA_CHINA 0x048F
-#define LANGUAGE_TAJIK 0x0428
-#define LANGUAGE_TAJIK_LSO 0x7C28
-#define LANGUAGE_TAMAZIGHT_ARABIC_MOROCCO 0x045F
-#define LANGUAGE_TAMAZIGHT_LATIN_ALGERIA 0x085F
-#define LANGUAGE_TAMAZIGHT_LATIN_LSO 0x7C5F
-#define LANGUAGE_TAMAZIGHT_MOROCCO 0x0C5F
-#define LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO 0x105F
-#define LANGUAGE_TAMAZIGHT_TIFINAGH_LSO 0x785F
-#define LANGUAGE_TAMIL 0x0449
-#define LANGUAGE_TAMIL_SRI_LANKA 0x0849
-#define LANGUAGE_TATAR 0x0444
-#define LANGUAGE_TELUGU 0x044A
-#define LANGUAGE_THAI 0x041E
-#define LANGUAGE_TIBETAN 0x0451
-#define LANGUAGE_TIBETAN_BHUTAN 0x0851 /* was used as Dzongkha, a MS error, see #i53497# */
-#define LANGUAGE_DZONGKHA_BHUTAN 0x0C51 /* they finally got it ... ([MS-LCID] rev. 7.0 2015-06-30) */
-#define LANGUAGE_TIGRIGNA_ERITREA 0x0873
-#define LANGUAGE_TIGRIGNA_ETHIOPIA 0x0473
-#define LANGUAGE_TSONGA 0x0431
-#define LANGUAGE_TSWANA 0x0432 /* AKA Setsuana, for South Africa */
-#define LANGUAGE_TSWANA_BOTSWANA 0x0832 /* obsoletes LANGUAGE_USER_TSWANA_BOTSWANA 0x8032 */
-#define LANGUAGE_TURKISH 0x041F
-#define LANGUAGE_TURKMEN 0x0442
-#define LANGUAGE_UIGHUR_CHINA 0x0480
-#define LANGUAGE_UKRAINIAN 0x0422
-#define LANGUAGE_URDU_INDIA 0x0820
-#define LANGUAGE_URDU_PAKISTAN 0x0420
-#define LANGUAGE_UZBEK_CYRILLIC 0x0843
-#define LANGUAGE_UZBEK_CYRILLIC_LSO 0x7843
-#define LANGUAGE_UZBEK_LATIN 0x0443
-#define LANGUAGE_UZBEK_LATIN_LSO 0x7C43
-#define LANGUAGE_VENDA 0x0433
-#define LANGUAGE_VIETNAMESE 0x042A
-#define LANGUAGE_WELSH 0x0452
-#define LANGUAGE_WOLOF_SENEGAL 0x0488
-#define LANGUAGE_XHOSA 0x0434 /* AKA isiZhosa */
-#define LANGUAGE_YAKUT_RUSSIA 0x0485
-#define LANGUAGE_YI 0x0478 /* Sichuan Yi */
-#define LANGUAGE_YIDDISH 0x043D
-#define LANGUAGE_YORUBA 0x046A
-#define LANGUAGE_YUE_CHINESE_HONGKONG 0x048E
-#define LANGUAGE_ZULU 0x0435
-
-#define LANGUAGE_qps_ploc 0x0501 /* 'qps-ploc', qps is a reserved for local use code */
-#define LANGUAGE_qps_ploca 0x05FE /* 'qps-ploca', qps is a reserved for local use code */
-#define LANGUAGE_qps_plocm 0x09FF /* 'qps-plocm', qps is a reserved for local use code */
-
-#define LANGUAGE_ar_Ploc_SA_reserved 0x4401 /* 'ar-Ploc-SA', 'Ploc'?? */
-#define LANGUAGE_ja_Ploc_JP_reserved 0x0811 /* 'ja-Ploc-JP', 'Ploc'?? */
-#define LANGUAGE_pap_029_reserved 0x0479 /* 'pap-029' */
-#define LANGUAGE_ar_145_reserved 0x4801 /* 'ar-145' */
-#define LANGUAGE_es_419 0x580A /* 'es-419', not reserved, used? */
+#define LANGUAGE_AFRIKAANS LanguageType(0x0436)
+#define LANGUAGE_ALBANIAN LanguageType(0x041C)
+#define LANGUAGE_ALSATIAN_FRANCE LanguageType(0x0484)
+#define LANGUAGE_AMHARIC_ETHIOPIA LanguageType(0x045E)
+#define LANGUAGE_ARABIC_ALGERIA LanguageType(0x1401)
+#define LANGUAGE_ARABIC_BAHRAIN LanguageType(0x3C01)
+#define LANGUAGE_ARABIC_EGYPT LanguageType(0x0C01)
+#define LANGUAGE_ARABIC_IRAQ LanguageType(0x0801)
+#define LANGUAGE_ARABIC_JORDAN LanguageType(0x2C01)
+#define LANGUAGE_ARABIC_KUWAIT LanguageType(0x3401)
+#define LANGUAGE_ARABIC_LEBANON LanguageType(0x3001)
+#define LANGUAGE_ARABIC_LIBYA LanguageType(0x1001)
+#define LANGUAGE_ARABIC_MOROCCO LanguageType(0x1801)
+#define LANGUAGE_ARABIC_OMAN LanguageType(0x2001)
+#define LANGUAGE_ARABIC_PRIMARY_ONLY LanguageType(0x0001) /* primary only, not a locale! */
+#define LANGUAGE_ARABIC_QATAR LanguageType(0x4001)
+#define LANGUAGE_ARABIC_SAUDI_ARABIA LanguageType(0x0401)
+#define LANGUAGE_ARABIC_SYRIA LanguageType(0x2801)
+#define LANGUAGE_ARABIC_TUNISIA LanguageType(0x1C01)
+#define LANGUAGE_ARABIC_UAE LanguageType(0x3801)
+#define LANGUAGE_ARABIC_YEMEN LanguageType(0x2401)
+#define LANGUAGE_ARMENIAN LanguageType(0x042B)
+#define LANGUAGE_ASSAMESE LanguageType(0x044D)
+#define LANGUAGE_AZERI_CYRILLIC LanguageType(0x082C)
+#define LANGUAGE_AZERI_CYRILLIC_LSO LanguageType(0x742C)
+#define LANGUAGE_AZERI_LATIN LanguageType(0x042C)
+#define LANGUAGE_AZERI_LATIN_LSO LanguageType(0x782C)
+#define LANGUAGE_BASHKIR_RUSSIA LanguageType(0x046D)
+#define LANGUAGE_BASQUE LanguageType(0x042D)
+#define LANGUAGE_BELARUSIAN LanguageType(0x0423)
+#define LANGUAGE_BENGALI LanguageType(0x0445) /* in India */
+#define LANGUAGE_BENGALI_BANGLADESH LanguageType(0x0845)
+#define LANGUAGE_BOSNIAN_CYRILLIC_LSO LanguageType(0x641A)
+#define LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA LanguageType(0x201A)
+#define LANGUAGE_BOSNIAN_LATIN_LSO LanguageType(0x681A)
+#define LANGUAGE_BOSNIAN_LSO LanguageType(0x781A)
+#define LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA LanguageType(0x141A)
+#define LANGUAGE_BOSNIAN_BOSNIA_HERZEGOVINA LanguageType(LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA) /* TODO: remove, only for langtab.src & localize.sdf compatibility */
+#define LANGUAGE_BRETON_FRANCE LanguageType(0x047E) /* obsoletes LANGUAGE_USER_BRETON 0x0629 */
+#define LANGUAGE_BULGARIAN LanguageType(0x0402)
+#define LANGUAGE_BURMESE LanguageType(0x0455)
+#define LANGUAGE_CATALAN LanguageType(0x0403)
+#define LANGUAGE_CATALAN_VALENCIAN LanguageType(0x0803) /* obsoletes LANGUAGE_USER_CATALAN_VALENCIAN 0x8003 */
+#define LANGUAGE_CHEROKEE_UNITED_STATES LanguageType(0x045C)
+#define LANGUAGE_CHEROKEE_CHEROKEE_LSO LanguageType(0x7C5C)
+#define LANGUAGE_CHINESE_HONGKONG LanguageType(0x0C04)
+#define LANGUAGE_CHINESE_LSO LanguageType(0x7804)
+#define LANGUAGE_CHINESE_MACAU LanguageType(0x1404)
+#define LANGUAGE_CHINESE_SIMPLIFIED LanguageType(0x0804)
+#define LANGUAGE_CHINESE_SINGAPORE LanguageType(0x1004)
+#define LANGUAGE_CHINESE_TRADITIONAL LanguageType(0x0404)
+#define LANGUAGE_CHINESE_SIMPLIFIED_LEGACY LanguageType(0x0004) /* MS-.NET 'zh-CHS', primary only! but maps to 'zh-CN' */
+#define LANGUAGE_CHINESE_TRADITIONAL_LSO LanguageType(0x7C04) /* MS-.NET 'zh-CHT' but maps to 'zh-Hant' */
+#define LANGUAGE_CHINESE LanguageType(LANGUAGE_CHINESE_SIMPLIFIED) /* most code uses LANGUAGE_CHINESE */
+#define LANGUAGE_CORSICAN_FRANCE LanguageType(0x0483)
+#define LANGUAGE_CROATIAN LanguageType(0x041A)
+#define LANGUAGE_CROATIAN_BOSNIA_HERZEGOVINA LanguageType(0x101A)
+#define LANGUAGE_CZECH LanguageType(0x0405)
+#define LANGUAGE_DANISH LanguageType(0x0406)
+#define LANGUAGE_DARI_AFGHANISTAN LanguageType(0x048C) /* AKA Zoroastrian Dari */
+#define LANGUAGE_DHIVEHI LanguageType(0x0465) /* AKA Divehi */
+#define LANGUAGE_DUTCH LanguageType(0x0413)
+#define LANGUAGE_DUTCH_BELGIAN LanguageType(0x0813)
+#define LANGUAGE_EDO LanguageType(0x0466)
+#define LANGUAGE_ENGLISH LanguageType(0x0009) /* primary only, not a locale! */
+#define LANGUAGE_ENGLISH_ARAB_EMIRATES LanguageType(0x4C09)
+#define LANGUAGE_ENGLISH_AUS LanguageType(0x0C09)
+#define LANGUAGE_ENGLISH_BAHRAIN LanguageType(0x5009)
+#define LANGUAGE_ENGLISH_BELIZE LanguageType(0x2809)
+#define LANGUAGE_ENGLISH_CAN LanguageType(0x1009)
+#define LANGUAGE_ENGLISH_CARRIBEAN LanguageType(0x2409)
+#define LANGUAGE_ENGLISH_EGYPT LanguageType(0x5409)
+#define LANGUAGE_ENGLISH_EIRE LanguageType(0x1809)
+#define LANGUAGE_ENGLISH_HONG_KONG_SAR LanguageType(0x3C09)
+#define LANGUAGE_ENGLISH_INDIA LanguageType(0x4009)
+#define LANGUAGE_ENGLISH_INDONESIA LanguageType(0x3809)
+#define LANGUAGE_ENGLISH_JAMAICA LanguageType(0x2009)
+#define LANGUAGE_ENGLISH_JORDAN LanguageType(0x5809)
+#define LANGUAGE_ENGLISH_KUWAIT LanguageType(0x5C09)
+#define LANGUAGE_ENGLISH_MALAYSIA LanguageType(0x4409)
+#define LANGUAGE_ENGLISH_NZ LanguageType(0x1409)
+#define LANGUAGE_ENGLISH_PHILIPPINES LanguageType(0x3409)
+#define LANGUAGE_ENGLISH_SAFRICA LanguageType(0x1C09)
+#define LANGUAGE_ENGLISH_SINGAPORE LanguageType(0x4809)
+#define LANGUAGE_ENGLISH_TRINIDAD LanguageType(0x2C09)
+#define LANGUAGE_ENGLISH_TURKEY LanguageType(0x6009)
+#define LANGUAGE_ENGLISH_UK LanguageType(0x0809)
+#define LANGUAGE_ENGLISH_US LanguageType(0x0409)
+#define LANGUAGE_ENGLISH_YEMEN LanguageType(0x6409)
+#define LANGUAGE_ENGLISH_ZIMBABWE LanguageType(0x3009)
+#define LANGUAGE_ESTONIAN LanguageType(0x0425)
+#define LANGUAGE_FAEROESE LanguageType(0x0438)
+#define LANGUAGE_FARSI LanguageType(0x0429)
+#define LANGUAGE_FILIPINO LanguageType(0x0464)
+#define LANGUAGE_FINNISH LanguageType(0x040B)
+#define LANGUAGE_FRENCH LanguageType(0x040C)
+#define LANGUAGE_FRENCH_BELGIAN LanguageType(0x080C)
+#define LANGUAGE_FRENCH_CAMEROON LanguageType(0x2C0C)
+#define LANGUAGE_FRENCH_CANADIAN LanguageType(0x0C0C)
+#define LANGUAGE_FRENCH_COTE_D_IVOIRE LanguageType(0x300C)
+
+#define LANGUAGE_FRENCH_HAITI LanguageType(0x3C0C)
+#define LANGUAGE_FRENCH_LUXEMBOURG LanguageType(0x140C)
+#define LANGUAGE_FRENCH_MALI LanguageType(0x340C)
+#define LANGUAGE_FRENCH_MONACO LanguageType(0x180C)
+#define LANGUAGE_FRENCH_MOROCCO LanguageType(0x380C)
+#define LANGUAGE_FRENCH_NORTH_AFRICA LanguageType(0xE40C)
+#define LANGUAGE_FRENCH_REUNION LanguageType(0x200C)
+#define LANGUAGE_FRENCH_SENEGAL LanguageType(0x280C)
+#define LANGUAGE_FRENCH_SWISS LanguageType(0x100C)
+#define LANGUAGE_FRENCH_WEST_INDIES LanguageType(0x1C0C) /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */
+#define LANGUAGE_FRENCH_ZAIRE LanguageType(0x240C)
+#define LANGUAGE_FRISIAN_NETHERLANDS LanguageType(0x0462)
+#define LANGUAGE_FULFULDE_LATIN_LSO LanguageType(0x7C67)
+#define LANGUAGE_FULFULDE_NIGERIA LanguageType(0x0467)
+#define LANGUAGE_FULFULDE_SENEGAL LanguageType(0x0867)
+#define LANGUAGE_GAELIC_IRELAND LanguageType(0x083C)
+#define LANGUAGE_GAELIC_SCOTLAND LanguageType(0x0491) /* apparently it occurred to MS that those are different languages */
+#define LANGUAGE_GAELIC_SCOTLAND_LEGACY LanguageType(0x043C)
+#define LANGUAGE_GALICIAN LanguageType(0x0456)
+#define LANGUAGE_GEORGIAN LanguageType(0x0437)
+#define LANGUAGE_GERMAN LanguageType(0x0407)
+#define LANGUAGE_GERMAN_AUSTRIAN LanguageType(0x0C07)
+#define LANGUAGE_GERMAN_LIECHTENSTEIN LanguageType(0x1407)
+#define LANGUAGE_GERMAN_LUXEMBOURG LanguageType(0x1007)
+#define LANGUAGE_GERMAN_SWISS LanguageType(0x0807)
+#define LANGUAGE_GREEK LanguageType(0x0408)
+#define LANGUAGE_GUARANI_PARAGUAY LanguageType(0x0474)
+#define LANGUAGE_GUJARATI LanguageType(0x0447)
+#define LANGUAGE_HAUSA_LATIN_LSO LanguageType(0x7C68)
+#define LANGUAGE_HAUSA_NIGERIA LanguageType(0x0468)
+#define LANGUAGE_HAWAIIAN_UNITED_STATES LanguageType(0x0475)
+#define LANGUAGE_HEBREW LanguageType(0x040D)
+#define LANGUAGE_HINDI LanguageType(0x0439)
+#define LANGUAGE_HUNGARIAN LanguageType(0x040E)
+#define LANGUAGE_IBIBIO_NIGERIA LanguageType(0x0469)
+#define LANGUAGE_ICELANDIC LanguageType(0x040F)
+#define LANGUAGE_IGBO_NIGERIA LanguageType(0x0470)
+#define LANGUAGE_INDONESIAN LanguageType(0x0421)
+#define LANGUAGE_INUKTITUT_SYLLABICS_CANADA LanguageType(0x045D)
+#define LANGUAGE_INUKTITUT_SYLLABICS_LSO LanguageType(0x785D)
+#define LANGUAGE_INUKTITUT_LATIN_CANADA LanguageType(0x085D)
+#define LANGUAGE_INUKTITUT_LATIN_LSO LanguageType(0x7C5D)
+#define LANGUAGE_ITALIAN LanguageType(0x0410)
+#define LANGUAGE_ITALIAN_SWISS LanguageType(0x0810)
+#define LANGUAGE_JAPANESE LanguageType(0x0411)
+#define LANGUAGE_KALAALLISUT_GREENLAND LanguageType(0x046F) /* obsoletes LANGUAGE_USER_KALAALLISUT 0x062A */
+#define LANGUAGE_KANNADA LanguageType(0x044B)
+#define LANGUAGE_KANURI_NIGERIA LanguageType(0x0471)
+#define LANGUAGE_KASHMIRI LanguageType(0x0460)
+#define LANGUAGE_KASHMIRI_INDIA LanguageType(0x0860)
+#define LANGUAGE_KAZAKH LanguageType(0x043F)
+#define LANGUAGE_KHMER LanguageType(0x0453)
+#define LANGUAGE_KICHE_GUATEMALA LanguageType(0x0486) /* AKA K'iche', West Central Quiche, */
+#define LANGUAGE_KINYARWANDA_RWANDA LanguageType(0x0487) /* obsoletes LANGUAGE_USER_KINYARWANDA 0x0621 */
+#define LANGUAGE_KIRGHIZ LanguageType(0x0440) /* AKA Kyrgyz */
+#define LANGUAGE_KONKANI LanguageType(0x0457)
+#define LANGUAGE_KOREAN LanguageType(0x0412)
+#define LANGUAGE_KOREAN_JOHAB LanguageType(0x0812) /* not mentioned in MS-LCID.pdf, oh joy */
+#define LANGUAGE_KURDISH_ARABIC_IRAQ LanguageType(0x0492) /* obsoletes LANGUAGE_USER_KURDISH_IRAQ 0x0E26 */
+#define LANGUAGE_KURDISH_ARABIC_LSO LanguageType(0x7C92)
+#define LANGUAGE_LAO LanguageType(0x0454)
+#define LANGUAGE_LATIN_LSO LanguageType(0x0476) /* obsoletes LANGUAGE_USER_LATIN 0x0610 */
+#define LANGUAGE_LATVIAN LanguageType(0x0426)
+#define LANGUAGE_LITHUANIAN LanguageType(0x0427)
+#define LANGUAGE_LITHUANIAN_CLASSIC LanguageType(0x0827) /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */
+#define LANGUAGE_LU_CHINA LanguageType(0x0490)
+#define LANGUAGE_LUXEMBOURGISH_LUXEMBOURG LanguageType(0x046E) /* obsoletes LANGUAGE_USER_LUXEMBOURGISH 0x0630 */
+#define LANGUAGE_MACEDONIAN LanguageType(0x042F)
+#define LANGUAGE_MALAGASY_PLATEAU LanguageType(0x048D) /* obsoletes LANGUAGE_USER_MALAGASY_PLATEAU 0x064F */
+#define LANGUAGE_MALAYALAM LanguageType(0x044C) /* in India */
+#define LANGUAGE_MALAY_BRUNEI_DARUSSALAM LanguageType(0x083E)
+#define LANGUAGE_MALAY_MALAYSIA LanguageType(0x043E)
+#define LANGUAGE_MALTESE LanguageType(0x043A)
+#define LANGUAGE_MANIPURI LanguageType(0x0458)
+#define LANGUAGE_MAORI_NEW_ZEALAND LanguageType(0x0481) /* obsoletes LANGUAGE_USER_MAORI 0x0620 */
+#define LANGUAGE_MAPUDUNGUN_CHILE LanguageType(0x047A) /* AKA Araucanian */
+#define LANGUAGE_MARATHI LanguageType(0x044E)
+#define LANGUAGE_MOHAWK_CANADA LanguageType(0x047C)
+#define LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA LanguageType(0x0450)
+#define LANGUAGE_MONGOLIAN_CYRILLIC_LSO LanguageType(0x7850)
+#define LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA LanguageType(0x0C50)
+#define LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA LanguageType(0x0850)
+#define LANGUAGE_MONGOLIAN_MONGOLIAN_LSO LanguageType(0x7C50)
+#define LANGUAGE_NEPALI LanguageType(0x0461)
+#define LANGUAGE_NEPALI_INDIA LanguageType(0x0861)
+#define LANGUAGE_NORWEGIAN LanguageType(0x0014) /* primary only, not a locale! */
+#define LANGUAGE_NORWEGIAN_BOKMAL LanguageType(0x0414)
+#define LANGUAGE_NORWEGIAN_BOKMAL_LSO LanguageType(0x7C14)
+#define LANGUAGE_NORWEGIAN_NYNORSK LanguageType(0x0814)
+#define LANGUAGE_NORWEGIAN_NYNORSK_LSO LanguageType(0x7814)
+#define LANGUAGE_OCCITAN_FRANCE LanguageType(0x0482) /* obsoletes LANGUAGE_USER_OCCITAN 0x0625 */
+#define LANGUAGE_ODIA LanguageType(0x0448)
+#define LANGUAGE_OROMO LanguageType(0x0472)
+#define LANGUAGE_PAPIAMENTU LanguageType(0x0479)
+#define LANGUAGE_PASHTO LanguageType(0x0463)
+#define LANGUAGE_POLISH LanguageType(0x0415)
+#define LANGUAGE_PORTUGUESE LanguageType(0x0816)
+#define LANGUAGE_PORTUGUESE_BRAZILIAN LanguageType(0x0416)
+#define LANGUAGE_PUNJABI LanguageType(0x0446)
+#define LANGUAGE_PUNJABI_ARABIC_LSO LanguageType(0x7C46)
+#define LANGUAGE_PUNJABI_PAKISTAN LanguageType(0x0846)
+#define LANGUAGE_QUECHUA_BOLIVIA LanguageType(0x046B)
+#define LANGUAGE_QUECHUA_COLOMBIA LanguageType(0x0493) /* different primary ID */
+#define LANGUAGE_QUECHUA_ECUADOR LanguageType(0x086B)
+#define LANGUAGE_QUECHUA_PERU LanguageType(0x0C6B)
+#define LANGUAGE_RHAETO_ROMAN LanguageType(0x0417)
+#define LANGUAGE_ROMANIAN LanguageType(0x0418)
+#define LANGUAGE_ROMANIAN_MOLDOVA LanguageType(0x0818)
+#define LANGUAGE_RUSSIAN LanguageType(0x0419)
+#define LANGUAGE_RUSSIAN_MOLDOVA LanguageType(0x0819)
+#define LANGUAGE_SAMI_NORTHERN_NORWAY LanguageType(0x043B)
+#define LANGUAGE_SAMI_LAPPISH LanguageType(LANGUAGE_SAMI_NORTHERN_NORWAY) /* the old MS definition */
+#define LANGUAGE_SAMI_INARI LanguageType(0x243B)
+#define LANGUAGE_SAMI_INARI_LSO LanguageType(0x703B)
+#define LANGUAGE_SAMI_LULE_LSO LanguageType(0x7C3B)
+#define LANGUAGE_SAMI_LULE_NORWAY LanguageType(0x103B)
+#define LANGUAGE_SAMI_LULE_SWEDEN LanguageType(0x143B)
+#define LANGUAGE_SAMI_NORTHERN_FINLAND LanguageType(0x0C3B)
+#define LANGUAGE_SAMI_NORTHERN_SWEDEN LanguageType(0x083B)
+#define LANGUAGE_SAMI_SKOLT LanguageType(0x203B)
+#define LANGUAGE_SAMI_SKOLT_LSO LanguageType(0x743B)
+#define LANGUAGE_SAMI_SOUTHERN_LSO LanguageType(0x783B)
+#define LANGUAGE_SAMI_SOUTHERN_NORWAY LanguageType(0x183B)
+#define LANGUAGE_SAMI_SOUTHERN_SWEDEN LanguageType(0x1C3B)
+#define LANGUAGE_SANSKRIT LanguageType(0x044F)
+#define LANGUAGE_SEPEDI LanguageType(0x046C)
+#define LANGUAGE_NORTHERNSOTHO LanguageType(LANGUAGE_SEPEDI) /* just an alias for the already existing localization */
+#define LANGUAGE_SERBIAN_CYRILLIC_LSO LanguageType(0x6C1A)
+#define LANGUAGE_SERBIAN_CYRILLIC_SAM LanguageType(0x0C1A) /* Serbia and Montenegro (former) */
+#define LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA LanguageType(0x1C1A)
+#define LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO LanguageType(0x301A)
+#define LANGUAGE_SERBIAN_CYRILLIC_SERBIA LanguageType(0x281A)
+#define LANGUAGE_SERBIAN_LATIN_LSO LanguageType(0x701A)
+#define LANGUAGE_SERBIAN_LATIN_SAM LanguageType(0x081A)
+#define LANGUAGE_SERBIAN_LATIN_BOSNIA_HERZEGOVINA LanguageType(0x181A)
+#define LANGUAGE_SERBIAN_LATIN_MONTENEGRO LanguageType(0x2C1A)
+#define LANGUAGE_SERBIAN_LATIN_NEUTRAL LanguageType(0x7C1A)
+#define LANGUAGE_SERBIAN_LATIN_SERBIA LanguageType(0x241A)
+#define LANGUAGE_SESOTHO LanguageType(0x0430) /* also called Sutu now by MS */
+#define LANGUAGE_SINDHI LanguageType(0x0459)
+#define LANGUAGE_SINDHI_ARABIC_LSO LanguageType(0x7C59)
+#define LANGUAGE_SINDHI_PAKISTAN LanguageType(0x0859)
+#define LANGUAGE_SINHALESE_SRI_LANKA LanguageType(0x045B)
+#define LANGUAGE_SLOVAK LanguageType(0x041B)
+#define LANGUAGE_SLOVENIAN LanguageType(0x0424)
+#define LANGUAGE_SOMALI LanguageType(0x0477)
+#define LANGUAGE_UPPER_SORBIAN_GERMANY LanguageType(0x042E) /* obsoletes LANGUAGE_USER_UPPER_SORBIAN 0x0623 */
+#define LANGUAGE_LOWER_SORBIAN_GERMANY LanguageType(0x082E) /* obsoletes LANGUAGE_USER_LOWER_SORBIAN 0x0624. NOTE: the primary ID is identical to Upper Sorbian, which is not quite correct because they're distinct languages */
+#define LANGUAGE_LOWER_SORBIAN_LSO LanguageType(0x7C2E)
+#define LANGUAGE_SORBIAN LanguageType(LANGUAGE_USER_UPPER_SORBIAN) /* a strange MS definition */
+#define LANGUAGE_SPANISH_DATED LanguageType(0x040A) /* old collation, not supported, see #i94435# */
+#define LANGUAGE_SPANISH_ARGENTINA LanguageType(0x2C0A)
+#define LANGUAGE_SPANISH_BOLIVIA LanguageType(0x400A)
+#define LANGUAGE_SPANISH_CHILE LanguageType(0x340A)
+#define LANGUAGE_SPANISH_COLOMBIA LanguageType(0x240A)
+#define LANGUAGE_SPANISH_COSTARICA LanguageType(0x140A)
+#define LANGUAGE_SPANISH_CUBA LanguageType(0x5C0A)
+#define LANGUAGE_SPANISH_DOMINICAN_REPUBLIC LanguageType(0x1C0A)
+#define LANGUAGE_SPANISH_ECUADOR LanguageType(0x300A)
+#define LANGUAGE_SPANISH_EL_SALVADOR LanguageType(0x440A)
+#define LANGUAGE_SPANISH_GUATEMALA LanguageType(0x100A)
+#define LANGUAGE_SPANISH_HONDURAS LanguageType(0x480A)
+#define LANGUAGE_SPANISH_LATIN_AMERICA LanguageType(0xE40A) /* no locale possible */
+#define LANGUAGE_SPANISH_MEXICAN LanguageType(0x080A)
+#define LANGUAGE_SPANISH_MODERN LanguageType(0x0C0A)
+#define LANGUAGE_SPANISH_NICARAGUA LanguageType(0x4C0A)
+#define LANGUAGE_SPANISH_PANAMA LanguageType(0x180A)
+#define LANGUAGE_SPANISH_PARAGUAY LanguageType(0x3C0A)
+#define LANGUAGE_SPANISH_PERU LanguageType(0x280A)
+#define LANGUAGE_SPANISH_PUERTO_RICO LanguageType(0x500A)
+#define LANGUAGE_SPANISH_UNITED_STATES LanguageType(0x540A)
+#define LANGUAGE_SPANISH_URUGUAY LanguageType(0x380A)
+#define LANGUAGE_SPANISH_VENEZUELA LanguageType(0x200A)
+#define LANGUAGE_SPANISH LanguageType(LANGUAGE_SPANISH_MODERN) /* modern collation, see #i94435# */
+#define LANGUAGE_SWAHILI LanguageType(0x0441) /* Kenya */
+#define LANGUAGE_SWEDISH LanguageType(0x041D)
+#define LANGUAGE_SWEDISH_FINLAND LanguageType(0x081D)
+#define LANGUAGE_SYRIAC LanguageType(0x045A)
+#define LANGUAGE_TAI_NUA_CHINA LanguageType(0x048F)
+#define LANGUAGE_TAJIK LanguageType(0x0428)
+#define LANGUAGE_TAJIK_LSO LanguageType(0x7C28)
+#define LANGUAGE_TAMAZIGHT_ARABIC_MOROCCO LanguageType(0x045F)
+#define LANGUAGE_TAMAZIGHT_LATIN_ALGERIA LanguageType(0x085F)
+#define LANGUAGE_TAMAZIGHT_LATIN_LSO LanguageType(0x7C5F)
+#define LANGUAGE_TAMAZIGHT_MOROCCO LanguageType(0x0C5F)
+#define LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO LanguageType(0x105F)
+#define LANGUAGE_TAMAZIGHT_TIFINAGH_LSO LanguageType(0x785F)
+#define LANGUAGE_TAMIL LanguageType(0x0449)
+#define LANGUAGE_TAMIL_SRI_LANKA LanguageType(0x0849)
+#define LANGUAGE_TATAR LanguageType(0x0444)
+#define LANGUAGE_TELUGU LanguageType(0x044A)
+#define LANGUAGE_THAI LanguageType(0x041E)
+#define LANGUAGE_TIBETAN LanguageType(0x0451)
+#define LANGUAGE_TIBETAN_BHUTAN LanguageType(0x0851) /* was used as Dzongkha, a MS error, see #i53497# */
+#define LANGUAGE_DZONGKHA_BHUTAN LanguageType(0x0C51) /* they finally got it ... ([MS-LCID] rev. 7.0 2015-06-30) */
+#define LANGUAGE_TIGRIGNA_ERITREA LanguageType(0x0873)
+#define LANGUAGE_TIGRIGNA_ETHIOPIA LanguageType(0x0473)
+#define LANGUAGE_TSONGA LanguageType(0x0431)
+#define LANGUAGE_TSWANA LanguageType(0x0432) /* AKA Setsuana, for South Africa */
+#define LANGUAGE_TSWANA_BOTSWANA LanguageType(0x0832) /* obsoletes LANGUAGE_USER_TSWANA_BOTSWANA 0x8032 */
+#define LANGUAGE_TURKISH LanguageType(0x041F)
+#define LANGUAGE_TURKMEN LanguageType(0x0442)
+#define LANGUAGE_UIGHUR_CHINA LanguageType(0x0480)
+#define LANGUAGE_UKRAINIAN LanguageType(0x0422)
+#define LANGUAGE_URDU_INDIA LanguageType(0x0820)
+#define LANGUAGE_URDU_PAKISTAN LanguageType(0x0420)
+#define LANGUAGE_UZBEK_CYRILLIC LanguageType(0x0843)
+#define LANGUAGE_UZBEK_CYRILLIC_LSO LanguageType(0x7843)
+#define LANGUAGE_UZBEK_LATIN LanguageType(0x0443)
+#define LANGUAGE_UZBEK_LATIN_LSO LanguageType(0x7C43)
+#define LANGUAGE_VENDA LanguageType(0x0433)
+#define LANGUAGE_VIETNAMESE LanguageType(0x042A)
+#define LANGUAGE_WELSH LanguageType(0x0452)
+#define LANGUAGE_WOLOF_SENEGAL LanguageType(0x0488)
+#define LANGUAGE_XHOSA LanguageType(0x0434) /* AKA isiZhosa */
+#define LANGUAGE_YAKUT_RUSSIA LanguageType(0x0485)
+#define LANGUAGE_YI LanguageType(0x0478) /* Sichuan Yi */
+#define LANGUAGE_YIDDISH LanguageType(0x043D)
+#define LANGUAGE_YORUBA LanguageType(0x046A)
+#define LANGUAGE_YUE_CHINESE_HONGKONG LanguageType(0x048E)
+#define LANGUAGE_ZULU LanguageType(0x0435)
+
+#define LANGUAGE_qps_ploc LanguageType(0x0501) /* 'qps-ploc', qps is a reserved for local use code */
+#define LANGUAGE_qps_ploca LanguageType(0x05FE) /* 'qps-ploca', qps is a reserved for local use code */
+#define LANGUAGE_qps_plocm LanguageType(0x09FF) /* 'qps-plocm', qps is a reserved for local use code */
+
+#define LANGUAGE_ar_Ploc_SA_reserved LanguageType(0x4401) /* 'ar-Ploc-SA', 'Ploc'?? */
+#define LANGUAGE_ja_Ploc_JP_reserved LanguageType(0x0811) /* 'ja-Ploc-JP', 'Ploc'?? */
+#define LANGUAGE_pap_029_reserved LanguageType(0x0479) /* 'pap-029' */
+#define LANGUAGE_ar_145_reserved LanguageType(0x4801) /* 'ar-145' */
+#define LANGUAGE_es_419 LanguageType(0x580A) /* 'es-419', not reserved, used? */
/* Seems these values were used or reserved at one point of time ... */
-#define LANGUAGE_Neither_defined_nor_reserved_0x007B 0x007B
-#define LANGUAGE_Neither_defined_nor_reserved_0x007D 0x007D
-#define LANGUAGE_Neither_defined_nor_reserved_0x0089 0x0089
-#define LANGUAGE_Neither_defined_nor_reserved_0x008A 0x008A
-#define LANGUAGE_Neither_defined_nor_reserved_0x008B 0x008B
-#define LANGUAGE_Neither_defined_nor_reserved_0x008D 0x008D
-#define LANGUAGE_Neither_defined_nor_reserved_0x008E 0x008E
-#define LANGUAGE_Neither_defined_nor_reserved_0x008F 0x008F
-#define LANGUAGE_Neither_defined_nor_reserved_0x0090 0x0090
-#define LANGUAGE_Neither_defined_nor_reserved_0x0827 0x0827
-#define LANGUAGE_Neither_defined_nor_reserved_0x1C0C 0x1C0C
-#define LANGUAGE_Neither_defined_nor_reserved_0x2008 0x2008
+#define LANGUAGE_Neither_defined_nor_reserved_0x007B LanguageType(0x007B)
+#define LANGUAGE_Neither_defined_nor_reserved_0x007D LanguageType(0x007D)
+#define LANGUAGE_Neither_defined_nor_reserved_0x0089 LanguageType(0x0089)
+#define LANGUAGE_Neither_defined_nor_reserved_0x008A LanguageType(0x008A)
+#define LANGUAGE_Neither_defined_nor_reserved_0x008B LanguageType(0x008B)
+#define LANGUAGE_Neither_defined_nor_reserved_0x008D LanguageType(0x008D)
+#define LANGUAGE_Neither_defined_nor_reserved_0x008E LanguageType(0x008E)
+#define LANGUAGE_Neither_defined_nor_reserved_0x008F LanguageType(0x008F)
+#define LANGUAGE_Neither_defined_nor_reserved_0x0090 LanguageType(0x0090)
+#define LANGUAGE_Neither_defined_nor_reserved_0x0827 LanguageType(0x0827)
+#define LANGUAGE_Neither_defined_nor_reserved_0x1C0C LanguageType(0x1C0C)
+#define LANGUAGE_Neither_defined_nor_reserved_0x2008 LanguageType(0x2008)
/*! use only for import/export of MS documents, number formatter maps it to
*! LANGUAGE_SYSTEM and then to effective system language */
-#define LANGUAGE_SYSTEM_DEFAULT 0x0800
+#define LANGUAGE_SYSTEM_DEFAULT LanguageType(0x0800)
/*! use only for import/export of MS documents, number formatter maps it to
*! LANGUAGE_SYSTEM and then to effective system language */
-#define LANGUAGE_PROCESS_OR_USER_DEFAULT 0x0400
+#define LANGUAGE_PROCESS_OR_USER_DEFAULT LanguageType(0x0400)
/* And now the extensions we define,
@@ -511,215 +519,215 @@ typedef unsigned short LanguageType;
* that such a mapping exists in i18nlangtag/source/isolang/isolang.cxx, but
* mapping ISO back to LANGID will return the new value.
*/
-#define LANGUAGE_OBSOLETE_USER_LATIN 0x0610
-#define LANGUAGE_USER_LATIN LANGUAGE_LATIN_LSO
-#define LANGUAGE_USER_LATIN_VATICAN 0x8076 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_LATIN_LSO)) */
-#define LANGUAGE_USER_ESPERANTO 0x0611 /* no locale possible */
-#define LANGUAGE_USER_INTERLINGUA 0x0612 /* no locale, but conventions */
-#define LANGUAGE_OBSOLETE_USER_MAORI 0x0620
-#define LANGUAGE_USER_MAORI LANGUAGE_MAORI_NEW_ZEALAND
-#define LANGUAGE_OBSOLETE_USER_KINYARWANDA 0x0621
-#define LANGUAGE_USER_KINYARWANDA LANGUAGE_KINYARWANDA_RWANDA
+#define LANGUAGE_OBSOLETE_USER_LATIN LanguageType(0x0610)
+#define LANGUAGE_USER_LATIN LanguageType(LANGUAGE_LATIN_LSO)
+#define LANGUAGE_USER_LATIN_VATICAN LanguageType(0x8076) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_LATIN_LSO)) */
+#define LANGUAGE_USER_ESPERANTO LanguageType(0x0611) /* no locale possible */
+#define LANGUAGE_USER_INTERLINGUA LanguageType(0x0612) /* no locale, but conventions */
+#define LANGUAGE_OBSOLETE_USER_MAORI LanguageType(0x0620)
+#define LANGUAGE_USER_MAORI LanguageType(LANGUAGE_MAORI_NEW_ZEALAND)
+#define LANGUAGE_OBSOLETE_USER_KINYARWANDA LanguageType(0x0621)
+#define LANGUAGE_USER_KINYARWANDA LanguageType(LANGUAGE_KINYARWANDA_RWANDA)
/* was reserved for Northern Sotho but never used: 0x0622 */ /* obsoleted by LANGUAGE_SEPEDI */
-#define LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN 0x0623
-#define LANGUAGE_USER_UPPER_SORBIAN LANGUAGE_UPPER_SORBIAN_GERMANY
-#define LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN 0x0624
-#define LANGUAGE_USER_LOWER_SORBIAN LANGUAGE_LOWER_SORBIAN_GERMANY
-#define LANGUAGE_OBSOLETE_USER_OCCITAN 0x0625
-#define LANGUAGE_USER_OCCITAN LANGUAGE_OCCITAN_FRANCE /* reserved to languedocian */
-
-#define LANGUAGE_USER_KOREAN_NORTH 0x8012 /* North Korean as opposed to South Korean, makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KOREAN)) */
-#define LANGUAGE_USER_KURDISH_TURKEY 0x0626 /* sublang 0x01, Latin script */
-#define LANGUAGE_USER_KURDISH_SYRIA 0x0A26 /* sublang 0x02, Latin script */
-#define LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ 0x0E26 /* sublang 0x03, Arabic script */
-#define LANGUAGE_USER_KURDISH_IRAQ LANGUAGE_KURDISH_ARABIC_IRAQ
-#define LANGUAGE_USER_KURDISH_IRAN 0x1226 /* sublang 0x04, Arabic script */
-#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ 0x8092 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */
-#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAN 0x8492 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */
-#define LANGUAGE_USER_SARDINIAN 0x0627
+#define LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN LanguageType(0x0623)
+#define LANGUAGE_USER_UPPER_SORBIAN LanguageType(LANGUAGE_UPPER_SORBIAN_GERMANY)
+#define LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN LanguageType(0x0624)
+#define LANGUAGE_USER_LOWER_SORBIAN LanguageType(LANGUAGE_LOWER_SORBIAN_GERMANY)
+#define LANGUAGE_OBSOLETE_USER_OCCITAN LanguageType(0x0625)
+#define LANGUAGE_USER_OCCITAN LanguageType(LANGUAGE_OCCITAN_FRANCE) /* reserved to languedocian */
+
+#define LANGUAGE_USER_KOREAN_NORTH LanguageType(0x8012) /* North Korean as opposed to South Korean, makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KOREAN)) */
+#define LANGUAGE_USER_KURDISH_TURKEY LanguageType(0x0626) /* sublang 0x01, Latin script */
+#define LANGUAGE_USER_KURDISH_SYRIA LanguageType(0x0A26) /* sublang 0x02, Latin script */
+#define LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ LanguageType(0x0E26) /* sublang 0x03, Arabic script */
+#define LANGUAGE_USER_KURDISH_IRAQ LanguageType(LANGUAGE_KURDISH_ARABIC_IRAQ)
+#define LANGUAGE_USER_KURDISH_IRAN LanguageType(0x1226) /* sublang 0x04, Arabic script */
+#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ LanguageType(0x8092) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */
+#define LANGUAGE_USER_KURDISH_SOUTHERN_IRAN LanguageType(0x8492) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */
+#define LANGUAGE_USER_SARDINIAN LanguageType(0x0627)
/* was reserved for Dzongkha but turned down with #i53497#: 0x0628 */ /* obsoleted by LANGUAGE_DZONGKHA_BHUTAN */
-#define LANGUAGE_USER_DZONGKHA_MAP_LONLY 0xF851 /* to map "dz" only, because of the MS error, and preserve CTL information, sub 0x3e */
-#define LANGUAGE_USER_SWAHILI_TANZANIA 0x8041 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SWAHILI)) */
-#define LANGUAGE_OBSOLETE_USER_BRETON 0x0629
-#define LANGUAGE_USER_BRETON LANGUAGE_BRETON_FRANCE
-#define LANGUAGE_OBSOLETE_USER_KALAALLISUT 0x062A
-#define LANGUAGE_USER_KALAALLISUT LANGUAGE_KALAALLISUT_GREENLAND
-#define LANGUAGE_USER_SWAZI 0x062B
-#define LANGUAGE_USER_NDEBELE_SOUTH 0x062C
-#define LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA 0x8032 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TSWANA)) */
-#define LANGUAGE_USER_TSWANA_BOTSWANA LANGUAGE_TSWANA_BOTSWANA
-#define LANGUAGE_USER_MOORE 0x062D
-#define LANGUAGE_USER_BAMBARA 0x062E
-#define LANGUAGE_USER_AKAN 0x062F
-#define LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH 0x0630
-#define LANGUAGE_USER_LUXEMBOURGISH LANGUAGE_LUXEMBOURGISH_LUXEMBOURG
-#define LANGUAGE_USER_FRIULIAN 0x0631
-#define LANGUAGE_USER_FIJIAN 0x0632
-#define LANGUAGE_USER_AFRIKAANS_NAMIBIA 0x8036 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_AFRIKAANS)) */
-#define LANGUAGE_USER_ENGLISH_NAMIBIA 0x8009 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */
-#define LANGUAGE_USER_WALLOON 0x0633
-#define LANGUAGE_USER_COPTIC 0x0634
-#define LANGUAGE_USER_CHUVASH 0x0635
-#define LANGUAGE_USER_GASCON 0x0636 /* Gascon France */
-#define LANGUAGE_USER_GERMAN_BELGIUM 0x8007 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_GERMAN)) */
-#define LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN 0x8003 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_CATALAN)) */
-#define LANGUAGE_USER_CATALAN_VALENCIAN LANGUAGE_CATALAN_VALENCIAN
-#define LANGUAGE_USER_HAUSA_GHANA 0x8068 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HAUSA_NIGERIA)) */
-#define LANGUAGE_USER_EWE_GHANA 0x0637
-#define LANGUAGE_USER_ENGLISH_GHANA 0x8409 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */
-#define LANGUAGE_USER_TAGALOG 0x0638
-#define LANGUAGE_USER_LINGALA_DRCONGO 0x0639
-#define LANGUAGE_USER_SANGO 0x063A
-#define LANGUAGE_USER_GANDA 0x063B
-#define LANGUAGE_USER_LOW_GERMAN 0x063C
-#define LANGUAGE_USER_HILIGAYNON 0x063D
-#define LANGUAGE_USER_NYANJA 0x063E
-#define LANGUAGE_USER_KASHUBIAN 0x063F
-#define LANGUAGE_OBSOLETE_USER_SPANISH_CUBA 0x800A /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SPANISH)) */
-#define LANGUAGE_USER_SPANISH_CUBA LANGUAGE_SPANISH_CUBA
-#define LANGUAGE_USER_TETUN 0x0640
-#define LANGUAGE_USER_QUECHUA_NORTH_BOLIVIA 0x0641
-#define LANGUAGE_USER_QUECHUA_SOUTH_BOLIVIA 0x0642
-#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA 0x8C1A /* makeLangID( 0x20+0x03, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */
-#define LANGUAGE_USER_SERBIAN_CYRILLIC_SERBIA LANGUAGE_SERBIAN_CYRILLIC_SERBIA
-#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA 0x881A /* makeLangID( 0x20+0x02, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */
-#define LANGUAGE_USER_SERBIAN_LATIN_SERBIA LANGUAGE_SERBIAN_LATIN_SERBIA
-#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO 0xCC1A /* makeLangID( 0x20+0x13, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */
-#define LANGUAGE_USER_SERBIAN_CYRILLIC_MONTENEGRO LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO
-#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO 0xC81A /* makeLangID( 0x20+0x12, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */
-#define LANGUAGE_USER_SERBIAN_LATIN_MONTENEGRO LANGUAGE_SERBIAN_LATIN_MONTENEGRO
-#define LANGUAGE_USER_SAMI_KILDIN_RUSSIA 0x803B /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */
-#define LANGUAGE_USER_BODO_INDIA 0x0643
-#define LANGUAGE_USER_DOGRI_INDIA 0x0644
-#define LANGUAGE_USER_MAITHILI_INDIA 0x0645
-#define LANGUAGE_USER_SANTALI_INDIA 0x0646
-#define LANGUAGE_USER_TETUN_TIMOR_LESTE 0x0A40 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_TETUN)) */
-#define LANGUAGE_USER_TOK_PISIN 0x0647
-#define LANGUAGE_USER_SHUSWAP 0x0648
-#define LANGUAGE_USER_ARABIC_CHAD 0x8001 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
-#define LANGUAGE_USER_ARABIC_COMOROS 0x8401 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
-#define LANGUAGE_USER_ARABIC_DJIBOUTI 0x8801 /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
-#define LANGUAGE_USER_ARABIC_ERITREA 0x8C01 /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
-#define LANGUAGE_USER_ARABIC_ISRAEL 0x9001 /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
-#define LANGUAGE_USER_ARABIC_MAURITANIA 0x9401 /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
-#define LANGUAGE_USER_ARABIC_PALESTINE 0x9801 /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
-#define LANGUAGE_USER_ARABIC_SOMALIA 0x9C01 /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
-#define LANGUAGE_USER_ARABIC_SUDAN 0xA001 /* makeLangID( 0x28, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
-#define LANGUAGE_USER_ANCIENT_GREEK 0x0649
-#define LANGUAGE_USER_ASTURIAN 0x064A
-#define LANGUAGE_USER_LATGALIAN 0x064B
-#define LANGUAGE_USER_MAORE 0x064C
-#define LANGUAGE_USER_BUSHI 0x064D
-#define LANGUAGE_USER_TAHITIAN 0x064E
-#define LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU 0x064F
-#define LANGUAGE_USER_MALAGASY_PLATEAU LANGUAGE_MALAGASY_PLATEAU
-#define LANGUAGE_USER_PAPIAMENTU_ARUBA 0x8079 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
-#define LANGUAGE_USER_SARDINIAN_CAMPIDANESE 0x0650
-#define LANGUAGE_USER_SARDINIAN_GALLURESE 0x0651
-#define LANGUAGE_USER_SARDINIAN_LOGUDORESE 0x0652
-#define LANGUAGE_USER_SARDINIAN_SASSARESE 0x0653
-#define LANGUAGE_USER_BAFIA 0x0654
-#define LANGUAGE_USER_GIKUYU 0x0655
-#define LANGUAGE_USER_RUSYN_UKRAINE 0x0656
-#define LANGUAGE_USER_RUSYN_SLOVAKIA 0x8256 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_RUSYN_UKRAINE)) */
-#define LANGUAGE_USER_YIDDISH_US 0x803D /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_YIDDISH)) */
-#define LANGUAGE_USER_LIMBU 0x0657
-#define LANGUAGE_USER_LOJBAN 0x0658 /* no locale */
-#define LANGUAGE_OBSOLETE_USER_KABYLE 0x0659
-#define LANGUAGE_USER_KABYLE LANGUAGE_TAMAZIGHT_LATIN_ALGERIA
-#define LANGUAGE_USER_HAITIAN 0x065A
-#define LANGUAGE_USER_BEEMBE 0x065B
-#define LANGUAGE_USER_BEKWEL 0x065C
-#define LANGUAGE_USER_KITUBA 0x065D
-#define LANGUAGE_USER_LARI 0x065E
-#define LANGUAGE_USER_MBOCHI 0x065F
-#define LANGUAGE_USER_TEKE_IBALI 0x0660
-#define LANGUAGE_USER_TEKE_TYEE 0x0661
-#define LANGUAGE_USER_VILI 0x0662
-#define LANGUAGE_USER_PORTUGUESE_ANGOLA 0x8016 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PORTUGUESE)) */
-#define LANGUAGE_USER_MANX 0x0663
-#define LANGUAGE_USER_TEKE_EBOO 0x0664
-#define LANGUAGE_USER_ARAGONESE 0x0665
-#define LANGUAGE_USER_KEYID 0x0666 /* key id pseudolanguage */
-#define LANGUAGE_USER_PALI_LATIN 0x0667
-#define LANGUAGE_USER_KYRGYZ_CHINA 0x0668 /* not derived from LANGUAGE_KIRGHIZ as these may be different scripts, see http://www.omniglot.com/writing/kirghiz.htm */
-#define LANGUAGE_USER_KOMI_ZYRIAN 0x0669
-#define LANGUAGE_USER_KOMI_PERMYAK 0x066A
-#define LANGUAGE_USER_PITJANTJATJARA 0x066B
-#define LANGUAGE_USER_ENGLISH_MALAWI 0x8809 /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
-#define LANGUAGE_USER_ERZYA 0x066C
-#define LANGUAGE_USER_MARI_MEADOW 0x066D
-#define LANGUAGE_USER_KHANTY 0x066E
-#define LANGUAGE_USER_LIVONIAN 0x066F
-#define LANGUAGE_USER_MOKSHA 0x0670
-#define LANGUAGE_USER_MARI_HILL 0x0671
-#define LANGUAGE_USER_NGANASAN 0x0672
-#define LANGUAGE_USER_OLONETS 0x0673
-#define LANGUAGE_USER_VEPS 0x0674
-#define LANGUAGE_USER_VORO 0x0675
-#define LANGUAGE_USER_NENETS 0x0676
-#define LANGUAGE_USER_PAPIAMENTU_CURACAO 0x8479 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
-#define LANGUAGE_USER_PAPIAMENTU_BONAIRE 0x8879 /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
-#define LANGUAGE_USER_AKA 0x0677
-#define LANGUAGE_USER_AKA_CONGO 0x8277 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_AKA)) */
-#define LANGUAGE_USER_DIBOLE 0x0678
-#define LANGUAGE_USER_DOONDO 0x0679
-#define LANGUAGE_USER_KAAMBA 0x067A
-#define LANGUAGE_USER_KOONGO 0x067B
-#define LANGUAGE_USER_KOONGO_CONGO 0x827B /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_KOONGO)) */
-#define LANGUAGE_USER_KUNYI 0x067C
-#define LANGUAGE_USER_NGUNGWEL 0x067D
-#define LANGUAGE_USER_NJYEM 0x067E
-#define LANGUAGE_USER_NJYEM_CONGO 0x827E /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_NJYEM)) */
-#define LANGUAGE_USER_PUNU 0x067F
-#define LANGUAGE_USER_PUNU_CONGO 0x827F /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_PUNU)) */
-#define LANGUAGE_USER_SUUNDI 0x0680
-#define LANGUAGE_USER_TEKE_KUKUYA 0x0681
-#define LANGUAGE_USER_TSAANGI 0x0682
-#define LANGUAGE_USER_YAKA 0x0683
-#define LANGUAGE_USER_YOMBE 0x0684
-#define LANGUAGE_USER_YOMBE_CONGO 0x8284 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_YOMBE)) */
-#define LANGUAGE_USER_SIDAMA 0x0685
-#define LANGUAGE_USER_NKO 0x0686
-#define LANGUAGE_USER_UDMURT 0x0687
-#define LANGUAGE_USER_TIBETAN_INDIA 0x8051 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TIBETAN)) */
-#define LANGUAGE_USER_CORNISH 0x0688
-#define LANGUAGE_USER_SAMI_PITE_SWEDEN 0x843B /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */
-#define LANGUAGE_USER_NGAEBERE 0x0689
-#define LANGUAGE_USER_ENGLISH_UK_OED 0x8C09 /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
-#define LANGUAGE_USER_KUMYK 0x068A
-#define LANGUAGE_USER_NOGAI 0x068B
-#define LANGUAGE_USER_KARAKALPAK_LATIN 0x068C
-#define LANGUAGE_USER_LADIN 0x068D
-#define LANGUAGE_USER_TIBETAN_BHUTAN 0x8451 /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_TIBETAN)) */
-#define LANGUAGE_USER_FRENCH_BURKINA_FASO 0x800C /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_FRENCH)) */
-#define LANGUAGE_USER_PUINAVE 0x068E
-#define LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN 0x068F
-#define LANGUAGE_USER_AVAR 0x0690
-#define LANGUAGE_USER_CREE_PLAINS_LATIN 0x0691
-#define LANGUAGE_USER_CREE_PLAINS_SYLLABICS 0x8291 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_CREE_PLAINS_LATIN)) */
-#define LANGUAGE_USER_LENGO 0x0692
-#define LANGUAGE_USER_FRENCH_BENIN 0x840C /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_FRENCH)) */
-#define LANGUAGE_USER_FRENCH_NIGER 0x880C /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_FRENCH)) */
-#define LANGUAGE_USER_FRENCH_TOGO 0x8C0C /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_FRENCH)) */
-#define LANGUAGE_USER_KVEN_FINNISH 0x0693
-#define LANGUAGE_USER_CHURCH_SLAVIC 0x0694
-#define LANGUAGE_USER_VENETIAN 0x0695
-#define LANGUAGE_USER_ENGLISH_GAMBIA 0x9009 /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
-#define LANGUAGE_USER_OCCITAN_ARANESE 0x8082 /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_OCCITAN_FRANCE)) */
-#define LANGUAGE_USER_ENGLISH_UK_OXENDICT 0x9409 /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
-#define LANGUAGE_USER_ARPITAN_FRANCE 0x0696
-#define LANGUAGE_USER_ARPITAN_ITALY 0x0A96 /* makeLangID( 0x02, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */
-#define LANGUAGE_USER_ARPITAN_SWITZERLAND 0x0E96 /* makeLangID( 0x03, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */
-#define LANGUAGE_USER_ENGLISH_BOTSWANA 0x9809 /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
-#define LANGUAGE_USER_INTERLINGUE 0x0697 /* no locale */
-#define LANGUAGE_USER_APATANI 0x0698
-#define LANGUAGE_USER_ENGLISH_MAURITIUS 0x9C09 /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
-#define LANGUAGE_USER_FRENCH_MAURITIUS 0x900C /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_FRENCH)) */
-#define LANGUAGE_USER_SILESIAN 0x0699
-#define LANGUAGE_USER_HUNGARIAN_ROVAS 0x800E /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HUNGARIAN)) */
-#define LANGUAGE_USER_MANCHU 0x069A
-#define LANGUAGE_USER_XIBE 0x069B
+#define LANGUAGE_USER_DZONGKHA_MAP_LONLY LanguageType(0xF851) /* to map "dz" only, because of the MS error, and preserve CTL information, sub 0x3e */
+#define LANGUAGE_USER_SWAHILI_TANZANIA LanguageType(0x8041) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SWAHILI)) */
+#define LANGUAGE_OBSOLETE_USER_BRETON LanguageType(0x0629)
+#define LANGUAGE_USER_BRETON LanguageType(LANGUAGE_BRETON_FRANCE)
+#define LANGUAGE_OBSOLETE_USER_KALAALLISUT LanguageType(0x062A)
+#define LANGUAGE_USER_KALAALLISUT LanguageType(LANGUAGE_KALAALLISUT_GREENLAND)
+#define LANGUAGE_USER_SWAZI LanguageType(0x062B)
+#define LANGUAGE_USER_NDEBELE_SOUTH LanguageType(0x062C)
+#define LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA LanguageType(0x8032) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TSWANA)) */
+#define LANGUAGE_USER_TSWANA_BOTSWANA LanguageType(LANGUAGE_TSWANA_BOTSWANA)
+#define LANGUAGE_USER_MOORE LanguageType(0x062D)
+#define LANGUAGE_USER_BAMBARA LanguageType(0x062E)
+#define LANGUAGE_USER_AKAN LanguageType(0x062F)
+#define LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH LanguageType(0x0630)
+#define LANGUAGE_USER_LUXEMBOURGISH LanguageType(LANGUAGE_LUXEMBOURGISH_LUXEMBOURG)
+#define LANGUAGE_USER_FRIULIAN LanguageType(0x0631)
+#define LANGUAGE_USER_FIJIAN LanguageType(0x0632)
+#define LANGUAGE_USER_AFRIKAANS_NAMIBIA LanguageType(0x8036) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_AFRIKAANS)) */
+#define LANGUAGE_USER_ENGLISH_NAMIBIA LanguageType(0x8009) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */
+#define LANGUAGE_USER_WALLOON LanguageType(0x0633)
+#define LANGUAGE_USER_COPTIC LanguageType(0x0634)
+#define LANGUAGE_USER_CHUVASH LanguageType(0x0635)
+#define LANGUAGE_USER_GASCON LanguageType(0x0636) /* Gascon France */
+#define LANGUAGE_USER_GERMAN_BELGIUM LanguageType(0x8007) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_GERMAN)) */
+#define LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN LanguageType(0x8003) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_CATALAN)) */
+#define LANGUAGE_USER_CATALAN_VALENCIAN LanguageType(LANGUAGE_CATALAN_VALENCIAN)
+#define LANGUAGE_USER_HAUSA_GHANA LanguageType(0x8068) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HAUSA_NIGERIA)) */
+#define LANGUAGE_USER_EWE_GHANA LanguageType(0x0637)
+#define LANGUAGE_USER_ENGLISH_GHANA LanguageType(0x8409) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */
+#define LANGUAGE_USER_TAGALOG LanguageType(0x0638)
+#define LANGUAGE_USER_LINGALA_DRCONGO LanguageType(0x0639)
+#define LANGUAGE_USER_SANGO LanguageType(0x063A)
+#define LANGUAGE_USER_GANDA LanguageType(0x063B)
+#define LANGUAGE_USER_LOW_GERMAN LanguageType(0x063C)
+#define LANGUAGE_USER_HILIGAYNON LanguageType(0x063D)
+#define LANGUAGE_USER_NYANJA LanguageType(0x063E)
+#define LANGUAGE_USER_KASHUBIAN LanguageType(0x063F)
+#define LANGUAGE_OBSOLETE_USER_SPANISH_CUBA LanguageType(0x800A) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SPANISH)) */
+#define LANGUAGE_USER_SPANISH_CUBA LanguageType(LANGUAGE_SPANISH_CUBA)
+#define LANGUAGE_USER_TETUN LanguageType(0x0640)
+#define LANGUAGE_USER_QUECHUA_NORTH_BOLIVIA LanguageType(0x0641)
+#define LANGUAGE_USER_QUECHUA_SOUTH_BOLIVIA LanguageType(0x0642)
+#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA LanguageType(0x8C1A) /* makeLangID( 0x20+0x03, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */
+#define LANGUAGE_USER_SERBIAN_CYRILLIC_SERBIA LanguageType(LANGUAGE_SERBIAN_CYRILLIC_SERBIA)
+#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA LanguageType(0x881A) /* makeLangID( 0x20+0x02, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */
+#define LANGUAGE_USER_SERBIAN_LATIN_SERBIA LanguageType(LANGUAGE_SERBIAN_LATIN_SERBIA)
+#define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO LanguageType(0xCC1A) /* makeLangID( 0x20+0x13, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */
+#define LANGUAGE_USER_SERBIAN_CYRILLIC_MONTENEGRO LanguageType(LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO)
+#define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO LanguageType(0xC81A) /* makeLangID( 0x20+0x12, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */
+#define LANGUAGE_USER_SERBIAN_LATIN_MONTENEGRO LanguageType(LANGUAGE_SERBIAN_LATIN_MONTENEGRO)
+#define LANGUAGE_USER_SAMI_KILDIN_RUSSIA LanguageType(0x803B) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */
+#define LANGUAGE_USER_BODO_INDIA LanguageType(0x0643)
+#define LANGUAGE_USER_DOGRI_INDIA LanguageType(0x0644)
+#define LANGUAGE_USER_MAITHILI_INDIA LanguageType(0x0645)
+#define LANGUAGE_USER_SANTALI_INDIA LanguageType(0x0646)
+#define LANGUAGE_USER_TETUN_TIMOR_LESTE LanguageType(0x0A40) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_TETUN)) */
+#define LANGUAGE_USER_TOK_PISIN LanguageType(0x0647)
+#define LANGUAGE_USER_SHUSWAP LanguageType(0x0648)
+#define LANGUAGE_USER_ARABIC_CHAD LanguageType(0x8001) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ARABIC_COMOROS LanguageType(0x8401) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ARABIC_DJIBOUTI LanguageType(0x8801) /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ARABIC_ERITREA LanguageType(0x8C01) /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ARABIC_ISRAEL LanguageType(0x9001) /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ARABIC_MAURITANIA LanguageType(0x9401) /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ARABIC_PALESTINE LanguageType(0x9801) /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ARABIC_SOMALIA LanguageType(0x9C01) /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ARABIC_SUDAN LanguageType(0xA001) /* makeLangID( 0x28, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ANCIENT_GREEK LanguageType(0x0649)
+#define LANGUAGE_USER_ASTURIAN LanguageType(0x064A)
+#define LANGUAGE_USER_LATGALIAN LanguageType(0x064B)
+#define LANGUAGE_USER_MAORE LanguageType(0x064C)
+#define LANGUAGE_USER_BUSHI LanguageType(0x064D)
+#define LANGUAGE_USER_TAHITIAN LanguageType(0x064E)
+#define LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU LanguageType(0x064F)
+#define LANGUAGE_USER_MALAGASY_PLATEAU LanguageType(LANGUAGE_MALAGASY_PLATEAU)
+#define LANGUAGE_USER_PAPIAMENTU_ARUBA LanguageType(0x8079) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
+#define LANGUAGE_USER_SARDINIAN_CAMPIDANESE LanguageType(0x0650)
+#define LANGUAGE_USER_SARDINIAN_GALLURESE LanguageType(0x0651)
+#define LANGUAGE_USER_SARDINIAN_LOGUDORESE LanguageType(0x0652)
+#define LANGUAGE_USER_SARDINIAN_SASSARESE LanguageType(0x0653)
+#define LANGUAGE_USER_BAFIA LanguageType(0x0654)
+#define LANGUAGE_USER_GIKUYU LanguageType(0x0655)
+#define LANGUAGE_USER_RUSYN_UKRAINE LanguageType(0x0656)
+#define LANGUAGE_USER_RUSYN_SLOVAKIA LanguageType(0x8256) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_RUSYN_UKRAINE)) */
+#define LANGUAGE_USER_YIDDISH_US LanguageType(0x803D) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_YIDDISH)) */
+#define LANGUAGE_USER_LIMBU LanguageType(0x0657)
+#define LANGUAGE_USER_LOJBAN LanguageType(0x0658) /* no locale */
+#define LANGUAGE_OBSOLETE_USER_KABYLE LanguageType(0x0659)
+#define LANGUAGE_USER_KABYLE LanguageType(LANGUAGE_TAMAZIGHT_LATIN_ALGERIA)
+#define LANGUAGE_USER_HAITIAN LanguageType(0x065A)
+#define LANGUAGE_USER_BEEMBE LanguageType(0x065B)
+#define LANGUAGE_USER_BEKWEL LanguageType(0x065C)
+#define LANGUAGE_USER_KITUBA LanguageType(0x065D)
+#define LANGUAGE_USER_LARI LanguageType(0x065E)
+#define LANGUAGE_USER_MBOCHI LanguageType(0x065F)
+#define LANGUAGE_USER_TEKE_IBALI LanguageType(0x0660)
+#define LANGUAGE_USER_TEKE_TYEE LanguageType(0x0661)
+#define LANGUAGE_USER_VILI LanguageType(0x0662)
+#define LANGUAGE_USER_PORTUGUESE_ANGOLA LanguageType(0x8016) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PORTUGUESE)) */
+#define LANGUAGE_USER_MANX LanguageType(0x0663)
+#define LANGUAGE_USER_TEKE_EBOO LanguageType(0x0664)
+#define LANGUAGE_USER_ARAGONESE LanguageType(0x0665)
+#define LANGUAGE_USER_KEYID LanguageType(0x0666) /* key id pseudolanguage */
+#define LANGUAGE_USER_PALI_LATIN LanguageType(0x0667)
+#define LANGUAGE_USER_KYRGYZ_CHINA LanguageType(0x0668) /* not derived from LANGUAGE_KIRGHIZ as these may be different scripts, see http://www.omniglot.com/writing/kirghiz.htm */
+#define LANGUAGE_USER_KOMI_ZYRIAN LanguageType(0x0669)
+#define LANGUAGE_USER_KOMI_PERMYAK LanguageType(0x066A)
+#define LANGUAGE_USER_PITJANTJATJARA LanguageType(0x066B)
+#define LANGUAGE_USER_ENGLISH_MALAWI LanguageType(0x8809) /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
+#define LANGUAGE_USER_ERZYA LanguageType(0x066C)
+#define LANGUAGE_USER_MARI_MEADOW LanguageType(0x066D)
+#define LANGUAGE_USER_KHANTY LanguageType(0x066E)
+#define LANGUAGE_USER_LIVONIAN LanguageType(0x066F)
+#define LANGUAGE_USER_MOKSHA LanguageType(0x0670)
+#define LANGUAGE_USER_MARI_HILL LanguageType(0x0671)
+#define LANGUAGE_USER_NGANASAN LanguageType(0x0672)
+#define LANGUAGE_USER_OLONETS LanguageType(0x0673)
+#define LANGUAGE_USER_VEPS LanguageType(0x0674)
+#define LANGUAGE_USER_VORO LanguageType(0x0675)
+#define LANGUAGE_USER_NENETS LanguageType(0x0676)
+#define LANGUAGE_USER_PAPIAMENTU_CURACAO LanguageType(0x8479) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
+#define LANGUAGE_USER_PAPIAMENTU_BONAIRE LanguageType(0x8879) /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
+#define LANGUAGE_USER_AKA LanguageType(0x0677)
+#define LANGUAGE_USER_AKA_CONGO LanguageType(0x8277) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_AKA)) */
+#define LANGUAGE_USER_DIBOLE LanguageType(0x0678)
+#define LANGUAGE_USER_DOONDO LanguageType(0x0679)
+#define LANGUAGE_USER_KAAMBA LanguageType(0x067A)
+#define LANGUAGE_USER_KOONGO LanguageType(0x067B)
+#define LANGUAGE_USER_KOONGO_CONGO LanguageType(0x827B) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_KOONGO)) */
+#define LANGUAGE_USER_KUNYI LanguageType(0x067C)
+#define LANGUAGE_USER_NGUNGWEL LanguageType(0x067D)
+#define LANGUAGE_USER_NJYEM LanguageType(0x067E)
+#define LANGUAGE_USER_NJYEM_CONGO LanguageType(0x827E) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_NJYEM)) */
+#define LANGUAGE_USER_PUNU LanguageType(0x067F)
+#define LANGUAGE_USER_PUNU_CONGO LanguageType(0x827F) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_PUNU)) */
+#define LANGUAGE_USER_SUUNDI LanguageType(0x0680)
+#define LANGUAGE_USER_TEKE_KUKUYA LanguageType(0x0681)
+#define LANGUAGE_USER_TSAANGI LanguageType(0x0682)
+#define LANGUAGE_USER_YAKA LanguageType(0x0683)
+#define LANGUAGE_USER_YOMBE LanguageType(0x0684)
+#define LANGUAGE_USER_YOMBE_CONGO LanguageType(0x8284) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_YOMBE)) */
+#define LANGUAGE_USER_SIDAMA LanguageType(0x0685)
+#define LANGUAGE_USER_NKO LanguageType(0x0686)
+#define LANGUAGE_USER_UDMURT LanguageType(0x0687)
+#define LANGUAGE_USER_TIBETAN_INDIA LanguageType(0x8051) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TIBETAN)) */
+#define LANGUAGE_USER_CORNISH LanguageType(0x0688)
+#define LANGUAGE_USER_SAMI_PITE_SWEDEN LanguageType(0x843B) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */
+#define LANGUAGE_USER_NGAEBERE LanguageType(0x0689)
+#define LANGUAGE_USER_ENGLISH_UK_OED LanguageType(0x8C09) /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
+#define LANGUAGE_USER_KUMYK LanguageType(0x068A)
+#define LANGUAGE_USER_NOGAI LanguageType(0x068B)
+#define LANGUAGE_USER_KARAKALPAK_LATIN LanguageType(0x068C)
+#define LANGUAGE_USER_LADIN LanguageType(0x068D)
+#define LANGUAGE_USER_TIBETAN_BHUTAN LanguageType(0x8451) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_TIBETAN)) */
+#define LANGUAGE_USER_FRENCH_BURKINA_FASO LanguageType(0x800C) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_FRENCH)) */
+#define LANGUAGE_USER_PUINAVE LanguageType(0x068E)
+#define LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN LanguageType(0x068F)
+#define LANGUAGE_USER_AVAR LanguageType(0x0690)
+#define LANGUAGE_USER_CREE_PLAINS_LATIN LanguageType(0x0691)
+#define LANGUAGE_USER_CREE_PLAINS_SYLLABICS LanguageType(0x8291) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_CREE_PLAINS_LATIN)) */
+#define LANGUAGE_USER_LENGO LanguageType(0x0692)
+#define LANGUAGE_USER_FRENCH_BENIN LanguageType(0x840C) /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_FRENCH)) */
+#define LANGUAGE_USER_FRENCH_NIGER LanguageType(0x880C) /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_FRENCH)) */
+#define LANGUAGE_USER_FRENCH_TOGO LanguageType(0x8C0C) /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_FRENCH)) */
+#define LANGUAGE_USER_KVEN_FINNISH LanguageType(0x0693)
+#define LANGUAGE_USER_CHURCH_SLAVIC LanguageType(0x0694)
+#define LANGUAGE_USER_VENETIAN LanguageType(0x0695)
+#define LANGUAGE_USER_ENGLISH_GAMBIA LanguageType(0x9009) /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
+#define LANGUAGE_USER_OCCITAN_ARANESE LanguageType(0x8082) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_OCCITAN_FRANCE)) */
+#define LANGUAGE_USER_ENGLISH_UK_OXENDICT LanguageType(0x9409) /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
+#define LANGUAGE_USER_ARPITAN_FRANCE LanguageType(0x0696)
+#define LANGUAGE_USER_ARPITAN_ITALY LanguageType(0x0A96) /* makeLangID( 0x02, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */
+#define LANGUAGE_USER_ARPITAN_SWITZERLAND LanguageType(0x0E96) /* makeLangID( 0x03, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */
+#define LANGUAGE_USER_ENGLISH_BOTSWANA LanguageType(0x9809) /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
+#define LANGUAGE_USER_INTERLINGUE LanguageType(0x0697) /* no locale */
+#define LANGUAGE_USER_APATANI LanguageType(0x0698)
+#define LANGUAGE_USER_ENGLISH_MAURITIUS LanguageType(0x9C09) /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
+#define LANGUAGE_USER_FRENCH_MAURITIUS LanguageType(0x900C) /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_FRENCH)) */
+#define LANGUAGE_USER_SILESIAN LanguageType(0x0699)
+#define LANGUAGE_USER_HUNGARIAN_ROVAS LanguageType(0x800E) /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HUNGARIAN)) */
+#define LANGUAGE_USER_MANCHU LanguageType(0x069A)
+#define LANGUAGE_USER_XIBE LanguageType(0x069B)
/* XXX Add new user defined LCIDs ^^^ there.
@@ -727,20 +735,21 @@ typedef unsigned short LanguageType;
/* Primary language ID range for on-the-fly assignment. */
-#define LANGUAGE_ON_THE_FLY_START 0x03E0
-#define LANGUAGE_ON_THE_FLY_END 0x03FE
+#define LANGUAGE_ON_THE_FLY_START LanguageType(0x03E0)
+#define LANGUAGE_ON_THE_FLY_END LanguageType(0x03FE)
/* Sublanguage ID range for on-the-fly assignment. */
-#define LANGUAGE_ON_THE_FLY_SUB_START 0x01
-#define LANGUAGE_ON_THE_FLY_SUB_END 0x3E
+#define LANGUAGE_ON_THE_FLY_SUB_START LanguageType(0x01)
+#define LANGUAGE_ON_THE_FLY_SUB_END LanguageType(0x3E)
/* 0xFFE0 to 0xFFFF reserved for privateuse and specials. */
-#define LANGUAGE_USER_PRIV_JOKER 0xFFEB /* privateuse "*" (sic! bad! nasty!), primary 0x3eb, sub 0x3f */
-#define LANGUAGE_USER_PRIV_COMMENT 0xFFEC /* privateuse "x-comment", primary 0x3ec, sub 0x3f */
-#define LANGUAGE_USER_PRIV_DEFAULT 0xFFED /* privateuse "x-default", primary 0x3ed, sub 0x3f */
-#define LANGUAGE_USER_PRIV_NOTRANSLATE 0xFFEE /* privateuse "x-no-translate" (sic!), primary 0x3ee, sub 0x3f */
-#define LANGUAGE_MULTIPLE 0xFFEF /* multiple languages, primary 0x3ef, sub 0x3f */
-#define LANGUAGE_UNDETERMINED 0xFFF0 /* undetermined language, primary 0x3f0, sub 0x3f */
-#define LANGUAGE_USER_SYSTEM_CONFIG 0xFFFE /* not a locale, to be used only in configuration context to obtain system default, primary 0x3fe, sub 0x3f */
+#define LANGUAGE_USER_PRIV_JOKER LanguageType(0xFFEB) /* privateuse "*" (sic! bad! nasty!), primary 0x3eb, sub 0x3f */
+#define LANGUAGE_USER_PRIV_COMMENT LanguageType(0xFFEC) /* privateuse "x-comment", primary 0x3ec, sub 0x3f */
+#define LANGUAGE_USER_PRIV_DEFAULT LanguageType(0xFFED) /* privateuse "x-default", primary 0x3ed, sub 0x3f */
+#define LANGUAGE_USER_PRIV_NOTRANSLATE LanguageType(0xFFEE) /* privateuse "x-no-translate" (sic!), primary 0x3ee, sub 0x3f */
+#define LANGUAGE_MULTIPLE LanguageType(0xFFEF) /* multiple languages, primary 0x3ef, sub 0x3f */
+#define LANGUAGE_UNDETERMINED LanguageType(0xFFF0) /* undetermined language, primary 0x3f0, sub 0x3f */
+#define LANGUAGE_USER_SYSTEM_CONFIG LanguageType(0xFFFE) /* not a locale, to be used only in configuration context to obtain system default, primary 0x3fe, sub 0x3f */
+
#endif /* INCLUDED_I18NLANGTAG_LANG_H */
diff --git a/include/i18nlangtag/mslangid.hxx b/include/i18nlangtag/mslangid.hxx
index 668be8c28d30..b38e01d829fc 100644
--- a/include/i18nlangtag/mslangid.hxx
+++ b/include/i18nlangtag/mslangid.hxx
@@ -40,19 +40,19 @@ public:
/// Create a LangID from a primary and a sublanguage.
static LanguageType makeLangID( LanguageType nSubLangId, LanguageType nPriLangId)
{
- return (nSubLangId << 10) | nPriLangId;
+ return LanguageType((sal_uInt16(nSubLangId) << 10) | sal_uInt16(nPriLangId));
}
/// Get the primary language of a LangID.
static LanguageType getPrimaryLanguage( LanguageType nLangID)
{
- return nLangID & LANGUAGE_MASK_PRIMARY;
+ return LanguageType(sal_uInt16(nLangID) & LANGUAGE_MASK_PRIMARY);
}
/// Get the sublanguage of a LangID.
static LanguageType getSubLanguage( LanguageType nLangID)
{
- return (nLangID & ~LANGUAGE_MASK_PRIMARY) >> 10;
+ return LanguageType((sal_uInt16(nLangID) & ~LANGUAGE_MASK_PRIMARY) >> 10);
}
/** Language/locale of category LC_CTYPE (on Unix, else the system
diff --git a/include/linguistic/hyphdta.hxx b/include/linguistic/hyphdta.hxx
index 3fe0c76d4b69..b86d8cf8d78a 100644
--- a/include/linguistic/hyphdta.hxx
+++ b/include/linguistic/hyphdta.hxx
@@ -24,6 +24,7 @@
#include <com/sun/star/linguistic2/XPossibleHyphens.hpp>
#include <cppuhelper/implbase.hxx>
#include <linguistic/lngdllapi.h>
+#include <i18nlangtag/lang.h>
namespace linguistic
{
@@ -35,14 +36,14 @@ class HyphenatedWord :
OUString aHyphenatedWord;
sal_Int16 nHyphPos;
sal_Int16 nHyphenationPos;
- sal_uInt16 nLanguage;
+ LanguageType nLanguage;
bool bIsAltSpelling;
HyphenatedWord(const HyphenatedWord &) = delete;
HyphenatedWord & operator = (const HyphenatedWord &) = delete;
public:
- HyphenatedWord(const OUString &rWord, sal_uInt16 nLang, sal_Int16 nHyphenationPos,
+ HyphenatedWord(const OUString &rWord, LanguageType nLang, sal_Int16 nHyphenationPos,
const OUString &rHyphenatedWord, sal_Int16 nHyphenPos );
virtual ~HyphenatedWord() override;
@@ -61,7 +62,7 @@ public:
isAlternativeSpelling() override;
static css::uno::Reference <css::linguistic2::XHyphenatedWord> LNG_DLLPUBLIC CreateHyphenatedWord(
- const OUString &rWord, sal_Int16 nLang, sal_Int16 nHyphenationPos,
+ const OUString &rWord, LanguageType nLang, sal_Int16 nHyphenationPos,
const OUString &rHyphenatedWord, sal_Int16 nHyphenPos );
};
@@ -75,13 +76,13 @@ class PossibleHyphens :
OUString aWord;
OUString aWordWithHyphens;
css::uno::Sequence< sal_Int16 > aOrigHyphenPos;
- sal_uInt16 nLanguage;
+ LanguageType nLanguage;
PossibleHyphens(const PossibleHyphens &) = delete;
PossibleHyphens & operator = (const PossibleHyphens &) = delete;
public:
- PossibleHyphens(const OUString &rWord, sal_uInt16 nLang,
+ PossibleHyphens(const OUString &rWord, LanguageType nLang,
const OUString &rHyphWord,
const css::uno::Sequence< sal_Int16 > &rPositions);
virtual ~PossibleHyphens() override;
@@ -97,7 +98,7 @@ public:
getHyphenationPositions() override;
static css::uno::Reference < css::linguistic2::XPossibleHyphens > LNG_DLLPUBLIC CreatePossibleHyphens
- (const OUString &rWord, sal_Int16 nLang,
+ (const OUString &rWord, LanguageType nLang,
const OUString &rHyphWord,
const css::uno::Sequence< sal_Int16 > &rPositions);
};
diff --git a/include/linguistic/misc.hxx b/include/linguistic/misc.hxx
index b2a53bd3eadf..b65cd9bc9a92 100644
--- a/include/linguistic/misc.hxx
+++ b/include/linguistic/misc.hxx
@@ -106,7 +106,9 @@ LNG_DLLPUBLIC bool LinguIsUnspecified( LanguageType nLanguage );
tag string instead. */
LNG_DLLPUBLIC bool LinguIsUnspecified( const OUString & rBcp47 );
-css::uno::Sequence< sal_Int16 >
+std::vector< LanguageType >
+ LocaleSeqToLangVec( css::uno::Sequence< css::lang::Locale > &rLocaleSeq );
+css::uno::Sequence<sal_Int16>
LocaleSeqToLangSeq( css::uno::Sequence< css::lang::Locale > &rLocaleSeq );
// checks if file pointed to by rURL is readonly
@@ -132,12 +134,12 @@ css::uno::Reference< css::linguistic2::XHyphenatedWord >
css::uno::Reference< css::linguistic2::XHyphenatedWord > &rxHyphWord );
-LNG_DLLPUBLIC bool IsUpper( const OUString &rText, sal_Int32 nPos, sal_Int32 nLen, sal_Int16 nLanguage );
+LNG_DLLPUBLIC bool IsUpper( const OUString &rText, sal_Int32 nPos, sal_Int32 nLen, LanguageType nLanguage );
-inline bool IsUpper( const OUString &rText, sal_Int16 nLanguage ) { return IsUpper( rText, 0, rText.getLength(), nLanguage ); }
+inline bool IsUpper( const OUString &rText, LanguageType nLanguage ) { return IsUpper( rText, 0, rText.getLength(), nLanguage ); }
LNG_DLLPUBLIC CapType SAL_CALL capitalType(const OUString&, CharClass *);
-OUString ToLower( const OUString &rText, sal_Int16 nLanguage );
+OUString ToLower( const OUString &rText, LanguageType nLanguage );
LNG_DLLPUBLIC bool HasDigits( const OUString &rText );
LNG_DLLPUBLIC bool IsNumeric( const OUString &rText );
@@ -157,13 +159,13 @@ css::uno::Reference<
css::linguistic2::XDictionaryEntry >
SearchDicList(
const css::uno::Reference< css::linguistic2::XSearchableDictionaryList >& rDicList,
- const OUString& rWord, sal_Int16 nLanguage,
+ const OUString& rWord, LanguageType nLanguage,
bool bSearchPosDics, bool bSearchSpellEntry );
LNG_DLLPUBLIC DictionaryError AddEntryToDic(
css::uno::Reference< css::linguistic2::XDictionary > &rxDic,
const OUString &rWord, bool bIsNeg,
- const OUString &rRplcTxt, sal_Int16 nRplcLang,
+ const OUString &rRplcTxt,
bool bStripDot = true );
LNG_DLLPUBLIC bool SaveDictionaries( const css::uno::Reference< css::linguistic2::XSearchableDictionaryList > &xDicList );
diff --git a/include/linguistic/spelldta.hxx b/include/linguistic/spelldta.hxx
index f38e836371ae..7c23c2cca1bf 100644
--- a/include/linguistic/spelldta.hxx
+++ b/include/linguistic/spelldta.hxx
@@ -26,6 +26,7 @@
#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
#include <cppuhelper/implbase.hxx>
#include <linguistic/lngdllapi.h>
+#include <i18nlangtag/lang.h>
namespace com { namespace sun { namespace star {
namespace linguistic2 {
@@ -46,9 +47,9 @@ std::vector< OUString >
void SeqRemoveNegEntries(
std::vector< OUString > &rSeq,
css::uno::Reference< css::linguistic2::XSearchableDictionaryList > &rxDicList,
- sal_Int16 nLanguage );
+ LanguageType nLanguage );
-void SearchSimilarText( const OUString &rText, sal_Int16 nLanguage,
+void SearchSimilarText( const OUString &rText, LanguageType nLanguage,
css::uno::Reference< css::linguistic2::XSearchableDictionaryList > &xDicList,
std::vector< OUString > & rDicListProps );
@@ -63,11 +64,11 @@ class SpellAlternatives
css::uno::Sequence< OUString > aAlt; // list of alternatives, may be empty.
OUString aWord;
sal_Int16 nType; // type of failure
- sal_Int16 nLanguage;
+ LanguageType nLanguage;
public:
LNG_DLLPUBLIC SpellAlternatives();
- SpellAlternatives(const OUString &rWord, sal_Int16 nLang,
+ SpellAlternatives(const OUString &rWord, LanguageType nLang,
const css::uno::Sequence< OUString > &rAlternatives );
virtual ~SpellAlternatives() override;
SpellAlternatives(const SpellAlternatives&) = delete;
@@ -85,11 +86,11 @@ public:
virtual void SAL_CALL setFailureType( ::sal_Int16 nFailureType ) override;
// non-interface specific functions
- void LNG_DLLPUBLIC SetWordLanguage(const OUString &rWord, sal_Int16 nLang);
+ void LNG_DLLPUBLIC SetWordLanguage(const OUString &rWord, LanguageType nLang);
void LNG_DLLPUBLIC SetFailureType(sal_Int16 nTypeP);
void LNG_DLLPUBLIC SetAlternatives( const css::uno::Sequence< OUString > &rAlt );
static css::uno::Reference < css::linguistic2::XSpellAlternatives > LNG_DLLPUBLIC CreateSpellAlternatives(
- const OUString &rWord, sal_Int16 nLang, sal_Int16 nTypeP, const css::uno::Sequence< OUString > &rAlt );
+ const OUString &rWord, LanguageType nLang, sal_Int16 nTypeP, const css::uno::Sequence< OUString > &rAlt );
};
} // namespace linguistic
diff --git a/include/o3tl/strong_int.hxx b/include/o3tl/strong_int.hxx
index 588cab8e5472..ff2ba9123627 100644
--- a/include/o3tl/strong_int.hxx
+++ b/include/o3tl/strong_int.hxx
@@ -43,7 +43,7 @@ public:
explicit constexpr strong_int(UNDERLYING_TYPE value) : m_value(value) {}
strong_int() : m_value(0) {}
- explicit operator UNDERLYING_TYPE() const { return m_value; }
+ explicit constexpr operator UNDERLYING_TYPE() const { return m_value; }
explicit operator bool() const { return m_value != 0; }
UNDERLYING_TYPE get() const { return m_value; }
@@ -56,6 +56,15 @@ public:
strong_int& operator++() { ++m_value; return *this; }
strong_int operator++(int) { UNDERLYING_TYPE nOldValue = m_value; ++m_value; return strong_int(nOldValue); }
+ bool anyOf(strong_int v) const {
+ return *this == v;
+ }
+
+ template<typename... Args>
+ bool anyOf(strong_int first, Args... args) const {
+ return *this == first || anyOf(args...);
+ }
+
private:
UNDERLYING_TYPE m_value;
};
diff --git a/include/svl/languageoptions.hxx b/include/svl/languageoptions.hxx
index 99670809be7c..f386cb6b0e00 100644
--- a/include/svl/languageoptions.hxx
+++ b/include/svl/languageoptions.hxx
@@ -98,14 +98,14 @@ public:
bool IsReadOnly(EOption eOption) const;
// returns for a language the scripttype
- static SvtScriptType GetScriptTypeOfLanguage( sal_uInt16 nLang );
+ static SvtScriptType GetScriptTypeOfLanguage( LanguageType nLang );
// convert from css::i18n::ScriptType constants to SvtScriptType
static SvtScriptType FromI18NToSvtScriptType( sal_Int16 nI18NType );
static sal_Int16 FromSvtScriptTypeToI18N( SvtScriptType nI18NType );
- static sal_Int16 GetI18NScriptTypeOfLanguage( sal_uInt16 nLang );
+ static sal_Int16 GetI18NScriptTypeOfLanguage( LanguageType nLang );
};
diff --git a/include/svl/ondemand.hxx b/include/svl/ondemand.hxx
index 3e14204a5846..b48523cd594d 100644
--- a/include/svl/ondemand.hxx
+++ b/include/svl/ondemand.hxx
@@ -96,28 +96,27 @@ public:
void changeLocale( const LanguageTag& rLanguageTag )
{
LanguageType eLang = rLanguageTag.getLanguageType( false);
- switch ( eLang )
- {
- case LANGUAGE_SYSTEM :
+ if ( eLang == LANGUAGE_SYSTEM )
pCurrent = pSystem;
- break;
- case LANGUAGE_ENGLISH_US :
+ else if ( eLang == LANGUAGE_ENGLISH_US )
+ {
if ( !pEnglish )
pEnglish = new LocaleDataWrapper( m_xContext, rLanguageTag );
pCurrent = pEnglish;
- break;
- default:
- if ( !pAny )
- {
- pAny = new LocaleDataWrapper( m_xContext, rLanguageTag );
- eLastAnyLanguage = eLang;
- }
- else if ( eLastAnyLanguage != eLang )
- {
- pAny->setLanguageTag( rLanguageTag );
- eLastAnyLanguage = eLang;
- }
- pCurrent = pAny;
+ }
+ else
+ {
+ if ( !pAny )
+ {
+ pAny = new LocaleDataWrapper( m_xContext, rLanguageTag );
+ eLastAnyLanguage = eLang;
+ }
+ else if ( eLastAnyLanguage != eLang )
+ {
+ pAny->setLanguageTag( rLanguageTag );
+ eLastAnyLanguage = eLang;
+ }
+ pCurrent = pAny;
}
eCurrentLanguage = eLang;
}
diff --git a/include/svl/zforlist.hxx b/include/svl/zforlist.hxx
index cdcd8a78d6e7..87e0291730cd 100644
--- a/include/svl/zforlist.hxx
+++ b/include/svl/zforlist.hxx
@@ -754,7 +754,7 @@ public:
void GetCompatibilityCurrency( OUString& rSymbol, OUString& rAbbrev ) const;
/// Fill rList with the language/country codes that have been allocated
- void GetUsedLanguages( std::vector<sal_uInt16>& rList );
+ void GetUsedLanguages( std::vector<LanguageType>& rList );
/// Fill a NfKeywordIndex table with keywords of a language/country
void FillKeywordTable( NfKeywordTable& rKeywords, LanguageType eLang );
diff --git a/include/svx/langbox.hxx b/include/svx/langbox.hxx
index ddf48e6472ec..d7a7f26e9a40 100644
--- a/include/svx/langbox.hxx
+++ b/include/svx/langbox.hxx
@@ -54,7 +54,7 @@ namespace o3tl
}
// load language strings from resource
-SVX_DLLPUBLIC OUString GetDicInfoStr( const OUString& rName, const sal_uInt16 nLang, bool bNeg );
+SVX_DLLPUBLIC OUString GetDicInfoStr( const OUString& rName, const LanguageType nLang, bool bNeg );
class SVX_DLLPUBLIC SvxLanguageBoxBase
{
@@ -69,7 +69,7 @@ public:
bool bHasLangNone, bool bLangNoneIsLangAll = false,
bool bCheckSpellAvail = false );
- void AddLanguages( const css::uno::Sequence< sal_Int16 >& rLanguageTypes, SvxLanguageListFlags nLangList );
+ void AddLanguages( const std::vector< LanguageType >& rLanguageTypes, SvxLanguageListFlags nLangList );
sal_Int32 InsertLanguage( const LanguageType eLangType );
void InsertDefaultLanguage( sal_Int16 nType );
diff --git a/include/unotools/lingucfg.hxx b/include/unotools/lingucfg.hxx
index 759576d4a6c4..425b21119893 100644
--- a/include/unotools/lingucfg.hxx
+++ b/include/unotools/lingucfg.hxx
@@ -53,9 +53,9 @@ struct UNOTOOLS_DLLPUBLIC SvtLinguOptions
bROHyphMinWordLength;
// misc options (non-service specific)
- sal_Int16 nDefaultLanguage;
- sal_Int16 nDefaultLanguage_CJK;
- sal_Int16 nDefaultLanguage_CTL;
+ LanguageType nDefaultLanguage;
+ LanguageType nDefaultLanguage_CJK;
+ LanguageType nDefaultLanguage_CTL;
bool bRODefaultLanguage;
bool bRODefaultLanguage_CJK;
diff --git a/include/unotools/localedatawrapper.hxx b/include/unotools/localedatawrapper.hxx
index 944ec80db624..018c7babe456 100644
--- a/include/unotools/localedatawrapper.hxx
+++ b/include/unotools/localedatawrapper.hxx
@@ -170,7 +170,7 @@ public:
matching, excluding already known problems.
(e.g. used in number formatter dialog init)
*/
- static css::uno::Sequence< sal_uInt16 > getInstalledLanguageTypes();
+ static std::vector< LanguageType > getInstalledLanguageTypes();
/// maps the LocaleData string to the International enum
MeasurementSystem mapMeasurementStringToEnum( const OUString& rMS ) const;
diff --git a/include/unotools/transliterationwrapper.hxx b/include/unotools/transliterationwrapper.hxx
index 7508386bf3b7..0726d6caf139 100644
--- a/include/unotools/transliterationwrapper.hxx
+++ b/include/unotools/transliterationwrapper.hxx
@@ -46,7 +46,7 @@ class UNOTOOLS_DLLPUBLIC TransliterationWrapper
TransliterationWrapper& operator=( const TransliterationWrapper& ) = delete;
void loadModuleImpl() const;
- void setLanguageLocaleImpl( sal_uInt16 nLang );
+ void setLanguageLocaleImpl( LanguageType nLang );
public:
TransliterationWrapper( const css::uno::Reference< css::uno::XComponentContext > & rxContext,
@@ -60,7 +60,7 @@ public:
/** set a new language and load the corresponding transliteration module if
needed for the mode set with nType in the ctor */
- void loadModuleIfNeeded( sal_uInt16 nLang );
+ void loadModuleIfNeeded( LanguageType nLang );
/** Load the transliteration module specified by rModuleName, which has to
be the UNO service implementation name that is expanded to the full UNO
@@ -74,7 +74,7 @@ public:
those may load a different module and overwrite this setting. Only the
transliterate() method that takes no LanguageType parameter may be used
for a specific module loaded with this method. */
- void loadModuleByImplName( const OUString& rModuleName, sal_uInt16 nLang );
+ void loadModuleByImplName( const OUString& rModuleName, LanguageType nLang );
/** This transliteration method corresponds with the loadModuleByImplName()
method. It relies on a module being loaded and does not try load one.
@@ -84,7 +84,7 @@ public:
sal_Int32 nStart, sal_Int32 nLen ) const;
// Wrapper implementations of class Transliteration
- OUString transliterate( const OUString& rStr, sal_uInt16 nLanguage,
+ OUString transliterate( const OUString& rStr, LanguageType nLanguage,
sal_Int32 nStart, sal_Int32 nLen,
css::uno::Sequence <sal_Int32>* pOffset );
diff --git a/include/xmloff/xmlnumfe.hxx b/include/xmloff/xmlnumfe.hxx
index b4792a8de1a3..c3c51ea57797 100644
--- a/include/xmloff/xmlnumfe.hxx
+++ b/include/xmloff/xmlnumfe.hxx
@@ -26,6 +26,7 @@
#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
#include <com/sun/star/uno/Sequence.h>
#include <rtl/ustrbuf.hxx>
+#include <i18nlangtag/lang.h>
#include <memory>
#define XML_WRITTENNUMBERSTYLES "WrittenNumberStyles"
@@ -56,7 +57,7 @@ private:
SAL_DLLPRIVATE void AddCalendarAttr_Impl( const OUString& rCalendar );
SAL_DLLPRIVATE void AddStyleAttr_Impl( bool bLong );
- SAL_DLLPRIVATE void AddLanguageAttr_Impl( sal_Int32 nLang );
+ SAL_DLLPRIVATE void AddLanguageAttr_Impl( LanguageType nLang );
SAL_DLLPRIVATE void AddToTextElement_Impl( const OUString& rString );
SAL_DLLPRIVATE void FinishTextElement_Impl(bool bUseExtensionNS = false);