aboutsummaryrefslogtreecommitdiffstats
path: root/src/hooks.server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/hooks.server.ts')
-rw-r--r--src/hooks.server.ts62
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);
+};