firebase-frameworks
Version:
Experimental addon to the Firebase CLI to add web framework support
35 lines (34 loc) • 1.12 kB
JavaScript
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;
}