import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; import { SUPPORTED_LOCALES, DEFAULT_LOCALE, LOCALE_COOKIE, getLocaleFromPath } from "@/lib/i18n/locales"; const OLD_SERBIAN_PATHS = ["products", "about", "contact", "checkout"]; export default function middleware(request: NextRequest) { const pathname = request.nextUrl.pathname; const cookieLocale = request.cookies.get(LOCALE_COOKIE)?.value; const acceptLanguage = request.headers.get("accept-language") || ""; if (pathname === "/" || pathname === "") { let locale = DEFAULT_LOCALE; if (cookieLocale && SUPPORTED_LOCALES.includes(cookieLocale as typeof SUPPORTED_LOCALES[number])) { locale = cookieLocale; } else if (acceptLanguage.includes("en")) { locale = "en"; } const url = request.nextUrl.clone(); url.pathname = `/${locale}`; return NextResponse.redirect(url, 301); } const isOldSerbianPath = OLD_SERBIAN_PATHS.some( (path) => pathname === `/${path}` || pathname.startsWith(`/${path}/`) ); if (isOldSerbianPath) { let locale = DEFAULT_LOCALE; if (cookieLocale && SUPPORTED_LOCALES.includes(cookieLocale as typeof SUPPORTED_LOCALES[number])) { locale = cookieLocale; } else if (acceptLanguage.includes("en")) { locale = "en"; } const url = request.nextUrl.clone(); url.pathname = `/${locale}${pathname}`; return NextResponse.redirect(url, 301); } return NextResponse.next(); } export const config = { matcher: [ "/", "/(sr|en|de|fr)/:path*", "/((?!api|_next|_vercel|.*\\..*).*)", ], };