Repository Public
1import { NextResponse, type NextRequest } from "next/server";23const LOCALES = ["en", "fr"];45/** Sends any path without a locale prefix to /en or /fr, following the browser's language preference. */6export function proxy(request: NextRequest) {7 const { pathname } = request.nextUrl;8 if (LOCALES.some((l) => pathname === `/${l}` || pathname.startsWith(`/${l}/`))) return NextResponse.next();9 const accept = request.headers.get("accept-language") ?? "";10 const first = accept.split(",")[0]?.trim().toLowerCase() ?? "";11 const locale = first.startsWith("fr") ? "fr" : "en";12 const url = request.nextUrl.clone();13 url.pathname = `/${locale}${pathname === "/" ? "" : pathname}`;14 return NextResponse.redirect(url, 307);15}1617export const config = { matcher: ["/((?!_next/|api/|images/|.*\\.[a-zA-Z0-9]+$).*)"] };18