'Returns a list of tuples of ISO639-1 alpha-2 language
codes, can also be used to look up the language name
Just the subset which are useful for Translations
- 2 letter code preferred, 3-letter code where none exists,
no \'families\' or Old'

@staticmethod
def language_codes():

    lang = [('aa', 'Afar'), ('ab', 'Abkhazian'), ('ace', 'Achinese'), ('ach', 'Acoli'), ('ada', 'Adangme'), ('ady', 'Adyghe;    Adygei'), ('afh', 'Afrihili'), ('af', 'Afrikaans'), ('ain', 'Ainu'), ('ak', 'Akan'), ('akk', 'Akkadian'), ('sq', 'Albanian'), ('ale', 'Aleut'), ('alt', 'Southern    Altai'), ('am', 'Amharic'), ('anp', 'Angika'), ('ar', 'Arabic'), ('an', 'Aragonese'), ('hy', 'Armenian'), ('arn', 'Mapudungun;    Mapuche'), ('arp', 'Arapaho'), ('arw', 'Arawak'), ('as', 'Assamese'), ('ast', 'Asturian;    Bable;    Leonese;    Asturleonese'), ('av', 'Avaric'), ('ae', 'Avestan'), ('awa', 'Awadhi'), ('ay', 'Aymara'), ('az', 'Azerbaijani'), ('ba', 'Bashkir'), ('bal', 'Baluchi'), ('bm', 'Bambara'), ('ban', 'Balinese'), ('eu', 'Basque'), ('bas', 'Basa'), ('bej', 'Beja;    Bedawiyet'), ('be', 'Belarusian'), ('bem', 'Bemba'), ('bn', 'Bengali'), ('bho', 'Bhojpuri'), ('bik', 'Bikol'), ('bin', 'Bini;    Edo'), ('bi', 'Bislama'), ('bla', 'Siksika'), ('bs', 'Bosnian'), ('bra', 'Braj'), ('br', 'Breton'), ('bua', 'Buriat'), ('bug', 'Buginese'), ('bg', 'Bulgarian'), ('my', 'Burmese'), ('byn', 'Blin;    Bilin'), ('cad', 'Caddo'), ('car', 'Galibi    Carib'), ('ca', 'Catalan;    Valencian'), ('ceb', 'Cebuano'), ('ch', 'Chamorro'), ('chb', 'Chibcha'), ('ce', 'Chechen'), ('chg', 'Chagatai'), ('zh', 'Chinese'), ('chk', 'Chuukese'), ('chm', 'Mari'), ('chn', 'Chinook    jargon'), ('cho', 'Choctaw'), ('chp', 'Chipewyan;    Dene    Suline'), ('chr', 'Cherokee'), ('cu', 'Church    Slavic;    Old    Slavonic;    Church    Slavonic;    Old    Bulgarian;    Old    Church    Slavonic'), ('cv', 'Chuvash'), ('chy', 'Cheyenne'), ('cop', 'Coptic'), ('kw', 'Cornish'), ('co', 'Corsican'), ('cr', 'Cree'), ('crh', 'Crimean    Tatar;    Crimean    Turkish'), ('csb', 'Kashubian'), ('cus', 'Cushitic    languages'), ('cs', 'Czech'), ('dak', 'Dakota'), ('da', 'Danish'), ('dar', 'Dargwa'), ('del', 'Delaware'), ('den', 'Slave    (Athapascan)'), ('dgr', 'Dogrib'), ('din', 'Dinka'), ('dv', 'Divehi;    Dhivehi;    Maldivian'), ('doi', 'Dogri'), ('dsb', 'Lower    Sorbian'), ('dua', 'Duala'), ('nl', 'Dutch;    Flemish'), ('dyu', 'Dyula'), ('dz', 'Dzongkha'), ('efi', 'Efik'), ('eka', 'Ekajuk'), ('elx', 'Elamite'), ('en', 'English'), ('eo', 'Esperanto'), ('et', 'Estonian'), ('ee', 'Ewe'), ('ewo', 'Ewondo'), ('fan', 'Fang'), ('fo', 'Faroese'), ('fat', 'Fanti'), ('fj', 'Fijian'), ('fil', 'Filipino;    Pilipino'), ('fi', 'Finnish'), ('fon', 'Fon'), ('fr', 'French'), ('frr', 'Northern    Frisian'), ('frs', 'Eastern    Frisian'), ('fy', 'Western    Frisian'), ('ff', 'Fulah'), ('fur', 'Friulian'), ('gaa', 'Ga'), ('gay', 'Gayo'), ('gba', 'Gbaya'), ('ka', 'Georgian'), ('de', 'German'), ('gez', 'Geez'), ('gil', 'Gilbertese'), ('gd', 'Gaelic;    Scottish    Gaelic'), ('ga', 'Irish'), ('gl', 'Galician'), ('gv', 'Manx'), ('gon', 'Gondi'), ('gor', 'Gorontalo'), ('got', 'Gothic'), ('grb', 'Grebo'), ('el', 'Greek'), ('gn', 'Guarani'), ('gsw', 'Swiss    German;    Alemannic;    Alsatian'), ('gu', 'Gujarati'), ('gwi', "Gwich'in"), ('hai', 'Haida'), ('ht', 'Haitian;    Haitian    Creole'), ('ha', 'Hausa'), ('haw', 'Hawaiian'), ('he', 'Hebrew'), ('hz', 'Herero'), ('hil', 'Hiligaynon'), ('hi', 'Hindi'), ('hit', 'Hittite'), ('hmn', 'Hmong;    Mong'), ('ho', 'Hiri    Motu'), ('hr', 'Croatian'), ('hsb', 'Upper    Sorbian'), ('hu', 'Hungarian'), ('hup', 'Hupa'), ('iba', 'Iban'), ('ig', 'Igbo'), ('is', 'Icelandic'), ('io', 'Ido'), ('ii', 'Sichuan    Yi;    Nuosu'), ('iu', 'Inuktitut'), ('ie', 'Interlingue;    Occidental'), ('ilo', 'Iloko'), ('ia', 'Interlingua    (International    Auxiliary    Language    Association)'), ('id', 'Indonesian'), ('inh', 'Ingush'), ('ik', 'Inupiaq'), ('it', 'Italian'), ('jv', 'Javanese'), ('jbo', 'Lojban'), ('ja', 'Japanese'), ('kaa', 'Kara-Kalpak'), ('kab', 'Kabyle'), ('kac', 'Kachin;    Jingpho'), ('kl', 'Kalaallisut;    Greenlandic'), ('kam', 'Kamba'), ('kn', 'Kannada'), ('ks', 'Kashmiri'), ('kr', 'Kanuri'), ('kaw', 'Kawi'), ('kk', 'Kazakh'), ('kbd', 'Kabardian'), ('kha', 'Khasi'), ('km', 'Central    Khmer'), ('kho', 'Khotanese;    Sakan'), ('ki', 'Kikuyu;    Gikuyu'), ('rw', 'Kinyarwanda'), ('ky', 'Kirghiz;    Kyrgyz'), ('kmb', 'Kimbundu'), ('kok', 'Konkani'), ('kv', 'Komi'), ('kg', 'Kongo'), ('ko', 'Korean'), ('kos', 'Kosraean'), ('kpe', 'Kpelle'), ('krc', 'Karachay-Balkar'), ('krl', 'Karelian'), ('kru', 'Kurukh'), ('kj', 'Kuanyama;    Kwanyama'), ('kum', 'Kumyk'), ('ku', 'Kurdish'), ('kut', 'Kutenai'), ('lad', 'Ladino'), ('lah', 'Lahnda'), ('lam', 'Lamba'), ('lo', 'Lao'), ('la', 'Latin'), ('lv', 'Latvian'), ('lez', 'Lezghian'), ('li', 'Limburgan;    Limburger;    Limburgish'), ('ln', 'Lingala'), ('lt', 'Lithuanian'), ('lol', 'Mongo'), ('loz', 'Lozi'), ('lb', 'Luxembourgish;    Letzeburgesch'), ('lua', 'Luba-Lulua'), ('lu', 'Luba-Katanga'), ('lg', 'Ganda'), ('lui', 'Luiseno'), ('lun', 'Lunda'), ('luo', 'Luo    (Kenya    and    Tanzania)'), ('lus', 'Lushai'), ('mk', 'Macedonian'), ('mad', 'Madurese'), ('mag', 'Magahi'), ('mh', 'Marshallese'), ('mai', 'Maithili'), ('mak', 'Makasar'), ('ml', 'Malayalam'), ('man', 'Mandingo'), ('mi', 'Maori'), ('mr', 'Marathi'), ('mas', 'Masai'), ('ms', 'Malay'), ('mdf', 'Moksha'), ('mdr', 'Mandar'), ('men', 'Mende'), ('mic', "Mi'kmaq;    Micmac"), ('min', 'Minangkabau'), ('mg', 'Malagasy'), ('mlt', 'Maltese'), ('mt', 'Maltese'), ('mnc', 'Manchu'), ('mni', 'Manipuri'), ('moh', 'Mohawk'), ('mn', 'Mongolian'), ('mos', 'Mossi'), ('mus', 'Creek'), ('mwl', 'Mirandese'), ('mwr', 'Marwari'), ('myv', 'Erzya'), ('nap', 'Neapolitan'), ('na', 'Nauru'), ('nv', 'Navajo;    Navaho'), ('nr', 'Ndebele,    South;    South    Ndebele'), ('nd', 'Ndebele,    North;    North    Ndebele'), ('ng', 'Ndonga'), ('nds', 'Low    German;    Low    Saxon;    German,    Low;    Saxon,    Low'), ('ne', 'Nepali'), ('new', 'Nepal    Bhasa;    Newari'), ('nia', 'Nias'), ('niu', 'Niuean'), ('nn', 'Norwegian    Nynorsk;    Nynorsk,    Norwegian'), ('nb', 'Bokm\xc3\xa5l,    Norwegian;    Norwegian    Bokm\xc3\xa5l'), ('nog', 'Nogai'), ('no', 'Norwegian'), ('nqo', "N'Ko"), ('nso', 'Pedi;    Sepedi;    Northern    Sotho'), ('ny', 'Chichewa;    Chewa;    Nyanja'), ('nym', 'Nyamwezi'), ('nyn', 'Nyankole'), ('nyo', 'Nyoro'), ('nzi', 'Nzima'), ('oc', 'Occitan    (post    1500);    Proven\xc3\xa7al'), ('oj', 'Ojibwa'), ('or', 'Oriya'), ('om', 'Oromo'), ('osa', 'Osage'), ('os', 'Ossetian;    Ossetic'), ('pag', 'Pangasinan'), ('pal', 'Pahlavi'), ('pam', 'Pampanga;    Kapampangan'), ('pa', 'Panjabi;    Punjabi'), ('pap', 'Papiamento'), ('pau', 'Palauan'), ('fa', 'Persian'), ('phn', 'Phoenician'), ('pi', 'Pali'), ('pl', 'Polish'), ('pon', 'Pohnpeian'), ('pt', 'Portuguese'), ('prs', 'Dari'), ('ps', 'Pushto;    Pashto'), ('qu', 'Quechua'), ('raj', 'Rajasthani'), ('rap', 'Rapanui'), ('rar', 'Rarotongan;    Cook    Islands    Maori'), ('rm', 'Romansh'), ('rom', 'Romany'), ('ro', 'Romanian;    Moldavian;    Moldovan'), ('rn', 'Rundi'), ('rup', 'Aromanian;    Arumanian;    Macedo-Romanian'), ('ru', 'Russian'), ('sad', 'Sandawe'), ('sg', 'Sango'), ('sah', 'Yakut'), ('sam', 'Samaritan    Aramaic'), ('sa', 'Sanskrit'), ('sas', 'Sasak'), ('sat', 'Santali'), ('scn', 'Sicilian'), ('sco', 'Scots'), ('sel', 'Selkup'), ('sgn', 'Sign    Languages'), ('shn', 'Shan'), ('sid', 'Sidamo'), ('si', 'Sinhala;    Sinhalese'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sma', 'Southern    Sami'), ('se', 'Northern    Sami'), ('smj', 'Lule    Sami'), ('smn', 'Inari    Sami'), ('sm', 'Samoan'), ('sms', 'Skolt    Sami'), ('sn', 'Shona'), ('sd', 'Sindhi'), ('snk', 'Soninke'), ('sog', 'Sogdian'), ('so', 'Somali'), ('st', 'Sotho,    Southern'), ('es', 'Spanish;    Castilian'), ('sc', 'Sardinian'), ('srn', 'Sranan    Tongo'), ('sr', 'Serbian'), ('srr', 'Serer'), ('ss', 'Swati'), ('suk', 'Sukuma'), ('su', 'Sundanese'), ('sus', 'Susu'), ('sux', 'Sumerian'), ('sw', 'Swahili'), ('sv', 'Swedish'), ('syr', 'Syriac'), ('ty', 'Tahitian'), ('ta', 'Tamil'), ('tt', 'Tatar'), ('te', 'Telugu'), ('tem', 'Timne'), ('ter', 'Tereno'), ('tet', 'Tetum'), ('tg', 'Tajik'), ('tl', 'Tagalog'), ('th', 'Thai'), ('bo', 'Tibetan'), ('tig', 'Tigre'), ('ti', 'Tigrinya'), ('tiv', 'Tiv'), ('tkl', 'Tokelau'), ('tli', 'Tlingit'), ('tmh', 'Tamashek'), ('tog', 'Tonga    (Nyasa)'), ('to', 'Tonga    (Tonga    Islands)'), ('tpi', 'Tok    Pisin'), ('tsi', 'Tsimshian'), ('tn', 'Tswana'), ('ts', 'Tsonga'), ('tk', 'Turkmen'), ('tum', 'Tumbuka'), ('tr', 'Turkish'), ('tvl', 'Tuvalu'), ('tw', 'Twi'), ('tyv', 'Tuvinian'), ('udm', 'Udmurt'), ('uga', 'Ugaritic'), ('ug', 'Uighur;    Uyghur'), ('uk', 'Ukrainian'), ('umb', 'Umbundu'), ('ur', 'Urdu'), ('uz', 'Uzbek'), ('vai', 'Vai'), ('ve', 'Venda'), ('vi', 'Vietnamese'), ('vo', 'Volap\xc3\xbck'), ('vot', 'Votic'), ('wal', 'Walamo'), ('war', 'Waray'), ('was', 'Washo'), ('cy', 'Welsh'), ('wa', 'Walloon'), ('wo', 'Wolof'), ('xal', 'Kalmyk;    Oirat'), ('xh', 'Xhosa'), ('yao', 'Yao'), ('yap', 'Yapese'), ('yi', 'Yiddish'), ('yo', 'Yoruba'), ('zap', 'Zapotec'), ('zen', 'Zenaga'), ('zgh', 'Standard    Moroccan    Tamazight'), ('za', 'Zhuang;    Chuang'), ('zu', 'Zulu'), ('zun', 'Zuni'), ('zza', 'Zaza;    Dimili;    Dimli;    Kirdki;    Kirmanjki;    Zazaki')]
    extra_codes = current.deployment_settings.get_L10n_extra_codes()
    if extra_codes:
        lang += extra_codes
    return lang
