tags: update to latest iso-code and support more languages
authorMathieu Duponchelle <mathieu@centricular.com>
Tue, 11 Aug 2020 20:54:50 +0000 (22:54 +0200)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 12 Aug 2020 17:59:58 +0000 (17:59 +0000)
Some languages have an ISO 639-2 representation but no 639-1
representation, for example where "eng" has a two-letter
equivalent in "en", "enm" doesn't have one.

Discarding those languages from our static table caused functions
such as gst_tag_get_language_code_iso_639_2T() or
gst_tag_get_language_code_iso_639_2B() to return NULL for
valid language codes such as "enm", potentially causing users
of these API such as mpegtsmux to discard language code tags
as invalid.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/785>

gst-libs/gst/tag/lang-tables.dat
gst-libs/gst/tag/lang.c
gst-libs/gst/tag/mklangtables.c

index 5c89734..94f4d43 100644 (file)
@@ -1,4 +1,4 @@
-/* generated by mklangtables from iso-codes 3.79 */
+/* generated by mklangtables from iso-codes 4.5 */
 /* License: LGPL-2.1+ */
 
 #include <glib.h>
@@ -15,405 +15,1078 @@ static const struct
   guint8 flags;
   guint16 name_offset;
 } iso_639_codes[] = {
+    /* Achinese */
+  { "", "ace", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 0 },
+    /* Acoli */
+  { "", "ach", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 9 },
+    /* Adangme */
+  { "", "ada", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 15 },
+    /* Adyghe; Adygei */
+  { "", "ady", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 23 },
+    /* Afro-Asiatic languages */
+  { "", "afa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 38 },
+    /* Afrihili */
+  { "", "afh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 61 },
+    /* Ainu */
+  { "", "ain", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 70 },
+    /* Akkadian */
+  { "", "akk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 75 },
+    /* Aleut */
+  { "", "ale", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 84 },
+    /* Algonquian languages */
+  { "", "alg", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 90 },
+    /* Southern Altai */
+  { "", "alt", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 111 },
+    /* English, Old (ca. 450-1100) */
+  { "", "ang", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 126 },
+    /* Angika */
+  { "", "anp", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 154 },
+    /* Apache languages */
+  { "", "apa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 161 },
+    /* Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE) */
+  { "", "arc", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 178 },
+    /* Mapudungun; Mapuche */
+  { "", "arn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 241 },
+    /* Arapaho */
+  { "", "arp", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 261 },
+    /* Artificial languages */
+  { "", "art", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 269 },
+    /* Arawak */
+  { "", "arw", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 290 },
+    /* Asturian; Bable; Leonese; Asturleonese */
+  { "", "ast", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 297 },
+    /* Athapascan languages */
+  { "", "ath", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 336 },
+    /* Australian languages */
+  { "", "aus", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 357 },
+    /* Awadhi */
+  { "", "awa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 378 },
+    /* Banda languages */
+  { "", "bad", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 385 },
+    /* Bamileke languages */
+  { "", "bai", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 401 },
+    /* Baluchi */
+  { "", "bal", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 420 },
+    /* Balinese */
+  { "", "ban", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 428 },
+    /* Basa */
+  { "", "bas", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 437 },
+    /* Baltic languages */
+  { "", "bat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 442 },
+    /* Beja; Bedawiyet */
+  { "", "bej", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 459 },
+    /* Bemba */
+  { "", "bem", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 475 },
+    /* Berber languages */
+  { "", "ber", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 481 },
+    /* Bhojpuri */
+  { "", "bho", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 498 },
+    /* Bikol */
+  { "", "bik", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 507 },
+    /* Bini; Edo */
+  { "", "bin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 513 },
+    /* Siksika */
+  { "", "bla", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 523 },
+    /* Bantu (Other) */
+  { "", "bnt", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 531 },
+    /* Braj */
+  { "", "bra", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 545 },
+    /* Batak languages */
+  { "", "btk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 550 },
+    /* Buriat */
+  { "", "bua", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 566 },
+    /* Buginese */
+  { "", "bug", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 573 },
+    /* Blin; Bilin */
+  { "", "byn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 582 },
+    /* Caddo */
+  { "", "cad", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 594 },
+    /* Central American Indian languages */
+  { "", "cai", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 600 },
+    /* Galibi Carib */
+  { "", "car", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 634 },
+    /* Caucasian languages */
+  { "", "cau", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 647 },
+    /* Cebuano */
+  { "", "ceb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 667 },
+    /* Celtic languages */
+  { "", "cel", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 675 },
+    /* Chibcha */
+  { "", "chb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 692 },
+    /* Chagatai */
+  { "", "chg", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 700 },
+    /* Chuukese */
+  { "", "chk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 709 },
+    /* Mari */
+  { "", "chm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 718 },
+    /* Chinook jargon */
+  { "", "chn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 723 },
+    /* Choctaw */
+  { "", "cho", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 738 },
+    /* Chipewyan; Dene Suline */
+  { "", "chp", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 746 },
+    /* Cherokee */
+  { "", "chr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 769 },
+    /* Cheyenne */
+  { "", "chy", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 778 },
+    /* Chamic languages */
+  { "", "cmc", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 787 },
+    /* Coptic */
+  { "", "cop", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 804 },
+    /* Creoles and pidgins, English based */
+  { "", "cpe", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 811 },
+    /* Creoles and pidgins, French-based */
+  { "", "cpf", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 846 },
+    /* Creoles and pidgins, Portuguese-based */
+  { "", "cpp", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 880 },
+    /* Crimean Tatar; Crimean Turkish */
+  { "", "crh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 918 },
+    /* Creoles and pidgins */
+  { "", "crp", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 949 },
+    /* Kashubian */
+  { "", "csb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 969 },
+    /* Cushitic languages */
+  { "", "cus", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 979 },
+    /* Dakota */
+  { "", "dak", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 998 },
+    /* Dargwa */
+  { "", "dar", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1005 },
+    /* Land Dayak languages */
+  { "", "day", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1012 },
+    /* Delaware */
+  { "", "del", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1033 },
+    /* Slave (Athapascan) */
+  { "", "den", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1042 },
+    /* Dogrib */
+  { "", "dgr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1061 },
+    /* Dinka */
+  { "", "din", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1068 },
+    /* Dogri */
+  { "", "doi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1074 },
+    /* Dravidian languages */
+  { "", "dra", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1080 },
+    /* Lower Sorbian */
+  { "", "dsb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1100 },
+    /* Duala */
+  { "", "dua", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1114 },
+    /* Dutch, Middle (ca. 1050-1350) */
+  { "", "dum", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1120 },
+    /* Dyula */
+  { "", "dyu", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1150 },
+    /* Efik */
+  { "", "efi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1156 },
+    /* Egyptian (Ancient) */
+  { "", "egy", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1161 },
+    /* Ekajuk */
+  { "", "eka", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1180 },
+    /* Elamite */
+  { "", "elx", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1187 },
+    /* English, Middle (1100-1500) */
+  { "", "enm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1195 },
+    /* Ewondo */
+  { "", "ewo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1223 },
+    /* Fang */
+  { "", "fan", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1230 },
+    /* Fanti */
+  { "", "fat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1235 },
+    /* Filipino; Pilipino */
+  { "", "fil", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1241 },
+    /* Finno-Ugrian languages */
+  { "", "fiu", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1260 },
+    /* Fon */
+  { "", "fon", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1283 },
+    /* French, Middle (ca. 1400-1600) */
+  { "", "frm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1287 },
+    /* French, Old (842-ca. 1400) */
+  { "", "fro", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1318 },
+    /* Northern Frisian */
+  { "", "frr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1345 },
+    /* Eastern Frisian */
+  { "", "frs", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1362 },
+    /* Friulian */
+  { "", "fur", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1378 },
+    /* Ga */
+  { "", "gaa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1387 },
+    /* Gayo */
+  { "", "gay", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1390 },
+    /* Gbaya */
+  { "", "gba", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1395 },
+    /* Germanic languages */
+  { "", "gem", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1401 },
+    /* Geez */
+  { "", "gez", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1420 },
+    /* Gilbertese */
+  { "", "gil", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1425 },
+    /* German, Middle High (ca. 1050-1500) */
+  { "", "gmh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1436 },
+    /* German, Old High (ca. 750-1050) */
+  { "", "goh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1472 },
+    /* Gondi */
+  { "", "gon", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1504 },
+    /* Gorontalo */
+  { "", "gor", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1510 },
+    /* Gothic */
+  { "", "got", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1520 },
+    /* Grebo */
+  { "", "grb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1527 },
+    /* Greek, Ancient (to 1453) */
+  { "", "grc", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1533 },
+    /* Swiss German; Alemannic; Alsatian */
+  { "", "gsw", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1558 },
+    /* Gwich'in */
+  { "", "gwi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1592 },
+    /* Haida */
+  { "", "hai", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1601 },
+    /* Hawaiian */
+  { "", "haw", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1607 },
+    /* Hiligaynon */
+  { "", "hil", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1616 },
+    /* Himachali languages; Western Pahari languages */
+  { "", "him", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1627 },
+    /* Hittite */
+  { "", "hit", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1673 },
+    /* Hmong; Mong */
+  { "", "hmn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1681 },
+    /* Upper Sorbian */
+  { "", "hsb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1693 },
+    /* Hupa */
+  { "", "hup", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1707 },
+    /* Iban */
+  { "", "iba", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1712 },
+    /* Ijo languages */
+  { "", "ijo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1717 },
+    /* Iloko */
+  { "", "ilo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1731 },
+    /* Indic languages */
+  { "", "inc", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1737 },
+    /* Indo-European languages */
+  { "", "ine", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1753 },
+    /* Ingush */
+  { "", "inh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1777 },
+    /* Iranian languages */
+  { "", "ira", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1784 },
+    /* Iroquoian languages */
+  { "", "iro", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1802 },
+    /* Lojban */
+  { "", "jbo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1822 },
+    /* Judeo-Persian */
+  { "", "jpr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1829 },
+    /* Judeo-Arabic */
+  { "", "jrb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1843 },
+    /* Kara-Kalpak */
+  { "", "kaa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1856 },
+    /* Kabyle */
+  { "", "kab", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1868 },
+    /* Kachin; Jingpho */
+  { "", "kac", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1875 },
+    /* Kamba */
+  { "", "kam", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1891 },
+    /* Karen languages */
+  { "", "kar", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1897 },
+    /* Kawi */
+  { "", "kaw", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1913 },
+    /* Kabardian */
+  { "", "kbd", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1918 },
+    /* Khasi */
+  { "", "kha", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1928 },
+    /* Khoisan languages */
+  { "", "khi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1934 },
+    /* Khotanese; Sakan */
+  { "", "kho", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1952 },
+    /* Kimbundu */
+  { "", "kmb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1969 },
+    /* Konkani */
+  { "", "kok", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1978 },
+    /* Kosraean */
+  { "", "kos", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1986 },
+    /* Kpelle */
+  { "", "kpe", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1995 },
+    /* Karachay-Balkar */
+  { "", "krc", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2002 },
+    /* Karelian */
+  { "", "krl", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2018 },
+    /* Kru languages */
+  { "", "kro", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2027 },
+    /* Kurukh */
+  { "", "kru", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2041 },
+    /* Kumyk */
+  { "", "kum", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2048 },
+    /* Kutenai */
+  { "", "kut", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2054 },
+    /* Ladino */
+  { "", "lad", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2062 },
+    /* Lahnda */
+  { "", "lah", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2069 },
+    /* Lamba */
+  { "", "lam", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2076 },
+    /* Lezghian */
+  { "", "lez", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2082 },
+    /* Mongo */
+  { "", "lol", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2091 },
+    /* Lozi */
+  { "", "loz", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2097 },
+    /* Luba-Lulua */
+  { "", "lua", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2102 },
+    /* Luiseno */
+  { "", "lui", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2113 },
+    /* Lunda */
+  { "", "lun", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2121 },
+    /* Luo (Kenya and Tanzania) */
+  { "", "luo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2127 },
+    /* Lushai */
+  { "", "lus", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2152 },
+    /* Madurese */
+  { "", "mad", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2159 },
+    /* Magahi */
+  { "", "mag", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2168 },
+    /* Maithili */
+  { "", "mai", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2175 },
+    /* Makasar */
+  { "", "mak", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2184 },
+    /* Mandingo */
+  { "", "man", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2192 },
+    /* Austronesian languages */
+  { "", "map", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2201 },
+    /* Masai */
+  { "", "mas", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2224 },
+    /* Moksha */
+  { "", "mdf", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2230 },
+    /* Mandar */
+  { "", "mdr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2237 },
+    /* Mende */
+  { "", "men", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2244 },
+    /* Irish, Middle (900-1200) */
+  { "", "mga", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2250 },
+    /* Mi'kmaq; Micmac */
+  { "", "mic", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2275 },
+    /* Minangkabau */
+  { "", "min", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2291 },
+    /* Uncoded languages */
+  { "", "mis", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2303 },
+    /* Mon-Khmer languages */
+  { "", "mkh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2321 },
+    /* Manchu */
+  { "", "mnc", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2341 },
+    /* Manipuri */
+  { "", "mni", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2348 },
+    /* Manobo languages */
+  { "", "mno", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2357 },
+    /* Mohawk */
+  { "", "moh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2374 },
+    /* Mossi */
+  { "", "mos", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2381 },
+    /* Multiple languages */
+  { "", "mul", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2387 },
+    /* Munda languages */
+  { "", "mun", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2406 },
+    /* Creek */
+  { "", "mus", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2422 },
+    /* Mirandese */
+  { "", "mwl", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2428 },
+    /* Marwari */
+  { "", "mwr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2438 },
+    /* Mayan languages */
+  { "", "myn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2446 },
+    /* Erzya */
+  { "", "myv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2462 },
+    /* Nahuatl languages */
+  { "", "nah", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2468 },
+    /* North American Indian languages */
+  { "", "nai", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2486 },
+    /* Neapolitan */
+  { "", "nap", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2518 },
+    /* Low German; Low Saxon; German, Low; Saxon, Low */
+  { "", "nds", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2529 },
+    /* Nepal Bhasa; Newari */
+  { "", "new", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2576 },
+    /* Nias */
+  { "", "nia", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2596 },
+    /* Niger-Kordofanian languages */
+  { "", "nic", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2601 },
+    /* Niuean */
+  { "", "niu", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2629 },
+    /* Nogai */
+  { "", "nog", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2636 },
+    /* Norse, Old */
+  { "", "non", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2642 },
+    /* N'Ko */
+  { "", "nqo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2653 },
+    /* Pedi; Sepedi; Northern Sotho */
+  { "", "nso", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2658 },
+    /* Nubian languages */
+  { "", "nub", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2687 },
+    /* Classical Newari; Old Newari; Classical Nepal Bhasa */
+  { "", "nwc", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2704 },
+    /* Nyamwezi */
+  { "", "nym", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2756 },
+    /* Nyankole */
+  { "", "nyn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2765 },
+    /* Nyoro */
+  { "", "nyo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2774 },
+    /* Nzima */
+  { "", "nzi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2780 },
+    /* Osage */
+  { "", "osa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2786 },
+    /* Turkish, Ottoman (1500-1928) */
+  { "", "ota", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2792 },
+    /* Otomian languages */
+  { "", "oto", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2821 },
+    /* Papuan languages */
+  { "", "paa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2839 },
+    /* Pangasinan */
+  { "", "pag", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2856 },
+    /* Pahlavi */
+  { "", "pal", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2867 },
+    /* Pampanga; Kapampangan */
+  { "", "pam", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2875 },
+    /* Papiamento */
+  { "", "pap", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2897 },
+    /* Palauan */
+  { "", "pau", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2908 },
+    /* Persian, Old (ca. 600-400 B.C.) */
+  { "", "peo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2916 },
+    /* Philippine languages */
+  { "", "phi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2948 },
+    /* Phoenician */
+  { "", "phn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2969 },
+    /* Pohnpeian */
+  { "", "pon", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2980 },
+    /* Prakrit languages */
+  { "", "pra", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2990 },
+    /* Proven?al, Old (to 1500) */
+  { "", "pro", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3008 },
+    /* Reserved for local use */
+  { "", "qaa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3034 },
+    /* Rajasthani */
+  { "", "raj", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3057 },
+    /* Rapanui */
+  { "", "rap", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3068 },
+    /* Rarotongan; Cook Islands Maori */
+  { "", "rar", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3076 },
+    /* Romance languages */
+  { "", "roa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3107 },
+    /* Romany */
+  { "", "rom", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3125 },
+    /* Aromanian; Arumanian; Macedo-Romanian */
+  { "", "rup", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3132 },
+    /* Sandawe */
+  { "", "sad", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3170 },
+    /* Yakut */
+  { "", "sah", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3178 },
+    /* South American Indian (Other) */
+  { "", "sai", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3184 },
+    /* Salishan languages */
+  { "", "sal", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3214 },
+    /* Samaritan Aramaic */
+  { "", "sam", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3233 },
+    /* Sasak */
+  { "", "sas", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3251 },
+    /* Santali */
+  { "", "sat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3257 },
+    /* Sicilian */
+  { "", "scn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3265 },
+    /* Scots */
+  { "", "sco", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3274 },
+    /* Selkup */
+  { "", "sel", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3280 },
+    /* Semitic languages */
+  { "", "sem", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3287 },
+    /* Irish, Old (to 900) */
+  { "", "sga", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3305 },
+    /* Sign Languages */
+  { "", "sgn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3325 },
+    /* Shan */
+  { "", "shn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3340 },
+    /* Sidamo */
+  { "", "sid", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3345 },
+    /* Siouan languages */
+  { "", "sio", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3352 },
+    /* Sino-Tibetan languages */
+  { "", "sit", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3369 },
+    /* Slavic languages */
+  { "", "sla", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3392 },
+    /* Southern Sami */
+  { "", "sma", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3409 },
+    /* Sami languages */
+  { "", "smi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3423 },
+    /* Lule Sami */
+  { "", "smj", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3438 },
+    /* Inari Sami */
+  { "", "smn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3448 },
+    /* Skolt Sami */
+  { "", "sms", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3459 },
+    /* Soninke */
+  { "", "snk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3470 },
+    /* Sogdian */
+  { "", "sog", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3478 },
+    /* Songhai languages */
+  { "", "son", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3486 },
+    /* Sranan Tongo */
+  { "", "srn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3504 },
+    /* Serer */
+  { "", "srr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3517 },
+    /* Nilo-Saharan languages */
+  { "", "ssa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3523 },
+    /* Sukuma */
+  { "", "suk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3546 },
+    /* Susu */
+  { "", "sus", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3553 },
+    /* Sumerian */
+  { "", "sux", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3558 },
+    /* Classical Syriac */
+  { "", "syc", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3567 },
+    /* Syriac */
+  { "", "syr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3584 },
+    /* Tai languages */
+  { "", "tai", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3591 },
+    /* Timne */
+  { "", "tem", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3605 },
+    /* Tereno */
+  { "", "ter", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3611 },
+    /* Tetum */
+  { "", "tet", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3618 },
+    /* Tigre */
+  { "", "tig", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3624 },
+    /* Tiv */
+  { "", "tiv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3630 },
+    /* Tokelau */
+  { "", "tkl", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3634 },
+    /* Klingon; tlhIngan-Hol */
+  { "", "tlh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3642 },
+    /* Tlingit */
+  { "", "tli", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3664 },
+    /* Tamashek */
+  { "", "tmh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3672 },
+    /* Tonga (Nyasa) */
+  { "", "tog", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3681 },
+    /* Tok Pisin */
+  { "", "tpi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3695 },
+    /* Tsimshian */
+  { "", "tsi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3705 },
+    /* Tumbuka */
+  { "", "tum", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3715 },
+    /* Tupi languages */
+  { "", "tup", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3723 },
+    /* Altaic languages */
+  { "", "tut", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3738 },
+    /* Tuvalu */
+  { "", "tvl", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3755 },
+    /* Tuvinian */
+  { "", "tyv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3762 },
+    /* Udmurt */
+  { "", "udm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3771 },
+    /* Ugaritic */
+  { "", "uga", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3778 },
+    /* Umbundu */
+  { "", "umb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3787 },
+    /* Undetermined */
+  { "", "und", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3795 },
+    /* Vai */
+  { "", "vai", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3808 },
+    /* Votic */
+  { "", "vot", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3812 },
+    /* Wakashan languages */
+  { "", "wak", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3818 },
+    /* Walamo */
+  { "", "wal", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3837 },
+    /* Waray */
+  { "", "war", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3844 },
+    /* Washo */
+  { "", "was", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3850 },
+    /* Sorbian languages */
+  { "", "wen", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3856 },
+    /* Kalmyk; Oirat */
+  { "", "xal", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3874 },
+    /* Yao */
+  { "", "yao", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3888 },
+    /* Yapese */
+  { "", "yap", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3892 },
+    /* Yupik languages */
+  { "", "ypk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3899 },
+    /* Zapotec */
+  { "", "zap", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3915 },
+    /* Blissymbols; Blissymbolics; Bliss */
+  { "", "zbl", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3923 },
+    /* Zenaga */
+  { "", "zen", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3957 },
+    /* Standard Moroccan Tamazight */
+  { "", "zgh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3964 },
+    /* Zande languages */
+  { "", "znd", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 3992 },
+    /* Zuni */
+  { "", "zun", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4008 },
+    /* No linguistic content; Not applicable */
+  { "", "zxx", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4013 },
+    /* Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki */
+  { "", "zza", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4051 },
     /* Afar */
-  { "aa", "aar", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 0 },
+  { "aa", "aar", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4098 },
     /* Abkhazian */
-  { "ab", "abk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5 },
+  { "ab", "abk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4103 },
     /* Avestan */
-  { "ae", "ave", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 15 },
+  { "ae", "ave", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4113 },
     /* Afrikaans */
-  { "af", "afr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 23 },
+  { "af", "afr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4121 },
     /* Akan */
-  { "ak", "aka", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 33 },
+  { "ak", "aka", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4131 },
     /* Amharic */
-  { "am", "amh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 38 },
+  { "am", "amh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4136 },
     /* Aragonese */
-  { "an", "arg", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 46 },
+  { "an", "arg", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4144 },
     /* Arabic */
-  { "ar", "ara", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 56 },
+  { "ar", "ara", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4154 },
     /* Assamese */
-  { "as", "asm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 63 },
+  { "as", "asm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4161 },
     /* Avaric */
-  { "av", "ava", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 72 },
+  { "av", "ava", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4170 },
     /* Aymara */
-  { "ay", "aym", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 79 },
+  { "ay", "aym", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4177 },
     /* Azerbaijani */
-  { "az", "aze", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 86 },
+  { "az", "aze", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4184 },
     /* Bashkir */
-  { "ba", "bak", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 98 },
+  { "ba", "bak", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4196 },
     /* Belarusian */
-  { "be", "bel", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 106 },
+  { "be", "bel", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4204 },
     /* Bulgarian */
-  { "bg", "bul", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 117 },
+  { "bg", "bul", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4215 },
     /* Bihari languages */
-  { "bh", "bih", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 127 },
+  { "bh", "bih", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4225 },
     /* Bislama */
-  { "bi", "bis", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 144 },
+  { "bi", "bis", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4242 },
     /* Bambara */
-  { "bm", "bam", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 152 },
+  { "bm", "bam", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4250 },
     /* Bengali */
-  { "bn", "ben", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 160 },
+  { "bn", "ben", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4258 },
     /* Tibetan */
-  { "bo", "bod", ISO_639_FLAG_2T, 168 },
-  { "bo", "tib", ISO_639_FLAG_2B, 168 },
+  { "bo", "bod", ISO_639_FLAG_2T, 4266 },
+  { "bo", "tib", ISO_639_FLAG_2B, 4266 },
     /* Breton */
-  { "br", "bre", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 176 },
+  { "br", "bre", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4274 },
     /* Bosnian */
-  { "bs", "bos", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 183 },
+  { "bs", "bos", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4281 },
     /* Catalan; Valencian */
-  { "ca", "cat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 191 },
+  { "ca", "cat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4289 },
     /* Chechen */
-  { "ce", "che", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 210 },
+  { "ce", "che", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4308 },
     /* Chamorro */
-  { "ch", "cha", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 218 },
+  { "ch", "cha", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4316 },
     /* Corsican */
-  { "co", "cos", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 227 },
+  { "co", "cos", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4325 },
     /* Cree */
-  { "cr", "cre", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 236 },
+  { "cr", "cre", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4334 },
     /* Czech */
-  { "cs", "ces", ISO_639_FLAG_2T, 241 },
-  { "cs", "cze", ISO_639_FLAG_2B, 241 },
+  { "cs", "ces", ISO_639_FLAG_2T, 4339 },
+  { "cs", "cze", ISO_639_FLAG_2B, 4339 },
     /* Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic */
-  { "cu", "chu", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 247 },
+  { "cu", "chu", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4345 },
     /* Chuvash */
-  { "cv", "chv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 328 },
+  { "cv", "chv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4426 },
     /* Welsh */
-  { "cy", "cym", ISO_639_FLAG_2T, 336 },
-  { "cy", "wel", ISO_639_FLAG_2B, 336 },
+  { "cy", "cym", ISO_639_FLAG_2T, 4434 },
+  { "cy", "wel", ISO_639_FLAG_2B, 4434 },
     /* Danish */
-  { "da", "dan", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 342 },
+  { "da", "dan", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4440 },
     /* German */
-  { "de", "deu", ISO_639_FLAG_2T, 349 },
-  { "de", "ger", ISO_639_FLAG_2B, 349 },
+  { "de", "deu", ISO_639_FLAG_2T, 4447 },
+  { "de", "ger", ISO_639_FLAG_2B, 4447 },
     /* Divehi; Dhivehi; Maldivian */
-  { "dv", "div", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 356 },
+  { "dv", "div", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4454 },
     /* Dzongkha */
-  { "dz", "dzo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 383 },
+  { "dz", "dzo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4481 },
     /* Ewe */
-  { "ee", "ewe", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 392 },
+  { "ee", "ewe", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4490 },
     /* Greek, Modern (1453-) */
-  { "el", "ell", ISO_639_FLAG_2T, 396 },
-  { "el", "gre", ISO_639_FLAG_2B, 396 },
+  { "el", "ell", ISO_639_FLAG_2T, 4494 },
+  { "el", "gre", ISO_639_FLAG_2B, 4494 },
     /* English */
-  { "en", "eng", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 418 },
+  { "en", "eng", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4516 },
     /* Esperanto */
-  { "eo", "epo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 426 },
+  { "eo", "epo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4524 },
     /* Spanish; Castilian */
-  { "es", "spa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 436 },
+  { "es", "spa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4534 },
     /* Estonian */
-  { "et", "est", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 455 },
+  { "et", "est", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4553 },
     /* Basque */
-  { "eu", "eus", ISO_639_FLAG_2T, 464 },
-  { "eu", "baq", ISO_639_FLAG_2B, 464 },
+  { "eu", "eus", ISO_639_FLAG_2T, 4562 },
+  { "eu", "baq", ISO_639_FLAG_2B, 4562 },
     /* Persian */
-  { "fa", "fas", ISO_639_FLAG_2T, 471 },
-  { "fa", "per", ISO_639_FLAG_2B, 471 },
+  { "fa", "fas", ISO_639_FLAG_2T, 4569 },
+  { "fa", "per", ISO_639_FLAG_2B, 4569 },
     /* Fulah */
-  { "ff", "ful", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 479 },
+  { "ff", "ful", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4577 },
     /* Finnish */
-  { "fi", "fin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 485 },
+  { "fi", "fin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4583 },
     /* Fijian */
-  { "fj", "fij", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 493 },
+  { "fj", "fij", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4591 },
     /* Faroese */
-  { "fo", "fao", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 500 },
+  { "fo", "fao", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4598 },
     /* French */
-  { "fr", "fra", ISO_639_FLAG_2T, 508 },
-  { "fr", "fre", ISO_639_FLAG_2B, 508 },
+  { "fr", "fra", ISO_639_FLAG_2T, 4606 },
+  { "fr", "fre", ISO_639_FLAG_2B, 4606 },
     /* Western Frisian */
-  { "fy", "fry", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 515 },
+  { "fy", "fry", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4613 },
     /* Irish */
-  { "ga", "gle", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 531 },
+  { "ga", "gle", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4629 },
     /* Gaelic; Scottish Gaelic */
-  { "gd", "gla", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 537 },
+  { "gd", "gla", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4635 },
     /* Galician */
-  { "gl", "glg", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 561 },
+  { "gl", "glg", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4659 },
     /* Guarani */
-  { "gn", "grn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 570 },
+  { "gn", "grn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4668 },
     /* Gujarati */
-  { "gu", "guj", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 578 },
+  { "gu", "guj", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4676 },
     /* Manx */
-  { "gv", "glv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 587 },
+  { "gv", "glv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4685 },
     /* Hausa */
-  { "ha", "hau", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 592 },
+  { "ha", "hau", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4690 },
     /* Hebrew */
-  { "he", "heb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 598 },
+  { "he", "heb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4696 },
     /* Hindi */
-  { "hi", "hin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 605 },
+  { "hi", "hin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4703 },
     /* Hiri Motu */
-  { "ho", "hmo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 611 },
+  { "ho", "hmo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4709 },
     /* Croatian */
-  { "hr", "hrv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 621 },
+  { "hr", "hrv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4719 },
     /* Haitian; Haitian Creole */
-  { "ht", "hat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 630 },
+  { "ht", "hat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4728 },
     /* Hungarian */
-  { "hu", "hun", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 654 },
+  { "hu", "hun", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4752 },
     /* Armenian */
-  { "hy", "hye", ISO_639_FLAG_2T, 664 },
-  { "hy", "arm", ISO_639_FLAG_2B, 664 },
+  { "hy", "hye", ISO_639_FLAG_2T, 4762 },
+  { "hy", "arm", ISO_639_FLAG_2B, 4762 },
     /* Herero */
-  { "hz", "her", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 673 },
+  { "hz", "her", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4771 },
     /* Interlingua (International Auxiliary Language Association) */
-  { "ia", "ina", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 680 },
+  { "ia", "ina", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4778 },
     /* Indonesian */
-  { "id", "ind", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 739 },
+  { "id", "ind", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4837 },
     /* Interlingue; Occidental */
-  { "ie", "ile", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 750 },
+  { "ie", "ile", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4848 },
     /* Igbo */
-  { "ig", "ibo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 774 },
+  { "ig", "ibo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4872 },
     /* Sichuan Yi; Nuosu */
-  { "ii", "iii", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 779 },
+  { "ii", "iii", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4877 },
     /* Inupiaq */
-  { "ik", "ipk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 797 },
+  { "ik", "ipk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4895 },
     /* Ido */
-  { "io", "ido", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 805 },
+  { "io", "ido", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4903 },
     /* Icelandic */
-  { "is", "isl", ISO_639_FLAG_2T, 809 },
-  { "is", "ice", ISO_639_FLAG_2B, 809 },
+  { "is", "isl", ISO_639_FLAG_2T, 4907 },
+  { "is", "ice", ISO_639_FLAG_2B, 4907 },
     /* Italian */
-  { "it", "ita", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 819 },
+  { "it", "ita", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4917 },
     /* Inuktitut */
-  { "iu", "iku", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 827 },
+  { "iu", "iku", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4925 },
     /* Japanese */
-  { "ja", "jpn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 837 },
+  { "ja", "jpn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4935 },
     /* Javanese */
-  { "jv", "jav", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 846 },
+  { "jv", "jav", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4944 },
     /* Georgian */
-  { "ka", "kat", ISO_639_FLAG_2T, 855 },
-  { "ka", "geo", ISO_639_FLAG_2B, 855 },
+  { "ka", "kat", ISO_639_FLAG_2T, 4953 },
+  { "ka", "geo", ISO_639_FLAG_2B, 4953 },
     /* Kongo */
-  { "kg", "kon", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 864 },
+  { "kg", "kon", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4962 },
     /* Kikuyu; Gikuyu */
-  { "ki", "kik", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 870 },
+  { "ki", "kik", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4968 },
     /* Kuanyama; Kwanyama */
-  { "kj", "kua", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 885 },
+  { "kj", "kua", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 4983 },
     /* Kazakh */
-  { "kk", "kaz", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 904 },
+  { "kk", "kaz", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5002 },
     /* Kalaallisut; Greenlandic */
-  { "kl", "kal", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 911 },
+  { "kl", "kal", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5009 },
     /* Central Khmer */
-  { "km", "khm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 936 },
+  { "km", "khm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5034 },
     /* Kannada */
-  { "kn", "kan", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 950 },
+  { "kn", "kan", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5048 },
     /* Korean */
-  { "ko", "kor", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 958 },
+  { "ko", "kor", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5056 },
     /* Kanuri */
-  { "kr", "kau", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 965 },
+  { "kr", "kau", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5063 },
     /* Kashmiri */
-  { "ks", "kas", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 972 },
+  { "ks", "kas", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5070 },
     /* Kurdish */
-  { "ku", "kur", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 981 },
+  { "ku", "kur", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5079 },
     /* Komi */
-  { "kv", "kom", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 989 },
+  { "kv", "kom", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5087 },
     /* Cornish */
-  { "kw", "cor", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 994 },
+  { "kw", "cor", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5092 },
     /* Kirghiz; Kyrgyz */
-  { "ky", "kir", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1002 },
+  { "ky", "kir", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5100 },
     /* Latin */
-  { "la", "lat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1018 },
+  { "la", "lat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5116 },
     /* Luxembourgish; Letzeburgesch */
-  { "lb", "ltz", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1024 },
+  { "lb", "ltz", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5122 },
     /* Ganda */
-  { "lg", "lug", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1053 },
+  { "lg", "lug", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5151 },
     /* Limburgan; Limburger; Limburgish */
-  { "li", "lim", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1059 },
+  { "li", "lim", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5157 },
     /* Lingala */
-  { "ln", "lin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1092 },
+  { "ln", "lin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5190 },
     /* Lao */
-  { "lo", "lao", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1100 },
+  { "lo", "lao", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5198 },
     /* Lithuanian */
-  { "lt", "lit", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1104 },
+  { "lt", "lit", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5202 },
     /* Luba-Katanga */
-  { "lu", "lub", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1115 },
+  { "lu", "lub", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5213 },
     /* Latvian */
-  { "lv", "lav", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1128 },
+  { "lv", "lav", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5226 },
     /* Malagasy */
-  { "mg", "mlg", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1136 },
+  { "mg", "mlg", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5234 },
     /* Marshallese */
-  { "mh", "mah", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1145 },
+  { "mh", "mah", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5243 },
     /* Maori */
-  { "mi", "mri", ISO_639_FLAG_2T, 1157 },
-  { "mi", "mao", ISO_639_FLAG_2B, 1157 },
+  { "mi", "mri", ISO_639_FLAG_2T, 5255 },
+  { "mi", "mao", ISO_639_FLAG_2B, 5255 },
     /* Macedonian */
-  { "mk", "mkd", ISO_639_FLAG_2T, 1163 },
-  { "mk", "mac", ISO_639_FLAG_2B, 1163 },
+  { "mk", "mkd", ISO_639_FLAG_2T, 5261 },
+  { "mk", "mac", ISO_639_FLAG_2B, 5261 },
     /* Malayalam */
-  { "ml", "mal", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1174 },
+  { "ml", "mal", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5272 },
     /* Mongolian */
-  { "mn", "mon", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1184 },
+  { "mn", "mon", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5282 },
     /* Marathi */
-  { "mr", "mar", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1194 },
+  { "mr", "mar", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5292 },
     /* Malay */
-  { "ms", "msa", ISO_639_FLAG_2T, 1202 },
-  { "ms", "may", ISO_639_FLAG_2B, 1202 },
+  { "ms", "msa", ISO_639_FLAG_2T, 5300 },
+  { "ms", "may", ISO_639_FLAG_2B, 5300 },
     /* Maltese */
-  { "mt", "mlt", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1208 },
+  { "mt", "mlt", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5306 },
     /* Burmese */
-  { "my", "mya", ISO_639_FLAG_2T, 1216 },
-  { "my", "bur", ISO_639_FLAG_2B, 1216 },
+  { "my", "mya", ISO_639_FLAG_2T, 5314 },
+  { "my", "bur", ISO_639_FLAG_2B, 5314 },
     /* Nauru */
-  { "na", "nau", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1224 },
+  { "na", "nau", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5322 },
     /* Bokm?l, Norwegian; Norwegian Bokm?l */
-  { "nb", "nob", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1230 },
+  { "nb", "nob", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5328 },
     /* Ndebele, North; North Ndebele */
-  { "nd", "nde", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1268 },
+  { "nd", "nde", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5366 },
     /* Nepali */
-  { "ne", "nep", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1298 },
+  { "ne", "nep", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5396 },
     /* Ndonga */
-  { "ng", "ndo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1305 },
+  { "ng", "ndo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5403 },
     /* Dutch; Flemish */
-  { "nl", "nld", ISO_639_FLAG_2T, 1312 },
-  { "nl", "dut", ISO_639_FLAG_2B, 1312 },
+  { "nl", "nld", ISO_639_FLAG_2T, 5410 },
+  { "nl", "dut", ISO_639_FLAG_2B, 5410 },
     /* Norwegian Nynorsk; Nynorsk, Norwegian */
-  { "nn", "nno", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1327 },
+  { "nn", "nno", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5425 },
     /* Norwegian */
-  { "no", "nor", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1365 },
+  { "no", "nor", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5463 },
     /* Ndebele, South; South Ndebele */
-  { "nr", "nbl", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1375 },
+  { "nr", "nbl", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5473 },
     /* Navajo; Navaho */
-  { "nv", "nav", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1405 },
+  { "nv", "nav", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5503 },
     /* Chichewa; Chewa; Nyanja */
-  { "ny", "nya", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1420 },
+  { "ny", "nya", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5518 },
     /* Occitan (post 1500); Proven?al */
-  { "oc", "oci", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1444 },
+  { "oc", "oci", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5542 },
     /* Ojibwa */
-  { "oj", "oji", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1476 },
+  { "oj", "oji", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5574 },
     /* Oromo */
-  { "om", "orm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1483 },
+  { "om", "orm", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5581 },
     /* Oriya */
-  { "or", "ori", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1489 },
+  { "or", "ori", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5587 },
     /* Ossetian; Ossetic */
-  { "os", "oss", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1495 },
+  { "os", "oss", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5593 },
     /* Panjabi; Punjabi */
-  { "pa", "pan", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1513 },
+  { "pa", "pan", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5611 },
     /* Pali */
-  { "pi", "pli", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1530 },
+  { "pi", "pli", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5628 },
     /* Polish */
-  { "pl", "pol", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1535 },
+  { "pl", "pol", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5633 },
     /* Pushto; Pashto */
-  { "ps", "pus", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1542 },
+  { "ps", "pus", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5640 },
     /* Portuguese */
-  { "pt", "por", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1557 },
+  { "pt", "por", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5655 },
     /* Quechua */
-  { "qu", "que", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1568 },
+  { "qu", "que", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5666 },
     /* Romansh */
-  { "rm", "roh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1576 },
+  { "rm", "roh", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5674 },
     /* Rundi */
-  { "rn", "run", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1584 },
+  { "rn", "run", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5682 },
     /* Romanian; Moldavian; Moldovan */
-  { "ro", "ron", ISO_639_FLAG_2T, 1590 },
-  { "ro", "rum", ISO_639_FLAG_2B, 1590 },
+  { "ro", "ron", ISO_639_FLAG_2T, 5688 },
+  { "ro", "rum", ISO_639_FLAG_2B, 5688 },
     /* Russian */
-  { "ru", "rus", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1620 },
+  { "ru", "rus", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5718 },
     /* Kinyarwanda */
-  { "rw", "kin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1628 },
+  { "rw", "kin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5726 },
     /* Sanskrit */
-  { "sa", "san", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1640 },
+  { "sa", "san", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5738 },
     /* Sardinian */
-  { "sc", "srd", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1649 },
+  { "sc", "srd", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5747 },
     /* Sindhi */
-  { "sd", "snd", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1659 },
+  { "sd", "snd", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5757 },
     /* Northern Sami */
-  { "se", "sme", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1666 },
+  { "se", "sme", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5764 },
     /* Sango */
-  { "sg", "sag", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1680 },
+  { "sg", "sag", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5778 },
     /* Sinhala; Sinhalese */
-  { "si", "sin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1686 },
+  { "si", "sin", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5784 },
     /* Slovak */
-  { "sk", "slk", ISO_639_FLAG_2T, 1705 },
-  { "sk", "slo", ISO_639_FLAG_2B, 1705 },
+  { "sk", "slk", ISO_639_FLAG_2T, 5803 },
+  { "sk", "slo", ISO_639_FLAG_2B, 5803 },
     /* Slovenian */
-  { "sl", "slv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1712 },
+  { "sl", "slv", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5810 },
     /* Samoan */
-  { "sm", "smo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1722 },
+  { "sm", "smo", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5820 },
     /* Shona */
-  { "sn", "sna", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1729 },
+  { "sn", "sna", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5827 },
     /* Somali */
-  { "so", "som", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1735 },
+  { "so", "som", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5833 },
     /* Albanian */
-  { "sq", "sqi", ISO_639_FLAG_2T, 1742 },
-  { "sq", "alb", ISO_639_FLAG_2B, 1742 },
+  { "sq", "sqi", ISO_639_FLAG_2T, 5840 },
+  { "sq", "alb", ISO_639_FLAG_2B, 5840 },
     /* Serbian */
-  { "sr", "srp", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1751 },
+  { "sr", "srp", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5849 },
     /* Swati */
-  { "ss", "ssw", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1759 },
+  { "ss", "ssw", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5857 },
     /* Sotho, Southern */
-  { "st", "sot", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1765 },
+  { "st", "sot", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5863 },
     /* Sundanese */
-  { "su", "sun", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1781 },
+  { "su", "sun", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5879 },
     /* Swedish */
-  { "sv", "swe", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1791 },
+  { "sv", "swe", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5889 },
     /* Swahili */
-  { "sw", "swa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1799 },
+  { "sw", "swa", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5897 },
     /* Tamil */
-  { "ta", "tam", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1807 },
+  { "ta", "tam", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5905 },
     /* Telugu */
-  { "te", "tel", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1813 },
+  { "te", "tel", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5911 },
     /* Tajik */
-  { "tg", "tgk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1820 },
+  { "tg", "tgk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5918 },
     /* Thai */
-  { "th", "tha", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1826 },
+  { "th", "tha", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5924 },
     /* Tigrinya */
-  { "ti", "tir", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1831 },
+  { "ti", "tir", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5929 },
     /* Turkmen */
-  { "tk", "tuk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1840 },
+  { "tk", "tuk", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5938 },
     /* Tagalog */
-  { "tl", "tgl", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1848 },
+  { "tl", "tgl", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5946 },
     /* Tswana */
-  { "tn", "tsn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1856 },
+  { "tn", "tsn", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5954 },
     /* Tonga (Tonga Islands) */
-  { "to", "ton", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1863 },
+  { "to", "ton", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5961 },
     /* Turkish */
-  { "tr", "tur", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1885 },
+  { "tr", "tur", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5983 },
     /* Tsonga */
-  { "ts", "tso", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1893 },
+  { "ts", "tso", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5991 },
     /* Tatar */
-  { "tt", "tat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1900 },
+  { "tt", "tat", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 5998 },
     /* Twi */
-  { "tw", "twi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1906 },
+  { "tw", "twi", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6004 },
     /* Tahitian */
-  { "ty", "tah", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1910 },
+  { "ty", "tah", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6008 },
     /* Uighur; Uyghur */
-  { "ug", "uig", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1919 },
+  { "ug", "uig", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6017 },
     /* Ukrainian */
-  { "uk", "ukr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1934 },
+  { "uk", "ukr", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6032 },
     /* Urdu */
-  { "ur", "urd", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1944 },
+  { "ur", "urd", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6042 },
     /* Uzbek */
-  { "uz", "uzb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1949 },
+  { "uz", "uzb", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6047 },
     /* Venda */
-  { "ve", "ven", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1955 },
+  { "ve", "ven", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6053 },
     /* Vietnamese */
-  { "vi", "vie", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1961 },
+  { "vi", "vie", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6059 },
     /* Volap?k */
-  { "vo", "vol", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1972 },
+  { "vo", "vol", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6070 },
     /* Walloon */
-  { "wa", "wln", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1981 },
+  { "wa", "wln", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6079 },
     /* Wolof */
-  { "wo", "wol", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1989 },
+  { "wo", "wol", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6087 },
     /* Xhosa */
-  { "xh", "xho", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 1995 },
+  { "xh", "xho", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6093 },
     /* Yiddish */
-  { "yi", "yid", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2001 },
+  { "yi", "yid", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6099 },
     /* Yoruba */
-  { "yo", "yor", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2009 },
+  { "yo", "yor", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6107 },
     /* Zhuang; Chuang */
-  { "za", "zha", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2016 },
+  { "za", "zha", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6114 },
     /* Chinese */
-  { "zh", "zho", ISO_639_FLAG_2T, 2031 },
-  { "zh", "chi", ISO_639_FLAG_2B, 2031 },
+  { "zh", "zho", ISO_639_FLAG_2T, 6129 },
+  { "zh", "chi", ISO_639_FLAG_2B, 6129 },
     /* Zulu */
-  { "zu", "zul", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 2039 },
+  { "zu", "zul", ISO_639_FLAG_2T | ISO_639_FLAG_2B, 6137 },
 };
 
 static const gchar iso_639_names[] =
-  "Afar\000Abkhazian\000Avestan\000Afrikaans\000Akan\000Amharic\000Aragonese"
-  "\000Arabic\000Assamese\000Avaric\000Aymara\000Azerbaijani\000Bashkir\000B"
-  "elarusian\000Bulgarian\000Bihari languages\000Bislama\000Bambara\000Benga"
-  "li\000Tibetan\000Breton\000Bosnian\000Catalan; Valencian\000Chechen\000Ch"
-  "amorro\000Corsican\000Cree\000Czech\000Church Slavic; Old Slavonic; Churc"
-  "h Slavonic; Old Bulgarian; Old Church Slavonic\000Chuvash\000Welsh\000Dan"
-  "ish\000German\000Divehi; Dhivehi; Maldivian\000Dzongkha\000Ewe\000Greek, "
-  "Modern (1453-)\000English\000Esperanto\000Spanish; Castilian\000Estonian"
+  "Achinese\000Acoli\000Adangme\000Adyghe; Adygei\000Afro-Asiatic languages"
+  "\000Afrihili\000Ainu\000Akkadian\000Aleut\000Algonquian languages\000Sout"
+  "hern Altai\000English, Old (ca. 450-1100)\000Angika\000Apache languages"
+  "\000Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE)\000Map"
+  "udungun; Mapuche\000Arapaho\000Artificial languages\000Arawak\000Asturian"
+  "; Bable; Leonese; Asturleonese\000Athapascan languages\000Australian lang"
+  "uages\000Awadhi\000Banda languages\000Bamileke languages\000Baluchi\000Ba"
+  "linese\000Basa\000Baltic languages\000Beja; Bedawiyet\000Bemba\000Berber "
+  "languages\000Bhojpuri\000Bikol\000Bini; Edo\000Siksika\000Bantu (Other)"
+  "\000Braj\000Batak languages\000Buriat\000Buginese\000Blin; Bilin\000Caddo"
+  "\000Central American Indian languages\000Galibi Carib\000Caucasian langua"
+  "ges\000Cebuano\000Celtic languages\000Chibcha\000Chagatai\000Chuukese\000"
+  "Mari\000Chinook jargon\000Choctaw\000Chipewyan; Dene Suline\000Cherokee"
+  "\000Cheyenne\000Chamic languages\000Coptic\000Creoles and pidgins, Englis"
+  "h based\000Creoles and pidgins, French-based\000Creoles and pidgins, Port"
+  "uguese-based\000Crimean Tatar; Crimean Turkish\000Creoles and pidgins\000"
+  "Kashubian\000Cushitic languages\000Dakota\000Dargwa\000Land Dayak languag"
+  "es\000Delaware\000Slave (Athapascan)\000Dogrib\000Dinka\000Dogri\000Dravi"
+  "dian languages\000Lower Sorbian\000Duala\000Dutch, Middle (ca. 1050-1350)"
+  "\000Dyula\000Efik\000Egyptian (Ancient)\000Ekajuk\000Elamite\000English, "
+  "Middle (1100-1500)\000Ewondo\000Fang\000Fanti\000Filipino; Pilipino\000Fi"
+  "nno-Ugrian languages\000Fon\000French, Middle (ca. 1400-1600)\000French, "
+  "Old (842-ca. 1400)\000Northern Frisian\000Eastern Frisian\000Friulian\000"
+  "Ga\000Gayo\000Gbaya\000Germanic languages\000Geez\000Gilbertese\000German"
+  ", Middle High (ca. 1050-1500)\000German, Old High (ca. 750-1050)\000Gondi"
+  "\000Gorontalo\000Gothic\000Grebo\000Greek, Ancient (to 1453)\000Swiss Ger"
+  "man; Alemannic; Alsatian\000Gwich'in\000Haida\000Hawaiian\000Hiligaynon"
+  "\000Himachali languages; Western Pahari languages\000Hittite\000Hmong; Mo"
+  "ng\000Upper Sorbian\000Hupa\000Iban\000Ijo languages\000Iloko\000Indic la"
+  "nguages\000Indo-European languages\000Ingush\000Iranian languages\000Iroq"
+  "uoian languages\000Lojban\000Judeo-Persian\000Judeo-Arabic\000Kara-Kalpak"
+  "\000Kabyle\000Kachin; Jingpho\000Kamba\000Karen languages\000Kawi\000Kaba"
+  "rdian\000Khasi\000Khoisan languages\000Khotanese; Sakan\000Kimbundu\000Ko"
+  "nkani\000Kosraean\000Kpelle\000Karachay-Balkar\000Karelian\000Kru languag"
+  "es\000Kurukh\000Kumyk\000Kutenai\000Ladino\000Lahnda\000Lamba\000Lezghian"
+  "\000Mongo\000Lozi\000Luba-Lulua\000Luiseno\000Lunda\000Luo (Kenya and Tan"
+  "zania)\000Lushai\000Madurese\000Magahi\000Maithili\000Makasar\000Mandingo"
+  "\000Austronesian languages\000Masai\000Moksha\000Mandar\000Mende\000Irish"
+  ", Middle (900-1200)\000Mi'kmaq; Micmac\000Minangkabau\000Uncoded language"
+  "s\000Mon-Khmer languages\000Manchu\000Manipuri\000Manobo languages\000Moh"
+  "awk\000Mossi\000Multiple languages\000Munda languages\000Creek\000Mirande"
+  "se\000Marwari\000Mayan languages\000Erzya\000Nahuatl languages\000North A"
+  "merican Indian languages\000Neapolitan\000Low German; Low Saxon; German, "
+  "Low; Saxon, Low\000Nepal Bhasa; Newari\000Nias\000Niger-Kordofanian langu"
+  "ages\000Niuean\000Nogai\000Norse, Old\000N'Ko\000Pedi; Sepedi; Northern S"
+  "otho\000Nubian languages\000Classical Newari; Old Newari; Classical Nepal"
+  " Bhasa\000Nyamwezi\000Nyankole\000Nyoro\000Nzima\000Osage\000Turkish, Ott"
+  "oman (1500-1928)\000Otomian languages\000Papuan languages\000Pangasinan"
+  "\000Pahlavi\000Pampanga; Kapampangan\000Papiamento\000Palauan\000Persian,"
+  " Old (ca. 600-400 B.C.)\000Philippine languages\000Phoenician\000Pohnpeia"
+  "n\000Prakrit languages\000Proven\303\247al, Old (to 1500)\000Reserved for"
+  " local use\000Rajasthani\000Rapanui\000Rarotongan; Cook Islands Maori\000"
+  "Romance languages\000Romany\000Aromanian; Arumanian; Macedo-Romanian\000S"
+  "andawe\000Yakut\000South American Indian (Other)\000Salishan languages"
+  "\000Samaritan Aramaic\000Sasak\000Santali\000Sicilian\000Scots\000Selkup"
+  "\000Semitic languages\000Irish, Old (to 900)\000Sign Languages\000Shan"
+  "\000Sidamo\000Siouan languages\000Sino-Tibetan languages\000Slavic langua"
+  "ges\000Southern Sami\000Sami languages\000Lule Sami\000Inari Sami\000Skol"
+  "t Sami\000Soninke\000Sogdian\000Songhai languages\000Sranan Tongo\000Sere"
+  "r\000Nilo-Saharan languages\000Sukuma\000Susu\000Sumerian\000Classical Sy"
+  "riac\000Syriac\000Tai languages\000Timne\000Tereno\000Tetum\000Tigre\000T"
+  "iv\000Tokelau\000Klingon; tlhIngan-Hol\000Tlingit\000Tamashek\000Tonga (N"
+  "yasa)\000Tok Pisin\000Tsimshian\000Tumbuka\000Tupi languages\000Altaic la"
+  "nguages\000Tuvalu\000Tuvinian\000Udmurt\000Ugaritic\000Umbundu\000Undeter"
+  "mined\000Vai\000Votic\000Wakashan languages\000Walamo\000Waray\000Washo"
+  "\000Sorbian languages\000Kalmyk; Oirat\000Yao\000Yapese\000Yupik language"
+  "s\000Zapotec\000Blissymbols; Blissymbolics; Bliss\000Zenaga\000Standard M"
+  "oroccan Tamazight\000Zande languages\000Zuni\000No linguistic content; No"
+  "t applicable\000Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki\000Afar"
+  "\000Abkhazian\000Avestan\000Afrikaans\000Akan\000Amharic\000Aragonese\000"
+  "Arabic\000Assamese\000Avaric\000Aymara\000Azerbaijani\000Bashkir\000Belar"
+  "usian\000Bulgarian\000Bihari languages\000Bislama\000Bambara\000Bengali"
+  "\000Tibetan\000Breton\000Bosnian\000Catalan; Valencian\000Chechen\000Cham"
+  "orro\000Corsican\000Cree\000Czech\000Church Slavic; Old Slavonic; Church "
+  "Slavonic; Old Bulgarian; Old Church Slavonic\000Chuvash\000Welsh\000Danis"
+  "h\000German\000Divehi; Dhivehi; Maldivian\000Dzongkha\000Ewe\000Greek, Mo"
+  "dern (1453-)\000English\000Esperanto\000Spanish; Castilian\000Estonian"
   "\000Basque\000Persian\000Fulah\000Finnish\000Fijian\000Faroese\000French"
   "\000Western Frisian\000Irish\000Gaelic; Scottish Gaelic\000Galician\000Gu"
   "arani\000Gujarati\000Manx\000Hausa\000Hebrew\000Hindi\000Hiri Motu\000Cro"
index 1245e1c..28279d1 100644 (file)
@@ -370,6 +370,10 @@ gst_tag_get_language_code_iso_639_1 (const gchar * lang_code)
     if (strcmp (lang_code, iso_639_codes[i].iso_639_1) == 0 ||
         strcmp (lang_code, iso_639_codes[i].iso_639_2) == 0) {
       c = iso_639_codes[i].iso_639_1;
+
+      /* If the language code does not have a 2-letter representation, the table
+       * holds an empty string. We want to return NULL in that case. */
+      c = c[0] != '\0' ? c : NULL;
       break;
     }
   }
index 621faf8..30e72a8 100644 (file)
@@ -76,10 +76,6 @@ dump_languages (void)
   for (i = 0, num_escaped = 0; i < languages->len; ++i) {
     IsoLang *lang = &g_array_index (languages, IsoLang, i);
 
-    /* For now just print those where there's both a ISO-639-1 and -2 code */
-    if (lang->code_1[0] == '\0')
-      continue;
-
     /* save current offset */
     lang->name_offset = names->len;