Skip to content

feat(i18n): complete current V2 translation coverage - #50204

Open
opencode-agent[bot] wants to merge 17 commits into
v2from
weekly-i18n-sep21
Open

opencode-agent[bot] wants to merge 17 commits into
v2from
weekly-i18n-sep21

Conversation

@opencode-agent

Copy link
Copy Markdown
Contributor

Summary

  • complete current V2 app and shared-UI translation coverage across all 62 non-English locales
  • translate the latest upload, browser state, debug telemetry, migration-update, location-cycle, and Anthropic connection copy
  • keep context-group list grammar and complete sentence ordering behind the shared typed i18n API
  • give concurrent upload cancellation controls filename-specific localized accessible names
  • carry forward the prior reviewed app/desktop translation waves after their previous PR closed unmerged

Weekly audit — 2026-09-21

This branch is based on current origin/v2 at c555559ac1 and contains the previously reviewed translation work plus this week's drift repair. The former translation PR was closed without merging, so this is a new ready-for-review PR rather than a push to a closed head.

Findings

After applying the prior reviewed translation baseline to current V2, the audit found:

  • 1,423 missing app entries across 23 English source keys
  • 186 missing shared-UI entries across three English source keys
  • one additional new app key needed for a confirmed upload accessibility defect, adding 62 locale entries
  • stale Claude Pro/Max semantics in Punjabi, Divehi, and Urdu after English changed to “Login with Anthropic”
  • an obsolete ui.messagePart.context.details key retained in ten Indic/RTL dictionaries after English removed it
  • context-group tool names joined with a literal comma and complete translated sentences parsed back into fragments in feature code
  • every upload cancellation button exposed the same accessible name when multiple files were uploading
  • zero missing CLDR categories or plural-placeholder mismatches at the rebased baseline
  • nine app and four UI empty values, all confirmed intentional word-order fragments

The weekly wave adds 1,671 translated entries, removes ten obsolete ordinary entries, and corrects the three stale Anthropic labels.

Exact current source keys

app source keys (24)

command.debugBar.toggle
command.session.location.cycle
debugBar.e2e.label
debugBar.e2e.tip
debugBar.providerAriaLabel
debugBar.tps.label
debugBar.tps.tip
debugBar.ttfa.label
debugBar.ttfa.tip
debugBar.ttft.label
debugBar.ttft.tip
dialog.provider.anthropic.note
prompt.toast.uploadFailed.title
prompt.toast.uploading.cancel
prompt.toast.uploading.cancelFile
prompt.toast.uploading.percent
provider.connect.title.anthropicProMax
session.browser.empty.description
session.browser.empty.title
session.browser.failed.description
session.browser.failed.title
settings.updates.action.download
settings.updates.migration.description
settings.updates.migration.title

ui source keys (3)

ui.messagePart.context.updates
ui.promptInput.cancelUpload
ui.promptInput.uploading

Per-locale counts

  • pa, dv, ur: 23 new app translations and three shared-UI translations, plus the Anthropic semantic correction
  • the other 59 locales: 24 new app translations and three shared-UI translations
  • no additional locale-only CLDR forms were required this week; all existing plural families remain complete

Hardcoded, grammar, and accessibility repairs

  • packages/ui/src/context/i18n.tsx adds a locale-aware complete-list formatter alongside the existing separator API.
  • packages/session-ui/src/tools/tool-renderer.tsx now formats tool-name lists through that API and renders the complete ui.messagePart.tools.used phrase without searching, slicing, or reassembling translated text.
  • packages/app/src/composer/attachments/uploads.tsx uses new key prompt.toast.uploading.cancelFile with {{filename}}, so concurrent cancel controls have distinct accessible names.
  • The rebased browser-pane fix preserves current empty/error-state behavior while translating known protocol identifiers and announcing inline failures.

Translation-quality method

English dictionaries remained the semantic source of truth. Four independent language-family reviews used repository prior art, Unicode CLDR, Mozilla localization guidance and Firefox/Pontoon, Microsoft and Apple localization guidance, maintained KDE/VS Code and localized Git terminology where available, W3C bidi guidance, and the language authorities named in package guidance.

Product/provider names, commands, identifiers, paths, key labels, acronyms, and placeholders remain exact. New RTL interpolation is isolated where needed. Sparse-corpus terminology remains most review-sensitive in Dzongkha, Faroese, Burmese, Khmer, Lao, Amharic, Tajik, Turkmen, Shahmukhi Punjabi, and Divehi.

Cumulative branch behavior

The carried-forward reviewed commits complete earlier app/UI/desktop drift, native desktop strings, timeline/provider errors, typed runtime fallback, locale-specific plurals, rich contributor lists, browser/migration copy, and accessibility labels. Feature code remains unaware of locale-specific plural categories and grammar mechanics.

Checks

  • final parity audit: 1,499 app English keys and 248 shared-UI English keys across 62 non-English locales; zero missing keys, unintended empty values, placeholder mismatches, unexpected ordinary extras, missing CLDR categories, plural-placeholder mismatches, or duplicate keys
  • retained-English audit: remaining exact matches are brands, acronyms, commands, URLs, keyboard legends, placeholder-only templates, or established identical spellings/borrowings
  • hardcoded-copy and invariant scans: remaining candidates are brands, protocol/tool text, identifiers, typed ordinary-key construction, story/dev-only copy, or intentional animation exceptions
  • CI explicitly unset for scoped i18n and package tests
  • typechecks: app, UI, session UI, desktop, enterprise, core, client, schema, server, protocol, and CLI
  • tests: app browser-unit 157 passed; shared UI 117 passed; session UI 182 passed; desktop-native i18n 9 passed; focused core restart/session execution 35 passed
  • list grammar tests: 19 UI i18n tests passed
  • timeline/performance unit baseline: 53/53 passed before the context-group change; 53/53 passed after
  • Prettier, git diff --check, and scoped Oxlint (zero errors) passed

The broad app unit run passed 862 tests (one skipped) but the existing global-sync/bootstrap reconnect test failed with ECONNRESET both in the full run and focused rerun; translation and affected package checks passed. The repository-wide bun run check also exhausted Host threads in console-support typecheck, while every scoped package typecheck above passed.

Requested by: @Hona (Hona via Slack)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant