intl-t
Version:
A Fully-Typed Node-Based i18n Translation Library
20 lines (19 loc) • 900 B
JavaScript
export function match(requestLocales,
// @ts-ignore-error optional binding
availableLocales = this?.allowedLocales || requestLocales || [],
// @ts-ignore-error optional binding
defaultLocale = this?.mainLocale || this?.defaultLocale || availableLocales[0]) {
requestLocales = typeof requestLocales === "string" ? [requestLocales] : requestLocales || [];
let matchedLocale;
for (let i = 0; i < requestLocales.length; i++) {
const locale = requestLocales[i];
let [language, region] = locale.split("-");
if ((matchedLocale = availableLocales.find(l => l.startsWith(locale))))
break;
if ((matchedLocale = availableLocales.find(l => l.startsWith(language))))
break;
matchedLocale = availableLocales.find(l => l.includes(region));
}
return matchedLocale || defaultLocale || undefined;
}
export { match as matchLocale };