webclient: the message area in en, uk and ru
The fourth area of the interface translation. Everything a conversation is made
of now builds its text through t(): the thinking card and the status line it
replaces while the model reasons, the plan card, the tool cards (both the plain
one and its sub-agent steps), the published-content card, the UI-component card
and the compression notice, plus the two new chat bubbles' copy button and the
"Scheduled recall" mark on an injected user message.

25 new slugs in all three dictionaries:

- 23 in messages.* — the cards' own headers and labels (Thinking, Plan,
  Arguments, Show all / Hide older tools, Useful / Not useful, Open file,
  Content, Unknown UI component: {name}, Context summary, Compressing context…,
  Context compressed), the running and elapsed labels (Running {tool}…,
  Preparing next action…, running, starting) and the two counted ones that a
  compact JSON preview renders, "{n} items" and "{n} keys";
- 2 in common.* — Copy and Copied!, which the assistant and the user message
  both need.

Three details worth knowing:

- The English values are verbatim the literals the code hard-coded, with one
  exception: "{n} tools" and "({before} → {after} messages)" are now dictionary
  plurals, so English says "1 tool" and "1 message" where it used to say
  "1 tools" and "1 messages". No test asserted either string.
- The braces around the two compact-JSON counts stay in the template
  (`[${t('messages.jsonItems', { n })}]`), so a translator never has to keep a
  bracket it cannot see the other half of.
- The message list's ContentCard shows the same published-file widget as the
  artifacts drawer, so it reads the six artifacts.* slugs of that widget rather
  than carrying six duplicates under messages.*; and its two tool-output labels
  — Result and Live output — are the words the tool card already uses, so they
  sit in common.* and the drawer's copies moved there too. docs/i18n.md records
  both.

Checked live in Chromium against the built bundle on the dev backend: five
saved sessions chosen so that between them they render every component of the
area (thinking cards, plan cards, 55 tool cards, published-content cards,
UI-component cards and a compression notice), six loads per language, with
every collapsed block expanded first and a scan for a slug leaking into the
rendered text as the pass condition. The sub-agent step cannot be reached from
a saved session — the runtime does not persist tool steps — so SubagentStep was
rendered on its own in a throwaway mount instead: "выполняется", "Аргументы",
"Результат", "[3 элемента]".
1 parent c0d5be0 commit 7e9d2cb184f91b47dc549c98ad4e552e42fe4672
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 23 hours ago
Showing 19 changed files
View
docs/i18n.md
View
webclient/dist/assets/index-BKiysbKL.css 100644 → 0
View
webclient/dist/assets/index-DvA0nuKg.js 100644 → 0
Not supported
View
webclient/dist/assets/index-_-wmv-St.js 0 → 100644
Not supported
View
webclient/dist/assets/index-mnZ4to8q.css 0 → 100644
View
webclient/dist/index.html
View
webclient/dist/sw.js
View
webclient/src/components/messages/AssistantMessage.vue
View
webclient/src/components/messages/CompressionNotice.vue
View
webclient/src/components/messages/ContentCard.vue
View
webclient/src/components/messages/SubagentStep.vue
View
webclient/src/components/messages/SummaryCard.vue
View
webclient/src/components/messages/ThinkingCard.vue
View
webclient/src/components/messages/ToolCard.vue
View
webclient/src/components/messages/UiComponentCard.vue
View
webclient/src/components/messages/UserMessage.vue
View
webclient/src/i18n/messages/en.js
View
webclient/src/i18n/messages/ru.js
View
webclient/src/i18n/messages/uk.js