File: //var/www/quadcode.com/src/hooks.server.ts
import { defaultLocale, locales } from '$lib/translations';
import type { Handle } from '@sveltejs/kit';
const routeRegex = new RegExp(/^\/[^.]*([?#].*)?$/);
/** @type {import('@sveltejs/kit').Handle} */
export const handle: Handle = async ({ event, resolve }) => {
const { url, request } = event;
const { pathname } = url;
// If this request is a route request
if (routeRegex.test(pathname)) {
const supportedLocales = locales.get().map((l) => l.toLowerCase());
let locale = supportedLocales.find((l) => l === `${pathname.match(/[^/]+?(?=\/|$)/)}`.toLowerCase());
if (locale === defaultLocale && !request.headers.get('prevent-redirect')) {
const localeRegex = new RegExp(`^/${locale}`);
const location = `${pathname}`.replace(localeRegex, '') || '/';
return new Response(undefined, { headers: { location }, status: 301 });
} else if (!locale) {
locale = defaultLocale;
}
return resolve(
{ ...event, locals: { lang: locale } },
{
transformPageChunk: ({ html }) => html.replace('%lang%', `${locale}`),
}
);
}
return resolve(event);
};