Skip to content

[FEATURE]: Land TUI i18n groundwork adapted from #48731 #53857

Description

@imyu37

Feature hasn't been suggested before.

  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

The TUI (packages/tui) currently ships zero i18n: roughly 700–1000 user-facing strings are hardcoded English, while the app/desktop side already has per-locale dictionaries.

#48731 by @neriousy laid down the full groundwork (lazy per-locale dictionaries, t()/plural()/number() helpers, language picker, config.language) and the architecture looked solid in review, but the PR has been stalled — no updates since 2026-09-23 and no response to the collaboration comment on the PR.

Rather than let that work rot, I would like to carry it forward:

  1. Merge Feat/tui i18n #48731 onto the current v2 branch (it had fallen ~550 commits behind).
  2. Resolve conflicts with v2's evolved TUI code (theme tokens, dialog APIs, diff-viewer sources, fail/attempt helpers) while keeping the PR's language.t(...) wiring.
  3. Drop parts of the PR that reference APIs v2 has since removed.
  4. Run lint/typecheck/tests with a baseline comparison to prove zero new failures.

All of @neriousy's original commits are preserved via a merge commit, so authorship stays intact.

Related: #48731

Follow-up PR: #52000


Note: this supersedes #51998, which was auto-closed by the issue-compliance workflow before its body was converted to the feature-request template structure. The original request is preserved there; this issue carries the same scope in template form.

Activity

  1. opencode-agent commented on Oct 8, 2026

    @opencode-agent
    Contributor

    Thanks for picking up the TUI i18n work and carrying #48731 forward!

    I think this is a duplicate of #37216. That issue is still open and asks for the same thing: moving the hardcoded TUI strings into per-locale dictionaries with a language/locale setting. Your PR #52000 can link #37216 as the issue it closes, so the discussion stays in one place.

    Possible duplicates and related issues, ordered by likelihood:

    The bot will close this issue as a duplicate in 1 day unless you reply explaining how it differs from #37216.

  2. imyu37 commented on Oct 8, 2026

    @imyu37
    Author

    Thanks for the triage — agreed, this is the same scope as #37216 (extract packages/tui hardcoded strings into per-locale dictionaries + a language/locale config option). I opened this issue to carry #48731's stalled work forward and to give PR #52000 an issue-first link; no difference worth keeping separate. Closing as duplicate of #37216 is fine — I've updated PR #52000 to close #37216 instead.

  3. opencode-agent commented on Oct 8, 2026

    @opencode-agent
    Contributor

    Thanks for confirming, and for pointing #52000 at #37216. That keeps the TUI i18n discussion in one place. This issue will be closed as a duplicate of #37216 as planned.

  4. opencode-agent commented on Oct 9, 2026

    @opencode-agent
    Contributor

    Closing this as a duplicate of #37216, as agreed above. Please continue the TUI i18n discussion there. PR #52000 now links #37216, so the work stays connected to that issue. Thanks for carrying #48731 forward!

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions