File: /var/www/affstore-landing/src/hooks.server.ts
import { defaultLocale, locales } from '$lib/translations';
import type { Handle } from '@sveltejs/kit';
const routeRegex = new RegExp(/^\/[^.]*([?#].*)?$/);
const rtlLocales = ['ar'];
const isRTL = (locale: string): boolean => {
return rtlLocales.includes(locale.toLowerCase());
};
/** @type {import('@sveltejs/kit').Handle} */
export const handle: Handle = async ({ event, resolve }) => {
const { url } = event;
const { pathname } = url;
if (routeRegex.test(pathname)) {
const supportedLocales = locales.get().map((l) => l.toLowerCase());
// Try to get locale from `pathname`.
let locale = supportedLocales.find((l) => l === `${pathname.match(/[^/]+?(?=\/|$)/)}`.toLowerCase());
// We want to redirect the default locale to "no-locale" path
if (!locale) {
locale = defaultLocale;
}
const dir = isRTL(locale) ? 'rtl' : 'ltr';
// Add html `lang` and `dir` attributes
return resolve(
{ ...event, locals: { lang: locale } },
{
transformPageChunk: ({ html }) => html.replace('%lang%', `${locale}`).replace('%dir%', dir),
}
);
}
return resolve(event);
};
// /** @type {import('@sveltejs/kit').HandleServerError} */
// export const handleError: ({
// event,
// }: {
// event: HandleServerError & { locals: { [name: string]: string } };
// }) => Promise<App.Locals> = async ({ event }) => {
// const { locals } = event;
// const { lang } = locals;
//
// await loadTranslations(lang, 'error');
//
// return locals;
// };