From b28154564f4ec2ec4b0be81b7a056af907b3edb5 Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Tue, 3 Feb 2026 14:27:39 +0100 Subject: [PATCH] perf: pre-generate Bible verse data and reduce DOM via conditional rendering - Extract Bible lookup logic into shared src/lib/server/bible.ts module - Add build script to pre-generate all 20 mystery verse lookups as static data, eliminating runtime API calls on rosary page load - Update Prayer.svelte to pass showLatin/urlLang as snippet parameters; all 14 prayer components now conditionally render only visible language elements instead of hiding via CSS - Extract 4 inline mystery selector SVGs into MysteryIcon.svelte component - Remove unused CSS selectors from angelus page --- package.json | 1 + scripts/generate-mystery-verses.ts | 54 ++ src/lib/components/MysteryIcon.svelte | 46 ++ src/lib/components/prayers/AveMaria.svelte | 38 +- .../prayers/BruderKlausGebet.svelte | 38 +- src/lib/components/prayers/Confiteor.svelte | 92 +-- src/lib/components/prayers/Credo.svelte | 242 ++++---- src/lib/components/prayers/FatimaGebet.svelte | 32 +- src/lib/components/prayers/Gloria.svelte | 152 ++--- src/lib/components/prayers/GloriaPatri.svelte | 20 +- src/lib/components/prayers/JosephGebet.svelte | 26 +- .../components/prayers/Kreuzzeichen.svelte | 8 +- .../components/prayers/MichaelGebet.svelte | 62 ++- src/lib/components/prayers/Paternoster.svelte | 56 +- src/lib/components/prayers/Prayer.svelte | 4 +- .../prayers/RosaryFinalPrayer.svelte | 62 ++- src/lib/components/prayers/SalveRegina.svelte | 70 +-- src/lib/data/mysteryVerseData.ts | 525 ++++++++++++++++++ src/lib/server/bible.ts | 88 +++ .../[rosary=rosaryLang]/+page.server.ts | 61 +- .../[rosary=rosaryLang]/+page.svelte | 52 +- .../angelus/+page.svelte | 134 ++--- .../api/glaube/bibel/[reference]/+server.ts | 108 +--- 23 files changed, 1251 insertions(+), 720 deletions(-) create mode 100644 scripts/generate-mystery-verses.ts create mode 100644 src/lib/components/MysteryIcon.svelte create mode 100644 src/lib/data/mysteryVerseData.ts create mode 100644 src/lib/server/bible.ts diff --git a/package.json b/package.json index 4f114f4..e984198 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "type": "module", "scripts": { "dev": "vite dev", + "prebuild": "npx vite-node scripts/generate-mystery-verses.ts", "build": "vite build", "preview": "vite preview", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", diff --git a/scripts/generate-mystery-verses.ts b/scripts/generate-mystery-verses.ts new file mode 100644 index 0000000..6141253 --- /dev/null +++ b/scripts/generate-mystery-verses.ts @@ -0,0 +1,54 @@ +/** + * Pre-generates Bible verse data for all rosary mystery references. + * Run with: npx vite-node scripts/generate-mystery-verses.ts + */ +import { writeFileSync } from 'fs'; +import { resolve } from 'path'; +import { lookupReference } from '../src/lib/server/bible'; +import { mysteryReferences } from '../src/lib/data/mysteryDescriptions'; +import type { MysteryDescription, VerseData } from '../src/lib/data/mysteryDescriptions'; + +const tsvPath = resolve('static/allioli.tsv'); + +const mysteryDescriptions: Record = {}; + +for (const [mysteryType, references] of Object.entries(mysteryReferences)) { + const descriptions: MysteryDescription[] = []; + + for (const ref of references) { + const result = lookupReference(ref.reference, tsvPath); + + let text = ''; + let verseData: VerseData | null = null; + + if (result && result.verses.length > 0) { + text = `«${result.verses.map((v) => v.text).join(' ')}»`; + verseData = { + book: result.book, + chapter: result.chapter, + verses: result.verses + }; + } else { + console.warn(`No verses found for: ${ref.reference}`); + } + + descriptions.push({ + title: ref.title, + reference: ref.reference, + text, + verseData + }); + } + + mysteryDescriptions[mysteryType] = descriptions; +} + +const output = `// Auto-generated by scripts/generate-mystery-verses.ts — do not edit manually +import type { MysteryDescription } from './mysteryDescriptions'; + +export const mysteryVerseData: Record = ${JSON.stringify(mysteryDescriptions, null, '\t')}; +`; + +const outPath = resolve('src/lib/data/mysteryVerseData.ts'); +writeFileSync(outPath, output, 'utf-8'); +console.log(`Wrote mystery verse data to ${outPath}`); diff --git a/src/lib/components/MysteryIcon.svelte b/src/lib/components/MysteryIcon.svelte new file mode 100644 index 0000000..620185a --- /dev/null +++ b/src/lib/components/MysteryIcon.svelte @@ -0,0 +1,46 @@ + + +{#if type === 'joyful'} + + + + + + + + +{:else if type === 'sorrowful'} + + + +{:else if type === 'glorious'} + + + +{:else if type === 'luminous'} + + + +{/if} + + diff --git a/src/lib/components/prayers/AveMaria.svelte b/src/lib/components/prayers/AveMaria.svelte index a2f845a..25d1554 100644 --- a/src/lib/components/prayers/AveMaria.svelte +++ b/src/lib/components/prayers/AveMaria.svelte @@ -5,32 +5,34 @@ + {#snippet children(showLatin, urlLang)}

- Ave María, grátia plena. Dóminus tecum, - Gegrüsset seist du Maria, voll der Gnade; der Herr ist mit dir; - Hail Mary, full of grace. The Lord is with thee. - benedícta tu in muliéribus, - du bist gebenedeit unter den Frauen, - Blessed art thou amongst women, - et benedíctus fructus ventris tui, {#if !mysteryLatin}Jesus.{/if} - und gebenedeit ist die Frucht deines Leibes, {#if !mystery}Jesus.{/if} - and blessed is the fruit of thy womb, {#if !mysteryEnglish}Jesus.{/if} - {#if mysteryLatin} + {#if showLatin}Ave María, grátia plena. Dóminus tecum,{/if} + {#if urlLang === 'de'}Gegrüsset seist du Maria, voll der Gnade; der Herr ist mit dir;{/if} + {#if urlLang === 'en'}Hail Mary, full of grace. The Lord is with thee.{/if} + {#if showLatin}benedícta tu in muliéribus,{/if} + {#if urlLang === 'de'}du bist gebenedeit unter den Frauen,{/if} + {#if urlLang === 'en'}Blessed art thou amongst women,{/if} + {#if showLatin}et benedíctus fructus ventris tui, {#if !mysteryLatin}Jesus.{/if}{/if} + {#if urlLang === 'de'}und gebenedeit ist die Frucht deines Leibes, {#if !mystery}Jesus.{/if}{/if} + {#if urlLang === 'en'}and blessed is the fruit of thy womb, {#if !mysteryEnglish}Jesus.{/if}{/if} + {#if showLatin && mysteryLatin} {mysteryLatin} {/if} - {#if mystery} + {#if urlLang === 'de' && mystery} {mystery} {/if} - {#if mysteryEnglish} + {#if urlLang === 'en' && mysteryEnglish} {mysteryEnglish} {/if}

- Sancta María, mater Dei, ora pro nobis peccatóribus, - Heilige Maria, Mutter Gottes, bitte für uns Sünder - Holy Mary, Mother of God, pray for us sinners, - nunc, et in hora mortis nostræ. Amen. - jetzt und in der Stunde unseres Todes. Amen. - now and at the hour of our death. Amen. + {#if showLatin}Sancta María, mater Dei, ora pro nobis peccatóribus,{/if} + {#if urlLang === 'de'}Heilige Maria, Mutter Gottes, bitte für uns Sünder{/if} + {#if urlLang === 'en'}Holy Mary, Mother of God, pray for us sinners,{/if} + {#if showLatin}nunc, et in hora mortis nostræ. Amen.{/if} + {#if urlLang === 'de'}jetzt und in der Stunde unseres Todes. Amen.{/if} + {#if urlLang === 'en'}now and at the hour of our death. Amen.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/BruderKlausGebet.svelte b/src/lib/components/prayers/BruderKlausGebet.svelte index 1df8d35..938fac8 100644 --- a/src/lib/components/prayers/BruderKlausGebet.svelte +++ b/src/lib/components/prayers/BruderKlausGebet.svelte @@ -3,28 +3,30 @@ + {#snippet children(showLatin, urlLang)}

- Mein Herr und mein Gott, - My Lord and my God, - nimm alles von mir, - take from me everything - was mich hindert zu Dir. - that distances me from Thee. + {#if urlLang === 'de'}Mein Herr und mein Gott,{/if} + {#if urlLang === 'en'}My Lord and my God,{/if} + {#if urlLang === 'de'}nimm alles von mir,{/if} + {#if urlLang === 'en'}take from me everything{/if} + {#if urlLang === 'de'}was mich hindert zu Dir.{/if} + {#if urlLang === 'en'}that distances me from Thee.{/if}

- Mein Herr und mein Gott, - My Lord and my God, - gib alles mir, - give me everything - was mich führet zu Dir. - that brings me closer to Thee. + {#if urlLang === 'de'}Mein Herr und mein Gott,{/if} + {#if urlLang === 'en'}My Lord and my God,{/if} + {#if urlLang === 'de'}gib alles mir,{/if} + {#if urlLang === 'en'}give me everything{/if} + {#if urlLang === 'de'}was mich führet zu Dir.{/if} + {#if urlLang === 'en'}that brings me closer to Thee.{/if}

- Mein Herr und mein Gott, - My Lord and my God, - nimm mich mir - detach me from myself - und gib mich ganz zu eigen Dir. - to give my all to Thee. + {#if urlLang === 'de'}Mein Herr und mein Gott,{/if} + {#if urlLang === 'en'}My Lord and my God,{/if} + {#if urlLang === 'de'}nimm mich mir{/if} + {#if urlLang === 'en'}detach me from myself{/if} + {#if urlLang === 'de'}und gib mich ganz zu eigen Dir.{/if} + {#if urlLang === 'en'}to give my all to Thee.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/Confiteor.svelte b/src/lib/components/prayers/Confiteor.svelte index e2f097e..cfb48b4 100644 --- a/src/lib/components/prayers/Confiteor.svelte +++ b/src/lib/components/prayers/Confiteor.svelte @@ -3,51 +3,53 @@ + {#snippet children(showLatin, urlLang)}

- Confíteor Deo omnipoténti, - Ich bekenne Gott, dem Allmächtigen, - I confess to almighty God, - beátæ Maríæ semper Vírgini - der seligen, allzeit reinen Jungfrau Maria, - to blessed Mary ever Virgin, - beáto Michaéli Archángelo, - dem hl. Erzengel Michael, - to blessed Michael the Archangel, - beáto Ioánni Baptístæ, - dem hl. Johannes dem Täufer, - to blessed John the Baptist, - sanctis Apóstolis Petro et Paulo, - den hll. Aposteln Petrus und Paulus, - to the holy Apostles Peter and Paul, - ómnibus Sanctis, et tibi pater: - allen Heiligen und dir, Vater, - to all the Saints, and to you, Father, - quia paccávi nimis - dass ich viel gesündigt habe - that I have sinned exceedingly - cogitatióne, verbe et ópere: - in Gedanken, Worten und Werken, - in thought, word, and deed: - mea culpa, mea culpa, mea máxima cupla. - durch meine Schuld, durch meine Schuld, durch meine übergrosse Schuld. - through my fault, through my fault, through my most grievous fault. - Ideo precor beátam Maríam semper Vírginem, - Darum bitte ich die selige, allzeit reine Jungfrau Maria, - Therefore I beseech the blessed Mary ever Virgin, - beátum Michaélem Archángelum, - den hl. Erzengel Michael, - blessed Michael the Archangel, - beátum Ioánnem Baptístam, - dem hl. Johannes den Täufer, - blessed John the Baptist, - sanctos Apóstolos Petrum et Paulum, - die hll. Apostel Petrus und Paulus, - the holy Apostles Peter and Paul, - omnes Sanctos, et te pater, - alle Heiligen und dich, Vater, - all the Saints, and you, Father, - Oráre pro me ad Dóminum Deum nostrum. - für mich zu beten bei Gott unserem Herrn. - to pray for me to the Lord our God. + {#if showLatin}Confíteor Deo omnipoténti,{/if} + {#if urlLang === 'de'}Ich bekenne Gott, dem Allmächtigen,{/if} + {#if urlLang === 'en'}I confess to almighty God,{/if} + {#if showLatin}beátæ Maríæ semper Vírgini{/if} + {#if urlLang === 'de'}der seligen, allzeit reinen Jungfrau Maria,{/if} + {#if urlLang === 'en'}to blessed Mary ever Virgin,{/if} + {#if showLatin}beáto Michaéli Archángelo,{/if} + {#if urlLang === 'de'}dem hl. Erzengel Michael,{/if} + {#if urlLang === 'en'}to blessed Michael the Archangel,{/if} + {#if showLatin}beáto Ioánni Baptístæ,{/if} + {#if urlLang === 'de'}dem hl. Johannes dem Täufer,{/if} + {#if urlLang === 'en'}to blessed John the Baptist,{/if} + {#if showLatin}sanctis Apóstolis Petro et Paulo,{/if} + {#if urlLang === 'de'}den hll. Aposteln Petrus und Paulus,{/if} + {#if urlLang === 'en'}to the holy Apostles Peter and Paul,{/if} + {#if showLatin}ómnibus Sanctis, et tibi pater:{/if} + {#if urlLang === 'de'}allen Heiligen und dir, Vater,{/if} + {#if urlLang === 'en'}to all the Saints, and to you, Father,{/if} + {#if showLatin}quia paccávi nimis{/if} + {#if urlLang === 'de'}dass ich viel gesündigt habe{/if} + {#if urlLang === 'en'}that I have sinned exceedingly{/if} + {#if showLatin}cogitatióne, verbe et ópere:{/if} + {#if urlLang === 'de'}in Gedanken, Worten und Werken,{/if} + {#if urlLang === 'en'}in thought, word, and deed:{/if} + {#if showLatin}mea culpa, mea culpa, mea máxima cupla.{/if} + {#if urlLang === 'de'}durch meine Schuld, durch meine Schuld, durch meine übergrosse Schuld.{/if} + {#if urlLang === 'en'}through my fault, through my fault, through my most grievous fault.{/if} + {#if showLatin}Ideo precor beátam Maríam semper Vírginem,{/if} + {#if urlLang === 'de'}Darum bitte ich die selige, allzeit reine Jungfrau Maria,{/if} + {#if urlLang === 'en'}Therefore I beseech the blessed Mary ever Virgin,{/if} + {#if showLatin}beátum Michaélem Archángelum,{/if} + {#if urlLang === 'de'}den hl. Erzengel Michael,{/if} + {#if urlLang === 'en'}blessed Michael the Archangel,{/if} + {#if showLatin}beátum Ioánnem Baptístam,{/if} + {#if urlLang === 'de'}dem hl. Johannes den Täufer,{/if} + {#if urlLang === 'en'}blessed John the Baptist,{/if} + {#if showLatin}sanctos Apóstolos Petrum et Paulum,{/if} + {#if urlLang === 'de'}die hll. Apostel Petrus und Paulus,{/if} + {#if urlLang === 'en'}the holy Apostles Peter and Paul,{/if} + {#if showLatin}omnes Sanctos, et te pater,{/if} + {#if urlLang === 'de'}alle Heiligen und dich, Vater,{/if} + {#if urlLang === 'en'}all the Saints, and you, Father,{/if} + {#if showLatin}Oráre pro me ad Dóminum Deum nostrum.{/if} + {#if urlLang === 'de'}für mich zu beten bei Gott unserem Herrn.{/if} + {#if urlLang === 'en'}to pray for me to the Lord our God.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/Credo.svelte b/src/lib/components/prayers/Credo.svelte index 5412e4d..f9e2581 100644 --- a/src/lib/components/prayers/Credo.svelte +++ b/src/lib/components/prayers/Credo.svelte @@ -3,126 +3,128 @@ + {#snippet children(showLatin, urlLang)}

- Credo in unum Deum, Patrem omnipoténtem, - Ich glaub an den einen Gott. Den allmächtigen Vater, - I believe in one God, the Father almighty, - factórem cæli et terræ, - Schöpfer des Himmels und der Erde, - maker of heaven and earth, - visibílium ómnium et invisibílium. - aller sichtbaren und unsichtbaren Dinge. - of all things visible and invisible. - Et in unum Dóminum Jesum Christum, - Und an den einen Herrn Jesus Christus, - And in one Lord Jesus Christ, - Fílium Dei unigénitum. - Gottes eingeborenen Sohn. - the Only Begotten Son of God, - Et ex Patre natum ante ómnia sǽcula. - Er ist aus dem Vater geboren vor aller Zeit. - born of the Father before all ages. - Deum de Deo, - Gott von Gott, - God from God, - lumen de lúmine, - Licht vom Lichte, - Light from Light, - Deum verum de Deo vero. - wahrer Gott vom wahren Gott; - true God from true God, - Génitum, non factum, - Gezeugt, nicht geschaffen, - begotten, not made, - consubstantiálem Patri: - eines Wesens mit dem Vater; - consubstantial with the Father; - per quem ómnia facta sunt. - durch Ihn ist alles geschaffen. - through Him all things were made. - Qui propter nos hómines - Für uns Menschen - For us men - et propter nostram salútem - und um unsres Heiles willen - and for our salvation - descéndit de cælis. - ist Er vom Himmel herabgestiegen. - He came down from heaven. -

-

- Et incarnátus est de Spíritu Sancto - Er hat Fleisch angenommen durch den Hl. Geist - And by the Holy Spirit was incarnate - ex María Vírgine: - aus Maria, der Jungfrau - of the Virgin Mary, - Et homo factus est. - und ist Mensch geworden. - and became man. - Crucifíxus étiam pro nobis: - Gekreuzigt wurde Er sogar für uns; - For our sake He was crucified - sub Póntio Piláto passus, et sepúltus est. - unter Pontius Pilatus hat Er den Tod erlitten - und ist begraben worden - under Pontius Pilate, He suffered death and was buried. -

-

- Et resurréxit tértia die, - Er ist auferstanden am dritten Tage, - And rose again on the third day - secúndum Scriptúras. - gemäss der Schrift; - in accordance with the Scriptures. - Et ascéndit in cáelum: - Er ist aufgefahren in den Himmel - He ascended into heaven - sedet ad déxteram Patris. - und sitzet zur Rechten des Vaters. - and is seated at the right hand of the Father. -

-

- Et íterum ventúrus est cum glória - Er wird wiederkommen in Herrlichkeit, - He will come again in glory - judicáre vivos et mórtuos: - Gericht zu halten über Lebende und Tote: - to judge the living and the dead - cujus regni non erit finis. - und Seines Reiches wird kein Endes sein. - and His kingdom will have no end. -

-

- Et in Spíritum Sanctum, - Ich glaube an den Heiligen Geist, - I believe in the Holy Spirit, - Dóminum et vivificántem: - den Herrn und Lebensspender, - the Lord, the giver of life, - qui ex Patre Filióque procédit. - der vom Vater und vom Sohne ausgeht. - who proceeds from the Father and the Son, - Qui cum Patre et Fílio simul adorátur et conglorificátur: - zugleich angebetet und verherrlicht; - who with the Father and the Son is adored and glorified, - qui locútus est per Prophétas. - Er hat gesprochen durch die Propheten. - who has spoken through the prophets. - Et unam sanctam cathólicam et apostólicam Ecclésiam. - Ich glaube an die eine, heilige, katholische und apostolische Kirche. - I believe in one, holy, catholic and apostolic Church. - Confíteor unum baptísma - Ich bekenne die eine Taufe - I confess one Baptism - in remissiónem peccatórum. - zur Vergebung der Sünden. - for the forgiveness of sins - Et exspécto resurrectiónem mortuórum. - Ich erwarte die Auferstehung der Toten. - and I look forward to the resurrection of the dead - Et vitam ventúri sǽculi. Amen. - Und das Leben der zukünftigen Welt. Amen. - and the life of the world to come. Amen. + {#if showLatin}Credo in unum Deum, Patrem omnipoténtem,{/if} + {#if urlLang === 'de'}Ich glaub an den einen Gott. Den allmächtigen Vater,{/if} + {#if urlLang === 'en'}I believe in one God, the Father almighty,{/if} + {#if showLatin}factórem cæli et terræ,{/if} + {#if urlLang === 'de'}Schöpfer des Himmels und der Erde,{/if} + {#if urlLang === 'en'}maker of heaven and earth,{/if} + {#if showLatin}visibílium ómnium et invisibílium.{/if} + {#if urlLang === 'de'}aller sichtbaren und unsichtbaren Dinge.{/if} + {#if urlLang === 'en'}of all things visible and invisible.{/if} + {#if showLatin}Et in unum Dóminum Jesum Christum,{/if} + {#if urlLang === 'de'}Und an den einen Herrn Jesus Christus,{/if} + {#if urlLang === 'en'}And in one Lord Jesus Christ,{/if} + {#if showLatin}Fílium Dei unigénitum.{/if} + {#if urlLang === 'de'}Gottes eingeborenen Sohn.{/if} + {#if urlLang === 'en'}the Only Begotten Son of God,{/if} + {#if showLatin}Et ex Patre natum ante ómnia sǽcula.{/if} + {#if urlLang === 'de'}Er ist aus dem Vater geboren vor aller Zeit.{/if} + {#if urlLang === 'en'}born of the Father before all ages.{/if} + {#if showLatin}Deum de Deo,{/if} + {#if urlLang === 'de'}Gott von Gott,{/if} + {#if urlLang === 'en'}God from God,{/if} + {#if showLatin}lumen de lúmine,{/if} + {#if urlLang === 'de'}Licht vom Lichte,{/if} + {#if urlLang === 'en'}Light from Light,{/if} + {#if showLatin}Deum verum de Deo vero.{/if} + {#if urlLang === 'de'}wahrer Gott vom wahren Gott;{/if} + {#if urlLang === 'en'}true God from true God,{/if} + {#if showLatin}Génitum, non factum,{/if} + {#if urlLang === 'de'}Gezeugt, nicht geschaffen,{/if} + {#if urlLang === 'en'}begotten, not made,{/if} + {#if showLatin}consubstantiálem Patri:{/if} + {#if urlLang === 'de'}eines Wesens mit dem Vater;{/if} + {#if urlLang === 'en'}consubstantial with the Father;{/if} + {#if showLatin}per quem ómnia facta sunt.{/if} + {#if urlLang === 'de'}durch Ihn ist alles geschaffen.{/if} + {#if urlLang === 'en'}through Him all things were made.{/if} + {#if showLatin}Qui propter nos hómines{/if} + {#if urlLang === 'de'}Für uns Menschen{/if} + {#if urlLang === 'en'}For us men{/if} + {#if showLatin}et propter nostram salútem{/if} + {#if urlLang === 'de'}und um unsres Heiles willen{/if} + {#if urlLang === 'en'}and for our salvation{/if} + {#if showLatin}descéndit de cælis.{/if} + {#if urlLang === 'de'}ist Er vom Himmel herabgestiegen.{/if} + {#if urlLang === 'en'}He came down from heaven.{/if}

+

+ {#if showLatin}Et incarnátus est de Spíritu Sancto{/if} + {#if urlLang === 'de'}Er hat Fleisch angenommen durch den Hl. Geist{/if} + {#if urlLang === 'en'}And by the Holy Spirit was incarnate{/if} + {#if showLatin}ex María Vírgine:{/if} + {#if urlLang === 'de'}aus Maria, der Jungfrau{/if} + {#if urlLang === 'en'}of the Virgin Mary,{/if} + {#if showLatin}Et homo factus est.{/if} + {#if urlLang === 'de'}und ist Mensch geworden.{/if} + {#if urlLang === 'en'}and became man.{/if} + {#if showLatin}Crucifíxus étiam pro nobis:{/if} + {#if urlLang === 'de'}Gekreuzigt wurde Er sogar für uns;{/if} + {#if urlLang === 'en'}For our sake He was crucified{/if} + {#if showLatin}sub Póntio Piláto passus, et sepúltus est.{/if} + {#if urlLang === 'de'}unter Pontius Pilatus hat Er den Tod erlitten{/if} + {#if urlLang === 'de'}und ist begraben worden{/if} + {#if urlLang === 'en'}under Pontius Pilate, He suffered death and was buried.{/if} +

+

+ {#if showLatin}Et resurréxit tértia die,{/if} + {#if urlLang === 'de'}Er ist auferstanden am dritten Tage,{/if} + {#if urlLang === 'en'}And rose again on the third day{/if} + {#if showLatin}secúndum Scriptúras.{/if} + {#if urlLang === 'de'}gemäss der Schrift;{/if} + {#if urlLang === 'en'}in accordance with the Scriptures.{/if} + {#if showLatin}Et ascéndit in cáelum:{/if} + {#if urlLang === 'de'}Er ist aufgefahren in den Himmel{/if} + {#if urlLang === 'en'}He ascended into heaven{/if} + {#if showLatin}sedet ad déxteram Patris.{/if} + {#if urlLang === 'de'}und sitzet zur Rechten des Vaters.{/if} + {#if urlLang === 'en'}and is seated at the right hand of the Father.{/if} +

+

+ {#if showLatin}Et íterum ventúrus est cum glória{/if} + {#if urlLang === 'de'}Er wird wiederkommen in Herrlichkeit,{/if} + {#if urlLang === 'en'}He will come again in glory{/if} + {#if showLatin}judicáre vivos et mórtuos:{/if} + {#if urlLang === 'de'}Gericht zu halten über Lebende und Tote:{/if} + {#if urlLang === 'en'}to judge the living and the dead{/if} + {#if showLatin}cujus regni non erit finis.{/if} + {#if urlLang === 'de'}und Seines Reiches wird kein Endes sein.{/if} + {#if urlLang === 'en'}and His kingdom will have no end.{/if} +

+

+ {#if showLatin}Et in Spíritum Sanctum,{/if} + {#if urlLang === 'de'}Ich glaube an den Heiligen Geist,{/if} + {#if urlLang === 'en'}I believe in the Holy Spirit,{/if} + {#if showLatin}Dóminum et vivificántem:{/if} + {#if urlLang === 'de'}den Herrn und Lebensspender,{/if} + {#if urlLang === 'en'}the Lord, the giver of life,{/if} + {#if showLatin}qui ex Patre Filióque procédit.{/if} + {#if urlLang === 'de'}der vom Vater und vom Sohne ausgeht.{/if} + {#if urlLang === 'en'}who proceeds from the Father and the Son,{/if} + {#if showLatin}Qui cum Patre et Fílio simul adorátur et conglorificátur:{/if} + {#if urlLang === 'de'}zugleich angebetet und verherrlicht;{/if} + {#if urlLang === 'en'}who with the Father and the Son is adored and glorified,{/if} + {#if showLatin}qui locútus est per Prophétas.{/if} + {#if urlLang === 'de'}Er hat gesprochen durch die Propheten.{/if} + {#if urlLang === 'en'}who has spoken through the prophets.{/if} + {#if showLatin}Et unam sanctam cathólicam et apostólicam Ecclésiam.{/if} + {#if urlLang === 'de'}Ich glaube an die eine, heilige, katholische und apostolische Kirche.{/if} + {#if urlLang === 'en'}I believe in one, holy, catholic and apostolic Church.{/if} + {#if showLatin}Confíteor unum baptísma{/if} + {#if urlLang === 'de'}Ich bekenne die eine Taufe{/if} + {#if urlLang === 'en'}I confess one Baptism{/if} + {#if showLatin}in remissiónem peccatórum.{/if} + {#if urlLang === 'de'}zur Vergebung der Sünden.{/if} + {#if urlLang === 'en'}for the forgiveness of sins{/if} + {#if showLatin}Et exspécto resurrectiónem mortuórum.{/if} + {#if urlLang === 'de'}Ich erwarte die Auferstehung der Toten.{/if} + {#if urlLang === 'en'}and I look forward to the resurrection of the dead{/if} + {#if showLatin} Et vitam ventúri sǽculi. Amen.{/if} + {#if urlLang === 'de'} Und das Leben der zukünftigen Welt. Amen.{/if} + {#if urlLang === 'en'} and the life of the world to come. Amen.{/if} +

+ {/snippet}
diff --git a/src/lib/components/prayers/FatimaGebet.svelte b/src/lib/components/prayers/FatimaGebet.svelte index 227d908..9b63039 100644 --- a/src/lib/components/prayers/FatimaGebet.svelte +++ b/src/lib/components/prayers/FatimaGebet.svelte @@ -3,21 +3,23 @@ + {#snippet children(showLatin, urlLang)}

- Jésú, indúlge peccáta nostra, - O mein Jesus, verzeih' uns unsere Sünden, - O my Jesus, forgive us our sins, - præsérva nos ab igne inférni, - bewahre uns vor den Feuern der Hölle - save us from the fires of hell, - duc omnes ad cæli glóriam, - und führe alle Seelen in den Himmel, - and lead all souls to heaven, - præcípe tua - besonders jene, - especially those - misericórdia máxime egéntes. Amen. - die Deiner Barmherzigkeit am meisten bedürfen. Amen. - who are in most need of Thy mercy. Amen. + {#if showLatin}Jésú, indúlge peccáta nostra,{/if} + {#if urlLang === 'de'}O mein Jesus, verzeih' uns unsere Sünden,{/if} + {#if urlLang === 'en'}O my Jesus, forgive us our sins,{/if} + {#if showLatin}præsérva nos ab igne inférni,{/if} + {#if urlLang === 'de'}bewahre uns vor den Feuern der Hölle{/if} + {#if urlLang === 'en'}save us from the fires of hell,{/if} + {#if showLatin}duc omnes ad cæli glóriam, {/if} + {#if urlLang === 'de'}und führe alle Seelen in den Himmel,{/if} + {#if urlLang === 'en'}and lead all souls to heaven,{/if} + {#if showLatin}præcípe tua{/if} + {#if urlLang === 'de'}besonders jene,{/if} + {#if urlLang === 'en'}especially those{/if} + {#if showLatin}misericórdia máxime egéntes. Amen.{/if} + {#if urlLang === 'de'}die Deiner Barmherzigkeit am meisten bedürfen. Amen.{/if} + {#if urlLang === 'en'}who are in most need of Thy mercy. Amen.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/Gloria.svelte b/src/lib/components/prayers/Gloria.svelte index ab001d9..23c9daa 100644 --- a/src/lib/components/prayers/Gloria.svelte +++ b/src/lib/components/prayers/Gloria.svelte @@ -3,81 +3,83 @@ + {#snippet children(showLatin, urlLang)}

- Glória in excélsis Deo. - Ehre sei Gott in der Höhe. - Glory to God in the highest. - Et in terra pax homínibus - Und auf Erden Friede den Mesnchen, - And on earth peace to men - bonæ voluntátis. - die guten Willens sind. - of good will. - Laudámus te. - Wir loben Dich. - We praise Thee. - Benedícimus te. - Wir preisen Dich. - We bless Thee. - Adorámus te. - Wir beten Dich an. - We adore Thee. - Glorificámus te. - Wir verherrlichen Dich. - We glorify Thee. - Grátias ágimus tibi - Wir sagen Dir Dank - We give Thee thanks - propter magnam glóriam tuam. - ob Deiner grossen Herrlichkeit. - for Thy great glory. - Dómine Deus, Rex cæléstis, - Herr und Gott, König des Himmels, - Lord God, heavenly King, - Deus Pater omnípotens. - Gott allmächtiger Vater! - God the Father almighty. - Dómine Fili unigénite, Jesu Christe. - Herr Jesus Christus, eingeborener Sohn! - Lord Jesus Christ, the only-begotten Son. - Dómine Deus, Agnus Dei, - Herr und Gott, Lamm Gottes, - Lord God, Lamb of God, - Fílius Patris. - Sohn des Vaters! - Son of the Father. - Qui tollis peccáta mundi, - Du nimmst hinweg die Sünden der Welt: - Thou who takest away the sins of the world, - miserére nobis. - erbarme Dich unser. - have mercy on us. - Qui tollis peccáta mundi, - Du nimmst hinwerg die Sünden der Welt. - Thou who takest away the sins of the world, - súscipe depreciatiónem nostram. - nimm unser Flehen gnädig auf. - receive our prayer. - Qui sedes ad déxteram Patris, - Du sitzt zur Rechten des Vaters: - Thou who sittest at the right hand of the Father, - miserére nobis. - erbarme Dich unser. - have mercy on us. - Quóniam tu solus Sanctus. - Denn Du allein bist der Heilige. - For Thou alone art holy. - Tu solus Altíssimus, - Du allein der Höchste, - Thou alone art the Most High, - Jesu Christe. - Jesus Christus, - Jesus Christ. - Cum Sancto Spíritu - Mit dem Hl. Geiste, - With the Holy Spirit, - in glória Dei Patris. Amen. - in der Herrlichkeit Gottes des Vaters. Amen. - in the glory of God the Father. Amen. + {#if showLatin}Glória in excélsis Deo.{/if} + {#if urlLang === 'de'}Ehre sei Gott in der Höhe.{/if} + {#if urlLang === 'en'}Glory to God in the highest.{/if} + {#if showLatin}Et in terra pax homínibus{/if} + {#if urlLang === 'de'}Und auf Erden Friede den Mesnchen,{/if} + {#if urlLang === 'en'}And on earth peace to men{/if} + {#if showLatin}bonæ voluntátis.{/if} + {#if urlLang === 'de'}die guten Willens sind.{/if} + {#if urlLang === 'en'}of good will.{/if} + {#if showLatin}Laudámus te.{/if} + {#if urlLang === 'de'}Wir loben Dich.{/if} + {#if urlLang === 'en'}We praise Thee.{/if} + {#if showLatin}Benedícimus te.{/if} + {#if urlLang === 'de'}Wir preisen Dich.{/if} + {#if urlLang === 'en'}We bless Thee.{/if} + {#if showLatin} Adorámus te.{/if} + {#if urlLang === 'de'} Wir beten Dich an.{/if} + {#if urlLang === 'en'} We adore Thee.{/if} + {#if showLatin}Glorificámus te.{/if} + {#if urlLang === 'de'}Wir verherrlichen Dich.{/if} + {#if urlLang === 'en'}We glorify Thee.{/if} + {#if showLatin} Grátias ágimus tibi{/if} + {#if urlLang === 'de'} Wir sagen Dir Dank{/if} + {#if urlLang === 'en'} We give Thee thanks{/if} + {#if showLatin}propter magnam glóriam tuam.{/if} + {#if urlLang === 'de'}ob Deiner grossen Herrlichkeit.{/if} + {#if urlLang === 'en'}for Thy great glory.{/if} + {#if showLatin}Dómine Deus, Rex cæléstis,{/if} + {#if urlLang === 'de'}Herr und Gott, König des Himmels,{/if} + {#if urlLang === 'en'}Lord God, heavenly King,{/if} + {#if showLatin}Deus Pater omnípotens.{/if} + {#if urlLang === 'de'}Gott allmächtiger Vater!{/if} + {#if urlLang === 'en'}God the Father almighty.{/if} + {#if showLatin}Dómine Fili unigénite, Jesu Christe.{/if} + {#if urlLang === 'de'}Herr Jesus Christus, eingeborener Sohn!{/if} + {#if urlLang === 'en'}Lord Jesus Christ, the only-begotten Son.{/if} + {#if showLatin}Dómine Deus, Agnus Dei,{/if} + {#if urlLang === 'de'}Herr und Gott, Lamm Gottes,{/if} + {#if urlLang === 'en'}Lord God, Lamb of God,{/if} + {#if showLatin}Fílius Patris.{/if} + {#if urlLang === 'de'}Sohn des Vaters!{/if} + {#if urlLang === 'en'}Son of the Father.{/if} + {#if showLatin}Qui tollis peccáta mundi,{/if} + {#if urlLang === 'de'}Du nimmst hinweg die Sünden der Welt:{/if} + {#if urlLang === 'en'}Thou who takest away the sins of the world,{/if} + {#if showLatin}miserére nobis.{/if} + {#if urlLang === 'de'}erbarme Dich unser.{/if} + {#if urlLang === 'en'}have mercy on us.{/if} + {#if showLatin}Qui tollis peccáta mundi,{/if} + {#if urlLang === 'de'}Du nimmst hinwerg die Sünden der Welt.{/if} + {#if urlLang === 'en'}Thou who takest away the sins of the world,{/if} + {#if showLatin} súscipe depreciatiónem nostram.{/if} + {#if urlLang === 'de'} nimm unser Flehen gnädig auf.{/if} + {#if urlLang === 'en'} receive our prayer.{/if} + {#if showLatin}Qui sedes ad déxteram Patris,{/if} + {#if urlLang === 'de'}Du sitzt zur Rechten des Vaters:{/if} + {#if urlLang === 'en'}Thou who sittest at the right hand of the Father,{/if} + {#if showLatin}miserére nobis.{/if} + {#if urlLang === 'de'}erbarme Dich unser.{/if} + {#if urlLang === 'en'}have mercy on us.{/if} + {#if showLatin}Quóniam tu solus Sanctus.{/if} + {#if urlLang === 'de'}Denn Du allein bist der Heilige.{/if} + {#if urlLang === 'en'}For Thou alone art holy.{/if} + {#if showLatin}Tu solus Altíssimus,{/if} + {#if urlLang === 'de'}Du allein der Höchste,{/if} + {#if urlLang === 'en'}Thou alone art the Most High,{/if} + {#if showLatin} Jesu Christe.{/if} + {#if urlLang === 'de'} Jesus Christus,{/if} + {#if urlLang === 'en'} Jesus Christ.{/if} + {#if showLatin}Cum Sancto Spíritu{/if} + {#if urlLang === 'de'}Mit dem Hl. Geiste,{/if} + {#if urlLang === 'en'}With the Holy Spirit,{/if} + {#if showLatin} in glória Dei Patris. Amen.{/if} + {#if urlLang === 'de'} in der Herrlichkeit Gottes des Vaters. Amen.{/if} + {#if urlLang === 'en'} in the glory of God the Father. Amen.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/GloriaPatri.svelte b/src/lib/components/prayers/GloriaPatri.svelte index 52f7784..4428b6f 100644 --- a/src/lib/components/prayers/GloriaPatri.svelte +++ b/src/lib/components/prayers/GloriaPatri.svelte @@ -3,15 +3,17 @@ + {#snippet children(showLatin, urlLang)}

- Glória Patri, et Fílio, et Spirítui Sancto. - Ehre sei dem Vater und dem Sohne und dem Hl. Geiste. - Glory be to the Father, and to the Son, and to the Holy Spirit. - Sicut erat in princípio, et nunc, et semper: - Wie es war am Anfang, so auch jetzt und allezeit - As it was in the beginning, is now, and ever shall be, - et in sǽcula sæculórum. Amen. - und in Ewigkeit. Amen. - world without end. Amen. + {#if showLatin}Glória Patri, et Fílio, et Spirítui Sancto.{/if} + {#if urlLang === 'de'}Ehre sei dem Vater und dem Sohne und dem Hl. Geiste.{/if} + {#if urlLang === 'en'}Glory be to the Father, and to the Son, and to the Holy Spirit.{/if} + {#if showLatin}Sicut erat in princípio, et nunc, et semper:{/if} + {#if urlLang === 'de'}Wie es war am Anfang, so auch jetzt und allezeit{/if} + {#if urlLang === 'en'}As it was in the beginning, is now, and ever shall be,{/if} + {#if showLatin}et in sǽcula sæculórum. Amen.{/if} + {#if urlLang === 'de'}und in Ewigkeit. Amen.{/if} + {#if urlLang === 'en'}world without end. Amen.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/JosephGebet.svelte b/src/lib/components/prayers/JosephGebet.svelte index 52cfd33..a03ff1a 100644 --- a/src/lib/components/prayers/JosephGebet.svelte +++ b/src/lib/components/prayers/JosephGebet.svelte @@ -3,18 +3,20 @@ + {#snippet children(showLatin, urlLang)}

- Jungfräulicher Vater Jesu, - Virgin Father of Jesus, - Reinster Bräutigam Mariä, - Most pure Spouse of Mary, - Sankt Joseph, bitte Tag für Tag bei Jesus, dem Sohn Gottes. - Saint Joseph, pray each day to Jesus, the Son of God. - Seine Kraft und Gnade soll uns stärken, - May His power and grace strengthen us, - dass wir siegreich streiten im Leben - that we may fight victoriously in life - und die Krone von Ihm erhalten im Sterben. - and receive the crown from Him at death. + {#if urlLang === 'de'}Jungfräulicher Vater Jesu,{/if} + {#if urlLang === 'en'}Virgin Father of Jesus,{/if} + {#if urlLang === 'de'}Reinster Bräutigam Mariä,{/if} + {#if urlLang === 'en'}Most pure Spouse of Mary,{/if} + {#if urlLang === 'de'}Sankt Joseph, bitte Tag für Tag bei Jesus, dem Sohn Gottes.{/if} + {#if urlLang === 'en'}Saint Joseph, pray each day to Jesus, the Son of God.{/if} + {#if urlLang === 'de'}Seine Kraft und Gnade soll uns stärken,{/if} + {#if urlLang === 'en'}May His power and grace strengthen us,{/if} + {#if urlLang === 'de'}dass wir siegreich streiten im Leben{/if} + {#if urlLang === 'en'}that we may fight victoriously in life{/if} + {#if urlLang === 'de'}und die Krone von Ihm erhalten im Sterben.{/if} + {#if urlLang === 'en'}and receive the crown from Him at death.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/Kreuzzeichen.svelte b/src/lib/components/prayers/Kreuzzeichen.svelte index 7c68e35..c71f3cb 100644 --- a/src/lib/components/prayers/Kreuzzeichen.svelte +++ b/src/lib/components/prayers/Kreuzzeichen.svelte @@ -3,9 +3,11 @@ + {#snippet children(showLatin, urlLang)}

- In nómine Patris, et Fílii, et Spíritus Sancti. Amen. - Im Namen des Vaters und des Sohnes und des Heiligen Geistes. Amen. - In the name of the Father, and of the Son, and of the Holy Spirit. Amen. + {#if showLatin}In nómine Patris, et Fílii, et Spíritus Sancti. Amen.{/if} + {#if urlLang === 'de'}Im Namen des Vaters und des Sohnes und des Heiligen Geistes. Amen.{/if} + {#if urlLang === 'en'}In the name of the Father, and of the Son, and of the Holy Spirit. Amen.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/MichaelGebet.svelte b/src/lib/components/prayers/MichaelGebet.svelte index ad1f26e..912d3ea 100644 --- a/src/lib/components/prayers/MichaelGebet.svelte +++ b/src/lib/components/prayers/MichaelGebet.svelte @@ -3,36 +3,38 @@ + {#snippet children(showLatin, urlLang)}

- Sáncte Míchael Archángele, - Heiliger Erzengel Michael, - Saint Michael the Archangel, - defénde nos in proélio, - verteidige uns im Kampfe! - defend us in battle. - cóntra nequítam et insídias - Gegen die Bosheit und Nachstellungen - Be our protection against the wickedness - diáboli ésto præsídium. - des Teufels sei unser Schutz. - and snares of the devil. - Ímperet ílli Déus, súpplices deprecámur: - »Gott gebiete ihm!«, so bitten wir flehentlich. - May God rebuke him, we humbly pray; - tuque, Prínceps milítæ cæléstis, - Du aber, Fürst der himmlischen Heerscharen, - and do thou, O Prince of the heavenly host, - Sátanam aliósque spíritus malígnos, - stosse den Satan und die anderen bösen Geister, - by the power of God, thrust into hell Satan - qui ad perditiónem animárum - pervagántur in múndo, - die in der Welt umhergehen, - um die Seelen zu verderben, - and all the evil spirits - who prowl about the world seeking the ruin of souls. - divína virtúte, in inférnum detrúde. Amen. - durch die Kraft Gottes in die Hölle. Amen. - Amen. + {#if showLatin}Sáncte Míchael Archángele,{/if} + {#if urlLang === 'de'}Heiliger Erzengel Michael,{/if} + {#if urlLang === 'en'}Saint Michael the Archangel,{/if} + {#if showLatin}defénde nos in proélio,{/if} + {#if urlLang === 'de'}verteidige uns im Kampfe!{/if} + {#if urlLang === 'en'}defend us in battle.{/if} + {#if showLatin}cóntra nequítam et insídias{/if} + {#if urlLang === 'de'}Gegen die Bosheit und Nachstellungen{/if} + {#if urlLang === 'en'}Be our protection against the wickedness{/if} + {#if showLatin}diáboli ésto præsídium.{/if} + {#if urlLang === 'de'}des Teufels sei unser Schutz. {/if} + {#if urlLang === 'en'}and snares of the devil.{/if} + {#if showLatin}Ímperet ílli Déus, súpplices deprecámur:{/if} + {#if urlLang === 'de'}»Gott gebiete ihm!«, so bitten wir flehentlich.{/if} + {#if urlLang === 'en'}May God rebuke him, we humbly pray;{/if} + {#if showLatin}tuque, Prínceps milítæ cæléstis,{/if} + {#if urlLang === 'de'}Du aber, Fürst der himmlischen Heerscharen,{/if} + {#if urlLang === 'en'}and do thou, O Prince of the heavenly host,{/if} + {#if showLatin}Sátanam aliósque spíritus malígnos,{/if} + {#if urlLang === 'de'}stosse den Satan und die anderen bösen Geister,{/if} + {#if urlLang === 'en'}by the power of God, thrust into hell Satan{/if} + {#if showLatin}qui ad perditiónem animárum{/if} + {#if showLatin}pervagántur in múndo,{/if} + {#if urlLang === 'de'}die in der Welt umhergehen,{/if} + {#if urlLang === 'de'}um die Seelen zu verderben,{/if} + {#if urlLang === 'en'}and all the evil spirits{/if} + {#if urlLang === 'en'}who prowl about the world seeking the ruin of souls.{/if} + {#if showLatin}divína virtúte, in inférnum detrúde. Amen.{/if} + {#if urlLang === 'de'}durch die Kraft Gottes in die Hölle. Amen.{/if} + {#if urlLang === 'en'}Amen.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/Paternoster.svelte b/src/lib/components/prayers/Paternoster.svelte index 12ae6c9..559a1f6 100644 --- a/src/lib/components/prayers/Paternoster.svelte +++ b/src/lib/components/prayers/Paternoster.svelte @@ -3,33 +3,35 @@ + {#snippet children(showLatin, urlLang)}

- Pater noster, qui es in cælis - Vater unser, der Du bist im Himmel, - Our Father, Who art in heaven, - Sanctificétur nomen tuum - geheiligt werde Dein Name; - hallowed be Thy name; - Advéniat regnum tuum - zu uns komme Dein Reich; - Thy kingdom come; - Fiat volúntas tua, sicut in cælo, et in terra. - Dein Wille geschehe, wie im Himmel, also auch auf Erden! - Thy will be done on earth as it is in heaven. - Panem nostrum quotidiánum da nobis hódie. - Unser tägliches Brot gib uns heute; - Give us this day our daily bread; - Et dimítte nobis debíta nostra, - und vergib uns unsere Schulden, - and forgive us our trespasses, - sicut et nos dimíttimus debitóribus nostris. - wie auch wir vergeben unsern Schuldigern; - as we forgive those who trespass against us; - Et ne nos indúcas in tentatiónem. - und führe uns nicht in Versuchung. - and lead us not into temptation, - Sed líbera nos a malo. Amen. - Sondern erlöse uns von dem Übel. Amen. - but deliver us from evil. Amen. + {#if showLatin}Pater noster, qui es in cælis{/if} + {#if urlLang === 'de'}Vater unser, der Du bist im Himmel,{/if} + {#if urlLang === 'en'}Our Father, Who art in heaven,{/if} + {#if showLatin}Sanctificétur nomen tuum{/if} + {#if urlLang === 'de'}geheiligt werde Dein Name;{/if} + {#if urlLang === 'en'}hallowed be Thy name;{/if} + {#if showLatin}Advéniat regnum tuum{/if} + {#if urlLang === 'de'}zu uns komme Dein Reich;{/if} + {#if urlLang === 'en'}Thy kingdom come;{/if} + {#if showLatin}Fiat volúntas tua, sicut in cælo, et in terra.{/if} + {#if urlLang === 'de'}Dein Wille geschehe, wie im Himmel, also auch auf Erden!{/if} + {#if urlLang === 'en'}Thy will be done on earth as it is in heaven.{/if} + {#if showLatin}Panem nostrum quotidiánum da nobis hódie.{/if} + {#if urlLang === 'de'}Unser tägliches Brot gib uns heute;{/if} + {#if urlLang === 'en'}Give us this day our daily bread;{/if} + {#if showLatin}Et dimítte nobis debíta nostra,{/if} + {#if urlLang === 'de'}und vergib uns unsere Schulden,{/if} + {#if urlLang === 'en'}and forgive us our trespasses,{/if} + {#if showLatin}sicut et nos dimíttimus debitóribus nostris.{/if} + {#if urlLang === 'de'}wie auch wir vergeben unsern Schuldigern;{/if} + {#if urlLang === 'en'}as we forgive those who trespass against us;{/if} + {#if showLatin}Et ne nos indúcas in tentatiónem.{/if} + {#if urlLang === 'de'}und führe uns nicht in Versuchung.{/if} + {#if urlLang === 'en'}and lead us not into temptation,{/if} + {#if showLatin}Sed líbera nos a malo. Amen.{/if} + {#if urlLang === 'de'}Sondern erlöse uns von dem Übel. Amen.{/if} + {#if urlLang === 'en'}but deliver us from evil. Amen.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/Prayer.svelte b/src/lib/components/prayers/Prayer.svelte index a980e34..c1a14fb 100644 --- a/src/lib/components/prayers/Prayer.svelte +++ b/src/lib/components/prayers/Prayer.svelte @@ -2,7 +2,7 @@ import type { Snippet } from 'svelte'; import { getLanguageContext } from '$lib/contexts/languageContext.js'; - let { latinPrimary = true, hasLatin = true, children } = $props<{ latinPrimary?: boolean, hasLatin?: boolean, children?: Snippet }>(); + let { latinPrimary = true, hasLatin = true, children } = $props<{ latinPrimary?: boolean, hasLatin?: boolean, children?: Snippet<[boolean, string]> }>(); // Get context if available (graceful fallback for standalone usage) let showLatinStore; @@ -157,5 +157,5 @@ class:lang-de={urlLang === 'de'} class:lang-en={urlLang === 'en'} > - {@render children?.()} + {@render children?.(showLatin, urlLang)} diff --git a/src/lib/components/prayers/RosaryFinalPrayer.svelte b/src/lib/components/prayers/RosaryFinalPrayer.svelte index fbc36b4..3f1e5e4 100644 --- a/src/lib/components/prayers/RosaryFinalPrayer.svelte +++ b/src/lib/components/prayers/RosaryFinalPrayer.svelte @@ -3,38 +3,40 @@ + {#snippet children(showLatin, urlLang)}

- Orémus: - Lasset uns beten: - Let us pray: + {#if showLatin}Orémus:{/if} + {#if urlLang === 'de'}Lasset uns beten:{/if} + {#if urlLang === 'en'}Let us pray:{/if}

- Déus, cújus Unigénitus, - O Gott, dessen eingeborner Sohn - O God, whose only begotten Son, - pér vítam, mórtem ét resurrectiónem súam - durch sein Leben, seinen Tod und seine Auferstehung - by His life, death, and resurrection, - nóbis salútis ætérnæ præmia comparávit: - uns die Belohnung des ewigen Lebens verdient hat, - has purchased for us the rewards of eternal life: - concéde, quæsumus; - verleihe uns, wir bitten dich, - grant, we beseech Thee, - út, hæc mystéria sanctíssimo beátæ Maríæ Vírginis Rosário recoléntes; - dass wir, indem wir die Geheimisse des heiligen Rosenkranzes der allerseligsten Jungfrau ehren, - that by meditating on these mysteries of the most holy Rosary of the Blessed Virgin Mary, - ét imitémur quód cóntinent, - was sie enthalten nachahmen - we may imitate what they contain - ét quód promíttunt, assequámur. - und dadurch erlangen, was uns in denselben verheissen ist. - and obtain what they promise. - Pér eúmdem Chrístum Dóminum nóstrum. - Durch unsern Herrn Jesus Christus. - Through the same Christ our Lord. - Ámen. - Amen. - Amen. + {#if showLatin}Déus, cújus Unigénitus,{/if} + {#if urlLang === 'de'}O Gott, dessen eingeborner Sohn{/if} + {#if urlLang === 'en'}O God, whose only begotten Son,{/if} + {#if showLatin}pér vítam, mórtem ét resurrectiónem súam{/if} + {#if urlLang === 'de'}durch sein Leben, seinen Tod und seine Auferstehung{/if} + {#if urlLang === 'en'}by His life, death, and resurrection,{/if} + {#if showLatin}nóbis salútis ætérnæ præmia comparávit:{/if} + {#if urlLang === 'de'}uns die Belohnung des ewigen Lebens verdient hat,{/if} + {#if urlLang === 'en'}has purchased for us the rewards of eternal life:{/if} + {#if showLatin}concéde, quæsumus;{/if} + {#if urlLang === 'de'}verleihe uns, wir bitten dich,{/if} + {#if urlLang === 'en'}grant, we beseech Thee,{/if} + {#if showLatin}út, hæc mystéria sanctíssimo beátæ Maríæ Vírginis Rosário recoléntes;{/if} + {#if urlLang === 'de'}dass wir, indem wir die Geheimisse des heiligen Rosenkranzes der allerseligsten Jungfrau ehren,{/if} + {#if urlLang === 'en'}that by meditating on these mysteries of the most holy Rosary of the Blessed Virgin Mary,{/if} + {#if showLatin}ét imitémur quód cóntinent,{/if} + {#if urlLang === 'de'}was sie enthalten nachahmen{/if} + {#if urlLang === 'en'}we may imitate what they contain{/if} + {#if showLatin}ét quód promíttunt, assequámur.{/if} + {#if urlLang === 'de'}und dadurch erlangen, was uns in denselben verheissen ist.{/if} + {#if urlLang === 'en'}and obtain what they promise.{/if} + {#if showLatin}Pér eúmdem Chrístum Dóminum nóstrum.{/if} + {#if urlLang === 'de'}Durch unsern Herrn Jesus Christus.{/if} + {#if urlLang === 'en'}Through the same Christ our Lord.{/if} + {#if showLatin}Ámen.{/if} + {#if urlLang === 'de'}Amen.{/if} + {#if urlLang === 'en'}Amen.{/if}

+ {/snippet}
diff --git a/src/lib/components/prayers/SalveRegina.svelte b/src/lib/components/prayers/SalveRegina.svelte index 8dd323e..c8cff4b 100644 --- a/src/lib/components/prayers/SalveRegina.svelte +++ b/src/lib/components/prayers/SalveRegina.svelte @@ -3,42 +3,44 @@ + {#snippet children(showLatin, urlLang)}

- Salve, Regína, - Sei gegrüsst, o Königin, - Hail, Holy Queen, - máter misericórdiae; - Mutter der Barmherzigkeit, - Mother of Mercy, - Víta, dulcédo et spes nóstra, sálve. - unser Leben, unsre Wonne - und unsere Hoffnung, sei gegrüsst! - our life, our sweetness and our hope. + {#if showLatin}Salve, Regína,{/if} + {#if urlLang === 'de'}Sei gegrüsst, o Königin,{/if} + {#if urlLang === 'en'}Hail, Holy Queen,{/if} + {#if showLatin}máter misericórdiae;{/if} + {#if urlLang === 'de'}Mutter der Barmherzigkeit,{/if} + {#if urlLang === 'en'}Mother of Mercy,{/if} + {#if showLatin}Víta, dulcédo et spes nóstra, sálve.{/if} + {#if urlLang === 'de'}unser Leben, unsre Wonne{/if} + {#if urlLang === 'de'}und unsere Hoffnung, sei gegrüsst!{/if} + {#if urlLang === 'en'}our life, our sweetness and our hope.{/if}

- Ad te clamámus, éxsules fílii Hévae. - Zu dir rufen wir verbannte Kinder Evas; - To thee do we cry, poor banished children of Eve. - Ad te suspirámus, - zu dir seufzen wir - To thee do we send up our sighs, - geméntes et fléntes in hac lacrimárum válle. - trauernd und weinend in diesem Tal der Tränen. - mourning and weeping in this valley of tears. - Eia ergo, Advocáta nóstra, - Wohlan denn, unsre Fürsprecherin, - Turn then, most gracious advocate, - íllos túos misericórdes óculos ad nos convérte. - deine barmherzigen Augen wende zu uns - thine eyes of mercy toward us. - Et Jésum, benedíctum frúctum véntris túi, - und nach diesem Elend zeige uns Jesus, - And after this our exile show unto us - nóbis post hoc exsílíum osténde. - die gebenedeite Frucht deines Leibes. - the blessed fruit of thy womb, Jesus. - O clémens, o pía, o dúlcis Vírgo María. - O gütige, o milde, o süsse Jungfrau Maria. - O clement, O loving, O sweet Virgin Mary. + {#if showLatin}Ad te clamámus, éxsules fílii Hévae.{/if} + {#if urlLang === 'de'}Zu dir rufen wir verbannte Kinder Evas;{/if} + {#if urlLang === 'en'}To thee do we cry, poor banished children of Eve.{/if} + {#if showLatin}Ad te suspirámus,{/if} + {#if urlLang === 'de'}zu dir seufzen wir{/if} + {#if urlLang === 'en'}To thee do we send up our sighs,{/if} + {#if showLatin}geméntes et fléntes in hac lacrimárum válle.{/if} + {#if urlLang === 'de'}trauernd und weinend in diesem Tal der Tränen.{/if} + {#if urlLang === 'en'}mourning and weeping in this valley of tears.{/if} + {#if showLatin}Eia ergo, Advocáta nóstra,{/if} + {#if urlLang === 'de'}Wohlan denn, unsre Fürsprecherin,{/if} + {#if urlLang === 'en'}Turn then, most gracious advocate,{/if} + {#if showLatin}íllos túos misericórdes óculos ad nos convérte.{/if} + {#if urlLang === 'de'}deine barmherzigen Augen wende zu uns{/if} + {#if urlLang === 'en'}thine eyes of mercy toward us.{/if} + {#if showLatin}Et Jésum, benedíctum frúctum véntris túi,{/if} + {#if urlLang === 'de'}und nach diesem Elend zeige uns Jesus,{/if} + {#if urlLang === 'en'}And after this our exile show unto us{/if} + {#if showLatin}nóbis post hoc exsílíum osténde.{/if} + {#if urlLang === 'de'}die gebenedeite Frucht deines Leibes.{/if} + {#if urlLang === 'en'}the blessed fruit of thy womb, Jesus.{/if} + {#if showLatin}O clémens, o pía, o dúlcis Vírgo María.{/if} + {#if urlLang === 'de'}O gütige, o milde, o süsse Jungfrau Maria.{/if} + {#if urlLang === 'en'}O clement, O loving, O sweet Virgin Mary.{/if}

+ {/snippet}
diff --git a/src/lib/data/mysteryVerseData.ts b/src/lib/data/mysteryVerseData.ts new file mode 100644 index 0000000..5e649e7 --- /dev/null +++ b/src/lib/data/mysteryVerseData.ts @@ -0,0 +1,525 @@ +// Auto-generated by scripts/generate-mystery-verses.ts — do not edit manually +import type { MysteryDescription } from './mysteryDescriptions'; + +export const mysteryVerseData: Record = { + "lichtreichen": [ + { + "title": "Das erste lichtreiche Geheimnis: Die Taufe im Jordan.", + "reference": "Mt 3, 16-17", + "text": "«Als aber Jesus getauft war, stieg er sogleich aus dem Wasser heraus; und siehe, es öffneten sich ihm die Himmel, und er sah den Geist Gottes herabkommen über ihn und wie eine Taube herabsteigen. Und siehe, eine Stimme vom Himmel sprach: Dieser ist mein Sohn, der geliebte, an welchem ich Wohlgefallen habe!»", + "verseData": { + "book": "Matthäus", + "chapter": 3, + "verses": [ + { + "verse": 16, + "text": "Als aber Jesus getauft war, stieg er sogleich aus dem Wasser heraus; und siehe, es öffneten sich ihm die Himmel, und er sah den Geist Gottes herabkommen über ihn und wie eine Taube herabsteigen." + }, + { + "verse": 17, + "text": "Und siehe, eine Stimme vom Himmel sprach: Dieser ist mein Sohn, der geliebte, an welchem ich Wohlgefallen habe!" + } + ] + } + }, + { + "title": "Das zweite lichtreiche Geheimnis: Die Hochzeit von Kana.", + "reference": "Joh 2, 1-5", + "text": "«Am dritten Tage ward eine Hochzeit gehalten zu Kana in Galiläa; und die Mutter Jesu war dabei. Auch Jesus und seine Jünger waren zur Hochzeit geladen. Und da der Wein ausging, sagte die Mutter Jesu zu ihm: Sie haben keinen Wein! Jesus aber sprach zu ihr: Weib! was soll dies mir und dir? Noch ist meine Stunde nicht gekommen. Da sagte seine Mutter zu den Dienern: Was immer er euch sagt, das tut!»", + "verseData": { + "book": "Johannes", + "chapter": 2, + "verses": [ + { + "verse": 1, + "text": "Am dritten Tage ward eine Hochzeit gehalten zu Kana in Galiläa; und die Mutter Jesu war dabei." + }, + { + "verse": 2, + "text": "Auch Jesus und seine Jünger waren zur Hochzeit geladen." + }, + { + "verse": 3, + "text": "Und da der Wein ausging, sagte die Mutter Jesu zu ihm: Sie haben keinen Wein!" + }, + { + "verse": 4, + "text": "Jesus aber sprach zu ihr: Weib! was soll dies mir und dir? Noch ist meine Stunde nicht gekommen." + }, + { + "verse": 5, + "text": "Da sagte seine Mutter zu den Dienern: Was immer er euch sagt, das tut!" + } + ] + } + }, + { + "title": "Das dritte lichtreiche Geheimnis: Die Verkündigung des Reiches Gottes.", + "reference": "Mk 1, 15", + "text": "«und sprach: Erfüllet ist die Zeit, und das Reich Gottes hat sich genahet; tuet Buße und dem Evangelium!»", + "verseData": { + "book": "Markus", + "chapter": 1, + "verses": [ + { + "verse": 15, + "text": "und sprach: Erfüllet ist die Zeit, und das Reich Gottes hat sich genahet; tuet Buße und dem Evangelium!" + } + ] + } + }, + { + "title": "Das vierte lichtreiche Geheimnis: Die Verklärung.", + "reference": "Mt 17, 1-2", + "text": "«Nach sechs Tagen nahm Jesus den Petrus, Jakobus und Johannes, Bruder desselben, zu sich, und führte sie allein auf einen hohen Berg. Und er ward vor ihnen verklärt; und sein Angesicht leuchtete wie die Sonne, seine Kleider aber wurden weiß wie der Schnee.»", + "verseData": { + "book": "Matthäus", + "chapter": 17, + "verses": [ + { + "verse": 1, + "text": "Nach sechs Tagen nahm Jesus den Petrus, Jakobus und Johannes, Bruder desselben, zu sich, und führte sie allein auf einen hohen Berg." + }, + { + "verse": 2, + "text": "Und er ward vor ihnen verklärt; und sein Angesicht leuchtete wie die Sonne, seine Kleider aber wurden weiß wie der Schnee." + } + ] + } + }, + { + "title": "Das fünfte lichtreiche Geheimnis: Die heiligste Eucharistie (Das Altarssakrament).", + "reference": "Mt 26, 26", + "text": "«Während sie aber aßen, nahm Jesus Brot, segnete und brach es, gab es seinen Jüngern, und sprach: Nehmet hin, und esset, dies ist mein Leib!»", + "verseData": { + "book": "Matthäus", + "chapter": 26, + "verses": [ + { + "verse": 26, + "text": "Während sie aber aßen, nahm Jesus Brot, segnete und brach es, gab es seinen Jüngern, und sprach: Nehmet hin, und esset, dies ist mein Leib!" + } + ] + } + } + ], + "freudenreich": [ + { + "title": "Das erste freudenreiche Geheimnis: Die Verkündigung des Erzengles Gabriel an die Jungfrau Maria.", + "reference": "Lk 1, 26-27", + "text": "«Im sechsten Monate aber ward der Engel Gabriel von Gott gesandt in eine Stadt in Galiläa, mit Namen Nazareth, zu einer Jungfrau, die verlobt war mit einem Manne, mit Namen Joseph, vom Hause Davids, und der Name der Jungfrau war Maria.»", + "verseData": { + "book": "Lukas", + "chapter": 1, + "verses": [ + { + "verse": 26, + "text": "Im sechsten Monate aber ward der Engel Gabriel von Gott gesandt in eine Stadt in Galiläa, mit Namen Nazareth," + }, + { + "verse": 27, + "text": "zu einer Jungfrau, die verlobt war mit einem Manne, mit Namen Joseph, vom Hause Davids, und der Name der Jungfrau war Maria." + } + ] + } + }, + { + "title": "Das zweite freudenreiche Geheimnis: Der Besuch Marias bei Elisabeth.", + "reference": "Lk 1, 39-42", + "text": "«Maria aber machte sich in jenen Tagen auf, und ging eilends auf das Gebirge nach einer Stadt des Stammes Juda. Und sie kam in das Haus des Zacharias, und grüßte Elisabeth. Und es bagab sich, sobald Elisabeth den Gruß Marias hörte, hüpfte das Kind freudig in ihrem Leibe auf, und Elisabeth ward erfüllet von dem heiligen Geiste. Und sie rief mit lauter Stimme, und sprach: Gebenedeit bist du unter den Weibern, und gebenedeiet ist die Frucht deines Leibes!»", + "verseData": { + "book": "Lukas", + "chapter": 1, + "verses": [ + { + "verse": 39, + "text": "Maria aber machte sich in jenen Tagen auf, und ging eilends auf das Gebirge nach einer Stadt des Stammes Juda." + }, + { + "verse": 40, + "text": "Und sie kam in das Haus des Zacharias, und grüßte Elisabeth." + }, + { + "verse": 41, + "text": "Und es bagab sich, sobald Elisabeth den Gruß Marias hörte, hüpfte das Kind freudig in ihrem Leibe auf, und Elisabeth ward erfüllet von dem heiligen Geiste." + }, + { + "verse": 42, + "text": "Und sie rief mit lauter Stimme, und sprach: Gebenedeit bist du unter den Weibern, und gebenedeiet ist die Frucht deines Leibes!" + } + ] + } + }, + { + "title": "Das dritte freudenreiche Geheimnis: Die Geburt Jesu im Stall von Bethlehem.", + "reference": "Lk 2, 1-7", + "text": "«Es geschah aber in denselben Tagen, dass vom Kaiser Augustus ein Befehl ausging, dass der ganze Erdkreis aufgeschrieben werde. Diese Aufschreibung war die erste, und geschah durch Cyrinus, den Statthalter von Syrien. Und alle gingen hin, sich aufschreiben zu lassen, ein jeder in seine Stadt. Da zog auch Joseph von Galiläa, aus der Stadt Nazareth, hinauf nach Judäa in die Stadt Davids, welche Bethlehem heißt, weil er aus dem Hause und Geschlechte Davids war, um sich aufschreiben zu lassen mit Maria, seinem verlobten Weibe, welche schwanger war, Es begab sich aber, als sie daselbst waren, erfüllten sich die Tage, dass sie gebären sollte. Und sie gebar ihren erstgeborenen Sohn, und wickelte ihn in Windeln, und legte ihn in eine Krippe, weil für sie kein Platz war in der Herberge.»", + "verseData": { + "book": "Lukas", + "chapter": 2, + "verses": [ + { + "verse": 1, + "text": "Es geschah aber in denselben Tagen, dass vom Kaiser Augustus ein Befehl ausging, dass der ganze Erdkreis aufgeschrieben werde." + }, + { + "verse": 2, + "text": "Diese Aufschreibung war die erste, und geschah durch Cyrinus, den Statthalter von Syrien." + }, + { + "verse": 3, + "text": "Und alle gingen hin, sich aufschreiben zu lassen, ein jeder in seine Stadt." + }, + { + "verse": 4, + "text": "Da zog auch Joseph von Galiläa, aus der Stadt Nazareth, hinauf nach Judäa in die Stadt Davids, welche Bethlehem heißt, weil er aus dem Hause und Geschlechte Davids war," + }, + { + "verse": 5, + "text": "um sich aufschreiben zu lassen mit Maria, seinem verlobten Weibe, welche schwanger war," + }, + { + "verse": 6, + "text": "Es begab sich aber, als sie daselbst waren, erfüllten sich die Tage, dass sie gebären sollte." + }, + { + "verse": 7, + "text": "Und sie gebar ihren erstgeborenen Sohn, und wickelte ihn in Windeln, und legte ihn in eine Krippe, weil für sie kein Platz war in der Herberge." + } + ] + } + }, + { + "title": "Das vierte freudenreiche Geheimnis: Jesus wird von Maria und Josef im Tempel dargebracht.", + "reference": "Lk 2, 21-24", + "text": "«Und nachdem acht Tage um waren, und das Kind beschnitten werden sollte, ward sein Name Jesus genannt, wie ihn schon der Engel genannt hatte, ehe er empfangen ward. Da nun die Tage ihrer Reinigung nach dem Gesetze Moses erfüllt waren, brachten sie ihn nach Jerusalem, um ihn dem Herrn darzustellen; wie geschrieben steht im Gesetze des Herrn: Jede männliche Erstgeburt soll dem Herrn geheiligt werden; und um ein Opfer darzubringen, wie es dem Gesetze des Herrn geboten ist, ein Paar Turteltauben, oder zwei junge Tauben.»", + "verseData": { + "book": "Lukas", + "chapter": 2, + "verses": [ + { + "verse": 21, + "text": "Und nachdem acht Tage um waren, und das Kind beschnitten werden sollte, ward sein Name Jesus genannt, wie ihn schon der Engel genannt hatte, ehe er empfangen ward." + }, + { + "verse": 22, + "text": "Da nun die Tage ihrer Reinigung nach dem Gesetze Moses erfüllt waren, brachten sie ihn nach Jerusalem, um ihn dem Herrn darzustellen;" + }, + { + "verse": 23, + "text": "wie geschrieben steht im Gesetze des Herrn: Jede männliche Erstgeburt soll dem Herrn geheiligt werden;" + }, + { + "verse": 24, + "text": "und um ein Opfer darzubringen, wie es dem Gesetze des Herrn geboten ist, ein Paar Turteltauben, oder zwei junge Tauben." + } + ] + } + }, + { + "title": "Das fünfte freudenreiche Geheimnis: Jesus wird im Tempel wiedergefunden.", + "reference": "Lk 2, 41-47", + "text": "«Und seine Eltern gingen alle Jahre nach Jerusalem am Osterfeste. Als er nun zwölf Jahre alt war, gingen sie nach der Gewohnheit des Festtages nach Jerusalem hinauf. Und da sie am Ende der Festtage wieder zurückkehrten, blieb der Knabe Jesus in Jerusalem, ohne dass es seine Eltern wussten. Da sie aber meinten, er sei bei der Reisegesellschaft, gingen sie eine Tagreise weit, und suchten ihn unter den Verwandten und Bekannten. Und da sie ihn nicht fanden, kehrten sie nach Jerusalem zurück, ihn suchend. Und es geschah, nach drei Tagen fanden sie ihn im Tempel, wie er unter den Lehrern saß und ihnen zuhörte, und sie befragte. Es staunten aber alle, die ihn hörten, über seine Einsicht und seine Antworten.»", + "verseData": { + "book": "Lukas", + "chapter": 2, + "verses": [ + { + "verse": 41, + "text": "Und seine Eltern gingen alle Jahre nach Jerusalem am Osterfeste." + }, + { + "verse": 42, + "text": "Als er nun zwölf Jahre alt war, gingen sie nach der Gewohnheit des Festtages nach Jerusalem hinauf." + }, + { + "verse": 43, + "text": "Und da sie am Ende der Festtage wieder zurückkehrten, blieb der Knabe Jesus in Jerusalem, ohne dass es seine Eltern wussten." + }, + { + "verse": 44, + "text": "Da sie aber meinten, er sei bei der Reisegesellschaft, gingen sie eine Tagreise weit, und suchten ihn unter den Verwandten und Bekannten." + }, + { + "verse": 45, + "text": "Und da sie ihn nicht fanden, kehrten sie nach Jerusalem zurück, ihn suchend." + }, + { + "verse": 46, + "text": "Und es geschah, nach drei Tagen fanden sie ihn im Tempel, wie er unter den Lehrern saß und ihnen zuhörte, und sie befragte." + }, + { + "verse": 47, + "text": "Es staunten aber alle, die ihn hörten, über seine Einsicht und seine Antworten." + } + ] + } + } + ], + "schmerzhaften": [ + { + "title": "Das erste schmerzhafte Geheimnis: Die Todesangst Jesu.", + "reference": "Mt 26, 36-39", + "text": "«Da kam Jesus mit ihnen in einen Meierhog, Gethsemani genannt, und sprach zu seinen Jüngern: Setzet euch hier, während ich dorthin gehe und bete. Und er nahm den Petrus und die zwei Söhne des Zebedäus mit sich, und fing an, sich zu betrüben und zu bangen. Da sprach er zu ihnen: Meine Seele ist betrübt bis in den Tod, bleibet hier und wachet mit mir! Und nachdem er ein wenig vorwärts gegangen war, fiel er auf sein Angesicht, betete, und sprach: Mein Vater! wenn es möglich ist, so gehe dieser Kelch an mir vorüber; jedoch nicht wie ich will, sondern wie du.»", + "verseData": { + "book": "Matthäus", + "chapter": 26, + "verses": [ + { + "verse": 36, + "text": "Da kam Jesus mit ihnen in einen Meierhog, Gethsemani genannt, und sprach zu seinen Jüngern: Setzet euch hier, während ich dorthin gehe und bete." + }, + { + "verse": 37, + "text": "Und er nahm den Petrus und die zwei Söhne des Zebedäus mit sich, und fing an, sich zu betrüben und zu bangen." + }, + { + "verse": 38, + "text": "Da sprach er zu ihnen: Meine Seele ist betrübt bis in den Tod, bleibet hier und wachet mit mir!" + }, + { + "verse": 39, + "text": "Und nachdem er ein wenig vorwärts gegangen war, fiel er auf sein Angesicht, betete, und sprach: Mein Vater! wenn es möglich ist, so gehe dieser Kelch an mir vorüber; jedoch nicht wie ich will, sondern wie du." + } + ] + } + }, + { + "title": "Das zweite schmerzhafte Geheimnis: Die Geißelung Jesu.", + "reference": "Mt 27, 26", + "text": "«Alsdann gab er ihnen den Barabbas frei; Jesus aber ließ er geißeln, und überlieferte ihnen denselben, damit er gekreuziget würde.»", + "verseData": { + "book": "Matthäus", + "chapter": 27, + "verses": [ + { + "verse": 26, + "text": "Alsdann gab er ihnen den Barabbas frei; Jesus aber ließ er geißeln, und überlieferte ihnen denselben, damit er gekreuziget würde." + } + ] + } + }, + { + "title": "Das dritte schmerzhafte Geheimnis: Die Dornenkrönung.", + "reference": "Mt 27, 27-29", + "text": "«Da nahmen die Soldaten des Landpflegers Jesus zu sich hinein in das Richthaus, und versammelten um ihn die ganze Schar. Und sie zogen ihn aus, und legten ihm einen scharlachroten Mantel um, und flochten eine Krone aus Dornen, setzten sie auf sein Haupt, und gaben ihm ein Rohr in seine rechte Hand. Und sie bogen das Knie vor ihm, verspotteten ihn, und sprachen: Sei gegrüßt, König der Juden!»", + "verseData": { + "book": "Matthäus", + "chapter": 27, + "verses": [ + { + "verse": 27, + "text": "Da nahmen die Soldaten des Landpflegers Jesus zu sich hinein in das Richthaus, und versammelten um ihn die ganze Schar." + }, + { + "verse": 28, + "text": "Und sie zogen ihn aus, und legten ihm einen scharlachroten Mantel um," + }, + { + "verse": 29, + "text": "und flochten eine Krone aus Dornen, setzten sie auf sein Haupt, und gaben ihm ein Rohr in seine rechte Hand. Und sie bogen das Knie vor ihm, verspotteten ihn, und sprachen: Sei gegrüßt, König der Juden!" + } + ] + } + }, + { + "title": "Das vierte schmerzhafte Geheimnis: Jesus trägt das schwere Kreuz.", + "reference": "Mk 15, 21-22", + "text": "«Und sie zwangen einen Vorübergehenden, Simon von Zyrene, der vom Lande kam, den Vater des Alexander und Rufus, sein Kreuz auf sich zu nehmen. Und sie führten ihn an den Ort Golgotha, was verdolmetscht ist: Schädelstätte.»", + "verseData": { + "book": "Markus", + "chapter": 15, + "verses": [ + { + "verse": 21, + "text": "Und sie zwangen einen Vorübergehenden, Simon von Zyrene, der vom Lande kam, den Vater des Alexander und Rufus, sein Kreuz auf sich zu nehmen." + }, + { + "verse": 22, + "text": "Und sie führten ihn an den Ort Golgotha, was verdolmetscht ist: Schädelstätte." + } + ] + } + }, + { + "title": "Das fünfte schmerzhafte Geheimnis: Die Kreuzigung Jesu.", + "reference": "Lk 23, 33-46", + "text": "«Und als sie an den Ort kamen, den man Schädelstätte heißt, kreuzigten sie ihn daselbst, und die Räuber, den einen zur Rechten, und den andern zur Linken. Jesus aber sprach: Vater! vergib ihnen; denn sie wissen nicht, was sie tun. Und sie teilten seine Kleider unter sich, das Los darüber werfend. Und das Volk stand da und schaute zu. Und die Vorsteher verlachten ihn mit ihnen, und sprachen: Anderen hat er geholfen, er helfe sich selbst, wenn er Christus, der Auserwählte Gottes ist! Es verspotteten ihn aber auch die Soldaten, welche hinzutraten, ihm Essig reichten, und sprachen: Bist du der König der Juden, so hilf dir! Es war aber auch die Aufschrift über ihm geschrieben in griechischer, lateinischer und hebräischer Schrift: Dies ist der König der Juden. Einer aber von den Übeltätern, die am Kreuze hingen, lästerte ihn, und sprach: Wenn du Christus bist, so hilf dir selber und uns! Da antwortete der andere, verwies es ihm, und sprach: Fürchtest auch du Gott nicht, da du doch dieselbe Strafe erleidest? Und wir zwar mit Recht, denn wir empfangen, was unsere Taten verdient haben; dieser aber hat nichts Böses getan. Und er sprach zu Jesus: Herr! gedenke meiner, wenn du in dein Reich kommst. Jesus sprach zu ihm: Wahrlich, ich sage dir, heute wirst du mit mir im Paradiese sein! Es war aber um die sechste Stunde, da ward eine Finsternis über die ganze Erde bis zur neunten Stunde. Die Sonne verfinsterte sich, und der Vorhang des Tempels riss mitten entzwei. Und Jesus rief mit lauter Stimme, und sprach: Vater, in deine Hände empfehle ich meinen Geist. Und indem er dies sagte, verschied er.»", + "verseData": { + "book": "Lukas", + "chapter": 23, + "verses": [ + { + "verse": 33, + "text": "Und als sie an den Ort kamen, den man Schädelstätte heißt, kreuzigten sie ihn daselbst, und die Räuber, den einen zur Rechten, und den andern zur Linken." + }, + { + "verse": 34, + "text": "Jesus aber sprach: Vater! vergib ihnen; denn sie wissen nicht, was sie tun. Und sie teilten seine Kleider unter sich, das Los darüber werfend." + }, + { + "verse": 35, + "text": "Und das Volk stand da und schaute zu. Und die Vorsteher verlachten ihn mit ihnen, und sprachen: Anderen hat er geholfen, er helfe sich selbst, wenn er Christus, der Auserwählte Gottes ist!" + }, + { + "verse": 36, + "text": "Es verspotteten ihn aber auch die Soldaten, welche hinzutraten, ihm Essig reichten," + }, + { + "verse": 37, + "text": "und sprachen: Bist du der König der Juden, so hilf dir!" + }, + { + "verse": 38, + "text": "Es war aber auch die Aufschrift über ihm geschrieben in griechischer, lateinischer und hebräischer Schrift: Dies ist der König der Juden." + }, + { + "verse": 39, + "text": "Einer aber von den Übeltätern, die am Kreuze hingen, lästerte ihn, und sprach: Wenn du Christus bist, so hilf dir selber und uns!" + }, + { + "verse": 40, + "text": "Da antwortete der andere, verwies es ihm, und sprach: Fürchtest auch du Gott nicht, da du doch dieselbe Strafe erleidest?" + }, + { + "verse": 41, + "text": "Und wir zwar mit Recht, denn wir empfangen, was unsere Taten verdient haben; dieser aber hat nichts Böses getan." + }, + { + "verse": 42, + "text": "Und er sprach zu Jesus: Herr! gedenke meiner, wenn du in dein Reich kommst." + }, + { + "verse": 43, + "text": "Jesus sprach zu ihm: Wahrlich, ich sage dir, heute wirst du mit mir im Paradiese sein!" + }, + { + "verse": 44, + "text": "Es war aber um die sechste Stunde, da ward eine Finsternis über die ganze Erde bis zur neunten Stunde." + }, + { + "verse": 45, + "text": "Die Sonne verfinsterte sich, und der Vorhang des Tempels riss mitten entzwei." + }, + { + "verse": 46, + "text": "Und Jesus rief mit lauter Stimme, und sprach: Vater, in deine Hände empfehle ich meinen Geist. Und indem er dies sagte, verschied er." + } + ] + } + } + ], + "glorreichen": [ + { + "title": "Das erste glorreiche Geheimnis: Die Auferstehung Jesu.", + "reference": "Lk 24, 1-6", + "text": "«Am ersten Tage der Woche aber kamen sie am frühesten Morgen zum Grabe, und brachten die Spezereien, welche sie bereitet hatten. Da fanden sie den Stein vom Grabe weggewälzt. Und sie gingen hinein, fanden aber den Leib des Herrn Jesus nicht. Und es geschah, während sie im Gemüte darüber bestürzt waren, siehe, standen zwei Männer in glänzenden Kleidern neben ihnen. Da sie nun erschracken, und ihr Angesicht zur Erde senkten, sprachen jene zu ihnen: Was suchet ihr den Lebenden bei den Toten? Er ist nicht hier, sondern ist auferstanden. Erinnert euch, wie er zu euch geredet hat, als er noch in Galiläa war,»", + "verseData": { + "book": "Lukas", + "chapter": 24, + "verses": [ + { + "verse": 1, + "text": "Am ersten Tage der Woche aber kamen sie am frühesten Morgen zum Grabe, und brachten die Spezereien, welche sie bereitet hatten." + }, + { + "verse": 2, + "text": "Da fanden sie den Stein vom Grabe weggewälzt." + }, + { + "verse": 3, + "text": "Und sie gingen hinein, fanden aber den Leib des Herrn Jesus nicht." + }, + { + "verse": 4, + "text": "Und es geschah, während sie im Gemüte darüber bestürzt waren, siehe, standen zwei Männer in glänzenden Kleidern neben ihnen." + }, + { + "verse": 5, + "text": "Da sie nun erschracken, und ihr Angesicht zur Erde senkten, sprachen jene zu ihnen: Was suchet ihr den Lebenden bei den Toten?" + }, + { + "verse": 6, + "text": "Er ist nicht hier, sondern ist auferstanden. Erinnert euch, wie er zu euch geredet hat, als er noch in Galiläa war," + } + ] + } + }, + { + "title": "Das zweite glorreiche Geheimnis: Die Himmerfahrt Jesu.", + "reference": "Mk 16, 19", + "text": "«Und nachdem der Herr Jesus zu ihnen gesprochen hatte, ward er in den Himmel aufgenommen, und sitzet zur Rechten Gottes.»", + "verseData": { + "book": "Markus", + "chapter": 16, + "verses": [ + { + "verse": 19, + "text": "Und nachdem der Herr Jesus zu ihnen gesprochen hatte, ward er in den Himmel aufgenommen, und sitzet zur Rechten Gottes." + } + ] + } + }, + { + "title": "Das dritte glorreiche Geheimnis: Die Herabkunft des Heiligen Geistes im Abendmahlssaal.", + "reference": "Apg 2, 1-4", + "text": "«Als der Tag des Pfingstfestes gekommen war, waren alle einmütig an demselben Orte. Da entstand plötzlich vom Himmel herab ein Brausen, gleich dem eines daherfahrenden gewaltigen Windes, und erfüllte das ganze Haus, wo sie saßen. Und es erschienen ihnen zerteilte Zungen wie von Feuer, und es ließ sich auf einen jeden von ihnen nieder. Und es wurden alle mit dem Heiligen Geiste erfüllet, und fingen an, in verschiedenen Sprachen zu reden, so wie der Heilige Geist ihnen verlieh auszusprechen.»", + "verseData": { + "book": "Apostelgeschichte", + "chapter": 2, + "verses": [ + { + "verse": 1, + "text": "Als der Tag des Pfingstfestes gekommen war, waren alle einmütig an demselben Orte." + }, + { + "verse": 2, + "text": "Da entstand plötzlich vom Himmel herab ein Brausen, gleich dem eines daherfahrenden gewaltigen Windes, und erfüllte das ganze Haus, wo sie saßen." + }, + { + "verse": 3, + "text": "Und es erschienen ihnen zerteilte Zungen wie von Feuer, und es ließ sich auf einen jeden von ihnen nieder." + }, + { + "verse": 4, + "text": "Und es wurden alle mit dem Heiligen Geiste erfüllet, und fingen an, in verschiedenen Sprachen zu reden, so wie der Heilige Geist ihnen verlieh auszusprechen." + } + ] + } + }, + { + "title": "Das vierte glorreiche Geheimnis: Die Aufnahme Marias in den Himmel.", + "reference": "Lk 1, 48-49", + "text": "«Weil er die Niedrigkeit seiner Magd angesehen hat; denn siehe, von nun an werden mich selig preisen alle Geschlechter. Denn Großes hat an mir getan, der mächtig, und dessen Name heilig ist!»", + "verseData": { + "book": "Lukas", + "chapter": 1, + "verses": [ + { + "verse": 48, + "text": "Weil er die Niedrigkeit seiner Magd angesehen hat; denn siehe, von nun an werden mich selig preisen alle Geschlechter." + }, + { + "verse": 49, + "text": "Denn Großes hat an mir getan, der mächtig, und dessen Name heilig ist!" + } + ] + } + }, + { + "title": "Das fünfte glorreiche Geheimnis: Die Krönung Marias zur Königin des Himmels und der Erde.", + "reference": "Offb 12, 1", + "text": "«Und es erschien ein großes Zeichen im Himmel: Ein Weib mit der Sonne bekleidet, den Mond unter ihren Füßen, und auf ihrem Haupte eine Krone von zwölf Sternen.»", + "verseData": { + "book": "Offenbarung", + "chapter": 12, + "verses": [ + { + "verse": 1, + "text": "Und es erschien ein großes Zeichen im Himmel: Ein Weib mit der Sonne bekleidet, den Mond unter ihren Füßen, und auf ihrem Haupte eine Krone von zwölf Sternen." + } + ] + } + } + ] +}; diff --git a/src/lib/server/bible.ts b/src/lib/server/bible.ts new file mode 100644 index 0000000..06c265b --- /dev/null +++ b/src/lib/server/bible.ts @@ -0,0 +1,88 @@ +import { readFileSync } from 'fs'; +import { resolve } from 'path'; + +export interface BibleVerse { + bookName: string; + abbreviation: string; + bookNumber: number; + chapter: number; + verseNumber: number; + text: string; +} + +let cachedVerses: BibleVerse[] | null = null; + +export function loadVersesFromFile(tsvPath?: string): BibleVerse[] { + if (cachedVerses) return cachedVerses; + + const filePath = tsvPath ?? resolve('static/allioli.tsv'); + const content = readFileSync(filePath, 'utf-8'); + const lines = content.trim().split('\n'); + + cachedVerses = lines.map((line) => { + const [bookName, abbreviation, bookNumber, chapter, verseNumber, text] = line.split('\t'); + return { + bookName, + abbreviation, + bookNumber: parseInt(bookNumber), + chapter: parseInt(chapter), + verseNumber: parseInt(verseNumber), + text + }; + }); + + return cachedVerses; +} + +function parseReference(reference: string) { + const match = reference.match( + /^([A-Za-zäöüÄÖÜß]+)\s*(\d+)[\s,:]+(\d+)(?:[-:](\d+))?$/ + ); + if (!match) return null; + + const [, bookRef, chapterStr, startVerseStr, endVerseStr] = match; + + return { + bookRef, + isFullName: bookRef.length > 5, + chapter: parseInt(chapterStr), + startVerse: parseInt(startVerseStr), + endVerse: endVerseStr ? parseInt(endVerseStr) : parseInt(startVerseStr) + }; +} + +export function getVersesByReference( + verses: BibleVerse[], + reference: string +): BibleVerse[] { + const parsed = parseReference(reference); + if (!parsed) return []; + + return verses.filter((v) => { + const bookMatches = parsed.isFullName + ? v.bookName === parsed.bookRef + : v.abbreviation === parsed.bookRef; + + return ( + bookMatches && + v.chapter === parsed.chapter && + v.verseNumber >= parsed.startVerse && + v.verseNumber <= parsed.endVerse + ); + }); +} + +export function lookupReference(reference: string, tsvPath?: string) { + const verses = loadVersesFromFile(tsvPath); + const matched = getVersesByReference(verses, reference); + + if (matched.length === 0) return null; + + const first = matched[0]; + return { + reference, + book: first.bookName, + chapter: first.chapter, + verses: matched.map((v) => ({ verse: v.verseNumber, text: v.text })) + }; +} diff --git a/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.server.ts b/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.server.ts index a92799c..efe24c1 100644 --- a/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.server.ts +++ b/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.server.ts @@ -1,71 +1,14 @@ -import { mysteryReferences, type MysteryDescription, type VerseData } from '$lib/data/mysteryDescriptions'; +import { mysteryVerseData } from '$lib/data/mysteryVerseData'; import type { PageServerLoad } from './$types'; -// TODO: allow prerendering/fetching of bible verses at compile time while keeping the rest dynamic. -// export const prerender = true; # breaks user logged-in state - interface StreakData { length: number; lastPrayed: string | null; } -async function fetchBibleData(reference: string, fetch: typeof globalThis.fetch): Promise<{ text: string; verseData: VerseData | null }> { - try { - const response = await fetch(`/api/glaube/bibel/${encodeURIComponent(reference)}`); - if (!response.ok) { - console.error(`Failed to fetch reference ${reference}:`, response.status); - return { text: '', verseData: null }; - } - const data = await response.json(); - - // Format the verses into a single text with guillemets - let text = ''; - if (data.verses && data.verses.length > 0) { - text = `«${data.verses.map((v: { verse: number; text: string }) => v.text).join(' ')}»`; - } - - // Store the full verse data for the modal - const verseData: VerseData = { - book: data.book, - chapter: data.chapter, - verses: data.verses - }; - - return { text, verseData }; - } catch (err) { - console.error(`Error fetching reference ${reference}:`, err); - return { text: '', verseData: null }; - } -} - export const load: PageServerLoad = async ({ fetch, locals }) => { const session = await locals.auth(); - // Fetch Bible texts for all mysteries at build time - const mysteryDescriptions: Record = { - lichtreichen: [], - freudenreich: [], - schmerzhaften: [], - glorreichen: [] - }; - - // Process each mystery type - for (const [mysteryType, references] of Object.entries(mysteryReferences)) { - const descriptions: MysteryDescription[] = []; - - for (const ref of references) { - const { text, verseData } = await fetchBibleData(ref.reference, fetch); - descriptions.push({ - title: ref.title, - reference: ref.reference, - text, - verseData - }); - } - - mysteryDescriptions[mysteryType] = descriptions; - } - // Fetch streak data for logged-in users via API route let streakData: StreakData | null = null; if (session?.user?.nickname) { @@ -80,7 +23,7 @@ export const load: PageServerLoad = async ({ fetch, locals }) => { } return { - mysteryDescriptions, + mysteryDescriptions: mysteryVerseData, streakData }; }; diff --git a/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.svelte b/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.svelte index 7ec9606..1f0a876 100644 --- a/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.svelte +++ b/src/routes/[faithLang=faithLang]/[rosary=rosaryLang]/+page.svelte @@ -18,6 +18,7 @@ import BibleModal from "$lib/components/BibleModal.svelte"; import Toggle from "$lib/components/Toggle.svelte"; import LanguageToggle from "$lib/components/LanguageToggle.svelte"; import StreakCounter from "$lib/components/StreakCounter.svelte"; +import MysteryIcon from "$lib/components/MysteryIcon.svelte"; let { data } = $props(); @@ -1089,24 +1090,6 @@ h1 { .mystery-button:hover, .mystery-button.selected { background: var(--nord4); } -.mystery-button svg { - width: 80px; - height: 80px; - fill: var(--nord4); - transition: fill 0.3s ease; -} - -@media(prefers-color-scheme: light) { - .mystery-button svg { - fill: var(--nord0); - } -} - -.mystery-button.selected svg, -.mystery-button:hover svg -{ - fill: var(--nord10); -} .mystery-button h3 { margin: 0; @@ -1256,14 +1239,7 @@ h1 { {#if todaysMystery === 'freudenreich'} {labels.today} {/if} - - - - - - - - +

{labels.joyful}

@@ -1275,9 +1251,7 @@ h1 { {#if todaysMystery === 'schmerzhaften'} {labels.today} {/if} - - - +

{labels.sorrowful}

@@ -1289,17 +1263,7 @@ h1 { {#if todaysMystery === 'glorreichen'} {labels.today} {/if} - - - +

{labels.glorious}

@@ -1312,13 +1276,7 @@ q0 -31 22 -54.5t52 -23.5q31 0 52.5 23.5t21.5 54.5zM596 888q0 34 -34 34q-30 0 -30 {#if todaysMystery === 'lichtreichen'} {labels.today} {/if} - - - +

{labels.luminous}

diff --git a/src/routes/[faithLang=faithLang]/angelus/+page.svelte b/src/routes/[faithLang=faithLang]/angelus/+page.svelte index 3436016..824f459 100644 --- a/src/routes/[faithLang=faithLang]/angelus/+page.svelte +++ b/src/routes/[faithLang=faithLang]/angelus/+page.svelte @@ -31,15 +31,17 @@
+ {#snippet children(showLatin, urlLang)}

- ℣. Angelus Domini nuntiavit Mariæ. - ℣. Der Engel des Herrn brachte Maria die Botschaft - ℣. The Angel of the Lord declared unto Mary. - ℟. Et concepit de Spiritu Sancto. - ℟. und sie empfing vom Heiligen Geist. - ℟. And she conceived of the Holy Spirit. + {#if showLatin}℣. Angelus Domini nuntiavit Mariæ.{/if} + {#if urlLang === 'de'}℣. Der Engel des Herrn brachte Maria die Botschaft{/if} + {#if urlLang === 'en'}℣. The Angel of the Lord declared unto Mary.{/if} + {#if showLatin}℟. Et concepit de Spiritu Sancto.{/if} + {#if urlLang === 'de'}℟. und sie empfing vom Heiligen Geist.{/if} + {#if urlLang === 'en'}℟. And she conceived of the Holy Spirit.{/if}

+ {/snippet}
@@ -49,15 +51,17 @@
+ {#snippet children(showLatin, urlLang)}

- ℣. Ecce ancilla Domini, - ℣. Maria sprach: Siehe, ich bin die Magd des Herrn - ℣. Behold the handmaid of the Lord. - ℟. Fiat mihi secundum verbum tuum. - ℟. mir geschehe nach Deinem Wort. - ℟. Be it done unto me according to thy word. + {#if showLatin}℣. Ecce ancilla Domini,{/if} + {#if urlLang === 'de'}℣. Maria sprach: Siehe, ich bin die Magd des Herrn{/if} + {#if urlLang === 'en'}℣. Behold the handmaid of the Lord.{/if} + {#if showLatin}℟. Fiat mihi secundum verbum tuum.{/if} + {#if urlLang === 'de'}℟. mir geschehe nach Deinem Wort.{/if} + {#if urlLang === 'en'}℟. Be it done unto me according to thy word.{/if}

+ {/snippet}
@@ -67,15 +71,17 @@
+ {#snippet children(showLatin, urlLang)}

- ℣. Et Verbum caro factum est, - ℣. Und das Wort ist Fleisch geworden - ℣. And the Word was made flesh. - ℟. Et habitavit in nobis. - ℟. und hat unter uns gewohnt. - ℟. And dwelt among us. + {#if showLatin}℣. Et Verbum caro factum est,{/if} + {#if urlLang === 'de'}℣. Und das Wort ist Fleisch geworden{/if} + {#if urlLang === 'en'}℣. And the Word was made flesh.{/if} + {#if showLatin}℟. Et habitavit in nobis.{/if} + {#if urlLang === 'de'}℟. und hat unter uns gewohnt.{/if} + {#if urlLang === 'en'}℟. And dwelt among us.{/if}

+ {/snippet}
@@ -85,64 +91,68 @@
+ {#snippet children(showLatin, urlLang)}

- ℣. Ora pro nobis, sancta Dei Genetrix, - ℣. Bitte für uns Heilige Gottesmutter - ℣. Pray for us, O holy Mother of God. - ℟. Ut digni efficiamur promissionibus Christi. - ℟. auf dass wir würdig werden der Verheißungen Christi. - ℟. That we may be made worthy of the promises of Christ. + {#if showLatin}℣. Ora pro nobis, sancta Dei Genetrix,{/if} + {#if urlLang === 'de'}℣. Bitte für uns Heilige Gottesmutter{/if} + {#if urlLang === 'en'}℣. Pray for us, O holy Mother of God.{/if} + {#if showLatin}℟. Ut digni efficiamur promissionibus Christi.{/if} + {#if urlLang === 'de'}℟. auf dass wir würdig werden der Verheißungen Christi.{/if} + {#if urlLang === 'en'}℟. That we may be made worthy of the promises of Christ.{/if}

+ {/snippet}
+ {#snippet children(showLatin, urlLang)}

- ℣. Oremus. - ℣. Lasset uns beten. - ℣. Let us pray: + {#if showLatin}℣. Oremus.{/if} + {#if urlLang === 'de'}℣. Lasset uns beten.{/if} + {#if urlLang === 'en'}℣. Let us pray:{/if}

- + {#if showLatin} Gratiam tuam, quaesumus, Domine, mentibus nostris infunde; - - + {/if} + {#if urlLang === 'de'} Allmächtiger Gott, gieße deine Gnade in unsere Herzen ein. - - + {/if} + {#if urlLang === 'en'} Pour forth, we beseech Thee, O Lord, Thy grace into our hearts, - - + {/if} + {#if showLatin} ut qui, Angelo nuntiante, Christi Filii tui incarnationem cognovimus, - - + {/if} + {#if urlLang === 'de'} Durch die Botschaft des Engels haben wir die Menschwerdung Christi, deines Sohnes, erkannt. - - + {/if} + {#if urlLang === 'en'} that we to whom the Incarnation of Christ Thy Son was made known by the message of an angel, - - + {/if} + {#if showLatin} per passionem eius et crucem ad resurrectionis gloriam perducamur. - - + {/if} + {#if urlLang === 'de'} Lass uns durch sein Leiden und Kreuz zur Herrlichkeit der Auferstehung gelangen. - - + {/if} + {#if urlLang === 'en'} may by His Passion and Cross be brought to the glory of His Resurrection. - - + {/if} + {#if showLatin} Per eumdem Christum Dominum nostrum. Amen. - - + {/if} + {#if urlLang === 'de'} Darum bitten wir durch Christus, unseren Herrn. Amen. - - + {/if} + {#if urlLang === 'en'} Through the same Christ Our Lord. Amen. - + {/if}

+ {/snippet}
@@ -155,15 +165,6 @@ padding: 2rem 1rem; } - .header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 2rem; - flex-wrap: wrap; - gap: 1rem; - } - h1 { color: var(--nord6); margin: 0; @@ -175,19 +176,6 @@ } } - .controls { - display: flex; - gap: 1rem; - align-items: center; - flex-wrap: wrap; - } - - @media (max-width: 600px) { - .header { - flex-direction: column; - align-items: flex-start; - } - } .prayer-section { scroll-snap-align: start; padding: 2rem; diff --git a/src/routes/api/glaube/bibel/[reference]/+server.ts b/src/routes/api/glaube/bibel/[reference]/+server.ts index 611c8bf..c1d60dd 100644 --- a/src/routes/api/glaube/bibel/[reference]/+server.ts +++ b/src/routes/api/glaube/bibel/[reference]/+server.ts @@ -1,94 +1,8 @@ import { json, error } from '@sveltejs/kit'; import type { RequestHandler } from './$types'; +import { lookupReference } from '$lib/server/bible'; -interface BibleVerse { - bookName: string; - abbreviation: string; - bookNumber: number; - chapter: number; - verseNumber: number; - text: string; -} - -// Cache for parsed verses to avoid reading file repeatedly -let cachedVerses: BibleVerse[] | null = null; - -async function loadVerses(fetch: typeof globalThis.fetch): Promise { - if (cachedVerses) { - return cachedVerses; - } - - try { - const response = await fetch('/allioli.tsv'); - 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 [bookName, abbreviation, bookNumber, chapter, verseNumber, text] = line.split('\t'); - return { - bookName, - abbreviation, - bookNumber: parseInt(bookNumber), - chapter: parseInt(chapter), - verseNumber: parseInt(verseNumber), - text - }; - }); - - return cachedVerses; - } catch (err) { - console.error('Error loading Bible verses:', err); - throw new Error('Failed to load Bible verses'); - } -} - -function parseReference(reference: string): { bookRef: string; isFullName: boolean; chapter: number; startVerse: number; endVerse: number } | null { - // Parse various reference formats: - // "Mt 3, 16-17", "Mt3:16-17", "Mt 3:16-17", "Lk1:3", "Matthäus 3, 16-17" - // Match book name (letters and umlauts), optional space, chapter, separator (: or ,), optional space, verse(s) - const match = reference.match(/^([A-Za-zäöüÄÖÜß]+)\s*(\d+)[\s,:]+(\d+)(?:[-:](\d+))?$/); - if (!match) { - return null; - } - - const [, bookRef, chapterStr, startVerseStr, endVerseStr] = match; - - // If book reference is longer than 5 characters, assume it's a full name - // Otherwise, assume it's an abbreviation - const isFullName = bookRef.length > 5; - - return { - bookRef, - isFullName, - chapter: parseInt(chapterStr), - startVerse: parseInt(startVerseStr), - endVerse: endVerseStr ? parseInt(endVerseStr) : parseInt(startVerseStr) - }; -} - -function getVersesByReference(verses: BibleVerse[], reference: string): BibleVerse[] { - const parsed = parseReference(reference); - if (!parsed) { - return []; - } - - return verses.filter(v => { - // Match based on whether we're using full name or abbreviation - const bookMatches = parsed.isFullName - ? v.bookName === parsed.bookRef - : v.abbreviation === parsed.bookRef; - - return bookMatches && - v.chapter === parsed.chapter && - v.verseNumber >= parsed.startVerse && - v.verseNumber <= parsed.endVerse; - }); -} - -export const GET: RequestHandler = async ({ params, fetch }) => { +export const GET: RequestHandler = async ({ params }) => { const reference = params.reference; if (!reference) { @@ -96,25 +10,13 @@ export const GET: RequestHandler = async ({ params, fetch }) => { } try { - const verses = await loadVerses(fetch); - const matchedVerses = getVersesByReference(verses, reference); + const result = lookupReference(reference); - if (matchedVerses.length === 0) { + if (!result) { return error(404, 'No verses found for the given reference'); } - // Extract book and chapter from first verse (they're all the same) - const firstVerse = matchedVerses[0]; - - return json({ - reference, - book: firstVerse.bookName, - chapter: firstVerse.chapter, - verses: matchedVerses.map(v => ({ - verse: v.verseNumber, - text: v.text - })) - }); + return json(result); } catch (err) { console.error('Error fetching Bible verses:', err); return error(500, 'Failed to fetch Bible verses');