const LANG3_TO_NAME = { afr: 'afrikaans', amh: 'amharic', arb: 'arabic', asm: 'assamese', azj: 'azerbaijani', bak: 'bashkir', bel: 'belarusian', ben: 'bengali', bod: 'tibetan', bos: 'bosnian', bre: 'breton', bul: 'bulgarian', cat: 'catalan', ces: 'czech', cmn: 'chinese', cym: 'welsh', dan: 'danish', deu: 'german', ell: 'greek', eng: 'english', est: 'estonian', eus: 'basque', fao: 'faroese', fin: 'finnish', fra: 'french', glg: 'galician', guj: 'gujarati', hat: 'haitian creole', hau: 'hausa', haw: 'hawaiian', heb: 'hebrew', hin: 'hindi', hrv: 'croatian', hun: 'hungarian', hye: 'armenian', ind: 'indonesian', isl: 'icelandic', ita: 'italian', jav: 'javanese', jpn: 'japanese', kan: 'kannada', kat: 'georgian', kaz: 'kazakh', khk: 'mongolian', khm: 'khmer', kor: 'korean', lao: 'lao', lat: 'latin', lin: 'lingala', lit: 'lithuanian', ltz: 'luxembourgish', lvs: 'latvian', mal: 'malayalam', mar: 'marathi', mkd: 'macedonian', mlg: 'malagasy', mlt: 'maltese', mri: 'maori', mya: 'myanmar', nld: 'dutch', nno: 'nynorsk', nob: 'norwegian', npi: 'nepali', oci: 'occitan', pan: 'punjabi', pbt: 'pashto', pes: 'persian', pol: 'polish', por: 'portuguese', ron: 'romanian', rus: 'russian', san: 'sanskrit', sin: 'sinhala', slk: 'slovak', slv: 'slovenian', sna: 'shona', snd: 'sindhi', som: 'somali', spa: 'spanish', sqi: 'albanian', srp: 'serbian', sun: 'sundanese', swe: 'swedish', swh: 'swahili', tam: 'tamil', tat: 'tatar', tel: 'telugu', tgk: 'tajik', tgl: 'tagalog', tha: 'thai', tuk: 'turkmen', tur: 'turkish', ukr: 'ukrainian', urd: 'urdu', uzn: 'uzbek', vie: 'vietnamese', yid: 'yiddish', yor: 'yoruba', zlm: 'malay', }; export function getLanguageFromThreeLetterCode( lang3Code: string, ): string | null { try { const name = LANG3_TO_NAME[lang3Code] ?? null; if (name == null) { return null; } const capitalizedWords = name .split(' ') .map((word: string) => word[0].toUpperCase() + word.slice(1)); return capitalizedWords.join(' '); } catch (e) { console.warn(`Unable to get language name for code ${lang3Code}: ${e}`); } return null; }