From c7e3c22cffcb1b3181fb18f5c730fa1653f73b20 Mon Sep 17 00:00:00 2001 From: Kevin Kandlbinder Date: Wed, 23 Dec 2020 01:40:00 +0100 Subject: [PATCH 1/3] Add language selector to FAB --- fab.config.json5 | 1 + src/server/languageRedirect.js | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fab.config.json5 b/fab.config.json5 index c3fe13b..0f04ad1 100644 --- a/fab.config.json5 +++ b/fab.config.json5 @@ -1,6 +1,7 @@ // For more information, see https://fab.dev/kb/configuration { plugins: { + './src/server/languageRedirect.js': {}, '@fab/input-static': { dir: 'public' }, diff --git a/src/server/languageRedirect.js b/src/server/languageRedirect.js index 70f0d34..9714585 100644 --- a/src/server/languageRedirect.js +++ b/src/server/languageRedirect.js @@ -1,6 +1,7 @@ -const config = require("../../config"), locale = require("locale"); +const config = require("../../config"); +const locale = require("locale"); -let supported = new locale.Locales(conifg.languages); +let supported = new locale.Locales(config.languages); let defaultLang = "en"; export default ({ Router }) => { From d1493d00c1d47ee1e9c72da7e8c3d5f16f4cf7f0 Mon Sep 17 00:00:00 2001 From: Kevin Kandlbinder Date: Wed, 23 Dec 2020 01:45:42 +0100 Subject: [PATCH 2/3] Fix response creation --- src/server/languageRedirect.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/server/languageRedirect.js b/src/server/languageRedirect.js index 9714585..64f1853 100644 --- a/src/server/languageRedirect.js +++ b/src/server/languageRedirect.js @@ -33,6 +33,13 @@ async function checkLang({ request }) { requestURL.pathname = "/"+selectedLanguage+requestURL.pathname; - return Response.redirect(requestURL.toString(), 302); + ///return Response.redirect(requestURL.toString(), 302); + + return new Response(null, { + status: 302, + headers: { + Location: requestURL.toString(), + }, + }); } \ No newline at end of file From a3c41b62673fd9f72fd626e8feb7bced26a2e648 Mon Sep 17 00:00:00 2001 From: Kevin Kandlbinder Date: Wed, 23 Dec 2020 01:53:33 +0100 Subject: [PATCH 3/3] Fix infinite loop --- src/server/languageRedirect.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/server/languageRedirect.js b/src/server/languageRedirect.js index 64f1853..a0124f8 100644 --- a/src/server/languageRedirect.js +++ b/src/server/languageRedirect.js @@ -13,11 +13,13 @@ async function checkLang({ request }) { let requestURL = new URL(url); - config.languages.forEach((language) => { - if(requestURL.pathname.startsWith("/"+language+"/")) { + for (let i = 0; i < config.languages.length; i++) { + const language = config.languages[i]; + + if(requestURL.pathname.startsWith("/"+language)) { return; } - }); + } let headers = request.headers;