diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 7d81018..afb8523 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,22 +1,10 @@ import { logger } from "$lib/logger"; -import type { Handle } from "@sveltejs/kit"; import { sequence } from "@sveltejs/kit/hooks"; -import { paraglideMiddleware } from "./i18n/server"; import { corsHandle } from "./server-hooks/corsHandle"; import { loggingHandle } from "./server-hooks/loggingHandle"; import { rateLimitHandle } from "./server-hooks/rateLimitHandle"; import { secHeaderHandle } from "./server-hooks/secHeaderHandle"; - -const i18nHandler: Handle = ({ event, resolve }) => { - return paraglideMiddleware(event.request, ({ request: localizedRequest, locale }) => { - event.request = localizedRequest; - return resolve(event, { - transformPageChunk: ({ html }) => { - return html.replace("%lang%", locale); - } - }); - }); -}; +import { i18nHandle } from "./server-hooks/i18nHandle"; export async function handleError({ error, event, status, message }) { const errorLogger = logger.setContext("ERROR_HANDLER"); @@ -39,7 +27,7 @@ export async function handleError({ error, event, status, message }) { export const handle = sequence( loggingHandle, - i18nHandler, + i18nHandle, rateLimitHandle, corsHandle, secHeaderHandle diff --git a/src/server-hooks/i18nHandle.ts b/src/server-hooks/i18nHandle.ts new file mode 100644 index 0000000..173db8a --- /dev/null +++ b/src/server-hooks/i18nHandle.ts @@ -0,0 +1,21 @@ +import type { Handle } from "@sveltejs/kit"; +import { paraglideMiddleware } from "$i18n/server"; + +/** + * SvelteKit server hook that handles i18n localization + * + * @param {Object} params - Hook parameters + * @param {import('@sveltejs/kit').RequestEvent} params.event - The request event + * @param {Function} params.resolve - Function to resolve the request + * @returns {Promise} The response with applied headers and rate limiting + */ +export const i18nHandle: Handle = ({ event, resolve }) => { + return paraglideMiddleware(event.request, ({ request: localizedRequest, locale }) => { + event.request = localizedRequest; + return resolve(event, { + transformPageChunk: ({ html }) => { + return html.replace("%lang%", locale); + } + }); + }); +};