package v1

//nolint:funlen
func locale() map[string]string {
	return map[string]string{
		"af":     "af_ZA",
		"am":     "am_ET",
		"ar":     "ar_TN",
		"az":     "az_AZ",
		"be":     "be_BY",
		"bg":     "bg_BG",
		"bn":     "bn_IN",
		"bs":     "bs_BA",
		"ca":     "ca_ES",
		"cs":     "cs_CZ",
		"cy":     "cy_GB",
		"da":     "da_DK",
		"de":     "de_DE",
		"el":     "el_GR",
		"eo":     "eo",
		"es":     "es_ES",
		"et":     "et_EE",
		"eu":     "eu_ES",
		"fa":     "fa_IR",
		"fi":     "fi_FI",
		"fr":     "fr_FR",
		"fy":     "fy_NL",
		"ga":     "ga_IE",
		"gl":     "gl_ES",
		"he":     "he_IL",
		"hi":     "hi_IN",
		"hr":     "hr_HR",
		"hu":     "hu_HU",
		"hy":     "hy_AM",
		"ia":     "ia",
		"id":     "id_ID",
		"is":     "is_IS",
		"it":     "it_IT",
		"ja":     "ja_JP",
		"jv":     "en_US",
		"ka":     "ka_GE",
		"kk":     "kk_KZ",
		"ko":     "ko_KR",
		"ky":     "ky_KG",
		"lt":     "lt_LT",
		"lv":     "lv_LV",
		"mg":     "mg_MG",
		"mk":     "mk_MK",
		"ml":     "ml_IN",
		"mr":     "mr_IN",
		"nb":     "nb_NO",
		"nl":     "nl_NL",
		"nn":     "nn_NO",
		"oc":     "oc_FR",
		"pl":     "pl_PL",
		"pt-br":  "pt_BR",
		"pt":     "pt_PT",
		"ro":     "ro_RO",
		"ru":     "ru_RU",
		"sk":     "sk_SK",
		"sl":     "sl_SI",
		"sr-lat": "sr_RS@latin",
		"sr":     "sr_RS",
		"sv":     "sv_SE",
		"sw":     "sw_KE",
		"ta":     "ta_IN",
		"th":     "th_TH",
		"tr":     "tr_TR",
		"uk":     "uk_UA",
		"uz":     "uz_UZ",
		"vi":     "vi_VN",
		"zh-cn":  "zh_CN",
		"zh-tw":  "zh_TW",
		"zh":     "zh_CN",
		"zu":     "zu_ZA",
	}
}

//nolint:funlen
func localizedCaption() map[string]string {
	return map[string]string{
		"af":     "Weer verslag vir:",
		"am":     "የአየር ሁኔታ ዘገባ ለ ፥",
		"ar":     "تقرير حالة ألطقس",
		"az":     "Hava proqnozu:",
		"be":     "Прагноз надвор'я для:",
		"bg":     "Прогноза за времето в:",
		"bn":     "আবহাওয়া সঙ্ক্রান্ত তথ্য",
		"bs":     "Vremenske prognoze za:",
		"ca":     "Informe del temps per a:",
		"cs":     "Předpověď počasí pro:",
		"cy":     "Adroddiad tywydd ar gyfer:",
		"da":     "Vejret i:",
		"de":     "Wetterbericht für:",
		"el":     "Πρόγνωση καιρού για:",
		"eo":     "Veterprognozo por:",
		"es":     "El tiempo en:",
		"et":     "Ilmaprognoos:",
		"eu":     "Eguraldia:",
		"fa":     "اوه و بآ تیعضو شرازگ",
		"fi":     "Säätiedotus:",
		"fr":     "Prévisions météo pour:",
		"fy":     "Waarberjocht foar:",
		"ga":     "Réamhaisnéis na haimsire do:",
		"gl":     "Previsión do tempo en:",
		"he":     ":ריוואה גזמ תיזחת",
		"hi":     "मौसम की जानकारी",
		"hr":     "Vremenska prognoza za:",
		"hu":     "Időjárás előrejelzés:",
		"hy":     "Եղանակի տեսություն:",
		"ia":     "Le tempore a:",
		"id":     "Prakiraan cuaca:",
		"it":     "Previsioni meteo:",
		"is":     "Veðurskýrsla fyrir:",
		"ja":     "天気予報：",
		"jv":     "Weather forecast for:",
		"ka":     "ამინდის პროგნოზი:",
		"kk":     "Ауа райы:",
		"ko":     "일기 예보：",
		"ky":     "Аба ырайы:",
		"lt":     "Orų prognozė:",
		"lv":     "Laika ziņas:",
		"mk":     "Прогноза за времето во:",
		"ml":     "കാലാവസ്ഥ റിപ്പോർട്ട്:",
		"mr":     "हवामानाचा अंदाज:",
		"nb":     "Værmelding for:",
		"nl":     "Weerbericht voor:",
		"nn":     "Vêrmelding for:",
		"oc":     "Previsions metèo per:",
		"pl":     "Pogoda w:",
		"pt":     "Previsão do tempo para:",
		"pt-br":  "Previsão do tempo para:",
		"ro":     "Prognoza meteo pentru:",
		"ru":     "Прогноз погоды:",
		"sk":     "Predpoveď počasia pre:",
		"sl":     "Vremenska napoved za",
		"sr":     "Временска прогноза за:",
		"sr-lat": "Vremenska prognoza za:",
		"sv":     "Väderleksprognos för:",
		"sw":     "Ripoti ya hali ya hewa, jiji la:",
		"ta":     "வானிலை அறிக்கை",
		"te":     "వాతావరణ సమాచారము:",
		"th":     "รายงานสภาพอากาศ:",
		"tr":     "Hava beklentisi:",
		"uk":     "Прогноз погоди для:",
		"uz":     "Ob-havo bashorati:",
		"vi":     "Báo cáo thời tiết:",
		"zu":     "Isimo sezulu:",
		"zh":     "天气预报：",
		"zh-cn":  "天气预报：",
		"zh-tw":  "天氣預報：",
		"mg":     "Vinavina toetr'andro hoan'ny:",
	}
}

//nolint:misspell,funlen
func daytimeTranslation() map[string][]string {
	return map[string][]string{
		"af":     {"Oggend", "Middag", "Vroegaand", "Laatnag"},
		"am":     {"ጠዋት", "ከሰዓት በኋላ", "ምሽት", "ሌሊት"},
		"ar":     {"ﺎﻠﻠﻴﻟ", "ﺎﻠﻤﺳﺍﺀ", "ﺎﻠﻈﻫﺭ", "ﺎﻠﺼﺑﺎﺣ"},
		"az":     {"Səhər", "Gün", "Axşam", "Gecə"},
		"be":     {"Раніца", "Дзень", "Вечар", "Ноч"},
		"bg":     {"Сутрин", "Обяд", "Вечер", "Нощ"},
		"bn":     {"সকাল", "দুপুর", "সন্ধ্যা", "রাত্রি"},
		"bs":     {"Ujutro", "Dan", "Večer", "Noć"},
		"cs":     {"Ráno", "Ve dne", "Večer", "V noci"},
		"ca":     {"Matí", "Dia", "Tarda", "Nit"},
		"cy":     {"Bore", "Dydd", "Hwyr", "Nos"},
		"da":     {"Morgen", "Middag", "Aften", "Nat"},
		"de":     {"Morgen", "Mittag", "Abend", "Nacht"},
		"el":     {"Πρωί", "Μεσημέρι", "Απόγευμα", "Βράδυ"},
		"en":     {"Morning", "Noon", "Evening", "Night"},
		"eo":     {"Mateno", "Tago", "Vespero", "Nokto"},
		"es":     {"Mañana", "Mediodía", "Tarde", "Noche"},
		"et":     {"Hommik", "Päev", "Õhtu", "Öösel"},
		"eu":     {"Goiza", "Eguerdia", "Arratsaldea", "Gaua"},
		"fa":     {"حبص", "رهظ", "رصع", "بش"},
		"fi":     {"Aamu", "Keskipäivä", "Ilta", "Yö"},
		"fr":     {"Matin", "Après-midi", "Soir", "Nuit"},
		"fy":     {"Moarns", "Middeis", "Jûns", "Nachts"},
		"ga":     {"Maidin", "Nóin", "Tráthnóna", "Oíche"},
		"gl":     {"Mañá", "Mediodía", "Tarde", "Noite"},
		"he":     {"רקוב", "םוֹיְ", "ברֶעֶ", "הלָיְלַ"},
		"hi":     {"प्रातःकाल", "दोपहर", "सायंकाल", "रात"},
		"hr":     {"Jutro", "Dan", "Večer", "Noć"},
		"hu":     {"Reggel", "Dél", "Este", "Éjszaka"},
		"hy":     {"Առավոտ", "Կեսօր", "Երեկո", "Գիշեր"},
		"ia":     {"Matino", "Mediedie", "Vespere", "Nocte"},
		"id":     {"Pagi", "Hari", "Petang", "Malam"},
		"it":     {"Mattina", "Pomeriggio", "Sera", "Notte"},
		"is":     {"Morgunn", "Dagur", "Kvöld", "Nótt"},
		"ja":     {"朝", "昼", "夕", "夜"},
		"jv":     {"Morning", "Noon", "Evening", "Night"},
		"ka":     {"დილა", "დღე", "საღამო", "ღამე"},
		"kk":     {"Таң", "Күндіз", "Кеш", "Түн"},
		"ko":     {"아침", "낮", "저녁", "밤"},
		"ky":     {"Эртең", "Күн", "Кеч", "Түн"},
		"lt":     {"Rytas", "Diena", "Vakaras", "Naktis"},
		"lv":     {"Rīts", "Diena", "Vakars", "Nakts"},
		"mk":     {"Утро", "Пладне", "Вечер", "Ноќ"},
		"ml":     {"രാവിലെ", "മധ്യാഹ്നം", "വൈകുന്നേരം", "രാത്രി"},
		"mr":     {"सकाळ", "दुपार", "संध्याकाळ", "रात्र"},
		"nl":     {"'s Ochtends", "'s Middags", "'s Avonds", "'s Nachts"},
		"nb":     {"Morgen", "Middag", "Kveld", "Natt"},
		"nn":     {"Morgon", "Middag", "Kveld", "Natt"},
		"oc":     {"Matin", "Jorn", "Vèspre", "Nuèch"},
		"pl":     {"Ranek", "Dzień", "Wieczór", "Noc"},
		"pt":     {"Manhã", "Meio-dia", "Tarde", "Noite"},
		"pt-br":  {"Manhã", "Meio-dia", "Tarde", "Noite"},
		"ro":     {"Dimineaţă", "Amiază", "Seară", "Noapte"},
		"ru":     {"Утро", "День", "Вечер", "Ночь"},
		"sk":     {"Ráno", "Cez deň", "Večer", "V noci"},
		"sl":     {"Jutro", "Dan", "Večer", "Noč"},
		"sr":     {"Јутро", "Подне", "Вече", "Ноћ"},
		"sr-lat": {"Jutro", "Podne", "Veče", "Noć"},
		"sv":     {"Morgon", "Eftermiddag", "Kväll", "Natt"},
		"sw":     {"Asubuhi", "Adhuhuri", "Jioni", "Usiku"},
		"ta":     {"காலை", "நண்பகல்", "சாயங்காலம்", "இரவு"},
		"te":     {"ఉదయం", "రోజు", "సాయంత్రం", "రాత్రి"},
		"th":     {"เช้า", "วัน", "เย็น", "คืน"},
		"tr":     {"Sabah", "Öğle", "Akşam", "Gece"},
		"uk":     {"Ранок", "День", "Вечір", "Ніч"},
		"uz":     {"Ertalab", "Kunduzi", "Kechqurun", "Kecha"},
		"vi":     {"Sáng", "Trưa", "Chiều", "Tối"},
		"zh":     {"早上", "中午", "傍晚", "夜间"},
		"zh-cn":  {"早上", "中午", "傍晚", "夜间"},
		"zh-tw":  {"早上", "中午", "傍晚", "夜間"},
		"zu":     {"Morning", "Noon", "Evening", "Night"},
		"mg":     {"Maraina", "Tolakandro", "Ariva", "Alina"},
	}
}

func unitTemp() map[bool]string {
	return map[bool]string{
		false: "C",
		true:  "F",
	}
}

func localizedRain() map[string]map[bool]string {
	return map[string]map[bool]string{
		"en": {
			false: "mm",
			true:  "in",
		},
		"be": {
			false: "мм",
			true:  "in",
		},
		"ru": {
			false: "мм",
			true:  "in",
		},
		"uk": {
			false: "мм",
			true:  "in",
		},
	}
}

func localizedVis() map[string]map[bool]string {
	return map[string]map[bool]string{
		"en": {
			false: "km",
			true:  "mi",
		},
		"be": {
			false: "км",
			true:  "mi",
		},
		"ru": {
			false: "км",
			true:  "mi",
		},
		"uk": {
			false: "км",
			true:  "mi",
		},
	}
}

func localizedWind() map[string]map[int]string {
	return map[string]map[int]string{
		"en": {
			0: "km/h",
			1: "mph",
			2: "m/s",
		},
		"be": {
			0: "км/г",
			1: "mph",
			2: "м/c",
		},
		"ru": {
			0: "км/ч",
			1: "mph",
			2: "м/c",
		},
		"tr": {
			0: "km/sa",
			1: "mph",
			2: "m/s",
		},
		"uk": {
			0: "км/год",
			1: "mph",
			2: "м/c",
		},
	}
}

func unitWind(unit int, lang string) string {
	translation, ok := localizedWind()[lang]
	if !ok {
		translation = localizedWind()["en"]
	}

	return translation[unit]
}

func unitVis(unit bool, lang string) string {
	translation, ok := localizedVis()[lang]
	if !ok {
		translation = localizedVis()["en"]
	}

	return translation[unit]
}

func unitRain(unit bool, lang string) string {
	translation, ok := localizedRain()[lang]
	if !ok {
		translation = localizedRain()["en"]
	}

	return translation[unit]
}
