opencode/specs/19-workspace-i18n-audit-ove...

3.8 KiB

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.