Problem: The Matthew Henry and John Gill commentaries are in English. Dutch-speaking users who prefer a Dutch UI would also prefer Dutch commentary text. While the Kanttekeningen are already in Dutch, the two English sources need translation.
Solution: An AI-powered translation pipeline using Claude Haiku to translate all English commentary entries to Dutch. The translations are stored in the existing text_nl column of the commentaries table. The commentary drawer already supports showing Dutch text when available.
Not included: Human-reviewed translations or professional translation services. These are AI-generated translations meant to provide accessible Dutch commentary — not publication-quality translations.
When the UI is set to Dutch and Dutch commentary translations are available, the commentary drawer shows the Dutch text instead of English. If a Dutch translation is not yet available for a verse, it shows the English text with a note "(Alleen beschikbaar in het Engels)".
User flow (after translations are run):
Current state:
text_nl column exists but is empty — 0 out of 57,646 rows have been translatedNo new UI needed — the CommentaryDrawer already handles the textNl field:
lang === 'nl' and textNl exists → shows Dutch textlang === 'nl' and textNl is null → shows English with fallback noteNote about Kanttekeningen: The text column for Kanttekeningen already contains Dutch (it's a Dutch commentary). Running the translation script on Kanttekeningen entries would be redundant.
Database:
commentaries.text_nl (TEXT, nullable) — added via scripts/migrate-commentary-nl.sqltext_nl = NULLTranslation script: scripts/translate-commentaries.ts
claude-haiku-4-5-20251001) via Anthropic SDKWHERE text_nl IS NULL — can be stopped and restarted safelyVolumes by source:
| Source | Entries | Notes |
|---|---|---|
| John Gill | 28,300 | English → Dutch translation needed |
| Kanttekeningen | 25,223 | Already Dutch — translation redundant |
| Matthew Henry | 4,123 | English → Dutch translation needed |
Effective translation needed: ~32,423 entries (excluding Kanttekeningen)
Frontend handling (CommentaryDrawer.svelte):
textNl when lang === 'nl'Files:
scripts/migrate-commentary-nl.sql — column migration (already run)scripts/translate-commentaries.ts — Claude Haiku translation script (built, not run)apps/web/src/lib/components/bible/CommentaryDrawer.svelte — already handles text_nlCurrent: IN_PROGRESS Milestone: v2 Priority: Medium — enhances Dutch user experience
What's done:
text_nl column added to commentaries tableWhat remains:
History:
text_nl column was added as part of the Dutch localization initiativeDependencies: