Untitled
unknown
javascript
9 months ago
1.5 kB
7
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