MythTV  master
iso639.cpp
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 // Copyright (c) 2003-2004, Daniel Thor Kristjansson
3 
4 #include "iso639.h"
5 
6 #include "mythcorecontext.h"
7 
8 #include <QStringList>
9 
10 QMap<int, QString> iso639_key_to_english_name;
11 static QMap<int, int> s_iso639_key2_to_key3;
12 static QMap<int, int> s_iso639_key3_to_canonical_key3;
13 static QStringList s_languages;
14 static std::vector<int> s_language_keys;
15 
16 /* Note: this file takes a long time to compile. **/
17 
18 static int createCodeToEnglishNamesMap(QMap<int, QString>& names);
19 static int createCode2ToCode3Map(QMap<int, int>& codemap);
20 static int createCodeToCanonicalCodeMap(QMap<int, int>& canonical);
21 
23 {
24  s_languages.clear();
25  s_language_keys.clear();
26 }
27 
33 QStringList iso639_get_language_list(void)
34 {
35  if (s_languages.empty())
36  {
37  for (uint i = 0; true; i++)
38  {
39  QString q = QString("ISO639Language%1").arg(i);
40  QString lang = gCoreContext->GetSetting(q, "").toLower();
41  if (lang.isEmpty())
42  break;
43  s_languages << lang;
44  }
45  if (s_languages.empty())
46  {
47  QString s3 = iso639_str2_to_str3(
48  gCoreContext->GetLanguage().toLower());
49  if (!s3.isEmpty())
50  s_languages << s3;
51  }
52  }
53  return s_languages;
54 }
55 
56 std::vector<int> iso639_get_language_key_list(void)
57 {
58  if (s_language_keys.empty())
59  {
60  const QStringList list = iso639_get_language_list();
61  std::transform(list.cbegin(), list.cend(),
62  std::back_inserter(s_language_keys),
63  [](const QString &str) -> int {return iso639_str3_to_key(str);});
64  }
65  return s_language_keys;
66 }
67 
68 QString iso639_str2_to_str3(const QString &str2)
69 {
70  int key2 = iso639_str2_to_key2(str2.toLatin1().constData());
71  int key3 = 0;
72  if (s_iso639_key2_to_key3.contains(key2))
73  key3 = s_iso639_key2_to_key3[key2];
74  if (key3)
75  return iso639_key_to_str3(key3);
76  return "und";
77 }
78 
79 static QString iso639_Alpha3_toName(const unsigned char *iso639_2)
80 {
81  int alpha3 = iso639_str3_to_key(iso639_2);
82  alpha3 = iso639_key_to_canonical_key(alpha3);
83 
84  if (iso639_key_to_english_name.contains(alpha3))
85  return iso639_key_to_english_name[alpha3];
86 
87  return "Unknown";
88 }
89 
90 static QString iso639_Alpha2_toName(const unsigned char *iso639_1)
91 {
92  int alpha2 = iso639_str2_to_key2(iso639_1);
93 
94  if (s_iso639_key2_to_key3.contains(alpha2))
96 
97  return "Unknown";
98 }
99 
100 QString iso639_str_toName(const unsigned char *iso639)
101 {
102  if (strlen((const char *)iso639) == 2)
103  return iso639_Alpha2_toName(iso639);
104  if (strlen((const char *)iso639) == 3)
105  return iso639_Alpha3_toName(iso639);
106  return "Unknown";
107 }
108 
109 QString iso639_key_toName(int iso639_2)
110 {
111  auto it = iso639_key_to_english_name.constFind(iso639_2);
112  if (it != iso639_key_to_english_name.constEnd())
113  return *it;
114 
115  return "Unknown";
116 }
117 
119 {
120  auto it = s_iso639_key3_to_canonical_key3.constFind(iso639_2);
121  if (it != s_iso639_key3_to_canonical_key3.constEnd())
122  return *it;
123  return iso639_2;
124 }
125 
128 
131 
134 
135 static int createCodeToCanonicalCodeMap(QMap<int, int>& canonical)
136 {
137  canonical[iso639_str3_to_key("sqi")] = iso639_str3_to_key("alb");
138  canonical[iso639_str3_to_key("hye")] = iso639_str3_to_key("arm");
139  canonical[iso639_str3_to_key("eus")] = iso639_str3_to_key("baq");
140  canonical[iso639_str3_to_key("mya")] = iso639_str3_to_key("bur");
141  canonical[iso639_str3_to_key("zho")] = iso639_str3_to_key("chi");
142  canonical[iso639_str3_to_key("ces")] = iso639_str3_to_key("cze");
143  canonical[iso639_str3_to_key("nld")] = iso639_str3_to_key("dut");
144  canonical[iso639_str3_to_key("fra")] = iso639_str3_to_key("fre");
145  canonical[iso639_str3_to_key("kat")] = iso639_str3_to_key("geo");
146  canonical[iso639_str3_to_key("deu")] = iso639_str3_to_key("ger");
147  canonical[iso639_str3_to_key("ell")] = iso639_str3_to_key("gre");
148  canonical[iso639_str3_to_key("isl")] = iso639_str3_to_key("ice");
149  canonical[iso639_str3_to_key("mkd")] = iso639_str3_to_key("mac");
150  canonical[iso639_str3_to_key("mri")] = iso639_str3_to_key("mao");
151  canonical[iso639_str3_to_key("msa")] = iso639_str3_to_key("may");
152  canonical[iso639_str3_to_key("fas")] = iso639_str3_to_key("per");
153  canonical[iso639_str3_to_key("ron")] = iso639_str3_to_key("rum");
154  canonical[iso639_str3_to_key("srp")] = iso639_str3_to_key("scc");
155  canonical[iso639_str3_to_key("hrv")] = iso639_str3_to_key("scr");
156  canonical[iso639_str3_to_key("slk")] = iso639_str3_to_key("slo");
157  canonical[iso639_str3_to_key("bod")] = iso639_str3_to_key("tib");
158  canonical[iso639_str3_to_key("cym")] = iso639_str3_to_key("wel");
159  return 0;
160 }
161 
173 static int createCodeToEnglishNamesMap(QMap<int, QString>& names)
174 {
175  names[iso639_str3_to_key("aar")] = QString("Afar");
176  names[iso639_str3_to_key("abk")] = QString("Abkhazian");
177  names[iso639_str3_to_key("ace")] = QString("Achinese");
178  names[iso639_str3_to_key("ach")] = QString("Acoli");
179  names[iso639_str3_to_key("ada")] = QString("Adangme");
180  names[iso639_str3_to_key("ady")] = QString("Adyghe; Adygei");
181  names[iso639_str3_to_key("afa")] = QString("Afro-Asiatic (Other)");
182  names[iso639_str3_to_key("afh")] = QString("Afrihili");
183  names[iso639_str3_to_key("afr")] = QString("Afrikaans");
184  names[iso639_str3_to_key("aka")] = QString("Akan");
185  names[iso639_str3_to_key("akk")] = QString("Akkadian");
186  names[iso639_str3_to_key("alb")] = QString("Albanian"); // sqi
187  names[iso639_str3_to_key("ale")] = QString("Aleut");
188  names[iso639_str3_to_key("alg")] = QString("Algonquian languages");
189  names[iso639_str3_to_key("amh")] = QString("Amharic");
190  names[iso639_str3_to_key("ang")] = QString("Old English (ca.450-1100)");
191  names[iso639_str3_to_key("apa")] = QString("Apache languages");
192  names[iso639_str3_to_key("ara")] = QString("Arabic");
193  names[iso639_str3_to_key("arc")] = QString("Aramaic");
194  names[iso639_str3_to_key("arg")] = QString("Aragonese");
195  names[iso639_str3_to_key("arm")] = QString("Armenian"); // hye
196  names[iso639_str3_to_key("arn")] = QString("Araucanian");
197  names[iso639_str3_to_key("arp")] = QString("Arapaho");
198  names[iso639_str3_to_key("art")] = QString("Artificial (Other)");
199  names[iso639_str3_to_key("arw")] = QString("Arawak");
200  names[iso639_str3_to_key("asm")] = QString("Assamese");
201  names[iso639_str3_to_key("ast")] = QString("Asturian; Bable");
202  names[iso639_str3_to_key("ath")] = QString("Athapascan languages");
203  names[iso639_str3_to_key("aus")] = QString("Australian languages");
204  names[iso639_str3_to_key("ava")] = QString("Avaric");
205  names[iso639_str3_to_key("ave")] = QString("Avestan");
206  names[iso639_str3_to_key("awa")] = QString("Awadhi");
207  names[iso639_str3_to_key("aym")] = QString("Aymara");
208  names[iso639_str3_to_key("aze")] = QString("Azerbaijani");
209  names[iso639_str3_to_key("bad")] = QString("Banda");
210  names[iso639_str3_to_key("bai")] = QString("Bamileke languages");
211  names[iso639_str3_to_key("bak")] = QString("Bashkir");
212  names[iso639_str3_to_key("bal")] = QString("Baluchi");
213  names[iso639_str3_to_key("bam")] = QString("Bambara");
214  names[iso639_str3_to_key("ban")] = QString("Balinese");
215  names[iso639_str3_to_key("baq")] = QString("Basque"); // eus
216  names[iso639_str3_to_key("bas")] = QString("Basa");
217  names[iso639_str3_to_key("bat")] = QString("Baltic (Other)");
218  names[iso639_str3_to_key("bej")] = QString("Beja");
219  names[iso639_str3_to_key("bel")] = QString("Belarusian");
220  names[iso639_str3_to_key("bem")] = QString("Bemba");
221  names[iso639_str3_to_key("ben")] = QString("Bengali");
222  names[iso639_str3_to_key("ber")] = QString("Berber (Other)");
223  names[iso639_str3_to_key("bho")] = QString("Bhojpuri");
224  names[iso639_str3_to_key("bih")] = QString("Bihari");
225  names[iso639_str3_to_key("bik")] = QString("Bikol");
226  names[iso639_str3_to_key("bin")] = QString("Bini");
227  names[iso639_str3_to_key("bis")] = QString("Bislama");
228  names[iso639_str3_to_key("bla")] = QString("Siksika");
229  names[iso639_str3_to_key("bnt")] = QString("Bantu (Other)");
230  names[iso639_str3_to_key("bos")] = QString("Bosnian");
231  names[iso639_str3_to_key("bra")] = QString("Braj");
232  names[iso639_str3_to_key("bre")] = QString("Breton");
233  names[iso639_str3_to_key("btk")] = QString("Batak (Indonesia)");
234  names[iso639_str3_to_key("bua")] = QString("Buriat");
235  names[iso639_str3_to_key("bug")] = QString("Buginese");
236  names[iso639_str3_to_key("bul")] = QString("Bulgarian");
237  names[iso639_str3_to_key("bur")] = QString("Burmese");
238  names[iso639_str3_to_key("bur")] = QString("Burmese");
239  names[iso639_str3_to_key("byn")] = QString("Blin; Bilin");
240  names[iso639_str3_to_key("cad")] = QString("Caddo");
241  names[iso639_str3_to_key("cai")] = QString("Central American Indian (Other)");
242  names[iso639_str3_to_key("car")] = QString("Carib");
243  names[iso639_str3_to_key("cat")] = QString("Catalan; Valencian");
244  names[iso639_str3_to_key("cau")] = QString("Caucasian (Other)");
245  names[iso639_str3_to_key("ceb")] = QString("Cebuano");
246  names[iso639_str3_to_key("cel")] = QString("Celtic (Other)");
247  names[iso639_str3_to_key("cha")] = QString("Chamorro");
248  names[iso639_str3_to_key("chb")] = QString("Chibcha");
249  names[iso639_str3_to_key("che")] = QString("Chechen");
250  names[iso639_str3_to_key("chg")] = QString("Chagatai");
251  names[iso639_str3_to_key("chi")] = QString("Chinese"); // zho
252  names[iso639_str3_to_key("chk")] = QString("Chuukese");
253  names[iso639_str3_to_key("chm")] = QString("Mari");
254  names[iso639_str3_to_key("chn")] = QString("Chinook jargon");
255  names[iso639_str3_to_key("cho")] = QString("Choctaw");
256  names[iso639_str3_to_key("chp")] = QString("Chipewyan");
257  names[iso639_str3_to_key("chr")] = QString("Cherokee");
258  names[iso639_str3_to_key("chu")] = QString("Church Slavic; Old Slavonic").append(
259  QString("; Church Slavonic; Old Bulgarian; Old Church Slavonic"));
260  names[iso639_str3_to_key("chv")] = QString("Chuvash");
261  names[iso639_str3_to_key("chy")] = QString("Cheyenne");
262  names[iso639_str3_to_key("cmc")] = QString("Chamic languages");
263  names[iso639_str3_to_key("cop")] = QString("Coptic");
264  names[iso639_str3_to_key("cor")] = QString("Cornish");
265  names[iso639_str3_to_key("cos")] = QString("Corsican");
266  names[iso639_str3_to_key("cpe")] = QString("Creoles and pidgins, English based (Other)");
267  names[iso639_str3_to_key("cpf")] = QString("Creoles and pidgins, French-based (Other)");
268  names[iso639_str3_to_key("cpp")] = QString("Creoles and pidgins, Portuguese-based (Other)");
269  names[iso639_str3_to_key("cre")] = QString("Cree");
270  names[iso639_str3_to_key("crh")] = QString("Crimean Tatar; Crimean Turkish");
271  names[iso639_str3_to_key("crp")] = QString("Creoles and pidgins (Other)");
272  names[iso639_str3_to_key("csb")] = QString("Kashubian");
273  names[iso639_str3_to_key("cus")] = QString("Cushitic (Other)");
274  names[iso639_str3_to_key("cze")] = QString("Czech"); // ces
275  names[iso639_str3_to_key("dak")] = QString("Dakota");
276  names[iso639_str3_to_key("dan")] = QString("Danish");
277  names[iso639_str3_to_key("dar")] = QString("Dargwa");
278  names[iso639_str3_to_key("day")] = QString("Dayak");
279  names[iso639_str3_to_key("del")] = QString("Delaware");
280  names[iso639_str3_to_key("den")] = QString("Slave (Athapascan)");
281  names[iso639_str3_to_key("dgr")] = QString("Dogrib");
282  names[iso639_str3_to_key("din")] = QString("Dinka");
283  names[iso639_str3_to_key("div")] = QString("Divehi");
284  names[iso639_str3_to_key("doi")] = QString("Dogri");
285  names[iso639_str3_to_key("dra")] = QString("Dravidian (Other)");
286  names[iso639_str3_to_key("dsb")] = QString("Lower Sorbian");
287  names[iso639_str3_to_key("dua")] = QString("Duala");
288  names[iso639_str3_to_key("dum")] = QString("Middle Dutch (ca.1050-1350)");
289  names[iso639_str3_to_key("dut")] = QString("Dutch; Flemish"); // nld
290  names[iso639_str3_to_key("dyu")] = QString("Dyula");
291  names[iso639_str3_to_key("dzo")] = QString("Dzongkha");
292  names[iso639_str3_to_key("efi")] = QString("Efik");
293  names[iso639_str3_to_key("egy")] = QString("Egyptian (Ancient)");
294  names[iso639_str3_to_key("eka")] = QString("Ekajuk");
295  names[iso639_str3_to_key("elx")] = QString("Elamite");
296  names[iso639_str3_to_key("eng")] = QString("English");
297  names[iso639_str3_to_key("enm")] = QString("Middle English (1100-1500)");
298  names[iso639_str3_to_key("epo")] = QString("Esperanto");
299  names[iso639_str3_to_key("est")] = QString("Estonian");
300  names[iso639_str3_to_key("ewe")] = QString("Ewe");
301  names[iso639_str3_to_key("ewo")] = QString("Ewondo");
302  names[iso639_str3_to_key("fan")] = QString("Fang");
303  names[iso639_str3_to_key("fao")] = QString("Faroese");
304  names[iso639_str3_to_key("fat")] = QString("Fanti");
305  names[iso639_str3_to_key("fij")] = QString("Fijian");
306  names[iso639_str3_to_key("fin")] = QString("Finnish");
307  names[iso639_str3_to_key("fiu")] = QString("Finno-Ugrian (Other)");
308  names[iso639_str3_to_key("fon")] = QString("Fon");
309  names[iso639_str3_to_key("fre")] = QString("French");
310  names[iso639_str3_to_key("frm")] = QString("Middle French (ca.1400-1800)");
311  names[iso639_str3_to_key("fro")] = QString("Old French (842-ca.1400)");
312  names[iso639_str3_to_key("fry")] = QString("Frisian");
313  names[iso639_str3_to_key("ful")] = QString("Fulah");
314  names[iso639_str3_to_key("fur")] = QString("Friulian");
315  names[iso639_str3_to_key("gaa")] = QString("Ga");
316  names[iso639_str3_to_key("gay")] = QString("Gayo");
317  names[iso639_str3_to_key("gba")] = QString("Gbaya");
318  names[iso639_str3_to_key("gem")] = QString("Germanic (Other)");
319  names[iso639_str3_to_key("geo")] = QString("Georgian"); // kat
320  names[iso639_str3_to_key("ger")] = QString("German"); // deu
321  names[iso639_str3_to_key("gez")] = QString("Geez");
322  names[iso639_str3_to_key("gil")] = QString("Gilbertese");
323  names[iso639_str3_to_key("gla")] = QString("Gaelic; Scottish Gaelic");
324  names[iso639_str3_to_key("gle")] = QString("Irish");
325  names[iso639_str3_to_key("glg")] = QString("Gallegan");
326  names[iso639_str3_to_key("glv")] = QString("Manx");
327  names[iso639_str3_to_key("gmh")] = QString("Middle High German (ca.1050-1500)");
328  names[iso639_str3_to_key("goh")] = QString("Old High German (ca.750-1050)");
329  names[iso639_str3_to_key("gon")] = QString("Gondi");
330  names[iso639_str3_to_key("gor")] = QString("Gorontalo");
331  names[iso639_str3_to_key("got")] = QString("Gothic");
332  names[iso639_str3_to_key("grb")] = QString("Grebo");
333  names[iso639_str3_to_key("grc")] = QString("Greek, Ancient (to 1453)");
334  names[iso639_str3_to_key("gre")] = QString("Greek, Modern (1453-)"); // ell
335  names[iso639_str3_to_key("grn")] = QString("Guarani");
336  names[iso639_str3_to_key("guj")] = QString("Gujarati");
337  names[iso639_str3_to_key("gwi")] = QString("Gwich�in");
338  names[iso639_str3_to_key("hai")] = QString("Haida");
339  names[iso639_str3_to_key("hat")] = QString("Haitian; Haitian Creole");
340  names[iso639_str3_to_key("hau")] = QString("Hausa");
341  names[iso639_str3_to_key("haw")] = QString("Hawaiian");
342  names[iso639_str3_to_key("heb")] = QString("Hebrew");
343  names[iso639_str3_to_key("her")] = QString("Herero");
344  names[iso639_str3_to_key("hil")] = QString("Hiligaynon");
345  names[iso639_str3_to_key("him")] = QString("Himachali");
346  names[iso639_str3_to_key("hin")] = QString("Hindi");
347  names[iso639_str3_to_key("hit")] = QString("Hittite");
348  names[iso639_str3_to_key("hmn")] = QString("Hmong");
349  names[iso639_str3_to_key("hmo")] = QString("Hiri Motu");
350  names[iso639_str3_to_key("hsb")] = QString("Upper Sorbian");
351  names[iso639_str3_to_key("hun")] = QString("Hungarian");
352  names[iso639_str3_to_key("hup")] = QString("Hupa");
353  names[iso639_str3_to_key("iba")] = QString("Iban");
354  names[iso639_str3_to_key("ibo")] = QString("Igbo");
355  names[iso639_str3_to_key("ice")] = QString("Icelandic"); // isl
356  names[iso639_str3_to_key("ido")] = QString("Ido");
357  names[iso639_str3_to_key("iii")] = QString("Sichuan Yi");
358  names[iso639_str3_to_key("ijo")] = QString("Ijo");
359  names[iso639_str3_to_key("iku")] = QString("Inuktitut");
360  names[iso639_str3_to_key("ile")] = QString("Interlingue");
361  names[iso639_str3_to_key("ilo")] = QString("Iloko");
362  names[iso639_str3_to_key("ina")] = QString("Interlingua");
363  names[iso639_str3_to_key("inc")] = QString("Indic (Other)");
364  names[iso639_str3_to_key("ind")] = QString("Indonesian");
365  names[iso639_str3_to_key("ine")] = QString("Indo-European (Other)");
366  names[iso639_str3_to_key("inh")] = QString("Ingush");
367  names[iso639_str3_to_key("ipk")] = QString("Inupiaq");
368  names[iso639_str3_to_key("ira")] = QString("Iranian (Other)");
369  names[iso639_str3_to_key("iro")] = QString("Iroquoian languages");
370  names[iso639_str3_to_key("ita")] = QString("Italian");
371  names[iso639_str3_to_key("jav")] = QString("Javanese");
372  names[iso639_str3_to_key("jbo")] = QString("Lojban");
373  names[iso639_str3_to_key("jpn")] = QString("Japanese");
374  names[iso639_str3_to_key("jpr")] = QString("Judeo-Persian");
375  names[iso639_str3_to_key("jrb")] = QString("Judeo-Arabic");
376  names[iso639_str3_to_key("kaa")] = QString("Kara-Kalpak");
377  names[iso639_str3_to_key("kab")] = QString("Kabyle");
378  names[iso639_str3_to_key("kac")] = QString("Kachin");
379  names[iso639_str3_to_key("kal")] = QString("Kalaallisut; Greenlandic");
380  names[iso639_str3_to_key("kam")] = QString("Kamba");
381  names[iso639_str3_to_key("kan")] = QString("Kannada");
382  names[iso639_str3_to_key("kar")] = QString("Karen");
383  names[iso639_str3_to_key("kas")] = QString("Kashmiri");
384  names[iso639_str3_to_key("kau")] = QString("Kanuri");
385  names[iso639_str3_to_key("kaw")] = QString("Kawi");
386  names[iso639_str3_to_key("kaz")] = QString("Kazakh");
387  names[iso639_str3_to_key("kbd")] = QString("Kabardian");
388  names[iso639_str3_to_key("kha")] = QString("Khasi");
389  names[iso639_str3_to_key("khi")] = QString("Khoisan (Other)");
390  names[iso639_str3_to_key("khm")] = QString("Khmer");
391  names[iso639_str3_to_key("kho")] = QString("Khotanese");
392  names[iso639_str3_to_key("kik")] = QString("Kikuyu; Gikuyu");
393  names[iso639_str3_to_key("kin")] = QString("Kinyarwanda");
394  names[iso639_str3_to_key("kir")] = QString("Kirghiz");
395  names[iso639_str3_to_key("kmb")] = QString("Kimbundu");
396  names[iso639_str3_to_key("kok")] = QString("Konkani");
397  names[iso639_str3_to_key("kom")] = QString("Komi");
398  names[iso639_str3_to_key("kon")] = QString("Kongo");
399  names[iso639_str3_to_key("kor")] = QString("Korean");
400  names[iso639_str3_to_key("kos")] = QString("Kosraean");
401  names[iso639_str3_to_key("kpe")] = QString("Kpelle");
402  names[iso639_str3_to_key("krc")] = QString("Karachay-Balkar");
403  names[iso639_str3_to_key("kro")] = QString("Kru");
404  names[iso639_str3_to_key("kru")] = QString("Kurukh");
405  names[iso639_str3_to_key("kua")] = QString("Kuanyama; Kwanyama");
406  names[iso639_str3_to_key("kum")] = QString("Kumyk");
407  names[iso639_str3_to_key("kur")] = QString("Kurdish");
408  names[iso639_str3_to_key("kut")] = QString("Kutenai");
409  names[iso639_str3_to_key("lad")] = QString("Ladino");
410  names[iso639_str3_to_key("lah")] = QString("Lahnda");
411  names[iso639_str3_to_key("lam")] = QString("Lamba");
412  names[iso639_str3_to_key("lao")] = QString("Lao");
413  names[iso639_str3_to_key("lat")] = QString("Latin");
414  names[iso639_str3_to_key("lav")] = QString("Latvian");
415  names[iso639_str3_to_key("lez")] = QString("Lezghian");
416  names[iso639_str3_to_key("lim")] = QString("Limburgan; Limburger; Limburgish");
417  names[iso639_str3_to_key("lin")] = QString("Lingala");
418  names[iso639_str3_to_key("lit")] = QString("Lithuanian");
419  names[iso639_str3_to_key("lol")] = QString("Mongo");
420  names[iso639_str3_to_key("loz")] = QString("Lozi");
421  names[iso639_str3_to_key("ltz")] = QString("Luxembourgish; Letzeburgesch");
422  names[iso639_str3_to_key("lua")] = QString("Luba-Lulua");
423  names[iso639_str3_to_key("lub")] = QString("Luba-Katanga");
424  names[iso639_str3_to_key("lug")] = QString("Ganda");
425  names[iso639_str3_to_key("lui")] = QString("Luiseno");
426  names[iso639_str3_to_key("lun")] = QString("Lunda");
427  names[iso639_str3_to_key("luo")] = QString("Luo (Kenya and Tanzania)");
428  names[iso639_str3_to_key("lus")] = QString("lushai");
429  names[iso639_str3_to_key("mac")] = QString("Macedonian"); // mkd
430  names[iso639_str3_to_key("mad")] = QString("Madurese");
431  names[iso639_str3_to_key("mag")] = QString("Magahi");
432  names[iso639_str3_to_key("mah")] = QString("Marshallese");
433  names[iso639_str3_to_key("mai")] = QString("Maithili");
434  names[iso639_str3_to_key("mak")] = QString("Makasar");
435  names[iso639_str3_to_key("mal")] = QString("Malayalam");
436  names[iso639_str3_to_key("man")] = QString("Mandingo");
437  names[iso639_str3_to_key("mao")] = QString("Maori"); // mri
438  names[iso639_str3_to_key("map")] = QString("Austronesian (Other)");
439  names[iso639_str3_to_key("mar")] = QString("Marathi");
440  names[iso639_str3_to_key("mas")] = QString("Masai");
441  names[iso639_str3_to_key("may")] = QString("Malay"); // msa
442  names[iso639_str3_to_key("mdf")] = QString("Moksha");
443  names[iso639_str3_to_key("mdr")] = QString("Mandar");
444  names[iso639_str3_to_key("men")] = QString("Mende");
445  names[iso639_str3_to_key("mga")] = QString("Middle Irish (900-1200)");
446  names[iso639_str3_to_key("mic")] = QString("Micmac");
447  names[iso639_str3_to_key("min")] = QString("Minangkabau");
448  names[iso639_str3_to_key("mis")] = QString("Miscellaneous languages");
449  names[iso639_str3_to_key("mkh")] = QString("Mon-Khmer (Other)");
450  names[iso639_str3_to_key("mlg")] = QString("Malagasy");
451  names[iso639_str3_to_key("mlt")] = QString("Maltese");
452  names[iso639_str3_to_key("mnc")] = QString("Manchu");
453  names[iso639_str3_to_key("mni")] = QString("Manipuri");
454  names[iso639_str3_to_key("mno")] = QString("Manobo languages");
455  names[iso639_str3_to_key("moh")] = QString("Mohawk");
456  names[iso639_str3_to_key("mol")] = QString("Moldavian");
457  names[iso639_str3_to_key("mon")] = QString("Mongolian");
458  names[iso639_str3_to_key("mos")] = QString("Mossi");
459  names[iso639_str3_to_key("mul")] = QString("Multiple languages");
460  names[iso639_str3_to_key("mun")] = QString("Munda languages");
461  names[iso639_str3_to_key("mus")] = QString("Creek");
462  names[iso639_str3_to_key("mwr")] = QString("Marwari");
463  names[iso639_str3_to_key("myn")] = QString("Mayan languages");
464  names[iso639_str3_to_key("myv")] = QString("Erzya");
465  names[iso639_str3_to_key("nar")] = QString("Narrative"); // UK & Irish DTV Spec
466  names[iso639_str3_to_key("nah")] = QString("Nahuatl");
467  names[iso639_str3_to_key("nai")] = QString("North American Indian");
468  names[iso639_str3_to_key("nap")] = QString("Neapolitan");
469  names[iso639_str3_to_key("nau")] = QString("Nauru");
470  names[iso639_str3_to_key("nav")] = QString("Navajo; Navaho");
471  names[iso639_str3_to_key("nbl")] = QString("Ndebele, South; South Ndebele");
472  names[iso639_str3_to_key("nde")] = QString("Ndebele, North; North Ndebele");
473  names[iso639_str3_to_key("ndo")] = QString("Ndonga");
474  names[iso639_str3_to_key("nds")] = QString("Low German; Low Saxon");
475  names[iso639_str3_to_key("nep")] = QString("Nepali");
476  names[iso639_str3_to_key("new")] = QString("Newari");
477  names[iso639_str3_to_key("nia")] = QString("Nias");
478  names[iso639_str3_to_key("nic")] = QString("Niger-Kordofanian (Other)");
479  names[iso639_str3_to_key("niu")] = QString("Niuean");
480  names[iso639_str3_to_key("nno")] = QString("Norwegian Nynorsk");
481  names[iso639_str3_to_key("nob")] = QString("Norwegian Bokm�l");
482  names[iso639_str3_to_key("nog")] = QString("Nogai");
483  names[iso639_str3_to_key("non")] = QString("Old Norse");
484  names[iso639_str3_to_key("nor")] = QString("Norwegian");
485  names[iso639_str3_to_key("nso")] = QString("Northern Sotho");
486  names[iso639_str3_to_key("nub")] = QString("Nubian languages");
487  names[iso639_str3_to_key("nwc")] = QString("Classical Newari; Old Newari");
488  names[iso639_str3_to_key("nya")] = QString("Chichewa; Chewa; Nyanja");
489  names[iso639_str3_to_key("nym")] = QString("Nyamwezi");
490  names[iso639_str3_to_key("nyn")] = QString("Nyankole");
491  names[iso639_str3_to_key("nyo")] = QString("Nyoro");
492  names[iso639_str3_to_key("nzi")] = QString("Nzima");
493  names[iso639_str3_to_key("oci")] = QString("Occitan (post 1500); Proven�al");
494  names[iso639_str3_to_key("oji")] = QString("Ojibwa");
495  names[iso639_str3_to_key("ori")] = QString("Oriya");
496  names[iso639_str3_to_key("orm")] = QString("Oromo");
497  names[iso639_str3_to_key("osa")] = QString("Osage");
498  names[iso639_str3_to_key("oss")] = QString("Ossetian; Ossetic");
499  names[iso639_str3_to_key("ota")] = QString("Ottoman Turkish (1500-1928)");
500  names[iso639_str3_to_key("oto")] = QString("Otomian languages");
501  names[iso639_str3_to_key("paa")] = QString("Papuan (Other)");
502  names[iso639_str3_to_key("pag")] = QString("Pangasinan");
503  names[iso639_str3_to_key("pal")] = QString("Pahlavi");
504  names[iso639_str3_to_key("pam")] = QString("Pampanga");
505  names[iso639_str3_to_key("pan")] = QString("Panjabi; Punjabi");
506  names[iso639_str3_to_key("pap")] = QString("Papiamento");
507  names[iso639_str3_to_key("pau")] = QString("Palauan");
508  names[iso639_str3_to_key("peo")] = QString("Old Persian (ca.600-400 B.C.)");
509  names[iso639_str3_to_key("per")] = QString("Persian"); // fas
510  names[iso639_str3_to_key("phi")] = QString("Philippine (Other)");
511  names[iso639_str3_to_key("phn")] = QString("Phoenician");
512  names[iso639_str3_to_key("pli")] = QString("Pali");
513  names[iso639_str3_to_key("pol")] = QString("Polish");
514  names[iso639_str3_to_key("pon")] = QString("Pohnpeian");
515  names[iso639_str3_to_key("por")] = QString("Portuguese");
516  names[iso639_str3_to_key("pra")] = QString("Prakrit languages");
517  names[iso639_str3_to_key("pro")] = QString("Old Proven�al (to 1500)");
518  names[iso639_str3_to_key("pus")] = QString("Pushto");
519  names[iso639_str3_to_key("qaa")] = QString("Original language"); // from DVB-SI (EN 300 468)
520  names[iso639_str3_to_key("qtz")] = QString("Reserved for local use");
521  names[iso639_str3_to_key("que")] = QString("Quechua");
522  names[iso639_str3_to_key("raj")] = QString("Rajasthani");
523  names[iso639_str3_to_key("rap")] = QString("Rapanui");
524  names[iso639_str3_to_key("rar")] = QString("Rarotongan");
525  names[iso639_str3_to_key("roa")] = QString("Romance (Other)");
526  names[iso639_str3_to_key("roh")] = QString("Raeto-Romance");
527  names[iso639_str3_to_key("rom")] = QString("Romany");
528  names[iso639_str3_to_key("rum")] = QString("Romanian");
529  names[iso639_str3_to_key("run")] = QString("Rundi");
530  names[iso639_str3_to_key("rus")] = QString("Russian");
531  names[iso639_str3_to_key("sad")] = QString("Sandawe");
532  names[iso639_str3_to_key("sag")] = QString("Sango");
533  names[iso639_str3_to_key("sah")] = QString("Yakut");
534  names[iso639_str3_to_key("sai")] = QString("South American Indian (Other)");
535  names[iso639_str3_to_key("sal")] = QString("Salishan languages");
536  names[iso639_str3_to_key("sam")] = QString("Samaritan Aramaic");
537  names[iso639_str3_to_key("san")] = QString("Sanskrit");
538  names[iso639_str3_to_key("sas")] = QString("Sasak");
539  names[iso639_str3_to_key("sat")] = QString("Santali");
540  names[iso639_str3_to_key("scc")] = QString("Serbian"); // srp
541  names[iso639_str3_to_key("sco")] = QString("Scots");
542  names[iso639_str3_to_key("scr")] = QString("Croatian"); // hrv
543  names[iso639_str3_to_key("sel")] = QString("Selkup");
544  names[iso639_str3_to_key("sem")] = QString("Semitic (Other)");
545  names[iso639_str3_to_key("sga")] = QString("Old Irish (to 900)");
546  names[iso639_str3_to_key("sgn")] = QString("Sign Languages");
547  names[iso639_str3_to_key("shn")] = QString("Shan");
548  names[iso639_str3_to_key("sid")] = QString("Sidamo");
549  names[iso639_str3_to_key("sin")] = QString("Sinhalese");
550  names[iso639_str3_to_key("sio")] = QString("Siouan languages");
551  names[iso639_str3_to_key("sit")] = QString("Sino-Tibetan (Other)");
552  names[iso639_str3_to_key("sla")] = QString("Slavic (Other)");
553  names[iso639_str3_to_key("slo")] = QString("Slovak"); // slk
554  names[iso639_str3_to_key("slv")] = QString("Slovenian");
555  names[iso639_str3_to_key("sma")] = QString("Southern Sami");
556  names[iso639_str3_to_key("sme")] = QString("Northern Sami");
557  names[iso639_str3_to_key("smi")] = QString("Sami languages (Other)");
558  names[iso639_str3_to_key("smj")] = QString("Lule Sami");
559  names[iso639_str3_to_key("smn")] = QString("Inari Sami");
560  names[iso639_str3_to_key("smo")] = QString("Samoan");
561  names[iso639_str3_to_key("sms")] = QString("Skolt Sami");
562  names[iso639_str3_to_key("sna")] = QString("Shona");
563  names[iso639_str3_to_key("snd")] = QString("Sindhi");
564  names[iso639_str3_to_key("snk")] = QString("Soninke");
565  names[iso639_str3_to_key("sog")] = QString("Sogdian");
566  names[iso639_str3_to_key("som")] = QString("Somali");
567  names[iso639_str3_to_key("son")] = QString("Songhai");
568  names[iso639_str3_to_key("sot")] = QString("Sotho, Southern");
569  names[iso639_str3_to_key("spa")] = QString("Spanish; Castilian");
570  names[iso639_str3_to_key("srd")] = QString("Sardinian");
571  names[iso639_str3_to_key("srr")] = QString("Serer");
572  names[iso639_str3_to_key("ssa")] = QString("Nilo-Saharan (Other)");
573  names[iso639_str3_to_key("ssw")] = QString("Swati");
574  names[iso639_str3_to_key("suk")] = QString("Sukuma");
575  names[iso639_str3_to_key("sun")] = QString("Sundanese");
576  names[iso639_str3_to_key("sus")] = QString("Susu");
577  names[iso639_str3_to_key("sux")] = QString("Sumerian");
578  names[iso639_str3_to_key("swa")] = QString("Swahili");
579  names[iso639_str3_to_key("swe")] = QString("Swedish");
580  names[iso639_str3_to_key("syr")] = QString("Syriac");
581  names[iso639_str3_to_key("tah")] = QString("Tahitian");
582  names[iso639_str3_to_key("tai")] = QString("Tai (Other)");
583  names[iso639_str3_to_key("tam")] = QString("Tamil");
584  names[iso639_str3_to_key("tat")] = QString("Tatar");
585  names[iso639_str3_to_key("tel")] = QString("Telugu");
586  names[iso639_str3_to_key("tem")] = QString("Timne");
587  names[iso639_str3_to_key("ter")] = QString("Tereno");
588  names[iso639_str3_to_key("tet")] = QString("Tetum");
589  names[iso639_str3_to_key("tgk")] = QString("Tajik");
590  names[iso639_str3_to_key("tgl")] = QString("Tagalog");
591  names[iso639_str3_to_key("tha")] = QString("Thai");
592  names[iso639_str3_to_key("tib")] = QString("Tibetan"); // bod
593  names[iso639_str3_to_key("tig")] = QString("Tigre");
594  names[iso639_str3_to_key("tir")] = QString("Tigrinya");
595  names[iso639_str3_to_key("tiv")] = QString("Tiv");
596  names[iso639_str3_to_key("tkl")] = QString("Tokelau");
597  names[iso639_str3_to_key("tlh")] = QString("Klingon; tlhlngan-Hol");
598  names[iso639_str3_to_key("tli")] = QString("Tlingit");
599  names[iso639_str3_to_key("tmh")] = QString("Tamashek");
600  names[iso639_str3_to_key("tog")] = QString("Tonga (Nyasa)");
601  names[iso639_str3_to_key("ton")] = QString("Tonga (Tonga Islands)");
602  names[iso639_str3_to_key("tpi")] = QString("Tok Pisin");
603  names[iso639_str3_to_key("tsi")] = QString("Tsimshian");
604  names[iso639_str3_to_key("tsn")] = QString("Tswana");
605  names[iso639_str3_to_key("tso")] = QString("Tsonga");
606  names[iso639_str3_to_key("tuk")] = QString("Turkmen");
607  names[iso639_str3_to_key("tum")] = QString("Tumbuka");
608  names[iso639_str3_to_key("tup")] = QString("Tupi languages");
609  names[iso639_str3_to_key("tur")] = QString("Turkish");
610  names[iso639_str3_to_key("tut")] = QString("Altaic (Other)");
611  names[iso639_str3_to_key("tvl")] = QString("Tuvalu");
612  names[iso639_str3_to_key("twi")] = QString("Twi");
613  names[iso639_str3_to_key("tyv")] = QString("Tuvinian");
614  names[iso639_str3_to_key("udm")] = QString("Udmurt");
615  names[iso639_str3_to_key("uga")] = QString("Ugaritic");
616  names[iso639_str3_to_key("uig")] = QString("Uighur");
617  names[iso639_str3_to_key("ukr")] = QString("Ukrainian");
618  names[iso639_str3_to_key("umb")] = QString("Umbundu");
619  names[iso639_str3_to_key("und")] = QString("Undetermined");
620  names[iso639_str3_to_key("urd")] = QString("Urdu");
621  names[iso639_str3_to_key("uzb")] = QString("Uzbek");
622  names[iso639_str3_to_key("vai")] = QString("Vai");
623  names[iso639_str3_to_key("ven")] = QString("Venda");
624  names[iso639_str3_to_key("vie")] = QString("Vietnamese");
625  names[iso639_str3_to_key("vol")] = QString("Volap�k");
626  names[iso639_str3_to_key("vot")] = QString("Votic");
627  names[iso639_str3_to_key("wak")] = QString("Wakashan languages");
628  names[iso639_str3_to_key("wal")] = QString("Walamo");
629  names[iso639_str3_to_key("war")] = QString("Waray");
630  names[iso639_str3_to_key("was")] = QString("Washo");
631  names[iso639_str3_to_key("wel")] = QString("Welsh"); // cym
632  names[iso639_str3_to_key("wen")] = QString("Sorbian languages");
633  names[iso639_str3_to_key("wln")] = QString("Walloon");
634  names[iso639_str3_to_key("wol")] = QString("Wolof");
635  names[iso639_str3_to_key("xal")] = QString("Kalmyk");
636  names[iso639_str3_to_key("xho")] = QString("Xhosa");
637  names[iso639_str3_to_key("yao")] = QString("Yao");
638  names[iso639_str3_to_key("yap")] = QString("Yapese");
639  names[iso639_str3_to_key("yid")] = QString("Yiddish");
640  names[iso639_str3_to_key("yor")] = QString("Yoruba");
641  names[iso639_str3_to_key("ypk")] = QString("Yupik languages");
642  names[iso639_str3_to_key("zap")] = QString("Zapotec");
643  names[iso639_str3_to_key("zen")] = QString("Zenaga");
644  names[iso639_str3_to_key("zha")] = QString("Zhuang; Chuang");
645  names[iso639_str3_to_key("znd")] = QString("Zande");
646  names[iso639_str3_to_key("zul")] = QString("Zulu");
647  names[iso639_str3_to_key("zun")] = QString("Zuni");
648  return 0;
649 }
650 
651 /*
652  awk script:
653  cat ISO-639-2_values_8bits.txt | \
654  awk -F'|' '{if ($3 != "") printf " codemap[iso639_str2_to_key(\"%s\")] = iso639_str3_to_key(\"%s\");\n", $3, $1}'
655 */
656 
657 static int createCode2ToCode3Map(QMap<int, int>& codemap) {
658  codemap[iso639_str2_to_key2("aa")] = iso639_str3_to_key("aar");
659  codemap[iso639_str2_to_key2("ab")] = iso639_str3_to_key("abk");
660  codemap[iso639_str2_to_key2("af")] = iso639_str3_to_key("afr");
661  codemap[iso639_str2_to_key2("ak")] = iso639_str3_to_key("aka");
662  codemap[iso639_str2_to_key2("sq")] = iso639_str3_to_key("alb");
663  codemap[iso639_str2_to_key2("sq")] = iso639_str3_to_key("alb");
664  codemap[iso639_str2_to_key2("am")] = iso639_str3_to_key("amh");
665  codemap[iso639_str2_to_key2("ar")] = iso639_str3_to_key("ara");
666  codemap[iso639_str2_to_key2("an")] = iso639_str3_to_key("arg");
667  codemap[iso639_str2_to_key2("hy")] = iso639_str3_to_key("arm");
668  codemap[iso639_str2_to_key2("hy")] = iso639_str3_to_key("arm");
669  codemap[iso639_str2_to_key2("as")] = iso639_str3_to_key("asm");
670  codemap[iso639_str2_to_key2("av")] = iso639_str3_to_key("ava");
671  codemap[iso639_str2_to_key2("ae")] = iso639_str3_to_key("ave");
672  codemap[iso639_str2_to_key2("ay")] = iso639_str3_to_key("aym");
673  codemap[iso639_str2_to_key2("az")] = iso639_str3_to_key("aze");
674  codemap[iso639_str2_to_key2("ba")] = iso639_str3_to_key("bak");
675  codemap[iso639_str2_to_key2("bm")] = iso639_str3_to_key("bam");
676  codemap[iso639_str2_to_key2("eu")] = iso639_str3_to_key("baq");
677  codemap[iso639_str2_to_key2("eu")] = iso639_str3_to_key("baq");
678  codemap[iso639_str2_to_key2("be")] = iso639_str3_to_key("bel");
679  codemap[iso639_str2_to_key2("bn")] = iso639_str3_to_key("ben");
680  codemap[iso639_str2_to_key2("bh")] = iso639_str3_to_key("bih");
681  codemap[iso639_str2_to_key2("bi")] = iso639_str3_to_key("bis");
682  codemap[iso639_str2_to_key2("bs")] = iso639_str3_to_key("bos");
683  codemap[iso639_str2_to_key2("br")] = iso639_str3_to_key("bre");
684  codemap[iso639_str2_to_key2("bg")] = iso639_str3_to_key("bul");
685  codemap[iso639_str2_to_key2("my")] = iso639_str3_to_key("bur");
686  codemap[iso639_str2_to_key2("my")] = iso639_str3_to_key("bur");
687  codemap[iso639_str2_to_key2("ca")] = iso639_str3_to_key("cat");
688  codemap[iso639_str2_to_key2("ch")] = iso639_str3_to_key("cha");
689  codemap[iso639_str2_to_key2("ce")] = iso639_str3_to_key("che");
690  codemap[iso639_str2_to_key2("zh")] = iso639_str3_to_key("chi");
691  codemap[iso639_str2_to_key2("zh")] = iso639_str3_to_key("chi");
692  codemap[iso639_str2_to_key2("cu")] = iso639_str3_to_key("chu");
693  codemap[iso639_str2_to_key2("cv")] = iso639_str3_to_key("chv");
694  codemap[iso639_str2_to_key2("kw")] = iso639_str3_to_key("cor");
695  codemap[iso639_str2_to_key2("co")] = iso639_str3_to_key("cos");
696  codemap[iso639_str2_to_key2("cr")] = iso639_str3_to_key("cre");
697  codemap[iso639_str2_to_key2("cs")] = iso639_str3_to_key("cze");
698  codemap[iso639_str2_to_key2("cs")] = iso639_str3_to_key("cze");
699  codemap[iso639_str2_to_key2("da")] = iso639_str3_to_key("dan");
700  codemap[iso639_str2_to_key2("dv")] = iso639_str3_to_key("div");
701  codemap[iso639_str2_to_key2("nl")] = iso639_str3_to_key("dut");
702  codemap[iso639_str2_to_key2("nl")] = iso639_str3_to_key("dut");
703  codemap[iso639_str2_to_key2("dz")] = iso639_str3_to_key("dzo");
704  codemap[iso639_str2_to_key2("en")] = iso639_str3_to_key("eng");
705  codemap[iso639_str2_to_key2("eo")] = iso639_str3_to_key("epo");
706  codemap[iso639_str2_to_key2("et")] = iso639_str3_to_key("est");
707  codemap[iso639_str2_to_key2("ee")] = iso639_str3_to_key("ewe");
708  codemap[iso639_str2_to_key2("fo")] = iso639_str3_to_key("fao");
709  codemap[iso639_str2_to_key2("fj")] = iso639_str3_to_key("fij");
710  codemap[iso639_str2_to_key2("fi")] = iso639_str3_to_key("fin");
711  codemap[iso639_str2_to_key2("fr")] = iso639_str3_to_key("fre");
712  codemap[iso639_str2_to_key2("fy")] = iso639_str3_to_key("fry");
713  codemap[iso639_str2_to_key2("ff")] = iso639_str3_to_key("ful");
714  codemap[iso639_str2_to_key2("ka")] = iso639_str3_to_key("geo");
715  codemap[iso639_str2_to_key2("ka")] = iso639_str3_to_key("geo");
716  codemap[iso639_str2_to_key2("de")] = iso639_str3_to_key("ger");
717  codemap[iso639_str2_to_key2("de")] = iso639_str3_to_key("ger");
718  codemap[iso639_str2_to_key2("gd")] = iso639_str3_to_key("gla");
719  codemap[iso639_str2_to_key2("ga")] = iso639_str3_to_key("gle");
720  codemap[iso639_str2_to_key2("gl")] = iso639_str3_to_key("glg");
721  codemap[iso639_str2_to_key2("gv")] = iso639_str3_to_key("glv");
722  codemap[iso639_str2_to_key2("el")] = iso639_str3_to_key("gre");
723  codemap[iso639_str2_to_key2("el")] = iso639_str3_to_key("gre");
724  codemap[iso639_str2_to_key2("gn")] = iso639_str3_to_key("grn");
725  codemap[iso639_str2_to_key2("gu")] = iso639_str3_to_key("guj");
726  codemap[iso639_str2_to_key2("ht")] = iso639_str3_to_key("hat");
727  codemap[iso639_str2_to_key2("ha")] = iso639_str3_to_key("hau");
728  codemap[iso639_str2_to_key2("he")] = iso639_str3_to_key("heb");
729  codemap[iso639_str2_to_key2("hz")] = iso639_str3_to_key("her");
730  codemap[iso639_str2_to_key2("hi")] = iso639_str3_to_key("hin");
731  codemap[iso639_str2_to_key2("ho")] = iso639_str3_to_key("hmo");
732  codemap[iso639_str2_to_key2("hu")] = iso639_str3_to_key("hun");
733  codemap[iso639_str2_to_key2("ig")] = iso639_str3_to_key("ibo");
734  codemap[iso639_str2_to_key2("is")] = iso639_str3_to_key("ice");
735  codemap[iso639_str2_to_key2("is")] = iso639_str3_to_key("ice");
736  codemap[iso639_str2_to_key2("io")] = iso639_str3_to_key("ido");
737  codemap[iso639_str2_to_key2("ii")] = iso639_str3_to_key("iii");
738  codemap[iso639_str2_to_key2("iu")] = iso639_str3_to_key("iku");
739  codemap[iso639_str2_to_key2("ie")] = iso639_str3_to_key("ile");
740  codemap[iso639_str2_to_key2("ia")] = iso639_str3_to_key("ina");
741  codemap[iso639_str2_to_key2("id")] = iso639_str3_to_key("ind");
742  codemap[iso639_str2_to_key2("ik")] = iso639_str3_to_key("ipk");
743  codemap[iso639_str2_to_key2("it")] = iso639_str3_to_key("ita");
744  codemap[iso639_str2_to_key2("jv")] = iso639_str3_to_key("jav");
745  codemap[iso639_str2_to_key2("ja")] = iso639_str3_to_key("jpn");
746  codemap[iso639_str2_to_key2("kl")] = iso639_str3_to_key("kal");
747  codemap[iso639_str2_to_key2("kn")] = iso639_str3_to_key("kan");
748  codemap[iso639_str2_to_key2("ks")] = iso639_str3_to_key("kas");
749  codemap[iso639_str2_to_key2("kr")] = iso639_str3_to_key("kau");
750  codemap[iso639_str2_to_key2("kk")] = iso639_str3_to_key("kaz");
751  codemap[iso639_str2_to_key2("km")] = iso639_str3_to_key("khm");
752  codemap[iso639_str2_to_key2("ki")] = iso639_str3_to_key("kik");
753  codemap[iso639_str2_to_key2("rw")] = iso639_str3_to_key("kin");
754  codemap[iso639_str2_to_key2("ky")] = iso639_str3_to_key("kir");
755  codemap[iso639_str2_to_key2("kv")] = iso639_str3_to_key("kom");
756  codemap[iso639_str2_to_key2("kg")] = iso639_str3_to_key("kon");
757  codemap[iso639_str2_to_key2("ko")] = iso639_str3_to_key("kor");
758  codemap[iso639_str2_to_key2("kj")] = iso639_str3_to_key("kua");
759  codemap[iso639_str2_to_key2("ku")] = iso639_str3_to_key("kur");
760  codemap[iso639_str2_to_key2("lo")] = iso639_str3_to_key("lao");
761  codemap[iso639_str2_to_key2("la")] = iso639_str3_to_key("lat");
762  codemap[iso639_str2_to_key2("lv")] = iso639_str3_to_key("lav");
763  codemap[iso639_str2_to_key2("li")] = iso639_str3_to_key("lim");
764  codemap[iso639_str2_to_key2("ln")] = iso639_str3_to_key("lin");
765  codemap[iso639_str2_to_key2("lt")] = iso639_str3_to_key("lit");
766  codemap[iso639_str2_to_key2("lb")] = iso639_str3_to_key("ltz");
767  codemap[iso639_str2_to_key2("lu")] = iso639_str3_to_key("lub");
768  codemap[iso639_str2_to_key2("lg")] = iso639_str3_to_key("lug");
769  codemap[iso639_str2_to_key2("mk")] = iso639_str3_to_key("mac");
770  codemap[iso639_str2_to_key2("mk")] = iso639_str3_to_key("mac");
771  codemap[iso639_str2_to_key2("mh")] = iso639_str3_to_key("mah");
772  codemap[iso639_str2_to_key2("ml")] = iso639_str3_to_key("mal");
773  codemap[iso639_str2_to_key2("mi")] = iso639_str3_to_key("mao");
774  codemap[iso639_str2_to_key2("mi")] = iso639_str3_to_key("mao");
775  codemap[iso639_str2_to_key2("mr")] = iso639_str3_to_key("mar");
776  codemap[iso639_str2_to_key2("ms")] = iso639_str3_to_key("may");
777  codemap[iso639_str2_to_key2("ms")] = iso639_str3_to_key("may");
778  codemap[iso639_str2_to_key2("mg")] = iso639_str3_to_key("mlg");
779  codemap[iso639_str2_to_key2("mt")] = iso639_str3_to_key("mlt");
780  codemap[iso639_str2_to_key2("mo")] = iso639_str3_to_key("mol");
781  codemap[iso639_str2_to_key2("mn")] = iso639_str3_to_key("mon");
782  codemap[iso639_str2_to_key2("na")] = iso639_str3_to_key("nau");
783  codemap[iso639_str2_to_key2("nv")] = iso639_str3_to_key("nav");
784  codemap[iso639_str2_to_key2("nr")] = iso639_str3_to_key("nbl");
785  codemap[iso639_str2_to_key2("nd")] = iso639_str3_to_key("nde");
786  codemap[iso639_str2_to_key2("ng")] = iso639_str3_to_key("ndo");
787  codemap[iso639_str2_to_key2("ne")] = iso639_str3_to_key("nep");
788  codemap[iso639_str2_to_key2("nn")] = iso639_str3_to_key("nno");
789  codemap[iso639_str2_to_key2("nb")] = iso639_str3_to_key("nob");
790  codemap[iso639_str2_to_key2("no")] = iso639_str3_to_key("nor");
791  codemap[iso639_str2_to_key2("ny")] = iso639_str3_to_key("nya");
792  codemap[iso639_str2_to_key2("oc")] = iso639_str3_to_key("oci");
793  codemap[iso639_str2_to_key2("oj")] = iso639_str3_to_key("oji");
794  codemap[iso639_str2_to_key2("or")] = iso639_str3_to_key("ori");
795  codemap[iso639_str2_to_key2("om")] = iso639_str3_to_key("orm");
796  codemap[iso639_str2_to_key2("os")] = iso639_str3_to_key("oss");
797  codemap[iso639_str2_to_key2("pa")] = iso639_str3_to_key("pan");
798  codemap[iso639_str2_to_key2("fa")] = iso639_str3_to_key("per");
799  codemap[iso639_str2_to_key2("fa")] = iso639_str3_to_key("per");
800  codemap[iso639_str2_to_key2("pi")] = iso639_str3_to_key("pli");
801  codemap[iso639_str2_to_key2("pl")] = iso639_str3_to_key("pol");
802  codemap[iso639_str2_to_key2("pt")] = iso639_str3_to_key("por");
803  codemap[iso639_str2_to_key2("ps")] = iso639_str3_to_key("pus");
804  codemap[iso639_str2_to_key2("qu")] = iso639_str3_to_key("que");
805  codemap[iso639_str2_to_key2("rm")] = iso639_str3_to_key("roh");
806  codemap[iso639_str2_to_key2("ro")] = iso639_str3_to_key("rum");
807  codemap[iso639_str2_to_key2("rn")] = iso639_str3_to_key("run");
808  codemap[iso639_str2_to_key2("ru")] = iso639_str3_to_key("rus");
809  codemap[iso639_str2_to_key2("sg")] = iso639_str3_to_key("sag");
810  codemap[iso639_str2_to_key2("sa")] = iso639_str3_to_key("san");
811  codemap[iso639_str2_to_key2("sr")] = iso639_str3_to_key("scc");
812  codemap[iso639_str2_to_key2("sr")] = iso639_str3_to_key("scc");
813  codemap[iso639_str2_to_key2("hr")] = iso639_str3_to_key("scr");
814  codemap[iso639_str2_to_key2("hr")] = iso639_str3_to_key("scr");
815  codemap[iso639_str2_to_key2("si")] = iso639_str3_to_key("sin");
816  codemap[iso639_str2_to_key2("sk")] = iso639_str3_to_key("slo");
817  codemap[iso639_str2_to_key2("sl")] = iso639_str3_to_key("slv");
818  codemap[iso639_str2_to_key2("se")] = iso639_str3_to_key("sme");
819  codemap[iso639_str2_to_key2("sm")] = iso639_str3_to_key("smo");
820  codemap[iso639_str2_to_key2("sn")] = iso639_str3_to_key("sna");
821  codemap[iso639_str2_to_key2("sd")] = iso639_str3_to_key("snd");
822  codemap[iso639_str2_to_key2("so")] = iso639_str3_to_key("som");
823  codemap[iso639_str2_to_key2("st")] = iso639_str3_to_key("sot");
824  codemap[iso639_str2_to_key2("es")] = iso639_str3_to_key("spa");
825  codemap[iso639_str2_to_key2("sc")] = iso639_str3_to_key("srd");
826  codemap[iso639_str2_to_key2("ss")] = iso639_str3_to_key("ssw");
827  codemap[iso639_str2_to_key2("su")] = iso639_str3_to_key("sun");
828  codemap[iso639_str2_to_key2("sw")] = iso639_str3_to_key("swa");
829  codemap[iso639_str2_to_key2("sv")] = iso639_str3_to_key("swe");
830  codemap[iso639_str2_to_key2("ty")] = iso639_str3_to_key("tah");
831  codemap[iso639_str2_to_key2("ta")] = iso639_str3_to_key("tam");
832  codemap[iso639_str2_to_key2("tt")] = iso639_str3_to_key("tat");
833  codemap[iso639_str2_to_key2("te")] = iso639_str3_to_key("tel");
834  codemap[iso639_str2_to_key2("tg")] = iso639_str3_to_key("tgk");
835  codemap[iso639_str2_to_key2("tl")] = iso639_str3_to_key("tgl");
836  codemap[iso639_str2_to_key2("th")] = iso639_str3_to_key("tha");
837  codemap[iso639_str2_to_key2("bo")] = iso639_str3_to_key("tib");
838  codemap[iso639_str2_to_key2("bo")] = iso639_str3_to_key("tib");
839  codemap[iso639_str2_to_key2("ti")] = iso639_str3_to_key("tir");
840  codemap[iso639_str2_to_key2("to")] = iso639_str3_to_key("ton");
841  codemap[iso639_str2_to_key2("tn")] = iso639_str3_to_key("tsn");
842  codemap[iso639_str2_to_key2("ts")] = iso639_str3_to_key("tso");
843  codemap[iso639_str2_to_key2("tk")] = iso639_str3_to_key("tuk");
844  codemap[iso639_str2_to_key2("tr")] = iso639_str3_to_key("tur");
845  codemap[iso639_str2_to_key2("tw")] = iso639_str3_to_key("twi");
846  codemap[iso639_str2_to_key2("ug")] = iso639_str3_to_key("uig");
847  codemap[iso639_str2_to_key2("uk")] = iso639_str3_to_key("ukr");
848  codemap[iso639_str2_to_key2("ur")] = iso639_str3_to_key("urd");
849  codemap[iso639_str2_to_key2("uz")] = iso639_str3_to_key("uzb");
850  codemap[iso639_str2_to_key2("ve")] = iso639_str3_to_key("ven");
851  codemap[iso639_str2_to_key2("vi")] = iso639_str3_to_key("vie");
852  codemap[iso639_str2_to_key2("vo")] = iso639_str3_to_key("vol");
853  codemap[iso639_str2_to_key2("cy")] = iso639_str3_to_key("wel");
854  codemap[iso639_str2_to_key2("cy")] = iso639_str3_to_key("wel");
855  codemap[iso639_str2_to_key2("wa")] = iso639_str3_to_key("wln");
856  codemap[iso639_str2_to_key2("wo")] = iso639_str3_to_key("wol");
857  codemap[iso639_str2_to_key2("xh")] = iso639_str3_to_key("xho");
858  codemap[iso639_str2_to_key2("yi")] = iso639_str3_to_key("yid");
859  codemap[iso639_str2_to_key2("yo")] = iso639_str3_to_key("yor");
860  codemap[iso639_str2_to_key2("za")] = iso639_str3_to_key("zha");
861  codemap[iso639_str2_to_key2("zu")] = iso639_str3_to_key("zul");
862  return 0;
863 }
864 
865 /*
866  The following has yet to be integrated with the preceeding code in a
867  meaningful way but it is stored here because it provides ISO639 related
868  functionality.
869 */
870 
871 using ISO639ToNameMap = QMap<QString, QString>;
873 {
874  ISO639ToNameMap map;
875  map["af"] = QString::fromUtf8("Afrikaans");
876  map["am"] = QString::fromUtf8("አማርኛ");
877  map["ar"] = QString::fromUtf8("العربية");
878  map["as"] = QString::fromUtf8("অসমীয়া");
879  map["az"] = QString::fromUtf8("Azərbaycan türkçəsi");
880  map["be"] = QString::fromUtf8("Беларуская");
881  map["bg"] = QString::fromUtf8("Български");
882  map["bn"] = QString::fromUtf8("বাংলা");
883  map["br"] = QString::fromUtf8("Brezhoneg");
884  map["bs"] = QString::fromUtf8("Rumunjki");
885  map["ca"] = QString::fromUtf8("català; valencià");
886  map["cs"] = QString::fromUtf8("čeština");
887  map["cy"] = QString::fromUtf8("Cymraeg");
888  map["da"] = QString::fromUtf8("Dansk");
889  map["de"] = QString::fromUtf8("Deutsch");
890  map["el"] = QString::fromUtf8("Ελληνικά, Σύγχρονα");
891  map["en"] = QString::fromUtf8("English");
892  map["eo"] = QString::fromUtf8("Esperanto");
893  map["es"] = QString::fromUtf8("Español; Castellano");
894  map["et"] = QString::fromUtf8("Eesti");
895  map["eu"] = QString::fromUtf8("Euskara");
896  map["fa"] = QString::fromUtf8("فارسی");
897  map["fi"] = QString::fromUtf8("suomi");
898  map["fr"] = QString::fromUtf8("Français");
899  map["ga"] = QString::fromUtf8("Gaeilge");
900  map["gl"] = QString::fromUtf8("Galego");
901  map["gu"] = QString::fromUtf8("ગુજરાતી");
902  map["he"] = QString::fromUtf8("עברית");
903  map["hi"] = QString::fromUtf8("हिंदी");
904  map["hr"] = QString::fromUtf8("Hrvatski");
905  map["hu"] = QString::fromUtf8("magyar");
906  map["id"] = QString::fromUtf8("Bahasa Indonesia");
907  map["is"] = QString::fromUtf8("Íslenska");
908  map["it"] = QString::fromUtf8("Italiano");
909  map["ja"] = QString::fromUtf8("日本語");
910  map["kn"] = QString::fromUtf8("ಕನ್ನಡ");
911  map["ko"] = QString::fromUtf8("한국어");
912  map["lt"] = QString::fromUtf8("Lietuvių");
913  map["lv"] = QString::fromUtf8("Latviešu");
914  map["mi"] = QString::fromUtf8("Reo Māori");
915  map["mk"] = QString::fromUtf8("Македонски");
916  map["ml"] = QString::fromUtf8("മലയാളം");
917  map["mn"] = QString::fromUtf8("Монгол");
918  map["mr"] = QString::fromUtf8("मराठी");
919  map["ms"] = QString::fromUtf8("Bahasa Melayu");
920  map["mt"] = QString::fromUtf8("Malti");
921  map["nb"] = QString::fromUtf8("Norsk, bokmål");
922  map["nl"] = QString::fromUtf8("Nederlands");
923  map["nn"] = QString::fromUtf8("Norsk (nynorsk)");
924  map["oc"] = QString::fromUtf8("Occitan (aprèp 1500)");
925  map["or"] = QString::fromUtf8("ଓଡିଆ");
926  map["pa"] = QString::fromUtf8("ਪੰਜਾਬੀ");
927  map["pl"] = QString::fromUtf8("polski");
928  map["pt"] = QString::fromUtf8("Português");
929  map["ro"] = QString::fromUtf8("Română");
930  map["ru"] = QString::fromUtf8("русский");
931  map["rw"] = QString::fromUtf8("Ikinyarwanda");
932  map["sk"] = QString::fromUtf8("slovenčina");
933  map["sl"] = QString::fromUtf8("slovenščina");
934  map["sr"] = QString::fromUtf8("српски");
935  map["sv"] = QString::fromUtf8("Svenska");
936  map["ta"] = QString::fromUtf8("தமிழ்");
937  map["te"] = QString::fromUtf8("తెలుగు");
938  map["th"] = QString::fromUtf8("ไทย");
939  map["ti"] = QString::fromUtf8("ትግርኛ");
940  map["tr"] = QString::fromUtf8("Türkçe");
941  map["tt"] = QString::fromUtf8("Tatarça");
942  map["uk"] = QString::fromUtf8("українська");
943  map["ve"] = QString::fromUtf8("Venda");
944  map["vi"] = QString::fromUtf8("Tiếng Việt");
945  map["wa"] = QString::fromUtf8("Walon");
946  map["xh"] = QString::fromUtf8("isiXhosa");
947  map["zh"] = QString::fromUtf8("漢語");
948  map["zu"] = QString::fromUtf8("Isi-Zulu");
949  return map;
950 }
951 
953 
954 QString GetISO639LanguageName(const QString &iso639_1)
955 {
956  if (gLanguageMap.isEmpty())
958 
959  return gLanguageMap[iso639_1];
960 }
961 
962 QString GetISO639EnglishLanguageName(const QString &iso639_1)
963 {
964  QString iso639_2 = iso639_str2_to_str3(iso639_1);
965  int key2 = iso639_str3_to_key(iso639_2);
966  return iso639_key_toName(key2);
967 }
dummy_createCodeToEnglishNamesMap
int dummy_createCodeToEnglishNamesMap
Definition: iso639.cpp:126
iso639_key_to_canonical_key
int iso639_key_to_canonical_key(int iso639_2)
Definition: iso639.cpp:118
GetISO639EnglishLanguageName
QString GetISO639EnglishLanguageName(const QString &iso639_1)
Definition: iso639.cpp:962
ISO639ToNameMap
QMap< QString, QString > ISO639ToNameMap
Definition: iso639.cpp:871
iso639_Alpha2_toName
static QString iso639_Alpha2_toName(const unsigned char *iso639_1)
Definition: iso639.cpp:90
s_iso639_key2_to_key3
static QMap< int, int > s_iso639_key2_to_key3
Definition: iso639.cpp:11
createLanguageMap
static ISO639ToNameMap createLanguageMap(void)
Definition: iso639.cpp:872
dummy_createCode2ToCode3Map
int dummy_createCode2ToCode3Map
Definition: iso639.cpp:129
s_iso639_key3_to_canonical_key3
static QMap< int, int > s_iso639_key3_to_canonical_key3
Definition: iso639.cpp:12
createCodeToCanonicalCodeMap
static int createCodeToCanonicalCodeMap(QMap< int, int > &canonical)
Definition: iso639.cpp:135
GetISO639LanguageName
QString GetISO639LanguageName(const QString &iso639_1)
Definition: iso639.cpp:954
iso639_key_toName
QString iso639_key_toName(int iso639_2)
Converts a canonical key to language name in English.
Definition: iso639.cpp:109
iso639_get_language_key_list
std::vector< int > iso639_get_language_key_list(void)
Definition: iso639.cpp:56
iso639_clear_language_list
void iso639_clear_language_list(void)
Definition: iso639.cpp:22
createCode2ToCode3Map
static int createCode2ToCode3Map(QMap< int, int > &codemap)
Definition: iso639.cpp:657
iso639_str_toName
QString iso639_str_toName(const unsigned char *iso639)
Converts a 2 or 3 character iso639 string to a language name in English.
Definition: iso639.cpp:100
iso639_key_to_str3
static QString iso639_key_to_str3(int code)
Definition: iso639.h:45
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:55
MythCoreContext::GetLanguage
QString GetLanguage(void)
Returns two character ISO-639 language descriptor for UI language.
Definition: mythcorecontext.cpp:1775
iso639_Alpha3_toName
static QString iso639_Alpha3_toName(const unsigned char *iso639_2)
Definition: iso639.cpp:79
dummy_createCodeToCanonicalCodeMap
int dummy_createCodeToCanonicalCodeMap
Definition: iso639.cpp:132
mythcorecontext.h
iso639_get_language_list
QStringList iso639_get_language_list(void)
Returns list of three character ISO-639 language descriptors, starting with the most preferred.
Definition: iso639.cpp:33
iso639_str2_to_key2
static int iso639_str2_to_key2(const unsigned char *iso639_1)
Definition: iso639.h:80
s_languages
static QStringList s_languages
Definition: iso639.cpp:13
iso639_str2_to_str3
QString iso639_str2_to_str3(const QString &str2)
Definition: iso639.cpp:68
iso639.h
ISO 639-1 and ISO 639-2 support functions.
iso639_str3_to_key
static int iso639_str3_to_key(const unsigned char *iso639_2)
Definition: iso639.h:60
s_language_keys
static std::vector< int > s_language_keys
Definition: iso639.cpp:14
iso639_key_to_english_name
QMap< int, QString > iso639_key_to_english_name
Definition: iso639.cpp:10
uint
unsigned int uint
Definition: freesurround.h:24
MythCoreContext::GetSetting
QString GetSetting(const QString &key, const QString &defaultval="")
Definition: mythcorecontext.cpp:902
gLanguageMap
static ISO639ToNameMap gLanguageMap
Definition: iso639.cpp:952
createCodeToEnglishNamesMap
static int createCodeToEnglishNamesMap(QMap< int, QString > &names)
Definition: iso639.cpp:173