问题 / #3479

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

open · @Astemiir · 1 评论 · 去 GitHub 看

needs-format

说明

## 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.

本站相关内容

相关页面的快捷入口。