Files
opencode/specs/19-workspace-i18n-audit-overview.md

77 lines
3.8 KiB
Markdown

## workspace i18n audit overview (zen workspace routes)
Audit objective: verify translation accuracy for customer-facing workspace management pages used to manage Zen (AI inference provider) usage, with strict terminology and brand integrity.
---
### scope
- Routes audited: `packages/console/app/src/routes/workspace/**` (all workspace TSX routes, including billing/keys/members/settings)
- Locale files audited: `packages/console/app/src/i18n/ar.ts`, `packages/console/app/src/i18n/da.ts`, `packages/console/app/src/i18n/de.ts`, `packages/console/app/src/i18n/it.ts`
- Source-of-truth copy: `packages/console/app/src/i18n/en.ts`
- Total unique translation keys used by workspace routes: **181**
---
### deliverables
- Arabic audit and fix spec: `specs/20-workspace-i18n-audit-ar.md`
- Danish audit and fix spec: `specs/21-workspace-i18n-audit-da.md`
- German audit and fix spec: `specs/22-workspace-i18n-audit-de.md`
- Italian audit and fix spec: `specs/23-workspace-i18n-audit-it.md`
These files are intentionally execution-ready so follow-up agents can apply string fixes without re-auditing.
---
### non-negotiable terminology contract
1. Product names and brands:
- `Zen` must remain exactly `Zen` (never translated, never lowercased).
- `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models` remain literal.
2. AI domain terms must preserve technical meaning:
- `model` = AI model, not fashion/product model.
- `provider` = AI provider/vendor.
- `Bring Your Own Key` = BYOK concept (user-provided API credential).
3. Billing/top-up language must stay financial:
- `reload` in billing pages means balance top-up/recharge, not page refresh.
- `amount`, `cost`, `usage`, `monthly spending limit` must map to metering/billing context.
4. Placeholder and interpolation safety:
- Keep placeholders unchanged (`{{provider}}`, `{{prefix}}`, `{{amount}}`, etc).
- Keep currency symbols and key ordering intact.
---
### cross-locale risk summary
- Critical risk focus across locales: billing `reload` text must consistently mean balance top-up/recharge (not page refresh), while product literals and CLI command verbs remain exact.
- `ar` (Arabic): **31** flagged keys (critical: 4, major: 23, minor: 4), with critical literals broken for `Zen`, `Stripe`, and `OpenCode Black` waitlist strings.
- `da` (Danish): **33** flagged keys (critical: 8, major: 18, minor: 7), concentrated in reload/top-up semantics plus onboarding/default-label blockers.
- `de` (German): **34** flagged keys (critical: 6, major: 27, minor: 1), centered on reload/top-up semantics, onboarding command phrasing, and usage metric wording.
- `it` (Italian): **25** flagged keys (critical: 2, major: 18, minor: 5), led by `Zen` casing and waitlist status semantics with broader API/billing wording drift.
---
### remediation workflow for follow-up agents
1. Pick one locale spec (`20`/`21`/`22`/`23`) and apply only mapped key updates in that locale file.
2. Do not add/remove keys; only edit string values.
3. Preserve placeholders and punctuation contracts.
4. Run app typecheck:
- `bun run typecheck` in `packages/console/app`
5. Run post-fix terminology sanity checks:
- Literal checks in locale files: `Zen`, `Stripe`, `OpenCode Black`, `opencode`, `API`, `/models`.
- `workspace.reload.*` language matches top-up/recharge semantics.
- `API key` labels are ordered naturally in target language.
- Placeholders remain unchanged (`{{provider}}`, `{{prefix}}`, `{{plan}}`, `{{amount}}`, etc).
---
### acceptance criteria
- All mapped critical and major issues in locale specs are fixed.
- `workspace.nav.zen` is exactly `Zen` in all locales.
- `workspace.billing.linkedToStripe` preserves `Stripe` literal in all locales.
- Workspace billing and usage terminology is technically accurate for AI inference workflows.
- No placeholder regressions.