1 /*
2 * iso639-2 language codes
3 */
4 #include <string.h>
5 #include "iso639_2.h"
6
7 typedef struct {
8 char *code1;
9 char *code2;
10 unsigned char main;
11 char *language;
12 } iso639_2_t;
13
14 static iso639_2_t iso639_2[] = {
15 { "abk", "", 1, "Abkhazian" },
16 { "ace", "", 1, "Achenese" },
17 { "ace", "", 1, "Achinese" },
18 { "ach", "", 1, "Acoli" },
19 { "ada", "", 1, "Adangme" },
20 { "ady", "", 1, "Adygei" },
21 { "ady", "", 1, "Adyghe" },
22 { "aar", "", 1, "Afar" },
23 { "afh", "", 1, "Afrihili" },
24 { "afr", "", 1, "Afrikaans" },
25 { "afa", "", 1, "Afroasiatic languages" },
26 { "ain", "", 1, "Ainu" },
27 { "aka", "", 1, "Akan" },
28 { "akk", "", 1, "Akkadian" },
29 { "alb", "sqi", 1, "Albanian" },
30 { "gsw", "", 1, "Alemannic" },
31 { "ale", "", 1, "Aleut" },
32 { "alg", "", 1, "Algonquian languages" },
33 { "gsw", "", 1, "Alsatian" },
34 { "alt", "", 1, "Altai, Southern" },
35 { "tut", "", 1, "Altaic languages" },
36 { "amh", "", 1, "Amharic" },
37 { "egy", "", 1, "Ancient Egyptian" },
38 { "grc", "", 1, "Ancient Greek" },
39 { "anp", "", 1, "Angika" },
40 { "apa", "", 1, "Apache languages" },
41 { "arc", "", 1, "Aramaic, Imperial" },
42 { "arc", "", 1, "Aramaic, Official" },
43 { "arp", "", 1, "Arapaho" },
44 { "arw", "", 1, "Arawak" },
45 { "arg", "", 1, "Argonese" },
46 { "arm", "hye", 1, "Armenian" },
47 { "rup", "", 1, "Aromanian" },
48 { "art", "", 1, "Artificial languages" },
49 { "rup", "", 1, "Arumanian" },
50 { "asm", "", 1, "Assamese" },
51 { "ast", "", 1, "Asturian" },
52 { "ast", "", 1, "Asturleonese" },
53 { "ath", "", 1, "Athabaskan languages" },
54 { "aus", "", 1, "Australian languages" },
55 { "map", "", 1, "Austronesian languages" },
56 { "ava", "", 1, "Avaric" },
57 { "ave", "", 1, "Avestan" },
58 { "awa", "", 1, "Awadhi" },
59 { "aze", "", 1, "Azerbaijani" },
60 { "ast", "", 1, "Bable" },
61 { "ban", "", 1, "Balinese" },
62 { "bat", "", 1, "Baltic languages" },
63 { "bal", "", 1, "Baluchi" },
64 { "bam", "", 1, "Bambara" },
65 { "bai", "", 1, "Bamileke languages" },
66 { "bad", "", 1, "Banda languages" },
67 { "bnt", "", 1, "Bantu languages" },
68 { "bas", "", 1, "Basa" },
69 { "bak", "", 1, "Bashkir" },
70 { "baq", "eus", 1, "Basque" },
71 { "bej", "", 1, "Bedawiyet" },
72 { "bej", "", 1, "Beja" },
73 { "bel", "", 1, "Belarusian" },
74 { "bem", "", 1, "Bemba" },
75 { "ben", "", 1, "Bengali" },
76 { "ber", "", 1, "Berber languages" },
77 { "bho", "", 1, "Bhojpuri" },
78 { "bih", "", 1, "Bihari languages" },
79 { "bik", "", 1, "Bikol" },
80 { "byn", "", 1, "Bilin" },
81 { "bin", "", 1, "Bini" },
82 { "bis", "", 1, "Bislama" },
83 { "bla", "", 1, "Blackfoot" },
84 { "byn", "", 1, "Blin" },
85 { "zbl", "", 1, "Blissymbols" },
86 { "bos", "", 1, "Bosnian" },
87 { "bra", "", 1, "Braj" },
88 { "btk", "", 1, "Bratak languages" },
89 { "bre", "", 1, "Breton" },
90 { "bug", "", 1, "Buginese" },
91 { "bul", "", 1, "Bulgarian" },
92 { "bua", "", 1, "Buriat" },
93 { "bur", "mya", 1, "Burmese" },
94 { "cad", "", 1, "Caddo" },
95 { "spa", "", 0, "Castilian" },
96 { "cat", "", 1, "Catalan" },
97 { "cau", "", 1, "Caucasian languages" },
98 { "ceb", "", 1, "Cebuano" },
99 { "cel", "", 1, "Celtic languages" },
100 { "cai", "", 1, "Central American Indian languages" },
101 { "khm", "", 1, "Central Khmer" },
102 { "chg", "", 1, "Chagatai" },
103 { "cmc", "", 1, "Chamic languages" },
104 { "cha", "", 1, "Chamorro" },
105 { "che", "", 1, "Chechen" },
106 { "chr", "", 1, "Cherokee" },
107 { "nya", "", 1, "Chewa" },
108 { "chy", "", 1, "Cheyenne" },
109 { "chb", "", 1, "Chibcha" },
110 { "nya", "", 1, "Chichewa" },
111 { "chi", "zho", 1, "Chinese" },
112 { "chn", "", 1, "Chinook Jargon" },
113 { "chp", "", 1, "Chipewyan" },
114 { "cho", "", 1, "Choctaw" },
115 { "zha", "", 1, "Chuang" },
116 { "chu", "", 1, "Church Slavic" },
117 { "chu", "", 1, "Church Slavonic" },
118 { "chk", "", 1, "Chuukese" },
119 { "chv", "", 1, "Chuvash" },
120 { "kbd", "", 1, "Circassian" },
121 { "nwc", "", 1, "Classical Nepal Bhasa" },
122 { "nwc", "", 1, "Classical Newari" },
123 { "syc", "", 1, "Classical Syriac" },
124 { "rar", "", 1, "Cook Islands Maori" },
125 { "cop", "", 1, "Coptic" },
126 { "cor", "", 1, "Cornish" },
127 { "cos", "", 1, "Corsican" },
128 { "cre", "", 1, "Cree" },
129 { "mus", "", 1, "Creek" },
130 { "crp", "", 1, "creoles and pidgins" },
131 { "cpe", "", 1, "creoles and pidgins, English-based" },
132 { "cpf", "", 1, "creoles and pidgins, French-based" },
133 { "cpp", "", 1, "creoles and pidgins, Portuguese-based" },
134 { "crh", "", 1, "Crimean Tartar" },
135 { "crh", "", 1, "Crimean Turkish" },
136 { "hrv", "", 1, "Croatian" },
137 { "cus", "", 1, "Cushitic languages" },
138 { "cze", "ces", 1, "Czech" },
139 { "dak", "", 1, "Dakota" },
140 { "dan", "", 1, "Danish" },
141 { "dar", "", 1, "Dargwa" },
142 { "del", "", 1, "Delaware" },
143 { "chp", "", 1, "Dene Suline" },
144 { "div", "", 1, "Dhivehi" },
145 { "din", "", 1, "Dinka" },
146 { "div", "", 1, "Divehi" },
147 { "doi", "", 1, "Dogri" },
148 { "dgr", "", 1, "Dogrib" },
149 { "dra", "", 1, "Dravidian languages" },
150 { "dua", "", 1, "Duala" },
151 { "dut", "", 1, "Dutch" },
152 { "dum", "", 1, "Dutch, Middle" },
153 { "dyu", "", 1, "Dyula" },
154 { "dzo", "", 1, "Dzongkha" },
155 { "frs", "", 1, "Eastern Frisian" },
156 { "bin", "", 1, "Edo" },
157 { "efi", "", 1, "Efik" },
158 { "egy", "", 1, "Egyptian (Ancient)" },
159 { "eka", "", 1, "Ekajuk" },
160 { "elx", "", 1, "Elamite" },
161 { "eng", "", 1, "English" },
162 { "enm", "", 0, "English, Middle" },
163 { "ang", "", 0, "English, Old" },
164 { "myv", "", 1, "Erzya" },
165 { "epo", "", 1, "Esperanto" },
166 { "est", "", 1, "Estonian" },
167 { "ewe", "", 1, "Ewe" },
168 { "ewo", "", 1, "Ewondo" },
169 { "fan", "", 1, "Fang" },
170 { "fat", "", 1, "Fanti" },
171 { "fao", "", 1, "Faroese" },
172 { "fij", "", 1, "Fijian" },
173 { "fil", "", 1, "Filipino" },
174 { "fin", "", 1, "Finnish" },
175 { "fiu", "", 1, "Finno-Ugric languages" },
176 { "dut", "", 1, "Flemish" },
177 { "fon", "", 1, "Fon" },
178 { "fre", "fra", 1, "French" },
179 { "frm", "", 0, "French, Middle" },
180 { "fro", "", 0, "French, Old" },
181 { "frs", "", 1, "Frisian, Eastern" },
182 { "frr", "", 1, "Frisian, Northern" },
183 { "fry", "", 1, "Frisian, Western" },
184 { "fur", "", 1, "Friulian" },
185 { "ful", "", 1, "Fulah" },
186 { "gaa", "", 1, "Ga" },
187 { "gla", "", 1, "Gaelic" },
188 { "car", "", 1, "Galibi Carib" },
189 { "lug", "", 1, "Ganda" },
190 { "gay", "", 1, "Gayo" },
191 { "gba", "", 1, "Gbaya" },
192 { "gez", "", 1, "Ge'ez" },
193 { "geo", "kat", 1, "Georgian" },
194 { "ger", "deu", 1, "German" },
195 { "nds", "", 1, "German, Low" },
196 { "gmh", "", 1, "German, Middle High" },
197 { "goh", "", 1, "German, Old High" },
198 { "gem", "", 1, "Germanic languages" },
199 { "kik", "", 1, "Gikuyu" },
200 { "gil", "", 1, "Gilbertese" },
201 { "gon", "", 1, "Gondi" },
202 { "gor", "", 1, "Gorontalo" },
203 { "got", "", 1, "Gothic" },
204 { "grb", "", 1, "Grebo" },
205 { "grc", "", 1, "Greek, Ancient" },
206 { "gre", "ell", 1, "Greek, Modern" },
207 { "kal", "", 1, "Greenlandic" },
208 { "grn", "", 1, "Guarani" },
209 { "guj", "", 1, "Gujarati" },
210 { "gwi", "", 1, "Gwich'in" },
211 { "hai", "", 1, "Haida" },
212 { "hat", "", 1, "Haitian" },
213 { "hat", "", 1, "Haitian Creole" },
214 { "hau", "", 1, "Hausa" },
215 { "haw", "", 1, "Hawaiian" },
216 { "heb", "", 1, "Hebrew" },
217 { "hil", "", 1, "Hiligaynon" },
218 { "him", "", 1, "Himachali languages" },
219 { "hin", "", 1, "Hindi" },
220 { "hmo", "", 1, "Hiri Motu" },
221 { "hit", "", 1, "Hittite" },
222 { "hmn", "", 1, "Hmong" },
223 { "hun", "", 1, "Hungarian" },
224 { "hup", "", 1, "Hupa" },
225 { "iba", "", 1, "Iban" },
226 { "ice", "isl", 1, "Icelandic" },
227 { "ido", "", 1, "Ido" },
228 { "ibo", "", 1, "Igbo" },
229 { "ijo", "", 1, "Ijo languages" },
230 { "ilo", "", 1, "Iloko" },
231 { "arc", "", 1, "Imperial Aramaic" },
232 { "smn", "", 1, "Inari Sami" },
233 { "inc", "", 1, "Indic languages" },
234 { "ine", "", 1, "Indo-European languages" },
235 { "ind", "", 1, "Indonesian" },
236 { "inh", "", 1, "Ingush" },
237 { "ina", "", 1, "Interlingua" },
238 { "ile", "", 1, "Interlingue, Occidental" },
239 { "iku", "", 1, "Inuktitut" },
240 { "ipk", "", 1, "Inupiaq" },
241 { "ira", "", 1, "Iranian languages" },
242 { "mga", "", 1, "Irish, Middle" },
243 { "sga", "", 1, "Irish, Old" },
244 { "iro", "", 1, "Iroquoian languages" },
245 { "ita", "", 1, "Italian" },
246 { "jpn", "", 1, "Japanese" },
247 { "jav", "", 1, "Javanese" },
248 { "kac", "", 1, "Jingpho" },
249 { "jrb", "", 1, "Judaeo-Arabic" },
250 { "jpr", "", 1, "Judaeo-Persian" },
251 { "kab", "", 1, "Kabyle" },
252 { "kac", "", 1, "Kachin" },
253 { "kal", "", 1, "Kalaallisut" },
254 { "xal", "", 1, "Kalmyk" },
255 { "kam", "", 1, "Kamba" },
256 { "kan", "", 1, "Kannada" },
257 { "kau", "", 1, "Kanuri" },
258 { "pam", "", 1, "Kapampangan" },
259 { "kaa", "", 1, "Kara-Kalpak" },
260 { "krc", "", 1, "Karachay-Balkar" },
261 { "krl", "", 1, "Karelian" },
262 { "kar", "", 1, "Karen languages" },
263 { "kas", "", 1, "Kashmiri" },
264 { "csb", "", 1, "Kashubian" },
265 { "kaw", "", 1, "Kawi" },
266 { "kaz", "", 1, "Kazakh" },
267 { "kha", "", 1, "Khasi" },
268 { "khi", "", 1, "Khoisan languages" },
269 { "kho", "", 1, "Khotanese" },
270 { "kik", "", 1, "Kikuyu" },
271 { "kmb", "", 1, "Kimbundu" },
272 { "kin", "", 1, "Kinyarwanda" },
273 { "kir", "", 1, "Kirghiz" },
274 { "gil", "", 1, "Kiribati" },
275 { "tlh", "", 1, "Klingon" },
276 { "kom", "", 1, "Komi" },
277 { "kon", "", 1, "Kongo" },
278 { "kok", "", 1, "Konkani" },
279 { "kor", "", 1, "Korean" },
280 { "kos", "", 1, "Kosraean" },
281 { "kpe", "", 1, "Kpelle" },
282 { "kro", "", 1, "Kru languages" },
283 { "kua", "", 1, "Kuanyama" },
284 { "kum", "", 1, "Kumyk" },
285 { "kur", "", 1, "Kurdish" },
286 { "kru", "", 1, "Kurukh" },
287 { "kut", "", 1, "Kutenai" },
288 { "kua", "", 1, "Kwanyama" },
289 { "kir", "", 1, "Kyrgyz" },
290 { "lad", "", 1, "Ladino" },
291 { "lah", "", 1, "Lahnda" },
292 { "lam", "", 1, "Lamba" },
293 { "day", "", 1, "Land Dayak languages" },
294 { "lao", "", 1, "Lao" },
295 { "lat", "", 1, "Latin" },
296 { "lav", "", 1, "Latvian" },
297 { "ast", "", 1, "Leonese" },
298 { "ltz", "", 1, "Letzeburgesch" },
299 { "lez", "", 1, "Lezghian" },
300 { "lim", "", 1, "Limburgan" },
301 { "lim", "", 1, "Limburger" },
302 { "lim", "", 1, "Limburgish" },
303 { "lin", "", 1, "Lingala" },
304 { "lit", "", 1, "Lithuanian" },
305 { "jbo", "", 1, "Lojban" },
306 { "nds", "", 1, "Low German" },
307 { "nds", "", 1, "Low Saxon" },
308 { "dsb", "", 1, "Lower Sorbian" },
309 { "loz", "", 1, "Lozi" },
310 { "lub", "", 1, "Luba-Katanga" },
311 { "lua", "", 1, "Luba-Lulua" },
312 { "lui", "", 1, "Luiseno" },
313 { "smj", "", 1, "Lule Sami" },
314 { "lun", "", 1, "Lunda" },
315 { "luo", "", 1, "Luo" },
316 { "luo", "", 1, "Luo (Kenya and Tanzania)" },
317 { "lus", "", 1, "Lushai" },
318 { "ltz", "", 1, "Luxembourgish" },
319 { "mas", "", 1, "Maasai" },
320 { "rup", "", 1, "Macedo-Romanian" },
321 { "mac", "mkd", 1, "Macedonian" },
322 { "mad", "", 1, "Madurese" },
323 { "mag", "", 1, "Magahi" },
324 { "mai", "", 1, "Maithili" },
325 { "mak", "", 1, "Makasar" },
326 { "mlg", "", 1, "Malagasy" },
327 { "may", "msa", 1, "Malay" },
328 { "mal", "", 1, "Malayalam" },
329 { "div", "", 1, "Maldivian" },
330 { "mlt", "", 1, "Maltese" },
331 { "mnc", "", 1, "Manchu" },
332 { "mdr", "", 1, "Mandar" },
333 { "man", "", 1, "Mandingo" },
334 { "mni", "", 1, "Manipuri" },
335 { "mno", "", 1, "Manobo languages" },
336 { "glv", "", 1, "Manx" },
337 { "mao", "mri", 1, "Maori" },
338 { "arn", "", 1, "Mapuche" },
339 { "arn", "", 1, "Mapudungun" },
340 { "mar", "", 1, "Marathi" },
341 { "chm", "", 1, "Mari" },
342 { "mah", "", 1, "Marshallese" },
343 { "mwr", "", 1, "Marwari" },
344 { "myn", "", 1, "Mayan languages" },
345 { "men", "", 1, "Mende" },
346 { "mic", "", 1, "Mi'kmaq" },
347 { "mic", "", 1, "Micmac" },
348 { "dum", "", 1, "Middle Dutch" },
349 { "enm", "", 1, "Middle English" },
350 { "frm", "", 1, "Middle French" },
351 { "gmh", "", 1, "Middle High German" },
352 { "mga", "", 1, "Middle Irish" },
353 { "pal", "", 1, "Middle Persian" },
354 { "min", "", 1, "Minangkabau" },
355 { "mwl", "", 1, "Mirandese" },
356 { "gre", "ell", 1, "Modern Greek" },
357 { "moh", "", 1, "Mohawk" },
358 { "mdf", "", 1, "Moksha" },
359 { "mkh", "", 1, "Mon-Khmer languages" },
360 { "lol", "", 1, "Mongo" },
361 { "mon", "", 1, "Mongolian" },
362 { "mos", "", 1, "Mossi" },
363 { "mul", "", 1, "Multiple languages" },
364 { "mun", "", 1, "Munda languages" },
365 { "nqo", "", 1, "N'Ko" },
366 { "nah", "", 1, "Nahuatl" },
367 { "nau", "", 1, "Nauruan" },
368 { "nav", "", 1, "Navaho" },
369 { "nav", "", 1, "Navajo" },
370 { "ndo", "", 1, "Ndonga" },
371 { "nap", "", 1, "Neapolitan" },
372 { "new", "", 1, "Nepal Bhasa" },
373 { "nep", "", 1, "Nepali" },
374 { "new", "", 1, "Newari" },
375 { "nia", "", 1, "Nias" },
376 { "nic", "", 1, "Niger-Congo languages" },
377 { "ssa", "", 1, "Nilo-Saharan languages" },
378 { "niu", "", 1, "Niuean" },
379 { "nog", "", 1, "Nogai" },
380 { "non", "", 0, "Norse, Old" },
381 { "nai", "", 1, "North American Indian languages" },
382 { "frr", "", 1, "Northern Frisian" },
383 { "nde", "", 1, "Northern Ndebele" },
384 { "sme", "", 1, "Northern Sami" },
385 { "nso", "", 1, "Northern Sotho" },
386 { "nob", "", 1, "Norwegian Bokmaal" },
387 { "nno", "", 1, "Norwegian Nynorsk" },
388 { "zxx", "", 1, "Not linguistic content; not applicable" },
389 { "nub", "", 1, "Nubian languages" },
390 { "iii", "", 1, "Nuosu" },
391 { "nym", "", 1, "Nyamwezi" },
392 { "nya", "", 1, "Nyanja" },
393 { "nyn", "", 1, "Nyankole" },
394 { "nyr", "", 1, "Nyoro" },
395 { "nzi", "", 1, "Nzima" },
396 { "oci", "", 1, "Occitan" },
397 { "pro", "", 0, "Occitan, Old" },
398 { "arc", "", 1, "Official Aramaic" },
399 { "xal", "", 1, "Oirat" },
400 { "oji", "", 1, "Ojibwa" },
401 { "chu", "", 1, "Old Bulgarian" },
402 { "chu", "", 1, "Old Church Slavonic" },
403 { "ang", "", 1, "Old English" },
404 { "fro", "", 1, "Old French" },
405 { "goh", "", 1, "Old High German" },
406 { "sga", "", 1, "Old Irish" },
407 { "nwc", "", 1, "Old Newari" },
408 { "non", "", 1, "Old Norse" },
409 { "pro", "", 1, "Old Occitan" },
410 { "peo", "", 1, "Old Persian" },
411 { "pro", "", 1, "Old Provencal" },
412 { "chu", "", 1, "Old Slavonic" },
413 { "ori", "", 1, "Oriya" },
414 { "orm", "", 1, "Oromo" },
415 { "osa", "", 1, "Osage" },
416 { "oss", "", 1, "Ossetian" },
417 { "oss", "", 1, "Ossetic" },
418 { "oto", "", 1, "Otomian languages" },
419 { "ota", "", 1, "Ottoman Turkish" },
420 { "pal", "", 1, "Pahlavi" },
421 { "pau", "", 1, "Palauan" },
422 { "pli", "", 1, "Pali" },
423 { "pam", "", 1, "Pampanga" },
424 { "pag", "", 1, "Pangasinan" },
425 { "pan", "", 1, "Panjabi" },
426 { "pap", "", 1, "Papiamento" },
427 { "paa", "", 1, "Papuan languages" },
428 { "pus", "", 1, "Pashto" },
429 { "pus", "", 1, "Pashto language" },
430 { "nso", "", 1, "Pedi" },
431 { "per", "fas", 1, "Persian" },
432 { "pal", "", 0, "Persian, Middle" },
433 { "peo", "", 0, "Persian, Old" },
434 { "phi", "", 1, "Philippine languages" },
435 { "phn", "", 1, "Phoenician" },
436 { "fil", "", 0, "Pilipino" },
437 { "pon", "", 1, "Pohnpeian" },
438 { "pol", "", 1, "Polish" },
439 { "por", "", 1, "Portuguese" },
440 { "pra", "", 1, "Prakit" },
441 { "pro", "", 0, "Provencal, Old" },
442 { "pan", "", 1, "Punjabi" },
443 { "que", "", 1, "Quechua" },
444 { "raj", "", 1, "Rajasthani" },
445 { "rap", "", 1, "Rapanui" },
446 { "rar", "", 1, "Rarotongan" },
447 { "roa", "", 1, "Romance languages" },
448 { "rum", "ron", 1, "Romanian" },
449 { "roh", "", 1, "Romansh" },
450 { "rom", "", 1, "Romany" },
451 { "run", "", 1, "Rundi" },
452 { "rus", "", 1, "Russian" },
453 { "kho", "", 1, "Sakan" },
454 { "sal", "", 1, "Salishan languages" },
455 { "sam", "", 1, "Samaritan Aramaic" },
456 { "smi", "", 1, "Sami languages" },
457 { "smo", "", 1, "Samoan" },
458 { "sad", "", 1, "Sandawe" },
459 { "sag", "", 1, "Sango" },
460 { "san", "", 1, "Sanskrit" },
461 { "sat", "", 1, "Santali" },
462 { "srd", "", 1, "Sardinian" },
463 { "sas", "", 1, "Sasak" },
464 { "nds", "", 1, "Saxon, Low" },
465 { "sco", "", 1, "Scots" },
466 { "gla", "", 1, "Scottish Gaelic" },
467 { "sel", "", 1, "Selkup" },
468 { "sem", "", 1, "Semitic languages" },
469 { "nso", "", 1, "Sepedi" },
470 { "srp", "", 1, "Serbian" },
471 { "srr", "", 1, "Serer" },
472 { "shn", "", 1, "Shan" },
473 { "sna", "", 1, "Shona" },
474 { "iii", "", 1, "Sichuan Yi" },
475 { "scn", "", 1, "Sicilian" },
476 { "sid", "", 1, "Sidamo" },
477 { "sgn", "", 1, "Sign languages" },
478 { "bla", "", 1, "Siksika" },
479 { "snd", "", 1, "Sindhi" },
480 { "sin", "", 1, "Sinhala" },
481 { "sin", "", 1, "Sinhalese" },
482 { "sit", "", 1, "Sino-Tibetan languages" },
483 { "sio", "", 1, "Siouan languages" },
484 { "sms", "", 1, "Skolt Sami" },
485 { "den", "", 1, "Slave (Athapascan)" },
486 { "sla", "", 1, "Slavic languages" },
487 { "slo", "slk", 1, "Slovak" },
488 { "slv", "", 1, "Slovenian" },
489 { "sog", "", 1, "Sogdian" },
490 { "som", "", 1, "Somali" },
491 { "son", "", 1, "Songhay languages" },
492 { "snk", "", 1, "Soninke" },
493 { "wen", "", 1, "Sorbian languages" },
494 { "dsb", "", 1, "Sorbian, Lower" },
495 { "hsb", "", 1, "Sorbian, Upper" },
496 { "sai", "", 1, "South American Indian languages" },
497 { "alt", "", 1, "Southern Altai" },
498 { "nbl", "", 1, "Southern Ndebele" },
499 { "sma", "", 1, "Southern Sami" },
500 { "sot", "", 1, "Southern Sotho" },
501 { "spa", "", 1, "Spanish" },
502 { "srn", "", 1, "Sranan Tongo" },
503 { "zgh", "", 1, "Standard Moroccan Tamazight" },
504 { "suk", "", 1, "Sukuma" },
505 { "sux", "", 1, "Sumerian" },
506 { "sun", "", 1, "Sundanese" },
507 { "sus", "", 1, "Susu" },
508 { "swa", "", 1, "Swahili" },
509 { "ssw", "", 1, "Swati" },
510 { "swe", "", 1, "Swedish" },
511 { "gsw", "", 1, "Swiss German" },
512 { "syr", "", 1, "Syriac" },
513 { "tgl", "", 1, "Tagalog" },
514 { "tah", "", 1, "Tahitian" },
515 { "tai", "", 1, "Tai languages" },
516 { "tgk", "", 1, "Tajik" },
517 { "tmh", "", 1, "Tamashek" },
518 { "tam", "", 1, "Tamil" },
519 { "tat", "", 1, "Tatar" },
520 { "tel", "", 1, "Telugu" },
521 { "ter", "", 1, "Tereno" },
522 { "tet", "", 1, "Tetum" },
523 { "tha", "", 1, "Thai" },
524 { "tib", "bod", 1, "Tibetan" },
525 { "tig", "", 1, "Tigre" },
526 { "tir", "", 1, "Tigrinya" },
527 { "tem", "", 1, "Time" },
528 { "tiv", "", 1, "Tiv" },
529 { "tli", "", 1, "Tlingit" },
530 { "tpi", "", 1, "Tok Pisin" },
531 { "tkl", "", 1, "Tokelau" },
532 { "tog", "", 1, "Tonga (Nyasa)" },
533 { "ton", "", 1, "Tonga (Tonga Islands)" },
534 { "tsi", "", 1, "Tsimshian" },
535 { "tso", "", 1, "Tsonga" },
536 { "tsn", "", 1, "Tswana" },
537 { "tum", "", 1, "Tumbuka" },
538 { "tup", "", 1, "Tupian languages" },
539 { "tur", "", 1, "Turkish" },
540 { "ota", "", 1, "Turkish, Ottoman" },
541 { "tuk", "", 1, "Turkmen" },
542 { "tvl", "", 1, "Tuvalu" },
543 { "tyv", "", 1, "Tuvinian" },
544 { "twi", "", 1, "Twi" },
545 { "udm", "", 1, "Udmurt" },
546 { "uga", "", 1, "Ugaritic" },
547 { "uig", "", 1, "Uighur" },
548 { "ukr", "", 1, "Ukranian" },
549 { "umb", "", 1, "Umbundu" },
550 { "mis", "", 1, "Uncoded languages" },
551 { "und", "", 1, "Undetermined language" },
552 { "hsb", "", 1, "Upper Sorbian" },
553 { "urd", "", 1, "Urdu" },
554 { "uig", "", 1, "Uyghur" },
555 { "uzb", "", 1, "Uzbek" },
556 { "vai", "", 1, "Vai" },
557 { "cat", "", 1, "Valencian" },
558 { "ven", "", 1, "Venda" },
559 { "vie", "", 1, "Vietnamese" },
560 { "vol", "", 1, "Volapuk" },
561 { "vot", "", 1, "Voltic" },
562 { "wak", "", 1, "Wakashan languages" },
563 { "wln", "", 1, "Walloon" },
564 { "war", "", 1, "Waray-Waray" },
565 { "was", "", 1, "Washo" },
566 { "wel", "cym", 1, "Welsh" },
567 { "fry", "", 1, "Western Frisian" },
568 { "wal", "", 1, "Wolaitta" },
569 { "wal", "", 1, "Wolaytta" },
570 { "wol", "", 1, "Wolof" },
571 { "xho", "", 1, "Xhosa" },
572 { "sah", "", 1, "Yakut" },
573 { "yao", "", 1, "Yao" },
574 { "yap", "", 1, "Yapese" },
575 { "yid", "", 1, "Yidish" },
576 { "yor", "", 1, "Yoruba" },
577 { "ypk", "", 1, "Yupik languages" },
578 { "znd", "", 1, "Zande languages" },
579 { "zap", "", 1, "Zapotec" },
580 { "zza", "", 1, "Zaza" },
581 { "zza", "", 1, "Zazaki" },
582 { "zen", "", 1, "Zenaga" },
583 { "zha", "", 1, "Zhuang" },
584 { "zul", "", 1, "Zulu" },
585 { "zun", "", 1, "Zuni" },
586 };
587 static int niso639_2= sizeof( iso639_2 ) / sizeof( iso639_2[0] );
588
589 char *
iso639_2_from_code(char * code)590 iso639_2_from_code( char *code )
591 {
592 int i;
593 for ( i=0; i<niso639_2; ++i ) {
594 if ( !iso639_2[i].main ) continue;
595 if ( !strcasecmp( iso639_2[i].code1, code ) )
596 return iso639_2[i].language;
597 if ( iso639_2[i].code2[0]!='\0' && !strcasecmp( iso639_2[i].code2, code ) )
598 return iso639_2[i].language;
599 }
600 return NULL;
601 }
602
603 char *
iso639_2_from_language(char * lang)604 iso639_2_from_language( char *lang )
605 {
606 int i, n;
607 for ( i=0; i<niso639_2; ++i ) {
608 n = strcasecmp( iso639_2[i].language, lang );
609 if ( n==0 ) return iso639_2[i].code1;
610 if ( n > 0 ) return NULL;
611 }
612 return NULL;
613 }
614
615 #ifdef TEST
616
617 #include <stdio.h>
618 #include <stdlib.h>
619
620 static int
check_alphabetical(void)621 check_alphabetical( void )
622 {
623 char *l1, *l2;
624 int i, ret = 1;
625 l1 = iso639_2[0].language;
626 for ( i=0; i<niso639_2-1; ++i ) {
627 l2 = iso639_2[i+1].language;
628 if ( strcasecmp( l1, l2 ) >= 0 ) {
629 // Patch: Disable output logging
630 ret = 0;
631 }
632 l1 = l2;
633 }
634 return ret;
635 }
636
637 int
main(int argc,char * argv[])638 main( int argc, char *argv[] )
639 {
640 int ok;
641 ok = check_alphabetical();
642 if ( ok ) return EXIT_SUCCESS;
643 return EXIT_FAILURE;
644 }
645
646 #endif
647