import createMiddleware from 'next-intl/middleware' import {NextFetchEvent, NextRequest, NextResponse} from 'next/server' import {routing} from '@/i18n/routing' import {HEADERS} from '@/lib/config/http' import {translatableRoutesRegEx} from '@/lib/config/routes' import {type CustomMiddleware} from '@/middlewares/chain' export function withI18nMiddleware(middleware: CustomMiddleware) { return async ( request: NextRequest, event: NextFetchEvent, response: NextResponse ) => { if (request.nextUrl.pathname.match(translatableRoutesRegEx) !== null) { response = createMiddleware(routing)(request) } let locale = request.cookies.get('NEXT_LOCALE')?.value ?? routing.defaultLocale response.headers.set(HEADERS.xSiteLocale, locale) return middleware(request, event, response) } }