1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  *   Licensed to the Apache Software Foundation (ASF) under one or more
12  *   contributor license agreements. See the NOTICE file distributed
13  *   with this work for additional information regarding copyright
14  *   ownership. The ASF licenses this file to you under the Apache
15  *   License, Version 2.0 (the "License"); you may not use this file
16  *   except in compliance with the License. You may obtain a copy of
17  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #ifndef INCLUDED_I18NLANGTAG_LANG_H
21 #define INCLUDED_I18NLANGTAG_LANG_H
22 
23 /**
24    These are MS LANGIDs, the lower 10 bits (mask 0x03ff, values below 0x0400
25    aren't real locale IDs) represent the primary language ID, the upper 6 bits
26    represent the sublanguage ID, which in most cases together with the primary
27    language simply designates a country. A LANGID is constructed by
28    UINT16 nLangID = ((((UINT16)(SubLangId)) << 10) | (UINT16)(PriLangId));
29 
30    A user-defined primary language ID is a value in the range 0x0200 to 0x03ff.
31    All other values are reserved for Windows system use.
32 
33    A user-defined sublanguage identifier is a value in the range 0x20 to 0x3f.
34    All other values are reserved for Windows system use.
35    If there is no sublanguage ID for a primary language ID, use SUBLANG_DEFAULT
36    (0x01, which shifted to the left by 10 bits results in the frequently seen
37    0x0400). OR'ed with a 0x0200 primary results in 0x0600.
38 
39    Values added as of 2006-04-18, a helper script: ../../source/isolang/lcid.awk
40    Utility to compare MS-LANGID definitions with those defined in this file.
41 
42    For further information about MS-LANGIDs please see include/winnt.h of a
43    recent MSDEV version and the following web pages.
44 
45 
46    The once complete list, not necessarily supported by Windows:
47    List of Locale ID (LCID) Values as Assigned by Microsoft
48    http://www.microsoft.com/globaldev/reference/lcid-all.mspx
49 
50    As a complete list is never complete, some more that came with WinXP SP2:
51    Windows XP/Server 2003 - List of Locale IDs, Input Locale, and Language Collection
52    http://www.microsoft.com/globaldev/reference/winxp/xp-lcid.mspx
53 
54    And of course 2 lists aren't enough, so Windows Vista needs an extra one.
55    Which at least seems to include values of other versions of Windows.
56    Language Identifier Constants and Strings
57    http://msdn.microsoft.com/en-us/library/ms776294.aspx
58 
59  ! Hey, yet another list, maybe this one will not move around? It seems to be
60  ! quite complete...
61  ! Language Identifier Constants and Strings (Windows)
62  ! http://msdn.microsoft.com/en-us/library/dd318693.aspx
63  !
64  ! Use THAT ^^^ as of 2013-09-17 it includes also Windows 8
65 
66  ! BUT, you can download a PDF document from
67  ! http://msdn.microsoft.com/library/cc233965.aspx
68  ! that has YET MORE definitions, sigh... didn't cross-check if any are missing
69  ! from that... however, it also contains a few MS-reserved definitions that use
70  ! ISO 639-3 codes reserved for local use, such as 'qps-ploc' and 'qps-ploca'
71  ! (sic!), or strange things like 'ar-Ploc-SA' and 'ja-Ploc-JP' ('Ploc'??).
72  !
73  ! Use THAT ^^^ as the ultimate reference source (haha?) as of 2013-10-17 it
74  ! includes also Windows 8.1 (Release: Monday, July 22, 2013; well, its table
75  ! says 08/08/2013 Revision 6.0, but hey, who cares...)
76 
77    For completeness, you can never have enough lists:
78    List of supported locale identifiers in Word
79    Applies to Microsoft Word 2000 and 2002
80    http://support.microsoft.com/default.aspx?scid=KB;en-us;q221435
81  */
82 
83 #include <sal/types.h>
84 #include <o3tl/strong_int.hxx>
85 #include <ostream>
86 
87 typedef o3tl::strong_int<sal_uInt16, struct LanguageTypeTag> LanguageType;
88 inline std::ostream& operator<<(std::ostream& os, LanguageType const & lt) { os << sal_uInt16(lt); return os; }
primary(LanguageType lt)89 constexpr LanguageType primary(LanguageType lt) { return LanguageType(sal_uInt16(lt) & 0x03ff); }
90 
91 namespace o3tl
92 {
93     // delete "sal_Int16" constructor via specialization: values > 0x7FFF are
94     // actually used, and unfortunately passed around in the API as signed
95     // "short", so use this to find all places where casts must be inserted
96     template<> template<> constexpr strong_int<unsigned short,LanguageTypeTag>::strong_int(short, std::enable_if<std::is_integral<short>::value, int>::type) = delete;
97 }
98 
99 #define LANGUAGE_MASK_PRIMARY 0x03ff
100 
101 #define LANGUAGE_DONTKNOW                   LanguageType(0x03FF)  /* yes, the mask */
102 #define LANGUAGE_NONE                       LanguageType(0x00FF)
103 #define LANGUAGE_HID_HUMAN_INTERFACE_DEVICE LanguageType(0x04FF)
104 #define LANGUAGE_SYSTEM                     LanguageType(0x0000)  /* OOo/SO definition */
105 
106 /* The Invariant Locale (Locale ID = 0x007f) is a locale that can be used by
107  * applications when a consistent and locale-independent result is required.
108  * The invariant locale can be used, for example, when comparing character
109  * strings using the CompareString() API and a consistent result regardless of
110  * the User Locale is expected.
111  * The settings of the Invariant Locale are similar to US-English international
112  * standards, but should not be used to display formatted data. */
113 /* NOTE: this is taken from the MS documentation! Not supported by OOo/SO! */
114 #define LANGUAGE_INVARIANT                  LanguageType(0x007F)
115 
116 /* Naming conventions:
117  * * ..._LSO suffix indicates a Language-Script-Only mapping, i.e. no country
118  *   assignment in i18nlangtag/source/isolang/isolang.cxx.
119  *   Used for backward compatibility or where MS assigned such values and they
120  *   should be explicitly handled.
121  * * LANGUAGE_USER_... for our user-defined IDs.
122  * * LANGUAGE_OBSOLETE_USER_... for a user-defined ID that has been replaced by
123  *   a value defined by MS.
124  */
125 
126 #define LANGUAGE_AFRIKAANS                  LanguageType(0x0436)
127 #define LANGUAGE_ALBANIAN                   LanguageType(0x041C)
128 #define LANGUAGE_ALSATIAN_FRANCE            LanguageType(0x0484)
129 #define LANGUAGE_AMHARIC_ETHIOPIA           LanguageType(0x045E)
130 #define LANGUAGE_ARABIC_ALGERIA             LanguageType(0x1401)
131 #define LANGUAGE_ARABIC_BAHRAIN             LanguageType(0x3C01)
132 #define LANGUAGE_ARABIC_EGYPT               LanguageType(0x0C01)
133 #define LANGUAGE_ARABIC_IRAQ                LanguageType(0x0801)
134 #define LANGUAGE_ARABIC_JORDAN              LanguageType(0x2C01)
135 #define LANGUAGE_ARABIC_KUWAIT              LanguageType(0x3401)
136 #define LANGUAGE_ARABIC_LEBANON             LanguageType(0x3001)
137 #define LANGUAGE_ARABIC_LIBYA               LanguageType(0x1001)
138 #define LANGUAGE_ARABIC_MOROCCO             LanguageType(0x1801)
139 #define LANGUAGE_ARABIC_OMAN                LanguageType(0x2001)
140 #define LANGUAGE_ARABIC_PRIMARY_ONLY        LanguageType(0x0001)  /* primary only, not a locale! */
141 #define LANGUAGE_ARABIC_QATAR               LanguageType(0x4001)
142 #define LANGUAGE_ARABIC_SAUDI_ARABIA        LanguageType(0x0401)
143 #define LANGUAGE_ARABIC_SYRIA               LanguageType(0x2801)
144 #define LANGUAGE_ARABIC_TUNISIA             LanguageType(0x1C01)
145 #define LANGUAGE_ARABIC_UAE                 LanguageType(0x3801)
146 #define LANGUAGE_ARABIC_YEMEN               LanguageType(0x2401)
147 #define LANGUAGE_ARMENIAN                   LanguageType(0x042B)  /* Eastern Armenian */
148 #define LANGUAGE_ASSAMESE                   LanguageType(0x044D)
149 #define LANGUAGE_AZERI_CYRILLIC             LanguageType(0x082C)
150 #define LANGUAGE_AZERI_CYRILLIC_LSO         LanguageType(0x742C)
151 #define LANGUAGE_AZERI_LATIN                LanguageType(0x042C)
152 #define LANGUAGE_AZERI_LATIN_LSO            LanguageType(0x782C)
153 #define LANGUAGE_BASHKIR_RUSSIA             LanguageType(0x046D)
154 #define LANGUAGE_BASQUE                     LanguageType(0x042D)
155 #define LANGUAGE_BELARUSIAN                 LanguageType(0x0423)
156 #define LANGUAGE_BENGALI                    LanguageType(0x0445)  /* in India */
157 #define LANGUAGE_BENGALI_BANGLADESH         LanguageType(0x0845)
158 #define LANGUAGE_BOSNIAN_CYRILLIC_LSO                   LanguageType(0x641A)
159 #define LANGUAGE_BOSNIAN_CYRILLIC_BOSNIA_HERZEGOVINA    LanguageType(0x201A)
160 #define LANGUAGE_BOSNIAN_LATIN_LSO                      LanguageType(0x681A)
161 #define LANGUAGE_BOSNIAN_LSO                            LanguageType(0x781A)
162 #define LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA       LanguageType(0x141A)
163 #define LANGUAGE_BOSNIAN_BOSNIA_HERZEGOVINA             LANGUAGE_BOSNIAN_LATIN_BOSNIA_HERZEGOVINA   /* TODO: remove, only for langtab.src & localize.sdf compatibility */
164 #define LANGUAGE_BRETON_FRANCE              LanguageType(0x047E)  /* obsoletes LANGUAGE_USER_BRETON 0x0629 */
165 #define LANGUAGE_BULGARIAN                  LanguageType(0x0402)
166 #define LANGUAGE_BURMESE                    LanguageType(0x0455)
167 #define LANGUAGE_CATALAN                    LanguageType(0x0403)
168 #define LANGUAGE_CATALAN_VALENCIAN          LanguageType(0x0803)  /* obsoletes LANGUAGE_USER_CATALAN_VALENCIAN 0x8003 */
169 #define LANGUAGE_CHEROKEE_UNITED_STATES     LanguageType(0x045C)
170 #define LANGUAGE_CHEROKEE_CHEROKEE_LSO      LanguageType(0x7C5C)
171 #define LANGUAGE_CHINESE_HONGKONG           LanguageType(0x0C04)
172 #define LANGUAGE_CHINESE_LSO                LanguageType(0x7804)
173 #define LANGUAGE_CHINESE_MACAU              LanguageType(0x1404)
174 #define LANGUAGE_CHINESE_SIMPLIFIED         LanguageType(0x0804)
175 #define LANGUAGE_CHINESE_SINGAPORE          LanguageType(0x1004)
176 #define LANGUAGE_CHINESE_TRADITIONAL        LanguageType(0x0404)
177 #define LANGUAGE_CHINESE_SIMPLIFIED_LEGACY  LanguageType(0x0004)  /* MS-.NET 'zh-CHS', primary only! but maps to 'zh-CN' */
178 #define LANGUAGE_CHINESE_TRADITIONAL_LSO    LanguageType(0x7C04)  /* MS-.NET 'zh-CHT' but maps to 'zh-Hant' */
179 #define LANGUAGE_CHINESE                    LANGUAGE_CHINESE_SIMPLIFIED     /* most code uses LANGUAGE_CHINESE */
180 #define LANGUAGE_CORSICAN_FRANCE            LanguageType(0x0483)
181 #define LANGUAGE_CROATIAN                   LanguageType(0x041A)
182 #define LANGUAGE_CROATIAN_BOSNIA_HERZEGOVINA LanguageType(0x101A)
183 #define LANGUAGE_CZECH                      LanguageType(0x0405)
184 #define LANGUAGE_DANISH                     LanguageType(0x0406)
185 #define LANGUAGE_DARI_AFGHANISTAN           LanguageType(0x048C)  /* AKA Zoroastrian Dari */
186 #define LANGUAGE_DHIVEHI                    LanguageType(0x0465)  /* AKA Divehi */
187 #define LANGUAGE_DUTCH                      LanguageType(0x0413)
188 #define LANGUAGE_DUTCH_BELGIAN              LanguageType(0x0813)
189 #define LANGUAGE_EDO                        LanguageType(0x0466)
190 #define LANGUAGE_ENGLISH                    LanguageType(0x0009)  /* primary only, not a locale! */
191 #define LANGUAGE_ENGLISH_ARAB_EMIRATES      LanguageType(0x4C09)
192 #define LANGUAGE_ENGLISH_AUS                LanguageType(0x0C09)
193 #define LANGUAGE_ENGLISH_BAHRAIN            LanguageType(0x5009)
194 #define LANGUAGE_ENGLISH_BELIZE             LanguageType(0x2809)
195 #define LANGUAGE_ENGLISH_CAN                LanguageType(0x1009)
196 #define LANGUAGE_ENGLISH_CARRIBEAN          LanguageType(0x2409)
197 #define LANGUAGE_ENGLISH_EGYPT              LanguageType(0x5409)
198 #define LANGUAGE_ENGLISH_EIRE               LanguageType(0x1809)
199 #define LANGUAGE_ENGLISH_HONG_KONG_SAR      LanguageType(0x3C09)
200 #define LANGUAGE_ENGLISH_INDIA              LanguageType(0x4009)
201 #define LANGUAGE_ENGLISH_INDONESIA          LanguageType(0x3809)
202 #define LANGUAGE_ENGLISH_JAMAICA            LanguageType(0x2009)
203 #define LANGUAGE_ENGLISH_JORDAN             LanguageType(0x5809)
204 #define LANGUAGE_ENGLISH_KUWAIT             LanguageType(0x5C09)
205 #define LANGUAGE_ENGLISH_MALAYSIA           LanguageType(0x4409)
206 #define LANGUAGE_ENGLISH_NZ                 LanguageType(0x1409)
207 #define LANGUAGE_ENGLISH_PHILIPPINES        LanguageType(0x3409)
208 #define LANGUAGE_ENGLISH_SAFRICA            LanguageType(0x1C09)
209 #define LANGUAGE_ENGLISH_SINGAPORE          LanguageType(0x4809)
210 #define LANGUAGE_ENGLISH_TRINIDAD           LanguageType(0x2C09)
211 #define LANGUAGE_ENGLISH_TURKEY             LanguageType(0x6009)
212 #define LANGUAGE_ENGLISH_UK                 LanguageType(0x0809)
213 #define LANGUAGE_ENGLISH_US                 LanguageType(0x0409)
214 #define LANGUAGE_ENGLISH_YEMEN              LanguageType(0x6409)
215 #define LANGUAGE_ENGLISH_ZIMBABWE           LanguageType(0x3009)
216 #define LANGUAGE_ESTONIAN                   LanguageType(0x0425)
217 #define LANGUAGE_FAEROESE                   LanguageType(0x0438)
218 #define LANGUAGE_FARSI                      LanguageType(0x0429)
219 #define LANGUAGE_FILIPINO                   LanguageType(0x0464)
220 #define LANGUAGE_FINNISH                    LanguageType(0x040B)
221 #define LANGUAGE_FRENCH                     LanguageType(0x040C)
222 #define LANGUAGE_FRENCH_BELGIAN             LanguageType(0x080C)
223 #define LANGUAGE_FRENCH_CAMEROON            LanguageType(0x2C0C)
224 #define LANGUAGE_FRENCH_CANADIAN            LanguageType(0x0C0C)
225 #define LANGUAGE_FRENCH_COTE_D_IVOIRE       LanguageType(0x300C)
226 
227 #define LANGUAGE_FRENCH_HAITI               LanguageType(0x3C0C)
228 #define LANGUAGE_FRENCH_LUXEMBOURG          LanguageType(0x140C)
229 #define LANGUAGE_FRENCH_MALI                LanguageType(0x340C)
230 #define LANGUAGE_FRENCH_MONACO              LanguageType(0x180C)
231 #define LANGUAGE_FRENCH_MOROCCO             LanguageType(0x380C)
232 #define LANGUAGE_FRENCH_NORTH_AFRICA        LanguageType(0xE40C)
233 #define LANGUAGE_FRENCH_REUNION             LanguageType(0x200C)
234 #define LANGUAGE_FRENCH_SENEGAL             LanguageType(0x280C)
235 #define LANGUAGE_FRENCH_SWISS               LanguageType(0x100C)
236 #define LANGUAGE_FRENCH_WEST_INDIES         LanguageType(0x1C0C)  /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */
237 #define LANGUAGE_FRENCH_ZAIRE               LanguageType(0x240C)
238 #define LANGUAGE_FRISIAN_NETHERLANDS        LanguageType(0x0462)
239 #define LANGUAGE_FULFULDE_LATIN_LSO         LanguageType(0x7C67)
240 #define LANGUAGE_FULFULDE_NIGERIA           LanguageType(0x0467)
241 #define LANGUAGE_FULFULDE_SENEGAL           LanguageType(0x0867)
242 #define LANGUAGE_GAELIC_IRELAND             LanguageType(0x083C)
243 #define LANGUAGE_GAELIC_SCOTLAND            LanguageType(0x0491)  /* apparently it occurred to MS that those are different languages */
244 #define LANGUAGE_GAELIC_SCOTLAND_LEGACY     LanguageType(0x043C)
245 #define LANGUAGE_GALICIAN                   LanguageType(0x0456)
246 #define LANGUAGE_GEORGIAN                   LanguageType(0x0437)
247 #define LANGUAGE_GERMAN                     LanguageType(0x0407)
248 #define LANGUAGE_GERMAN_AUSTRIAN            LanguageType(0x0C07)
249 #define LANGUAGE_GERMAN_LIECHTENSTEIN       LanguageType(0x1407)
250 #define LANGUAGE_GERMAN_LUXEMBOURG          LanguageType(0x1007)
251 #define LANGUAGE_GERMAN_SWISS               LanguageType(0x0807)
252 #define LANGUAGE_GREEK                      LanguageType(0x0408)
253 #define LANGUAGE_GUARANI_PARAGUAY           LanguageType(0x0474)
254 #define LANGUAGE_GUJARATI                   LanguageType(0x0447)
255 #define LANGUAGE_HAUSA_LATIN_LSO            LanguageType(0x7C68)
256 #define LANGUAGE_HAUSA_NIGERIA              LanguageType(0x0468)
257 #define LANGUAGE_HAWAIIAN_UNITED_STATES     LanguageType(0x0475)
258 #define LANGUAGE_HEBREW                     LanguageType(0x040D)
259 #define LANGUAGE_HINDI                      LanguageType(0x0439)
260 #define LANGUAGE_HUNGARIAN                  LanguageType(0x040E)
261 #define LANGUAGE_IBIBIO_NIGERIA             LanguageType(0x0469)
262 #define LANGUAGE_ICELANDIC                  LanguageType(0x040F)
263 #define LANGUAGE_IGBO_NIGERIA               LanguageType(0x0470)
264 #define LANGUAGE_INDONESIAN                 LanguageType(0x0421)
265 #define LANGUAGE_INUKTITUT_SYLLABICS_CANADA LanguageType(0x045D)
266 #define LANGUAGE_INUKTITUT_SYLLABICS_LSO    LanguageType(0x785D)
267 #define LANGUAGE_INUKTITUT_LATIN_CANADA     LanguageType(0x085D)
268 #define LANGUAGE_INUKTITUT_LATIN_LSO        LanguageType(0x7C5D)
269 #define LANGUAGE_ITALIAN                    LanguageType(0x0410)
270 #define LANGUAGE_ITALIAN_SWISS              LanguageType(0x0810)
271 #define LANGUAGE_JAPANESE                   LanguageType(0x0411)
272 #define LANGUAGE_KALAALLISUT_GREENLAND      LanguageType(0x046F)  /* obsoletes LANGUAGE_USER_KALAALLISUT 0x062A */
273 #define LANGUAGE_KANNADA                    LanguageType(0x044B)
274 #define LANGUAGE_KANURI_NIGERIA             LanguageType(0x0471)
275 #define LANGUAGE_KASHMIRI                   LanguageType(0x0460)
276 #define LANGUAGE_KASHMIRI_INDIA             LanguageType(0x0860)
277 #define LANGUAGE_KAZAKH                     LanguageType(0x043F)
278 #define LANGUAGE_KHMER                      LanguageType(0x0453)
279 #define LANGUAGE_KICHE_GUATEMALA            LanguageType(0x0486)  /* AKA K'iche', West Central Quiche,  */
280 #define LANGUAGE_KINYARWANDA_RWANDA         LanguageType(0x0487)  /* obsoletes LANGUAGE_USER_KINYARWANDA 0x0621 */
281 #define LANGUAGE_KIRGHIZ                    LanguageType(0x0440)  /* AKA Kyrgyz */
282 #define LANGUAGE_KONKANI                    LanguageType(0x0457)
283 #define LANGUAGE_KOREAN                     LanguageType(0x0412)
284 #define LANGUAGE_KOREAN_JOHAB               LanguageType(0x0812)  /* not mentioned in MS-LCID.pdf, oh joy */
285 #define LANGUAGE_KURDISH_ARABIC_IRAQ        LanguageType(0x0492)  /* obsoletes LANGUAGE_USER_KURDISH_IRAQ 0x0E26 */
286 #define LANGUAGE_KURDISH_ARABIC_LSO         LanguageType(0x7C92)
287 #define LANGUAGE_LAO                        LanguageType(0x0454)
288 #define LANGUAGE_LATIN_LSO                  LanguageType(0x0476)  /* obsoletes LANGUAGE_USER_LATIN 0x0610 */
289 #define LANGUAGE_LATVIAN                    LanguageType(0x0426)
290 #define LANGUAGE_LITHUANIAN                 LanguageType(0x0427)
291 #define LANGUAGE_LITHUANIAN_CLASSIC         LanguageType(0x0827)  /* MS in its MS-LCID.pdf now says "Neither defined nor reserved" */
292 #define LANGUAGE_LU_CHINA                   LanguageType(0x0490)
293 #define LANGUAGE_LUXEMBOURGISH_LUXEMBOURG   LanguageType(0x046E)  /* obsoletes LANGUAGE_USER_LUXEMBOURGISH 0x0630 */
294 #define LANGUAGE_MACEDONIAN                 LanguageType(0x042F)
295 #define LANGUAGE_MALAGASY_PLATEAU           LanguageType(0x048D)  /* obsoletes LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU */
296 #define LANGUAGE_MALAYALAM                  LanguageType(0x044C)  /* in India */
297 #define LANGUAGE_MALAY_BRUNEI_DARUSSALAM    LanguageType(0x083E)
298 #define LANGUAGE_MALAY_MALAYSIA             LanguageType(0x043E)
299 #define LANGUAGE_MALTESE                    LanguageType(0x043A)
300 #define LANGUAGE_MANIPURI                   LanguageType(0x0458)
301 #define LANGUAGE_MAORI_NEW_ZEALAND          LanguageType(0x0481)  /* obsoletes LANGUAGE_USER_MAORI 0x0620 */
302 #define LANGUAGE_MAPUDUNGUN_CHILE           LanguageType(0x047A)  /* AKA Araucanian */
303 #define LANGUAGE_MARATHI                    LanguageType(0x044E)
304 #define LANGUAGE_MOHAWK_CANADA              LanguageType(0x047C)
305 #define LANGUAGE_MONGOLIAN_CYRILLIC_MONGOLIA    LanguageType(0x0450)
306 #define LANGUAGE_MONGOLIAN_CYRILLIC_LSO         LanguageType(0x7850)
307 #define LANGUAGE_MONGOLIAN_MONGOLIAN_MONGOLIA   LanguageType(0x0C50)
308 #define LANGUAGE_MONGOLIAN_MONGOLIAN_CHINA      LanguageType(0x0850)
309 #define LANGUAGE_MONGOLIAN_MONGOLIAN_LSO        LanguageType(0x7C50)
310 #define LANGUAGE_NEPALI                     LanguageType(0x0461)
311 #define LANGUAGE_NEPALI_INDIA               LanguageType(0x0861)
312 #define LANGUAGE_NORWEGIAN                  LanguageType(0x0014)  /* primary only, not a locale! */
313 #define LANGUAGE_NORWEGIAN_BOKMAL           LanguageType(0x0414)
314 #define LANGUAGE_NORWEGIAN_BOKMAL_LSO       LanguageType(0x7C14)
315 #define LANGUAGE_NORWEGIAN_NYNORSK          LanguageType(0x0814)
316 #define LANGUAGE_NORWEGIAN_NYNORSK_LSO      LanguageType(0x7814)
317 #define LANGUAGE_OCCITAN_FRANCE             LanguageType(0x0482)  /* obsoletes LANGUAGE_USER_OCCITAN 0x0625 */
318 #define LANGUAGE_ODIA                       LanguageType(0x0448)
319 #define LANGUAGE_OROMO                      LanguageType(0x0472)
320 #define LANGUAGE_PAPIAMENTU                 LanguageType(0x0479)
321 #define LANGUAGE_PASHTO                     LanguageType(0x0463)
322 #define LANGUAGE_POLISH                     LanguageType(0x0415)
323 #define LANGUAGE_PORTUGUESE                 LanguageType(0x0816)
324 #define LANGUAGE_PORTUGUESE_BRAZILIAN       LanguageType(0x0416)
325 #define LANGUAGE_PUNJABI                    LanguageType(0x0446)
326 #define LANGUAGE_PUNJABI_ARABIC_LSO         LanguageType(0x7C46)
327 #define LANGUAGE_PUNJABI_PAKISTAN           LanguageType(0x0846)
328 #define LANGUAGE_QUECHUA_BOLIVIA            LanguageType(0x046B)
329 #define LANGUAGE_QUECHUA_COLOMBIA           LanguageType(0x0493)  /* different primary ID */
330 #define LANGUAGE_QUECHUA_ECUADOR            LanguageType(0x086B)
331 #define LANGUAGE_QUECHUA_PERU               LanguageType(0x0C6B)
332 #define LANGUAGE_RHAETO_ROMAN               LanguageType(0x0417)
333 #define LANGUAGE_ROMANIAN                   LanguageType(0x0418)
334 #define LANGUAGE_ROMANIAN_MOLDOVA           LanguageType(0x0818)
335 #define LANGUAGE_RUSSIAN                    LanguageType(0x0419)
336 #define LANGUAGE_RUSSIAN_MOLDOVA            LanguageType(0x0819)
337 #define LANGUAGE_SAMI_NORTHERN_NORWAY       LanguageType(0x043B)
338 #define LANGUAGE_SAMI_LAPPISH               LANGUAGE_SAMI_NORTHERN_NORWAY   /* the old MS definition */
339 #define LANGUAGE_SAMI_INARI                 LanguageType(0x243B)
340 #define LANGUAGE_SAMI_INARI_LSO             LanguageType(0x703B)
341 #define LANGUAGE_SAMI_LULE_LSO              LanguageType(0x7C3B)
342 #define LANGUAGE_SAMI_LULE_NORWAY           LanguageType(0x103B)
343 #define LANGUAGE_SAMI_LULE_SWEDEN           LanguageType(0x143B)
344 #define LANGUAGE_SAMI_NORTHERN_FINLAND      LanguageType(0x0C3B)
345 #define LANGUAGE_SAMI_NORTHERN_SWEDEN       LanguageType(0x083B)
346 #define LANGUAGE_SAMI_SKOLT                 LanguageType(0x203B)
347 #define LANGUAGE_SAMI_SKOLT_LSO             LanguageType(0x743B)
348 #define LANGUAGE_SAMI_SOUTHERN_LSO          LanguageType(0x783B)
349 #define LANGUAGE_SAMI_SOUTHERN_NORWAY       LanguageType(0x183B)
350 #define LANGUAGE_SAMI_SOUTHERN_SWEDEN       LanguageType(0x1C3B)
351 #define LANGUAGE_SANSKRIT                   LanguageType(0x044F)
352 #define LANGUAGE_SEPEDI                     LanguageType(0x046C)
353 #define LANGUAGE_NORTHERNSOTHO              LANGUAGE_SEPEDI /* just an alias for the already existing localization */
354 #define LANGUAGE_SERBIAN_CYRILLIC_LSO       LanguageType(0x6C1A)
355 #define LANGUAGE_SERBIAN_CYRILLIC_SAM       LanguageType(0x0C1A)  /* Serbia and Montenegro (former) */
356 #define LANGUAGE_SERBIAN_CYRILLIC_BOSNIA_HERZEGOVINA    LanguageType(0x1C1A)
357 #define LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO LanguageType(0x301A)
358 #define LANGUAGE_SERBIAN_CYRILLIC_SERBIA    LanguageType(0x281A)
359 #define LANGUAGE_SERBIAN_LATIN_LSO          LanguageType(0x701A)
360 #define LANGUAGE_SERBIAN_LATIN_SAM          LanguageType(0x081A)
361 #define LANGUAGE_SERBIAN_LATIN_BOSNIA_HERZEGOVINA       LanguageType(0x181A)
362 #define LANGUAGE_SERBIAN_LATIN_MONTENEGRO   LanguageType(0x2C1A)
363 #define LANGUAGE_SERBIAN_LATIN_NEUTRAL      LanguageType(0x7C1A)
364 #define LANGUAGE_SERBIAN_LATIN_SERBIA       LanguageType(0x241A)
365 #define LANGUAGE_SESOTHO                    LanguageType(0x0430)  /* also called Sutu now by MS */
366 #define LANGUAGE_SINDHI                     LanguageType(0x0459)
367 #define LANGUAGE_SINDHI_ARABIC_LSO          LanguageType(0x7C59)
368 #define LANGUAGE_SINDHI_PAKISTAN            LanguageType(0x0859)
369 #define LANGUAGE_SINHALESE_SRI_LANKA        LanguageType(0x045B)
370 #define LANGUAGE_SLOVAK                     LanguageType(0x041B)
371 #define LANGUAGE_SLOVENIAN                  LanguageType(0x0424)
372 #define LANGUAGE_SOMALI                     LanguageType(0x0477)
373 #define LANGUAGE_UPPER_SORBIAN_GERMANY      LanguageType(0x042E)  /* obsoletes LANGUAGE_USER_UPPER_SORBIAN 0x0623 */
374 #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 */
375 #define LANGUAGE_LOWER_SORBIAN_LSO          LanguageType(0x7C2E)
376 #define LANGUAGE_SORBIAN                    LANGUAGE_USER_UPPER_SORBIAN /* a strange MS definition */
377 #define LANGUAGE_SPANISH_DATED              LanguageType(0x040A)  /* old collation, not supported, see #i94435# */
378 #define LANGUAGE_SPANISH_ARGENTINA          LanguageType(0x2C0A)
379 #define LANGUAGE_SPANISH_BOLIVIA            LanguageType(0x400A)
380 #define LANGUAGE_SPANISH_CHILE              LanguageType(0x340A)
381 #define LANGUAGE_SPANISH_COLOMBIA           LanguageType(0x240A)
382 #define LANGUAGE_SPANISH_COSTARICA          LanguageType(0x140A)
383 #define LANGUAGE_SPANISH_CUBA               LanguageType(0x5C0A)
384 #define LANGUAGE_SPANISH_DOMINICAN_REPUBLIC LanguageType(0x1C0A)
385 #define LANGUAGE_SPANISH_ECUADOR            LanguageType(0x300A)
386 #define LANGUAGE_SPANISH_EL_SALVADOR        LanguageType(0x440A)
387 #define LANGUAGE_SPANISH_GUATEMALA          LanguageType(0x100A)
388 #define LANGUAGE_SPANISH_HONDURAS           LanguageType(0x480A)
389 #define LANGUAGE_SPANISH_LATIN_AMERICA      LanguageType(0xE40A)  /* no locale possible */
390 #define LANGUAGE_SPANISH_MEXICAN            LanguageType(0x080A)
391 #define LANGUAGE_SPANISH_MODERN             LanguageType(0x0C0A)
392 #define LANGUAGE_SPANISH_NICARAGUA          LanguageType(0x4C0A)
393 #define LANGUAGE_SPANISH_PANAMA             LanguageType(0x180A)
394 #define LANGUAGE_SPANISH_PARAGUAY           LanguageType(0x3C0A)
395 #define LANGUAGE_SPANISH_PERU               LanguageType(0x280A)
396 #define LANGUAGE_SPANISH_PUERTO_RICO        LanguageType(0x500A)
397 #define LANGUAGE_SPANISH_UNITED_STATES      LanguageType(0x540A)
398 #define LANGUAGE_SPANISH_URUGUAY            LanguageType(0x380A)
399 #define LANGUAGE_SPANISH_VENEZUELA          LanguageType(0x200A)
400 #define LANGUAGE_SPANISH                    LANGUAGE_SPANISH_MODERN     /* modern collation, see #i94435# */
401 #define LANGUAGE_SWAHILI                    LanguageType(0x0441)  /* Kenya */
402 #define LANGUAGE_SWEDISH                    LanguageType(0x041D)
403 #define LANGUAGE_SWEDISH_FINLAND            LanguageType(0x081D)
404 #define LANGUAGE_SYRIAC                     LanguageType(0x045A)
405 #define LANGUAGE_TAI_NUA_CHINA              LanguageType(0x048F)
406 #define LANGUAGE_TAJIK                      LanguageType(0x0428)
407 #define LANGUAGE_TAJIK_LSO                  LanguageType(0x7C28)
408 #define LANGUAGE_TAMAZIGHT_ARABIC_MOROCCO   LanguageType(0x045F)
409 #define LANGUAGE_TAMAZIGHT_LATIN_ALGERIA    LanguageType(0x085F)
410 #define LANGUAGE_TAMAZIGHT_LATIN_LSO        LanguageType(0x7C5F)
411 #define LANGUAGE_TAMAZIGHT_MOROCCO          LanguageType(0x0C5F)
412 #define LANGUAGE_TAMAZIGHT_TIFINAGH_MOROCCO LanguageType(0x105F)
413 #define LANGUAGE_TAMAZIGHT_TIFINAGH_LSO     LanguageType(0x785F)
414 #define LANGUAGE_TAMIL                      LanguageType(0x0449)
415 #define LANGUAGE_TAMIL_SRI_LANKA            LanguageType(0x0849)
416 #define LANGUAGE_TATAR                      LanguageType(0x0444)
417 #define LANGUAGE_TELUGU                     LanguageType(0x044A)
418 #define LANGUAGE_THAI                       LanguageType(0x041E)
419 #define LANGUAGE_TIBETAN                    LanguageType(0x0451)
420 #define LANGUAGE_TIBETAN_BHUTAN             LanguageType(0x0851)  /* was used as Dzongkha, a MS error, see #i53497# */
421 #define LANGUAGE_DZONGKHA_BHUTAN            LanguageType(0x0C51)  /* they finally got it ... ([MS-LCID] rev. 7.0 2015-06-30) */
422 #define LANGUAGE_TIGRIGNA_ERITREA           LanguageType(0x0873)
423 #define LANGUAGE_TIGRIGNA_ETHIOPIA          LanguageType(0x0473)
424 #define LANGUAGE_TSONGA                     LanguageType(0x0431)
425 #define LANGUAGE_TSWANA                     LanguageType(0x0432)  /* AKA Setsuana, for South Africa */
426 #define LANGUAGE_TSWANA_BOTSWANA            LanguageType(0x0832)  /* obsoletes LANGUAGE_USER_TSWANA_BOTSWANA 0x8032 */
427 #define LANGUAGE_TURKISH                    LanguageType(0x041F)
428 #define LANGUAGE_TURKMEN                    LanguageType(0x0442)
429 #define LANGUAGE_UIGHUR_CHINA               LanguageType(0x0480)
430 #define LANGUAGE_UKRAINIAN                  LanguageType(0x0422)
431 #define LANGUAGE_URDU_INDIA                 LanguageType(0x0820)
432 #define LANGUAGE_URDU_PAKISTAN              LanguageType(0x0420)
433 #define LANGUAGE_UZBEK_CYRILLIC             LanguageType(0x0843)
434 #define LANGUAGE_UZBEK_CYRILLIC_LSO         LanguageType(0x7843)
435 #define LANGUAGE_UZBEK_LATIN                LanguageType(0x0443)
436 #define LANGUAGE_UZBEK_LATIN_LSO            LanguageType(0x7C43)
437 #define LANGUAGE_VENDA                      LanguageType(0x0433)
438 #define LANGUAGE_VIETNAMESE                 LanguageType(0x042A)
439 #define LANGUAGE_WELSH                      LanguageType(0x0452)
440 #define LANGUAGE_WOLOF_SENEGAL              LanguageType(0x0488)
441 #define LANGUAGE_XHOSA                      LanguageType(0x0434)  /* AKA isiZhosa */
442 #define LANGUAGE_YAKUT_RUSSIA               LanguageType(0x0485)
443 #define LANGUAGE_YI                         LanguageType(0x0478)  /* Sichuan Yi */
444 #define LANGUAGE_YIDDISH                    LanguageType(0x043D)
445 #define LANGUAGE_YORUBA                     LanguageType(0x046A)
446 #define LANGUAGE_YUE_CHINESE_HONGKONG       LanguageType(0x048E)
447 #define LANGUAGE_ZULU                       LanguageType(0x0435)
448 
449 #define LANGUAGE_qps_ploc                   LanguageType(0x0501)  /* 'qps-ploc', qps is a reserved for local use code */
450 #define LANGUAGE_qps_ploca                  LanguageType(0x05FE)  /* 'qps-ploca', qps is a reserved for local use code */
451 #define LANGUAGE_qps_plocm                  LanguageType(0x09FF)  /* 'qps-plocm', qps is a reserved for local use code */
452 
453 #define LANGUAGE_ar_Ploc_SA_reserved        LanguageType(0x4401)  /* 'ar-Ploc-SA', 'Ploc'?? */
454 #define LANGUAGE_ja_Ploc_JP_reserved        LanguageType(0x0811)  /* 'ja-Ploc-JP', 'Ploc'?? */
455 #define LANGUAGE_pap_029_reserved           LanguageType(0x0479)  /* 'pap-029' */
456 #define LANGUAGE_ar_145_reserved            LanguageType(0x4801)  /* 'ar-145' */
457 #define LANGUAGE_es_419                     LanguageType(0x580A)  /* 'es-419', not reserved, used? */
458 
459 /* Seems these values were used or reserved at one point of time ... */
460 #define LANGUAGE_Neither_defined_nor_reserved_0x007B LanguageType(0x007B)
461 #define LANGUAGE_Neither_defined_nor_reserved_0x007D LanguageType(0x007D)
462 #define LANGUAGE_Neither_defined_nor_reserved_0x0089 LanguageType(0x0089)
463 #define LANGUAGE_Neither_defined_nor_reserved_0x008A LanguageType(0x008A)
464 #define LANGUAGE_Neither_defined_nor_reserved_0x008B LanguageType(0x008B)
465 #define LANGUAGE_Neither_defined_nor_reserved_0x008D LanguageType(0x008D)
466 #define LANGUAGE_Neither_defined_nor_reserved_0x008E LanguageType(0x008E)
467 #define LANGUAGE_Neither_defined_nor_reserved_0x008F LanguageType(0x008F)
468 #define LANGUAGE_Neither_defined_nor_reserved_0x0090 LanguageType(0x0090)
469 #define LANGUAGE_Neither_defined_nor_reserved_0x0827 LanguageType(0x0827)
470 #define LANGUAGE_Neither_defined_nor_reserved_0x1C0C LanguageType(0x1C0C)
471 #define LANGUAGE_Neither_defined_nor_reserved_0x2008 LanguageType(0x2008)
472 
473 /* MS defines these as reserved, whatever that might imply... */
474 #define LANGUAGE_reserved_0xEEEE            LanguageType(0xEEEE)  /* primary 0x2ee, sub 0x3b */
475 #define LANGUAGE_reserved_0xF2EE            LanguageType(0xF2EE)  /* primary 0x2ee, sub 0x3c */
476 
477 /*! use only for import/export of MS documents, number formatter maps it to
478  *! LANGUAGE_SYSTEM and then to effective system language */
479 #define LANGUAGE_SYSTEM_DEFAULT             LanguageType(0x0800)
480 
481 /*! use only for import/export of MS documents, number formatter maps it to
482  *! LANGUAGE_SYSTEM and then to effective system language */
483 #define LANGUAGE_PROCESS_OR_USER_DEFAULT    LanguageType(0x0400)
484 
485 /* Number format code modifier attribute for system time.
486  * Primary language 0x000, sublanguage 0x3D. */
487 #define LANGUAGE_NF_SYSTEM_TIME             LanguageType(0xF400)
488 
489 /* Number format code modifier attribute for system date.
490  * Primary language 0x000, sublanguage 0x3E. */
491 #define LANGUAGE_NF_SYSTEM_DATE             LanguageType(0xF800)
492 
493 
494 /* And now the extensions we define,
495  * with primary language IDs from 0x200 to 0x3FF valid in blocks from
496  *
497  * 0x0610 to 0x07FF with sublanguage ID 0x01 (default)
498  * 0x0A00 to 0x0BFF with sublanguage ID 0x02
499  * ...
500  * 0x8200 to 0x83FF with sublanguage ID 0x20
501  * 0x8600 to 0x87FF with sublanguage ID 0x21
502  * ...
503  * 0xFA00 to 0xFBFF with sublanguage ID 0x3E
504  * 0xFE00 to 0xFFFF with sublanguage ID 0x3F
505  *
506  * Of which we define reserved blocks:
507  * All primary language IDs 0x3E0 to 0x3FE with any sublanguage ID, not to be
508  * assigned as user-defined IDs:
509  *
510  * 0x07E0 to 0x07FE with sublanguage ID 0x01, first on-the-fly block
511  * 0x0BE0 to 0x0BFE with sublanguage ID 0x02, second on-the-fly block
512  * ...
513  * 0x83E0 to 0x83FE with sublanguage ID 0x20
514  * 0x87E0 to 0x87FE with sublanguage ID 0x21
515  * ...
516  * 0xFBE0 to 0xFBFE with sublanguage ID 0x3E, last on-the-fly block
517  * 0xFFE0 to 0xFFFE with sublanguage ID 0x3F, 32 privateuse and specials
518  *
519  * This leaves room for 479 user-defined primary language IDs (instead of 512)
520  * with primary bitmask comparability, and 1922 on-the-fly IDs (instead of 0)
521  * with arbitrary assignment ((0x3E - 0x01 + 1) * (0x3FE - 0x3E0 + 1)).
522  *
523  * The primary ID 0x3FF is reserved and unassigned as it is the same as the
524  * LANGUAGE_MASK_PRIMARY and LANGUAGE_DONTKNOW value, so to not be mistaken as
525  * such.
526  *
527  * Obsolete OOo user defines now have other values assigned by MS, and
528  * different name. Mapping an obsolete value to ISO code should work provided
529  * that such a mapping exists in i18nlangtag/source/isolang/isolang.cxx, but
530  * mapping ISO back to LANGID will return the new value.
531  */
532 #define LANGUAGE_OBSOLETE_USER_LATIN        LanguageType(0x0610)
533 #define LANGUAGE_USER_LATIN                 LANGUAGE_LATIN_LSO
534 #define LANGUAGE_USER_LATIN_VATICAN         LanguageType(0x8076)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_LATIN_LSO)) */
535 #define LANGUAGE_USER_ESPERANTO             LanguageType(0x0611)  /* no locale possible */
536 #define LANGUAGE_USER_INTERLINGUA           LanguageType(0x0612)  /* no locale, but conventions */
537 #define LANGUAGE_OBSOLETE_USER_MAORI        LanguageType(0x0620)
538 #define LANGUAGE_USER_MAORI                 LANGUAGE_MAORI_NEW_ZEALAND
539 #define LANGUAGE_OBSOLETE_USER_KINYARWANDA  LanguageType(0x0621)
540 #define LANGUAGE_USER_KINYARWANDA           LANGUAGE_KINYARWANDA_RWANDA
541 /* was reserved for Northern Sotho but never used: 0x0622 */  /* obsoleted by LANGUAGE_SEPEDI */
542 #define LANGUAGE_OBSOLETE_USER_UPPER_SORBIAN LanguageType(0x0623)
543 #define LANGUAGE_USER_UPPER_SORBIAN         LANGUAGE_UPPER_SORBIAN_GERMANY
544 #define LANGUAGE_OBSOLETE_USER_LOWER_SORBIAN LanguageType(0x0624)
545 #define LANGUAGE_USER_LOWER_SORBIAN         LANGUAGE_LOWER_SORBIAN_GERMANY
546 #define LANGUAGE_OBSOLETE_USER_OCCITAN      LanguageType(0x0625)
547 #define LANGUAGE_USER_OCCITAN               LANGUAGE_OCCITAN_FRANCE /* reserved to languedocian */
548 
549 #define LANGUAGE_USER_KOREAN_NORTH          LanguageType(0x8012)  /* North Korean as opposed to South Korean, makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KOREAN)) */
550 #define LANGUAGE_USER_KURDISH_TURKEY        LanguageType(0x0626)  /* sublang 0x01, Latin script */
551 #define LANGUAGE_USER_KURDISH_SYRIA         LanguageType(0x0A26)  /* sublang 0x02, Latin script */
552 #define LANGUAGE_OBSOLETE_USER_KURDISH_IRAQ LanguageType(0x0E26)  /* sublang 0x03, Arabic script */
553 #define LANGUAGE_USER_KURDISH_IRAQ          LANGUAGE_KURDISH_ARABIC_IRAQ
554 #define LANGUAGE_USER_KURDISH_IRAN          LanguageType(0x1226)  /* sublang 0x04, Arabic script */
555 #define LANGUAGE_USER_KURDISH_SOUTHERN_IRAQ LanguageType(0x8092)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */
556 #define LANGUAGE_USER_KURDISH_SOUTHERN_IRAN LanguageType(0x8492)  /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_KURDISH_ARABIC_LSO)) */
557 #define LANGUAGE_USER_SARDINIAN             LanguageType(0x0627)
558 /* was reserved for Dzongkha but turned down with #i53497#: 0x0628 */  /* obsoleted by LANGUAGE_DZONGKHA_BHUTAN */
559 #define LANGUAGE_USER_DZONGKHA_MAP_LONLY    LanguageType(0xF851)  /* to map "dz" only, because of the MS error, and preserve CTL information, sub 0x3e */
560 #define LANGUAGE_USER_SWAHILI_TANZANIA      LanguageType(0x8041)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SWAHILI)) */
561 #define LANGUAGE_OBSOLETE_USER_BRETON       LanguageType(0x0629)
562 #define LANGUAGE_USER_BRETON                LANGUAGE_BRETON_FRANCE
563 #define LANGUAGE_OBSOLETE_USER_KALAALLISUT  LanguageType(0x062A)
564 #define LANGUAGE_USER_KALAALLISUT           LANGUAGE_KALAALLISUT_GREENLAND
565 #define LANGUAGE_USER_SWAZI                 LanguageType(0x062B)
566 #define LANGUAGE_USER_NDEBELE_SOUTH         LanguageType(0x062C)
567 #define LANGUAGE_OBSOLETE_USER_TSWANA_BOTSWANA LanguageType(0x8032)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TSWANA)) */
568 #define LANGUAGE_USER_TSWANA_BOTSWANA       LANGUAGE_TSWANA_BOTSWANA
569 #define LANGUAGE_USER_MOORE                 LanguageType(0x062D)
570 #define LANGUAGE_USER_BAMBARA               LanguageType(0x062E)
571 #define LANGUAGE_USER_AKAN                  LanguageType(0x062F)
572 #define LANGUAGE_OBSOLETE_USER_LUXEMBOURGISH LanguageType(0x0630)
573 #define LANGUAGE_USER_LUXEMBOURGISH         LANGUAGE_LUXEMBOURGISH_LUXEMBOURG
574 #define LANGUAGE_USER_FRIULIAN              LanguageType(0x0631)
575 #define LANGUAGE_USER_FIJIAN                LanguageType(0x0632)
576 #define LANGUAGE_USER_AFRIKAANS_NAMIBIA     LanguageType(0x8036)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_AFRIKAANS)) */
577 #define LANGUAGE_USER_ENGLISH_NAMIBIA       LanguageType(0x8009)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */
578 #define LANGUAGE_USER_WALLOON               LanguageType(0x0633)
579 #define LANGUAGE_USER_COPTIC                LanguageType(0x0634)
580 #define LANGUAGE_USER_CHUVASH               LanguageType(0x0635)
581 #define LANGUAGE_USER_GASCON                LanguageType(0x0636)  /* Gascon France */
582 #define LANGUAGE_USER_GERMAN_BELGIUM        LanguageType(0x8007)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_GERMAN)) */
583 #define LANGUAGE_OBSOLETE_USER_CATALAN_VALENCIAN    LanguageType(0x8003)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_CATALAN)) */
584 #define LANGUAGE_USER_CATALAN_VALENCIAN     LANGUAGE_CATALAN_VALENCIAN
585 #define LANGUAGE_USER_HAUSA_GHANA           LanguageType(0x8068)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HAUSA_NIGERIA)) */
586 #define LANGUAGE_USER_EWE_GHANA             LanguageType(0x0637)
587 #define LANGUAGE_USER_ENGLISH_GHANA         LanguageType(0x8409)  /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ENGLISH_US)) */
588 #define LANGUAGE_USER_TAGALOG               LanguageType(0x0638)
589 #define LANGUAGE_USER_LINGALA_DRCONGO       LanguageType(0x0639)
590 #define LANGUAGE_USER_SANGO                 LanguageType(0x063A)
591 #define LANGUAGE_USER_GANDA                 LanguageType(0x063B)
592 #define LANGUAGE_USER_LOW_GERMAN            LanguageType(0x063C)
593 #define LANGUAGE_USER_HILIGAYNON            LanguageType(0x063D)
594 #define LANGUAGE_USER_NYANJA                LanguageType(0x063E)
595 #define LANGUAGE_USER_KASHUBIAN             LanguageType(0x063F)
596 #define LANGUAGE_OBSOLETE_USER_SPANISH_CUBA LanguageType(0x800A)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SPANISH)) */
597 #define LANGUAGE_USER_SPANISH_CUBA          LANGUAGE_SPANISH_CUBA
598 #define LANGUAGE_USER_TETUN                 LanguageType(0x0640)
599 #define LANGUAGE_USER_QUECHUA_NORTH_BOLIVIA LanguageType(0x0641)
600 #define LANGUAGE_USER_QUECHUA_SOUTH_BOLIVIA LanguageType(0x0642)
601 #define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_SERBIA      LanguageType(0x8C1A)  /* makeLangID( 0x20+0x03, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */
602 #define LANGUAGE_USER_SERBIAN_CYRILLIC_SERBIA               LANGUAGE_SERBIAN_CYRILLIC_SERBIA
603 #define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_SERBIA         LanguageType(0x881A)  /* makeLangID( 0x20+0x02, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */
604 #define LANGUAGE_USER_SERBIAN_LATIN_SERBIA                  LANGUAGE_SERBIAN_LATIN_SERBIA
605 #define LANGUAGE_OBSOLETE_USER_SERBIAN_CYRILLIC_MONTENEGRO  LanguageType(0xCC1A)  /* makeLangID( 0x20+0x13, getPrimaryLanguage( LANGUAGE_SERBIAN_CYRILLIC_LSO)) */
606 #define LANGUAGE_USER_SERBIAN_CYRILLIC_MONTENEGRO           LANGUAGE_SERBIAN_CYRILLIC_MONTENEGRO
607 #define LANGUAGE_OBSOLETE_USER_SERBIAN_LATIN_MONTENEGRO     LanguageType(0xC81A)  /* makeLangID( 0x20+0x12, getPrimaryLanguage( LANGUAGE_SERBIAN_LATIN_LSO)) */
608 #define LANGUAGE_USER_SERBIAN_LATIN_MONTENEGRO              LANGUAGE_SERBIAN_LATIN_MONTENEGRO
609 #define LANGUAGE_USER_SAMI_KILDIN_RUSSIA    LanguageType(0x803B)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */
610 #define LANGUAGE_USER_BODO_INDIA            LanguageType(0x0643)
611 #define LANGUAGE_USER_DOGRI_INDIA           LanguageType(0x0644)
612 #define LANGUAGE_USER_MAITHILI_INDIA        LanguageType(0x0645)
613 #define LANGUAGE_USER_SANTALI_INDIA         LanguageType(0x0646)
614 #define LANGUAGE_USER_TETUN_TIMOR_LESTE     LanguageType(0x0A40)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_TETUN)) */
615 #define LANGUAGE_USER_TOK_PISIN             LanguageType(0x0647)
616 #define LANGUAGE_USER_SHUSWAP               LanguageType(0x0648)
617 #define LANGUAGE_USER_ARABIC_CHAD           LanguageType(0x8001)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
618 #define LANGUAGE_USER_ARABIC_COMOROS        LanguageType(0x8401)  /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
619 #define LANGUAGE_USER_ARABIC_DJIBOUTI       LanguageType(0x8801)  /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
620 #define LANGUAGE_USER_ARABIC_ERITREA        LanguageType(0x8C01)  /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
621 #define LANGUAGE_USER_ARABIC_ISRAEL         LanguageType(0x9001)  /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
622 #define LANGUAGE_USER_ARABIC_MAURITANIA     LanguageType(0x9401)  /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
623 #define LANGUAGE_USER_ARABIC_PALESTINE      LanguageType(0x9801)  /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
624 #define LANGUAGE_USER_ARABIC_SOMALIA        LanguageType(0x9C01)  /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
625 #define LANGUAGE_USER_ARABIC_SUDAN          LanguageType(0xA001)  /* makeLangID( 0x28, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
626 #define LANGUAGE_USER_ANCIENT_GREEK         LanguageType(0x0649)
627 #define LANGUAGE_USER_ASTURIAN              LanguageType(0x064A)
628 #define LANGUAGE_USER_LATGALIAN             LanguageType(0x064B)
629 #define LANGUAGE_USER_MAORE                 LanguageType(0x064C)
630 #define LANGUAGE_USER_BUSHI                 LanguageType(0x064D)
631 #define LANGUAGE_USER_TAHITIAN              LanguageType(0x064E)
632 #define LANGUAGE_OBSOLETE_USER_MALAGASY_PLATEAU LanguageType(0x064F)
633 #define LANGUAGE_USER_PAPIAMENTU_ARUBA      LanguageType(0x8079)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
634 #define LANGUAGE_USER_SARDINIAN_CAMPIDANESE LanguageType(0x0650)
635 #define LANGUAGE_USER_SARDINIAN_GALLURESE   LanguageType(0x0651)
636 #define LANGUAGE_USER_SARDINIAN_LOGUDORESE  LanguageType(0x0652)
637 #define LANGUAGE_USER_SARDINIAN_SASSARESE   LanguageType(0x0653)
638 #define LANGUAGE_USER_BAFIA                 LanguageType(0x0654)
639 #define LANGUAGE_USER_GIKUYU                LanguageType(0x0655)
640 #define LANGUAGE_USER_RUSYN_UKRAINE         LanguageType(0x0656)
641 #define LANGUAGE_USER_RUSYN_SLOVAKIA        LanguageType(0x8256)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_RUSYN_UKRAINE)) */
642 #define LANGUAGE_USER_YIDDISH_US            LanguageType(0x803D)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_YIDDISH)) */
643 #define LANGUAGE_USER_LIMBU                 LanguageType(0x0657)
644 #define LANGUAGE_USER_LOJBAN                LanguageType(0x0658)  /* no locale */
645 #define LANGUAGE_OBSOLETE_USER_KABYLE       LanguageType(0x0659)
646 #define LANGUAGE_USER_KABYLE                LANGUAGE_TAMAZIGHT_LATIN_ALGERIA
647 #define LANGUAGE_USER_HAITIAN               LanguageType(0x065A)
648 #define LANGUAGE_USER_BEEMBE                LanguageType(0x065B)
649 #define LANGUAGE_USER_BEKWEL                LanguageType(0x065C)
650 #define LANGUAGE_USER_KITUBA                LanguageType(0x065D)
651 #define LANGUAGE_USER_LARI                  LanguageType(0x065E)
652 #define LANGUAGE_USER_MBOCHI                LanguageType(0x065F)
653 #define LANGUAGE_USER_TEKE_IBALI            LanguageType(0x0660)
654 #define LANGUAGE_USER_TEKE_TYEE             LanguageType(0x0661)
655 #define LANGUAGE_USER_VILI                  LanguageType(0x0662)
656 #define LANGUAGE_USER_PORTUGUESE_ANGOLA     LanguageType(0x8016)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_PORTUGUESE)) */
657 #define LANGUAGE_USER_MANX                  LanguageType(0x0663)
658 #define LANGUAGE_USER_TEKE_EBOO             LanguageType(0x0664)
659 #define LANGUAGE_USER_ARAGONESE             LanguageType(0x0665)
660 #define LANGUAGE_USER_KEYID                 LanguageType(0x0666)  /* key id pseudolanguage */
661 #define LANGUAGE_USER_PALI_LATIN            LanguageType(0x0667)
662 #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 */
663 #define LANGUAGE_USER_KOMI_ZYRIAN           LanguageType(0x0669)
664 #define LANGUAGE_USER_KOMI_PERMYAK          LanguageType(0x066A)
665 #define LANGUAGE_USER_PITJANTJATJARA        LanguageType(0x066B)
666 #define LANGUAGE_USER_ENGLISH_MALAWI        LanguageType(0x8809)  /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
667 #define LANGUAGE_USER_ERZYA                 LanguageType(0x066C)
668 #define LANGUAGE_USER_MARI_MEADOW           LanguageType(0x066D)
669 #define LANGUAGE_USER_KHANTY                LanguageType(0x066E)
670 #define LANGUAGE_USER_LIVONIAN              LanguageType(0x066F)
671 #define LANGUAGE_USER_MOKSHA                LanguageType(0x0670)
672 #define LANGUAGE_USER_MARI_HILL             LanguageType(0x0671)
673 #define LANGUAGE_USER_NGANASAN              LanguageType(0x0672)
674 #define LANGUAGE_USER_OLONETS               LanguageType(0x0673)
675 #define LANGUAGE_USER_VEPS                  LanguageType(0x0674)
676 #define LANGUAGE_USER_VORO                  LanguageType(0x0675)
677 #define LANGUAGE_USER_NENETS                LanguageType(0x0676)
678 #define LANGUAGE_USER_PAPIAMENTU_CURACAO    LanguageType(0x8479)  /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
679 #define LANGUAGE_USER_PAPIAMENTU_BONAIRE    LanguageType(0x8879)  /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_PAPIAMENTU)) */
680 #define LANGUAGE_USER_AKA                   LanguageType(0x0677)
681 #define LANGUAGE_USER_AKA_CONGO             LanguageType(0x8277)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_AKA)) */
682 #define LANGUAGE_USER_DIBOLE                LanguageType(0x0678)
683 #define LANGUAGE_USER_DOONDO                LanguageType(0x0679)
684 #define LANGUAGE_USER_KAAMBA                LanguageType(0x067A)
685 #define LANGUAGE_USER_KOONGO                LanguageType(0x067B)
686 #define LANGUAGE_USER_KOONGO_CONGO          LanguageType(0x827B)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_KOONGO)) */
687 #define LANGUAGE_USER_KUNYI                 LanguageType(0x067C)
688 #define LANGUAGE_USER_NGUNGWEL              LanguageType(0x067D)
689 #define LANGUAGE_USER_NJYEM                 LanguageType(0x067E)
690 #define LANGUAGE_USER_NJYEM_CONGO           LanguageType(0x827E)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_NJYEM)) */
691 #define LANGUAGE_USER_PUNU                  LanguageType(0x067F)
692 #define LANGUAGE_USER_PUNU_CONGO            LanguageType(0x827F)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_PUNU)) */
693 #define LANGUAGE_USER_SUUNDI                LanguageType(0x0680)
694 #define LANGUAGE_USER_TEKE_KUKUYA           LanguageType(0x0681)
695 #define LANGUAGE_USER_TSAANGI               LanguageType(0x0682)
696 #define LANGUAGE_USER_YAKA                  LanguageType(0x0683)
697 #define LANGUAGE_USER_YOMBE                 LanguageType(0x0684)
698 #define LANGUAGE_USER_YOMBE_CONGO           LanguageType(0x8284)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_YOMBE)) */
699 #define LANGUAGE_USER_SIDAMA                LanguageType(0x0685)
700 #define LANGUAGE_USER_NKO                   LanguageType(0x0686)
701 #define LANGUAGE_USER_UDMURT                LanguageType(0x0687)
702 #define LANGUAGE_USER_TIBETAN_INDIA         LanguageType(0x8051)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_TIBETAN)) */
703 #define LANGUAGE_USER_CORNISH               LanguageType(0x0688)
704 #define LANGUAGE_USER_SAMI_PITE_SWEDEN      LanguageType(0x843B)  /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_SAMI_NORTHERN_NORWAY)) */
705 #define LANGUAGE_USER_NGAEBERE              LanguageType(0x0689)
706 #define LANGUAGE_USER_ENGLISH_UK_OED        LanguageType(0x8C09)  /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
707 #define LANGUAGE_USER_KUMYK                 LanguageType(0x068A)
708 #define LANGUAGE_USER_NOGAI                 LanguageType(0x068B)
709 #define LANGUAGE_USER_KARAKALPAK_LATIN      LanguageType(0x068C)
710 #define LANGUAGE_USER_LADIN                 LanguageType(0x068D)
711 #define LANGUAGE_USER_TIBETAN_BHUTAN        LanguageType(0x8451)  /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_TIBETAN)) */
712 #define LANGUAGE_USER_FRENCH_BURKINA_FASO   LanguageType(0x800C)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_FRENCH)) */
713 #define LANGUAGE_USER_PUINAVE               LanguageType(0x068E)
714 #define LANGUAGE_USER_MANINKAKAN_EASTERN_LATIN  LanguageType(0x068F)
715 #define LANGUAGE_USER_AVAR                  LanguageType(0x0690)
716 #define LANGUAGE_USER_CREE_PLAINS_LATIN     LanguageType(0x0691)
717 #define LANGUAGE_USER_CREE_PLAINS_SYLLABICS LanguageType(0x8291)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_USER_CREE_PLAINS_LATIN)) */
718 #define LANGUAGE_USER_LENGO                 LanguageType(0x0692)
719 #define LANGUAGE_USER_FRENCH_BENIN          LanguageType(0x840C)  /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_FRENCH)) */
720 #define LANGUAGE_USER_FRENCH_NIGER          LanguageType(0x880C)  /* makeLangID( 0x22, getPrimaryLanguage( LANGUAGE_FRENCH)) */
721 #define LANGUAGE_USER_FRENCH_TOGO           LanguageType(0x8C0C)  /* makeLangID( 0x23, getPrimaryLanguage( LANGUAGE_FRENCH)) */
722 #define LANGUAGE_USER_KVEN_FINNISH          LanguageType(0x0693)
723 #define LANGUAGE_USER_CHURCH_SLAVIC         LanguageType(0x0694)
724 #define LANGUAGE_USER_VENETIAN              LanguageType(0x0695)
725 #define LANGUAGE_USER_ENGLISH_GAMBIA        LanguageType(0x9009)  /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
726 #define LANGUAGE_USER_OCCITAN_ARANESE       LanguageType(0x8082)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_OCCITAN_FRANCE)) */
727 #define LANGUAGE_USER_ENGLISH_UK_OXENDICT   LanguageType(0x9409)  /* makeLangID( 0x25, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
728 #define LANGUAGE_USER_ARPITAN_FRANCE        LanguageType(0x0696)
729 #define LANGUAGE_USER_ARPITAN_ITALY         LanguageType(0x0A96)  /* makeLangID( 0x02, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */
730 #define LANGUAGE_USER_ARPITAN_SWITZERLAND   LanguageType(0x0E96)  /* makeLangID( 0x03, getPrimaryLanguage( LANGUAGE_USER_ARPITAN_FRANCE)) */
731 #define LANGUAGE_USER_ENGLISH_BOTSWANA      LanguageType(0x9809)  /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
732 #define LANGUAGE_USER_INTERLINGUE           LanguageType(0x0697)  /* no locale */
733 #define LANGUAGE_USER_APATANI               LanguageType(0x0698)
734 #define LANGUAGE_USER_ENGLISH_MAURITIUS     LanguageType(0x9C09)  /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
735 #define LANGUAGE_USER_FRENCH_MAURITIUS      LanguageType(0x900C)  /* makeLangID( 0x24, getPrimaryLanguage( LANGUAGE_FRENCH)) */
736 #define LANGUAGE_USER_SILESIAN              LanguageType(0x0699)
737 #define LANGUAGE_USER_HUNGARIAN_ROVAS       LanguageType(0x800E)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_HUNGARIAN)) */
738 #define LANGUAGE_USER_MANCHU                LanguageType(0x069A)
739 #define LANGUAGE_USER_XIBE                  LanguageType(0x069B)
740 #define LANGUAGE_USER_KITUBA_DRCONGO        LanguageType(0x069C)
741 #define LANGUAGE_USER_FON                   LanguageType(0x069D)
742 #define LANGUAGE_USER_PLAUTDIETSCH          LanguageType(0x069E)
743 #define LANGUAGE_USER_ARMENIAN_RUSSIA       LanguageType(0x802B)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_ARMENIAN)) */
744 #define LANGUAGE_USER_ARMENIAN_IRAN         LanguageType(0x842B)  /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_ARMENIAN)) */
745 #define LANGUAGE_USER_ARMENIAN_WESTERN      LanguageType(0x069F)
746 #define LANGUAGE_USER_ARMENIAN_CLASSICAL    LanguageType(0x06A0)
747 #define LANGUAGE_USER_MALAY_ARABIC_MALAYSIA LanguageType(0x803E)  /* makeLangID( 0x20, getPrimaryLanguage( LANGUAGE_MALAY_MALAYSIA)) */
748 #define LANGUAGE_USER_MALAY_ARABIC_BRUNEI   LanguageType(0x843E)  /* makeLangID( 0x21, getPrimaryLanguage( LANGUAGE_MALAY_BRUNEI_DARUSSALAM)) */
749 #define LANGUAGE_USER_JUHOAN                LanguageType(0x06A1)
750 #define LANGUAGE_USER_NARO                  LanguageType(0x06A2)
751 #define LANGUAGE_USER_ILOKO                 LanguageType(0x06A3)
752 #define LANGUAGE_USER_ENGLISH_ZAMBIA        LanguageType(0xA009)  /* makeLangID( 0x28, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
753 #define LANGUAGE_USER_ENGLISH_SRI_LANKA     LanguageType(0xA409)  /* makeLangID( 0x29, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
754 #define LANGUAGE_USER_ENGLISH_NIGERIA       LanguageType(0xA809)  /* makeLangID( 0x2A, getPrimaryLanguage( LANGUAGE_ENGLISH_UK)) */
755 #define LANGUAGE_USER_KABARDIAN             LanguageType(0x06A4)
756 
757 
758 /* XXX Add new user defined LCIDs ^^^ there.
759  * Note that we run out of IDs with sublanguage ID 0x01 after 0x07DF ... */
760 
761 
762 /* Primary language ID range for on-the-fly assignment. */
763 #define LANGUAGE_ON_THE_FLY_START           LanguageType(0x03E0)
764 #define LANGUAGE_ON_THE_FLY_END             LanguageType(0x03FE)
765 /* Sublanguage ID range for on-the-fly assignment. */
766 #define LANGUAGE_ON_THE_FLY_SUB_START       LanguageType(0x01)
767 #define LANGUAGE_ON_THE_FLY_SUB_END         LanguageType(0x3E)
768 
769 /* 0xFFE0 to 0xFFFF reserved for privateuse and specials. */
770 #define LANGUAGE_USER_PRIV_JOKER            LanguageType(0xFFEB)  /* privateuse "*" (sic! bad! nasty!), primary 0x3eb, sub 0x3f */
771 #define LANGUAGE_USER_PRIV_COMMENT          LanguageType(0xFFEC)  /* privateuse "x-comment", primary 0x3ec, sub 0x3f */
772 #define LANGUAGE_USER_PRIV_DEFAULT          LanguageType(0xFFED)  /* privateuse "x-default", primary 0x3ed, sub 0x3f */
773 #define LANGUAGE_USER_PRIV_NOTRANSLATE      LanguageType(0xFFEE)  /* privateuse "x-no-translate" (sic!), primary 0x3ee, sub 0x3f */
774 #define LANGUAGE_MULTIPLE                   LanguageType(0xFFEF)  /* multiple languages, primary 0x3ef, sub 0x3f */
775 #define LANGUAGE_UNDETERMINED               LanguageType(0xFFF0)  /* undetermined language, primary 0x3f0, sub 0x3f */
776 #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 */
777 
778 
779 #endif /* INCLUDED_I18NLANGTAG_LANG_H */
780 
781 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
782