// -------------------------------------------------------------------------------------------------------------------- // // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. // // // Language Utilities // // -------------------------------------------------------------------------------------------------------------------- namespace HandBrake.ApplicationServices.Utilities { using System.Collections.Generic; using System.Collections.Specialized; using System.Linq; /// /// Language Utilities /// public class LanguageUtilities { /// /// The language map. /// private static IDictionary languageMap; /// /// Map languages and their iso639_2 value into a IDictionary /// /// A Dictionary containing the language and iso code public static IDictionary MapLanguages() { if (languageMap != null) { return languageMap; } languageMap = new Dictionary { {"(Any)", "und"}, {"Afar", "aar"}, {"Abkhazian", "abk"}, {"Afrikaans", "afr"}, {"Akan", "aka"}, {"Albanian", "sqi"}, {"Amharic", "amh"}, {"Arabic", "ara"}, {"Aragonese", "arg"}, {"Armenian", "hye"}, {"Assamese", "asm"}, {"Avaric", "ava"}, {"Avestan", "ave"}, {"Aymara", "aym"}, {"Azerbaijani", "aze"}, {"Bashkir", "bak"}, {"Bambara", "bam"}, {"Basque", "eus"}, {"Belarusian", "bel"}, {"Bengali", "ben"}, {"Bihari", "bih"}, {"Bislama", "bis"}, {"Bosnian", "bos"}, {"Breton", "bre"}, {"Bulgarian", "bul"}, {"Burmese", "mya"}, {"Catalan", "cat"}, {"Chamorro", "cha"}, {"Chechen", "che"}, {"Chinese", "zho"}, {"Church Slavic", "chu"}, {"Chuvash", "chv"}, {"Cornish", "cor"}, {"Corsican", "cos"}, {"Cree", "cre"}, {"Czech", "ces"}, {"Dansk", "dan"}, {"Divehi", "div"}, {"Nederlands", "nld"}, {"Dzongkha", "dzo"}, {"English", "eng"}, {"Esperanto", "epo"}, {"Estonian", "est"}, {"Ewe", "ewe"}, {"Faroese", "fao"}, {"Fijian", "fij"}, {"Suomi", "fin"}, {"Francais", "fra"}, {"Western Frisian", "fry"}, {"Fulah", "ful"}, {"Georgian", "kat"}, {"Deutsch", "deu"}, {"Gaelic (Scots)", "gla"}, {"Irish", "gle"}, {"Galician", "glg"}, {"Manx", "glv"}, {"Greek, Modern", "ell"}, {"Guarani", "grn"}, {"Gujarati", "guj"}, {"Haitian", "hat"}, {"Hausa", "hau"}, {"Hebrew", "heb"}, {"Herero", "her"}, {"Hindi", "hin"}, {"Hiri Motu", "hmo"}, {"Magyar", "hun"}, {"Igbo", "ibo"}, {"Islenska", "isl"}, {"Ido", "ido"}, {"Sichuan Yi", "iii"}, {"Inuktitut", "iku"}, {"Interlingue", "ile"}, {"Interlingua", "ina"}, {"Indonesian", "ind"}, {"Inupiaq", "ipk"}, {"Italiano", "ita"}, {"Javanese", "jav"}, {"Japanese", "jpn"}, {"Kalaallisut", "kal"}, {"Kannada", "kan"}, {"Kashmiri", "kas"}, {"Kanuri", "kau"}, {"Kazakh", "kaz"}, {"Central Khmer", "khm"}, {"Kikuyu", "kik"}, {"Kinyarwanda", "kin"}, {"Kirghiz", "kir"}, {"Komi", "kom"}, {"Kongo", "kon"}, {"Korean", "kor"}, {"Kuanyama", "kua"}, {"Kurdish", "kur"}, {"Lao", "lao"}, {"Latin", "lat"}, {"Latvian", "lav"}, {"Limburgan", "lim"}, {"Lingala", "lin"}, {"Lithuanian", "lit"}, {"Luxembourgish", "ltz"}, {"Luba-Katanga", "lub"}, {"Ganda", "lug"}, {"Macedonian", "mkd"}, {"Marshallese", "mah"}, {"Malayalam", "mal"}, {"Maori", "mri"}, {"Marathi", "mar"}, {"Malay", "msa"}, {"Malagasy", "mlg"}, {"Maltese", "mlt"}, {"Moldavian", "mol"}, {"Mongolian", "mon"}, {"Nauru", "nau"}, {"Navajo", "nav"}, {"Ndebele, South", "nbl"}, {"Ndebele, North", "nde"}, {"Ndonga", "ndo"}, {"Nepali", "nep"}, {"Norwegian Nynorsk", "nno"}, {"Norwegian Bokmål", "nob"}, {"Norsk", "nor"}, {"Chichewa; Nyanja", "nya"}, {"Occitan", "oci"}, {"Ojibwa", "oji"}, {"Oriya", "ori"}, {"Oromo", "orm"}, {"Ossetian", "oss"}, {"Panjabi", "pan"}, {"Persian", "fas"}, {"Pali", "pli"}, {"Polish", "pol"}, {"Portuguese", "por"}, {"Pushto", "pus"}, {"Quechua", "que"}, {"Romansh", "roh"}, {"Romanian", "ron"}, {"Rundi", "run"}, {"Russian", "rus"}, {"Sango", "sag"}, {"Sanskrit", "san"}, {"Serbian", "srp"}, {"Hrvatski", "hrv"}, {"Sinhala", "sin"}, {"Slovak", "slk"}, {"Slovenian", "slv"}, {"Northern Sami", "sme"}, {"Samoan", "smo"}, {"Shona", "sna"}, {"Sindhi", "snd"}, {"Somali", "som"}, {"Sotho Southern", "sot"}, {"Espanol", "spa"}, {"Sardinian", "srd"}, {"Swati", "ssw"}, {"Sundanese", "sun"}, {"Swahili", "swa"}, {"Svenska", "swe"}, {"Tahitian", "tah"}, {"Tamil", "tam"}, {"Tatar", "tat"}, {"Telugu", "tel"}, {"Tajik", "tgk"}, {"Tagalog", "tgl"}, {"Thai", "tha"}, {"Tibetan", "bod"}, {"Tigrinya", "tir"}, {"Tonga", "ton"}, {"Tswana", "tsn"}, {"Tsonga", "tso"}, {"Turkmen", "tuk"}, {"Turkish", "tur"}, {"Twi", "twi"}, {"Uighur", "uig"}, {"Ukrainian", "ukr"}, {"Urdu", "urd"}, {"Uzbek", "uzb"}, {"Venda", "ven"}, {"Vietnamese", "vie"}, {"Volapük", "vol"}, {"Welsh", "cym"}, {"Walloon", "wln"}, {"Wolof", "wol"}, {"Xhosa", "xho"}, {"Yiddish", "yid"}, {"Yoruba", "yor"}, {"Zhuang", "zha"}, {"Zulu", "zul"} }; return languageMap; } /// /// The get language codes. /// /// /// The user languages. /// /// /// The . /// public static List GetLanguageCodes(StringCollection userLanguages) { // Translate to Iso Codes List iso6392Codes = new List(); foreach (var item in userLanguages) { string isoCode; if (LanguageUtilities.MapLanguages().TryGetValue(item, out isoCode)) { iso6392Codes.Add(isoCode); } } return iso6392Codes; } /// /// The get language codes. /// /// /// The user languages. /// /// /// The . /// public static List GetLanguageCodes(IList userLanguages) { // Translate to Iso Codes List iso6392Codes = new List(); foreach (var item in userLanguages) { string isoCode; if (LanguageUtilities.MapLanguages().TryGetValue(item, out isoCode)) { iso6392Codes.Add(isoCode); } } return iso6392Codes; } /// /// The get iso codes. /// /// /// The . /// public static List GetIsoCodes() { return MapLanguages().Values.ToList(); } } }