feat(i18n): complete V2 translation coverage - #43073
Open
opencode-agent[bot] wants to merge 13 commits into
Open
feat(i18n): complete V2 translation coverage#43073opencode-agent[bot] wants to merge 13 commits into
opencode-agent[bot] wants to merge 13 commits into
Conversation
6 tasks
|
|
opencode-agent
Bot
force-pushed
the
weekly-i18n-v2
branch
2 times, most recently
from
August 30, 2026 17:15
e80e60d to
68b3047
Compare
3 tasks
opencode-agent
Bot
force-pushed
the
weekly-i18n-v2
branch
from
September 6, 2026 17:28
68b3047 to
a2ba9ed
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Weekly audit refresh — 2026-09-07
This refresh reused the still-open translation PR rather than publishing an overlapping duplicate. The branch was rebased onto current
origin/v2at33f48f36c929e87bb56c99fd65cf2be6fc51b278before auditing.Findings
The rebased dictionary audit found:
.one/.othersource formssession.new.workspace.existingLabelvalues still expressed the former “Workspace” semantic after English changed to “Worktree”Intl.PluralRules, or plural-category key selection leaked into feature codeThe completed weekly wave adds or repairs 7,052 translation entries/forms, plus the 62 Worktree terminology updates and 88 native placeholder/alignment repairs.
Existing app keys translated
packages/app/src/runtime/i18n/*.tsadds 90 current English keys per locale:home.projects.all,project.settings.titlesession.background.combine,session.background.inBackground,session.background.moveRunning,session.background.moveTasks,session.background.shell.one,session.background.shell.other,session.background.subagent.one,session.background.subagent.other,session.background.tasksRunning.one,session.background.tasksRunning.othersession.files.openTabs,session.new.worktree.draftPlaceholder,session.review.wrapLines,session.search.noResults,session.search.placeholder,session.tab.files,session.tab.usage,session.timeline.working,session.view.selectsession.websearch.any,session.websearch.description,session.websearch.disable,session.websearch.empty,session.websearch.enable,session.websearch.failed,session.websearch.loadFailed,session.websearch.provider,session.websearch.retry,session.websearch.titlesettings.about.and,settings.about.copyright,settings.about.description,settings.about.devVersion,settings.about.firstIllustrated,settings.about.firstPublished,settings.about.illustratedBy,settings.about.license,settings.about.otherContributor.one,settings.about.otherContributor.other,settings.about.tagline,settings.about.trademark,settings.about.typeset,settings.about.version,settings.about.website,settings.about.writtenBysettings.appearance.row.projectName.description,settings.appearance.row.projectName.title,settings.experimental.description,settings.general.row.mobileDiffWrap.description,settings.tab.about,settings.tab.experimentalsettings.timeline.activity,settings.timeline.advanced,settings.timeline.advanced.description,settings.timeline.advanced.explainer, all sixsettings.timeline.category.*keys,settings.timeline.custom,settings.timeline.descriptionand its six preset variants,settings.timeline.detail, all threesettings.timeline.expansion.*keys, all foursettings.timeline.placement.*keys, all fivesettings.timeline.preset.*keys,settings.timeline.titletitlebar.channel.beta,titlebar.channel.dev,titlebar.channel.local,titlebar.tabs,titlebar.toggleDebugToolsExisting shared-UI keys translated
packages/ui/src/i18n/*.tsadds 12 current English keys per locale:ui.messagePart.context.detailsui.messagePart.context.notice.one,ui.messagePart.context.notice.otherui.messagePart.context.thought.one,ui.messagePart.context.thought.otherui.promptInput.dropFiles.image,ui.promptInput.dropFiles.imagePdf,ui.promptInput.dropFiles.pdf,ui.promptInput.exitShellui.sessionTimeline.notice.agentChangedui.sessionTurn.retry.attemptLabel,ui.sessionTurn.retry.attemptRetryingHardcoded and grammar repairs
packages/app/src/runtime/i18n/language.tsxadds typed rich-template and locale-list operations.packages/app/src/settings/about/about.tsxnow lets each complete translated phrase position the linked contributor list whileIntl.ListFormatowns punctuation and conjunctions.packages/session-ui/src/components/session-retry.tsxuses complete retry sentences and a plural family instead of joining translated fragments in feature code.packages/app/src/session/files/session-side-panel.tsxresolves file counts throughlanguage.plural(...)instead of passing a count to an ordinary key.packages/app/src/providers/connect/controller.tslocalizes the displayed unsupported-authentication-form error.packages/app/src/settings/experimental/experimental.tsxgives the tab-layout selector a localized accessible name.New English source keys, translated in every locale:
provider.connect.error.unsupportedFields,session.review.filesChangedCount.one,session.review.filesChangedCount.other,settings.about.writtenByNames,settings.about.illustratedByNamesui.sessionTurn.retry.attemptWaiting.one,ui.sessionTurn.retry.attemptWaiting.other,ui.sessionTurn.retry.attemptRetryingNowPer-locale counts
Every non-English locale receives 95 app source-key translations and 15 shared-UI source-key translations, plus the Worktree semantic correction.
Additional CLDR forms beyond those English source keys:
am,az,bg,bn,da,de,dv,dz,el,et,fa,fi,fo,hi,hu,hy,id,is,ja,ka,km,ko,lo,mk,mn,ms,my,ne,nl,no,pa,si,sq,sv,tg,th,tk,tr,ur,uz,vi,zh,zhtbr,bs,ca,es,fr,he,hr,it,lv,ro,srcs,lt,pl,ru,sk,sl,ukarTranslation-quality method
English dictionaries remained the semantic source of truth. Work was split across independent language-family reviews. Reviewers checked nearby locale-file prior art and recurring OpenCode terminology, Unicode CLDR cardinal rules, Mozilla localization guidance and Firefox/Pontoon, Microsoft and Apple localization guidance, maintained KDE/VS Code and localized Git terminology where available, and the language authorities named in package guidance.
Product names, provider names, commands, identifiers, paths, key labels, acronyms, and placeholders remain exact. New RTL phrases isolate dynamic Latin values where needed. Sparse-corpus terminology is flagged for native review in Dzongkha, Faroese, Persian, Burmese, Khmer, Lao, Amharic, Tajik, Turkmen, Uzbek, Shahmukhi Punjabi, and Divehi.
Cumulative branch behavior
Earlier reviewed waves in this PR already translated prior app/UI/desktop drift across the same 62 locales, localized provider and timeline failures, preserved runtime-generated English through typed
tDynamic(...), attached stable timeline notice metadata, localized desktop migration/onboarding surfaces, and kept locale/plural policy behind shared typed APIs.Checks
Intl.PluralRules, or plural-category key construction/selectionCIexplicitly unset for scoped i18n and package testsgit diff --check, and scoped Oxlint (zero errors) passedThe broad desktop run passed 81 tests;
src/main/storage/drafts.test.tscould not start because the Host Bun runtime lacks thenode:sqlitebuiltin. Desktop typecheck and the scoped native-i18n suite passed.Requested by: @Hona (Hona via Slack)