From 7bdc62489c97fd9a65e6cc8cb85de9c5e1a48c5d Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Wed, 11 Feb 2026 10:19:11 +0100 Subject: [PATCH] add forgotten routes in to build --- src/routes/+error.svelte | 81 +++++++++---------- .../[rosary=rosaryLang]/+page.server.ts | 6 +- .../[rosary=rosaryLang]/+page.svelte | 2 +- .../bibel/[reference]/+server.ts | 10 ++- .../bibel/zufallszitat/+server.ts | 30 ++++--- 5 files changed, 70 insertions(+), 59 deletions(-) rename src/routes/api/{glaube => [faithLang=faithLang]}/bibel/[reference]/+server.ts (70%) rename src/routes/api/{glaube => [faithLang=faithLang]}/bibel/zufallszitat/+server.ts (69%) diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte index 52312a0..4d00b13 100644 --- a/src/routes/+error.svelte +++ b/src/routes/+error.svelte @@ -10,36 +10,45 @@ let session = $derived($page.data?.session); let user = $derived(session?.user); - // Get Bible quote from SSR via handleError hook + // Get Bible quote and language from SSR via handleError hook let bibleQuote = $derived($page.error?.bibleQuote); + let isEnglish = $derived($page.error?.lang === 'en'); function getErrorTitle(status) { + if (isEnglish) { + switch (status) { + case 401: return 'Login Required'; + case 403: return 'Access Denied'; + case 404: return 'Page Not Found'; + case 500: return 'Server Error'; + default: return 'Error'; + } + } switch (status) { - case 401: - return 'Anmeldung erforderlich'; - case 403: - return 'Zugriff verweigert'; - case 404: - return 'Seite nicht gefunden'; - case 500: - return 'Serverfehler'; - default: - return 'Fehler'; + case 401: return 'Anmeldung erforderlich'; + case 403: return 'Zugriff verweigert'; + case 404: return 'Seite nicht gefunden'; + case 500: return 'Serverfehler'; + default: return 'Fehler'; } } function getErrorDescription(status) { + if (isEnglish) { + switch (status) { + case 401: return 'You must be logged in to access this page.'; + case 403: return 'You do not have permission for this area.'; + case 404: return 'The requested page could not be found.'; + case 500: return 'An unexpected error occurred. Please try again later.'; + default: return 'An unexpected error occurred.'; + } + } switch (status) { - case 401: - return 'Du musst angemeldet sein, um auf diese Seite zugreifen zu können.'; - case 403: - return 'Du hast keine Berechtigung für diesen Bereich.'; - case 404: - return 'Die angeforderte Seite konnte nicht gefunden werden.'; - case 500: - return 'Es ist ein unerwarteter Fehler aufgetreten. Bitte versuche es später erneut.'; - default: - return 'Es ist ein unerwarteter Fehler aufgetreten.'; + case 401: return 'Du musst angemeldet sein, um auf diese Seite zugreifen zu können.'; + case 403: return 'Du hast keine Berechtigung für diesen Bereich.'; + case 404: return 'Die angeforderte Seite konnte nicht gefunden werden.'; + case 500: return 'Es ist ein unerwarteter Fehler aufgetreten. Bitte versuche es später erneut.'; + default: return 'Es ist ein unerwarteter Fehler aufgetreten.'; } } @@ -96,7 +105,7 @@
- Fehler {status} + {isEnglish ? 'Error' : 'Fehler'} {status}

@@ -112,38 +121,24 @@

{#if status === 401} - {:else if status === 403} - - - {:else if status === 404} - - {:else if status === 500} {:else} {/if}
@@ -152,7 +147,7 @@ {#if bibleQuote}
- „{bibleQuote.text}" + {isEnglish ? '"' : '„'}{bibleQuote.text}{isEnglish ? '"' : '"'}
— {bibleQuote.reference} diff --git a/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.server.ts b/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.server.ts index d2aca80..cd9ed89 100644 --- a/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.server.ts +++ b/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.server.ts @@ -1,4 +1,4 @@ -import { mysteryVerseData } from '$lib/data/mysteryVerseData'; +import { mysteryVerseDataDe, mysteryVerseDataEn } from '$lib/data/mysteryVerseData'; import type { PageServerLoad } from './$types'; interface StreakData { @@ -36,7 +36,7 @@ function getMysteryForWeekday(date: Date, includeLuminous: boolean): string { } } -export const load: PageServerLoad = async ({ url, fetch, locals }) => { +export const load: PageServerLoad = async ({ url, fetch, locals, params }) => { const session = await locals.auth(); // Read toggle/mystery state from URL search params (for no-JS progressive enhancement) @@ -76,7 +76,7 @@ export const load: PageServerLoad = async ({ url, fetch, locals }) => { } return { - mysteryDescriptions: mysteryVerseData, + mysteryDescriptions: params.faithLang === 'faith' ? mysteryVerseDataEn : mysteryVerseDataDe, streakData, initialMystery, todaysMystery, diff --git a/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.svelte b/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.svelte index 48c6144..7012368 100644 --- a/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.svelte +++ b/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.svelte @@ -1884,5 +1884,5 @@ h1 { {#if showModal} - showModal = false} /> + showModal = false} /> {/if} diff --git a/src/routes/api/glaube/bibel/[reference]/+server.ts b/src/routes/api/[faithLang=faithLang]/bibel/[reference]/+server.ts similarity index 70% rename from src/routes/api/glaube/bibel/[reference]/+server.ts rename to src/routes/api/[faithLang=faithLang]/bibel/[reference]/+server.ts index c1d60dd..965bfa8 100644 --- a/src/routes/api/glaube/bibel/[reference]/+server.ts +++ b/src/routes/api/[faithLang=faithLang]/bibel/[reference]/+server.ts @@ -1,6 +1,12 @@ import { json, error } from '@sveltejs/kit'; import type { RequestHandler } from './$types'; import { lookupReference } from '$lib/server/bible'; +import { resolve } from 'path'; + +const tsvFiles: Record = { + glaube: 'static/allioli.tsv', + faith: 'static/drb.tsv' +}; export const GET: RequestHandler = async ({ params }) => { const reference = params.reference; @@ -9,8 +15,10 @@ export const GET: RequestHandler = async ({ params }) => { return error(400, 'Missing reference parameter'); } + const tsvPath = resolve(tsvFiles[params.faithLang]); + try { - const result = lookupReference(reference); + const result = lookupReference(reference, tsvPath); if (!result) { return error(404, 'No verses found for the given reference'); diff --git a/src/routes/api/glaube/bibel/zufallszitat/+server.ts b/src/routes/api/[faithLang=faithLang]/bibel/zufallszitat/+server.ts similarity index 69% rename from src/routes/api/glaube/bibel/zufallszitat/+server.ts rename to src/routes/api/[faithLang=faithLang]/bibel/zufallszitat/+server.ts index 83a16c2..554f3af 100644 --- a/src/routes/api/glaube/bibel/zufallszitat/+server.ts +++ b/src/routes/api/[faithLang=faithLang]/bibel/zufallszitat/+server.ts @@ -1,5 +1,6 @@ import { json, error } from '@sveltejs/kit'; import type { RequestHandler } from './$types'; +import { resolve } from 'path'; interface BibleVerse { bookName: string; @@ -10,23 +11,27 @@ interface BibleVerse { text: string; } -// Cache for parsed verses to avoid reading file repeatedly -let cachedVerses: BibleVerse[] | null = null; +const tsvFiles: Record = { + glaube: '/allioli.tsv', + faith: '/drb.tsv' +}; -async function loadVerses(fetch: typeof globalThis.fetch): Promise { - if (cachedVerses) { - return cachedVerses; - } +// Cache for parsed verses per language +const versesCache = new Map(); + +async function loadVerses(fetch: typeof globalThis.fetch, tsvFile: string): Promise { + const cached = versesCache.get(tsvFile); + if (cached) return cached; try { - const response = await fetch('/allioli.tsv'); + const response = await fetch(tsvFile); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const content = await response.text(); const lines = content.trim().split('\n'); - cachedVerses = lines.map(line => { + const verses = lines.map(line => { const [bookName, abbreviation, bookNumber, chapter, verseNumber, text] = line.split('\t'); return { bookName, @@ -38,7 +43,8 @@ async function loadVerses(fetch: typeof globalThis.fetch): Promise }; }); - return cachedVerses; + versesCache.set(tsvFile, verses); + return verses; } catch (err) { console.error('Error loading Bible verses:', err); throw new Error('Failed to load Bible verses'); @@ -54,9 +60,11 @@ function formatVerse(verse: BibleVerse): string { return `${verse.bookName} ${verse.chapter}:${verse.verseNumber}`; } -export const GET: RequestHandler = async ({ fetch }) => { +export const GET: RequestHandler = async ({ fetch, params }) => { + const tsvFile = tsvFiles[params.faithLang]; + try { - const verses = await loadVerses(fetch); + const verses = await loadVerses(fetch, tsvFile); const randomVerse = getRandomVerse(verses); return json({