<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU">
<context>
    <name>AttachedFilesPlace</name>
    <message>
        <source>Open in Qt Creator</source>
        <translation>Открыть в Qt Creator</translation>
    </message>
    <message>
        <source>Open in External Editor</source>
        <translation>Открыть во внешнем редакторе</translation>
    </message>
    <message>
        <source>Remove</source>
        <translation>Удалить</translation>
    </message>
</context>
<context>
    <name>BottomBar</name>
    <message>
        <source>Attach file to message</source>
        <translation>Прикрепить файл к сообщению</translation>
    </message>
    <message>
        <source>Attach image to message</source>
        <translation>Прикрепить изображение к сообщению</translation>
    </message>
    <message>
        <source>Link file to context</source>
        <translation>Привязать файл к контексту</translation>
    </message>
    <message>
        <source>Sync open files</source>
        <translation>Синхронизировать открытые файлы</translation>
    </message>
    <message>
        <source>Automatically synchronize currently opened files with the model context</source>
        <translation>Автоматически синхронизировать открытые в данный момент файлы с контекстом модели</translation>
    </message>
    <message>
        <source>Compressing...</source>
        <translation>Сжатие...</translation>
    </message>
    <message>
        <source>Cancel</source>
        <translation>Отмена</translation>
    </message>
    <message>
        <source>Cancel compression</source>
        <translation>Отменить сжатие</translation>
    </message>
    <message>
        <source>Compress</source>
        <translation>Сжать</translation>
    </message>
    <message>
        <source>Compress chat (create summarized copy using LLM)</source>
        <translation>Сжать чат (создать сокращённую копию с помощью LLM)</translation>
    </message>
</context>
<context>
    <name>ChatItem</name>
    <message>
        <source>↑ %1 (cached %2)</source>
        <translation>↑ %1 (в кэше %2)</translation>
    </message>
    <message>
        <source>↑ %1</source>
        <translation>↑ %1</translation>
    </message>
    <message>
        <source>↓ %1 (reasoning %2)</source>
        <translation>↓ %1 (рассуждения %2)</translation>
    </message>
    <message>
        <source>↓ %1</source>
        <translation>↓ %1</translation>
    </message>
    <message>
        <source>Σ %1</source>
        <translation>Σ %1</translation>
    </message>
    <message>
        <source>Reset chat to this message and edit</source>
        <translation>Сбросить чат до этого сообщения и редактировать</translation>
    </message>
    <message>
        <source>Click: Open in Qt Creator
Shift+Click: Open in System Editor</source>
        <translation>Клик: Открыть в Qt Creator
Shift+Клик: Открыть в системном редакторе</translation>
    </message>
    <message>
        <source>Failed to load image</source>
        <translation>Не удалось загрузить изображение</translation>
    </message>
</context>
<context>
    <name>CodeBlock</name>
    <message>
        <source>Code (%1)</source>
        <translation>Код (%1)</translation>
    </message>
    <message>
        <source>Code</source>
        <translation>Код</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Свернуть</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Развернуть</translation>
    </message>
    <message>
        <source>Copied</source>
        <translation>Скопировано</translation>
    </message>
</context>
<context>
    <name>ContextViewer</name>
    <message>
        <source>Chat Context</source>
        <translation>Контекст чата</translation>
    </message>
    <message>
        <source>Refresh</source>
        <translation>Обновить</translation>
    </message>
    <message>
        <source>Close</source>
        <translation>Закрыть</translation>
    </message>
    <message>
        <source>Base System Prompt</source>
        <translation>Базовый системный промпт</translation>
    </message>
    <message>
        <source>Active</source>
        <translation>Активно</translation>
    </message>
    <message>
        <source>Empty</source>
        <translation>Пусто</translation>
    </message>
    <message>
        <source>No system prompt configured</source>
        <translation>Системный промпт не настроен</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <source>Edit in Settings</source>
        <translation>Редактировать в настройках</translation>
    </message>
    <message>
        <source>Agent Role</source>
        <translation>Роль агента</translation>
    </message>
    <message>
        <source>No role selected. Using base system prompt only.</source>
        <translation>Роль не выбрана. Используется только базовый системный промпт.</translation>
    </message>
    <message>
        <source>Manage Roles</source>
        <translation>Управление ролями</translation>
    </message>
    <message>
        <source>Project Rules</source>
        <translation>Правила проекта</translation>
    </message>
    <message>
        <source>%1 active</source>
        <translation>%1 активно</translation>
    </message>
    <message>
        <source>None</source>
        <translation>Нет</translation>
    </message>
    <message>
        <source>Rules (%1)</source>
        <translation>Правила (%1)</translation>
    </message>
    <message>
        <source>Content</source>
        <translation>Содержимое</translation>
    </message>
    <message>
        <source>No project rules found.
Create .md files in .qodeassist/rules/common/ or .qodeassist/rules/chat/</source>
        <translation>Правила проекта не найдены.
Создайте .md файлы в .qodeassist/rules/common/ или .qodeassist/rules/chat/</translation>
    </message>
    <message>
        <source>Open Rules Folder</source>
        <translation>Открыть папку правил</translation>
    </message>
    <message>
        <source>Final prompt: Base System Prompt + Agent Role + Project Info + Project Rules + Linked Files</source>
        <translation>Итоговый промпт: Базовый системный промпт + Роль агента + Информация о проекте + Правила проекта + Привязанные файлы</translation>
    </message>
</context>
<context>
    <name>DiffStatistics</name>
    <message>
        <source>+%1 lines, -%2 lines</source>
        <translation>+%1 строк, -%2 строк</translation>
    </message>
    <message>
        <source>+%1 lines</source>
        <translation>+%1 строк</translation>
    </message>
    <message>
        <source>-%1 lines</source>
        <translation>-%1 строк</translation>
    </message>
    <message>
        <source>No changes</source>
        <translation>Без изменений</translation>
    </message>
</context>
<context>
    <name>FileEditBlock</name>
    <message>
        <source>ARCHIVED</source>
        <translation>АРХИВ</translation>
    </message>
    <message>
        <source>APPLIED</source>
        <translation>ПРИМЕНЕНО</translation>
    </message>
    <message>
        <source>REJECTED</source>
        <translation>ОТКЛОНЕНО</translation>
    </message>
    <message>
        <source>PENDING</source>
        <translation>ОЖИДАЕТ</translation>
    </message>
    <message>
        <source>Replace</source>
        <translation>Заменить</translation>
    </message>
    <message>
        <source>Append</source>
        <translation>Добавить</translation>
    </message>
    <message>
        <source>%1: %2 (+%3 -%4)</source>
        <translation>%1: %2 (+%3 -%4)</translation>
    </message>
    <message>
        <source>%1: %2 (+%3)</source>
        <translation>%1: %2 (+%3)</translation>
    </message>
    <message>
        <source>Open file in editor and navigate to changes</source>
        <translation>Открыть файл в редакторе и перейти к изменениям</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Свернуть</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Развернуть</translation>
    </message>
</context>
<context>
    <name>FileEditsActionBar</name>
    <message>
        <source>File Edit in Current Message</source>
        <translation>Изменение файла в текущем сообщении</translation>
    </message>
    <message>
        <source>%1 File Edits in Current Message</source>
        <translation>%1 изменений файлов в текущем сообщении</translation>
    </message>
    <message>
        <source>%1 applied</source>
        <translation>%1 применено</translation>
    </message>
    <message>
        <source>%1 pending</source>
        <translation>%1 в ожидании</translation>
    </message>
    <message>
        <source>%1 rejected</source>
        <translation>%1 отклонено</translation>
    </message>
    <message>
        <source>Apply All (%1)</source>
        <translation>Применить все (%1)</translation>
    </message>
    <message>
        <source>Reapply All (%1)</source>
        <translation>Повторно применить все (%1)</translation>
    </message>
    <message>
        <source>Apply all pending and rejected edits in this message</source>
        <translation>Применить все ожидающие и отклонённые изменения в этом сообщении</translation>
    </message>
    <message>
        <source>Reapply all rejected edits in this message</source>
        <translation>Повторно применить все отклонённые изменения в этом сообщении</translation>
    </message>
    <message>
        <source>Undo All (%1)</source>
        <translation>Отменить все (%1)</translation>
    </message>
    <message>
        <source>Undo all applied edits in this message</source>
        <translation>Отменить все применённые изменения в этом сообщении</translation>
    </message>
</context>
<context>
    <name>MessageNavigator</name>
    <message>
        <source>#%1  ·  %2</source>
        <translation>#%1  ·  %2</translation>
    </message>
    <message>
        <source>Jump to message #%1</source>
        <translation>Перейти к сообщению #%1</translation>
    </message>
</context>
<context>
    <name>QObject</name>
    <message>
        <source>Template Not Found</source>
        <translation>Шаблон не найден</translation>
    </message>
    <message>
        <source>Template &apos;%1&apos; was not found or has been updated. Please re-set new one.</source>
        <translation>Шаблон &apos;%1&apos; не найден или был обновлён. Пожалуйста, выберите новый.</translation>
    </message>
    <message>
        <source>Providers</source>
        <translation>Провайдеры</translation>
    </message>
    <message>
        <source>Agents</source>
        <translation>Агенты</translation>
    </message>
    <message>
        <source>Current Settings</source>
        <translation>Текущие настройки</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatCompressor</name>
    <message>
        <source>Compression already in progress</source>
        <translation>Сжатие уже выполняется</translation>
    </message>
    <message>
        <source>No chat file to compress</source>
        <translation>Нет файла чата для сжатия</translation>
    </message>
    <message>
        <source>Chat is empty, nothing to compress</source>
        <translation>Чат пуст, нечего сжимать</translation>
    </message>
    <message>
        <source>No provider available</source>
        <translation>Нет доступных провайдеров</translation>
    </message>
    <message>
        <source>No template available</source>
        <translation>Нет доступных шаблонов</translation>
    </message>
    <message>
        <source>Compression cancelled</source>
        <translation>Сжатие отменено</translation>
    </message>
    <message>
        <source>Failed to save compressed chat</source>
        <translation>Не удалось сохранить сжатый чат</translation>
    </message>
    <message>
        <source>Compression failed: %1</source>
        <translation>Сжатие не удалось: %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatFileManager</name>
    <message>
        <source>File is not accessible: %1</source>
        <translation>Файл недоступен: %1</translation>
    </message>
    <message>
        <source>Failed to copy file: %1</source>
        <translation>Не удалось скопировать файл: %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatHistoryStore</name>
    <message>
        <source>Save Chat History</source>
        <translation>Сохранить историю чата</translation>
    </message>
    <message>
        <source>JSON files (*.json)</source>
        <translation>Файлы JSON (*.json)</translation>
    </message>
    <message>
        <source>Load Chat History</source>
        <translation>Загрузить историю чата</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatRootView</name>
    <message>
        <source>Chat compressed successfully!</source>
        <translation>Чат успешно сжат!</translation>
    </message>
    <message>
        <source>This chat file is already in use by another QodeAssist chat session.</source>
        <translation>Этот файл чата уже используется в другой сессии QodeAssist.</translation>
    </message>
    <message>
        <source>This chat is already open in another QodeAssist chat session.</source>
        <translation>Этот чат уже открыт в другой сессии QodeAssist.</translation>
    </message>
    <message>
        <source>Select Files to Attach</source>
        <translation>Выберите файлы для прикрепления</translation>
    </message>
    <message numerus="yes">
        <source>Images automatically moved to Attach zone (%n file(s))</source>
        <translation>
            <numerusform>Изображения автоматически перемещены в зону прикрепления (%n файл(ов))</numerusform>
            <numerusform>Изображения автоматически перемещены в зону прикрепления (%n файл(ов))</numerusform>
            <numerusform>Изображения автоматически перемещены в зону прикрепления (%n файл(ов))</numerusform>
        </translation>
    </message>
    <message>
        <source>Select Images to Attach</source>
        <translation>Выберите изображения для прикрепления</translation>
    </message>
    <message>
        <source>Images (*.png *.jpg *.jpeg *.gif *.bmp *.webp)</source>
        <translation>Изображения (*.png *.jpg *.jpeg *.gif *.bmp *.webp)</translation>
    </message>
    <message>
        <source>Compression is already in progress</source>
        <translation>Сжатие уже выполняется</translation>
    </message>
    <message>
        <source>No chat file to compress. Please save the chat first.</source>
        <translation>Нет файла чата для сжатия. Сначала сохраните чат.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::NavigationPanel</name>
    <message>
        <source>QodeAssist Chat</source>
        <translation>Чат QodeAssist</translation>
    </message>
</context>
<context>
    <name>QodeAssist::EditorChatButton</name>
    <message>
        <source>Open QodeAssist Chat</source>
        <translation>Открыть чат QodeAssist</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Mcp::McpServerManager</name>
    <message>
        <source>QodeAssist MCP server exposing Qt Creator project tools.</source>
        <translation>MCP-сервер QodeAssist, предоставляющий инструменты проекта Qt Creator.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::QodeAssistClient</name>
    <message>
        <source>Code completion failed: %1</source>
        <translation>Автодополнение кода не удалось: %1</translation>
    </message>
    <message>
        <source>Quick refactor failed</source>
        <translation>Быстрый рефакторинг не удался</translation>
    </message>
    <message>
        <source>Quick refactor failed: %1</source>
        <translation>Быстрый рефакторинг не удался: %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::RefactorWidget</name>
    <message>
        <source>◄ Original</source>
        <translation>◄ Оригинал</translation>
    </message>
    <message>
        <source>Refactored ►</source>
        <translation>Рефакторинг ►</translation>
    </message>
    <message>
        <source>✓ Apply (⌘+Enter)</source>
        <translation>✓ Применить (⌘+Enter)</translation>
    </message>
    <message>
        <source>✓ Apply (Ctrl+Enter)</source>
        <translation>✓ Применить (Ctrl+Enter)</translation>
    </message>
    <message>
        <source>✗ Decline (Esc)</source>
        <translation>✗ Отклонить (Esc)</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentDetailPane</name>
    <message>
        <source>Open in editor</source>
        <translation>Открыть в редакторе</translation>
    </message>
    <message>
        <source>Duplicate…</source>
        <translation>Дублировать…</translation>
    </message>
    <message>
        <source>Delete</source>
        <translation>Удалить</translation>
    </message>
    <message>
        <source>Identity</source>
        <translation>Идентификация</translation>
    </message>
    <message>
        <source>Extends:</source>
        <translation>Наследует от:</translation>
    </message>
    <message>
        <source>Name:</source>
        <translation>Имя:</translation>
    </message>
    <message>
        <source>Description:</source>
        <translation>Описание:</translation>
    </message>
    <message>
        <source>Tags:</source>
        <translation>Теги:</translation>
    </message>
    <message>
        <source>Comma-separated. Free-form — used to filter and group the agent list.</source>
        <translation>Через запятую. Свободная форма — используется для фильтрации и группировки списка агентов.</translation>
    </message>
    <message>
        <source>System role</source>
        <translation>Системная роль</translation>
    </message>
    <message>
        <source>Prepended to every request as the system message.</source>
        <translation>Добавляется в начало каждого запроса как системное сообщение.</translation>
    </message>
    <message>
        <source>Context</source>
        <translation>Контекст</translation>
    </message>
    <message>
        <source>Jinja2 template rendered with ContextManager bindings into the agent.context system-prompt layer. Empty = no context block.</source>
        <translation>Шаблон Jinja2, рендерится с привязками ContextManager в слой системного промпта agent.context. Пусто = нет блока контекста.</translation>
    </message>
    <message>
        <source>Connection</source>
        <translation>Соединение</translation>
    </message>
    <message>
        <source>Provider:</source>
        <translation>Провайдер:</translation>
    </message>
    <message>
        <source>The provider instance this agent uses. URL is inherited from the instance.</source>
        <translation>Экземпляр провайдера, который использует этот агент. URL наследуется от экземпляра.</translation>
    </message>
    <message>
        <source>Endpoint:</source>
        <translation>Конечная точка:</translation>
    </message>
    <message>
        <source>Appended to the provider&apos;s URL. Blank uses the provider default.</source>
        <translation>Добавляется к URL провайдера. Пусто — используется значение по умолчанию провайдера.</translation>
    </message>
    <message>
        <source>Model:</source>
        <translation>Модель:</translation>
    </message>
    <message>
        <source>Match</source>
        <translation>Соответствие</translation>
    </message>
    <message>
        <source>When a feature slot has multiple bound agents, the first whose match rules satisfy the current context wins.</source>
        <translation>Когда к слоту функции привязано несколько агентов, побеждает первый, чьи правила соответствия удовлетворяют текущему контексту.</translation>
    </message>
    <message>
        <source>File patterns:</source>
        <translation>Шаблоны файлов:</translation>
    </message>
    <message>
        <source>Globs, comma-separated. Empty matches every file.</source>
        <translation>Glob-шаблоны через запятую. Пусто соответствует любому файлу.</translation>
    </message>
    <message>
        <source>Template</source>
        <translation>Шаблон</translation>
    </message>
    <message>
        <source>Jinja2 template (via inja) rendered to the request body. Built-in context: ctx.prefix, ctx.suffix, ctx.history, ctx.system_prompt, agent.model.</source>
        <translation>Шаблон Jinja2 (через inja), рендерится в тело запроса. Встроенный контекст: ctx.prefix, ctx.suffix, ctx.history, ctx.system_prompt, agent.model.</translation>
    </message>
    <message>
        <source>message_format:</source>
        <translation>message_format:</translation>
    </message>
    <message>
        <source>Load errors</source>
        <translation>Ошибки загрузки</translation>
    </message>
    <message>
        <source>▸ Show raw TOML</source>
        <translation>▸ Показать исходный TOML</translation>
    </message>
    <message>
        <source>▾ Hide raw TOML</source>
        <translation>▾ Скрыть исходный TOML</translation>
    </message>
    <message>
        <source>No description provided.</source>
        <translation>Описание не указано.</translation>
    </message>
    <message>
        <source>%1  (missing — not in provider library)</source>
        <translation>%1  (отсутствует — нет в библиотеке провайдеров)</translation>
    </message>
    <message>
        <source>(provider default)</source>
        <translation>(по умолчанию провайдера)</translation>
    </message>
    <message>
        <source># effective request line
(unknown — provider instance not found)</source>
        <translation># эффективная строка запроса
(неизвестно — экземпляр провайдера не найден)</translation>
    </message>
    <message>
        <source>effective request line</source>
        <translation>эффективная строка запроса</translation>
    </message>
    <message>
        <source>(no system role set)</source>
        <translation>(системная роль не задана)</translation>
    </message>
    <message>
        <source>(no context block)</source>
        <translation>(нет блока контекста)</translation>
    </message>
    <message>
        <source>(matches every file)</source>
        <translation>(соответствует любому файлу)</translation>
    </message>
    <message>
        <source>(inherited from parent / none)</source>
        <translation>(наследуется от родителя / нет)</translation>
    </message>
    <message>
        <source>(truncated at %1 bytes)</source>
        <translation>(обрезано на %1 байт)</translation>
    </message>
    <message>
        <source>(source file is empty)</source>
        <translation>(исходный файл пуст)</translation>
    </message>
    <message>
        <source>(source file unavailable: %1)</source>
        <translation>(исходный файл недоступен: %1)</translation>
    </message>
    <message>
        <source>Bundled agents are read-only — duplicate to edit.</source>
        <translation>Встроенные агенты доступны только для чтения — дублируйте для редактирования.</translation>
    </message>
    <message>
        <source>Bundled agents cannot be deleted.</source>
        <translation>Встроенные агенты нельзя удалить.</translation>
    </message>
    <message>
        <source>Select an agent</source>
        <translation>Выберите агента</translation>
    </message>
    <message>
        <source>Pick an agent from the list to see its details.</source>
        <translation>Выберите агента из списка, чтобы увидеть подробности.</translation>
    </message>
    <message>
        <source>error: %1</source>
        <translation>ошибка: %1</translation>
    </message>
    <message>
        <source>warning: %1</source>
        <translation>предупреждение: %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentListPane</name>
    <message>
        <source>Filter agents…</source>
        <translation>Фильтр агентов…</translation>
    </message>
    <message>
        <source>User</source>
        <translation>Пользовательские</translation>
    </message>
    <message>
        <source>Bundled</source>
        <translation>Встроенные</translation>
    </message>
    <message>
        <source>No agents match these filters.</source>
        <translation>Нет агентов, соответствующих этим фильтрам.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentRoleDialog</name>
    <message>
        <source>Add Agent Role</source>
        <translation>Добавить роль агента</translation>
    </message>
    <message>
        <source>Duplicate Agent Role</source>
        <translation>Дублировать роль агента</translation>
    </message>
    <message>
        <source>Edit Agent Role</source>
        <translation>Редактировать роль агента</translation>
    </message>
    <message>
        <source>e.g., Developer, Code Reviewer</source>
        <translation>напр., Разработчик, Ревьюер кода</translation>
    </message>
    <message>
        <source>Name:</source>
        <translation>Имя:</translation>
    </message>
    <message>
        <source>e.g., developer, code_reviewer</source>
        <translation>напр., developer, code_reviewer</translation>
    </message>
    <message>
        <source>ID:</source>
        <translation>ID:</translation>
    </message>
    <message>
        <source>Brief description of this role...</source>
        <translation>Краткое описание этой роли...</translation>
    </message>
    <message>
        <source>Description:</source>
        <translation>Описание:</translation>
    </message>
    <message>
        <source>System Prompt:</source>
        <translation>Системный промпт:</translation>
    </message>
    <message>
        <source>You are an expert in...

Your role is to:
- Task 1
- Task 2
- Task 3</source>
        <translation>Вы — эксперт в...

Ваша роль:
- Задача 1
- Задача 2
- Задача 3</translation>
    </message>
    <message>
        <source>ID cannot be changed for existing roles</source>
        <translation>ID нельзя изменить для существующих ролей</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentsWidget</name>
    <message>
        <source>Agents</source>
        <translation>Агенты</translation>
    </message>
    <message>
        <source>Reload from disk</source>
        <translation>Перезагрузить с диска</translation>
    </message>
    <message>
        <source>Open agents folder</source>
        <translation>Открыть папку агентов</translation>
    </message>
    <message>
        <source>Open agent</source>
        <translation>Открыть агента</translation>
    </message>
    <message>
        <source>&apos;%1&apos; is bundled with the plugin and read-only.
Use Duplicate to create an editable user copy.</source>
        <translation>&apos;%1&apos; поставляется с плагином и доступен только для чтения.
Используйте «Дублировать», чтобы создать редактируемую пользовательскую копию.</translation>
    </message>
    <message>
        <source>Agent &apos;%1&apos; has no editable source file.</source>
        <translation>У агента &apos;%1&apos; нет редактируемого исходного файла.</translation>
    </message>
    <message>
        <source>Could not open %1.</source>
        <translation>Не удалось открыть %1.</translation>
    </message>
    <message>
        <source>Duplicate</source>
        <translation>Дублировать</translation>
    </message>
    <message>
        <source>Delete Agent</source>
        <translation>Удалить агента</translation>
    </message>
    <message>
        <source>Delete agent &apos;%1&apos;?

This will remove the file:
%2</source>
        <translation>Удалить агента &apos;%1&apos;?

Это удалит файл:
%2</translation>
    </message>
    <message>
        <source>Could not delete the agent file:
%1</source>
        <translation>Не удалось удалить файл агента:
%1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::McpClientsListAspect</name>
    <message>
        <source>Connected.</source>
        <translation>Подключено.</translation>
    </message>
    <message>
        <source>Connecting…</source>
        <translation>Подключение…</translation>
    </message>
    <message>
        <source>Failed.</source>
        <translation>Ошибка.</translation>
    </message>
    <message>
        <source>Failed: %1</source>
        <translation>Ошибка: %1</translation>
    </message>
    <message>
        <source>Disabled.</source>
        <translation>Отключено.</translation>
    </message>
    <message>
        <source>everything (reference test server)</source>
        <translation>everything (эталонный тестовый сервер)</translation>
    </message>
    <message>
        <source>filesystem (local files)</source>
        <translation>filesystem (локальные файлы)</translation>
    </message>
    <message>
        <source>memory (in-memory key-value)</source>
        <translation>memory (ключ-значение в памяти)</translation>
    </message>
    <message>
        <source>git (local git ops)</source>
        <translation>git (локальные операции git)</translation>
    </message>
    <message>
        <source>time (system clock)</source>
        <translation>time (системные часы)</translation>
    </message>
    <message>
        <source>qtcreator (Qt Creator&apos;s built-in MCP server)</source>
        <translation>qtcreator (встроенный MCP-сервер Qt Creator)</translation>
    </message>
    <message>
        <source>qt-docs (Qt documentation)</source>
        <translation>qt-docs (документация Qt)</translation>
    </message>
    <message>
        <source>remote (SSE / HTTP)</source>
        <translation>remote (SSE / HTTP)</translation>
    </message>
    <message>
        <source>Server reports no tools.</source>
        <translation>Сервер сообщает об отсутствии инструментов.</translation>
    </message>
    <message>
        <source>Tools</source>
        <translation>Инструменты</translation>
    </message>
    <message>
        <source>Enable / disable this MCP server</source>
        <translation>Включить / выключить этот MCP-сервер</translation>
    </message>
    <message>
        <source>Remove this server from the config.</source>
        <translation>Удалить этот сервер из конфигурации.</translation>
    </message>
    <message>
        <source>Remove server</source>
        <translation>Удалить сервер</translation>
    </message>
    <message>
        <source>Remove server &apos;%1&apos; from the config?</source>
        <translation>Удалить сервер &apos;%1&apos; из конфигурации?</translation>
    </message>
    <message>
        <source>Open Config</source>
        <translation>Открыть конфигурацию</translation>
    </message>
    <message>
        <source>Refresh MCP List</source>
        <translation>Обновить список MCP</translation>
    </message>
    <message>
        <source>Note: restart Qt Creator to apply MCP changes to already-opened chats and running sessions.</source>
        <translation>Примечание: перезапустите Qt Creator, чтобы применить изменения MCP к уже открытым чатам и работающим сессиям.</translation>
    </message>
    <message>
        <source>Quick Setup</source>
        <translation>Быстрая настройка</translation>
    </message>
    <message>
        <source>Pick a preset to append a ready-made server entry to the config (auto-suffixed if the name is taken).</source>
        <translation>Выберите пресет, чтобы добавить готовую запись сервера в конфигурацию (с автодобавлением суффикса, если имя занято).</translation>
    </message>
    <message>
        <source>-- Select Preset --</source>
        <translation>-- Выберите пресет --</translation>
    </message>
    <message>
        <source>No servers configured. Add a preset below or edit the JSON.</source>
        <translation>Серверы не настроены. Добавьте пресет ниже или отредактируйте JSON.</translation>
    </message>
    <message>
        <source>0 server(s) defined.</source>
        <translation>Определено 0 серверов.</translation>
    </message>
    <message>
        <source>%1 server(s) defined, %2 enabled.</source>
        <translation>Определено %1 серверов, включено %2.</translation>
    </message>
    <message>
        <source>MCP configuration</source>
        <translation>Конфигурация MCP</translation>
    </message>
    <message>
        <source>Failed to write %1:
%2</source>
        <translation>Не удалось записать %1:
%2</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::ProviderDetailPane</name>
    <message>
        <source>Edit…</source>
        <translation>Редактировать…</translation>
    </message>
    <message>
        <source>Open in editor</source>
        <translation>Открыть в редакторе</translation>
    </message>
    <message>
        <source>Open this provider&apos;s TOML file in Qt Creator. Bundled providers are read-only — duplicate first.</source>
        <translation>Открыть TOML-файл этого провайдера в Qt Creator. Встроенные провайдеры доступны только для чтения — сначала дублируйте.</translation>
    </message>
    <message>
        <source>Duplicate…</source>
        <translation>Дублировать…</translation>
    </message>
    <message>
        <source>Delete</source>
        <translation>Удалить</translation>
    </message>
    <message>
        <source>Cancel</source>
        <translation>Отмена</translation>
    </message>
    <message>
        <source>Save</source>
        <translation>Сохранить</translation>
    </message>
    <message>
        <source>Identity</source>
        <translation>Идентификация</translation>
    </message>
    <message>
        <source>Name:</source>
        <translation>Имя:</translation>
    </message>
    <message>
        <source>Client API:</source>
        <translation>Клиентский API:</translation>
    </message>
    <message>
        <source>The client API this provider speaks. Cannot be changed after creation.</source>
        <translation>Клиентский API, на котором говорит этот провайдер. Нельзя изменить после создания.</translation>
    </message>
    <message>
        <source>Description:</source>
        <translation>Описание:</translation>
    </message>
    <message>
        <source>Endpoint</source>
        <translation>Конечная точка</translation>
    </message>
    <message>
        <source>URL:</source>
        <translation>URL:</translation>
    </message>
    <message>
        <source>Base URL. Agents append their endpoint path (e.g. /chat/completions) to this.</source>
        <translation>Базовый URL. Агенты добавляют к нему свой путь конечной точки (напр. /chat/completions).</translation>
    </message>
    <message>
        <source>Credentials</source>
        <translation>Учётные данные</translation>
    </message>
    <message>
        <source>Enter API key…</source>
        <translation>Введите API-ключ…</translation>
    </message>
    <message>
        <source>Show / hide API key</source>
        <translation>Показать / скрыть API-ключ</translation>
    </message>
    <message>
        <source>Save key</source>
        <translation>Сохранить ключ</translation>
    </message>
    <message>
        <source>Clear</source>
        <translation>Очистить</translation>
    </message>
    <message>
        <source>Erase the stored API key for this provider</source>
        <translation>Стереть сохранённый API-ключ для этого провайдера</translation>
    </message>
    <message>
        <source>API key:</source>
        <translation>API-ключ:</translation>
    </message>
    <message>
        <source>Launch</source>
        <translation>Запуск</translation>
    </message>
    <message>
        <source>idle</source>
        <translation>ожидание</translation>
    </message>
    <message>
        <source>Start</source>
        <translation>Запустить</translation>
    </message>
    <message>
        <source>Stop</source>
        <translation>Остановить</translation>
    </message>
    <message>
        <source>Restart</source>
        <translation>Перезапустить</translation>
    </message>
    <message>
        <source>▸ Show launch terminal</source>
        <translation>▸ Показать терминал запуска</translation>
    </message>
    <message>
        <source>▾ Hide launch terminal</source>
        <translation>▾ Скрыть терминал запуска</translation>
    </message>
    <message>
        <source>▸ Show raw TOML</source>
        <translation>▸ Показать исходный TOML</translation>
    </message>
    <message>
        <source>▾ Hide raw TOML</source>
        <translation>▾ Скрыть исходный TOML</translation>
    </message>
    <message>
        <source>No description provided.</source>
        <translation>Описание не указано.</translation>
    </message>
    <message>
        <source>— not required (local provider)</source>
        <translation>— не требуется (локальный провайдер)</translation>
    </message>
    <message>
        <source>This provider type does not use a key.</source>
        <translation>Этот тип провайдера не использует ключ.</translation>
    </message>
    <message>
        <source>Stored — enter a new key to replace it.</source>
        <translation>Сохранён — введите новый ключ для замены.</translation>
    </message>
    <message>
        <source>A key is stored. Type a new key and press Save key to replace it, or Clear to erase it.</source>
        <translation>Ключ сохранён. Введите новый ключ и нажмите «Сохранить ключ», чтобы заменить его, или «Очистить», чтобы стереть.</translation>
    </message>
    <message>
        <source>No key stored yet. Type a key and press Save key.</source>
        <translation>Ключ ещё не сохранён. Введите ключ и нажмите «Сохранить ключ».</translation>
    </message>
    <message>
        <source>Select a provider</source>
        <translation>Выберите провайдера</translation>
    </message>
    <message>
        <source>No [launch] block. This provider is treated as external — the plugin will not spawn or supervise any process. Add a [launch] block to the TOML to have the plugin manage a local server here.</source>
        <translation>Нет блока [launch]. Этот провайдер считается внешним — плагин не будет запускать или контролировать процесс. Добавьте блок [launch] в TOML, чтобы плагин управлял локальным сервером здесь.</translation>
    </message>
    <message>
        <source> &lt;span style=&apos;color:gray&apos;&gt;(detached — survives Qt Creator restart)&lt;/span&gt;</source>
        <translation> &lt;span style=&apos;color:gray&apos;&gt;(отсоединён — переживает перезапуск Qt Creator)&lt;/span&gt;</translation>
    </message>
    <message>
        <source>starting…</source>
        <translation>запуск…</translation>
    </message>
    <message>
        <source>probing…</source>
        <translation>проверка…</translation>
    </message>
    <message>
        <source>ready</source>
        <translation>готово</translation>
    </message>
    <message>
        <source>stopping…</source>
        <translation>остановка…</translation>
    </message>
    <message>
        <source>failed</source>
        <translation>ошибка</translation>
    </message>
    <message>
        <source>failed — %1</source>
        <translation>ошибка — %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::ProvidersPageWidget</name>
    <message>
        <source>Providers</source>
        <translation>Провайдеры</translation>
    </message>
    <message>
        <source>Filter providers…</source>
        <translation>Фильтр провайдеров…</translation>
    </message>
    <message>
        <source>Open in editor</source>
        <translation>Открыть в редакторе</translation>
    </message>
    <message>
        <source>Bundled providers are read-only. Use Duplicate to create an editable user copy first.</source>
        <translation>Встроенные провайдеры доступны только для чтения. Используйте «Дублировать», чтобы сначала создать редактируемую пользовательскую копию.</translation>
    </message>
    <message>
        <source>No user instances yet.</source>
        <translation>Пока нет пользовательских экземпляров.</translation>
    </message>
    <message>
        <source>No bundled instances loaded.</source>
        <translation>Встроенные экземпляры не загружены.</translation>
    </message>
    <message>
        <source>User</source>
        <translation>Пользовательские</translation>
    </message>
    <message>
        <source>Bundled</source>
        <translation>Встроенные</translation>
    </message>
    <message>
        <source>Duplicate provider</source>
        <translation>Дублировать провайдера</translation>
    </message>
    <message>
        <source>Name for the new provider:</source>
        <translation>Имя нового провайдера:</translation>
    </message>
    <message>
        <source>An instance named &apos;%1&apos; already exists.</source>
        <translation>Экземпляр с именем &apos;%1&apos; уже существует.</translation>
    </message>
    <message>
        <source>Delete provider</source>
        <translation>Удалить провайдера</translation>
    </message>
    <message>
        <source>Delete user provider &apos;%1&apos;?

File: %2</source>
        <translation>Удалить пользовательского провайдера &apos;%1&apos;?

Файл: %2</translation>
    </message>
    <message>
        <source>Failed to delete file:
%1</source>
        <translation>Не удалось удалить файл:
%1</translation>
    </message>
    <message>
        <source>Save</source>
        <translation>Сохранить</translation>
    </message>
    <message>
        <source>Name cannot be empty.</source>
        <translation>Имя не может быть пустым.</translation>
    </message>
    <message>
        <source>Save anyway?</source>
        <translation>Сохранить всё равно?</translation>
    </message>
    <message>
        <source>Saved to:
%1

but could not remove the old file:
%2

Two provider files now describe this instance — delete the old file manually to avoid a duplicate-name error.</source>
        <translation>Сохранено в:
%1

но не удалось удалить старый файл:
%2

Теперь этот экземпляр описан в двух файлах провайдера — удалите старый файл вручную, чтобы избежать ошибки дублирования имени.</translation>
    </message>
    <message>
        <source>Clear API key</source>
        <translation>Очистить API-ключ</translation>
    </message>
    <message>
        <source>Erase the stored API key for &apos;%1&apos;?</source>
        <translation>Стереть сохранённый API-ключ для &apos;%1&apos;?</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::TagFilterStrip</name>
    <message>
        <source>FILTER BY TAG</source>
        <translation>ФИЛЬТР ПО ТЕГУ</translation>
    </message>
    <message>
        <source>clear</source>
        <translation>очистить</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Tools::TodoTool</name>
    <message>
        <source>Error: &apos;tasks&apos; parameter (array) is required for &apos;add&apos; operation. Example: {&quot;operation&quot;: &quot;add&quot;, &quot;tasks&quot;: [&quot;Task 1&quot;, &quot;Task 2&quot;]}</source>
        <translation>Ошибка: для операции &apos;add&apos; требуется параметр &apos;tasks&apos; (массив). Пример: {&quot;operation&quot;: &quot;add&quot;, &quot;tasks&quot;: [&quot;Task 1&quot;, &quot;Task 2&quot;]}</translation>
    </message>
    <message>
        <source>Error: &apos;tasks&apos; array cannot be empty. Provide at least one task.</source>
        <translation>Ошибка: массив &apos;tasks&apos; не может быть пустым. Укажите хотя бы одну задачу.</translation>
    </message>
    <message>
        <source>Error: All tasks in &apos;tasks&apos; array are empty strings.</source>
        <translation>Ошибка: все задачи в массиве &apos;tasks&apos; — пустые строки.</translation>
    </message>
    <message>
        <source>Error: &apos;todo_ids&apos; parameter (array) is required for &apos;complete&apos; operation. Example: {&quot;operation&quot;: &quot;complete&quot;, &quot;todo_ids&quot;: [1, 2, 3]}</source>
        <translation>Ошибка: для операции &apos;complete&apos; требуется параметр &apos;todo_ids&apos; (массив). Пример: {&quot;operation&quot;: &quot;complete&quot;, &quot;todo_ids&quot;: [1, 2, 3]}</translation>
    </message>
    <message>
        <source>Error: &apos;todo_ids&apos; array cannot be empty. Provide at least one ID.</source>
        <translation>Ошибка: массив &apos;todo_ids&apos; не может быть пустым. Укажите хотя бы один ID.</translation>
    </message>
    <message>
        <source>Error: All IDs in &apos;todo_ids&apos; array are invalid. IDs must be positive integers.</source>
        <translation>Ошибка: все ID в массиве &apos;todo_ids&apos; недействительны. ID должны быть положительными целыми числами.</translation>
    </message>
    <message>
        <source>Error: Unknown operation &apos;%1&apos;. Valid operations: &apos;add&apos;, &apos;complete&apos;, &apos;list&apos;</source>
        <translation>Ошибка: неизвестная операция &apos;%1&apos;. Допустимые операции: &apos;add&apos;, &apos;complete&apos;, &apos;list&apos;</translation>
    </message>
    <message>
        <source>✓ Added 1 new task</source>
        <translation>✓ Добавлена 1 новая задача</translation>
    </message>
    <message>
        <source>✓ Added %1 new tasks</source>
        <translation>✓ Добавлено новых задач: %1</translation>
    </message>
    <message>
        <source>Error: No todos found in this session</source>
        <translation>Ошибка: в этой сессии не найдено задач</translation>
    </message>
    <message>
        <source>✓ Marked 1 task as completed</source>
        <translation>✓ 1 задача отмечена как выполненная</translation>
    </message>
    <message>
        <source>✓ Marked %1 tasks as completed</source>
        <translation>✓ Задач отмечено как выполненные: %1</translation>
    </message>
    <message>
        <source>⚠ %1 already completed</source>
        <translation>⚠ %1 уже выполнено</translation>
    </message>
    <message>
        <source>❌ Not found: %1</source>
        <translation>❌ Не найдено: %1</translation>
    </message>
    <message>
        <source>📋 TODO List: (empty)</source>
        <translation>📋 Список задач: (пусто)</translation>
    </message>
    <message>
        <source>📋 TODO List:</source>
        <translation>📋 Список задач:</translation>
    </message>
    <message>
        <source>Progress: %1/%2 completed (%3%)</source>
        <translation>Прогресс: %1/%2 выполнено (%3%)</translation>
    </message>
    <message>
        <source>📋 All tasks completed! 🎉</source>
        <translation>📋 Все задачи выполнены! 🎉</translation>
    </message>
    <message>
        <source>📋 Remaining tasks:</source>
        <translation>📋 Оставшиеся задачи:</translation>
    </message>
</context>
<context>
    <name>QodeAssist::UpdateDialog</name>
    <message>
        <source>QodeAssist Update</source>
        <translation>Обновление QodeAssist</translation>
    </message>
    <message>
        <source>QodeAssist is an open-source project that helps
developers write better code. If you find it useful, please</source>
        <translation>QodeAssist — это проект с открытым исходным кодом, который помогает
разработчикам писать код лучше. Если он полезен для вас, пожалуйста</translation>
    </message>
    <message>
        <source>Install via Extension Registry (recommended)</source>
        <translation>Установка через Extension Registry (рекомендуется)</translation>
    </message>
    <message>
        <source>In Qt Creator open Extensions → Browser tab, enable &quot;Use External Repository&quot;, add one of the URLs below and click Apply to install QodeAssist. Updates are then installed from the same screen.</source>
        <translation>В Qt Creator откройте Extensions → вкладку Browser, включите «Use External Repository», добавьте один из URL ниже и нажмите Apply, чтобы установить QodeAssist. Обновления затем устанавливаются на том же экране.</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <source>Latest (for the newest Qt Creator, always up to date)</source>
        <translation>Последняя (для новейшего Qt Creator, всегда актуальная)</translation>
    </message>
    <message>
        <source>Only for Qt Creator %1</source>
        <translation>Только для Qt Creator %1</translation>
    </message>
    <message>
        <source>Alternative: QodeAssistUpdater</source>
        <translation>Альтернатива: QodeAssistUpdater</translation>
    </message>
    <message>
        <source>A standalone tool for installing and updating the plugin.</source>
        <translation>Отдельный инструмент для установки и обновления плагина.</translation>
    </message>
    <message>
        <source>Download QodeAssistUpdater</source>
        <translation>Скачать QodeAssistUpdater</translation>
    </message>
    <message>
        <source>A new version of QodeAssist is available!</source>
        <translation>Доступна новая версия QodeAssist!</translation>
    </message>
    <message>
        <source>Version %1 is now available - you have %2</source>
        <translation>Доступна версия %1 — у вас %2</translation>
    </message>
    <message>
        <source>Release Notes:</source>
        <translation>Заметки о выпуске:</translation>
    </message>
    <message>
        <source>Open Release Page</source>
        <translation>Открыть страницу выпуска</translation>
    </message>
    <message>
        <source>Open Plugin Folder</source>
        <translation>Открыть папку плагина</translation>
    </message>
    <message>
        <source>Close</source>
        <translation>Закрыть</translation>
    </message>
    <message>
        <source>QodeAssist is up to date</source>
        <translation>QodeAssist обновлён до последней версии</translation>
    </message>
    <message>
        <source>You are using the latest version: %1</source>
        <translation>Вы используете последнюю версию: %1</translation>
    </message>
    <message>
        <source>No release notes available. Check the release page for more information.</source>
        <translation>Заметки о выпуске недоступны. Проверьте страницу выпуска для получения дополнительной информации.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::UpdateStatusWidget</name>
    <message>
        <source>Update</source>
        <translation>Обновить</translation>
    </message>
    <message>
        <source>New version: v%1</source>
        <translation>Новая версия: v%1</translation>
    </message>
    <message>
        <source>Check update information</source>
        <translation>Проверить информацию об обновлении</translation>
    </message>
</context>
<context>
    <name>QtC::QodeAssist</name>
    <message>
        <source>Cannot create user provider folder:
%1</source>
        <translation>Не удалось создать папку пользовательского провайдера:
%1</translation>
    </message>
    <message>
        <source>Cannot pick a free filename in:
%1</source>
        <translation>Не удалось подобрать свободное имя файла в:
%1</translation>
    </message>
    <message>
        <source>Cannot write %1:
%2</source>
        <translation>Не удалось записать %1:
%2</translation>
    </message>
    <message>
        <source>Write failed for %1:
%2</source>
        <translation>Запись не удалась для %1:
%2</translation>
    </message>
    <message>
        <source>Request timeout (seconds):</source>
        <translation>Тайм-аут запроса (секунды):</translation>
    </message>
    <message>
        <source>Maximum time to wait for the model to send data before a request is aborted. Applies to all requests — chat, code completion, quick refactor and chat compression. The timer resets every time data is received, so this effectively limits the time-to-first-token and any stall between tokens. Increase it for slow or local models that need a long time to start responding. Set to 0 to disable the timeout.</source>
        <translation>Максимальное время ожидания данных от модели, по истечении которого запрос прерывается. Применяется ко всем запросам — чату, автодополнению кода, быстрому рефакторингу и сжатию чата. Таймер сбрасывается при каждом получении данных, поэтому он фактически ограничивает время до первого токена и любую задержку между токенами. Увеличьте его для медленных или локальных моделей, которым требуется много времени, чтобы начать отвечать. Установите 0, чтобы отключить тайм-аут.</translation>
    </message>
    <message>
        <source>Quick Setup</source>
        <translation>Быстрая настройка</translation>
    </message>
    <message>
        <source>Configure API Key</source>
        <translation>Настроить API-ключ</translation>
    </message>
    <message>
        <source>Open Provider Settings to configure API keys</source>
        <translation>Откройте «Настройки провайдеров», чтобы настроить API-ключи</translation>
    </message>
    <message>
        <source>Load configuration (includes predefined cloud models)</source>
        <translation>Загрузить конфигурацию (включая предустановленные облачные модели)</translation>
    </message>
    <message>
        <source>Show template information</source>
        <translation>Показать информацию о шаблоне</translation>
    </message>
    <message>
        <source>Network</source>
        <translation>Сеть</translation>
    </message>
    <message>
        <source>Support the development of QodeAssist:</source>
        <translation>Поддержите разработку QodeAssist:</translation>
    </message>
    <message>
        <source>Template Information</source>
        <translation>Информация о шаблоне</translation>
    </message>
    <message>
        <source>Template</source>
        <translation>Шаблон</translation>
    </message>
    <message>
        <source>Description:</source>
        <translation>Описание:</translation>
    </message>
    <message>
        <source>Failed to save configuration. Check logs for details.</source>
        <translation>Не удалось сохранить конфигурацию. Подробности в логах.</translation>
    </message>
    <message>
        <source>[Preset] configurations are predefined cloud models ready to use.</source>
        <translation>Конфигурации [Preset] — это готовые к использованию предустановленные облачные модели.</translation>
    </message>
    <message>
        <source>Predefined configurations cannot be deleted.</source>
        <translation>Предустановленные конфигурации нельзя удалить.</translation>
    </message>
    <message>
        <source>Failed to delete configuration.</source>
        <translation>Не удалось удалить конфигурацию.</translation>
    </message>
    <message>
        <source>-- Select Preset --</source>
        <translation>-- Выберите пресет --</translation>
    </message>
    <message>
        <source>Enable QodeAssist</source>
        <translation>Включить QodeAssist</translation>
    </message>
    <message>
        <source>General</source>
        <translation>Общие</translation>
    </message>
    <message>
        <source>Reset Page to Defaults</source>
        <translation>Сбросить страницу к значениям по умолчанию</translation>
    </message>
    <message>
        <source>Check Update</source>
        <translation>Проверить обновление</translation>
    </message>
    <message>
        <source>Select...</source>
        <translation>Выбрать...</translation>
    </message>
    <message>
        <source>Provider:</source>
        <translation>Провайдер:</translation>
    </message>
    <message>
        <source>Model:</source>
        <translation>Модель:</translation>
    </message>
    <message>
        <source>Template:</source>
        <translation>Шаблон:</translation>
    </message>
    <message>
        <source>URL:</source>
        <translation>URL:</translation>
    </message>
    <message>
        <source>Status:</source>
        <translation>Статус:</translation>
    </message>
    <message>
        <source>Test</source>
        <translation>Тест</translation>
    </message>
    <message>
        <source>Enable Logging</source>
        <translation>Включить логирование</translation>
    </message>
    <message>
        <source>Log messages are visible in General Messages pane</source>
        <translation>Сообщения логов отображаются на панели General Messages</translation>
    </message>
    <message>
        <source>Check for updates when Qt Creator starts</source>
        <translation>Проверять обновления при запуске Qt Creator</translation>
    </message>
    <message>
        <source>Enable Chat(If you have performance issues try disabling this, need restart QtC)</source>
        <translation>Включить чат (если у вас проблемы с производительностью, попробуйте отключить, требуется перезапуск QtC)</translation>
    </message>
    <message>
        <source>Custom endpoint:</source>
        <translation>Своя конечная точка:</translation>
    </message>
    <message>
        <source>Code Completion</source>
        <translation>Автодополнение кода</translation>
    </message>
    <message>
        <source>Chat Assistant</source>
        <translation>Чат-ассистент</translation>
    </message>
    <message>
        <source>Quick Refactor</source>
        <translation>Быстрый рефакторинг</translation>
    </message>
    <message>
        <source>Chat Compression</source>
        <translation>Сжатие чата</translation>
    </message>
    <message>
        <source>Agent Pipelines</source>
        <translation>Пайплайны агентов</translation>
    </message>
    <message>
        <source>Inline completions while you type. Matchers run on every request.</source>
        <translation>Встроенные автодополнения во время набора текста. Сопоставители выполняются при каждом запросе.</translation>
    </message>
    <message>
        <source>Conversational assistant in the QodeAssist panel.</source>
        <translation>Диалоговый ассистент на панели QodeAssist.</translation>
    </message>
    <message>
        <source>Used when a chat conversation needs to be summarised to stay within context.</source>
        <translation>Используется, когда диалог чата нужно сократить, чтобы уместиться в контексте.</translation>
    </message>
    <message>
        <source>Inline editor-driven refactors via the Quick Refactor action.</source>
        <translation>Встроенные в редактор рефакторинги через действие «Быстрый рефакторинг».</translation>
    </message>
    <message>
        <source>Reset Settings</source>
        <translation>Сбросить настройки</translation>
    </message>
    <message>
        <source>Are you sure you want to reset all settings to default values?</source>
        <translation>Вы уверены, что хотите сбросить все настройки к значениям по умолчанию?</translation>
    </message>
    <message>
        <source>Current template description:</source>
        <translation>Описание текущего шаблона:</translation>
    </message>
    <message>
        <source>Connection Error</source>
        <translation>Ошибка соединения</translation>
    </message>
    <message>
        <source>Unable to retrieve the list of models from the server.</source>
        <translation>Не удалось получить список моделей с сервера.</translation>
    </message>
    <message>
        <source>Please verify the following:
- Server is running and accessible
- URL is correct
- Provider is properly configured
- API key is correctly set (if required)

You can try selecting a different provider or changing the URL:</source>
        <translation>Пожалуйста, проверьте следующее:
- Сервер запущен и доступен
- URL правильный
- Провайдер настроен корректно
- API-ключ задан правильно (если требуется)

Вы можете попробовать выбрать другого провайдера или изменить URL:</translation>
    </message>
    <message>
        <source>Select Provider</source>
        <translation>Выбрать провайдера</translation>
    </message>
    <message>
        <source>Select URL</source>
        <translation>Выбрать URL</translation>
    </message>
    <message>
        <source>Close</source>
        <translation>Закрыть</translation>
    </message>
    <message>
        <source>Model Selection</source>
        <translation>Выбор модели</translation>
    </message>
    <message>
        <source>Select from previously used models or enter a new model name.

If entering a new model name:
• For providers with automatic listing - ensure the model is installed
• For providers without listing support - check provider&apos;s documentation
• Make sure the model name matches exactly</source>
        <translation>Выберите из ранее использованных моделей или введите имя новой модели.

При вводе имени новой модели:
• Для провайдеров с автоматическим списком — убедитесь, что модель установлена
• Для провайдеров без поддержки списка — проверьте документацию провайдера
• Убедитесь, что имя модели совпадает в точности</translation>
    </message>
    <message>
        <source>Model name:</source>
        <translation>Имя модели:</translation>
    </message>
    <message>
        <source>OK</source>
        <translation>OK</translation>
    </message>
    <message>
        <source>Cancel</source>
        <translation>Отмена</translation>
    </message>
    <message>
        <source>Enter Model Manually</source>
        <translation>Ввести модель вручную</translation>
    </message>
    <message>
        <source>URL Selection</source>
        <translation>Выбор URL</translation>
    </message>
    <message>
        <source>Select from the list of default and previously used URLs, or enter a custom one.
Please ensure the selected URL is accessible and the service is running.</source>
        <translation>Выберите из списка стандартных и ранее использованных URL или введите свой.
Убедитесь, что выбранный URL доступен и сервис запущен.</translation>
    </message>
    <message>
        <source>Use default provider URL or from history</source>
        <translation>Использовать стандартный URL провайдера или из истории</translation>
    </message>
    <message>
        <source>Enter custom URL</source>
        <translation>Ввести свой URL</translation>
    </message>
    <message>
        <source>Enter Model Name Manually</source>
        <translation>Ввести имя модели вручную</translation>
    </message>
    <message>
        <source>Auto Completion Settings</source>
        <translation>Настройки автодополнения</translation>
    </message>
    <message>
        <source>Add new preset for language</source>
        <translation>Добавить новый пресет для языка</translation>
    </message>
    <message>
        <source>Save Config...</source>
        <translation>Сохранить конфигурацию...</translation>
    </message>
    <message>
        <source>Load Config...</source>
        <translation>Загрузить конфигурацию...</translation>
    </message>
    <message>
        <source>Open Folder</source>
        <translation>Открыть папку</translation>
    </message>
    <message>
        <source>Save Configuration</source>
        <translation>Сохранить конфигурацию</translation>
    </message>
    <message>
        <source>Load Configuration</source>
        <translation>Загрузить конфигурацию</translation>
    </message>
    <message>
        <source>Configuration name:</source>
        <translation>Имя конфигурации:</translation>
    </message>
    <message>
        <source>Select Configuration</source>
        <translation>Выбрать конфигурацию</translation>
    </message>
    <message>
        <source>No saved configurations found.</source>
        <translation>Сохранённые конфигурации не найдены.</translation>
    </message>
    <message>
        <source>Configuration saved successfully.</source>
        <translation>Конфигурация успешно сохранена.</translation>
    </message>
    <message>
        <source>Configuration loaded successfully.</source>
        <translation>Конфигурация успешно загружена.</translation>
    </message>
    <message>
        <source>Delete</source>
        <translation>Удалить</translation>
    </message>
    <message>
        <source>Are you sure you want to delete this configuration?</source>
        <translation>Вы уверены, что хотите удалить эту конфигурацию?</translation>
    </message>
    <message>
        <source>Enable Auto Complete</source>
        <translation>Включить автодополнение</translation>
    </message>
    <message>
        <source>Enable Multiline Completion</source>
        <translation>Включить многострочное автодополнение</translation>
    </message>
    <message>
        <source>Text output proccessing mode:</source>
        <translation>Режим обработки текстового вывода:</translation>
    </message>
    <message>
        <source>Auto: Automatically detects codeblock and applies processing when found, other text as comments
Force Processing: Always processes text with codeblock formatting and other text as comments
Raw Text: Shows unprocessed text without any formatting</source>
        <translation>Авто: автоматически определяет блок кода и применяет обработку, остальной текст — как комментарии
Принудительная обработка: всегда обрабатывает текст с форматированием блоков кода, остальной текст — как комментарии
Сырой текст: показывает необработанный текст без какого-либо форматирования</translation>
    </message>
    <message>
        <source>Completion trigger mode:</source>
        <translation>Режим запуска автодополнения:</translation>
    </message>
    <message>
        <source>Hint-based: Shows a hint when typing, press Tab to request completion
Automatic: Automatically requests completion after typing threshold</source>
        <translation>По подсказке: показывает подсказку при наборе, нажмите Tab для запроса автодополнения
Автоматический: автоматически запрашивает автодополнение по достижении порога ввода</translation>
    </message>
    <message>
        <source>Completion mode:</source>
        <translation>Режим автодополнения:</translation>
    </message>
    <message>
        <source>Automatic: requests completion while typing (with smart context gates).
Manual: no auto-triggering; invoke via the &apos;Request QodeAssist Suggestion&apos; shortcut (default Ctrl+Alt+Q, reconfigurable in Preferences &gt; Keyboard).</source>
        <translation>Автоматический: запрашивает автодополнение при наборе (с умными проверками контекста).
Ручной: без автозапуска; вызывается через сочетание клавиш &apos;Request QodeAssist Suggestion&apos; (по умолчанию Ctrl+Alt+Q, настраивается в Preferences &gt; Keyboard).</translation>
    </message>
    <message>
        <source>Smart context-aware triggering</source>
        <translation>Умный контекстно-зависимый запуск</translation>
    </message>
    <message>
        <source>When enabled, auto-completion is suppressed in places where Qt Creator&apos;s built-in completion is usually stronger (middle of an identifier, right after &apos;.&apos;, &apos;-&gt;&apos;, &apos;::&apos;) and is triggered more eagerly after structural characters like &apos;(&apos;, &apos;,&apos;, &apos;{&apos;, &apos;=&apos; and on fresh indented lines.</source>
        <translation>Когда включено, автодополнение подавляется там, где встроенное автодополнение Qt Creator обычно сильнее (в середине идентификатора, сразу после &apos;.&apos;, &apos;-&gt;&apos;, &apos;::&apos;), и запускается охотнее после структурных символов вроде &apos;(&apos;, &apos;,&apos;, &apos;{&apos;, &apos;=&apos; и на новых отступах.</translation>
    </message>
    <message>
        <source>Don&apos;t dismiss Qt Creator&apos;s completion popup</source>
        <translation>Не закрывать всплывающее окно автодополнения Qt Creator</translation>
    </message>
    <message>
        <source>When enabled, an AI completion arriving while Qt Creator&apos;s own completion popup is already visible will not force it closed. The LLM suggestion still appears inline.</source>
        <translation>Когда включено, автодополнение от ИИ, поступающее во время отображения собственного всплывающего окна Qt Creator, не будет принудительно закрывать его. Предложение LLM по-прежнему отображается встроенно.</translation>
    </message>
    <message>
        <source>Cancel in-flight request on new input</source>
        <translation>Отменять активный запрос при новом вводе</translation>
    </message>
    <message>
        <source>When enabled, every new keystroke cancels any completion request already in flight and restarts the debounce timer. Useful for slow local models where an outdated answer is rarely worth waiting for.
When disabled (default), the in-flight request is kept; when the answer arrives, the plugin compares it with characters typed in the meantime and either trims the matching prefix or drops the answer.</source>
        <translation>Когда включено, каждое новое нажатие клавиши отменяет активный запрос автодополнения и перезапускает таймер задержки. Полезно для медленных локальных моделей, где устаревший ответ редко стоит ожидания.
Когда отключено (по умолчанию), активный запрос сохраняется; когда приходит ответ, плагин сравнивает его с символами, набранными за это время, и либо обрезает совпадающий префикс, либо отбрасывает ответ.</translation>
    </message>
    <message>
        <source>with delay(ms)</source>
        <translation>с задержкой(мс)</translation>
    </message>
    <message>
        <source>Delay before sending the completion request.
(Only for Automatic trigger mode)</source>
        <translation>Задержка перед отправкой запроса автодополнения.
(Только для автоматического режима запуска)</translation>
    </message>
    <message>
        <source>AI suggestion triggers after typing</source>
        <translation>Подсказка ИИ запускается после ввода</translation>
    </message>
    <message>
        <source>The number of characters that need to be typed within the typing interval before an AI suggestion request is sent automatically.
(Only for Automatic trigger mode)</source>
        <translation>Количество символов, которые нужно ввести в течение интервала набора, прежде чем запрос подсказки ИИ будет отправлен автоматически.
(Только для автоматического режима запуска)</translation>
    </message>
    <message>
        <source>character(s) within(ms)</source>
        <translation>символ(ов) в течение(мс)</translation>
    </message>
    <message>
        <source>The time window (in milliseconds) during which the character threshold must be met to trigger an AI suggestion request automatically.
(Only for Automatic trigger mode)</source>
        <translation>Временное окно (в миллисекундах), в течение которого должен быть достигнут порог символов, чтобы автоматически запустить запрос подсказки ИИ.
(Только для автоматического режима запуска)</translation>
    </message>
    <message>
        <source>Hint shows after typing</source>
        <translation>Подсказка появляется после ввода</translation>
    </message>
    <message>
        <source>The number of characters that need to be typed before the hint widget appears (only for Hint-based trigger mode).</source>
        <translation>Количество символов, которые нужно ввести до появления виджета подсказки (только для режима запуска по подсказке).</translation>
    </message>
    <message>
        <source>Hint auto-hide timeout (ms)</source>
        <translation>Таймаут автоскрытия подсказки (мс)</translation>
    </message>
    <message>
        <source>Time in milliseconds after which the hint widget will automatically hide (only for Hint-based trigger mode).</source>
        <translation>Время в миллисекундах, через которое виджет подсказки автоматически скроется (только для режима запуска по подсказке).</translation>
    </message>
    <message>
        <source>Trigger key:</source>
        <translation>Клавиша запуска:</translation>
    </message>
    <message>
        <source>Key to press for requesting completion when hint is visible.
Space is recommended as least conflicting with context menu.
(Only for Hint-based trigger mode)</source>
        <translation>Клавиша для запроса автодополнения, когда видна подсказка.
Рекомендуется Space как наименее конфликтующий с контекстным меню.
(Только для режима запуска по подсказке)</translation>
    </message>
    <message>
        <source>Ignore spaces and tabs in character count</source>
        <translation>Игнорировать пробелы и табуляции при подсчёте символов</translation>
    </message>
    <message>
        <source>When enabled, spaces and tabs are not counted towards the character threshold for triggering completions. This helps trigger completions based on actual code characters only.</source>
        <translation>Когда включено, пробелы и табуляции не учитываются в пороге символов для запуска автодополнения. Это помогает запускать автодополнение только на основе фактических символов кода.</translation>
    </message>
    <message>
        <source>Temperature:</source>
        <translation>Температура:</translation>
    </message>
    <message>
        <source>Max Tokens:</source>
        <translation>Макс. токенов:</translation>
    </message>
    <message>
        <source>Top P:</source>
        <translation>Top P:</translation>
    </message>
    <message>
        <source>Top K:</source>
        <translation>Top K:</translation>
    </message>
    <message>
        <source>Presence Penalty:</source>
        <translation>Presence Penalty:</translation>
    </message>
    <message>
        <source>Frequency Penalty:</source>
        <translation>Frequency Penalty:</translation>
    </message>
    <message>
        <source>Read Full File</source>
        <translation>Читать файл полностью</translation>
    </message>
    <message>
        <source>Read Strings Before Cursor:</source>
        <translation>Читать строк перед курсором:</translation>
    </message>
    <message>
        <source>Read Strings After Cursor:</source>
        <translation>Читать строк после курсора:</translation>
    </message>
    <message>
        <source>Use System Prompt</source>
        <translation>Использовать системный промпт</translation>
    </message>
    <message>
        <source>Use special system prompt and user message for non FIM models</source>
        <translation>Использовать специальный системный промпт и пользовательское сообщение для моделей, отличных от FIM</translation>
    </message>
    <message>
        <source>System prompt for non FIM models:</source>
        <translation>Системный промпт для моделей, отличных от FIM:</translation>
    </message>
    <message>
        <source>User message for non FIM models:</source>
        <translation>Сообщение пользователя для моделей, отличных от FIM:</translation>
    </message>
    <message>
        <source>Additional Programming Languages for handling: Example: rust,//,rust rs,rs</source>
        <translation>Дополнительные языки программирования для обработки: Пример: rust,//,rust rs,rs</translation>
    </message>
    <message>
        <source>Specify additional programming languages in format: name,comment_style,model_names,extensions
Example: rust,//,rust rs,rs
Fields: language name, comment prefix, names from LLM (space-separated), file extensions (space-separated)</source>
        <translation>Укажите дополнительные языки программирования в формате: имя,стиль_комментариев,имена_моделей,расширения
Пример: rust,//,rust rs,rs
Поля: имя языка, префикс комментария, имена от LLM (через пробел), расширения файлов (через пробел)</translation>
    </message>
    <message>
        <source>Show progress indicator during code completion</source>
        <translation>Показывать индикатор прогресса во время автодополнения кода</translation>
    </message>
    <message>
        <source>Abort existing assist on new completion request</source>
        <translation>Прерывать существующий ассист при новом запросе автодополнения</translation>
    </message>
    <message>
        <source>When enabled, cancels any active Qt Creator code assist popup before requesting LLM completion.
(Only for Automatic trigger mode)</source>
        <translation>Когда включено, отменяет любое активное всплывающее окно ассиста кода Qt Creator перед запросом автодополнения LLM.
(Только для автоматического режима запуска)</translation>
    </message>
    <message>
        <source>Include context from open files</source>
        <translation>Включать контекст из открытых файлов</translation>
    </message>
    <message>
        <source>Max Changes Cache Size:</source>
        <translation>Макс. размер кэша изменений:</translation>
    </message>
    <message>
        <source>Time to suspend Ollama after completion request (in minutes), Only Ollama,  -1 to disable</source>
        <translation>Время приостановки Ollama после запроса автодополнения (в минутах), только для Ollama, -1 для отключения</translation>
    </message>
    <message>
        <source>Context Window:</source>
        <translation>Контекстное окно:</translation>
    </message>
    <message>
        <source>Reasoning effort:</source>
        <translation>Усилие на рассуждения:</translation>
    </message>
    <message>
        <source>Constrains effort on reasoning for OpenAI gpt-5 and o-series models:

None: No reasoning (gpt-5.1 only)
Minimal: Minimal reasoning effort (o-series only)
Low: Low reasoning effort
Medium: Balanced reasoning (default for most models)
High: Maximum reasoning effort (gpt-5-pro only supports this)

Note: Reducing effort = faster responses + fewer tokens</source>
        <translation>Ограничивает усилия на рассуждения для моделей OpenAI gpt-5 и o-серии:

None: без рассуждений (только gpt-5.1)
Minimal: минимальные усилия на рассуждения (только o-серия)
Low: низкие усилия на рассуждения
Medium: сбалансированные рассуждения (по умолчанию для большинства моделей)
High: максимальные усилия на рассуждения (поддерживает только gpt-5-pro)

Примечание: уменьшение усилий = более быстрые ответы + меньше токенов</translation>
    </message>
    <message>
        <source>Prompts for FIM models</source>
        <translation>Промпты для FIM-моделей</translation>
    </message>
    <message>
        <source>Prompts for Non FIM models</source>
        <translation>Промпты для моделей, отличных от FIM</translation>
    </message>
    <message>
        <source>General Settings</source>
        <translation>Общие настройки</translation>
    </message>
    <message>
        <source>Automatic Trigger Mode</source>
        <translation>Автоматический режим запуска</translation>
    </message>
    <message>
        <source>General Parameters</source>
        <translation>Общие параметры</translation>
    </message>
    <message>
        <source>Advanced Parameters</source>
        <translation>Расширенные параметры</translation>
    </message>
    <message>
        <source>Context Settings</source>
        <translation>Настройки контекста</translation>
    </message>
    <message>
        <source>OpenAI Responses API</source>
        <translation>OpenAI Responses API</translation>
    </message>
    <message>
        <source>Ollama Settings</source>
        <translation>Настройки Ollama</translation>
    </message>
    <message>
        <source>Sync open files with assistant by default</source>
        <translation>Синхронизировать открытые файлы с ассистентом по умолчанию</translation>
    </message>
    <message>
        <source>Enable autosave when message received</source>
        <translation>Включить автосохранение при получении сообщения</translation>
    </message>
    <message>
        <source>Enable chat in bottom toolbar</source>
        <translation>Включить чат в нижней панели инструментов</translation>
    </message>
    <message>
        <source>Enable chat in navigation panel</source>
        <translation>Включить чат в панели навигации</translation>
    </message>
    <message>
        <source>Enable tools/function calling</source>
        <translation>Включить вызов инструментов/функций</translation>
    </message>
    <message>
        <source>When enabled, AI can use tools to read files, search project, and build code</source>
        <translation>Когда включено, ИИ может использовать инструменты для чтения файлов, поиска по проекту и сборки кода</translation>
    </message>
    <message>
        <source>Auto-compress chat when session tokens exceed:</source>
        <translation>Автоматически сжимать чат, когда токены сессии превышают:</translation>
    </message>
    <message>
        <source>After each assistant response, if the running session token total exceeds the threshold, the chat is summarized and a new compressed chat is started automatically. The original chat is preserved on disk.</source>
        <translation>После каждого ответа ассистента, если общее количество токенов сессии превышает порог, чат сокращается и автоматически запускается новый сжатый чат. Оригинальный чат сохраняется на диске.</translation>
    </message>
    <message>
        <source>Enable extended thinking mode.</source>
        <translation>Включить режим расширенного мышления.</translation>
    </message>
    <message>
        <source>Enable extended thinking mode for complex reasoning tasks.This provides step-by-step reasoning before the final answer.Temperature is 1.0 accordingly API requirement</source>
        <translation>Включить режим расширенного мышления для сложных задач рассуждений. Это обеспечивает пошаговые рассуждения перед окончательным ответом. Температура — 1.0 согласно требованию API</translation>
    </message>
    <message>
        <source>Thinking budget tokens:</source>
        <translation>Бюджет токенов мышления:</translation>
    </message>
    <message>
        <source>Maximum number of tokens Claude can use for internal reasoning. Larger budgets improve quality but increase latency. Minimum: 1024, Recommended: 10000-16000.</source>
        <translation>Максимальное количество токенов, которое Claude может использовать для внутренних рассуждений. Большие бюджеты улучшают качество, но увеличивают задержку. Минимум: 1024, Рекомендовано: 10000-16000.</translation>
    </message>
    <message>
        <source>Thinking mode max output tokens:</source>
        <translation>Макс. выходных токенов в режиме мышления:</translation>
    </message>
    <message>
        <source>Maximum number of tokens for the final response when thinking mode is enabled. Set to -1 to use the default max tokens setting. Recommended: 4096-16000.</source>
        <translation>Максимальное количество токенов для окончательного ответа, когда включён режим мышления. Установите -1, чтобы использовать настройку максимума токенов по умолчанию. Рекомендовано: 4096-16000.</translation>
    </message>
    <message>
        <source>Text Font:</source>
        <translation>Шрифт текста:</translation>
    </message>
    <message>
        <source>Text Font Size:</source>
        <translation>Размер шрифта текста:</translation>
    </message>
    <message>
        <source>Code Font:</source>
        <translation>Шрифт кода:</translation>
    </message>
    <message>
        <source>Code Font Size:</source>
        <translation>Размер шрифта кода:</translation>
    </message>
    <message>
        <source>Text Format:</source>
        <translation>Формат текста:</translation>
    </message>
    <message>
        <source>Chat Renderer:</source>
        <translation>Отрисовщик чата:</translation>
    </message>
    <message>
        <source>Chat Settings</source>
        <translation>Настройки чата</translation>
    </message>
    <message>
        <source>Tools</source>
        <translation>Инструменты</translation>
    </message>
    <message>
        <source>Extended Thinking (Claude)</source>
        <translation>Расширенное мышление (Claude)</translation>
    </message>
    <message>
        <source>Agent Roles</source>
        <translation>Роли агентов</translation>
    </message>
    <message>
        <source>Enable Tools</source>
        <translation>Включить инструменты</translation>
    </message>
    <message>
        <source>Enable AI tools/functions for quick refactoring (allows reading project files, searching code, etc.)</source>
        <translation>Включить инструменты/функции ИИ для быстрого рефакторинга (позволяет читать файлы проекта, искать код и т. д.)</translation>
    </message>
    <message>
        <source>Enable Thinking Mode</source>
        <translation>Включить режим мышления</translation>
    </message>
    <message>
        <source>Enable extended thinking mode for complex refactoring tasks (supported by compatible models like Claude and Google AI)</source>
        <translation>Включить режим расширенного мышления для сложных задач рефакторинга (поддерживается совместимыми моделями, такими как Claude и Google AI)</translation>
    </message>
    <message>
        <source>Thinking Budget Tokens:</source>
        <translation>Бюджет токенов мышления:</translation>
    </message>
    <message>
        <source>Number of tokens allocated for thinking process. Use -1 for dynamic thinking (model decides), 0 to disable, or positive value for custom budget</source>
        <translation>Количество токенов, выделенных для процесса мышления. Используйте -1 для динамического мышления (модель решает), 0 для отключения или положительное значение для собственного бюджета</translation>
    </message>
    <message>
        <source>Thinking Max Output Tokens:</source>
        <translation>Макс. выходных токенов мышления:</translation>
    </message>
    <message>
        <source>Maximum output tokens when thinking mode is enabled (includes thinking + response)</source>
        <translation>Максимум выходных токенов, когда включён режим мышления (включает мышление + ответ)</translation>
    </message>
    <message>
        <source>Lines Before Cursor/Selection:</source>
        <translation>Строк перед курсором/выделением:</translation>
    </message>
    <message>
        <source>Number of lines to include before cursor or selection for context</source>
        <translation>Количество строк для включения в контекст перед курсором или выделением</translation>
    </message>
    <message>
        <source>Lines After Cursor/Selection:</source>
        <translation>Строк после курсора/выделения:</translation>
    </message>
    <message>
        <source>Number of lines to include after cursor or selection for context</source>
        <translation>Количество строк для включения в контекст после курсора или выделения</translation>
    </message>
    <message>
        <source>Display Mode:</source>
        <translation>Режим отображения:</translation>
    </message>
    <message>
        <source>Choose how to display refactoring suggestions:
- Inline Widget: Shows refactor in a widget overlay with Apply/Decline buttons (default)
- Qt Creator Suggestion: Uses Qt Creator&apos;s built-in suggestion system</source>
        <translation>Выберите способ отображения предложений рефакторинга:
- Встроенный виджет: показывает рефакторинг в наложении виджета с кнопками «Применить»/«Отклонить» (по умолчанию)
- Подсказка Qt Creator: использует встроенную систему подсказок Qt Creator</translation>
    </message>
    <message>
        <source>Inline Widget</source>
        <translation>Встроенный виджет</translation>
    </message>
    <message>
        <source>Qt Creator Suggestion</source>
        <translation>Подсказка Qt Creator</translation>
    </message>
    <message>
        <source>Widget Orientation:</source>
        <translation>Ориентация виджета:</translation>
    </message>
    <message>
        <source>Choose default orientation for refactor widget:
- Horizontal: Original and refactored code side by side (default)
- Vertical: Original and refactored code stacked vertically</source>
        <translation>Выберите ориентацию по умолчанию для виджета рефакторинга:
- Горизонтальная: оригинал и рефакторинг кода рядом (по умолчанию)
- Вертикальная: оригинал и рефакторинг кода друг над другом</translation>
    </message>
    <message>
        <source>Horizontal</source>
        <translation>Горизонтальная</translation>
    </message>
    <message>
        <source>Vertical</source>
        <translation>Вертикальная</translation>
    </message>
    <message>
        <source>Widget Minimum Width:</source>
        <translation>Минимальная ширина виджета:</translation>
    </message>
    <message>
        <source>Minimum width for the refactor widget (in pixels)</source>
        <translation>Минимальная ширина для виджета рефакторинга (в пикселях)</translation>
    </message>
    <message>
        <source>Widget Maximum Width:</source>
        <translation>Максимальная ширина виджета:</translation>
    </message>
    <message>
        <source>Maximum width for the refactor widget (in pixels)</source>
        <translation>Максимальная ширина для виджета рефакторинга (в пикселях)</translation>
    </message>
    <message>
        <source>Widget Minimum Height:</source>
        <translation>Минимальная высота виджета:</translation>
    </message>
    <message>
        <source>Minimum height for the refactor widget (in pixels)</source>
        <translation>Минимальная высота для виджета рефакторинга (в пикселях)</translation>
    </message>
    <message>
        <source>Widget Maximum Height:</source>
        <translation>Максимальная высота виджета:</translation>
    </message>
    <message>
        <source>Maximum height for the refactor widget (in pixels)</source>
        <translation>Максимальная высота для виджета рефакторинга (в пикселях)</translation>
    </message>
    <message>
        <source>System Prompt:</source>
        <translation>Системный промпт:</translation>
    </message>
    <message>
        <source>Include context from open files in quick refactor</source>
        <translation>Включать контекст из открытых файлов в быстрый рефакторинг</translation>
    </message>
    <message>
        <source>Tools Settings</source>
        <translation>Настройки инструментов</translation>
    </message>
    <message>
        <source>Display Settings</source>
        <translation>Настройки отображения</translation>
    </message>
    <message>
        <source>Prompt Settings</source>
        <translation>Настройки промпта</translation>
    </message>
    <message>
        <source>Allow file access outside project</source>
        <translation>Разрешить доступ к файлам вне проекта</translation>
    </message>
    <message>
        <source>Allow tools to read, write, and create files outside the project scope (system headers, Qt files, external libraries).</source>
        <translation>Разрешить инструментам читать, записывать и создавать файлы за пределами проекта (системные заголовки, файлы Qt, внешние библиотеки).</translation>
    </message>
    <message>
        <source>Automatically apply file edits</source>
        <translation>Автоматически применять изменения файлов</translation>
    </message>
    <message>
        <source>When enabled, file edits suggested by AI are applied immediately. When disabled, each edit is staged for manual approval.</source>
        <translation>Когда включено, изменения файлов, предложенные ИИ, применяются немедленно. Когда отключено, каждое изменение помещается в очередь на ручное подтверждение.</translation>
    </message>
    <message>
        <source>Max tool continuations:</source>
        <translation>Макс. продолжений инструментов:</translation>
    </message>
    <message>
        <source>Maximum number of consecutive tool-use rounds in a single request. Each round lets the model call tools and receive results before continuing. Higher values allow more complex multi-step tasks but increase token usage.</source>
        <translation>Максимальное количество последовательных раундов использования инструментов в одном запросе. Каждый раунд позволяет модели вызывать инструменты и получать результаты перед продолжением. Большие значения позволяют выполнять более сложные многошаговые задачи, но увеличивают расход токенов.</translation>
    </message>
    <message>
        <source>List Project Files</source>
        <translation>Список файлов проекта</translation>
    </message>
    <message>
        <source>Lists every source file tracked by the active Qt Creator project(s).</source>
        <translation>Перечисляет каждый исходный файл, отслеживаемый активным проектом(-ами) Qt Creator.</translation>
    </message>
    <message>
        <source>Find File</source>
        <translation>Найти файл</translation>
    </message>
    <message>
        <source>Locates a file in the project by name or partial path. Returns paths only, without file content.</source>
        <translation>Находит файл в проекте по имени или частичному пути. Возвращает только пути, без содержимого файла.</translation>
    </message>
    <message>
        <source>Read File</source>
        <translation>Прочитать файл</translation>
    </message>
    <message>
        <source>Reads the content of a file by absolute path or path relative to the project root.</source>
        <translation>Читает содержимое файла по абсолютному пути или пути относительно корня проекта.</translation>
    </message>
    <message>
        <source>Search in Project</source>
        <translation>Поиск в проекте</translation>
    </message>
    <message>
        <source>Searches project files for text occurrences or C++ symbol definitions.</source>
        <translation>Ищет в файлах проекта вхождения текста или определения символов C++.</translation>
    </message>
    <message>
        <source>Create New File</source>
        <translation>Создать новый файл</translation>
    </message>
    <message>
        <source>Creates a new empty file at the given absolute path, making missing directories.</source>
        <translation>Создаёт новый пустой файл по заданному абсолютному пути, создавая отсутствующие директории.</translation>
    </message>
    <message>
        <source>Edit File</source>
        <translation>Редактировать файл</translation>
    </message>
    <message>
        <source>Applies find-and-replace edits to files. See &quot;Automatically apply file edits&quot; to control whether edits apply immediately or wait for review.</source>
        <translation>Применяет к файлам изменения вида «найти и заменить». См. «Автоматически применять изменения файлов», чтобы управлять тем, применяются ли изменения немедленно или ожидают проверки.</translation>
    </message>
    <message>
        <source>Build Project</source>
        <translation>Собрать проект</translation>
    </message>
    <message>
        <source>Triggers a build of the active Qt Creator project and reports the result.</source>
        <translation>Запускает сборку активного проекта Qt Creator и сообщает о результате.</translation>
    </message>
    <message>
        <source>Get Issues List</source>
        <translation>Получить список проблем</translation>
    </message>
    <message>
        <source>Reads compiler/clang diagnostics from Qt Creator&apos;s Issues panel.</source>
        <translation>Читает диагностику компилятора/clang из панели Issues Qt Creator.</translation>
    </message>
    <message>
        <source>Execute Terminal Command</source>
        <translation>Выполнить команду терминала</translation>
    </message>
    <message>
        <source>Runs a command from the OS-specific allowed list below, in the project directory.</source>
        <translation>Выполняет команду из приведённого ниже списка, разрешённого для конкретной ОС, в директории проекта.</translation>
    </message>
    <message>
        <source>Todo</source>
        <translation>Задачи</translation>
    </message>
    <message>
        <source>Lets the AI maintain a session-scoped todo list for multi-step workflows.</source>
        <translation>Позволяет ИИ вести список задач в рамках сессии для многошаговых рабочих процессов.</translation>
    </message>
    <message>
        <source>Read Original History (Pre-Compression)</source>
        <translation>Читать оригинальную историю (до сжатия)</translation>
    </message>
    <message>
        <source>Lets the AI read the original, full chat history from before the conversation was compressed into a summary. Useful when a detail is missing from the summary currently in context. Has no effect if the chat was never compressed.</source>
        <translation>Позволяет ИИ читать оригинальную полную историю чата до того, как разговор был сжат в краткое содержание. Полезно, когда в текущем контексте отсутствует деталь из краткого содержания. Не имеет эффекта, если чат никогда не сжимался.</translation>
    </message>
    <message>
        <source>Load Skill</source>
        <translation>Загрузить навык</translation>
    </message>
    <message>
        <source>Lets the AI load the full instructions of a skill on demand. The Available Skills catalog in the system prompt lists each skill; this tool pulls a skill&apos;s complete instructions into context when needed.</source>
        <translation>Позволяет ИИ загружать полные инструкции навыка по требованию. Каталог «Доступные навыки» в системном промпте перечисляет каждый навык; этот инструмент подгружает полные инструкции навыка в контекст при необходимости.</translation>
    </message>
    <message>
        <source>Allowed Commands (Linux)</source>
        <translation>Разрешённые команды (Linux)</translation>
    </message>
    <message>
        <source>Comma-separated list of terminal commands that AI is allowed to execute on Linux. Example: git, ls, cat, grep, find, cmake</source>
        <translation>Список разрешённых команд терминала через запятую, которые ИИ может выполнять в Linux. Пример: git, ls, cat, grep, find, cmake</translation>
    </message>
    <message>
        <source>Allowed Commands (macOS)</source>
        <translation>Разрешённые команды (macOS)</translation>
    </message>
    <message>
        <source>Comma-separated list of terminal commands that AI is allowed to execute on macOS. Example: git, ls, cat, grep, find, cmake</source>
        <translation>Список разрешённых команд терминала через запятую, которые ИИ может выполнять в macOS. Пример: git, ls, cat, grep, find, cmake</translation>
    </message>
    <message>
        <source>Allowed Commands (Windows)</source>
        <translation>Разрешённые команды (Windows)</translation>
    </message>
    <message>
        <source>Comma-separated list of terminal commands that AI is allowed to execute on Windows. Example: git, dir, type, findstr, where, cmake</source>
        <translation>Список разрешённых команд терминала через запятую, которые ИИ может выполнять в Windows. Пример: git, dir, type, findstr, where, cmake</translation>
    </message>
    <message>
        <source>Command Timeout (seconds)</source>
        <translation>Таймаут команды (секунды)</translation>
    </message>
    <message>
        <source>Maximum time in seconds to wait for a terminal command to complete. Increase for long-running commands like builds.</source>
        <translation>Максимальное время в секундах ожидания завершения команды терминала. Увеличьте для длительных команд, таких как сборка.</translation>
    </message>
    <message>
        <source>Tool Settings</source>
        <translation>Настройки инструмента</translation>
    </message>
    <message>
        <source>Skills</source>
        <translation>Навыки</translation>
    </message>
    <message>
        <source>Enable skills</source>
        <translation>Включить навыки</translation>
    </message>
    <message>
        <source>Discover Agent Skills from the configured skill directories and expose them to the chat assistant. Each skill is a folder containing a SKILL.md file.</source>
        <translation>Обнаруживать навыки агентов в настроенных директориях навыков и предоставлять их чат-ассистенту. Каждый навык — это папка, содержащая файл SKILL.md.</translation>
    </message>
    <message>
        <source>Global skill directories:</source>
        <translation>Глобальные директории навыков:</translation>
    </message>
    <message>
        <source>Absolute paths scanned for skills, one per line. Each path is a directory whose subfolders contain SKILL.md files. A leading ~ expands to your home directory. Lets QodeAssist pick up skills shared with other agents (e.g. ~/.claude/skills).</source>
        <translation>Абсолютные пути, сканируемые на наличие навыков, по одному в строке. Каждый путь — это директория, подпапки которой содержат файлы SKILL.md. Ведущий символ ~ раскрывается в домашнюю директорию. Позволяет QodeAssist подхватывать навыки, общие с другими агентами (напр., ~/.claude/skills).</translation>
    </message>
    <message>
        <source>No skills discovered.</source>
        <translation>Навыки не обнаружены.</translation>
    </message>
    <message>
        <source>Skill Directories</source>
        <translation>Директории навыков</translation>
    </message>
    <message>
        <source>Discovered global skills:</source>
        <translation>Обнаруженные глобальные навыки:</translation>
    </message>
    <message>
        <source>MCP</source>
        <translation>MCP</translation>
    </message>
    <message>
        <source>Enable MCP server</source>
        <translation>Включить сервер MCP</translation>
    </message>
    <message>
        <source>Expose QodeAssist tools to external MCP clients over HTTP. Which tools are visible is controlled on the client side.</source>
        <translation>Предоставить инструменты QodeAssist внешним клиентам MCP по HTTP. Видимость инструментов контролируется на стороне клиента.</translation>
    </message>
    <message>
        <source>Server port</source>
        <translation>Порт сервера</translation>
    </message>
    <message>
        <source>TCP port the MCP server listens on (localhost only). Requires restart of the server after change.</source>
        <translation>TCP-порт, на котором слушает сервер MCP (только localhost). Требует перезапуска сервера после изменения.</translation>
    </message>
    <message>
        <source>Connect to external MCP servers</source>
        <translation>Подключаться к внешним серверам MCP</translation>
    </message>
    <message>
        <source>Connect to MCP servers listed in mcp-server.json and expose their tools to chat/quick-refactor/code-completion. Toggling this off disconnects all currently running MCP client sessions.</source>
        <translation>Подключаться к серверам MCP, перечисленным в mcp-server.json, и предоставлять их инструменты чату/быстрому рефакторингу/автодополнению кода. Отключение этой опции разрывает все запущенные сессии клиента MCP.</translation>
    </message>
    <message>
        <source>Extra PATH for stdio servers</source>
        <translation>Дополнительный PATH для stdio-серверов</translation>
    </message>
    <message>
        <source>Directories to prepend to PATH when launching stdio MCP servers. Useful when Qt Creator is started from the dock and doesn&apos;t see Homebrew, nvm, uv, etc. Separate multiple entries with &apos;%1&apos;. Per-server &apos;env&apos; overrides in mcp-server.json still win.</source>
        <translation>Директории, добавляемые в начало PATH при запуске stdio-серверов MCP. Полезно, когда Qt Creator запущен из дока и не видит Homebrew, nvm, uv и т. д. Разделяйте несколько записей символом &apos;%1&apos;. Переопределения &apos;env&apos; для конкретного сервера в mcp-server.json по-прежнему имеют приоритет.</translation>
    </message>
    <message>
        <source>How to connect...</source>
        <translation>Как подключиться...</translation>
    </message>
    <message>
        <source>Server</source>
        <translation>Сервер</translation>
    </message>
    <message>
        <source>Clients</source>
        <translation>Клиенты</translation>
    </message>
    <message>
        <source>Connect to QodeAssist MCP</source>
        <translation>Подключение к QodeAssist MCP</translation>
    </message>
    <message>
        <source>Server URL: &lt;code&gt;%1&lt;/code&gt;. If your MCP client speaks HTTP/SSE natively, use the &lt;b&gt;Direct&lt;/b&gt; tab. If it only speaks stdio (e.g. Claude Desktop), use the &lt;b&gt;Bridge&lt;/b&gt; tab.</source>
        <translation>URL сервера: &lt;code&gt;%1&lt;/code&gt;. Если ваш MCP-клиент изначально говорит на HTTP/SSE, используйте вкладку &lt;b&gt;Direct&lt;/b&gt;. Если он говорит только по stdio (напр., Claude Desktop), используйте вкладку &lt;b&gt;Bridge&lt;/b&gt;.</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <source>&lt;b&gt;Claude Code&lt;/b&gt; (CLI): run once —</source>
        <translation>&lt;b&gt;Claude Code&lt;/b&gt; (CLI): выполните один раз —</translation>
    </message>
    <message>
        <source>&lt;b&gt;VS Code&lt;/b&gt;: save as &lt;code&gt;.vscode/mcp.json&lt;/code&gt; in the workspace:</source>
        <translation>&lt;b&gt;VS Code&lt;/b&gt;: сохраните как &lt;code&gt;.vscode/mcp.json&lt;/code&gt; в рабочей области:</translation>
    </message>
    <message>
        <source>Any other client that reads an &lt;code&gt;mcpServers&lt;/code&gt; JSON block:</source>
        <translation>Любой другой клиент, читающий JSON-блок &lt;code&gt;mcpServers&lt;/code&gt;:</translation>
    </message>
    <message>
        <source>Direct (HTTP/SSE)</source>
        <translation>Direct (HTTP/SSE)</translation>
    </message>
    <message>
        <source>&lt;b&gt;1.&lt;/b&gt; Download &lt;code&gt;mcp-bridge&lt;/code&gt; for your OS from &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;.</source>
        <translation>&lt;b&gt;1.&lt;/b&gt; Скачайте &lt;code&gt;mcp-bridge&lt;/code&gt; для вашей ОС с &lt;a href=&quot;%1&quot;&gt;%1&lt;/a&gt;.</translation>
    </message>
    <message>
        <source>&lt;b&gt;2.&lt;/b&gt; Save the following as &lt;code&gt;mcp-bridge.json&lt;/code&gt;:</source>
        <translation>&lt;b&gt;2.&lt;/b&gt; Сохраните следующее как &lt;code&gt;mcp-bridge.json&lt;/code&gt;:</translation>
    </message>
    <message>
        <source>&lt;b&gt;3.&lt;/b&gt; Point the stdio-only client at the bridge. Example for &lt;code&gt;claude_desktop_config.json&lt;/code&gt;:</source>
        <translation>&lt;b&gt;3.&lt;/b&gt; Направьте stdio-клиента на мост. Пример для &lt;code&gt;claude_desktop_config.json&lt;/code&gt;:</translation>
    </message>
    <message>
        <source>Bridge (stdio)</source>
        <translation>Bridge (stdio)</translation>
    </message>
    <message>
        <source>Chat History Path:</source>
        <translation>Путь к истории чата:</translation>
    </message>
    <message>
        <source>Skill directories:</source>
        <translation>Директории навыков:</translation>
    </message>
    <message>
        <source>Project-relative subdirectories scanned for Agent Skills, one per line. Resolved against the project root. These take priority over the global skill directories when a skill name appears in both.</source>
        <translation>Поддиректории относительно проекта, сканируемые на наличие навыков агентов, по одной в строке. Разрешаются относительно корня проекта. Имеют приоритет над глобальными директориями навыков, если имя навыка появляется в обеих.</translation>
    </message>
    <message>
        <source>Discovered project skills:</source>
        <translation>Обнаруженные навыки проекта:</translation>
    </message>
    <message>
        <source>QodeAssist</source>
        <translation>QodeAssist</translation>
    </message>
    <message>
        <source>Provider Settings</source>
        <translation>Настройки провайдера</translation>
    </message>
    <message>
        <source>OpenRouter API Key:</source>
        <translation>API-ключ OpenRouter:</translation>
    </message>
    <message>
        <source>Enter your API key here</source>
        <translation>Введите ваш API-ключ здесь</translation>
    </message>
    <message>
        <source>OpenAI Compatible API Key:</source>
        <translation>API-ключ OpenAI Compatible:</translation>
    </message>
    <message>
        <source>Claude API Key:</source>
        <translation>API-ключ Claude:</translation>
    </message>
    <message>
        <source>Enable prompt caching</source>
        <translation>Включить кэширование промптов</translation>
    </message>
    <message>
        <source>Marks the system prompt, tool definitions, and stable chat history with cache_control so Anthropic caches the request prefix (5-minute TTL). Reduces cost and latency on repeated turns.</source>
        <translation>Помечает системный промпт, определения инструментов и стабильную историю чата с помощью cache_control, чтобы Anthropic кэшировал префикс запроса (TTL 5 минут). Снижает стоимость и задержку на повторных обращениях.</translation>
    </message>
    <message>
        <source>Use 1h cache TTL (beta)</source>
        <translation>Использовать TTL кэша 1 час (бета)</translation>
    </message>
    <message>
        <source>Requests Anthropic&apos;s 1-hour cache TTL instead of the default 5 minutes. Sends the extended-cache-ttl-2025-04-11 beta header.</source>
        <translation>Запрашивает у Anthropic TTL кэша 1 час вместо стандартных 5 минут. Отправляет beta-заголовок extended-cache-ttl-2025-04-11.</translation>
    </message>
    <message>
        <source>OpenAI API Key:</source>
        <translation>API-ключ OpenAI:</translation>
    </message>
    <message>
        <source>Mistral AI API Key:</source>
        <translation>API-ключ Mistral AI:</translation>
    </message>
    <message>
        <source>Codestral API Key:</source>
        <translation>API-ключ Codestral:</translation>
    </message>
    <message>
        <source>Google AI API Key:</source>
        <translation>API-ключ Google AI:</translation>
    </message>
    <message>
        <source>Ollama(Bearer) API Key:</source>
        <translation>API-ключ Ollama(Bearer):</translation>
    </message>
    <message>
        <source>llama.cpp API Key:</source>
        <translation>API-ключ llama.cpp:</translation>
    </message>
    <message>
        <source>Qwen API Key:</source>
        <translation>API-ключ Qwen:</translation>
    </message>
    <message>
        <source>DeepSeek API Key:</source>
        <translation>API-ключ DeepSeek:</translation>
    </message>
    <message>
        <source>OpenRouter Settings</source>
        <translation>Настройки OpenRouter</translation>
    </message>
    <message>
        <source>OpenAI Settings</source>
        <translation>Настройки OpenAI</translation>
    </message>
    <message>
        <source>OpenAI Compatible Settings</source>
        <translation>Настройки OpenAI Compatible</translation>
    </message>
    <message>
        <source>Claude Settings</source>
        <translation>Настройки Claude</translation>
    </message>
    <message>
        <source>Mistral AI Settings</source>
        <translation>Настройки Mistral AI</translation>
    </message>
    <message>
        <source>Google AI Settings</source>
        <translation>Настройки Google AI</translation>
    </message>
    <message>
        <source>llama.cpp Settings</source>
        <translation>Настройки llama.cpp</translation>
    </message>
    <message>
        <source>Qwen (Alibaba) Settings</source>
        <translation>Настройки Qwen (Alibaba)</translation>
    </message>
    <message>
        <source>DeepSeek Settings</source>
        <translation>Настройки DeepSeek</translation>
    </message>
    <message>
        <source>Agent roles define different system prompts for specific tasks.</source>
        <translation>Роли агентов определяют разные системные промпты для конкретных задач.</translation>
    </message>
    <message>
        <source>Open Roles Folder...</source>
        <translation>Открыть папку ролей...</translation>
    </message>
    <message>
        <source>Add...</source>
        <translation>Добавить...</translation>
    </message>
    <message>
        <source>Edit...</source>
        <translation>Редактировать...</translation>
    </message>
    <message>
        <source>Duplicate...</source>
        <translation>Дублировать...</translation>
    </message>
    <message>
        <source>(Built-in role)</source>
        <translation>(Встроенная роль)</translation>
    </message>
    <message>
        <source>Role Already Exists</source>
        <translation>Роль уже существует</translation>
    </message>
    <message>
        <source>A role with ID &apos;%1&apos; already exists. Please use a different ID.</source>
        <translation>Роль с ID &apos;%1&apos; уже существует. Пожалуйста, используйте другой ID.</translation>
    </message>
    <message>
        <source>Error</source>
        <translation>Ошибка</translation>
    </message>
    <message>
        <source>Failed to save role &apos;%1&apos;.</source>
        <translation>Не удалось сохранить роль &apos;%1&apos;.</translation>
    </message>
    <message>
        <source>Cannot Edit Built-in Role</source>
        <translation>Нельзя редактировать встроенную роль</translation>
    </message>
    <message>
        <source>Built-in roles cannot be edited. You can duplicate this role and modify the copy.</source>
        <translation>Встроенные роли нельзя редактировать. Вы можете дублировать эту роль и изменить копию.</translation>
    </message>
    <message>
        <source>Failed to update role &apos;%1&apos;.</source>
        <translation>Не удалось обновить роль &apos;%1&apos;.</translation>
    </message>
    <message>
        <source>Failed to duplicate role.</source>
        <translation>Не удалось дублировать роль.</translation>
    </message>
    <message>
        <source>Cannot Delete Built-in Role</source>
        <translation>Нельзя удалить встроенную роль</translation>
    </message>
    <message>
        <source>Built-in roles cannot be deleted.</source>
        <translation>Встроенные роли нельзя удалить.</translation>
    </message>
    <message>
        <source>Delete Role</source>
        <translation>Удалить роль</translation>
    </message>
    <message>
        <source>Are you sure you want to delete the role &apos;%1&apos;?</source>
        <translation>Вы уверены, что хотите удалить роль &apos;%1&apos;?</translation>
    </message>
    <message>
        <source>Failed to delete role &apos;%1&apos;.</source>
        <translation>Не удалось удалить роль &apos;%1&apos;.</translation>
    </message>
    <message>
        <source>Generate QodeAssist suggestion at the current cursor position.</source>
        <translation>Сгенерировать подсказку QodeAssist в текущей позиции курсора.</translation>
    </message>
    <message>
        <source>Request QodeAssist Suggestion</source>
        <translation>Запросить подсказку QodeAssist</translation>
    </message>
    <message>
        <source>Refactor code using QodeAssist</source>
        <translation>Рефакторить код с помощью QodeAssist</translation>
    </message>
    <message>
        <source>Quick Refactor with QodeAssist</source>
        <translation>Быстрый рефакторинг с QodeAssist</translation>
    </message>
    <message>
        <source>Open QodeAssist Chat as an editor tab</source>
        <translation>Открыть чат QodeAssist как вкладку редактора</translation>
    </message>
    <message>
        <source>Show QodeAssist Chat</source>
        <translation>Показать чат QodeAssist</translation>
    </message>
    <message>
        <source>Close QodeAssist Chat</source>
        <translation>Закрыть чат QodeAssist</translation>
    </message>
    <message>
        <source>Open QodeAssist Chat in Separate Window</source>
        <translation>Открыть чат QodeAssist в отдельном окне</translation>
    </message>
    <message>
        <source>Open the QodeAssist chat in a separate window</source>
        <translation>Открыть чат QodeAssist в отдельном окне</translation>
    </message>
    <message>
        <source>New QodeAssist Chat</source>
        <translation>Новый чат QodeAssist</translation>
    </message>
    <message>
        <source>Open a fresh chat in a new editor tab</source>
        <translation>Открыть новый чат в новой вкладке редактора</translation>
    </message>
    <message>
        <source>Send QodeAssist Chat Message</source>
        <translation>Отправить сообщение в чате QodeAssist</translation>
    </message>
    <message>
        <source>Send the current message to the LLM</source>
        <translation>Отправить текущее сообщение в LLM</translation>
    </message>
    <message>
        <source>Clear QodeAssist Chat Session</source>
        <translation>Очистить сессию чата QodeAssist</translation>
    </message>
    <message>
        <source>Clear the current chat session</source>
        <translation>Очистить текущую сессию чата</translation>
    </message>
    <message>
        <source>QodeAssist Chat</source>
        <translation>Чат QodeAssist</translation>
    </message>
    <message>
        <source>Chat in Bottom Panel</source>
        <translation>Чат на нижней панели</translation>
    </message>
    <message>
        <source>Chat in Sidebar</source>
        <translation>Чат в боковой панели</translation>
    </message>
    <message>
        <source>Open Chat in Editor</source>
        <translation>Открыть чат в редакторе</translation>
    </message>
    <message>
        <source>Open Chat in Separate Window</source>
        <translation>Открыть чат в отдельном окне</translation>
    </message>
    <message>
        <source>Select LLM Provider</source>
        <translation>Выбрать провайдера LLM</translation>
    </message>
    <message>
        <source>Providers:</source>
        <translation>Провайдеры:</translation>
    </message>
    <message>
        <source>Select LLM Model</source>
        <translation>Выбрать модель LLM</translation>
    </message>
    <message>
        <source>Models:</source>
        <translation>Модели:</translation>
    </message>
    <message>
        <source>Select Template</source>
        <translation>Выбрать шаблон</translation>
    </message>
    <message>
        <source>Templates:</source>
        <translation>Шаблоны:</translation>
    </message>
    <message>
        <source>Switch AI configuration</source>
        <translation>Переключить конфигурацию ИИ</translation>
    </message>
    <message>
        <source>Enable/Disable AI Tools</source>
        <translation>Включить/выключить инструменты ИИ</translation>
    </message>
    <message>
        <source>Enable/Disable Thinking Mode</source>
        <translation>Включить/выключить режим мышления</translation>
    </message>
    <message>
        <source>Open Quick Refactor Settings</source>
        <translation>Открыть настройки быстрого рефакторинга</translation>
    </message>
    <message>
        <source>Your Current Instruction:</source>
        <translation>Ваша текущая инструкция:</translation>
    </message>
    <message>
        <source>Type or edit your instruction...</source>
        <translation>Введите или отредактируйте вашу инструкцию...</translation>
    </message>
    <message>
        <source>Or Load saved:</source>
        <translation>Или загрузить сохранённую:</translation>
    </message>
    <message>
        <source>Search saved instructions...</source>
        <translation>Поиск сохранённых инструкций...</translation>
    </message>
    <message>
        <source>Add Custom Instruction</source>
        <translation>Добавить пользовательскую инструкцию</translation>
    </message>
    <message>
        <source>Edit Custom Instruction</source>
        <translation>Редактировать пользовательскую инструкцию</translation>
    </message>
    <message>
        <source>Delete Custom Instruction</source>
        <translation>Удалить пользовательскую инструкцию</translation>
    </message>
    <message>
        <source>Open Instructions Folder</source>
        <translation>Открыть папку инструкций</translation>
    </message>
    <message>
        <source>Repeat Last Instructions</source>
        <translation>Повторить последние инструкции</translation>
    </message>
    <message>
        <source>Improve Current Code</source>
        <translation>Улучшить текущий код</translation>
    </message>
    <message>
        <source>Suggest Alternative Solution</source>
        <translation>Предложить альтернативное решение</translation>
    </message>
    <message>
        <source>Improve the selected code by enhancing readability, efficiency, and maintainability. Follow best practices for C++/Qt and fix any potential issues.</source>
        <translation>Улучшите выбранный код, повышая читаемость, эффективность и поддерживаемость. Следуйте лучшим практикам C++/Qt и исправьте любые потенциальные проблемы.</translation>
    </message>
    <message>
        <source>Suggest an alternative implementation approach for the selected code. Provide a different solution that might be cleaner, more efficient, or uses different Qt/C++ patterns or idioms.</source>
        <translation>Предложите альтернативный подход к реализации для выбранного кода. Дайте другое решение, которое может быть чище, эффективнее или использует другие паттерны или идиомы Qt/C++.</translation>
    </message>
    <message>
        <source>Failed to save custom instruction. Check logs for details.</source>
        <translation>Не удалось сохранить пользовательскую инструкцию. Подробности в логах.</translation>
    </message>
    <message>
        <source>No Instruction Selected</source>
        <translation>Инструкция не выбрана</translation>
    </message>
    <message>
        <source>Please select an instruction to edit.</source>
        <translation>Пожалуйста, выберите инструкцию для редактирования.</translation>
    </message>
    <message>
        <source>Failed to update custom instruction. Check logs for details.</source>
        <translation>Не удалось обновить пользовательскую инструкцию. Подробности в логах.</translation>
    </message>
    <message>
        <source>Please select an instruction to delete.</source>
        <translation>Пожалуйста, выберите инструкцию для удаления.</translation>
    </message>
    <message>
        <source>Confirm Deletion</source>
        <translation>Подтвердите удаление</translation>
    </message>
    <message>
        <source>Are you sure you want to delete the instruction &apos;%1&apos;?</source>
        <translation>Вы уверены, что хотите удалить инструкцию &apos;%1&apos;?</translation>
    </message>
    <message>
        <source>Failed to delete custom instruction. Check logs for details.</source>
        <translation>Не удалось удалить пользовательскую инструкцию. Подробности в логах.</translation>
    </message>
    <message>
        <source>Current</source>
        <translation>Текущая</translation>
    </message>
    <message>
        <source>Current (%1)</source>
        <translation>Текущая (%1)</translation>
    </message>
    <message>
        <source>No Instruction</source>
        <translation>Нет инструкции</translation>
    </message>
    <message>
        <source>Please type an instruction or select a saved one.</source>
        <translation>Пожалуйста, введите инструкцию или выберите сохранённую.</translation>
    </message>
    <message>
        <source>Enter instruction name...</source>
        <translation>Введите имя инструкции...</translation>
    </message>
    <message>
        <source>Name:</source>
        <translation>Имя:</translation>
    </message>
    <message>
        <source>Instruction Body:</source>
        <translation>Тело инструкции:</translation>
    </message>
    <message>
        <source>Enter the refactoring instruction that will be sent to the LLM...</source>
        <translation>Введите инструкцию по рефакторингу, которая будет отправлена в LLM...</translation>
    </message>
    <message>
        <source>Set as default instruction</source>
        <translation>Установить как инструкцию по умолчанию</translation>
    </message>
    <message>
        <source>This instruction will be automatically selected when opening Quick Refactor dialog</source>
        <translation>Эта инструкция будет автоматически выбираться при открытии диалога быстрого рефакторинга</translation>
    </message>
    <message>
        <source>Invalid Input</source>
        <translation>Некорректный ввод</translation>
    </message>
    <message>
        <source>Instruction name cannot be empty.</source>
        <translation>Имя инструкции не может быть пустым.</translation>
    </message>
    <message>
        <source>Instruction body cannot be empty.</source>
        <translation>Тело инструкции не может быть пустым.</translation>
    </message>
</context>
<context>
    <name>RootItem</name>
    <message>
        <source>Compressing chat…</source>
        <translation>Сжатие чата…</translation>
    </message>
    <message>
        <source>next ~%1  ·  session ↑%2 ↓%3 ↻%4</source>
        <translation>следующий ~%1  ·  сессия ↑%2 ↓%3 ↻%4</translation>
    </message>
    <message>
        <source>next ~%1  ·  session ↑%2 ↓%3</source>
        <translation>следующий ~%1  ·  сессия ↑%2 ↓%3</translation>
    </message>
    <message>
        <source>next request (estimate)  ·  session prompt ↑ / completion ↓ / cached ↻ (provider cache hits)</source>
        <translation>следующий запрос (оценка)  ·  сессия: промпт ↑ / ответ ↓ / кэш ↻ (попадания в кэш провайдера)</translation>
    </message>
    <message>
        <source>next request (estimate)  ·  session prompt ↑ / completion ↓</source>
        <translation>следующий запрос (оценка)  ·  сессия: промпт ↑ / ответ ↓</translation>
    </message>
    <message>
        <source>Сhat name: %1</source>
        <translation>Имя чата: %1</translation>
    </message>
    <message>
        <source>Move this chat to an editor tab</source>
        <translation>Переместить этот чат на вкладку редактора</translation>
    </message>
    <message>
        <source>Move this chat to a separate window</source>
        <translation>Переместить этот чат в отдельное окно</translation>
    </message>
    <message>
        <source>Type your message here... (%1 to send)</source>
        <translation>Введите ваше сообщение здесь... (%1 для отправки)</translation>
    </message>
    <message>
        <source>Cut</source>
        <translation>Вырезать</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <source>Paste</source>
        <translation>Вставить</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>Выделить всё</translation>
    </message>
    <message>
        <source>Clear</source>
        <translation>Очистить</translation>
    </message>
    <message>
        <source>Send</source>
        <translation>Отправить</translation>
    </message>
    <message>
        <source>Stop</source>
        <translation>Остановить</translation>
    </message>
    <message>
        <source>Send message to LLM %1</source>
        <translation>Отправить сообщение в LLM %1</translation>
    </message>
    <message>
        <source>Compress Chat</source>
        <translation>Сжать чат</translation>
    </message>
    <message>
        <source>Create a summarized copy of this chat?

The summary will be generated by LLM and saved as a new chat file.</source>
        <translation>Создать сокращённую копию этого чата?

Краткое содержание будет сгенерировано LLM и сохранено как новый файл чата.</translation>
    </message>
    <message>
        <source>Copied</source>
        <translation>Скопировано</translation>
    </message>
</context>
<context>
    <name>SplitDropZone</name>
    <message numerus="yes">
        <source>%n file(s) to drop</source>
        <translation>
            <numerusform>%n файл(ов) для сброса</numerusform>
            <numerusform>%n файл(ов) для сброса</numerusform>
            <numerusform>%n файл(ов) для сброса</numerusform>
        </translation>
    </message>
    <message>
        <source>Attach</source>
        <translation>Прикрепить</translation>
    </message>
    <message>
        <source>Images &amp; Text Files</source>
        <translation>Изображения и текстовые файлы</translation>
    </message>
    <message>
        <source>(for one-time use)</source>
        <translation>(для одноразового использования)</translation>
    </message>
    <message>
        <source>LINK</source>
        <translation>ССЫЛКА</translation>
    </message>
    <message>
        <source>Text Files</source>
        <translation>Текстовые файлы</translation>
    </message>
    <message>
        <source>(added to context)</source>
        <translation>(добавлено в контекст)</translation>
    </message>
</context>
<context>
    <name>TextBlock</name>
    <message>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>Выделить всё</translation>
    </message>
</context>
<context>
    <name>ThinkingBlock</name>
    <message>
        <source>Thinking (Redacted)</source>
        <translation>Мышление (скрыто)</translation>
    </message>
    <message>
        <source>Thinking</source>
        <translation>Мышление</translation>
    </message>
    <message>
        <source>Thinking content was redacted by safety systems</source>
        <translation>Содержимое мышления было скрыто системами безопасности</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Свернуть</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Развернуть</translation>
    </message>
</context>
<context>
    <name>ToolBlock</name>
    <message>
        <source>Tool: %1</source>
        <translation>Инструмент: %1</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>Выделить всё</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Свернуть</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Развернуть</translation>
    </message>
</context>
<context>
    <name>TopBar</name>
    <message>
        <source>Unpin chat window</source>
        <translation>Открепить окно чата</translation>
    </message>
    <message>
        <source>Pin chat window to the top</source>
        <translation>Закрепить окно чата сверху</translation>
    </message>
    <message>
        <source>Clean chat</source>
        <translation>Очистить чат</translation>
    </message>
    <message>
        <source>Open new chat in a new tab</source>
        <translation>Открыть новый чат в новой вкладке</translation>
    </message>
    <message>
        <source>Switch saved AI configuration</source>
        <translation>Переключить сохранённую конфигурацию ИИ</translation>
    </message>
    <message>
        <source>Switch agent role (different system prompts)</source>
        <translation>Переключить роль агента (разные системные промпты)</translation>
    </message>
    <message>
        <source>Tools are disabled in General Settings</source>
        <translation>Инструменты отключены в общих настройках</translation>
    </message>
    <message>
        <source>Tools enabled: AI can use tools to read files, search project, and build code</source>
        <translation>Инструменты включены: ИИ может использовать инструменты для чтения файлов, поиска по проекту и сборки кода</translation>
    </message>
    <message>
        <source>Tools disabled: Simple conversation without tool access</source>
        <translation>Инструменты отключены: простой диалог без доступа к инструментам</translation>
    </message>
    <message>
        <source>Thinking Mode enabled (Check model list support it)</source>
        <translation>Режим мышления включён (проверьте, поддерживает ли его модель)</translation>
    </message>
    <message>
        <source>Thinking Mode disabled</source>
        <translation>Режим мышления отключён</translation>
    </message>
    <message>
        <source>Thinking Mode is not available for this provider</source>
        <translation>Режим мышления недоступен для этого провайдера</translation>
    </message>
    <message>
        <source>Open Chat Assistant Settings</source>
        <translation>Открыть настройки чат-ассистента</translation>
    </message>
    <message>
        <source>Save chat to *.json file</source>
        <translation>Сохранить чат в файл *.json</translation>
    </message>
    <message>
        <source>Load chat from *.json file</source>
        <translation>Загрузить чат из файла *.json</translation>
    </message>
    <message>
        <source>Show in system</source>
        <translation>Показать в системе</translation>
    </message>
    <message>
        <source>View chat context (system prompt, role, rules)</source>
        <translation>Просмотреть контекст чата (системный промпт, роль, правила)</translation>
    </message>
    <message>
        <source>Current amount tokens in chat and LLM limit threshold</source>
        <translation>Текущее количество токенов в чате и порог лимита LLM</translation>
    </message>
</context>
</TS>
