i18n(faith): migrate prayers index + prayer detail

Adds prayer-name keys (sign_of_cross, pater_noster, fatima_prayer, …),
search/filter UI labels (search_prayers, clear_search, filter_by_category,
all_categories), the eastertide_badge, and the prayer-detail-only
nicene_creed / hail_mary aliases (German + Latin keep the Latin form,
English uses the English name).

Prayers index labels object collapses each name ternary into a t.foo
lookup; the language-invariant ones (Glória Patri, Credo, Ave Maria,
Salve Regina, Glória, Ánima Christi, Tantum Ergo, Angelus, Regína Cæli)
stay hardcoded as single strings since they're identical across all
three locales. The baseUrl building now uses faithSlugFromLang/prayersSlug
helpers instead of inline ternaries.

Prayer detail's prayerDefs routing table — every name field that was
isEnglish ? a : b now points at a t.* lookup. Painting captions for
the Velázquez/Murillo Angelus/Regina Cæli backgrounds become
t.painting_coronation_virgin / t.painting_annunciation. The
AngelusStreakCounter call site drops its three-way ternary in favor of
the typed `lang` derived value.

Slug-table ternaries (URL slug per locale) and the long gloriaIntro
paragraph are intentionally left inline — slugs are URL data, not UI
text, and gloriaIntro is page-unique marketing copy that doesn't
benefit from being in a shared dict.
This commit is contained in:
2026-05-01 13:16:47 +02:00
parent 3dcb5c7f2b
commit d7f96f35c2
6 changed files with 153 additions and 62 deletions
+29 -1
View File
@@ -41,5 +41,33 @@ export const de = {
// Language-availability notice (catechesis is German-only)
only_german_pre: 'Diese Katechese ist nur auf ',
only_german_link: 'Deutsch',
only_german_post: ' verfügbar.'
only_german_post: ' verfügbar.',
// Prayers index
prayers_description: 'Katholische Gebete auf Deutsch und Latein.',
sign_of_cross: 'Das heilige Kreuzzeichen',
pater_noster: 'Paternoster',
fatima_prayer: 'Das Fatimagebet',
st_michael_prayer: 'Gebet zum hl. Erzengel Michael',
bruder_klaus_prayer: 'Bruder Klaus Gebet',
st_joseph_prayer: 'Josephgebet des hl. Papst Pius X',
the_confiteor: 'Das Confiteor',
postcommunio_prayers: 'Nachkommuniongebete',
prayer_before_crucifix: 'Gebet vor einem Kruzifix',
guardian_angel_prayer: 'Schutzengel-Gebet',
apostles_creed: 'Apostolisches Glaubensbekenntnis',
search_prayers: 'Gebete suchen…',
clear_search: 'Suche löschen',
text_match: 'Treffer im Gebetstext',
filter_by_category: 'Nach Kategorie filtern',
all_categories: 'Alle',
eastertide_badge: 'Osterzeit',
// Prayer detail page — alternate names for credo/aveMaria (English differs)
nicene_creed: 'Credo',
hail_mary: 'Ave Maria',
// Painting titles on the prayer detail page
painting_coronation_virgin: 'Die Krönung der Jungfrau',
painting_annunciation: 'Die Verkündigung'
} as const;
+29 -1
View File
@@ -41,5 +41,33 @@ export const en = {
// Language-availability notice (catechesis is German-only)
only_german_pre: 'This catechesis is only available in ',
only_german_link: 'German',
only_german_post: '.'
only_german_post: '.',
// Prayers index
prayers_description: 'Catholic prayers in Latin and English.',
sign_of_cross: 'The Sign of the Cross',
pater_noster: 'Our Father',
fatima_prayer: 'Fatima Prayer',
st_michael_prayer: 'Prayer to St. Michael the Archangel',
bruder_klaus_prayer: 'Prayer of St. Nicholas of Flüe',
st_joseph_prayer: 'Prayer to St. Joseph by Pope St. Pius X',
the_confiteor: 'The Confiteor',
postcommunio_prayers: 'Postcommunio Prayers',
prayer_before_crucifix: 'Prayer Before a Crucifix',
guardian_angel_prayer: 'Guardian Angel Prayer',
apostles_creed: "Apostles' Creed",
search_prayers: 'Search prayers…',
clear_search: 'Clear search',
text_match: 'Match in prayer text',
filter_by_category: 'Filter by category',
all_categories: 'All',
eastertide_badge: 'Eastertide',
// Prayer detail page
nicene_creed: 'Nicene Creed',
hail_mary: 'Hail Mary',
// Painting titles
painting_coronation_virgin: 'Coronation of the Virgin',
painting_annunciation: 'The Annunciation'
} as const satisfies Record<keyof typeof de, string>;
+29 -1
View File
@@ -41,5 +41,33 @@ export const la = {
// Language-availability notice (catechesis is German-only)
only_german_pre: 'Haec catechesis tantum in ',
only_german_link: 'lingua Germanica',
only_german_post: ' praesto est.'
only_german_post: ' praesto est.',
// Prayers index
prayers_description: 'Orationes catholicae in lingua Latina.',
sign_of_cross: 'Signum Crucis',
pater_noster: 'Pater Noster',
fatima_prayer: 'Oratio Fatimensis',
st_michael_prayer: 'Oratio ad S. Michaëlem Archangelum',
bruder_klaus_prayer: 'Oratio S. Nicolai de Flüe',
st_joseph_prayer: 'Oratio S. Iosephi a S. Papa Pio X',
the_confiteor: 'Confiteor',
postcommunio_prayers: 'Orationes post Communionem',
prayer_before_crucifix: 'Oratio ante Crucifixum',
guardian_angel_prayer: 'Angele Dei',
apostles_creed: 'Symbolum Apostolorum',
search_prayers: 'Orationes quaerere…',
clear_search: 'Quaestionem delere',
text_match: 'In textu orationis',
filter_by_category: 'Filtrare per categoriam',
all_categories: 'Omnia',
eastertide_badge: 'Tempus Paschale',
// Prayer detail page — Latin uses the Latin form invariantly
nicene_creed: 'Credo',
hail_mary: 'Ave Maria',
// Painting titles — Latin reuses German fallback
painting_coronation_virgin: 'Die Krönung der Jungfrau',
painting_annunciation: 'Die Verkündigung'
} as const satisfies Record<keyof typeof de, string>;