UNPKG

firebase-frameworks

Version:

Experimental addon to the Firebase CLI to add web framework support

35 lines (34 loc) 1.12 kB
export function getPreferredLocale(req, locales, defaultLocale) { const country = req.headers["x-country-code"] || ""; const languages = languagesByPreference(req.headers["accept-language"]); const localesByHostingOOO = []; if (country) { for (const language of languages) { localesByHostingOOO.push(`${language}_${country}`); } localesByHostingOOO.push(`ALL_${country}`); } for (const language of languages) { localesByHostingOOO.push(`${language}_ALL`); localesByHostingOOO.push(`${language}`); } return localesByHostingOOO.find((it) => locales.includes(it)) || defaultLocale; } function languagesByPreference(acceptLanguage) { if (!acceptLanguage) { return []; } const languagesSeen = new Set(); const languagesOrdered = []; for (const v of acceptLanguage.split(",")) { const l = v.split("-")[0]; if (!l) { continue; } if (!languagesSeen.has(l)) { languagesOrdered.push(l); } languagesSeen.add(l); } return languagesOrdered; }