export function matchLanguages(languages: string[], acceptLanguages: readonly string[]): string | null { { // const lang = acceptLanguages.map(userLang => languages.find(lang => lang.startsWith(userLang))).filter(v => !!v)[0] // TODO: Support es-419, remove this code if we include spanish country variants const lang = acceptLanguages.map(userLang => languages.find((currentLang) => { if (currentLang === userLang) return currentLang // Edge browser: case for ca-valencia if (currentLang === 'ca-valencia' && userLang === 'ca-Es-VALENCIA') return currentLang if (userLang.startsWith('es-') && userLang !== 'es-ES' && currentLang === 'es-419') return currentLang return currentLang.startsWith(userLang) ? currentLang : undefined })).filter(v => !!v)?.[0] if (lang) return lang } const lang = acceptLanguages.map((userLang) => { userLang = userLang.split('-')[0]! return languages.find(lang => lang.startsWith(userLang)) }).filter(v => !!v)[0] if (lang) return lang return null }