mirror of
https://github.com/lukevella/rallly.git
synced 2025-06-04 11:41:51 +02:00
23 lines
648 B
TypeScript
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;
|
|
}
|
|
}
|