docs(quick-260701-abc): fix i18n missing keys — summary and state update
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user