rallly/packages/languages/src/get-preferred-locale.ts
2025-03-14 13:35:51 +00:00

23 lines
648 B
TypeScript

import languages, { defaultLocale } from "./index";
import Negotiator from "negotiator";
import { match } from "@formatjs/intl-localematcher";
import type { NextRequest } from "next/server";
const locales = Object.keys(languages);
export function getPreferredLocale(req: NextRequest) {
const preferredLanguages = new Negotiator({
headers: {
"accept-language": req.headers.get("accept-language") ?? "",
},
})
.languages()
.filter((lang) => lang !== "*");
try {
return match(preferredLanguages, locales, defaultLocale);
} catch (e) {
console.warn("Failed to match locale", e);
return defaultLocale;
}
}