From 92d1f5aa5565378756312d581cb9599d798dba69 Mon Sep 17 00:00:00 2001 From: Restray Date: Sat, 2 Apr 2022 19:28:20 +0200 Subject: [PATCH] Revert "Patch bugs on locale redirections" This reverts commit 614eb923d84a5c3bee4008bec2291b5d4e9ff5c1. --- src/hooks.ts | 66 ++-- src/lib/lang.json | 4 +- src/lib/translations.ts | 10 +- src/routes/__layout.svelte | 741 ++++++++++++++++++------------------- 4 files changed, 409 insertions(+), 412 deletions(-) diff --git a/src/hooks.ts b/src/hooks.ts index 53b6d07f2..4a0fa2e87 100644 --- a/src/hooks.ts +++ b/src/hooks.ts @@ -18,36 +18,6 @@ export const handle = handleSession( }, async function ({ event, resolve }) { let response; - let locale; - - const { url, request } = event; - const { pathname } = url; - - // If this request is a route request - if (routeRegex.test(pathname)) { - // Get defined locales - const supportedLocales = locales.get(); - - // Try to get locale from `pathname`. - locale = supportedLocales.find( - (l) => `${l}`.toLowerCase() === `${pathname.match(/[^/]+?(?=\/|$)/)}`.toLowerCase() - ); - - if (!locale) { - // Get user preferred locale - locale = `${`${request.headers.get('accept-language')}`.match(/[a-zA-Z-]+?(?=_|,|;)/)}`; - - // Set default locale if user preferred locale does not match - if (!supportedLocales.includes(locale)) locale = 'en-US'; - - // 302 redirect - return new Response(undefined, { - headers: { location: `/${locale}${pathname}` }, - status: 302 - }); - } - } - try { if (event.locals.cookies) { if (event.locals.cookies['kit.session']) { @@ -70,6 +40,7 @@ export const handle = handleSession( ssr: !event.url.pathname.startsWith('/webhooks/success') }); } catch (error) { + console.log(error); response = await resolve(event, { ssr: !event.url.pathname.startsWith('/webhooks/success') }); @@ -96,9 +67,40 @@ export const handle = handleSession( ); } - if (locale && response.headers.get('content-type') === 'text/html') { + const { url, request } = event; + const { pathname } = url; + + // If this request is a route request + if (routeRegex.test(pathname)) { + // Get defined locales + const supportedLocales = locales.get(); + + // Try to get locale from `pathname`. + let locale = supportedLocales.find( + (l) => `${l}`.toLowerCase() === `${pathname.match(/[^/]+?(?=\/|$)/)}`.toLowerCase() + ); + + // If route locale is not supported + if (!locale) { + // Get user preferred locale + locale = `${`${request.headers['accept-language']}`.match( + /[a-zA-Z]+?(?=-|_|,|;)/ + )}`.toLowerCase(); + + // Set default locale if user preferred locale does not match + if (!supportedLocales.includes(locale)) locale = 'en'; + + // 301 redirect + return new Response(undefined, { + headers: { location: `/${locale}${pathname}` }, + status: 301 + }); + } + + // Add html `lang` attribute const body = await response.text(); - return new Response(body.replace(//, ``), response); + + return new Response(`${body}`.replace(//, ``), response); } return response; diff --git a/src/lib/lang.json b/src/lib/lang.json index 082405899..b01c522bb 100644 --- a/src/lib/lang.json +++ b/src/lib/lang.json @@ -1,4 +1,4 @@ { - "en-US": "English", - "fr-FR": "Français" + "en": "English", + "fr": "Français" } diff --git a/src/lib/translations.ts b/src/lib/translations.ts index cfa5398ab..299c8a75b 100644 --- a/src/lib/translations.ts +++ b/src/lib/translations.ts @@ -3,19 +3,19 @@ import lang from './lang.json'; /** @type {import('sveltekit-i18n').Config} */ export const config = { - fallbackLocale: 'en-US', + fallbackLocale: 'en', translations: { - 'en-US': { lang }, - 'fr-FR': { lang } + en: { lang }, + fr: { lang } }, loaders: [ { - locale: 'en-US', + locale: 'en', key: '', loader: async () => (await import('../../static/locales/en.json')).default }, { - locale: 'fr-FR', + locale: 'fr', key: '', loader: async () => (await import('../../static/locales/fr.json')).default } diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte index abb230389..1cc8f8198 100644 --- a/src/routes/__layout.svelte +++ b/src/routes/__layout.svelte @@ -1,7 +1,7 @@