Daryl Lim Claude Sonnet 4.6 commited on
Commit
09577a5
·
1 Parent(s): bfb1fb7

fix: add name spacing correction to generation script

Browse files

Add fix_name_spacing() to scripts/generate_langmap.py that uses regex to
restore spaces lost during PDF word extraction (e.g. MandarinChinese →
Mandarin Chinese, Tonga(TongaIslands) → Tonga (Tonga Islands)). Apply it
in parse_table9() after extracting each language name, then regenerate
langmap/langid_mapping.py — all 418 names now have correct spacing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

langmap/langid_mapping.py CHANGED
@@ -14,9 +14,9 @@ langid_to_language = {
14
  "<2am>": {"name": "Amharic", "region": "Africa"},
15
  "<2bm>": {"name": "Bambara", "region": "Africa"},
16
  "<2bci>": {"name": "Baoulé", "region": "Africa"},
17
- "<2bas>": {"name": "Basa(Cameroon)", "region": "Africa"},
18
  "<2bim>": {"name": "Bimoba", "region": "Africa"},
19
- "<2bqc>": {"name": "Boko(Benin)", "region": "Africa"},
20
  "<2bus>": {"name": "Bokobaru", "region": "Africa"},
21
  "<2bum>": {"name": "Bulu", "region": "Africa"},
22
  "<2ny>": {"name": "Chichewa", "region": "Africa"},
@@ -42,15 +42,15 @@ langid_to_language = {
42
  "<2kbp>": {"name": "Kabiyè", "region": "Africa"},
43
  "<2kmb>": {"name": "Kimbundu", "region": "Africa"},
44
  "<2rw>": {"name": "Kinyarwanda", "region": "Africa"},
45
- "<2ktu>": {"name": "Kituba(DRC)", "region": "Africa"},
46
  "<2kg>": {"name": "Kongo", "region": "Africa"},
47
  "<2kri>": {"name": "Krio", "region": "Africa"},
48
  "<2kj>": {"name": "Kuanyama", "region": "Africa"},
49
- "<2laj>": {"name": "Lango(Uganda)", "region": "Africa"},
50
  "<2ln>": {"name": "Lingala", "region": "Africa"},
51
  "<2lu>": {"name": "Luba-Katanga", "region": "Africa"},
52
  "<2lg>": {"name": "Luganda", "region": "Africa"},
53
- "<2ffm>": {"name": "MaasinaFulfulde", "region": "Africa"},
54
  "<2mgh>": {"name": "Makhuwa-Meetto", "region": "Africa"},
55
  "<2mg>": {"name": "Malagasy", "region": "Africa"},
56
  "<2mas>": {"name": "Masai", "region": "Africa"},
@@ -69,13 +69,13 @@ langid_to_language = {
69
  "<2st>": {"name": "Sesotho", "region": "Africa"},
70
  "<2sn>": {"name": "Shona", "region": "Africa"},
71
  "<2so>": {"name": "Somali", "region": "Africa"},
72
- "<2nr>": {"name": "SouthNdebele", "region": "Africa"},
73
- "<2spp>": {"name": "SupyireSenoufo", "region": "Africa"},
74
  "<2sus>": {"name": "Susu", "region": "Africa"},
75
  "<2sw>": {"name": "Swahili", "region": "Africa"},
76
  "<2ss>": {"name": "Swati", "region": "Africa"},
77
- "<2ber>": {"name": "Tamazight(Tfng)", "region": "Africa"},
78
- "<2tdx>": {"name": "Tandroy-MahafalyMalagasy", "region": "Africa"},
79
  "<2teo>": {"name": "Teso", "region": "Africa"},
80
  "<2tll>": {"name": "Tetela", "region": "Africa"},
81
  "<2ti>": {"name": "Tigrinya", "region": "Africa"},
@@ -95,44 +95,44 @@ langid_to_language = {
95
  "<2agr>": {"name": "Aguaruna", "region": "Americas"},
96
  "<2cni>": {"name": "Asháninka", "region": "Americas"},
97
  "<2kwi>": {"name": "Awa-Cuaiquer", "region": "Americas"},
98
- "<2quy>": {"name": "AyacuchoQuechua", "region": "Americas"},
99
  "<2ay>": {"name": "Aymara", "region": "Americas"},
100
- "<2bzj>": {"name": "BelizeKriolEnglish", "region": "Americas"},
101
- "<2qvc>": {"name": "CajamarcaQuechua", "region": "Americas"},
102
- "<2qxr>": {"name": "CañarH.Quichua", "region": "Americas"},
103
- "<2maz>": {"name": "CentralMazahua", "region": "Americas"},
104
  "<2chr>": {"name": "Cherokee", "region": "Americas"},
105
  "<2ctu>": {"name": "Chol", "region": "Americas"},
106
  "<2cac>": {"name": "Chuj", "region": "Americas"},
107
- "<2gui>": {"name": "E.BolivianGuaraní", "region": "Americas"},
108
- "<2nhe>": {"name": "E.HuastecaNahuatl", "region": "Americas"},
109
- "<2djk>": {"name": "E.MaroonCreole", "region": "Americas"},
110
  "<2sja>": {"name": "Epena", "region": "Americas"},
111
  "<2cab>": {"name": "Garifuna", "region": "Americas"},
112
  "<2guh>": {"name": "Guahibo", "region": "Americas"},
113
  "<2gn>": {"name": "Guarani", "region": "Americas"},
114
- "<2amu>": {"name": "GuerreroAmuzgo", "region": "Americas"},
115
- "<2ngu>": {"name": "GuerreroNahuatl", "region": "Americas"},
116
- "<2gyn>": {"name": "GuyaneseCreoleEnglish", "region": "Americas"},
117
- "<2ht>": {"name": "HaitianCreole", "region": "Americas"},
118
  "<2haw>": {"name": "Hawaiian", "region": "Americas"},
119
- "<2qub>": {"name": "HuallagaHuánucoQuechua", "region": "Americas"},
120
  "<2hus>": {"name": "Huastec", "region": "Americas"},
121
- "<2qvi>": {"name": "ImbaburaH.Quichua", "region": "Americas"},
122
  "<2inb>": {"name": "Inga", "region": "Americas"},
123
  "<2iu>": {"name": "Inuktitut", "region": "Americas"},
124
- "<2jam>": {"name": "JamaicanCreoleEnglish", "region": "Americas"},
125
  "<2kl>": {"name": "Kalaallisut", "region": "Americas"},
126
  "<2cak>": {"name": "Kaqchikel", "region": "Americas"},
127
  "<2kek>": {"name": "Kekchí", "region": "Americas"},
128
  "<2tlh>": {"name": "Klingon", "region": "Americas"},
129
  "<2quc>": {"name": "K’iche’", "region": "Americas"},
130
- "<2quf>": {"name": "LambayequeQuechua", "region": "Americas"},
131
  "<2mam>": {"name": "Mam", "region": "Americas"},
132
  "<2arn>": {"name": "Mapudungun", "region": "Americas"},
133
  "<2miq>": {"name": "Mískito", "region": "Americas"},
134
- "<2emp>": {"name": "N.Emberá", "region": "Americas"},
135
- "<2qvz>": {"name": "N.PastazaQuichua", "region": "Americas"},
136
  "<2nv>": {"name": "Navajo", "region": "Americas"},
137
  "<2gym>": {"name": "Ngäbere", "region": "Americas"},
138
  "<2zxx>": {"name": "Noise", "region": "Americas"},
@@ -140,30 +140,30 @@ langid_to_language = {
140
  "<2pap>": {"name": "Papiamento", "region": "Americas"},
141
  "<2jac>": {"name": "Popti’", "region": "Americas"},
142
  "<2qu>": {"name": "Quechua", "region": "Americas"},
143
- "<2otq>": {"name": "QuerétaroOtomi", "region": "Americas"},
144
- "<2rcf>": {"name": "RéunionCreoleFrench", "region": "Americas"},
145
- "<2quh>": {"name": "S.BolivianQuechua", "region": "Americas"},
146
- "<2qup>": {"name": "S.PastazaQuechua", "region": "Americas"},
147
- "<2cuk>": {"name": "SanBlasKuna", "region": "Americas"},
148
  "<2srm>": {"name": "Saramaccan", "region": "Americas"},
149
- "<2crs>": {"name": "SeselwaCreoleFrench", "region": "Americas"},
150
  "<2shp>": {"name": "Shipibo-Conibo", "region": "Americas"},
151
  "<2jiv>": {"name": "Shuar", "region": "Americas"},
152
- "<2srn>": {"name": "SrananTongo", "region": "Americas"},
153
- "<2acf>": {"name": "StLucianCreoleFrench", "region": "Americas"},
154
  "<2tca>": {"name": "Ticuna", "region": "Americas"},
155
  "<2toj>": {"name": "Tojolabal", "region": "Americas"},
156
  "<2tzh>": {"name": "Tzeltal", "region": "Americas"},
157
  "<2tzo>": {"name": "Tzotzil", "region": "Americas"},
158
  "<2tzj>": {"name": "Tz’utujil", "region": "Americas"},
159
- "<2knj>": {"name": "W.Kanjobal", "region": "Americas"},
160
  "<2guc>": {"name": "Wayuu", "region": "Americas"},
161
- "<2noa>": {"name": "WounMeu", "region": "Americas"},
162
  "<2yua>": {"name": "Yucateco", "region": "Americas"},
163
  "<2zap>": {"name": "Zapotec", "region": "Americas"},
164
  "<2az>": {"name": "Azerbaijani", "region": "Central Asia"},
165
  "<2ba>": {"name": "Bashkir", "region": "Central Asia"},
166
- "<2kaa-Latn>": {"name": "Kara-Kalpak(Latn)", "region": "Central Asia"},
167
  "<2kk>": {"name": "Kazakh", "region": "Central Asia"},
168
  "<2ky>": {"name": "Kyrghyz", "region": "Central Asia"},
169
  "<2tg>": {"name": "Tajik", "region": "Central Asia"},
@@ -173,14 +173,14 @@ langid_to_language = {
173
  "<2dz>": {"name": "Dzongkha", "region": "East Asia"},
174
  "<2ja>": {"name": "Japanese", "region": "East Asia"},
175
  "<2ko>": {"name": "Korean", "region": "East Asia"},
176
- "<2zh>": {"name": "MandarinChinese", "region": "East Asia"},
177
  "<2mn>": {"name": "Mongolian", "region": "East Asia"},
178
  "<2bo>": {"name": "Tibetan", "region": "East Asia"},
179
  "<2sah>": {"name": "Yakut", "region": "East Asia"},
180
  "<2za>": {"name": "Zhuang", "region": "East Asia"},
181
  "<2ady>": {"name": "Adyghe", "region": "Europe"},
182
  "<2sq>": {"name": "Albanian", "region": "Europe"},
183
- "<2grc>": {"name": "AncientGreek", "region": "Europe"},
184
  "<2hy>": {"name": "Armenian", "region": "Europe"},
185
  "<2frp>": {"name": "Arpitan", "region": "Europe"},
186
  "<2av>": {"name": "Avar", "region": "Europe"},
@@ -190,13 +190,13 @@ langid_to_language = {
190
  "<2br>": {"name": "Breton", "region": "Europe"},
191
  "<2bg>": {"name": "Bulgarian", "region": "Europe"},
192
  "<2bua>": {"name": "Buryat", "region": "Europe"},
193
- "<2rmc>": {"name": "CarpathianRomani", "region": "Europe"},
194
  "<2ca>": {"name": "Catalan", "region": "Europe"},
195
  "<2ce>": {"name": "Chechen", "region": "Europe"},
196
  "<2cv>": {"name": "Chuvash", "region": "Europe"},
197
  "<2kw>": {"name": "Cornish", "region": "Europe"},
198
  "<2co>": {"name": "Corsican", "region": "Europe"},
199
- "<2crh>": {"name": "CrimeanTatar", "region": "Europe"},
200
  "<2hr>": {"name": "Croatian", "region": "Europe"},
201
  "<2cs>": {"name": "Czech", "region": "Europe"},
202
  "<2da>": {"name": "Danish", "region": "Europe"},
@@ -213,7 +213,7 @@ langid_to_language = {
213
  "<2ka>": {"name": "Georgian", "region": "Europe"},
214
  "<2de>": {"name": "German", "region": "Europe"},
215
  "<2el>": {"name": "Greek", "region": "Europe"},
216
- "<2mrj>": {"name": "HillMari", "region": "Europe"},
217
  "<2hu>": {"name": "Hungarian", "region": "Europe"},
218
  "<2is>": {"name": "Icelandic", "region": "Europe"},
219
  "<2ga>": {"name": "Irish", "region": "Europe"},
@@ -234,13 +234,13 @@ langid_to_language = {
234
  "<2mk>": {"name": "Macedonian", "region": "Europe"},
235
  "<2mt>": {"name": "Maltese", "region": "Europe"},
236
  "<2gv>": {"name": "Manx", "region": "Europe"},
237
- "<2chm>": {"name": "MeadowMari", "region": "Europe"},
238
  "<2mdf>": {"name": "Moksha", "region": "Europe"},
239
- "<2se>": {"name": "N.Sami", "region": "Europe"},
240
  "<2nog>": {"name": "Nogai", "region": "Europe"},
241
  "<2no>": {"name": "Norwegian", "region": "Europe"},
242
  "<2oc>": {"name": "Occitan", "region": "Europe"},
243
- "<2ang>": {"name": "OldEnglish", "region": "Europe"},
244
  "<2os>": {"name": "Ossetian", "region": "Europe"},
245
  "<2pl>": {"name": "Polish", "region": "Europe"},
246
  "<2pt>": {"name": "Portuguese", "region": "Europe"},
@@ -248,35 +248,35 @@ langid_to_language = {
248
  "<2ro>": {"name": "Romanian", "region": "Europe"},
249
  "<2rm>": {"name": "Romansh", "region": "Europe"},
250
  "<2ru>": {"name": "Russian", "region": "Europe"},
251
- "<2alt>": {"name": "S.Altai", "region": "Europe"},
252
  "<2stq>": {"name": "Saterfriesisch", "region": "Europe"},
253
- "<2gd>": {"name": "ScottishGaelic", "region": "Europe"},
254
  "<2sr>": {"name": "Serbian", "region": "Europe"},
255
  "<2sk>": {"name": "Slovak", "region": "Europe"},
256
  "<2sl>": {"name": "Slovenian", "region": "Europe"},
257
  "<2es>": {"name": "Spanish", "region": "Europe"},
258
  "<2sv>": {"name": "Swedish", "region": "Europe"},
259
- "<2gsw>": {"name": "SwissGerman", "region": "Europe"},
260
  "<2tab>": {"name": "Tabassaran", "region": "Europe"},
261
  "<2tt>": {"name": "Tatar", "region": "Europe"},
262
  "<2tyv>": {"name": "Tuvinian", "region": "Europe"},
263
  "<2udm>": {"name": "Udmurt", "region": "Europe"},
264
  "<2uk>": {"name": "Ukrainian", "region": "Europe"},
265
  "<2vec>": {"name": "Venetian", "region": "Europe"},
266
- "<2fy>": {"name": "W.Frisian", "region": "Europe"},
267
  "<2wa>": {"name": "Walloon", "region": "Europe"},
268
  "<2cy>": {"name": "Welsh", "region": "Europe"},
269
  "<2ar>": {"name": "Arabic", "region": "Middle East & North Africa"},
270
- "<2bgp>": {"name": "E.Baluchi", "region": "Middle East & North Africa"},
271
  "<2mey>": {"name": "Hassaniyya", "region": "Middle East & North Africa"},
272
  "<2he>": {"name": "Hebrew", "region": "Middle East & North Africa"},
273
  "<2ks>": {"name": "Kashmiri", "region": "Middle East & North Africa"},
274
- "<2ku>": {"name": "Kurdish(Kurmanji)", "region": "Middle East & North Africa"},
275
- "<2ckb>": {"name": "Kurdish(Sorani)", "region": "Middle East & North Africa"},
276
- "<2lrc>": {"name": "N.Luri", "region": "Middle East & North Africa"},
277
  "<2ps>": {"name": "Pashto", "region": "Middle East & North Africa"},
278
  "<2fa>": {"name": "Persian", "region": "Middle East & North Africa"},
279
- "<2luz>": {"name": "S.Luri", "region": "Middle East & North Africa"},
280
  "<2skr>": {"name": "Saraiki", "region": "Middle East & North Africa"},
281
  "<2sd>": {"name": "Sindhi", "region": "Middle East & North Africa"},
282
  "<2syr>": {"name": "Syriac", "region": "Middle East & North Africa"},
@@ -293,10 +293,10 @@ langid_to_language = {
293
  "<2chk>": {"name": "Chuukese", "region": "Oceania"},
294
  "<2mps>": {"name": "Dadibi", "region": "Oceania"},
295
  "<2enq>": {"name": "Enga", "region": "Oceania"},
296
- "<2hif>": {"name": "FijiHindi", "region": "Oceania"},
297
  "<2fj>": {"name": "Fijian", "region": "Oceania"},
298
  "<2gil>": {"name": "Gilbertese", "region": "Oceania"},
299
- "<2ho>": {"name": "HiriMotu", "region": "Oceania"},
300
  "<2hui>": {"name": "Huli", "region": "Oceania"},
301
  "<2kos>": {"name": "Kosraean", "region": "Oceania"},
302
  "<2ksd>": {"name": "Kuanua", "region": "Oceania"},
@@ -311,7 +311,7 @@ langid_to_language = {
311
  "<2hvn>": {"name": "Sabu", "region": "Oceania"},
312
  "<2sm>": {"name": "Samoan", "region": "Oceania"},
313
  "<2twu>": {"name": "Termanu", "region": "Oceania"},
314
- "<2to>": {"name": "Tonga(TongaIslands)", "region": "Oceania"},
315
  "<2tvl>": {"name": "Tuvalu", "region": "Oceania"},
316
  "<2ubu>": {"name": "Umbu-Ungu", "region": "Oceania"},
317
  "<2yap>": {"name": "Yapese", "region": "Oceania"},
@@ -319,29 +319,29 @@ langid_to_language = {
319
  "<2awa>": {"name": "Awadhi", "region": "South Asia"},
320
  "<2bn>": {"name": "Bengali", "region": "South Asia"},
321
  "<2bho>": {"name": "Bhojpuri", "region": "South Asia"},
322
- "<2brx>": {"name": "Bodo(India)", "region": "South Asia"},
323
  "<2hne>": {"name": "Chhattisgarhi", "region": "South Asia"},
324
  "<2dv>": {"name": "Dhivehi", "region": "South Asia"},
325
- "<2taj>": {"name": "E.Tamang", "region": "South Asia"},
326
  "<2gbm>": {"name": "Garhwali", "region": "South Asia"},
327
- "<2gom>": {"name": "GoanKonkani", "region": "South Asia"},
328
  "<2gu>": {"name": "Gujarati", "region": "South Asia"},
329
  "<2hi>": {"name": "Hindi", "region": "South Asia"},
330
  "<2bjj>": {"name": "Kanauji", "region": "South Asia"},
331
  "<2kn>": {"name": "Kannada", "region": "South Asia"},
332
  "<2kha>": {"name": "Khasi", "region": "South Asia"},
333
- "<2trp>": {"name": "KokBorok", "region": "South Asia"},
334
  "<2mag>": {"name": "Magahi", "region": "South Asia"},
335
  "<2mai>": {"name": "Maithili", "region": "South Asia"},
336
  "<2ml>": {"name": "Malayalam", "region": "South Asia"},
337
  "<2mr>": {"name": "Marathi", "region": "South Asia"},
338
- "<2mni>": {"name": "Meiteilon(Manipuri)", "region": "South Asia"},
339
  "<2mtr>": {"name": "Mewari", "region": "South Asia"},
340
  "<2lus>": {"name": "Mizo", "region": "South Asia"},
341
  "<2ne>": {"name": "Nepali", "region": "South Asia"},
342
  "<2new>": {"name": "Newari", "region": "South Asia"},
343
  "<2noe>": {"name": "Nimadi", "region": "South Asia"},
344
- "<2or>": {"name": "Odia(Oriya)", "region": "South Asia"},
345
  "<2pa>": {"name": "Punjabi", "region": "South Asia"},
346
  "<2raj>": {"name": "Rajasthani", "region": "South Asia"},
347
  "<2sa>": {"name": "Sanskrit", "region": "South Asia"},
@@ -354,67 +354,67 @@ langid_to_language = {
354
  "<2te>": {"name": "Telugu", "region": "South Asia"},
355
  "<2tcy>": {"name": "Tulu", "region": "South Asia"},
356
  "<2ace>": {"name": "Achinese", "region": "Southeast Asia"},
357
- "<2msm>": {"name": "AgusanManobo", "region": "Southeast Asia"},
358
  "<2ahk>": {"name": "Akha", "region": "Southeast Asia"},
359
  "<2ban>": {"name": "Balinese", "region": "Southeast Asia"},
360
  "<2bgz>": {"name": "Banggai", "region": "Southeast Asia"},
361
- "<2akb>": {"name": "BatakAngkola", "region": "Southeast Asia"},
362
- "<2btx>": {"name": "BatakKaro", "region": "Southeast Asia"},
363
- "<2bts>": {"name": "BatakSimalungun", "region": "Southeast Asia"},
364
- "<2bbc>": {"name": "BatakToba", "region": "Southeast Asia"},
365
  "<2bew>": {"name": "Betawi", "region": "Southeast Asia"},
366
- "<2jvn>": {"name": "CaribbeanJavanese", "region": "Southeast Asia"},
367
  "<2ceb>": {"name": "Cebuano", "region": "Southeast Asia"},
368
- "<2bik>": {"name": "CentralBikol", "region": "Southeast Asia"},
369
- "<2mel>": {"name": "CentralMelanau", "region": "Southeast Asia"},
370
  "<2cbk>": {"name": "Chavacano", "region": "Southeast Asia"},
371
- "<2bru>": {"name": "E.Bru", "region": "Southeast Asia"},
372
- "<2cfm>": {"name": "FalamChin", "region": "Southeast Asia"},
373
  "<2fil>": {"name": "Filipino", "region": "Southeast Asia"},
374
  "<2gor>": {"name": "Gorontalo", "region": "Southeast Asia"},
375
- "<2cnh>": {"name": "HakhaChin", "region": "Southeast Asia"},
376
  "<2hil>": {"name": "Hiligaynon", "region": "Southeast Asia"},
377
  "<2hmn>": {"name": "Hmong", "region": "Southeast Asia"},
378
  "<2iba>": {"name": "Iban", "region": "Southeast Asia"},
379
  "<2ilo>": {"name": "Ilocano", "region": "Southeast Asia"},
380
  "<2id>": {"name": "Indonesian", "region": "Southeast Asia"},
381
- "<2ium>": {"name": "IuMien", "region": "Southeast Asia"},
382
- "<2jax>": {"name": "JambiMalay", "region": "Southeast Asia"},
383
  "<2jv>": {"name": "Javanese", "region": "Southeast Asia"},
384
  "<2kac>": {"name": "Kachin", "region": "Southeast Asia"},
385
- "<2dtp>": {"name": "KadazanDusun", "region": "Southeast Asia"},
386
- "<2meo>": {"name": "KedahMalay", "region": "Southeast Asia"},
387
  "<2ify>": {"name": "Keley-IKallahan", "region": "Southeast Asia"},
388
  "<2km>": {"name": "Khmer", "region": "Southeast Asia"},
389
  "<2kjg>": {"name": "Khmu", "region": "Southeast Asia"},
390
  "<2krj>": {"name": "Kinaray-A", "region": "Southeast Asia"},
391
- "<2mkn>": {"name": "KupangMalay", "region": "Southeast Asia"},
392
  "<2lhu>": {"name": "Lahu", "region": "Southeast Asia"},
393
  "<2lo>": {"name": "Lao", "region": "Southeast Asia"},
394
  "<2mad>": {"name": "Madurese", "region": "Southeast Asia"},
395
  "<2mak>": {"name": "Makasar", "region": "Southeast Asia"},
396
  "<2ms>": {"name": "Malay", "region": "Southeast Asia"},
397
- "<2xmm>": {"name": "ManadoMalay", "region": "Southeast Asia"},
398
  "<2mqy>": {"name": "Manggarai", "region": "Southeast Asia"},
399
  "<2mrw>": {"name": "Maranao", "region": "Southeast Asia"},
400
  "<2msb>": {"name": "Masbatenyo", "region": "Southeast Asia"},
401
- "<2mbt>": {"name": "MatigsalugManobo", "region": "Southeast Asia"},
402
  "<2min>": {"name": "Minangkabau", "region": "Southeast Asia"},
403
  "<2mnw>": {"name": "Mon", "region": "Southeast Asia"},
404
- "<2my>": {"name": "Myanmar(Burmese)", "region": "Southeast Asia"},
405
  "<2nij>": {"name": "Ngaju", "region": "Southeast Asia"},
406
  "<2nia>": {"name": "Nias", "region": "Southeast Asia"},
407
- "<2nut>": {"name": "Nung(VietNam)", "region": "Southeast Asia"},
408
- "<2pck>": {"name": "PaiteChin", "region": "Southeast Asia"},
409
  "<2pam>": {"name": "Pampanga", "region": "Southeast Asia"},
410
  "<2pag>": {"name": "Pangasinan", "region": "Southeast Asia"},
411
  "<2prk>": {"name": "Parauk", "region": "Southeast Asia"},
412
  "<2rki>": {"name": "Rakhine", "region": "Southeast Asia"},
413
- "<2msi>": {"name": "SabahMalay", "region": "Southeast Asia"},
414
  "<2sxn>": {"name": "Sangir", "region": "Southeast Asia"},
415
  "<2shn>": {"name": "Shan", "region": "Southeast Asia"},
416
  "<2su>": {"name": "Sundanese", "region": "Southeast Asia"},
417
- "<2ksw>": {"name": "S’gawKaren", "region": "Southeast Asia"},
418
  "<2tsg>": {"name": "Tausug", "region": "Southeast Asia"},
419
  "<2tet>": {"name": "Tetum", "region": "Southeast Asia"},
420
  "<2th>": {"name": "Thai", "region": "Southeast Asia"},
@@ -422,5 +422,5 @@ langid_to_language = {
422
  "<2tyz>": {"name": "Tày", "region": "Southeast Asia"},
423
  "<2ppk>": {"name": "Uma", "region": "Southeast Asia"},
424
  "<2vi>": {"name": "Vietnamese", "region": "Southeast Asia"},
425
- "<2war>": {"name": "Waray(Philippines)", "region": "Southeast Asia"},
426
  }
 
14
  "<2am>": {"name": "Amharic", "region": "Africa"},
15
  "<2bm>": {"name": "Bambara", "region": "Africa"},
16
  "<2bci>": {"name": "Baoulé", "region": "Africa"},
17
+ "<2bas>": {"name": "Basa (Cameroon)", "region": "Africa"},
18
  "<2bim>": {"name": "Bimoba", "region": "Africa"},
19
+ "<2bqc>": {"name": "Boko (Benin)", "region": "Africa"},
20
  "<2bus>": {"name": "Bokobaru", "region": "Africa"},
21
  "<2bum>": {"name": "Bulu", "region": "Africa"},
22
  "<2ny>": {"name": "Chichewa", "region": "Africa"},
 
42
  "<2kbp>": {"name": "Kabiyè", "region": "Africa"},
43
  "<2kmb>": {"name": "Kimbundu", "region": "Africa"},
44
  "<2rw>": {"name": "Kinyarwanda", "region": "Africa"},
45
+ "<2ktu>": {"name": "Kituba (DRC)", "region": "Africa"},
46
  "<2kg>": {"name": "Kongo", "region": "Africa"},
47
  "<2kri>": {"name": "Krio", "region": "Africa"},
48
  "<2kj>": {"name": "Kuanyama", "region": "Africa"},
49
+ "<2laj>": {"name": "Lango (Uganda)", "region": "Africa"},
50
  "<2ln>": {"name": "Lingala", "region": "Africa"},
51
  "<2lu>": {"name": "Luba-Katanga", "region": "Africa"},
52
  "<2lg>": {"name": "Luganda", "region": "Africa"},
53
+ "<2ffm>": {"name": "Maasina Fulfulde", "region": "Africa"},
54
  "<2mgh>": {"name": "Makhuwa-Meetto", "region": "Africa"},
55
  "<2mg>": {"name": "Malagasy", "region": "Africa"},
56
  "<2mas>": {"name": "Masai", "region": "Africa"},
 
69
  "<2st>": {"name": "Sesotho", "region": "Africa"},
70
  "<2sn>": {"name": "Shona", "region": "Africa"},
71
  "<2so>": {"name": "Somali", "region": "Africa"},
72
+ "<2nr>": {"name": "South Ndebele", "region": "Africa"},
73
+ "<2spp>": {"name": "Supyire Senoufo", "region": "Africa"},
74
  "<2sus>": {"name": "Susu", "region": "Africa"},
75
  "<2sw>": {"name": "Swahili", "region": "Africa"},
76
  "<2ss>": {"name": "Swati", "region": "Africa"},
77
+ "<2ber>": {"name": "Tamazight (Tfng)", "region": "Africa"},
78
+ "<2tdx>": {"name": "Tandroy-Mahafaly Malagasy", "region": "Africa"},
79
  "<2teo>": {"name": "Teso", "region": "Africa"},
80
  "<2tll>": {"name": "Tetela", "region": "Africa"},
81
  "<2ti>": {"name": "Tigrinya", "region": "Africa"},
 
95
  "<2agr>": {"name": "Aguaruna", "region": "Americas"},
96
  "<2cni>": {"name": "Asháninka", "region": "Americas"},
97
  "<2kwi>": {"name": "Awa-Cuaiquer", "region": "Americas"},
98
+ "<2quy>": {"name": "Ayacucho Quechua", "region": "Americas"},
99
  "<2ay>": {"name": "Aymara", "region": "Americas"},
100
+ "<2bzj>": {"name": "Belize Kriol English", "region": "Americas"},
101
+ "<2qvc>": {"name": "Cajamarca Quechua", "region": "Americas"},
102
+ "<2qxr>": {"name": "Cañar H. Quichua", "region": "Americas"},
103
+ "<2maz>": {"name": "Central Mazahua", "region": "Americas"},
104
  "<2chr>": {"name": "Cherokee", "region": "Americas"},
105
  "<2ctu>": {"name": "Chol", "region": "Americas"},
106
  "<2cac>": {"name": "Chuj", "region": "Americas"},
107
+ "<2gui>": {"name": "E. Bolivian Guaraní", "region": "Americas"},
108
+ "<2nhe>": {"name": "E. Huasteca Nahuatl", "region": "Americas"},
109
+ "<2djk>": {"name": "E. Maroon Creole", "region": "Americas"},
110
  "<2sja>": {"name": "Epena", "region": "Americas"},
111
  "<2cab>": {"name": "Garifuna", "region": "Americas"},
112
  "<2guh>": {"name": "Guahibo", "region": "Americas"},
113
  "<2gn>": {"name": "Guarani", "region": "Americas"},
114
+ "<2amu>": {"name": "Guerrero Amuzgo", "region": "Americas"},
115
+ "<2ngu>": {"name": "Guerrero Nahuatl", "region": "Americas"},
116
+ "<2gyn>": {"name": "Guyanese Creole English", "region": "Americas"},
117
+ "<2ht>": {"name": "Haitian Creole", "region": "Americas"},
118
  "<2haw>": {"name": "Hawaiian", "region": "Americas"},
119
+ "<2qub>": {"name": "Huallaga Huánuco Quechua", "region": "Americas"},
120
  "<2hus>": {"name": "Huastec", "region": "Americas"},
121
+ "<2qvi>": {"name": "Imbabura H. Quichua", "region": "Americas"},
122
  "<2inb>": {"name": "Inga", "region": "Americas"},
123
  "<2iu>": {"name": "Inuktitut", "region": "Americas"},
124
+ "<2jam>": {"name": "Jamaican Creole English", "region": "Americas"},
125
  "<2kl>": {"name": "Kalaallisut", "region": "Americas"},
126
  "<2cak>": {"name": "Kaqchikel", "region": "Americas"},
127
  "<2kek>": {"name": "Kekchí", "region": "Americas"},
128
  "<2tlh>": {"name": "Klingon", "region": "Americas"},
129
  "<2quc>": {"name": "K’iche’", "region": "Americas"},
130
+ "<2quf>": {"name": "Lambayeque Quechua", "region": "Americas"},
131
  "<2mam>": {"name": "Mam", "region": "Americas"},
132
  "<2arn>": {"name": "Mapudungun", "region": "Americas"},
133
  "<2miq>": {"name": "Mískito", "region": "Americas"},
134
+ "<2emp>": {"name": "N. Emberá", "region": "Americas"},
135
+ "<2qvz>": {"name": "N. Pastaza Quichua", "region": "Americas"},
136
  "<2nv>": {"name": "Navajo", "region": "Americas"},
137
  "<2gym>": {"name": "Ngäbere", "region": "Americas"},
138
  "<2zxx>": {"name": "Noise", "region": "Americas"},
 
140
  "<2pap>": {"name": "Papiamento", "region": "Americas"},
141
  "<2jac>": {"name": "Popti’", "region": "Americas"},
142
  "<2qu>": {"name": "Quechua", "region": "Americas"},
143
+ "<2otq>": {"name": "Querétaro Otomi", "region": "Americas"},
144
+ "<2rcf>": {"name": "Réunion Creole French", "region": "Americas"},
145
+ "<2quh>": {"name": "S. Bolivian Quechua", "region": "Americas"},
146
+ "<2qup>": {"name": "S. Pastaza Quechua", "region": "Americas"},
147
+ "<2cuk>": {"name": "San Blas Kuna", "region": "Americas"},
148
  "<2srm>": {"name": "Saramaccan", "region": "Americas"},
149
+ "<2crs>": {"name": "Seselwa Creole French", "region": "Americas"},
150
  "<2shp>": {"name": "Shipibo-Conibo", "region": "Americas"},
151
  "<2jiv>": {"name": "Shuar", "region": "Americas"},
152
+ "<2srn>": {"name": "Sranan Tongo", "region": "Americas"},
153
+ "<2acf>": {"name": "St Lucian Creole French", "region": "Americas"},
154
  "<2tca>": {"name": "Ticuna", "region": "Americas"},
155
  "<2toj>": {"name": "Tojolabal", "region": "Americas"},
156
  "<2tzh>": {"name": "Tzeltal", "region": "Americas"},
157
  "<2tzo>": {"name": "Tzotzil", "region": "Americas"},
158
  "<2tzj>": {"name": "Tz’utujil", "region": "Americas"},
159
+ "<2knj>": {"name": "W. Kanjobal", "region": "Americas"},
160
  "<2guc>": {"name": "Wayuu", "region": "Americas"},
161
+ "<2noa>": {"name": "Woun Meu", "region": "Americas"},
162
  "<2yua>": {"name": "Yucateco", "region": "Americas"},
163
  "<2zap>": {"name": "Zapotec", "region": "Americas"},
164
  "<2az>": {"name": "Azerbaijani", "region": "Central Asia"},
165
  "<2ba>": {"name": "Bashkir", "region": "Central Asia"},
166
+ "<2kaa-Latn>": {"name": "Kara-Kalpak (Latn)", "region": "Central Asia"},
167
  "<2kk>": {"name": "Kazakh", "region": "Central Asia"},
168
  "<2ky>": {"name": "Kyrghyz", "region": "Central Asia"},
169
  "<2tg>": {"name": "Tajik", "region": "Central Asia"},
 
173
  "<2dz>": {"name": "Dzongkha", "region": "East Asia"},
174
  "<2ja>": {"name": "Japanese", "region": "East Asia"},
175
  "<2ko>": {"name": "Korean", "region": "East Asia"},
176
+ "<2zh>": {"name": "Mandarin Chinese", "region": "East Asia"},
177
  "<2mn>": {"name": "Mongolian", "region": "East Asia"},
178
  "<2bo>": {"name": "Tibetan", "region": "East Asia"},
179
  "<2sah>": {"name": "Yakut", "region": "East Asia"},
180
  "<2za>": {"name": "Zhuang", "region": "East Asia"},
181
  "<2ady>": {"name": "Adyghe", "region": "Europe"},
182
  "<2sq>": {"name": "Albanian", "region": "Europe"},
183
+ "<2grc>": {"name": "Ancient Greek", "region": "Europe"},
184
  "<2hy>": {"name": "Armenian", "region": "Europe"},
185
  "<2frp>": {"name": "Arpitan", "region": "Europe"},
186
  "<2av>": {"name": "Avar", "region": "Europe"},
 
190
  "<2br>": {"name": "Breton", "region": "Europe"},
191
  "<2bg>": {"name": "Bulgarian", "region": "Europe"},
192
  "<2bua>": {"name": "Buryat", "region": "Europe"},
193
+ "<2rmc>": {"name": "Carpathian Romani", "region": "Europe"},
194
  "<2ca>": {"name": "Catalan", "region": "Europe"},
195
  "<2ce>": {"name": "Chechen", "region": "Europe"},
196
  "<2cv>": {"name": "Chuvash", "region": "Europe"},
197
  "<2kw>": {"name": "Cornish", "region": "Europe"},
198
  "<2co>": {"name": "Corsican", "region": "Europe"},
199
+ "<2crh>": {"name": "Crimean Tatar", "region": "Europe"},
200
  "<2hr>": {"name": "Croatian", "region": "Europe"},
201
  "<2cs>": {"name": "Czech", "region": "Europe"},
202
  "<2da>": {"name": "Danish", "region": "Europe"},
 
213
  "<2ka>": {"name": "Georgian", "region": "Europe"},
214
  "<2de>": {"name": "German", "region": "Europe"},
215
  "<2el>": {"name": "Greek", "region": "Europe"},
216
+ "<2mrj>": {"name": "Hill Mari", "region": "Europe"},
217
  "<2hu>": {"name": "Hungarian", "region": "Europe"},
218
  "<2is>": {"name": "Icelandic", "region": "Europe"},
219
  "<2ga>": {"name": "Irish", "region": "Europe"},
 
234
  "<2mk>": {"name": "Macedonian", "region": "Europe"},
235
  "<2mt>": {"name": "Maltese", "region": "Europe"},
236
  "<2gv>": {"name": "Manx", "region": "Europe"},
237
+ "<2chm>": {"name": "Meadow Mari", "region": "Europe"},
238
  "<2mdf>": {"name": "Moksha", "region": "Europe"},
239
+ "<2se>": {"name": "N. Sami", "region": "Europe"},
240
  "<2nog>": {"name": "Nogai", "region": "Europe"},
241
  "<2no>": {"name": "Norwegian", "region": "Europe"},
242
  "<2oc>": {"name": "Occitan", "region": "Europe"},
243
+ "<2ang>": {"name": "Old English", "region": "Europe"},
244
  "<2os>": {"name": "Ossetian", "region": "Europe"},
245
  "<2pl>": {"name": "Polish", "region": "Europe"},
246
  "<2pt>": {"name": "Portuguese", "region": "Europe"},
 
248
  "<2ro>": {"name": "Romanian", "region": "Europe"},
249
  "<2rm>": {"name": "Romansh", "region": "Europe"},
250
  "<2ru>": {"name": "Russian", "region": "Europe"},
251
+ "<2alt>": {"name": "S. Altai", "region": "Europe"},
252
  "<2stq>": {"name": "Saterfriesisch", "region": "Europe"},
253
+ "<2gd>": {"name": "Scottish Gaelic", "region": "Europe"},
254
  "<2sr>": {"name": "Serbian", "region": "Europe"},
255
  "<2sk>": {"name": "Slovak", "region": "Europe"},
256
  "<2sl>": {"name": "Slovenian", "region": "Europe"},
257
  "<2es>": {"name": "Spanish", "region": "Europe"},
258
  "<2sv>": {"name": "Swedish", "region": "Europe"},
259
+ "<2gsw>": {"name": "Swiss German", "region": "Europe"},
260
  "<2tab>": {"name": "Tabassaran", "region": "Europe"},
261
  "<2tt>": {"name": "Tatar", "region": "Europe"},
262
  "<2tyv>": {"name": "Tuvinian", "region": "Europe"},
263
  "<2udm>": {"name": "Udmurt", "region": "Europe"},
264
  "<2uk>": {"name": "Ukrainian", "region": "Europe"},
265
  "<2vec>": {"name": "Venetian", "region": "Europe"},
266
+ "<2fy>": {"name": "W. Frisian", "region": "Europe"},
267
  "<2wa>": {"name": "Walloon", "region": "Europe"},
268
  "<2cy>": {"name": "Welsh", "region": "Europe"},
269
  "<2ar>": {"name": "Arabic", "region": "Middle East & North Africa"},
270
+ "<2bgp>": {"name": "E. Baluchi", "region": "Middle East & North Africa"},
271
  "<2mey>": {"name": "Hassaniyya", "region": "Middle East & North Africa"},
272
  "<2he>": {"name": "Hebrew", "region": "Middle East & North Africa"},
273
  "<2ks>": {"name": "Kashmiri", "region": "Middle East & North Africa"},
274
+ "<2ku>": {"name": "Kurdish (Kurmanji)", "region": "Middle East & North Africa"},
275
+ "<2ckb>": {"name": "Kurdish (Sorani)", "region": "Middle East & North Africa"},
276
+ "<2lrc>": {"name": "N. Luri", "region": "Middle East & North Africa"},
277
  "<2ps>": {"name": "Pashto", "region": "Middle East & North Africa"},
278
  "<2fa>": {"name": "Persian", "region": "Middle East & North Africa"},
279
+ "<2luz>": {"name": "S. Luri", "region": "Middle East & North Africa"},
280
  "<2skr>": {"name": "Saraiki", "region": "Middle East & North Africa"},
281
  "<2sd>": {"name": "Sindhi", "region": "Middle East & North Africa"},
282
  "<2syr>": {"name": "Syriac", "region": "Middle East & North Africa"},
 
293
  "<2chk>": {"name": "Chuukese", "region": "Oceania"},
294
  "<2mps>": {"name": "Dadibi", "region": "Oceania"},
295
  "<2enq>": {"name": "Enga", "region": "Oceania"},
296
+ "<2hif>": {"name": "Fiji Hindi", "region": "Oceania"},
297
  "<2fj>": {"name": "Fijian", "region": "Oceania"},
298
  "<2gil>": {"name": "Gilbertese", "region": "Oceania"},
299
+ "<2ho>": {"name": "Hiri Motu", "region": "Oceania"},
300
  "<2hui>": {"name": "Huli", "region": "Oceania"},
301
  "<2kos>": {"name": "Kosraean", "region": "Oceania"},
302
  "<2ksd>": {"name": "Kuanua", "region": "Oceania"},
 
311
  "<2hvn>": {"name": "Sabu", "region": "Oceania"},
312
  "<2sm>": {"name": "Samoan", "region": "Oceania"},
313
  "<2twu>": {"name": "Termanu", "region": "Oceania"},
314
+ "<2to>": {"name": "Tonga (Tonga Islands)", "region": "Oceania"},
315
  "<2tvl>": {"name": "Tuvalu", "region": "Oceania"},
316
  "<2ubu>": {"name": "Umbu-Ungu", "region": "Oceania"},
317
  "<2yap>": {"name": "Yapese", "region": "Oceania"},
 
319
  "<2awa>": {"name": "Awadhi", "region": "South Asia"},
320
  "<2bn>": {"name": "Bengali", "region": "South Asia"},
321
  "<2bho>": {"name": "Bhojpuri", "region": "South Asia"},
322
+ "<2brx>": {"name": "Bodo (India)", "region": "South Asia"},
323
  "<2hne>": {"name": "Chhattisgarhi", "region": "South Asia"},
324
  "<2dv>": {"name": "Dhivehi", "region": "South Asia"},
325
+ "<2taj>": {"name": "E. Tamang", "region": "South Asia"},
326
  "<2gbm>": {"name": "Garhwali", "region": "South Asia"},
327
+ "<2gom>": {"name": "Goan Konkani", "region": "South Asia"},
328
  "<2gu>": {"name": "Gujarati", "region": "South Asia"},
329
  "<2hi>": {"name": "Hindi", "region": "South Asia"},
330
  "<2bjj>": {"name": "Kanauji", "region": "South Asia"},
331
  "<2kn>": {"name": "Kannada", "region": "South Asia"},
332
  "<2kha>": {"name": "Khasi", "region": "South Asia"},
333
+ "<2trp>": {"name": "Kok Borok", "region": "South Asia"},
334
  "<2mag>": {"name": "Magahi", "region": "South Asia"},
335
  "<2mai>": {"name": "Maithili", "region": "South Asia"},
336
  "<2ml>": {"name": "Malayalam", "region": "South Asia"},
337
  "<2mr>": {"name": "Marathi", "region": "South Asia"},
338
+ "<2mni>": {"name": "Meiteilon (Manipuri)", "region": "South Asia"},
339
  "<2mtr>": {"name": "Mewari", "region": "South Asia"},
340
  "<2lus>": {"name": "Mizo", "region": "South Asia"},
341
  "<2ne>": {"name": "Nepali", "region": "South Asia"},
342
  "<2new>": {"name": "Newari", "region": "South Asia"},
343
  "<2noe>": {"name": "Nimadi", "region": "South Asia"},
344
+ "<2or>": {"name": "Odia (Oriya)", "region": "South Asia"},
345
  "<2pa>": {"name": "Punjabi", "region": "South Asia"},
346
  "<2raj>": {"name": "Rajasthani", "region": "South Asia"},
347
  "<2sa>": {"name": "Sanskrit", "region": "South Asia"},
 
354
  "<2te>": {"name": "Telugu", "region": "South Asia"},
355
  "<2tcy>": {"name": "Tulu", "region": "South Asia"},
356
  "<2ace>": {"name": "Achinese", "region": "Southeast Asia"},
357
+ "<2msm>": {"name": "Agusan Manobo", "region": "Southeast Asia"},
358
  "<2ahk>": {"name": "Akha", "region": "Southeast Asia"},
359
  "<2ban>": {"name": "Balinese", "region": "Southeast Asia"},
360
  "<2bgz>": {"name": "Banggai", "region": "Southeast Asia"},
361
+ "<2akb>": {"name": "Batak Angkola", "region": "Southeast Asia"},
362
+ "<2btx>": {"name": "Batak Karo", "region": "Southeast Asia"},
363
+ "<2bts>": {"name": "Batak Simalungun", "region": "Southeast Asia"},
364
+ "<2bbc>": {"name": "Batak Toba", "region": "Southeast Asia"},
365
  "<2bew>": {"name": "Betawi", "region": "Southeast Asia"},
366
+ "<2jvn>": {"name": "Caribbean Javanese", "region": "Southeast Asia"},
367
  "<2ceb>": {"name": "Cebuano", "region": "Southeast Asia"},
368
+ "<2bik>": {"name": "Central Bikol", "region": "Southeast Asia"},
369
+ "<2mel>": {"name": "Central Melanau", "region": "Southeast Asia"},
370
  "<2cbk>": {"name": "Chavacano", "region": "Southeast Asia"},
371
+ "<2bru>": {"name": "E. Bru", "region": "Southeast Asia"},
372
+ "<2cfm>": {"name": "Falam Chin", "region": "Southeast Asia"},
373
  "<2fil>": {"name": "Filipino", "region": "Southeast Asia"},
374
  "<2gor>": {"name": "Gorontalo", "region": "Southeast Asia"},
375
+ "<2cnh>": {"name": "Hakha Chin", "region": "Southeast Asia"},
376
  "<2hil>": {"name": "Hiligaynon", "region": "Southeast Asia"},
377
  "<2hmn>": {"name": "Hmong", "region": "Southeast Asia"},
378
  "<2iba>": {"name": "Iban", "region": "Southeast Asia"},
379
  "<2ilo>": {"name": "Ilocano", "region": "Southeast Asia"},
380
  "<2id>": {"name": "Indonesian", "region": "Southeast Asia"},
381
+ "<2ium>": {"name": "Iu Mien", "region": "Southeast Asia"},
382
+ "<2jax>": {"name": "Jambi Malay", "region": "Southeast Asia"},
383
  "<2jv>": {"name": "Javanese", "region": "Southeast Asia"},
384
  "<2kac>": {"name": "Kachin", "region": "Southeast Asia"},
385
+ "<2dtp>": {"name": "Kadazan Dusun", "region": "Southeast Asia"},
386
+ "<2meo>": {"name": "Kedah Malay", "region": "Southeast Asia"},
387
  "<2ify>": {"name": "Keley-IKallahan", "region": "Southeast Asia"},
388
  "<2km>": {"name": "Khmer", "region": "Southeast Asia"},
389
  "<2kjg>": {"name": "Khmu", "region": "Southeast Asia"},
390
  "<2krj>": {"name": "Kinaray-A", "region": "Southeast Asia"},
391
+ "<2mkn>": {"name": "Kupang Malay", "region": "Southeast Asia"},
392
  "<2lhu>": {"name": "Lahu", "region": "Southeast Asia"},
393
  "<2lo>": {"name": "Lao", "region": "Southeast Asia"},
394
  "<2mad>": {"name": "Madurese", "region": "Southeast Asia"},
395
  "<2mak>": {"name": "Makasar", "region": "Southeast Asia"},
396
  "<2ms>": {"name": "Malay", "region": "Southeast Asia"},
397
+ "<2xmm>": {"name": "Manado Malay", "region": "Southeast Asia"},
398
  "<2mqy>": {"name": "Manggarai", "region": "Southeast Asia"},
399
  "<2mrw>": {"name": "Maranao", "region": "Southeast Asia"},
400
  "<2msb>": {"name": "Masbatenyo", "region": "Southeast Asia"},
401
+ "<2mbt>": {"name": "Matigsalug Manobo", "region": "Southeast Asia"},
402
  "<2min>": {"name": "Minangkabau", "region": "Southeast Asia"},
403
  "<2mnw>": {"name": "Mon", "region": "Southeast Asia"},
404
+ "<2my>": {"name": "Myanmar (Burmese)", "region": "Southeast Asia"},
405
  "<2nij>": {"name": "Ngaju", "region": "Southeast Asia"},
406
  "<2nia>": {"name": "Nias", "region": "Southeast Asia"},
407
+ "<2nut>": {"name": "Nung (Viet Nam)", "region": "Southeast Asia"},
408
+ "<2pck>": {"name": "Paite Chin", "region": "Southeast Asia"},
409
  "<2pam>": {"name": "Pampanga", "region": "Southeast Asia"},
410
  "<2pag>": {"name": "Pangasinan", "region": "Southeast Asia"},
411
  "<2prk>": {"name": "Parauk", "region": "Southeast Asia"},
412
  "<2rki>": {"name": "Rakhine", "region": "Southeast Asia"},
413
+ "<2msi>": {"name": "Sabah Malay", "region": "Southeast Asia"},
414
  "<2sxn>": {"name": "Sangir", "region": "Southeast Asia"},
415
  "<2shn>": {"name": "Shan", "region": "Southeast Asia"},
416
  "<2su>": {"name": "Sundanese", "region": "Southeast Asia"},
417
+ "<2ksw>": {"name": "S’gaw Karen", "region": "Southeast Asia"},
418
  "<2tsg>": {"name": "Tausug", "region": "Southeast Asia"},
419
  "<2tet>": {"name": "Tetum", "region": "Southeast Asia"},
420
  "<2th>": {"name": "Thai", "region": "Southeast Asia"},
 
422
  "<2tyz>": {"name": "Tày", "region": "Southeast Asia"},
423
  "<2ppk>": {"name": "Uma", "region": "Southeast Asia"},
424
  "<2vi>": {"name": "Vietnamese", "region": "Southeast Asia"},
425
+ "<2war>": {"name": "Waray (Philippines)", "region": "Southeast Asia"},
426
  }
scripts/generate_langmap.py CHANGED
@@ -417,6 +417,23 @@ LANGUAGE_OVERRIDES: dict[str, str] = {
417
  }
418
 
419
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
420
  def parse_table9(pdf_path: str) -> list[dict[str, str]]:
421
  """Parse Table 9 from the MADLAD-400 paper using word-based extraction.
422
 
@@ -455,6 +472,7 @@ def parse_table9(pdf_path: str) -> list[dict[str, str]]:
455
  data_ws = [w for w in data_col if abs(w["top"] - bcp_top) <= ROW_TOLERANCE]
456
 
457
  name = " ".join(w["text"] for w in sorted(name_ws, key=lambda w: w["x0"]))
 
458
  script = " ".join(w["text"] for w in sorted(script_ws, key=lambda w: w["x0"]))
459
  data_texts = [w["text"] for w in sorted(data_ws, key=lambda w: w["x0"])]
460
 
 
417
  }
418
 
419
 
420
+ def fix_name_spacing(name: str) -> str:
421
+ """Insert spaces lost during PDF word extraction.
422
+
423
+ PDF word extraction sometimes concatenates adjacent words when they appear
424
+ close together on the page. This function restores spaces before uppercase
425
+ letters that follow lowercase letters, before opening parentheses, and after
426
+ periods followed by uppercase letters.
427
+ """
428
+ # Insert space before uppercase letter following a lowercase/accented lowercase letter
429
+ name = re.sub(r"([a-zà-öø-ÿ])([A-Z])", r"\1 \2", name)
430
+ # Insert space before opening parenthesis following a word character
431
+ name = re.sub(r"(\w)\(", r"\1 (", name)
432
+ # Insert space after period followed by uppercase letter
433
+ name = re.sub(r"\.([A-Z])", r". \1", name)
434
+ return name
435
+
436
+
437
  def parse_table9(pdf_path: str) -> list[dict[str, str]]:
438
  """Parse Table 9 from the MADLAD-400 paper using word-based extraction.
439
 
 
472
  data_ws = [w for w in data_col if abs(w["top"] - bcp_top) <= ROW_TOLERANCE]
473
 
474
  name = " ".join(w["text"] for w in sorted(name_ws, key=lambda w: w["x0"]))
475
+ name = fix_name_spacing(name)
476
  script = " ".join(w["text"] for w in sorted(script_ws, key=lambda w: w["x0"]))
477
  data_texts = [w["text"] for w in sorted(data_ws, key=lambda w: w["x0"])]
478