Skip to content

English for the reading half (/en/…): i18n infrastructure and the first pages #460

Description

@MarkusNeusinger

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.tsapp/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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions