Internationalization - flickering - rewrites next config
Unanswered
Florida White posted this in #help-forum
Original message was deleted.
1 Reply
Florida White
middleware:
let defaultLocale = "en";
let locales = ["en", "pl"];
const getLangFromCookies = request => {
const lang = request.cookies.get("lang");
let acceptedLang = null;
if (lang) {
acceptedLang = lang.value === "pl" ? "pl-PL,pl;q=0.9" : "en-US,en;q=0.5";
}
return acceptedLang;
};
const getLocale = request => {
const lang = getLangFromCookies(request);
let headers = { "accept-language": lang };
let languages = new Negotiator({ headers }).languages();
return match(languages, locales, defaultLocale);
};
export async function middleware(request) {
const { pathname } = request.nextUrl;
const pathnameHasLocale = locales.some(
locale => pathname.startsWith(`/${locale}/`) || pathname === `/${locale}`
);
if (pathnameHasLocale) return;
const locale = getLocale(request);
request.nextUrl.pathname = `/${locale}${pathname}`;