1#!/usr/bin/env python
2#############################################################################
3##
4## Copyright (C) 2020 The Qt Company Ltd.
5## Contact: https://www.qt.io/licensing/
6##
7## This file is part of the test suite of the Qt Toolkit.
8##
9## $QT_BEGIN_LICENSE:GPL-EXCEPT$
10## Commercial License Usage
11## Licensees holding valid commercial Qt licenses may use this file in
12## accordance with the commercial license agreement provided with the
13## Software or, alternatively, in accordance with the terms contained in
14## a written agreement between you and The Qt Company. For licensing terms
15## and conditions see https://www.qt.io/terms-conditions. For further
16## information use the contact form at https://www.qt.io/contact-us.
17##
18## GNU General Public License Usage
19## Alternatively, this file may be used under the terms of the GNU
20## General Public License version 3 as published by the Free Software
21## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
22## included in the packaging of this file. Please review the following
23## information to ensure the GNU General Public License requirements will
24## be met: https://www.gnu.org/licenses/gpl-3.0.html.
25##
26## $QT_END_LICENSE$
27##
28#############################################################################
29
30# A run of cldr2qlocalexml.py will produce output reporting any
31# language, script and country codes it sees, in data, for which it
32# can find a name (taken always from en.xml) that could potentially be
33# used. There is no point adding a mapping for such a code unless the
34# CLDR's common/main/ contains an XML file for at least one locale
35# that exerciss it.
36
37# Each *_list reflects the current values of its enums in qlocale.h;
38# if new xml language files are available in CLDR, these languages and
39# countries need to be *appended* to this list (for compatibility
40# between versions).  Include any spaces present in names (scripts
41# shall squish them out for the enum entries) in *_list, but use the
42# squished forms of names in the *_aliases mappings.
43
44### Qt 6: restore alphabetic order in each list.
45
46language_list = {
47      0: ["AnyLanguage",                 "  "],
48      1: ["C",                           "  "],
49      2: ["Abkhazian",                   "ab"],
50      3: ["Oromo",                       "om"], # macrolanguage
51      4: ["Afar",                        "aa"],
52      5: ["Afrikaans",                   "af"],
53      6: ["Albanian",                    "sq"], # macrolanguage
54      7: ["Amharic",                     "am"],
55      8: ["Arabic",                      "ar"], # macrolanguage
56      9: ["Armenian",                    "hy"],
57     10: ["Assamese",                    "as"],
58     11: ["Aymara",                      "ay"], # macrolanguage
59     12: ["Azerbaijani",                 "az"], # macrolanguage
60     13: ["Bashkir",                     "ba"],
61     14: ["Basque",                      "eu"],
62     15: ["Bengali",                     "bn"],
63     16: ["Dzongkha",                    "dz"],
64     17: ["Bihari",                      "bh"],
65     18: ["Bislama",                     "bi"],
66     19: ["Breton",                      "br"],
67     20: ["Bulgarian",                   "bg"],
68     21: ["Burmese",                     "my"],
69     22: ["Belarusian",                  "be"],
70     23: ["Khmer",                       "km"],
71     24: ["Catalan",                     "ca"],
72     25: ["Chinese",                     "zh"], # macrolanguage
73     26: ["Corsican",                    "co"],
74     27: ["Croatian",                    "hr"],
75     28: ["Czech",                       "cs"],
76     29: ["Danish",                      "da"],
77     30: ["Dutch",                       "nl"],
78     31: ["English",                     "en"],
79     32: ["Esperanto",                   "eo"],
80     33: ["Estonian",                    "et"], # macrolanguage
81     34: ["Faroese",                     "fo"],
82     35: ["Fijian",                      "fj"],
83     36: ["Finnish",                     "fi"],
84     37: ["French",                      "fr"],
85     38: ["Western Frisian",             "fy"],
86     39: ["Gaelic",                      "gd"],
87     40: ["Galician",                    "gl"],
88     41: ["Georgian",                    "ka"],
89     42: ["German",                      "de"],
90     43: ["Greek",                       "el"],
91     44: ["Greenlandic",                 "kl"],
92     45: ["Guarani",                     "gn"], # macrolanguage
93     46: ["Gujarati",                    "gu"],
94     47: ["Hausa",                       "ha"],
95     48: ["Hebrew",                      "he"],
96     49: ["Hindi",                       "hi"],
97     50: ["Hungarian",                   "hu"],
98     51: ["Icelandic",                   "is"],
99     52: ["Indonesian",                  "id"],
100     53: ["Interlingua",                 "ia"],
101     54: ["Interlingue",                 "ie"],
102     55: ["Inuktitut",                   "iu"], # macrolanguage
103     56: ["Inupiak",                     "ik"], # macrolanguage
104     57: ["Irish",                       "ga"],
105     58: ["Italian",                     "it"],
106     59: ["Japanese",                    "ja"],
107     60: ["Javanese",                    "jv"],
108     61: ["Kannada",                     "kn"],
109     62: ["Kashmiri",                    "ks"],
110     63: ["Kazakh",                      "kk"],
111     64: ["Kinyarwanda",                 "rw"],
112     65: ["Kirghiz",                     "ky"],
113     66: ["Korean",                      "ko"],
114     67: ["Kurdish",                     "ku"], # macrolanguage
115     68: ["Rundi",                       "rn"],
116     69: ["Lao",                         "lo"],
117     70: ["Latin",                       "la"],
118     71: ["Latvian",                     "lv"], # macrolanguage
119     72: ["Lingala",                     "ln"],
120     73: ["Lithuanian",                  "lt"],
121     74: ["Macedonian",                  "mk"],
122     75: ["Malagasy",                    "mg"], # macrolanguage
123     76: ["Malay",                       "ms"], # macrolanguage
124     77: ["Malayalam",                   "ml"],
125     78: ["Maltese",                     "mt"],
126     79: ["Maori",                       "mi"],
127     80: ["Marathi",                     "mr"],
128     81: ["Marshallese",                 "mh"],
129     82: ["Mongolian",                   "mn"], # macrolanguage
130     83: ["Nauru",                       "na"],
131     84: ["Nepali",                      "ne"], # macrolanguage
132     85: ["Norwegian Bokmal",            "nb"],
133     86: ["Occitan",                     "oc"],
134     87: ["Oriya",                       "or"], # macrolanguage
135     88: ["Pashto",                      "ps"], # macrolanguage
136     89: ["Persian",                     "fa"], # macrolanguage
137     90: ["Polish",                      "pl"],
138     91: ["Portuguese",                  "pt"],
139     92: ["Punjabi",                     "pa"],
140     93: ["Quechua",                     "qu"], # macrolanguage
141     94: ["Romansh",                     "rm"],
142     95: ["Romanian",                    "ro"],
143     96: ["Russian",                     "ru"],
144     97: ["Samoan",                      "sm"],
145     98: ["Sango",                       "sg"],
146     99: ["Sanskrit",                    "sa"],
147    100: ["Serbian",                     "sr"],
148    101: ["Ossetic",                     "os"],
149    102: ["Southern Sotho",              "st"],
150    103: ["Tswana",                      "tn"],
151    104: ["Shona",                       "sn"],
152    105: ["Sindhi",                      "sd"],
153    106: ["Sinhala",                     "si"],
154    107: ["Swati",                       "ss"],
155    108: ["Slovak",                      "sk"],
156    109: ["Slovenian",                   "sl"],
157    110: ["Somali",                      "so"],
158    111: ["Spanish",                     "es"],
159    112: ["Sundanese",                   "su"],
160    113: ["Swahili",                     "sw"], # macrolanguage
161    114: ["Swedish",                     "sv"],
162    115: ["Sardinian",                   "sc"], # macrolanguage
163    116: ["Tajik",                       "tg"],
164    117: ["Tamil",                       "ta"],
165    118: ["Tatar",                       "tt"],
166    119: ["Telugu",                      "te"],
167    120: ["Thai",                        "th"],
168    121: ["Tibetan",                     "bo"],
169    122: ["Tigrinya",                    "ti"],
170    123: ["Tongan",                      "to"],
171    124: ["Tsonga",                      "ts"],
172    125: ["Turkish",                     "tr"],
173    126: ["Turkmen",                     "tk"],
174    127: ["Tahitian",                    "ty"],
175    128: ["Uighur",                      "ug"],
176    129: ["Ukrainian",                   "uk"],
177    130: ["Urdu",                        "ur"],
178    131: ["Uzbek",                       "uz"], # macrolanguage
179    132: ["Vietnamese",                  "vi"],
180    133: ["Volapuk",                     "vo"],
181    134: ["Welsh",                       "cy"],
182    135: ["Wolof",                       "wo"],
183    136: ["Xhosa",                       "xh"],
184    137: ["Yiddish",                     "yi"], # macrolanguage
185    138: ["Yoruba",                      "yo"],
186    139: ["Zhuang",                      "za"], # macrolanguage
187    140: ["Zulu",                        "zu"],
188    141: ["Norwegian Nynorsk",           "nn"],
189    142: ["Bosnian",                     "bs"],
190    143: ["Divehi",                      "dv"],
191    144: ["Manx",                        "gv"],
192    145: ["Cornish",                     "kw"],
193    146: ["Akan",                        "ak"], # macrolanguage
194    147: ["Konkani",                     "kok"],
195    148: ["Ga",                          "gaa"],
196    149: ["Igbo",                        "ig" ],
197    150: ["Kamba",                       "kam"],
198    151: ["Syriac",                      "syr"],
199    152: ["Blin",                        "byn"],
200    153: ["Geez",                        "gez"],
201    154: ["Koro",                        "kfo"],
202    155: ["Sidamo",                      "sid"],
203    156: ["Atsam",                       "cch"],
204    157: ["Tigre",                       "tig"],
205    158: ["Jju",                         "kaj"],
206    159: ["Friulian",                    "fur"],
207    160: ["Venda",                       "ve" ],
208    161: ["Ewe",                         "ee" ],
209    162: ["Walamo",                      "wal"],
210    163: ["Hawaiian",                    "haw"],
211    164: ["Tyap",                        "kcg"],
212    165: ["Nyanja",                      "ny" ],
213    166: ["Filipino",                    "fil"],
214    167: ["Swiss German",                "gsw"],
215    168: ["Sichuan Yi",                  "ii" ],
216    169: ["Kpelle",                      "kpe"],
217    170: ["Low German",                  "nds"],
218    171: ["South Ndebele",               "nr" ],
219    172: ["Northern Sotho",              "nso"],
220    173: ["Northern Sami",               "se" ],
221    174: ["Taroko",                      "trv"],
222    175: ["Gusii",                       "guz"],
223    176: ["Taita",                       "dav"],
224    177: ["Fulah",                       "ff"], # macrolanguage
225    178: ["Kikuyu",                      "ki"],
226    179: ["Samburu",                     "saq"],
227    180: ["Sena",                        "seh"],
228    181: ["North Ndebele",               "nd"],
229    182: ["Rombo",                       "rof"],
230    183: ["Tachelhit",                   "shi"],
231    184: ["Kabyle",                      "kab"],
232    185: ["Nyankole",                    "nyn"],
233    186: ["Bena",                        "bez"],
234    187: ["Vunjo",                       "vun"],
235    188: ["Bambara",                     "bm"],
236    189: ["Embu",                        "ebu"],
237    190: ["Cherokee",                    "chr"],
238    191: ["Morisyen",                    "mfe"],
239    192: ["Makonde",                     "kde"],
240    193: ["Langi",                       "lag"],
241    194: ["Ganda",                       "lg"],
242    195: ["Bemba",                       "bem"],
243    196: ["Kabuverdianu",                "kea"],
244    197: ["Meru",                        "mer"],
245    198: ["Kalenjin",                    "kln"],
246    199: ["Nama",                        "naq"],
247    200: ["Machame",                     "jmc"],
248    201: ["Colognian",                   "ksh"],
249    202: ["Masai",                       "mas"],
250    203: ["Soga",                        "xog"],
251    204: ["Luyia",                       "luy"],
252    205: ["Asu",                         "asa"],
253    206: ["Teso",                        "teo"],
254    207: ["Saho",                        "ssy"],
255    208: ["Koyra Chiini",                "khq"],
256    209: ["Rwa",                         "rwk"],
257    210: ["Luo",                         "luo"],
258    211: ["Chiga",                       "cgg"],
259    212: ["Central Morocco Tamazight",   "tzm"],
260    213: ["Koyraboro Senni",             "ses"],
261    214: ["Shambala",                    "ksb"],
262    215: ["Bodo",                        "brx"],
263    216: ["Avaric",                      "av"],
264    217: ["Chamorro",                    "ch"],
265    218: ["Chechen",                     "ce"],
266    219: ["Church",                      "cu"], # macrolanguage
267    220: ["Chuvash",                     "cv"],
268    221: ["Cree",                        "cr"], # macrolanguage
269    222: ["Haitian",                     "ht"],
270    223: ["Herero",                      "hz"],
271    224: ["Hiri Motu",                   "ho"],
272    225: ["Kanuri",                      "kr"], # macrolanguage
273    226: ["Komi",                        "kv"], # macrolanguage
274    227: ["Kongo",                       "kg"], # macrolanguage
275    228: ["Kwanyama",                    "kj"],
276    229: ["Limburgish",                  "li"],
277    230: ["Luba Katanga",                "lu"],
278    231: ["Luxembourgish",               "lb"],
279    232: ["Navaho",                      "nv"],
280    233: ["Ndonga",                      "ng"],
281    234: ["Ojibwa",                      "oj"], # macrolanguage
282    235: ["Pali",                        "pi"], # macrolanguage
283    236: ["Walloon",                     "wa"],
284    237: ["Aghem",                       "agq"],
285    238: ["Basaa",                       "bas"],
286    239: ["Zarma",                       "dje"],
287    240: ["Duala",                       "dua"],
288    241: ["Jola Fonyi",                  "dyo"],
289    242: ["Ewondo",                      "ewo"],
290    243: ["Bafia",                       "ksf"],
291    244: ["Makhuwa Meetto",              "mgh"],
292    245: ["Mundang",                     "mua"],
293    246: ["Kwasio",                      "nmg"],
294    247: ["Nuer",                        "nus"],
295    248: ["Sakha",                       "sah"],
296    249: ["Sangu",                       "sbp"],
297    250: ["Congo Swahili",               "swc"],
298    251: ["Tasawaq",                     "twq"],
299    252: ["Vai",                         "vai"],
300    253: ["Walser",                      "wae"],
301    254: ["Yangben",                     "yav"],
302    255: ["Avestan",                     "ae"],
303    256: ["Asturian",                    "ast"],
304    257: ["Ngomba",                      "jgo"],
305    258: ["Kako",                        "kkj"],
306    259: ["Meta",                        "mgo"],
307    260: ["Ngiemboon",                   "nnh"],
308    261: ["Aragonese",                   "an"],
309    262: ["Akkadian",                    "akk"],
310    263: ["Ancient Egyptian",            "egy"],
311    264: ["Ancient Greek",               "grc"],
312    265: ["Aramaic",                     "arc"],
313    266: ["Balinese",                    "ban"],
314    267: ["Bamun",                       "bax"],
315    268: ["Batak Toba",                  "bbc"],
316    269: ["Buginese",                    "bug"],
317    270: ["Buhid",                       "bku"],
318    271: ["Carian",                      "xcr"],
319    272: ["Chakma",                      "ccp"],
320    273: ["Classical Mandaic",           "myz"],
321    274: ["Coptic",                      "cop"],
322    275: ["Dogri",                       "doi"], # macrolanguage
323    276: ["Eastern Cham",                "cjm"],
324    277: ["Eastern Kayah",               "eky"],
325    278: ["Etruscan",                    "ett"],
326    279: ["Gothic",                      "got"],
327    280: ["Hanunoo",                     "hnn"],
328    281: ["Ingush",                      "inh"],
329    282: ["Large Flowery Miao",          "hmd"],
330    283: ["Lepcha",                      "lep"],
331    284: ["Limbu",                       "lif"],
332    285: ["Lisu",                        "lis"],
333    286: ["Lu",                          "khb"],
334    287: ["Lycian",                      "xlc"],
335    288: ["Lydian",                      "xld"],
336    289: ["Mandingo",                    "man"], # macrolanguage
337    290: ["Manipuri",                    "mni"],
338    291: ["Meroitic",                    "xmr"],
339    292: ["Northern Thai",               "nod"],
340    293: ["Old Irish",                   "sga"],
341    294: ["Old Norse",                   "non"],
342    295: ["Old Persian",                 "peo"],
343    296: ["Old Turkish",                 "otk"],
344    297: ["Pahlavi",                     "pal"],
345    298: ["Parthian",                    "xpr"],
346    299: ["Phoenician",                  "phn"],
347    300: ["Prakrit Language",            "pra"],
348    301: ["Rejang",                      "rej"],
349    302: ["Sabaean",                     "xsa"],
350    303: ["Samaritan",                   "smp"],
351    304: ["Santali",                     "sat"],
352    305: ["Saurashtra",                  "saz"],
353    306: ["Sora",                        "srb"],
354    307: ["Sylheti",                     "syl"],
355    308: ["Tagbanwa",                    "tbw"],
356    309: ["Tai Dam",                     "blt"],
357    310: ["Tai Nua",                     "tdd"],
358    311: ["Ugaritic",                    "uga"],
359    312: ["Akoose",                      "bss"],
360    313: ["Lakota",                      "lkt"],
361    314: ["Standard Moroccan Tamazight", "zgh"],
362    315: ["Mapuche",                     "arn"],
363    316: ["Central Kurdish",             "ckb"],
364    317: ["Lower Sorbian",               "dsb"],
365    318: ["Upper Sorbian",               "hsb"],
366    319: ["Kenyang",                     "ken"],
367    320: ["Mohawk",                      "moh"],
368    321: ["Nko",                         "nqo"],
369    322: ["Prussian",                    "prg"],
370    323: ["Kiche",                       "quc"],
371    324: ["Southern Sami",               "sma"],
372    325: ["Lule Sami",                   "smj"],
373    326: ["Inari Sami",                  "smn"],
374    327: ["Skolt Sami",                  "sms"],
375    328: ["Warlpiri",                    "wbp"],
376    329: ["Manichaean Middle Persian",   "xmn"],
377    330: ["Mende",                       "men"],
378    331: ["Ancient North Arabian",       "xna"],
379    332: ["Linear A",                    "lab"],
380    333: ["Hmong Njua",                  "hnj"],
381    334: ["Ho",                          "hoc"],
382    335: ["Lezghian",                    "lez"],
383    336: ["Bassa",                       "bsq"],
384    337: ["Mono",                        "mru"],
385    338: ["Tedim Chin",                  "ctd"],
386    339: ["Maithili",                    "mai"],
387    340: ["Ahom",                        "aho"],
388    341: ["American Sign Language",      "ase"],
389    342: ["Ardhamagadhi Prakrit",        "pka"],
390    343: ["Bhojpuri",                    "bho"],
391    344: ["Hieroglyphic Luwian",         "hlu"],
392    345: ["Literary Chinese",            "lzh"],
393    346: ["Mazanderani",                 "mzn"],
394    347: ["Mru",                         "mro"],
395    348: ["Newari",                      "new"],
396    349: ["Northern Luri",               "lrc"],
397    350: ["Palauan",                     "pau"],
398    351: ["Papiamento",                  "pap"],
399    352: ["Saraiki",                     "skr"],
400    353: ["Tokelau",                     "tkl"],
401    354: ["Tok Pisin",                   "tpi"],
402    355: ["Tuvalu",                      "tvl"],
403    356: ["Uncoded Languages",           "mis"],
404    357: ["Cantonese",                   "yue"],
405    358: ["Osage",                       "osa"],
406    359: ["Tangut",                      "txg"],
407    360: ["Ido",                         "io"],
408    361: ["Lojban",                      "jbo"],
409    362: ["Sicilian",                    "scn"],
410    363: ["Southern Kurdish",            "sdh"],
411    364: ["Western Balochi",             "bgn"],
412    365: ["Cebuano",                     "ceb"],
413    366: ["Erzya",                       "myv"],
414    367: ["Chickasaw",                   "cic"],
415    368: ["Muscogee",                    "mus"],
416    369: ["Silesian",                    "szl"],
417    370: ["Nigerian Pidgin",             "pcm"],
418}
419
420language_aliases = {
421    # Legacy - should disappear at some point:
422    'Norwegian': 'NorwegianBokmal',
423    'Moldavian': 'Romanian',
424    'SerboCroatian': 'Serbian',
425    'Tagalog': 'Filipino',
426    'Twi': 'Akan',
427    # Renamings:
428    'Afan': 'Oromo',
429    'Byelorussian': 'Belarusian',
430    'Bhutani': 'Dzongkha',
431    'Cambodian': 'Khmer',
432    'Kurundi': 'Rundi',
433    'RhaetoRomance': 'Romansh',
434    'Chewa': 'Nyanja',
435    'Frisian': 'WesternFrisian',
436    'Uigur': 'Uighur',
437}
438
439country_list = {
440      0: ["AnyCountry",                                   "ZZ"],
441      1: ["Afghanistan",                                  "AF"],
442      2: ["Albania",                                      "AL"],
443      3: ["Algeria",                                      "DZ"],
444      4: ["American Samoa",                               "AS"],
445      5: ["Andorra",                                      "AD"],
446      6: ["Angola",                                       "AO"],
447      7: ["Anguilla",                                     "AI"],
448      8: ["Antarctica",                                   "AQ"],
449      9: ["Antigua And Barbuda",                          "AG"],
450     10: ["Argentina",                                    "AR"],
451     11: ["Armenia",                                      "AM"],
452     12: ["Aruba",                                        "AW"],
453     13: ["Australia",                                    "AU"],
454     14: ["Austria",                                      "AT"],
455     15: ["Azerbaijan",                                   "AZ"],
456     16: ["Bahamas",                                      "BS"],
457     17: ["Bahrain",                                      "BH"],
458     18: ["Bangladesh",                                   "BD"],
459     19: ["Barbados",                                     "BB"],
460     20: ["Belarus",                                      "BY"],
461     21: ["Belgium",                                      "BE"],
462     22: ["Belize",                                       "BZ"],
463     23: ["Benin",                                        "BJ"],
464     24: ["Bermuda",                                      "BM"],
465     25: ["Bhutan",                                       "BT"],
466     26: ["Bolivia",                                      "BO"],
467     27: ["Bosnia And Herzegowina",                       "BA"],
468     28: ["Botswana",                                     "BW"],
469     29: ["Bouvet Island",                                "BV"],
470     30: ["Brazil",                                       "BR"],
471     31: ["British Indian Ocean Territory",               "IO"],
472     32: ["Brunei",                                       "BN"],
473     33: ["Bulgaria",                                     "BG"],
474     34: ["Burkina Faso",                                 "BF"],
475     35: ["Burundi",                                      "BI"],
476     36: ["Cambodia",                                     "KH"],
477     37: ["Cameroon",                                     "CM"],
478     38: ["Canada",                                       "CA"],
479     39: ["Cape Verde",                                   "CV"],
480     40: ["Cayman Islands",                               "KY"],
481     41: ["Central African Republic",                     "CF"],
482     42: ["Chad",                                         "TD"],
483     43: ["Chile",                                        "CL"],
484     44: ["China",                                        "CN"],
485     45: ["Christmas Island",                             "CX"],
486     46: ["Cocos Islands",                                "CC"],
487     47: ["Colombia",                                     "CO"],
488     48: ["Comoros",                                      "KM"],
489     49: ["Congo Kinshasa",                               "CD"],
490     50: ["Congo Brazzaville",                            "CG"],
491     51: ["Cook Islands",                                 "CK"],
492     52: ["Costa Rica",                                   "CR"],
493     53: ["Ivory Coast",                                  "CI"],
494     54: ["Croatia",                                      "HR"],
495     55: ["Cuba",                                         "CU"],
496     56: ["Cyprus",                                       "CY"],
497     57: ["Czech Republic",                               "CZ"],
498     58: ["Denmark",                                      "DK"],
499     59: ["Djibouti",                                     "DJ"],
500     60: ["Dominica",                                     "DM"],
501     61: ["Dominican Republic",                           "DO"],
502     62: ["East Timor",                                   "TL"],
503     63: ["Ecuador",                                      "EC"],
504     64: ["Egypt",                                        "EG"],
505     65: ["El Salvador",                                  "SV"],
506     66: ["Equatorial Guinea",                            "GQ"],
507     67: ["Eritrea",                                      "ER"],
508     68: ["Estonia",                                      "EE"],
509     69: ["Ethiopia",                                     "ET"],
510     70: ["Falkland Islands",                             "FK"],
511     71: ["Faroe Islands",                                "FO"],
512     72: ["Fiji",                                         "FJ"],
513     73: ["Finland",                                      "FI"],
514     74: ["France",                                       "FR"],
515     75: ["Guernsey",                                     "GG"],
516     76: ["French Guiana",                                "GF"],
517     77: ["French Polynesia",                             "PF"],
518     78: ["French Southern Territories",                  "TF"],
519     79: ["Gabon",                                        "GA"],
520     80: ["Gambia",                                       "GM"],
521     81: ["Georgia",                                      "GE"],
522     82: ["Germany",                                      "DE"],
523     83: ["Ghana",                                        "GH"],
524     84: ["Gibraltar",                                    "GI"],
525     85: ["Greece",                                       "GR"],
526     86: ["Greenland",                                    "GL"],
527     87: ["Grenada",                                      "GD"],
528     88: ["Guadeloupe",                                   "GP"],
529     89: ["Guam",                                         "GU"],
530     90: ["Guatemala",                                    "GT"],
531     91: ["Guinea",                                       "GN"],
532     92: ["Guinea Bissau",                                "GW"],
533     93: ["Guyana",                                       "GY"],
534     94: ["Haiti",                                        "HT"],
535     95: ["Heard And McDonald Islands",                   "HM"],
536     96: ["Honduras",                                     "HN"],
537     97: ["Hong Kong",                                    "HK"],
538     98: ["Hungary",                                      "HU"],
539     99: ["Iceland",                                      "IS"],
540    100: ["India",                                        "IN"],
541    101: ["Indonesia",                                    "ID"],
542    102: ["Iran",                                         "IR"],
543    103: ["Iraq",                                         "IQ"],
544    104: ["Ireland",                                      "IE"],
545    105: ["Israel",                                       "IL"],
546    106: ["Italy",                                        "IT"],
547    107: ["Jamaica",                                      "JM"],
548    108: ["Japan",                                        "JP"],
549    109: ["Jordan",                                       "JO"],
550    110: ["Kazakhstan",                                   "KZ"],
551    111: ["Kenya",                                        "KE"],
552    112: ["Kiribati",                                     "KI"],
553    113: ["North Korea",                                  "KP"],
554    114: ["South Korea",                                  "KR"],
555    115: ["Kuwait",                                       "KW"],
556    116: ["Kyrgyzstan",                                   "KG"],
557    117: ["Laos",                                         "LA"],
558    118: ["Latvia",                                       "LV"],
559    119: ["Lebanon",                                      "LB"],
560    120: ["Lesotho",                                      "LS"],
561    121: ["Liberia",                                      "LR"],
562    122: ["Libya",                                        "LY"],
563    123: ["Liechtenstein",                                "LI"],
564    124: ["Lithuania",                                    "LT"],
565    125: ["Luxembourg",                                   "LU"],
566    126: ["Macau",                                        "MO"],
567    127: ["Macedonia",                                    "MK"],
568    128: ["Madagascar",                                   "MG"],
569    129: ["Malawi",                                       "MW"],
570    130: ["Malaysia",                                     "MY"],
571    131: ["Maldives",                                     "MV"],
572    132: ["Mali",                                         "ML"],
573    133: ["Malta",                                        "MT"],
574    134: ["Marshall Islands",                             "MH"],
575    135: ["Martinique",                                   "MQ"],
576    136: ["Mauritania",                                   "MR"],
577    137: ["Mauritius",                                    "MU"],
578    138: ["Mayotte",                                      "YT"],
579    139: ["Mexico",                                       "MX"],
580    140: ["Micronesia",                                   "FM"],
581    141: ["Moldova",                                      "MD"],
582    142: ["Monaco",                                       "MC"],
583    143: ["Mongolia",                                     "MN"],
584    144: ["Montserrat",                                   "MS"],
585    145: ["Morocco",                                      "MA"],
586    146: ["Mozambique",                                   "MZ"],
587    147: ["Myanmar",                                      "MM"],
588    148: ["Namibia",                                      "NA"],
589    149: ["Nauru",                                        "NR"],
590    150: ["Nepal",                                        "NP"],
591    151: ["Netherlands",                                  "NL"],
592    152: ["Cura Sao",                                     "CW"],
593    153: ["New Caledonia",                                "NC"],
594    154: ["New Zealand",                                  "NZ"],
595    155: ["Nicaragua",                                    "NI"],
596    156: ["Niger",                                        "NE"],
597    157: ["Nigeria",                                      "NG"],
598    158: ["Niue",                                         "NU"],
599    159: ["Norfolk Island",                               "NF"],
600    160: ["Northern Mariana Islands",                     "MP"],
601    161: ["Norway",                                       "NO"],
602    162: ["Oman",                                         "OM"],
603    163: ["Pakistan",                                     "PK"],
604    164: ["Palau",                                        "PW"],
605    165: ["Palestinian Territories",                      "PS"],
606    166: ["Panama",                                       "PA"],
607    167: ["Papua New Guinea",                             "PG"],
608    168: ["Paraguay",                                     "PY"],
609    169: ["Peru",                                         "PE"],
610    170: ["Philippines",                                  "PH"],
611    171: ["Pitcairn",                                     "PN"],
612    172: ["Poland",                                       "PL"],
613    173: ["Portugal",                                     "PT"],
614    174: ["Puerto Rico",                                  "PR"],
615    175: ["Qatar",                                        "QA"],
616    176: ["Reunion",                                      "RE"],
617    177: ["Romania",                                      "RO"],
618    178: ["Russia",                                       "RU"],
619    179: ["Rwanda",                                       "RW"],
620    180: ["Saint Kitts And Nevis",                        "KN"],
621    181: ["Saint Lucia",                                  "LC"],
622    182: ["Saint Vincent And The Grenadines",             "VC"],
623    183: ["Samoa",                                        "WS"],
624    184: ["San Marino",                                   "SM"],
625    185: ["Sao Tome And Principe",                        "ST"],
626    186: ["Saudi Arabia",                                 "SA"],
627    187: ["Senegal",                                      "SN"],
628    188: ["Seychelles",                                   "SC"],
629    189: ["Sierra Leone",                                 "SL"],
630    190: ["Singapore",                                    "SG"],
631    191: ["Slovakia",                                     "SK"],
632    192: ["Slovenia",                                     "SI"],
633    193: ["Solomon Islands",                              "SB"],
634    194: ["Somalia",                                      "SO"],
635    195: ["South Africa",                                 "ZA"],
636    196: ["South Georgia And The South Sandwich Islands", "GS"],
637    197: ["Spain",                                        "ES"],
638    198: ["Sri Lanka",                                    "LK"],
639    199: ["Saint Helena",                                 "SH"],
640    200: ["Saint Pierre And Miquelon",                    "PM"],
641    201: ["Sudan",                                        "SD"],
642    202: ["Suriname",                                     "SR"],
643    203: ["Svalbard And Jan Mayen Islands",               "SJ"],
644    204: ["Swaziland",                                    "SZ"],
645    205: ["Sweden",                                       "SE"],
646    206: ["Switzerland",                                  "CH"],
647    207: ["Syria",                                        "SY"],
648    208: ["Taiwan",                                       "TW"],
649    209: ["Tajikistan",                                   "TJ"],
650    210: ["Tanzania",                                     "TZ"],
651    211: ["Thailand",                                     "TH"],
652    212: ["Togo",                                         "TG"],
653    213: ["Tokelau",                                      "TK"],
654    214: ["Tonga",                                        "TO"],
655    215: ["Trinidad And Tobago",                          "TT"],
656    216: ["Tunisia",                                      "TN"],
657    217: ["Turkey",                                       "TR"],
658    218: ["Turkmenistan",                                 "TM"],
659    219: ["Turks And Caicos Islands",                     "TC"],
660    220: ["Tuvalu",                                       "TV"],
661    221: ["Uganda",                                       "UG"],
662    222: ["Ukraine",                                      "UA"],
663    223: ["United Arab Emirates",                         "AE"],
664    224: ["United Kingdom",                               "GB"],
665    225: ["United States",                                "US"],
666    226: ["United States Minor Outlying Islands",         "UM"],
667    227: ["Uruguay",                                      "UY"],
668    228: ["Uzbekistan",                                   "UZ"],
669    229: ["Vanuatu",                                      "VU"],
670    230: ["Vatican City State",                           "VA"],
671    231: ["Venezuela",                                    "VE"],
672    232: ["Vietnam",                                      "VN"],
673    233: ["British Virgin Islands",                       "VG"],
674    234: ["United States Virgin Islands",                 "VI"],
675    235: ["Wallis And Futuna Islands",                    "WF"],
676    236: ["Western Sahara",                               "EH"],
677    237: ["Yemen",                                        "YE"],
678    238: ["Canary Islands",                               "IC"],
679    239: ["Zambia",                                       "ZM"],
680    240: ["Zimbabwe",                                     "ZW"],
681    241: ["Clipperton Island",                            "CP"],
682    242: ["Montenegro",                                   "ME"],
683    243: ["Serbia",                                       "RS"],
684    244: ["Saint Barthelemy",                             "BL"],
685    245: ["Saint Martin",                                 "MF"],
686    246: ["Latin America",                                "419"],
687    247: ["Ascension Island",                             "AC"],
688    248: ["Aland Islands",                                "AX"],
689    249: ["Diego Garcia",                                 "DG"],
690    250: ["Ceuta And Melilla",                            "EA"],
691    251: ["Isle Of Man",                                  "IM"],
692    252: ["Jersey",                                       "JE"],
693    253: ["Tristan Da Cunha",                             "TA"],
694    254: ["South Sudan",                                  "SS"],
695    255: ["Bonaire",                                      "BQ"],
696    256: ["Sint Maarten",                                 "SX"],
697    257: ["Kosovo",                                       "XK"],
698    258: ["European Union",                               "EU"],
699    259: ["Outlying Oceania",                             "QO"],
700    260: ["World",                                        "001"],
701    261: ["Europe",                                       "150"],
702}
703
704country_aliases = {
705    # Deprecated:
706    'Tokelau': 'TokelauCountry',
707    'Tuvalu': 'TuvaluCountry',
708    # Renamings:
709    'DemocraticRepublicOfCongo': 'CongoKinshasa',
710    'PeoplesRepublicOfCongo': 'CongoBrazzaville',
711    'DemocraticRepublicOfKorea': 'NorthKorea',
712    'RepublicOfKorea': 'SouthKorea',
713    'RussianFederation': 'Russia',
714    'SyrianArabRepublic': 'Syria',
715    'LatinAmericaAndTheCaribbean': 'LatinAmerica',
716}
717
718script_list = {
719      0: ["AnyScript",              "Zzzz"],
720      1: ["Arabic",                 "Arab"],
721      2: ["Cyrillic",               "Cyrl"],
722      3: ["Deseret",                "Dsrt"],
723      4: ["Gurmukhi",               "Guru"],
724      5: ["Simplified Han",         "Hans"],
725      6: ["Traditional Han",        "Hant"],
726      7: ["Latin",                  "Latn"],
727      8: ["Mongolian",              "Mong"],
728      9: ["Tifinagh",               "Tfng"],
729     10: ["Armenian",               "Armn"],
730     11: ["Bengali",                "Beng"],
731     12: ["Cherokee",               "Cher"],
732     13: ["Devanagari",             "Deva"],
733     14: ["Ethiopic",               "Ethi"],
734     15: ["Georgian",               "Geor"],
735     16: ["Greek",                  "Grek"],
736     17: ["Gujarati",               "Gujr"],
737     18: ["Hebrew",                 "Hebr"],
738     19: ["Japanese",               "Jpan"],
739     20: ["Khmer",                  "Khmr"],
740     21: ["Kannada",                "Knda"],
741     22: ["Korean",                 "Kore"],
742     23: ["Lao",                    "Laoo"],
743     24: ["Malayalam",              "Mlym"],
744     25: ["Myanmar",                "Mymr"],
745     26: ["Oriya",                  "Orya"],
746     27: ["Tamil",                  "Taml"],
747     28: ["Telugu",                 "Telu"],
748     29: ["Thaana",                 "Thaa"],
749     30: ["Thai",                   "Thai"],
750     31: ["Tibetan",                "Tibt"],
751     32: ["Sinhala",                "Sinh"],
752     33: ["Syriac",                 "Syrc"],
753     34: ["Yi",                     "Yiii"],
754     35: ["Vai",                    "Vaii"],
755     36: ["Avestan",                "Avst"],
756     37: ["Balinese",               "Bali"],
757     38: ["Bamum",                  "Bamu"],
758     39: ["Batak",                  "Batk"],
759     40: ["Bopomofo",               "Bopo"],
760     41: ["Brahmi",                 "Brah"],
761     42: ["Buginese",               "Bugi"],
762     43: ["Buhid",                  "Buhd"],
763     44: ["Canadian Aboriginal",    "Cans"],
764     45: ["Carian",                 "Cari"],
765     46: ["Chakma",                 "Cakm"],
766     47: ["Cham",                   "Cham"],
767     48: ["Coptic",                 "Copt"],
768     49: ["Cypriot",                "Cprt"],
769     50: ["Egyptian Hieroglyphs",   "Egyp"],
770     51: ["Fraser",                 "Lisu"],
771     52: ["Glagolitic",             "Glag"],
772     53: ["Gothic",                 "Goth"],
773     54: ["Han",                    "Hani"],
774     55: ["Hangul",                 "Hang"],
775     56: ["Hanunoo",                "Hano"],
776     57: ["Imperial Aramaic",       "Armi"],
777     58: ["Inscriptional Pahlavi",  "Phli"],
778     59: ["Inscriptional Parthian", "Prti"],
779     60: ["Javanese",               "Java"],
780     61: ["Kaithi",                 "Kthi"],
781     62: ["Katakana",               "Kana"],
782     63: ["Kayah Li",               "Kali"],
783     64: ["Kharoshthi",             "Khar"],
784     65: ["Lanna",                  "Lana"],
785     66: ["Lepcha",                 "Lepc"],
786     67: ["Limbu",                  "Limb"],
787     68: ["Linear B",               "Linb"],
788     69: ["Lycian",                 "Lyci"],
789     70: ["Lydian",                 "Lydi"],
790     71: ["Mandaean",               "Mand"],
791     72: ["Meitei Mayek",           "Mtei"],
792     73: ["Meroitic",               "Mero"],
793     74: ["Meroitic Cursive",       "Merc"],
794     75: ["Nko",                    "Nkoo"],
795     76: ["New Tai Lue",            "Talu"],
796     77: ["Ogham",                  "Ogam"],
797     78: ["Ol Chiki",               "Olck"],
798     79: ["Old Italic",             "Ital"],
799     80: ["Old Persian",            "Xpeo"],
800     81: ["Old South Arabian",      "Sarb"],
801     82: ["Orkhon",                 "Orkh"],
802     83: ["Osmanya",                "Osma"],
803     84: ["Phags Pa",               "Phag"],
804     85: ["Phoenician",             "Phnx"],
805     86: ["Pollard Phonetic",       "Plrd"],
806     87: ["Rejang",                 "Rjng"],
807     88: ["Runic",                  "Runr"],
808     89: ["Samaritan",              "Samr"],
809     90: ["Saurashtra",             "Saur"],
810     91: ["Sharada",                "Shrd"],
811     92: ["Shavian",                "Shaw"],
812     93: ["Sora Sompeng",           "Sora"],
813     94: ["Cuneiform",              "Xsux"],
814     95: ["Sundanese",              "Sund"],
815     96: ["Syloti Nagri",           "Sylo"],
816     97: ["Tagalog",                "Tglg"],
817     98: ["Tagbanwa",               "Tagb"],
818     99: ["Tai Le",                 "Tale"],
819    100: ["Tai Viet",               "Tavt"],
820    101: ["Takri",                  "Takr"],
821    102: ["Ugaritic",               "Ugar"],
822    103: ["Braille",                "Brai"],
823    104: ["Hiragana",               "Hira"],
824    105: ["Caucasian Albanian",     "Aghb"],
825    106: ["Bassa Vah",              "Bass"],
826    107: ["Duployan",               "Dupl"],
827    108: ["Elbasan",                "Elba"],
828    109: ["Grantha",                "Gran"],
829    110: ["Pahawh Hmong",           "Hmng"],
830    111: ["Khojki",                 "Khoj"],
831    112: ["Linear A",               "Lina"],
832    113: ["Mahajani",               "Mahj"],
833    114: ["Manichaean",             "Mani"],
834    115: ["Mende Kikakui",          "Mend"],
835    116: ["Modi",                   "Modi"],
836    117: ["Mro",                    "Mroo"],
837    118: ["Old North Arabian",      "Narb"],
838    119: ["Nabataean",              "Nbat"],
839    120: ["Palmyrene",              "Palm"],
840    121: ["Pau Cin Hau",            "Pauc"],
841    122: ["Old Permic",             "Perm"],
842    123: ["Psalter Pahlavi",        "Phlp"],
843    124: ["Siddham",                "Sidd"],
844    125: ["Khudawadi",              "Sind"],
845    126: ["Tirhuta",                "Tirh"],
846    127: ["Varang Kshiti",          "Wara"],
847    128: ["Ahom",                   "Ahom"],
848    129: ["Anatolian Hieroglyphs",  "Hluw"],
849    130: ["Hatran",                 "Hatr"],
850    131: ["Multani",                "Mult"],
851    132: ["Old Hungarian",          "Hung"],
852    133: ["Sign Writing",           "Sgnw"],
853    134: ["Adlam",                  "Adlm"],
854    135: ["Bhaiksuki",              "Bhks"],
855    136: ["Marchen",                "Marc"],
856    137: ["Newa",                   "Newa"],
857    138: ["Osage",                  "Osge"],
858    139: ["Tangut",                 "Tang"],
859    140: ["Han with Bopomofo",      "Hanb"],
860    141: ["Jamo",                   "Jamo"],
861}
862
863script_aliases = {
864    # Renamings:
865    'SimplifiedChineseScript': 'SimplifiedHanScript',
866    'TraditionalChineseScript': 'TraditionalHanScript',
867}
868
869def countryCodeToId(code):
870    if not code:
871        return 0
872    for country_id in country_list:
873        if country_list[country_id][1] == code:
874            return country_id
875    return -1
876
877def languageCodeToId(code):
878    if not code:
879        return 0
880    for language_id in language_list:
881        if language_list[language_id][1] == code:
882            return language_id
883    return -1
884
885def scriptCodeToId(code):
886    if not code:
887        return 0
888    for script_id in script_list:
889        if script_list[script_id][1] == code:
890            return script_id
891    return -1
892