From fa30739fd0aa47d6120142ae9d897ef981bc25a3 Mon Sep 17 00:00:00 2001
From: vcoppe
Date: Fri, 16 Aug 2024 12:25:24 +0200
Subject: [PATCH] inject static meta tags for each language
---
website/src/hooks.server.js | 43 ++++++++++++
website/src/lib/components/Head.svelte | 70 -------------------
.../src/lib/components/LanguageSelect.svelte | 13 ++--
website/src/routes/+layout.svelte | 27 +++++--
.../src/routes/[[language]]/+layout.svelte | 23 ------
.../src/routes/l/[[language]]/+page.svelte | 14 ----
website/svelte.config.js | 2 +-
7 files changed, 75 insertions(+), 117 deletions(-)
create mode 100644 website/src/hooks.server.js
delete mode 100644 website/src/lib/components/Head.svelte
delete mode 100644 website/src/routes/[[language]]/+layout.svelte
delete mode 100644 website/src/routes/l/[[language]]/+page.svelte
diff --git a/website/src/hooks.server.js b/website/src/hooks.server.js
new file mode 100644
index 00000000..049a2ea8
--- /dev/null
+++ b/website/src/hooks.server.js
@@ -0,0 +1,43 @@
+import { base } from '$app/paths';
+import { languages } from '$lib/languages';
+import { getURLForLanguage } from '$lib/utils';
+
+export async function handle({ event, resolve }) {
+ let language = event.params.language ?? 'en';
+ const strings = await import(`./locales/${language}.json`);
+
+ let path = event.url.pathname;
+ let page = event.route.id?.replace('/[[language]]', '').split('/')[1] ?? 'home';
+
+ let title = strings.metadata[`${page}_title`];
+ let description = strings.metadata[`description`];
+
+ let head = `
+ gpx.studio — ${title}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `;
+
+ for (let lang of Object.keys(languages)) {
+ head += `
+`;
+ }
+
+ const response = await resolve(event, {
+ transformPageChunk: ({ html }) => html.replace('', head)
+ });
+
+ return response;
+}
\ No newline at end of file
diff --git a/website/src/lib/components/Head.svelte b/website/src/lib/components/Head.svelte
deleted file mode 100644
index dacc734f..00000000
--- a/website/src/lib/components/Head.svelte
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
- {#if $isLoading}
- gpx.studio — the online GPX file editor
-
-
-
-
-
- {:else}
- gpx.studio — {$_(`metadata.${title}_title`)}
-
-
-
-
-
- {/if}
-
-
-
-
-
-
-
-
-
-
-
-
- {#each Object.keys(languages) as lang}
-
- {/each}
-
diff --git a/website/src/lib/components/LanguageSelect.svelte b/website/src/lib/components/LanguageSelect.svelte
index e4311375..891704b7 100644
--- a/website/src/lib/components/LanguageSelect.svelte
+++ b/website/src/lib/components/LanguageSelect.svelte
@@ -1,4 +1,5 @@
-
diff --git a/website/src/routes/[[language]]/+layout.svelte b/website/src/routes/[[language]]/+layout.svelte
deleted file mode 100644
index b509b73e..00000000
--- a/website/src/routes/[[language]]/+layout.svelte
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
diff --git a/website/src/routes/l/[[language]]/+page.svelte b/website/src/routes/l/[[language]]/+page.svelte
deleted file mode 100644
index 2b488537..00000000
--- a/website/src/routes/l/[[language]]/+page.svelte
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- {#each Object.entries(languages) as [lang, label]}
- {#if lang !== 'en'}
-
- {label}
-
- {/if}
- {/each}
-
diff --git a/website/svelte.config.js b/website/svelte.config.js
index 7de1de53..b7793641 100644
--- a/website/svelte.config.js
+++ b/website/svelte.config.js
@@ -23,7 +23,7 @@ const config = {
relative: false,
},
prerender: {
- entries: ['/', '/404', '/l/fr/'],
+ entries: ['/', '/404'],
crawl: true,
}
}