docs(34-07): complete German umlaut correction plan summary
This commit is contained in:
128
.planning/phases/34-i18n-foundation/34-07-SUMMARY.md
Normal file
128
.planning/phases/34-i18n-foundation/34-07-SUMMARY.md
Normal file
@@ -0,0 +1,128 @@
|
||||
---
|
||||
phase: 34-i18n-foundation
|
||||
plan: "07"
|
||||
subsystem: i18n
|
||||
tags: [i18n, german, umlauts, locale, translations]
|
||||
dependency_graph:
|
||||
requires: ["34-05"]
|
||||
provides: ["proper-german-umlauts"]
|
||||
affects: ["src/client/locales/de/*"]
|
||||
tech_stack:
|
||||
added: []
|
||||
patterns: ["Unicode umlaut characters in JSON locale files"]
|
||||
key_files:
|
||||
created: []
|
||||
modified:
|
||||
- src/client/locales/de/common.json
|
||||
- src/client/locales/de/collection.json
|
||||
- src/client/locales/de/threads.json
|
||||
- src/client/locales/de/setups.json
|
||||
- src/client/locales/de/onboarding.json
|
||||
- src/client/locales/de/settings.json
|
||||
decisions:
|
||||
- "Checked each German word in context before replacing ae/oe/ue — avoided false positives like English loanwords"
|
||||
- "onboarding.json done subtitle improved: 'Durchstöbern Sie jederzeit den Katalog' → 'Stöbern Sie jederzeit im Katalog' for more natural German"
|
||||
metrics:
|
||||
duration_minutes: 10
|
||||
completed_date: "2026-04-17"
|
||||
tasks_completed: 1
|
||||
tasks_total: 1
|
||||
files_changed: 6
|
||||
requirements_satisfied: [D-13, D-14]
|
||||
---
|
||||
|
||||
# Phase 34 Plan 07: German Umlaut Corrections Summary
|
||||
|
||||
**One-liner:** Replaced all ASCII umlaut approximations (ae/oe/ue/ss) with proper Unicode characters (ä/ö/ü/ß) across all 6 German locale files.
|
||||
|
||||
## What Was Done
|
||||
|
||||
All 6 German locale files (`src/client/locales/de/`) were scanned for ASCII umlaut fallbacks and corrected to use proper Unicode characters. The UAT had identified this as a critical gap — German text was using ASCII approximations instead of the correct German script.
|
||||
|
||||
### Corrections Applied per File
|
||||
|
||||
**common.json:**
|
||||
- `Loeschen` → `Löschen`
|
||||
- `Schliessen` → `Schließen`
|
||||
- `Zurueck` → `Zurück`
|
||||
- `Bestaetigen` → `Bestätigen`
|
||||
- `Aenderungen` → `Änderungen`
|
||||
- `ueberspringen` → `überspringen`
|
||||
- `hinzufuegen` → `hinzufügen`
|
||||
- `geloescht` → `gelöscht`
|
||||
- `gueltige` → `gültige`
|
||||
- `Gegenstaende` → `Gegenstände` (multiple occurrences)
|
||||
- `loeschen`/`moechten`/`rueckgaengig` → `löschen`/`möchten`/`rückgängig`
|
||||
- `waehlen` → `wählen`
|
||||
- `hinzugefuegt` → `hinzugefügt`
|
||||
|
||||
**collection.json:**
|
||||
- `Ausruestung` → `Ausrüstung`
|
||||
- `Gegenstaende` → `Gegenstände`
|
||||
- `Zusaetzliche` → `Zusätzliche`
|
||||
- `hinzufuegen` → `hinzufügen`
|
||||
|
||||
**threads.json:**
|
||||
- `waehlen` → `wählen`
|
||||
- `Kategorie` (waehlen) → `wählen`
|
||||
- `hinzufuegen` → `hinzufügen`
|
||||
- `hinzugefuegt` → `hinzugefügt`
|
||||
|
||||
**setups.json:**
|
||||
- `Ausruestung` → `Ausrüstung`
|
||||
- `Gegenstaende` → `Gegenstände`
|
||||
- `Oeffentlich` → `Öffentlich`
|
||||
- `Laeuft` → `Läuft`
|
||||
- `koennen` → `können`
|
||||
- `Zurueckschalten` → `Zurückschalten`
|
||||
|
||||
**onboarding.json:**
|
||||
- `Ausruestung` → `Ausrüstung` (multiple)
|
||||
- `Gegenstaende` → `Gegenstände` (multiple)
|
||||
- `Waehlen`/`waehlen` → `Wählen`/`wählen`
|
||||
- `fuer` → `für` (multiple)
|
||||
- `ueberspringen` → `überspringen`
|
||||
- `hinzufuegen`/`hinzugefuegt` → `hinzufügen`/`hinzugefügt`
|
||||
- `pruefen` → `prüfen`
|
||||
- `ausgewaehlt` → `ausgewählt`
|
||||
- `Durchstoebern` → `Stöbern` (natural improvement)
|
||||
|
||||
**settings.json:**
|
||||
- `Schluessel` → `Schlüssel` (multiple)
|
||||
- `Waehrung` → `Währung` (multiple)
|
||||
- `Waehlen` → `Wählen`
|
||||
- `Aendern` → `Ändern`
|
||||
- `Ausruestung` → `Ausrüstung`
|
||||
- `Gegenstaende` → `Gegenstände` (multiple)
|
||||
- `ermoeglichen` → `ermöglichen`
|
||||
|
||||
## Verification Results
|
||||
|
||||
- `grep` for all known ASCII fallback patterns: **0 matches** (PASS)
|
||||
- Umlaut count per file: common=21, collection=4, threads=4, setups=8, onboarding=15, settings=11
|
||||
- Key parity test (`bun test tests/i18n/locales.test.ts`): **19/19 PASS**
|
||||
- No JSON keys were modified — only string values
|
||||
|
||||
## Commits
|
||||
|
||||
| Task | Name | Commit | Files |
|
||||
|------|------|--------|-------|
|
||||
| 1 | Replace ASCII fallbacks with proper umlauts | 1963fae | 6 de/*.json files |
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
None — plan executed exactly as written. One minor natural German improvement applied to onboarding.json `done.subtitle` (more idiomatic phrasing for "browse the catalog").
|
||||
|
||||
## Known Stubs
|
||||
|
||||
None.
|
||||
|
||||
## Threat Flags
|
||||
|
||||
None — locale JSON files contain only UI strings, no secrets or security surface.
|
||||
|
||||
## Self-Check: PASSED
|
||||
|
||||
- All 6 de/*.json files exist and contain proper umlauts
|
||||
- Commit 1963fae verified in git log
|
||||
- Key parity test: 19/19 pass
|
||||
Reference in New Issue
Block a user