Untitled
unknown
javascript
24 days ago
1.5 kB
3
Indexable
import { NextResponse } from "next/server"; import { fallbackLng, languages } from "@/app/i18n/settings"; const cookieName = "i18next"; const languageMiddleware = (req) => { const url = req.nextUrl; const pathLang = url.pathname.split("/")[1]?.toLowerCase().trim(); const cookieLng = req.cookies.get(cookieName)?.value; const isDevelopment = process.env.NODE_ENV === 'development'; if (url.pathname === "/") { const browserLang = req.headers.get("accept-language")?.split(",")[0].split("-")[0]; const redirectLang = languages.includes(browserLang) ? browserLang : fallbackLng; const redirectUrl = new URL(`/${redirectLang}`, req.url); const response = NextResponse.redirect(redirectUrl); response.headers.set("x-language", redirectLang); return response; } if (!languages.includes(pathLang)) { const redirectUrl = new URL(`/${fallbackLng}${url.pathname}`, req.url); const response = NextResponse.redirect(redirectUrl); response.headers.set("x-language", fallbackLng); return response; } const response = NextResponse.next(); response.headers.set("x-language", pathLang); if (cookieLng !== pathLang) { response.cookies.set(cookieName, pathLang, { sameSite: 'Lax', secure: !isDevelopment, path: '/', }); } return response; }; export default languageMiddleware;
Editor is loading...
Leave a Comment