- 58 missing German keys added across 5 de/*.json files - 19/19 i18n parity tests pass - 1 deviation: fixed JSON syntax error from smart quotes
108 lines
4.2 KiB
Markdown
108 lines
4.2 KiB
Markdown
---
|
|
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
|