docs(quick-260701-abc): fix i18n missing keys — summary and state update
Tessera CI/CD / Lint & Type Check (push) Successful in 45s
Tessera CI/CD / Tests (push) Has been cancelled
Tessera CI/CD / Build & Publish Images (push) Has been cancelled

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-01 12:06:32 +02:00
parent e5b76b735a
commit f6173bbe35
3 changed files with 125 additions and 8 deletions
+9 -8
View File
@@ -5,16 +5,16 @@ milestone_name: milestone
current_phase: 08 current_phase: 08
current_phase_name: dashboard-widgets-vollimplementierung current_phase_name: dashboard-widgets-vollimplementierung
status: executing status: executing
stopped_at: Phase 8 context gathered stopped_at: context exhaustion at 75% (2026-07-01)
last_updated: "2026-07-01T07:46:32.037Z" last_updated: "2026-07-01T09:34:09.492Z"
last_activity: 2026-07-01 last_activity: 2026-07-01
last_activity_desc: Phase 08 execution resumed (wave continue) last_activity_desc: Completed quick task 260701-abc: Fix i18n missing keys (marketplace.accessDenied + calendar form)
progress: progress:
total_phases: 8 total_phases: 8
completed_phases: 6 completed_phases: 7
total_plans: 34 total_plans: 34
completed_plans: 29 completed_plans: 33
percent: 75 percent: 88
--- ---
# Project State # Project State
@@ -136,6 +136,7 @@ None yet.
| # | Description | Date | Commit | Directory | | # | Description | Date | Commit | Directory |
|---|-------------|------|--------|-----------| |---|-------------|------|--------|-----------|
| 260630-gbh | User Settings: Passwort ändern (nur non-LDAP) + Profilbild setzen | 2026-06-30 | merge | [260630-gbh-user-settings-passwort-ndern-nur-non-lda](.planning/quick/260630-gbh-user-settings-passwort-ndern-nur-non-lda/) | | 260630-gbh | User Settings: Passwort ändern (nur non-LDAP) + Profilbild setzen | 2026-06-30 | merge | [260630-gbh-user-settings-passwort-ndern-nur-non-lda](.planning/quick/260630-gbh-user-settings-passwort-ndern-nur-non-lda/) |
| 260701-abc | Fix i18n: marketplace.accessDenied + calendar form hardcoded EN strings | 2026-07-01 | e5b76b7 | [260701-abc-i18n-missing-keys](.planning/quick/260701-abc-i18n-missing-keys/) |
## Deferred Items ## Deferred Items
@@ -147,6 +148,6 @@ Items acknowledged and carried forward from previous milestone close:
## Session Continuity ## Session Continuity
Last session: 2026-07-01T06:33:00.382Z Last session: 2026-07-01T09:34:09.479Z
Stopped at: Phase 8 context gathered Stopped at: context exhaustion at 75% (2026-07-01)
Resume file: .planning/phases/08-dashboard-widgets-vollimplementierung/08-CONTEXT.md Resume file: .planning/phases/08-dashboard-widgets-vollimplementierung/08-CONTEXT.md
@@ -0,0 +1,87 @@
---
quick_id: 260701-abc
slug: i18n-missing-keys
date: 2026-07-01
status: in-progress
---
# Quick Task: Fix i18n Missing Keys
## Goal
Fix two i18n bugs found during UAT:
1. `marketplace.accessDenied` missing from both de.json and en.json
2. `calendar-source-form.tsx` uses hardcoded English strings instead of translations
## Tasks
### T-01: Add marketplace.accessDenied to de.json
Add `"accessDenied": "Zugriff verweigert"` to the `marketplace` section in de.json.
**File:** `apps/web/src/messages/de.json`
**Location:** After `"detailStatusInactive"` (line ~448), before closing `}`
### T-02: Add marketplace.accessDenied to en.json
Add `"accessDenied": "Access denied"` to the `marketplace` section in en.json.
**File:** `apps/web/src/messages/en.json`
**Location:** Same position as de.json
### T-03: Add calendar form translation keys to de.json
Add to `widgets.calendar` section in de.json:
```json
"formFieldName": "Name",
"formFieldType": "Typ",
"formFieldUrl": "URL",
"formFieldUsername": "Benutzername",
"formFieldPassword": "Passwort",
"formFieldColor": "Farbe",
"formFieldExchangeMode": "Exchange-Modus",
"formSave": "Speichern",
"formSaving": "Wird gespeichert...",
"formCancel": "Abbrechen",
"formUrlErrorHttps": "URL muss HTTPS verwenden",
"formUrlErrorInvalid": "Ungültiges URL-Format"
```
### T-04: Add calendar form translation keys to en.json
Add to `widgets.calendar` section in en.json:
```json
"formFieldName": "Name",
"formFieldType": "Type",
"formFieldUrl": "URL",
"formFieldUsername": "Username",
"formFieldPassword": "Password",
"formFieldColor": "Color",
"formFieldExchangeMode": "Exchange Mode",
"formSave": "Save",
"formSaving": "Saving...",
"formCancel": "Cancel",
"formUrlErrorHttps": "URL must use HTTPS protocol",
"formUrlErrorInvalid": "Invalid URL format"
```
### T-05: Fix calendar-source-form.tsx
Replace all hardcoded English strings with `t()` calls. Remove hack on line 298.
**File:** `apps/web/src/components/settings/calendar-source-form.tsx`
Changes:
- `"Name *"` → `\`${t('calendar.formFieldName')} *\``
- `"Type *"` → `\`${t('calendar.formFieldType')} *\``
- `"URL *"` → `\`${t('calendar.formFieldUrl')} *\``
- `"Username"` → `t('calendar.formFieldUsername')`
- `"Password"` → `t('calendar.formFieldPassword')`
- `"Color"` → `t('calendar.formFieldColor')`
- `"Exchange Mode"` → `t('calendar.formFieldExchangeMode')`
- `'Saving...'` → `t('calendar.formSaving')`
- `'Save'` → `t('calendar.formSave')`
- Cancel button hack → `t('calendar.formCancel')`
- `'URL must use HTTPS protocol'` → `t('calendar.formUrlErrorHttps')`
- `'Invalid URL format'` → `t('calendar.formUrlErrorInvalid')`
## Must Haves
- [ ] `marketplace.accessDenied` present in de.json and en.json marketplace sections
- [ ] All 12 `formField*` / `form*` keys present in widgets.calendar for both locales
- [ ] No hardcoded English strings in calendar-source-form.tsx
- [ ] Hack on line 298 removed
- [ ] No TypeScript errors introduced
@@ -0,0 +1,29 @@
---
quick_id: 260701-abc
status: complete
date: 2026-07-01
commit: e5b76b7
---
# Summary: Fix i18n Missing Keys
## What was done
Fixed two i18n bugs found during UAT testing.
### Bug 1: marketplace.accessDenied missing
Added `"accessDenied"` to the `marketplace` section in both `de.json` and `en.json`. The marketplace page uses `useTranslations('marketplace')` and calls `t('accessDenied')` — the key existed at top level but not under the marketplace namespace.
### Bug 2: calendar-source-form.tsx hardcoded English
Added 12 new translation keys to `widgets.calendar` in both locale files:
`formFieldName`, `formFieldType`, `formFieldUrl`, `formFieldUsername`, `formFieldPassword`,
`formFieldColor`, `formFieldExchangeMode`, `formSave`, `formSaving`, `formCancel`,
`formUrlErrorHttps`, `formUrlErrorInvalid`
Replaced all hardcoded English strings in `calendar-source-form.tsx` with `t()` calls.
Removed the locale-detection hack on the Cancel button (`t('calendar.addSource') === 'Add source' ? 'Cancel' : 'Abbrechen'`).
## Verification
- Browser confirmed: calendar form shows "Typ", "Benutzername", "Passwort", "Farbe", "Speichern", "Abbrechen"
- Browser confirmed: marketplace console no longer shows MISSING_MESSAGE error
- TypeScript: no errors