#ifndef WHISPER_LANGUAGE_H
#define WHISPER_LANGUAGE_H

#include <map>
#include <string>

static const std::map<std::string, std::string> whisper_available_lang{
	{
		"auto",
		"Auto detect",
	},
	{
		"en",
		"English",
	},
	{
		"zh",
		"Chinese",
	},
	{
		"de",
		"German",
	},
	{
		"es",
		"Spanish",
	},
	{
		"ru",
		"Russian",
	},
	{
		"ko",
		"Korean",
	},
	{
		"fr",
		"French",
	},
	{
		"ja",
		"Japanese",
	},
	{
		"pt",
		"Portuguese",
	},
	{
		"tr",
		"Turkish",
	},
	{
		"pl",
		"Polish",
	},
	{
		"ca",
		"Catalan",
	},
	{
		"nl",
		"Dutch",
	},
	{
		"ar",
		"Arabic",
	},
	{
		"sv",
		"Swedish",
	},
	{
		"it",
		"Italian",
	},
	{
		"id",
		"Indonesian",
	},
	{
		"hi",
		"Hindi",
	},
	{
		"fi",
		"Finnish",
	},
	{
		"vi",
		"Vietnamese",
	},
	{
		"he",
		"Hebrew",
	},
	{
		"uk",
		"Ukrainian",
	},
	{
		"el",
		"Greek",
	},
	{
		"ms",
		"Malay",
	},
	{
		"cs",
		"Czech",
	},
	{
		"ro",
		"Romanian",
	},
	{
		"da",
		"Danish",
	},
	{
		"hu",
		"Hungarian",
	},
	{
		"ta",
		"Tamil",
	},
	{
		"no",
		"Norwegian",
	},
	{
		"th",
		"Thai",
	},
	{
		"ur",
		"Urdu",
	},
	{
		"hr",
		"Croatian",
	},
	{
		"bg",
		"Bulgarian",
	},
	{
		"lt",
		"Lithuanian",
	},
	{
		"la",
		"Latin",
	},
	{
		"mi",
		"Maori",
	},
	{
		"ml",
		"Malayalam",
	},
	{
		"cy",
		"Welsh",
	},
	{
		"sk",
		"Slovak",
	},
	{
		"te",
		"Telugu",
	},
	{
		"fa",
		"Persian",
	},
	{
		"lv",
		"Latvian",
	},
	{
		"bn",
		"Bengali",
	},
	{
		"sr",
		"Serbian",
	},
	{
		"az",
		"Azerbaijani",
	},
	{
		"sl",
		"Slovenian",
	},
	{
		"kn",
		"Kannada",
	},
	{
		"et",
		"Estonian",
	},
	{
		"mk",
		"Macedonian",
	},
	{
		"br",
		"Breton",
	},
	{
		"eu",
		"Basque",
	},
	{
		"is",
		"Icelandic",
	},
	{
		"hy",
		"Armenian",
	},
	{
		"ne",
		"Nepali",
	},
	{
		"mn",
		"Mongolian",
	},
	{
		"bs",
		"Bosnian",
	},
	{
		"kk",
		"Kazakh",
	},
	{
		"sq",
		"Albanian",
	},
	{
		"sw",
		"Swahili",
	},
	{
		"gl",
		"Galician",
	},
	{
		"mr",
		"Marathi",
	},
	{
		"pa",
		"Punjabi",
	},
	{
		"si",
		"Sinhala",
	},
	{
		"km",
		"Khmer",
	},
	{
		"sn",
		"Shona",
	},
	{
		"yo",
		"Yoruba",
	},
	{
		"so",
		"Somali",
	},
	{
		"af",
		"Afrikaans",
	},
	{
		"oc",
		"Occitan",
	},
	{
		"ka",
		"Georgian",
	},
	{
		"be",
		"Belarusian",
	},
	{
		"tg",
		"Tajik",
	},
	{
		"sd",
		"Sindhi",
	},
	{
		"gu",
		"Gujarati",
	},
	{
		"am",
		"Amharic",
	},
	{
		"yi",
		"Yiddish",
	},
	{
		"lo",
		"Lao",
	},
	{
		"uz",
		"Uzbek",
	},
	{
		"fo",
		"Faroese",
	},
	{
		"ht",
		"Haitian",
	},
	{
		"ps",
		"Pashto",
	},
	{
		"tk",
		"Turkmen",
	},
	{
		"nn",
		"Nynorsk",
	},
	{
		"mt",
		"Maltese",
	},
	{
		"sa",
		"Sanskrit",
	},
	{
		"lb",
		"Luxembourgish",
	},
	{
		"my",
		"Myanmar",
	},
	{
		"bo",
		"Tibetan",
	},
	{
		"tl",
		"Tagalog",
	},
	{
		"mg",
		"Malagasy",
	},
	{
		"as",
		"Assamese",
	},
	{
		"tt",
		"Tatar",
	},
	{
		"haw",
		"Hawaiian",
	},
	{
		"ln",
		"Lingala",
	},
	{
		"ha",
		"Hausa",
	},
	{
		"ba",
		"Bashkir",
	},
	{
		"jw",
		"Javanese",
	},
	{
		"su",
		"Sundanese",
	},
};

// the reverse map of whisper_available_lang
static const std::map<std::string, std::string> whisper_available_lang_reverse{
	{
		"Auto detect",
		"auto",
	},
	{
		"English",
		"en",
	},
	{
		"Chinese",
		"zh",
	},
	{
		"German",
		"de",
	},
	{
		"Spanish",
		"es",
	},
	{
		"Russian",
		"ru",
	},
	{
		"Korean",
		"ko",
	},
	{
		"French",
		"fr",
	},
	{
		"Japanese",
		"ja",
	},
	{
		"Portuguese",
		"pt",
	},
	{
		"Turkish",
		"tr",
	},
	{
		"Polish",
		"pl",
	},
	{
		"Catalan",
		"ca",
	},
	{
		"Dutch",
		"nl",
	},
	{
		"Arabic",
		"ar",
	},
	{
		"Swedish",
		"sv",
	},
	{
		"Italian",
		"it",
	},
	{
		"Indonesian",
		"id",
	},
	{
		"Hindi",
		"hi",
	},
	{
		"Finnish",
		"fi",
	},
	{
		"Vietnamese",
		"vi",
	},
	{
		"Hebrew",
		"he",
	},
	{
		"Ukrainian",
		"uk",
	},
	{
		"Greek",
		"el",
	},
	{
		"Malay",
		"ms",
	},
	{
		"Czech",
		"cs",
	},
	{
		"Romanian",
		"ro",
	},
	{
		"Danish",
		"da",
	},
	{
		"Hungarian",
		"hu",
	},
	{
		"Tamil",
		"ta",
	},
	{
		"Norwegian",
		"no",
	},
	{
		"Thai",
		"th",
	},
	{
		"Urdu",
		"ur",
	},
	{
		"Croatian",
		"hr",
	},
	{
		"Bulgarian",
		"bg",
	},
	{
		"Lithuanian",
		"lt",
	},
	{
		"Latin",
		"la",
	},
	{
		"Maori",
		"mi",
	},
	{
		"Malayalam",
		"ml",
	},
	{
		"Welsh",
		"cy",
	},
	{
		"Slovak",
		"sk",
	},
	{
		"Telugu",
		"te",
	},
	{
		"Persian",
		"fa",
	},
	{
		"Latvian",
		"lv",
	},
	{
		"Bengali",
		"bn",
	},
	{
		"Serbian",
		"sr",
	},
	{
		"Azerbaijani",
		"az",
	},
	{
		"Slovenian",
		"sl",
	},
	{
		"Kannada",
		"kn",
	},
	{
		"Estonian",
		"et",
	},
	{
		"Macedonian",
		"mk",
	},
	{
		"Breton",
		"br",
	},
	{
		"Basque",
		"eu",
	},
	{
		"Icelandic",
		"is",
	},
	{
		"Armenian",
		"hy",
	},
	{
		"Nepali",
		"ne",
	},
	{
		"Mongolian",
		"mn",
	},
	{
		"Bosnian",
		"bs",
	},
	{
		"Kazakh",
		"kk",
	},
	{
		"Albanian",
		"sq",
	},
	{
		"Swahili",
		"sw",
	},
	{
		"Galician",
		"gl",
	},
	{
		"Marathi",
		"mr",
	},
	{
		"Punjabi",
		"pa",
	},
	{
		"Sinhala",
		"si",
	},
	{
		"Khmer",
		"km",
	},
	{
		"Shona",
		"sn",
	},
	{
		"Yoruba",
		"yo",
	},
	{
		"Somali",
		"so",
	},
	{
		"Afrikaans",
		"af",
	},
	{
		"Occitan",
		"oc",
	},
	{
		"Georgian",
		"ka",
	},
	{
		"Belarusian",
		"be",
	},
	{
		"Tajik",
		"tg",
	},
	{
		"Sindhi",
		"sd",
	},
	{
		"Gujarati",
		"gu",
	},
	{
		"Amharic",
		"am",
	},
	{
		"Yiddish",
		"yi",
	},
	{
		"Lao",
		"lo",
	},
	{
		"Uzbek",
		"uz",
	},
	{
		"Faroese",
		"fo",
	},
	{
		"Haitian",
		"ht",
	},
	{
		"Pashto",
		"ps",
	},
	{
		"Turkmen",
		"tk",
	},
	{
		"Nynorsk",
		"nn",
	},
	{
		"Maltese",
		"mt",
	},
	{
		"Sanskrit",
		"sa",
	},
	{
		"Luxembourgish",
		"lb",
	},
	{
		"Myanmar",
		"my",
	},
	{
		"Tibetan",
		"bo",
	},
	{
		"Tagalog",
		"tl",
	},
	{
		"Malagasy",
		"mg",
	},
	{
		"Assamese",
		"as",
	},
	{
		"Tatar",
		"tt",
	},
	{
		"Hawaiian",
		"haw",
	},
	{
		"Lingala",
		"ln",
	},
	{
		"Hausa",
		"ha",
	},
	{
		"Bashkir",
		"ba",
	},
	{
		"Javanese",
		"jw",
	},
	{
		"Sundanese",
		"su",
	},
};

#endif // WHISPER_LANGUAGE_H
