summaryrefslogtreecommitdiff
path: root/include/i18nlangtag/lang.h
blob: 48772ab6e433c2b950a9652bc03a5c9c686e32db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */

#ifndef INCLUDED_I18NLANGTAG_LANG_H
#define INCLUDED_I18NLANGTAG_LANG_H

/**
   These are MS LANGIDs, the lower 10 bits (mask 0x03ff, values below 0x0400
   aren't real locale IDs) represent the primary language ID, the upper 6 bits
   represent the sublanguage ID, which in most cases together with the primary
   language simply designates a country. A LANGID is constructed by
   UINT16 nLangID = ((((UINT16)(SubLangId)) << 10) | (UINT16)(PriLangId));

   A user-defined primary language ID is a value in the range 0x0200 to 0x03ff.
   All other values are reserved for Windows system use.

   A user-defined sublanguage identifier is a value in the range 0x20 to 0x3f.
   All other values are reserved for Windows system use.
   If there is no sublanguage ID for a primary language ID, use SUBLANG_DEFAULT
   (0x01, which shifted to the left by 10 bits results in the frequently seen
   0x0400). OR'ed with a 0x0200 primary results in 0x0600.

   Values added as of 2006-04-18, a helper script: ../../source/isolang/lcid.awk
   Utility to compare MS-LANGID definitions with those defined in this file.

   For further information about MS-LANGIDs please see include/winnt.h of a
   recent MSDEV version and the following web pages.


   The once complete list, not necessarily supported by Windows:
   List of Locale ID (LCID) Values as Assigned by Microsoft
   http://www.microsoft.com/globaldev/reference/lcid-all.mspx

   As a complete list is never complete, some more that came with WinXP SP2:
   Windows XP/Server 2003 - List of Locale IDs, Input Locale, and Language Collection
   http://www.microsoft.com/globaldev/reference/winxp/xp-lcid.mspx

   And of course 2 lists aren't enough, so Windows Vista needs an extra one.
   Which at least seems to include values of other versions of Windows.
   Language Identifier Constants and Strings
   http://msdn.microsoft.com/en-us/library/ms776294.aspx

 ! Hey, yet another list, maybe this one will not move around? It seems to be
 ! quite complete..
 ! Language Identifier Constants and Strings (Windows)
 ! http://msdn.microsoft.com/en-us/library/dd318693.aspx
 !
 ! Use THAT ^^^ as of 2013-09-17 it includes also Windows 8

 ! BUT, you can download a PDF document from
 ! http://msdn.microsoft.com/library/cc233965.aspx
 ! that has YET MORE definitions, sigh.. didn't cross-check if any are missing
 ! from that.. however, it also contains a few MS-reserved definitions that use
 ! ISO 639-3 codes reserved for local use, such as 'qps-ploc' and 'qps-ploca'
 ! (sic!), or strange things like 'ar-Ploc-SA' and 'ja-Ploc-JP' ('Ploc'??).
 !
 ! Use THAT ^^^ as the ultimate reference source (haha?) as of 2013-10-17 it
 ! includes also Windows 8.1 (Release: Monday, July 22, 2013; well, its table
 ! says 08/08/2013 Revision 6.0, but hey, who cares...)

   For completeness, you can never have enough lists:
   List of supported locale identifiers in Word
   Applies to Microsoft Word 2000 and 2002
   http://support.microsoft.com/default.aspx?scid=KB;en-us;q221435
 */


/* It must be safe to include this file in plain C code, so only C style
 * comments are used. Do NOT use // C++ style comments. */

/* disable typedef for usage in svtools/source/misc/langtab.src */
#ifndef RSC_RESOURCE_USAGE
typedef unsigned short LanguageType;
#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 */

/* The Invariant Locale (Locale ID = 0x007f) is a locale that can be used by
 * applications when a consistent and locale-independent result is required.
 * The invariant locale can be used, for example, when comparing character
 * strings using the CompareString() API and a consistent result regardless of
 * the User Locale is expected.
 * 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

/* Naming conventions:
 * * ..._LSO suffix indicates a Language-Script-Only mapping, i.e. no country
 *   assignment in i18nlangtag/source/isolang/isolang.cxx.
 *   Used for backward compatibility or where MS assigned such values and they
 *   should be explicitly handled.
 * * LANGUAGE_USER_... for our user-defined IDs.
 * * LANGUAGE_OBSOLETE_USER_... for a user-defined ID that has been replaced by
 *   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? */

/* 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

/*! 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

/*! 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


/* And now the extensions we define,
 * with primary language IDs from 0x200 to 0x3FF valid in blocks from
 *
 * 0x0610 to 0x07FF with sublanguage ID 0x01 (default)
 * 0x0A00 to 0x0BFF with sublanguage ID 0x02
 * ...
 * 0x8200 to 0x83FF with sublanguage ID 0x20
 * 0x8600 to 0x87FF with sublanguage ID 0x21
 * ...
 * 0xFA00 to 0xFBFF with sublanguage ID 0x3E
 * 0xFE00 to 0xFFFF with sublanguage ID 0x3F
 *
 * Of which we define reserved blocks:
 * All primary language IDs 0x3E0 to 0x3FE with any sublanguage ID, not to be
 * assigned as user-defined IDs:
 *
 * 0x07E0 to 0x07FE with sublanguage ID 0x01, first on-the-fly block
 * 0x0BE0 to 0x0BFE with sublanguage ID 0x02, second on-the-fly block
 * ...
 * 0x83E0 to 0x83FE with sublanguage ID 0x20
 * 0x87E0 to 0x87FE with sublanguage ID 0x21
 * ...
 * 0xFBE0 to 0xFBFE with sublanguage ID 0x3E, last on-the-fly block
 * 0xFFE0 to 0xFFFE with sublanguage ID 0x3F, 32 privateuse and specials
 *
 * This leaves room for 479 user-defined primary language IDs (instead of 512)
 * with primary bitmask comparability, and 1922 on-the-fly IDs (instead of 0)
 * with arbitrary assignment ((0x3E - 0x01 + 1) * (0x3FE - 0x3E0 + 1)).
 *
 * The primary ID 0x3FF is reserved and unassigned as it is the same as the
 * LANGUAGE_MASK_PRIMARY and LANGUAGE_DONTKNOW value, so to not be mistaken as
 * such.
 *
 * Obsolete OOo user defines now have other values assigned by MS, and
 * different name. Mapping an obsolete value to ISO code should work provided
 * 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
/* 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
/* 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


/* XXX Add new user defined LCIDs ^^^ there.
 * Note that we run out of IDs with sublanguage ID 0x01 after 0x07DF ... */


/* Primary language ID range for on-the-fly assignment. */
#define LANGUAGE_ON_THE_FLY_START           0x03E0
#define LANGUAGE_ON_THE_FLY_END             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

/* 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 */

#endif /* INCLUDED_I18NLANGTAG_LANG_H */

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */