Issues / #3479

#3479 [GUI] 48 UI strings never reach the locale files - /plan, /research and /new stay English in every language

open · @Astemiir · 1 comments · View on GitHub

needs-format

Description

## What happens

In the Russian UI the command palette shows three hints in English while the rest are translated:

    /plan      Have the assistant write a plan first; nothing runs until you approve it
    /research  Search the web, read the pages and answer with sources
    /new       Start a new conversation; keep this one

## Why

It is not a translation gap. These strings are missing from `en.json` itself, so no language can translate them:

- `apps/host/src/locales/en.json` — 3348 keys, `ru.json` — the same 3348, 0 keys missing;
- a search for any of the three strings in `en.json` returns nothing;
- the strings live in code as literals that never went through the string extraction: `apps/host/src/screens/Chat.tsx:456` (`/plan`), `Chat.tsx:457` (`/research`), `apps/host/src/lib/commands.ts:42` (`/new`).

The same gap covers 48 strings in total, mostly in the newer screens:

- `components/NativeTune.tsx` — "Tune this model", "How long to spend", "What you mostly do", "Saved tunings";
- `components/TuneRunView.tsx` — "Took", "Changed", "Variation", "Nothing was changed";
- `components/TelemetryPopover.tsx` — "Thinking time", "Writing time", "tokens/s", "% of context";
- `components/GoalBar.tsx`, `components/TimeSkipPanel.tsx`, `components/PlanCard.tsx`;
- `components/DropZone.tsx`, `components/TaskBoard.tsx`, `screens/Tasks.tsx`, `app/TaskTree.tsx`;
- `screens/Chat.tsx` — "Scroll to the latest message", "The assistant is still answering".

They appear in English in all eight languages, because the key is the same for everyone.

## Fix

1. Run the string extraction over these files so each literal gets a key in `en.json`.
2. Add the translations for the languages you ship; I can supply Russian for all 48.
3. Worth a check in CI: fail when a `hint:`/`tr()` literal has no key, so new screens cannot silently miss the dictionary again.

## Validation

- `ru.json` has no missing keys and no placeholder mistakes; the only values identical to English are terms such as `API`, `GPU`, `JSON`, `PCIe`, `PDF`, `Ctrl` (104 of them) — those are fine.
- After the extraction step the three palette hints and the other 45 strings show translated text in the UI without any layout change.

Related on this site

Quick links to related pages.