@intlayer/core
Version:
Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.
26 lines (24 loc) • 1.07 kB
JavaScript
import configuration from "@intlayer/config/built";
//#region src/localization/localeResolver.ts
/**
* Resolves the most specific locale from a user-provided list,
* or falls back to the default locale if no match is found.
*/
const localeResolver = (selectedLocale, locales = configuration?.internationalization?.locales, defaultLocale = configuration?.internationalization?.defaultLocale) => {
const requestedLocales = [selectedLocale].flat();
const normalize = (locale) => locale.trim().toLowerCase();
try {
for (const requested of requestedLocales) {
const normalizedRequested = normalize(requested);
const exactMatch = locales.find((loc) => normalize(loc) === normalizedRequested);
if (exactMatch) return exactMatch;
const [requestedLang] = normalizedRequested.split("-");
const partialMatch = locales.find((loc) => normalize(loc).split("-")[0] === requestedLang);
if (partialMatch) return partialMatch;
}
} catch (_error) {}
return defaultLocale;
};
//#endregion
export { localeResolver };
//# sourceMappingURL=localeResolver.mjs.map