From e12ddaa2c8cca22ae5853798c2b16138bc42a928 Mon Sep 17 00:00:00 2001 From: claude_code Date: Sun, 21 Jun 2026 14:24:18 +0300 Subject: [PATCH] i18n(ai-chat): complete the ru-RU AI-chat strings + record locale policy (#109) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ru-RU was missing most AI-chat keys, so the chat/typing widgets rendered mixed-language (some keys fell back to en-US). Fill the full AI-chat string set in ru-RU and document the maintenance policy. - ru-RU/translation.json: add the 24 missing AI-chat keys (labels, typing indicator, Ask-AI widget, public-share, error messages); keep the typing keys grouped; existing translations untouched. - i18n.ts: add a policy comment near fallbackLng — en-US is the source of truth; en-US + ru-RU are fully maintained; the other 10 locales intentionally rely on the en-US fallback until contributed. Co-Authored-By: Claude Opus 4.8 --- .../public/locales/ru-RU/translation.json | 24 +++++++++++++++++++ apps/client/src/i18n.ts | 9 +++++++ 2 files changed, 33 insertions(+) diff --git a/apps/client/public/locales/ru-RU/translation.json b/apps/client/public/locales/ru-RU/translation.json index 8023df3b..c5cfd007 100644 --- a/apps/client/public/locales/ru-RU/translation.json +++ b/apps/client/public/locales/ru-RU/translation.json @@ -671,6 +671,30 @@ "AI agent": "AI-агент", "AI agent is typing…": "AI-агент печатает…", "{{name}} is typing…": "{{name}} печатает…", + "Agent role": "Роль агента", + "AI chat": "AI-чат", + "AI chat is disabled for this workspace.": "AI-чат отключён для этого рабочего пространства.", + "Ask a question about this documentation.": "Задайте вопрос об этой документации.", + "Ask a question…": "Задайте вопрос…", + "Ask the AI agent anything about your workspace.": "Спросите AI-агента о чём угодно по вашему рабочему пространству.", + "Ask the AI agent…": "Спросите AI-агента…", + "Copy chat": "Копировать чат", + "Created successfully": "Успешно создано", + "Current context size": "Текущий размер контекста", + "Delete this chat?": "Удалить этот чат?", + "Deleted successfully": "Успешно удалено", + "Edited by AI agent on behalf of {{name}}": "Отредактировано AI-агентом от имени {{name}}", + "Failed to delete chat": "Не удалось удалить чат", + "Failed to rename chat": "Не удалось переименовать чат", + "Minimize": "Свернуть", + "No chats yet.": "Чатов пока нет.", + "Send": "Отправить", + "Something went wrong": "Что-то пошло не так", + "Stop": "Стоп", + "The AI agent could not respond. Please try again.": "AI-агент не смог ответить. Попробуйте ещё раз.", + "The AI provider is not configured. Ask an administrator to set it up.": "AI-провайдер не настроен. Попросите администратора настроить его.", + "Universal assistant": "Универсальный ассистент", + "You": "Вы", "AI is thinking...": "ИИ обрабатывает запрос...", "Thinking": "Думаю", "Ask a question...": "Задайте вопрос...", diff --git a/apps/client/src/i18n.ts b/apps/client/src/i18n.ts index d5c8a99e..d14b1a5c 100644 --- a/apps/client/src/i18n.ts +++ b/apps/client/src/i18n.ts @@ -12,6 +12,15 @@ i18n // init i18next // for all options read: https://www.i18next.com/overview/configuration-options .init({ + // i18n maintenance policy: + // - en-US is the source of truth for all UI strings (keys are the English text). + // - en-US and ru-RU are the fully-maintained locales; in particular, the + // AI-chat string set is kept complete in both so the UI never renders + // mixed-language (no per-key en-US fallback within a single widget). + // - The other 10 locales (fr-FR, de-DE, es-ES, nl-NL, ja-JP, zh-CN, ko-KR, + // pt-BR, it-IT, uk-UA) are partial and intentionally rely on the + // `fallbackLng: "en-US"` fallback below until translations are + // contributed (e.g. via Crowdin). fallbackLng: "en-US", debug: false, showSupportNotice: false,