// --------------------------------------------------------------------------------------------------------------------
//
// 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();
}
}
}