Why
The vision names English-speaking genealogists as an audience of the reading aid, and the site is German only: every UI string is a pre-i18n TS namespace under app/src/locales/de/, the routing knows no language prefix. Website audit 2026-08-29, item 8/8. Deferred by the owner on 2026-08-30 („englisch lassen wir erstmal weg") — this issue keeps the plan where it can be found.
Documented plan (docs/reference/frontend-stack.md §3, architektur.md §16)
react-i18next (not installed yet); lazy per-language bundles under locales/{de,en}/.
- URL prefix:
/de/… (default) and /en/…. Rejected: cookie-based switching (bad for shared links), a domain switch (hosting complexity).
- Order: the reading-aid UI first (Schriftkunde, the
/lesen hub, the quiz UI, the Lesart page), then the content pages (landing, glossary).
What it touches beyond that plan
- Prerender: one file per route AND language (
app/src/lib/seo/prerender.ts → app/prerender/), the sitemap with hreflang pairs, llms.txt, the API's /seo-proxy mapping, the nginx bot map (docs/reference/crawler-richtlinie.md); the drift test must cover both languages.
- SEO titles and H1s per language (the
locales/de/seo.ts rule: search term first).
- Terminology: the German domain terms (Sütterlin, Kurrent, Schräglage, Lesart, Vorlage …) stay untranslated per
sprachregelung.md; the English UI names each once and explains it.
- The Lesart page answers German words by nature — the English page explains the readings rather than translating them.
- The wire types (
app/src/lib/api/) are language-free; nothing changes in the API.
Definition of done — first slice
/en/schriftkunde, /en/lesen, /en/quiz and /en/lesen/vergleichen render in English with the same content; /de/… is canonical for German; bare paths keep serving German.
hreflang pairs in sitemap and prerender; prerender drift test green for both languages.
- A language switch in the header; the language rides the URL, not a cookie.
Todoist: task „Website 8/8" (6hPP6RVw2HgJR64J) points here.
Why
The vision names English-speaking genealogists as an audience of the reading aid, and the site is German only: every UI string is a pre-i18n TS namespace under
app/src/locales/de/, the routing knows no language prefix. Website audit 2026-08-29, item 8/8. Deferred by the owner on 2026-08-30 („englisch lassen wir erstmal weg") — this issue keeps the plan where it can be found.Documented plan (
docs/reference/frontend-stack.md§3,architektur.md§16)react-i18next(not installed yet); lazy per-language bundles underlocales/{de,en}/./de/…(default) and/en/…. Rejected: cookie-based switching (bad for shared links), a domain switch (hosting complexity)./lesenhub, the quiz UI, the Lesart page), then the content pages (landing, glossary).What it touches beyond that plan
app/src/lib/seo/prerender.ts→app/prerender/), the sitemap withhreflangpairs,llms.txt, the API's/seo-proxymapping, the nginx bot map (docs/reference/crawler-richtlinie.md); the drift test must cover both languages.locales/de/seo.tsrule: search term first).sprachregelung.md; the English UI names each once and explains it.app/src/lib/api/) are language-free; nothing changes in the API.Definition of done — first slice
/en/schriftkunde,/en/lesen,/en/quizand/en/lesen/vergleichenrender in English with the same content;/de/…is canonical for German; bare paths keep serving German.hreflangpairs in sitemap and prerender; prerender drift test green for both languages.Todoist: task „Website 8/8" (6hPP6RVw2HgJR64J) points here.