[FEATURE] Localize CLI/TUI spinner & thinking indicators to follow \language` setting`
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
The CLI/TUI processing spinner labels (e.g. Moonwalking… (43s · thinking some more)) are hardcoded in English and do not follow the user's
configured language. Even when ~/.claude/settings.json has "language": "日本語", the spinner stays English while only the model's
conversational output is localized.
Repro (Claude Code 2.1.146, macOS 15.4 / arm64):
- Set
"language": "日本語"in~/.claude/settings.json. - Send any prompt that triggers extended thinking.
- Observe the spinner shows
Moonwalking… (43s · thinking some more)etc. in English.
Evidence the strings are hardcoded — running strings on the Mach-O binary at ~/.local/share/claude/versions/2.1.146:
- ✅ Found (English, all 24 spinner words):
Baking,Brewing,Computing,Cooking,Crafting,Frolicking,Gallivanting,Hatching,
Herding, Ideating, Marinating, Moonwalking, Mulling, Noodling, Perambulating, Pondering, Puttering, Ruminating, Schlepping,
Spelunking, Synthesizing, Thinking, Whirring, Wrangling
- ❌ Not found: any Japanese candidate (
熟考,処理中,考え中,思考中) or localizedthinking some more
Why this matters: Non-English-primary users (Japanese, Chinese, Korean, …) configure "language" expecting full UI localization, but the
most-visible always-on element — the spinner — stays English. For users running Claude Code in client-facing contexts (consulting demos), the
mixed-language UI looks unfinished.
Proposed Solution
- Treat spinner verbs and the
thinking some more/ elapsed-time suffix as localizable strings. - Honor the existing
"language"setting insettings.json(no new config needed). - Ship locale packs for the languages already requested in #60914 (zh-Hans, ja, ko, fr, de, es, pt). For
Moonwalking-class playful verbs,
accept curator-chosen culturally-equivalent words rather than literal dictionary translation.
- Fall back to English when a locale pack is missing — never block on partial coverage.
Scope: This is intentionally narrower than #60914 (UI-wide i18n), and distinct from #60653 (Desktop "Recents" label) and #60882 / #61017
(English spinner-word curation/extension). Filing separately so it can be tracked and shipped independently — happy to close as duplicate of
#60914 if maintainers prefer one umbrella.
Alternative Solutions
"language": "日本語"insettings.json— affects only model output, not spinner.- Mach-O binary patching — rejected: breaks code signing and is lost on every auto-update (5 releases in last 6 days: 2.1.142 → 2.1.146).
- PTY wrapper sed-replacement — rejected: ANSI redraw + dynamic counter (
43s) make consistent substitution impractical.
Environment:
- Claude Code 2.1.146
- macOS 15.4 (Darwin 25.4.0), arm64
- Terminal: Ghostty
- Locale:
ja_JP.UTF-8
Priority
Medium - Would be very helpful
Feature Category
Interactive mode (TUI)
Use Case Example
- They configure
"language": "日本語"in~/.claude/settings.jsonso model output appears in Japanese for the audience. - Claude starts an extended thinking phase. The TUI displays
Moonwalking… (43s · thinking some more)in English on screen, projected to the
client.
- The client — non-English speaker — sees a half-translated UI. The Japanese model output looks polished; the always-visible English spinner
undermines that polish.
- With this feature, the spinner would read e.g.
熟考中… (43秒 · まだ考え中)and the client experience would be cohesive.
This applies broadly beyond consulting: any non-English-primary user (zh/ja/ko/fr/de/es/pt) running Claude Code in shared screens, screencasts,
tutorials, or social posts faces the same mixed-language artifact.
Additional Context
Related issues:
- #60914 — Feature Request: i18n / UI localization support (umbrella; this issue is the CLI/TUI spinner sub-case)
- #60653 — Localize Desktop UI labels to Japanese (Desktop, distinct surface)
- #60882, #61017 — English spinner-word curation/extension (orthogonal: more verbs vs. translated verbs)
Implementation note: The 24 spinner verbs and thinking some more suffix are bundled English strings in the Mach-O binary today. A locale
pack approach (key → translated string per locale, with English fallback) would address this without changing user-facing config — "language"
already exists.
Cultural-equivalence note for translators: Words like Moonwalking, Schlepping, Galumphing carry tone (playful, slightly absurd) that
literal dictionary translation destroys. Recommend curator-chosen culturally-equivalent words per locale rather than mechanical translation.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗