Problem: Bilingual users and Bible students often want to compare the English and Dutch texts verse by verse. Switching back and forth between language modes is cumbersome — they want to see both at once.
Solution: A three-way toggle (EN / NL / Both) that lets users view English only, Dutch only, or both translations displayed together verse by verse. In "Both" mode, each verse shows the BSB text on one line and the Statenvertaling below in italics.
Not included: Side-by-side column layout (like a parallel Bible with two columns). The "Both" mode is vertically stacked — English on top, Dutch below, for each verse.
In the reader's navigation bar, three buttons let you choose your translation mode. "Both" mode shows every verse twice — first in English, then in Dutch italics below.
User flow:
T to cycle through EN → NL → Both → ENWhere it works:
Edge cases:
Toggle buttons (in ChapterNav):
Both mode rendering:
var(--color-description) (muted/secondary color)<div> (not inline <span> as in single-language mode)Keyboard shortcut: T key cycles through modes (shown in keyboard help overlay)
State: translationMode: 'en' | 'nl' | 'both' — local $state on each page component, initialized from settings.language (so Dutch-UI users default to NL mode).
Rendering logic (VerseText.svelte):
en or nl): renders one inline <span> with primaryText (which is nlText for NL, enText for EN)<div> blocks — first with verse.text (BSB), second with verse.textNl ?? verse.text in italic --color-description stylingToggle UI (ChapterNav.svelte):
lang-pill buttons emitting ontranslationchange eventcycleTranslationMode() function in the read page cycles through ['en', 'nl', 'both'] on T key pressParallel Gospels (ParallelVerseView.svelte):
{#if translationMode === 'both'} renders .gospel-verse__text-wrap with both texts.gospel-verse__text--nl class (italic, muted)Files:
apps/web/src/lib/components/bible/VerseText.svelte — primary dual render logicapps/web/src/lib/components/bible/VerseList.svelte — passes translationMode to VerseTextapps/web/src/lib/components/bible/ChapterNav.svelte — EN/NL/Both toggle buttonsapps/web/src/lib/components/bible/ParallelVerseView.svelte — parallel gospel dual renderapps/web/src/routes/(app)/read/[[book]]/[[chapter]]/+page.svelte — translationMode state, T shortcutCurrent: DONE Milestone: Foundation (pre-v1) Priority: Core — essential for bilingual users
History:
T keyboard shortcut was added for power users who switch frequentlyDependencies: