diff options
Diffstat (limited to 'src/hooks.server.ts')
| -rw-r--r-- | src/hooks.server.ts | 62 |
1 files changed, 30 insertions, 32 deletions
diff --git a/src/hooks.server.ts b/src/hooks.server.ts index ddd9342..1c8c988 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,43 +1,41 @@ -import { detectLocale, i18n, isLocale } from '$i18n/i18n-util' -import { loadAllLocales } from '$i18n/i18n-util.sync' -import type { Handle, RequestEvent } from '@sveltejs/kit' -import { initAcceptLanguageHeaderDetector } from 'typesafe-i18n/detectors' +import { detectLocale, i18n, isLocale } from "$i18n/i18n-util"; +import { loadAllLocales } from "$i18n/i18n-util.sync"; +import type { Handle, RequestEvent } from "@sveltejs/kit"; +import { initAcceptLanguageHeaderDetector } from "typesafe-i18n/detectors"; -loadAllLocales() -const L = i18n() +loadAllLocales(); +const L = i18n(); export const handle: Handle = async ({ event, resolve }) => { - // read language slug - const [, lang] = event.url.pathname.split('/') + // read language slug + const [, lang] = event.url.pathname.split("/"); - // redirect to base locale if no locale slug was found - if (!lang) { - const locale = getPreferredLocale(event) + // redirect to base locale if no locale slug was found + if (!lang) { + const locale = getPreferredLocale(event); - return new Response(null, { - status: 302, - headers: { Location: `/${locale}` }, - }) - } + return new Response(null, { + status: 302, + headers: { Location: `/${locale}` }, + }); + } - // if slug is not a locale, use base locale (e.g. api endpoints) - const locale = isLocale(lang) ? (lang as Locales) : getPreferredLocale(event) - const LL = L[locale] + // if slug is not a locale, use base locale (e.g. api endpoints) + const locale = isLocale(lang) ? (lang as Locales) : getPreferredLocale(event); + const LL = L[locale]; - // bind locale and translation functions to current request - event.locals.locale = locale - event.locals.LL = LL + // bind locale and translation functions to current request + event.locals.locale = locale; + event.locals.LL = LL; - console.info(LL.log({ fileName: 'hooks.server.ts' })) - - // replace html lang attribute with correct language - return resolve(event, { transformPageChunk: ({ html }) => html.replace('%lang%', locale) }) -} + // replace html lang attribute with correct language + return resolve(event, { transformPageChunk: ({ html }) => html.replace("%lang%", locale) }); +}; const getPreferredLocale = ({ request }: RequestEvent) => { - // detect the preferred language the user has configured in his browser - // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language - const acceptLanguageDetector = initAcceptLanguageHeaderDetector(request) + // detect the preferred language the user has configured in his browser + // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language + const acceptLanguageDetector = initAcceptLanguageHeaderDetector(request); - return detectLocale(acceptLanguageDetector) -}
\ No newline at end of file + return detectLocale(acceptLanguageDetector); +}; |
