Files
opencode/specs/22-workspace-i18n-audit-de.md

96 lines
9.5 KiB
Markdown

## workspace i18n audit - de
German translation audit for workspace routes with focus on CLI onboarding clarity, AI metric terminology, and billing top-up semantics.
---
### coverage
- Route scope: `packages/console/app/src/routes/workspace/**`
- Locale file: `packages/console/app/src/i18n/de.ts`
- Source reference: `packages/console/app/src/i18n/en.ts`
- Unique keys in scope: **181**
- Flagged keys: **34** (critical: 6, major: 27, minor: 1)
---
### glossary decisions (de)
- Preserve literals exactly: `Zen`, `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models`
- Preserve placeholders exactly (`{{provider}}`, `{{amount}}`, `{{plan}}`, `{{prefix}}`, etc.)
- `API key`: `API-Schlüssel`
- `usage`: `Nutzung`
- `cost`: `Kosten`; payments column `Betrag`
- `billing`: `Abrechnung`
- Billing `reload` semantics: `Aufladung` / `aufladen` (never `Neuladen`)
- AI cost metrics: keep `Input`, `Output`, `Reasoning`
---
### required key updates
| key | replace with | severity | reason |
| ------------------------------------- | ---------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------- |
| workspace.newUser.step.login.before | Führe | critical | Wrong CLI verb in onboarding instruction. |
| workspace.monthlyLimit.set | Festlegen | critical | CTA mistranslated as noun (`Satz`). |
| workspace.reload.title | Automatische Aufladung | critical | Billing top-up semantics, not page reload. |
| workspace.reload.disabled.after | Aktivieren Sie diese Option, damit bei niedrigem Kontostand automatisch aufgeladen wird. | critical | Uses `neu laden`; must use billing top-up phrasing. |
| workspace.reload.enableAutoReload | Automatische Aufladung aktivieren | critical | Primary toggle must follow billing top-up semantics. |
| workspace.black.subscription.message | Sie haben OpenCode Black für ${{plan}} pro Monat abonniert. | critical | Missing `$` before `{{plan}}`. |
| workspace.newUser.step.models.before | Starte opencode und führe | major | Unidiomatic command phrasing before `/models`. |
| workspace.newUser.copyApiKey | API-Schlüssel kopieren | major | Broken technical term word order. |
| workspace.keys.copyApiKey | API-Schlüssel kopieren | major | Broken technical term word order. |
| workspace.models.table.enabled | Aktiviert | major | Wrong toggle-state label. |
| workspace.providers.saving | Wird gespeichert... | major | `Sparen...` means saving money, not save state. |
| workspace.members.inviting | Wird eingeladen... | major | Incorrect invite loading state wording. |
| workspace.members.saving | Wird gespeichert... | major | `Sparen...` means saving money, not save state. |
| workspace.monthlyLimit.setting | Wird gesetzt... | major | In-progress state should be verbal action. |
| workspace.payments.table.amount | Betrag | major | Financial column mistranslated as quantity. |
| workspace.payments.view | Anzeigen | major | CTA mistranslated as noun (`Sicht`). |
| workspace.usage.table.input | Input | major | AI billing metric should remain technical term. |
| workspace.usage.table.output | Output | major | AI billing metric should remain technical term. |
| workspace.usage.breakdown.input | Input | major | AI billing metric should remain technical term. |
| workspace.usage.breakdown.output | Output | major | AI billing metric should remain technical term. |
| workspace.usage.breakdown.reasoning | Reasoning | major | AI billing metric should remain technical term. |
| workspace.reload.disabled.before | Automatische Aufladung ist | major | Should use top-up semantics instead of `Nachladen`. |
| workspace.reload.enabled.before | Automatische Aufladung ist | major | Should use top-up semantics instead of `Nachladen`. |
| workspace.reload.enabled.state | aktiviert | major | `ermöglicht` is wrong state adjective for toggle. |
| workspace.reload.enabled.middle | Wir laden auf | major | Should be account top-up verb (`aufladen`). |
| workspace.reload.enabled.after | sobald der Kontostand | major | `Gleichgewicht` is wrong meaning for account balance. |
| workspace.reload.reloadAmount | Aufladebetrag $ | major | Label should reflect top-up amount semantics. |
| workspace.reload.whenBalanceReaches | Wenn der Kontostand $ erreicht | major | Use account-balance term `Kontostand`. |
| workspace.reload.failedAt | Aufladung fehlgeschlagen am | major | Error copy should use top-up semantics. |
| workspace.reload.saving | Wird gespeichert... | major | `Sparen...` means saving money, not save state. |
| workspace.black.waitlist.left | Verlassen | major | `Links` is incorrect meaning. |
| workspace.black.waitlist.joined | Sie stehen auf der Warteliste für den OpenCode Black Tarif für ${{plan}} pro Monat. | major | Product name order/phrase is broken. |
| workspace.black.waitlist.ready | Wir können Sie jetzt in den OpenCode Black Tarif für ${{plan}} pro Monat aufnehmen. | major | Product name order/phrase is broken. |
| workspace.black.subscription.resetsIn | Zurückgesetzt in | minor | Improve pre-duration label grammar. |
---
### implementation batches
1. **Critical blockers first**
- `workspace.newUser.step.login.before`, `workspace.monthlyLimit.set`, `workspace.reload.title`, `workspace.reload.disabled.after`, `workspace.reload.enableAutoReload`, `workspace.black.subscription.message`
2. **Reload semantics sweep**
- All `workspace.reload.*` keys listed above (state labels, helper text, error text, amount labels)
3. **Onboarding + API key wording**
- `workspace.newUser.step.models.before`, `workspace.newUser.copyApiKey`, `workspace.keys.copyApiKey`
4. **Async/CTA quality fixes**
- `workspace.providers.saving`, `workspace.members.inviting`, `workspace.members.saving`, `workspace.monthlyLimit.setting`, `workspace.payments.view`, `workspace.reload.saving`
5. **AI usage/payments terminology**
- usage `Input/Output/Reasoning` keys + `workspace.payments.table.amount`
6. **OpenCode Black waitlist copy**
- `workspace.black.waitlist.left`, `workspace.black.waitlist.joined`, `workspace.black.waitlist.ready`, `workspace.black.subscription.resetsIn`
---
### acceptance checks for follow-up fix agent
- Flagged totals align with this spec: **34** (`critical` 6, `major` 27, `minor` 1).
- `workspace.nav.zen` remains exactly `Zen`.
- Literals remain exact where present: `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models`.
- Billing top-up copy consistently uses `Aufladung` / `aufladen` (not `Neuladen`/`Nachladen`).
- Usage metrics remain technical terms: `Input`, `Output`, `Reasoning`.
- Placeholders remain unchanged in all updated strings.