Problem: BibleWeb targets both English and Dutch-speaking users. Dutch Bible readers need access to a classical, trusted Dutch translation alongside the English BSB.
Solution: The Statenvertaling (SV, 1637) is included as the built-in Dutch translation. It is the oldest and most well-known Dutch Bible translation — the Dutch equivalent of the King James Version. Historically the standard reference Bible in the Netherlands, it remains widely used by Reformed and Protestant communities.
Not included: Modern Dutch translations (NBV, HSV, NBG) — those would require the external translations infrastructure and separate licensing.
Users can switch to Dutch text using the NL button in the reader's translation toggle. The Statenvertaling text appears in the same reading layout as the English BSB. In "Both" mode, the Dutch text appears as a second line below each English verse, displayed in italics.
User flow:
Edge cases:
text_nl as NULL (missing SV text) — the app falls back to BSB English textsv_gloss) on Greek words were generated by AI alignment (Claude Sonnet)Translation toggle (in ChapterNav):
Both mode styling:
var(--color-description) (muted color)Data storage:
verses.text_nl (TEXT, nullable) — stored directly on the same verse row as BSB text (denormalized)bible_translations table, id=2, code='SV', language='nl', isDefault=falseverse_texts (translation_id=2) via migration for full-text search indexingQuery optimization:
getVersesByChapter() short-circuits for 'SV' — returns verses rows directly, client reads verse.textNl instead of verse.textVerseText.svelte computes nlText = verse.textNl ?? verse.text (fallback to BSB if NL is missing)Word-level Dutch glosses:
greek_words.sv_gloss column stores per-word Statenvertaling alignmentsscripts/align-sv-glosses.ts using Claude Sonnet to map each Greek NT word to its SV equivalentDutch Strong's definitions:
strongs_greek has definition_nl, primary_gloss_nl, meanings_nl columns (5,503 entries)strongs_hebrewDutch search expansion:
expandDutchQuery() in dutch-synonyms.ts maps 14 key Bible terms to morphological OR groupsliefde → (liefde* OR liefheb* OR bemin* OR lieflijk*)Data source: Statenvertaling text imported into verses.text_nl at database build time. Migration migrate-verse-texts.ts copies it to verse_texts for FTS5 indexing.
Files:
packages/db/src/schema/bible.ts — verses.textNl, greekWords.svGloss, strongsGreek.definitionNlapps/web/src/lib/server/queries/verses.ts — SV short-circuit in getVersesByChapter()apps/web/src/lib/components/bible/VerseText.svelte — NL/Both rendering logicscripts/align-sv-glosses.ts — Claude Sonnet Greek→SV word alignmentscripts/migrate-verse-texts.ts — migration seeding verse_texts with SV rowsapps/web/src/lib/server/queries/dutch-synonyms.ts — Dutch FTS query expansionCurrent: DONE Milestone: Foundation (pre-v1) Priority: Core — essential for Dutch-speaking users
History:
text_nl column on verses (not in verse_texts) for performance — this was a deliberate denormalizationDependencies: