Skip to content

Improve i18n coverage for commands, modals, and widgets #790

@vincentredrock

Description

@vincentredrock

Summary

Follow-up to #740 / #781. After adding zh-Hant support, the shipped locale registry covers core UI chrome, but many user-visible TUI strings still remain hardcoded in English. This issue tracks expanding localization coverage for commands, modals, widgets, approval dialogs, and status picker UI.

This should improve all shipped locales (en, ja, zh-Hans, zh-Hant, pt-BR), not just Traditional Chinese.

Current Gaps

Representative areas that still render English under non-English locales:

  • Composer hints, including slash menu and submit/queue hints
  • Config modal labels, scopes, edit footer, and hints
  • Status line picker title, actions, labels, and hints
  • Pending input preview headers and removable hints
  • Approval and sandbox elevation dialogs
  • Sub-agent modal status labels and detail prefixes
  • Common command output for /queue, /task, /trust, /restore, /config, /statusline, /lsp, and /logout
  • Tool and agent card labels

Scope

  • Move high-frequency hardcoded UI chrome into localization::MessageId
  • Add translations for every shipped locale: en, ja, zh-Hans, zh-Hant, pt-BR
  • Prioritize short, visible UI chrome before lower-frequency generated/exported content
  • Keep command names, keybindings, paths, env vars, model IDs, and tool names unchanged where they are technical tokens

Non-goals

  • Model output language
  • System prompts or model prompts
  • Tool output or shell command output
  • User-provided content
  • Provider protocol/internal keys
  • Full localization of generated AGENTS.md or exported /share HTML in the first pass

Suggested Phasing

Phase 1: high-frequency TUI chrome

  • Composer slash menu hints
  • Composer submit/queue hints
  • Config modal section/scope/edit labels and footer
  • Status line picker title/actions/prompt
  • Pending input preview section headers

Phase 2: approval and sandbox elevation

  • Approval field labels (Type, About, Impact, Params)
  • Risk/category labels
  • Approval option labels and destructive confirmation footer
  • Sandbox elevation title, option labels, and descriptions

Phase 3: common command output

  • CommandResult::error prefix
  • /queue, /task, /trust, /restore, /config, /statusline, /lsp, /logout

Phase 4: lower-frequency surfaces

  • Tool family labels
  • Agent lifecycle labels
  • Fanout summaries
  • Sub-agent modal detail prefixes
  • Skills/hooks/session/memory command output

Acceptance Criteria

  • New localized strings are represented by shared MessageId entries or equivalent locale-aware APIs
  • Every shipped locale has translations for newly localized strings
  • Existing localization completeness tests continue to pass
  • Render smoke tests cover at least the surfaces changed in each PR
  • cargo fmt --all -- --check passes
  • cargo test --workspace --all-features passes
  • cargo clippy --workspace --all-targets --all-features passes
  • Manual LANG=zh_TW.UTF-8 cargo run --bin deepseek smoke testing shows reduced English chrome in the targeted surfaces

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions