2023-05-20 08:14:35 +02:00
|
|
|
import { match } from '@formatjs/intl-localematcher';
|
2023-06-11 17:28:12 +02:00
|
|
|
import mem from 'mem';
|
2023-05-20 08:14:35 +02:00
|
|
|
|
2023-06-11 17:28:12 +02:00
|
|
|
function _localeMatch(...args) {
|
2023-05-20 08:14:35 +02:00
|
|
|
// Wrap in try/catch because localeMatcher throws on invalid locales
|
|
|
|
try {
|
|
|
|
return match(...args);
|
|
|
|
} catch (e) {
|
2023-08-14 12:03:05 +02:00
|
|
|
const defaultLocale = args[2];
|
|
|
|
return defaultLocale || false;
|
2023-05-20 08:14:35 +02:00
|
|
|
}
|
|
|
|
}
|
2023-06-11 17:28:12 +02:00
|
|
|
const localeMatch = mem(_localeMatch, {
|
|
|
|
cacheKey: (args) => args.join(),
|
|
|
|
});
|
2023-05-20 08:14:35 +02:00
|
|
|
|
|
|
|
export default localeMatch;
|