Repository navigation
Conversation
|
Thanks for picking up the terminal localization work from #52000, @krotname. It's clearly a lot of careful work! At about 8,900 changed lines across 124 files, this is too large to review well as one pull request. It also depends on the TUI i18n design in #37216, which hasn't been agreed yet. Could you split it into smaller, focused pull requests that can each be reviewed on their own? For example:
Agreeing on the design in #37216 first would make the first step much easier to review. You're welcome to open those pull requests. |
|
Thanks for the concrete breakdown. I proposed the smaller design in #37216 (comment). I will wait for maintainer agreement before opening the infrastructure PR, then follow with focused English extraction, Mini and Russian catalog PRs. I would like to keep this implementation as a draft reference during that discussion. GitHub reports |
Issue for this PR
Refs #37216. Continues the terminal localization work in #52000 by @imyu37, rebased onto the current
devlayout.Type of change
What does this PR do?
Adds English and Russian translation catalogs to the TUI, with lazy loading, typed translation keys, locale-aware numbers, dates and Russian plural rules. English is the default. The language picker is available in settings and the command palette, and persists the selection in the TUI configuration:
{ "language": "ru" }Completes the Russian UI for sessions, prompts, dialogs, permissions, forms, settings, integrations, model usage limits, goals and statistics. It also translates Mini's footer, menus, settings, tool summaries and scrollback. Tool inputs, paths, model names and user-authored content keep their original values.
The original implementation's extraction has been adapted to today's packages and components, including UI added after #52000. This PR includes only English and Russian catalogs.
How did you verify your code works?
Validation ran in an isolated Linux container, from
packages/tui:bun run test: 1,664 passed, 2 skipped, 0 failed (194 files).bun run typecheck: passed.oxlint --deny-warnings: passed.The regression tests check complete Russian key and placeholder coverage, plural forms, keyboard and mouse language selection, persistence after reopening, narrow terminal layouts, Mini settings and translated structured scrollback. Existing English tests exercise the default language.
Screenshots / recordings
Russian Mini settings, captured from the terminal renderer at 100 columns:
The same settings are tested at 44 columns.
Checklist