# -*- coding: utf-8 -*- # vi:si:et:sw=4:sts=4:ts=4 # GPL 2008 _iso639_languages = [ ("Unknown", "", "", "und"), ("Afar", "", "aa", "aar"), ("Abkhazian", "", "ab", "abk"), ("Afrikaans", "", "af", "afr"), ("Akan", "", "ak", "aka"), ("Albanian", "", "sq", "sqi"), ("Amharic", "", "am", "amh"), ("Arabic", "", "ar", "ara"), ("Aragonese", "", "an", "arg"), ("Armenian", "", "hy", "hye"), ("Assamese", "", "as", "asm"), ("Avaric", "", "av", "ava"), ("Avestan", "", "ae", "ave"), ("Aymara", "", "ay", "aym"), ("Azerbaijani", "", "az", "aze"), ("Bashkir", "", "ba", "bak"), ("Bambara", "", "bm", "bam"), ("Basque", "", "eu", "eus"), ("Belarusian", "", "be", "bel"), ("Bengali", "", "bn", "ben"), ("Bihari", "", "bh", "bih"), ("Bislama", "", "bi", "bis"), ("Bosnian", "", "bs", "bos"), ("Breton", "", "br", "bre"), ("Bulgarian", "", "bg", "bul"), ("Burmese", "", "my", "mya"), ("Catalan", "", "ca", "cat"), ("Chamorro", "", "ch", "cha"), ("Chechen", "", "ce", "che"), ("Chinese", "", "zh", "zho"), ("Church Slavic", "", "cu", "chu"), ("Chuvash", "", "cv", "chv"), ("Cornish", "", "kw", "cor"), ("Corsican", "", "co", "cos"), ("Cree", "", "cr", "cre"), ("Czech", "", "cs", "ces"), ("Danish", "Dansk", "da", "dan"), ("Divehi", "", "dv", "div"), ("Dutch", "Nederlands", "nl", "nld"), ("Dzongkha", "", "dz", "dzo"), ("English", "English", "en", "eng"), ("Esperanto", "", "eo", "epo"), ("Estonian", "", "et", "est"), ("Ewe", "", "ee", "ewe"), ("Faroese", "", "fo", "fao"), ("Fijian", "", "fj", "fij"), ("Finnish", "Suomi", "fi", "fin"), ("French", "Francais", "fr", "fra"), ("Western Frisian", "", "fy", "fry"), ("Fulah", "", "ff", "ful"), ("Georgian", "", "ka", "kat"), ("German", "Deutsch", "de", "deu"), ("Gaelic (Scots)", "", "gd", "gla"), ("Irish", "", "ga", "gle"), ("Galician", "", "gl", "glg"), ("Manx", "", "gv", "glv"), ("Greek, Modern", "", "el", "ell"), ("Guarani", "", "gn", "grn"), ("Gujarati", "", "gu", "guj"), ("Haitian", "", "ht", "hat"), ("Hausa", "", "ha", "hau"), ("Hebrew", "", "he", "heb"), ("Herero", "", "hz", "her"), ("Hindi", "", "hi", "hin"), ("Hiri Motu", "", "ho", "hmo"), ("Hungarian", "Magyar", "hu", "hun"), ("Igbo", "", "ig", "ibo"), ("Icelandic", "Islenska", "is", "isl"), ("Ido", "", "io", "ido"), ("Sichuan Yi", "", "ii", "iii"), ("Inuktitut", "", "iu", "iku"), ("Interlingue", "", "ie", "ile"), ("Interlingua", "", "ia", "ina"), ("Indonesian", "", "id", "ind"), ("Inupiaq", "", "ik", "ipk"), ("Italian", "Italiano", "it", "ita"), ("Javanese", "", "jv", "jav"), ("Japanese", "", "ja", "jpn"), ("Kalaallisut (Greenlandic)", "", "kl", "kal"), ("Kannada", "", "kn", "kan"), ("Kashmiri", "", "ks", "kas"), ("Kanuri", "", "kr", "kau"), ("Kazakh", "", "kk", "kaz"), ("Central Khmer", "", "km", "khm"), ("Kikuyu", "", "ki", "kik"), ("Kinyarwanda", "", "rw", "kin"), ("Kirghiz", "", "ky", "kir"), ("Komi", "", "kv", "kom"), ("Kongo", "", "kg", "kon"), ("Korean", "", "ko", "kor"), ("Kuanyama", "", "kj", "kua"), ("Kurdish", "", "ku", "kur"), ("Lao", "", "lo", "lao"), ("Latin", "", "la", "lat"), ("Latvian", "", "lv", "lav"), ("Limburgan", "", "li", "lim"), ("Lingala", "", "ln", "lin"), ("Lithuanian", "", "lt", "lit"), ("Luxembourgish", "", "lb", "ltz"), ("Luba-Katanga", "", "lu", "lub"), ("Ganda", "", "lg", "lug"), ("Macedonian", "", "mk", "mkd"), ("Marshallese", "", "mh", "mah"), ("Malayalam", "", "ml", "mal"), ("Maori", "", "mi", "mri"), ("Marathi", "", "mr", "mar"), ("Malay", "", "ms", "msa"), ("Malagasy", "", "mg", "mlg"), ("Maltese", "", "mt", "mlt"), ("Moldavian", "", "mo", "mol"), ("Mongolian", "", "mn", "mon"), ("Nauru", "", "na", "nau"), ("Navajo", "", "nv", "nav"), ("Ndebele, South", "", "nr", "nbl"), ("Ndebele, North", "", "nd", "nde"), ("Ndonga", "", "ng", "ndo"), ("Nepali", "", "ne", "nep"), ("Norwegian Nynorsk", "", "nn", "nno"), ("Norwegian Bokmål", "", "nb", "nob"), ("Norwegian", "Norsk", "no", "nor"), ("Chichewa; Nyanja", "", "ny", "nya"), ("Occitan (post 1500); Provençal", "", "oc", "oci"), ("Ojibwa", "", "oj", "oji"), ("Oriya", "", "or", "ori"), ("Oromo", "", "om", "orm"), ("Ossetian; Ossetic", "", "os", "oss"), ("Panjabi", "", "pa", "pan"), ("Persian", "", "fa", "fas"), ("Pali", "", "pi", "pli"), ("Polish", "", "pl", "pol"), ("Portuguese", "Portugues", "pt", "por"), ("Pushto", "", "ps", "pus"), ("Quechua", "", "qu", "que"), ("Romansh", "", "rm", "roh"), ("Romanian", "", "ro", "ron"), ("Rundi", "", "rn", "run"), ("Russian", "", "ru", "rus"), ("Sango", "", "sg", "sag"), ("Sanskrit", "", "sa", "san"), ("Serbian", "", "sr", "srp"), ("Croatian", "Hrvatski", "hr", "hrv"), ("Sinhala", "", "si", "sin"), ("Slovak", "", "sk", "slk"), ("Slovenian", "", "sl", "slv"), ("Northern Sami", "", "se", "sme"), ("Samoan", "", "sm", "smo"), ("Shona", "", "sn", "sna"), ("Sindhi", "", "sd", "snd"), ("Somali", "", "so", "som"), ("Sotho, Southern", "", "st", "sot"), ("Spanish", "Espanol", "es", "spa"), ("Sardinian", "", "sc", "srd"), ("Swati", "", "ss", "ssw"), ("Sundanese", "", "su", "sun"), ("Swahili", "", "sw", "swa"), ("Swedish", "Svenska", "sv", "swe"), ("Tahitian", "", "ty", "tah"), ("Tamil", "", "ta", "tam"), ("Tatar", "", "tt", "tat"), ("Telugu", "", "te", "tel"), ("Tajik", "", "tg", "tgk"), ("Tagalog", "", "tl", "tgl"), ("Thai", "", "th", "tha"), ("Tibetan", "", "bo", "bod"), ("Tigrinya", "", "ti", "tir"), ("Tonga (Tonga Islands)", "", "to", "ton"), ("Tswana", "", "tn", "tsn"), ("Tsonga", "", "ts", "tso"), ("Turkmen", "", "tk", "tuk"), ("Turkish", "", "tr", "tur"), ("Twi", "", "tw", "twi"), ("Uighur", "", "ug", "uig"), ("Ukrainian", "", "uk", "ukr"), ("Urdu", "", "ur", "urd"), ("Uzbek", "", "uz", "uzb"), ("Venda", "", "ve", "ven"), ("Vietnamese", "", "vi", "vie"), ("Volapük", "", "vo", "vol"), ("Welsh", "", "cy", "cym"), ("Walloon", "", "wa", "wln"), ("Wolof", "", "wo", "wol"), ("Xhosa", "", "xh", "xho"), ("Yiddish", "", "yi", "yid"), ("Yoruba", "", "yo", "yor"), ("Zhuang", "", "za", "zha"), ("Zulu", "", "zu", "zul"), ] def codeToLang(code): if code: code = code.lower() if len(code) == 2: for l in _iso639_languages: if l[2] == code: return l[0] elif len(code) == 3: for l in _iso639_languages: if l[3] == code: return l[0] return None def langTo3Code(lang): if lang: lang = langEnglishName(lang) if lang: lang=lang.lower() for l in _iso639_languages: if l[0].lower() == lang: return l[3] return None def langTo2Code(lang): if lang: lang = langEnglishName(lang) if lang: lang=lang.lower() for l in _iso639_languages: if l[0].lower() == lang: return l[2] return None def langCode2To3(code): return langTo3Code(codeToLang(code)) def langCode3To2(code): return langTo2Code(codeToLang(code)) def langEnglishName(lang): lang = lang.lower() for l in _iso639_languages: if l[1].lower() == lang or l[0].lower() == lang: return l[0] return None def languages2Letter(): languages = [] for l in _iso639_languages: if l[2]: languages.append(l[2]) return languages