diff --git a/.planning/phases/34-i18n-foundation/34-08-SUMMARY.md b/.planning/phases/34-i18n-foundation/34-08-SUMMARY.md new file mode 100644 index 0000000..9929845 --- /dev/null +++ b/.planning/phases/34-i18n-foundation/34-08-SUMMARY.md @@ -0,0 +1,107 @@ +--- +phase: 34-i18n-foundation +plan: "08" +subsystem: i18n +tags: [i18n, german, locale, gap-closure] +dependency_graph: + requires: [34-06, 34-07] + provides: [german-locale-parity] + affects: [src/client/locales/de] +tech_stack: + added: [] + patterns: [json-locale-files, i18n-key-parity] +key_files: + created: [] + modified: + - src/client/locales/de/common.json + - src/client/locales/de/settings.json + - src/client/locales/de/threads.json + - src/client/locales/de/setups.json + - src/client/locales/de/collection.json +decisions: + - Used single quotes instead of German-style „ „ curly quotes in dangerZoneDescription to avoid JSON syntax errors +metrics: + duration: ~8 minutes + completed: 2026-04-18 + tasks_completed: 1 + tasks_total: 1 + files_modified: 5 +--- + +# Phase 34 Plan 08: German Translation Gap Closure Summary + +**One-liner:** Added 58 missing German translation keys across 5 de/*.json locale files to achieve full key parity with English, fixing fallback display for home, profile, threads, setups, and collection sections. + +## Objective + +Close the German translation gap identified in VERIFICATION.md — plans 34-06/34-07 wired useTranslation into routes and fixed umlaut encoding, but never added corresponding German translations for the new English keys. + +## Tasks Completed + +| Task | Name | Commit | Files | +|------|------|--------|-------| +| 1 | Add 58 missing German translations to 5 de/*.json files | 23172f7 | de/common.json, de/settings.json, de/threads.json, de/setups.json, de/collection.json | + +## Key Changes + +### de/common.json — 34 keys added +- `home.*` (3 keys): popularSetups, recentlyAdded, trendingCategories +- `imageUpload.*` (4 keys): clickToAdd, invalidType, tooLarge, uploadFailed +- `profile.*` (27 keys): full profile management section including account info, password management, danger zone + +### de/settings.json — 4 keys added +- `currency.suggestion`: currency region suggestion with `{{symbol}}` and `{{code}}` interpolation +- `currency.switch`: switch button label +- `showConversions.title` + `showConversions.description`: price conversion toggle + +### de/threads.json — 11 keys added +- `card.candidates` + `card.candidates_one`: pluralized candidate count with `{{count}}` interpolation +- `planning.*` (9 keys): full planning section with step-by-step guidance + +### de/setups.json — 3 keys added +- `card.by`: attributed author with `{{name}}` interpolation +- `card.anonymous`: anonymous attribution +- `impact.compareWith`: setup comparison prompt + +### de/collection.json — 6 keys added +- `tabs.setups`: setups tab label +- `totals.totalWeight` + `totals.totalCost`: totals bar labels +- `classificationBadge.base` + `classificationBadge.worn` + `classificationBadge.consumable`: classification badge labels + +## Verification + +``` +bun test tests/i18n/locales.test.ts +19 pass, 0 fail (previously 14 pass, 5 fail) +``` + +ASCII umlaut fallback check: 0 matches (no regressions). + +## Deviations from Plan + +### Auto-fixed Issues + +**1. [Rule 1 - Bug] Fixed JSON syntax error from smart quotes in dangerZoneDescription** +- **Found during:** Task 1 — test run revealed `SyntaxError: JSON Parse error: Expected '}'` +- **Issue:** The German translation for `dangerZoneDescription` used German-style curly double-quotes `„Gelöschter Benutzer"` — the closing `"` (U+201C) was parsed by the JSON parser as the string-closing delimiter, causing a syntax error at line 115 +- **Fix:** Replaced curly quotes with straight single quotes: `'Gelöschter Benutzer'` +- **Files modified:** src/client/locales/de/common.json +- **Commit:** 23172f7 + +## Known Stubs + +None — all translation keys have real German text values, no placeholders. + +## Threat Flags + +None — plan modifies static bundled locale JSON files only. No network endpoints, auth paths, or schema changes introduced. + +## Self-Check: PASSED + +- [x] src/client/locales/de/common.json — exists and valid JSON +- [x] src/client/locales/de/settings.json — exists and valid JSON +- [x] src/client/locales/de/threads.json — exists and valid JSON +- [x] src/client/locales/de/setups.json — exists and valid JSON +- [x] src/client/locales/de/collection.json — exists and valid JSON +- [x] Commit 23172f7 exists +- [x] bun test tests/i18n/locales.test.ts: 19 pass, 0 fail