<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU">
<context>
    <name>BottomBar</name>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="50"/>
        <source>Attach file to message</source>
        <translation>Прикрепить файл к сообщению</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="63"/>
        <source>Attach image to message</source>
        <translation>Прикрепить изображение к сообщению</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="76"/>
        <source>Link file to context</source>
        <translation>Привязать файл к контексту</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="82"/>
        <source>Sync open files</source>
        <translation>Синхронизировать открытые файлы</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="85"/>
        <source>Automatically synchronize currently opened files with the model context</source>
        <translation>Автоматически синхронизировать открытые в данный момент файлы с контекстом модели</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="108"/>
        <source>Compressing...</source>
        <translation>Сжатие...</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="118"/>
        <source>Cancel</source>
        <translation>Отмена</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="122"/>
        <source>Cancel compression</source>
        <translation>Отменить сжатие</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="130"/>
        <source>Compress</source>
        <translation>Сжать</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/BottomBar.qml" line="139"/>
        <source>Compress chat (create summarized copy using LLM)</source>
        <translation>Сжать чат (создать сокращённую копию с помощью LLM)</translation>
    </message>
</context>
<context>
    <name>ChatItem</name>
    <message>
        <location filename="../../ChatView/qml/chatparts/ChatItem.qml" line="159"/>
        <source>↑ %1 (cached %2)</source>
        <translation>↑ %1 (в кэше %2)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ChatItem.qml" line="160"/>
        <source>↑ %1</source>
        <translation>↑ %1</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ChatItem.qml" line="166"/>
        <source>↓ %1 (reasoning %2)</source>
        <translation>↓ %1 (рассуждения %2)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ChatItem.qml" line="167"/>
        <source>↓ %1</source>
        <translation>↓ %1</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ChatItem.qml" line="172"/>
        <source>Σ %1</source>
        <translation>Σ %1</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ChatItem.qml" line="210"/>
        <source>Reset chat to this message and edit</source>
        <translation>Сбросить чат до этого сообщения и редактировать</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ChatItem.qml" line="310"/>
        <location filename="../../ChatView/qml/chatparts/ChatItem.qml" line="402"/>
        <source>Click: Open in Qt Creator
Shift+Click: Open in System Editor</source>
        <translation>Клик: Открыть в Qt Creator
Shift+Клик: Открыть в системном редакторе</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ChatItem.qml" line="366"/>
        <source>Failed to load image</source>
        <translation>Не удалось загрузить изображение</translation>
    </message>
</context>
<context>
    <name>CodeBlock</name>
    <message>
        <location filename="../../ChatView/qml/chatparts/CodeBlock.qml" line="62"/>
        <source>Code (%1)</source>
        <translation>Код (%1)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/CodeBlock.qml" line="63"/>
        <source>Code</source>
        <translation>Код</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/CodeBlock.qml" line="105"/>
        <location filename="../../ChatView/qml/chatparts/CodeBlock.qml" line="136"/>
        <location filename="../../ChatView/qml/chatparts/CodeBlock.qml" line="147"/>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/CodeBlock.qml" line="115"/>
        <source>Collapse</source>
        <translation>Свернуть</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/CodeBlock.qml" line="115"/>
        <source>Expand</source>
        <translation>Развернуть</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/CodeBlock.qml" line="140"/>
        <source>Copied</source>
        <translation>Скопировано</translation>
    </message>
</context>
<context>
    <name>ContextViewer</name>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="54"/>
        <source>Chat Context</source>
        <translation>Контекст чата</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="62"/>
        <source>Refresh</source>
        <translation>Обновить</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="67"/>
        <source>Close</source>
        <translation>Закрыть</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="97"/>
        <source>Base System Prompt</source>
        <translation>Базовый системный промпт</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="98"/>
        <source>Active</source>
        <translation>Активно</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="98"/>
        <source>Empty</source>
        <translation>Пусто</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="125"/>
        <source>No system prompt configured</source>
        <translation>Системный промпт не настроен</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="146"/>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="235"/>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="377"/>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="152"/>
        <source>Edit in Settings</source>
        <translation>Редактировать в настройках</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="166"/>
        <source>Agent Role</source>
        <translation>Роль агента</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="221"/>
        <source>No role selected. Using base system prompt only.</source>
        <translation>Роль не выбрана. Используется только базовый системный промпт.</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="241"/>
        <source>Manage Roles</source>
        <translation>Управление ролями</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="255"/>
        <source>Project Rules</source>
        <translation>Правила проекта</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="256"/>
        <source>%1 active</source>
        <translation>%1 активно</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="256"/>
        <source>None</source>
        <translation>Нет</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="282"/>
        <source>Rules (%1)</source>
        <translation>Правила (%1)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="369"/>
        <source>Content</source>
        <translation>Содержимое</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="415"/>
        <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>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="430"/>
        <source>Open Rules Folder</source>
        <translation>Открыть папку правил</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/ContextViewer.qml" line="450"/>
        <source>Final prompt: Base System Prompt + Agent Role + Project Info + Project Rules + Linked Files</source>
        <translation>Итоговый промпт: Базовый системный промпт + Роль агента + Информация о проекте + Правила проекта + Привязанные файлы</translation>
    </message>
</context>
<context>
    <name>DiffStatistics</name>
    <message>
        <location filename="../../widgets/DiffStatistics.hpp" line="40"/>
        <source>+%1 lines, -%2 lines</source>
        <translation>+%1 строк, -%2 строк</translation>
    </message>
    <message>
        <location filename="../../widgets/DiffStatistics.hpp" line="42"/>
        <source>+%1 lines</source>
        <translation>+%1 строк</translation>
    </message>
    <message>
        <location filename="../../widgets/DiffStatistics.hpp" line="44"/>
        <source>-%1 lines</source>
        <translation>-%1 строк</translation>
    </message>
    <message>
        <location filename="../../widgets/DiffStatistics.hpp" line="46"/>
        <source>No changes</source>
        <translation>Без изменений</translation>
    </message>
</context>
<context>
    <name>FileEditBlock</name>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="76"/>
        <source>ARCHIVED</source>
        <translation>АРХИВ</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="77"/>
        <source>APPLIED</source>
        <translation>ПРИМЕНЕНО</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="78"/>
        <source>REJECTED</source>
        <translation>ОТКЛОНЕНО</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="79"/>
        <source>PENDING</source>
        <translation>ОЖИДАЕТ</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="200"/>
        <source>Replace</source>
        <translation>Заменить</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="200"/>
        <source>Append</source>
        <translation>Добавить</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="202"/>
        <source>%1: %2 (+%3 -%4)</source>
        <translation>%1: %2 (+%3 -%4)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="208"/>
        <source>%1: %2 (+%3)</source>
        <translation>%1: %2 (+%3)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="264"/>
        <source>Open file in editor and navigate to changes</source>
        <translation>Открыть файл в редакторе и перейти к изменениям</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="364"/>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="423"/>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="374"/>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="433"/>
        <source>Collapse</source>
        <translation>Свернуть</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="374"/>
        <location filename="../../ChatView/qml/chatparts/FileEditBlock.qml" line="433"/>
        <source>Expand</source>
        <translation>Развернуть</translation>
    </message>
</context>
<context>
    <name>FileEditsActionBar</name>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="81"/>
        <source>File Edit in Current Message</source>
        <translation>Изменение файла в текущем сообщении</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="82"/>
        <source>%1 File Edits in Current Message</source>
        <translation>%1 изменений файлов в текущем сообщении</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="93"/>
        <source>%1 applied</source>
        <translation>%1 применено</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="96"/>
        <source>%1 pending</source>
        <translation>%1 в ожидании</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="99"/>
        <source>%1 rejected</source>
        <translation>%1 отклонено</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="118"/>
        <source>Apply All (%1)</source>
        <translation>Применить все (%1)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="119"/>
        <source>Reapply All (%1)</source>
        <translation>Повторно применить все (%1)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="124"/>
        <source>Apply all pending and rejected edits in this message</source>
        <translation>Применить все ожидающие и отклонённые изменения в этом сообщении</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="125"/>
        <source>Reapply all rejected edits in this message</source>
        <translation>Повторно применить все отклонённые изменения в этом сообщении</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="135"/>
        <source>Undo All (%1)</source>
        <translation>Отменить все (%1)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/FileEditsActionBar.qml" line="139"/>
        <source>Undo all applied edits in this message</source>
        <translation>Отменить все применённые изменения в этом сообщении</translation>
    </message>
</context>
<context>
    <name>QObject</name>
    <message>
        <location filename="../../pluginllmcore/PromptTemplateManager.cpp" line="62"/>
        <location filename="../../pluginllmcore/PromptTemplateManager.cpp" line="75"/>
        <source>Template Not Found</source>
        <translation>Шаблон не найден</translation>
    </message>
    <message>
        <location filename="../../pluginllmcore/PromptTemplateManager.cpp" line="63"/>
        <location filename="../../pluginllmcore/PromptTemplateManager.cpp" line="76"/>
        <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>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="595"/>
        <source>Providers</source>
        <translation>Провайдеры</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="262"/>
        <source>Agents</source>
        <translation>Агенты</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatConfigurationController.cpp" line="58"/>
        <location filename="../../ChatView/ChatConfigurationController.cpp" line="71"/>
        <source>Current Settings</source>
        <translation>Текущие настройки</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatCompressor</name>
    <message>
        <location filename="../../ChatView/ChatCompressor.cpp" line="30"/>
        <source>Compression already in progress</source>
        <translation>Сжатие уже выполняется</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatCompressor.cpp" line="35"/>
        <source>No chat file to compress</source>
        <translation>Нет файла чата для сжатия</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatCompressor.cpp" line="40"/>
        <source>Chat is empty, nothing to compress</source>
        <translation>Чат пуст, нечего сжимать</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatCompressor.cpp" line="48"/>
        <source>No provider available</source>
        <translation>Нет доступных провайдеров</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatCompressor.cpp" line="57"/>
        <source>No template available</source>
        <translation>Нет доступных шаблонов</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatCompressor.cpp" line="99"/>
        <source>Compression cancelled</source>
        <translation>Сжатие отменено</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatCompressor.cpp" line="122"/>
        <source>Failed to save compressed chat</source>
        <translation>Не удалось сохранить сжатый чат</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatCompressor.cpp" line="137"/>
        <source>Compression failed: %1</source>
        <translation>Сжатие не удалось: %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatFileManager</name>
    <message>
        <location filename="../../ChatView/ChatFileManager.cpp" line="33"/>
        <source>File is not accessible: %1</source>
        <translation>Файл недоступен: %1</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatFileManager.cpp" line="45"/>
        <source>Failed to copy file: %1</source>
        <translation>Не удалось скопировать файл: %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatHistoryStore</name>
    <message>
        <location filename="../../ChatView/ChatHistoryStore.cpp" line="121"/>
        <source>Save Chat History</source>
        <translation>Сохранить историю чата</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatHistoryStore.cpp" line="124"/>
        <location filename="../../ChatView/ChatHistoryStore.cpp" line="151"/>
        <source>JSON files (*.json)</source>
        <translation>Файлы JSON (*.json)</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatHistoryStore.cpp" line="148"/>
        <source>Load Chat History</source>
        <translation>Загрузить историю чата</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::ChatRootView</name>
    <message>
        <location filename="../../ChatView/ChatRootView.cpp" line="285"/>
        <source>Chat compressed successfully!</source>
        <translation>Чат успешно сжат!</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatRootView.cpp" line="508"/>
        <source>This chat file is already in use by another QodeAssist chat session.</source>
        <translation>Этот файл чата уже используется в другой сессии QodeAssist.</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatRootView.cpp" line="527"/>
        <source>This chat is already open in another QodeAssist chat session.</source>
        <translation>Этот чат уже открыт в другой сессии QodeAssist.</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatRootView.cpp" line="605"/>
        <location filename="../../ChatView/ChatRootView.cpp" line="653"/>
        <source>Select Files to Attach</source>
        <translation>Выберите файлы для прикрепления</translation>
    </message>
    <message numerus="yes">
        <location filename="../../ChatView/ChatRootView.cpp" line="689"/>
        <source>Images automatically moved to Attach zone (%n file(s))</source>
        <translation>
            <numerusform>Изображения автоматически перемещены в зону прикрепления (%n файл(ов))</numerusform>
            <numerusform>Изображения автоматически перемещены в зону прикрепления (%n файл(ов))</numerusform>
            <numerusform>Изображения автоматически перемещены в зону прикрепления (%n файл(ов))</numerusform>
        </translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatRootView.cpp" line="713"/>
        <source>Select Images to Attach</source>
        <translation>Выберите изображения для прикрепления</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatRootView.cpp" line="715"/>
        <source>Images (*.png *.jpg *.jpeg *.gif *.bmp *.webp)</source>
        <translation>Изображения (*.png *.jpg *.jpeg *.gif *.bmp *.webp)</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatRootView.cpp" line="1280"/>
        <source>Compression is already in progress</source>
        <translation>Сжатие уже выполняется</translation>
    </message>
    <message>
        <location filename="../../ChatView/ChatRootView.cpp" line="1286"/>
        <source>No chat file to compress. Please save the chat first.</source>
        <translation>Нет файла чата для сжатия. Сначала сохраните чат.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Chat::NavigationPanel</name>
    <message>
        <location filename="../../chat/NavigationPanel.cpp" line="21"/>
        <source>QodeAssist Chat</source>
        <translation>Чат QodeAssist</translation>
    </message>
</context>
<context>
    <name>QodeAssist::EditorChatButton</name>
    <message>
        <location filename="../../widgets/EditorChatButton.cpp" line="48"/>
        <source>Open QodeAssist Chat</source>
        <translation>Открыть чат QodeAssist</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Mcp::McpServerManager</name>
    <message>
        <location filename="../../mcp/McpServerManager.cpp" line="80"/>
        <source>QodeAssist MCP server exposing Qt Creator project tools.</source>
        <translation>MCP-сервер QodeAssist, предоставляющий инструменты проекта Qt Creator.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::QodeAssistClient</name>
    <message>
        <location filename="../../QodeAssistClient.cpp" line="379"/>
        <source>Code completion failed: %1</source>
        <translation>Автодополнение кода не удалось: %1</translation>
    </message>
    <message>
        <location filename="../../QodeAssistClient.cpp" line="523"/>
        <source>Quick refactor failed</source>
        <translation>Быстрый рефакторинг не удался</translation>
    </message>
    <message>
        <location filename="../../QodeAssistClient.cpp" line="524"/>
        <source>Quick refactor failed: %1</source>
        <translation>Быстрый рефакторинг не удался: %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::RefactorWidget</name>
    <message>
        <location filename="../../widgets/RefactorWidget.cpp" line="176"/>
        <source>◄ Original</source>
        <translation>◄ Оригинал</translation>
    </message>
    <message>
        <location filename="../../widgets/RefactorWidget.cpp" line="186"/>
        <source>Refactored ►</source>
        <translation>Рефакторинг ►</translation>
    </message>
    <message>
        <location filename="../../widgets/RefactorWidget.cpp" line="215"/>
        <source>✓ Apply (⌘+Enter)</source>
        <translation>✓ Применить (⌘+Enter)</translation>
    </message>
    <message>
        <location filename="../../widgets/RefactorWidget.cpp" line="217"/>
        <source>✓ Apply (Ctrl+Enter)</source>
        <translation>✓ Применить (Ctrl+Enter)</translation>
    </message>
    <message>
        <location filename="../../widgets/RefactorWidget.cpp" line="223"/>
        <source>✗ Decline (Esc)</source>
        <translation>✗ Отклонить (Esc)</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentDetailPane</name>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="84"/>
        <source>Open in editor</source>
        <translation>Открыть в редакторе</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="85"/>
        <source>Duplicate…</source>
        <translation>Дублировать…</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="86"/>
        <source>Delete</source>
        <translation>Удалить</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="127"/>
        <source>Identity</source>
        <translation>Идентификация</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="129"/>
        <source>Extends:</source>
        <translation>Наследует от:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="143"/>
        <source>Name:</source>
        <translation>Имя:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="153"/>
        <source>Description:</source>
        <translation>Описание:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="154"/>
        <source>Tags:</source>
        <translation>Теги:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="155"/>
        <source>Comma-separated. Free-form — used to filter and group the agent list.</source>
        <translation>Через запятую. Свободная форма — используется для фильтрации и группировки списка агентов.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="159"/>
        <source>System role</source>
        <translation>Системная роль</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="161"/>
        <source>Prepended to every request as the system message.</source>
        <translation>Добавляется в начало каждого запроса как системное сообщение.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="168"/>
        <source>Context</source>
        <translation>Контекст</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="170"/>
        <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>
        <location filename="../../settings/AgentDetailPane.cpp" line="179"/>
        <source>Connection</source>
        <translation>Соединение</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="191"/>
        <source>Provider:</source>
        <translation>Провайдер:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="192"/>
        <source>The provider instance this agent uses. URL is inherited from the instance.</source>
        <translation>Экземпляр провайдера, который использует этот агент. URL наследуется от экземпляра.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="194"/>
        <source>Endpoint:</source>
        <translation>Конечная точка:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="195"/>
        <source>Appended to the provider&apos;s URL. Blank uses the provider default.</source>
        <translation>Добавляется к URL провайдера. Пусто — используется значение по умолчанию провайдера.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="197"/>
        <source>Model:</source>
        <translation>Модель:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="208"/>
        <source>Match</source>
        <translation>Соответствие</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="210"/>
        <source>When a feature slot has multiple bound agents, the first whose match rules satisfy the current context wins.</source>
        <translation>Когда к слоту функции привязано несколько агентов, побеждает первый, чьи правила соответствия удовлетворяют текущему контексту.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="217"/>
        <source>File patterns:</source>
        <translation>Шаблоны файлов:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="218"/>
        <source>Globs, comma-separated. Empty matches every file.</source>
        <translation>Glob-шаблоны через запятую. Пусто соответствует любому файлу.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="222"/>
        <source>Template</source>
        <translation>Шаблон</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="224"/>
        <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>
        <location filename="../../settings/AgentDetailPane.cpp" line="233"/>
        <source>message_format:</source>
        <translation>message_format:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="237"/>
        <source>Load errors</source>
        <translation>Ошибки загрузки</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="246"/>
        <location filename="../../settings/AgentDetailPane.cpp" line="257"/>
        <source>▸ Show raw TOML</source>
        <translation>▸ Показать исходный TOML</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="257"/>
        <source>▾ Hide raw TOML</source>
        <translation>▾ Скрыть исходный TOML</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="312"/>
        <source>No description provided.</source>
        <translation>Описание не указано.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="344"/>
        <source>%1  (missing — not in provider library)</source>
        <translation>%1  (отсутствует — нет в библиотеке провайдеров)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="352"/>
        <source>(provider default)</source>
        <translation>(по умолчанию провайдера)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="358"/>
        <source># effective request line
(unknown — provider instance not found)</source>
        <translation># эффективная строка запроса
(неизвестно — экземпляр провайдера не найден)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="360"/>
        <source>effective request line</source>
        <translation>эффективная строка запроса</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="363"/>
        <source>(no system role set)</source>
        <translation>(системная роль не задана)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="365"/>
        <source>(no context block)</source>
        <translation>(нет блока контекста)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="368"/>
        <source>(matches every file)</source>
        <translation>(соответствует любому файлу)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="371"/>
        <source>(inherited from parent / none)</source>
        <translation>(наследуется от родителя / нет)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="382"/>
        <source>(truncated at %1 bytes)</source>
        <translation>(обрезано на %1 байт)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="385"/>
        <source>(source file is empty)</source>
        <translation>(исходный файл пуст)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="388"/>
        <source>(source file unavailable: %1)</source>
        <translation>(исходный файл недоступен: %1)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="394"/>
        <source>Bundled agents are read-only — duplicate to edit.</source>
        <translation>Встроенные агенты доступны только для чтения — дублируйте для редактирования.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="398"/>
        <source>Bundled agents cannot be deleted.</source>
        <translation>Встроенные агенты нельзя удалить.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="407"/>
        <source>Select an agent</source>
        <translation>Выберите агента</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="409"/>
        <source>Pick an agent from the list to see its details.</source>
        <translation>Выберите агента из списка, чтобы увидеть подробности.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="437"/>
        <source>error: %1</source>
        <translation>ошибка: %1</translation>
    </message>
    <message>
        <location filename="../../settings/AgentDetailPane.cpp" line="439"/>
        <source>warning: %1</source>
        <translation>предупреждение: %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentListPane</name>
    <message>
        <location filename="../../settings/AgentListPane.cpp" line="35"/>
        <source>Filter agents…</source>
        <translation>Фильтр агентов…</translation>
    </message>
    <message>
        <location filename="../../settings/AgentListPane.cpp" line="186"/>
        <source>User</source>
        <translation>Пользовательские</translation>
    </message>
    <message>
        <location filename="../../settings/AgentListPane.cpp" line="190"/>
        <source>Bundled</source>
        <translation>Встроенные</translation>
    </message>
    <message>
        <location filename="../../settings/AgentListPane.cpp" line="194"/>
        <source>No agents match these filters.</source>
        <translation>Нет агентов, соответствующих этим фильтрам.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentRoleDialog</name>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="24"/>
        <source>Add Agent Role</source>
        <translation>Добавить роль агента</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="26"/>
        <source>Duplicate Agent Role</source>
        <translation>Дублировать роль агента</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="28"/>
        <source>Edit Agent Role</source>
        <translation>Редактировать роль агента</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="42"/>
        <source>e.g., Developer, Code Reviewer</source>
        <translation>напр., Разработчик, Ревьюер кода</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="43"/>
        <source>Name:</source>
        <translation>Имя:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="46"/>
        <source>e.g., developer, code_reviewer</source>
        <translation>напр., developer, code_reviewer</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="47"/>
        <source>ID:</source>
        <translation>ID:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="50"/>
        <source>Brief description of this role...</source>
        <translation>Краткое описание этой роли...</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="52"/>
        <source>Description:</source>
        <translation>Описание:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="56"/>
        <source>System Prompt:</source>
        <translation>Системный промпт:</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="61"/>
        <source>You are an expert in...

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

Ваша роль:
- Задача 1
- Задача 2
- Задача 3</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRoleDialog.cpp" line="75"/>
        <source>ID cannot be changed for existing roles</source>
        <translation>ID нельзя изменить для существующих ролей</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentsWidget</name>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="69"/>
        <source>Agents</source>
        <translation>Агенты</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="75"/>
        <source>Reload from disk</source>
        <translation>Перезагрузить с диска</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="76"/>
        <source>Open agents folder</source>
        <translation>Открыть папку агентов</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="189"/>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="197"/>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="203"/>
        <source>Open agent</source>
        <translation>Открыть агента</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="190"/>
        <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>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="198"/>
        <source>Agent &apos;%1&apos; has no editable source file.</source>
        <translation>У агента &apos;%1&apos; нет редактируемого исходного файла.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="204"/>
        <source>Could not open %1.</source>
        <translation>Не удалось открыть %1.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="212"/>
        <source>Duplicate</source>
        <translation>Дублировать</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="228"/>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="236"/>
        <source>Delete Agent</source>
        <translation>Удалить агента</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="229"/>
        <source>Delete agent &apos;%1&apos;?

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

Это удалит файл:
%2</translation>
    </message>
    <message>
        <location filename="../../settings/AgentsSettingsPage.cpp" line="237"/>
        <source>Could not delete the agent file:
%1</source>
        <translation>Не удалось удалить файл агента:
%1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::McpClientsListAspect</name>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="72"/>
        <source>Connected.</source>
        <translation>Подключено.</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="74"/>
        <source>Connecting…</source>
        <translation>Подключение…</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="76"/>
        <source>Failed.</source>
        <translation>Ошибка.</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="77"/>
        <source>Failed: %1</source>
        <translation>Ошибка: %1</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="81"/>
        <source>Disabled.</source>
        <translation>Отключено.</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="129"/>
        <source>everything (reference test server)</source>
        <translation>everything (эталонный тестовый сервер)</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="138"/>
        <source>filesystem (local files)</source>
        <translation>filesystem (локальные файлы)</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="149"/>
        <source>memory (in-memory key-value)</source>
        <translation>memory (ключ-значение в памяти)</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="158"/>
        <source>git (local git ops)</source>
        <translation>git (локальные операции git)</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="167"/>
        <source>time (system clock)</source>
        <translation>time (системные часы)</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="176"/>
        <source>qtcreator (Qt Creator&apos;s built-in MCP server)</source>
        <translation>qtcreator (встроенный MCP-сервер Qt Creator)</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="185"/>
        <source>qt-docs (Qt documentation)</source>
        <translation>qt-docs (документация Qt)</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="193"/>
        <source>remote (SSE / HTTP)</source>
        <translation>remote (SSE / HTTP)</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="232"/>
        <source>Server reports no tools.</source>
        <translation>Сервер сообщает об отсутствии инструментов.</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="245"/>
        <source>Tools</source>
        <translation>Инструменты</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="271"/>
        <source>Enable / disable this MCP server</source>
        <translation>Включить / выключить этот MCP-сервер</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="285"/>
        <source>Remove this server from the config.</source>
        <translation>Удалить этот сервер из конфигурации.</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="313"/>
        <source>Remove server</source>
        <translation>Удалить сервер</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="314"/>
        <source>Remove server &apos;%1&apos; from the config?</source>
        <translation>Удалить сервер &apos;%1&apos; из конфигурации?</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="346"/>
        <source>Open Config</source>
        <translation>Открыть конфигурацию</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="348"/>
        <source>Refresh MCP List</source>
        <translation>Обновить список MCP</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="359"/>
        <source>Note: restart Qt Creator to apply MCP changes to already-opened chats and running sessions.</source>
        <translation>Примечание: перезапустите Qt Creator, чтобы применить изменения MCP к уже открытым чатам и работающим сессиям.</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="376"/>
        <source>Quick Setup</source>
        <translation>Быстрая настройка</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="379"/>
        <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>
        <location filename="../../settings/McpClientsListAspect.cpp" line="382"/>
        <source>-- Select Preset --</source>
        <translation>-- Выберите пресет --</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="410"/>
        <source>No servers configured. Add a preset below or edit the JSON.</source>
        <translation>Серверы не настроены. Добавьте пресет ниже или отредактируйте JSON.</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="415"/>
        <source>0 server(s) defined.</source>
        <translation>Определено 0 серверов.</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="429"/>
        <source>%1 server(s) defined, %2 enabled.</source>
        <translation>Определено %1 серверов, включено %2.</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="475"/>
        <source>MCP configuration</source>
        <translation>Конфигурация MCP</translation>
    </message>
    <message>
        <location filename="../../settings/McpClientsListAspect.cpp" line="476"/>
        <source>Failed to write %1:
%2</source>
        <translation>Не удалось записать %1:
%2</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::ProviderDetailPane</name>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="42"/>
        <source>Edit…</source>
        <translation>Редактировать…</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="44"/>
        <source>Open in editor</source>
        <translation>Открыть в редакторе</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="46"/>
        <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>
        <location filename="../../settings/ProviderDetailPane.cpp" line="48"/>
        <source>Duplicate…</source>
        <translation>Дублировать…</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="49"/>
        <source>Delete</source>
        <translation>Удалить</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="50"/>
        <source>Cancel</source>
        <translation>Отмена</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="51"/>
        <source>Save</source>
        <translation>Сохранить</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="105"/>
        <source>Identity</source>
        <translation>Идентификация</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="117"/>
        <source>Name:</source>
        <translation>Имя:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="118"/>
        <source>Client API:</source>
        <translation>Клиентский API:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="119"/>
        <source>The client API this provider speaks. Cannot be changed after creation.</source>
        <translation>Клиентский API, на котором говорит этот провайдер. Нельзя изменить после создания.</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="121"/>
        <source>Description:</source>
        <translation>Описание:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="124"/>
        <source>Endpoint</source>
        <translation>Конечная точка</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="131"/>
        <source>URL:</source>
        <translation>URL:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="132"/>
        <source>Base URL. Agents append their endpoint path (e.g. /chat/completions) to this.</source>
        <translation>Базовый URL. Агенты добавляют к нему свой путь конечной точки (напр. /chat/completions).</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="144"/>
        <source>Credentials</source>
        <translation>Учётные данные</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="147"/>
        <location filename="../../settings/ProviderDetailPane.cpp" line="316"/>
        <location filename="../../settings/ProviderDetailPane.cpp" line="370"/>
        <source>Enter API key…</source>
        <translation>Введите API-ключ…</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="151"/>
        <source>Show / hide API key</source>
        <translation>Показать / скрыть API-ключ</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="155"/>
        <source>Save key</source>
        <translation>Сохранить ключ</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="157"/>
        <source>Clear</source>
        <translation>Очистить</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="158"/>
        <source>Erase the stored API key for this provider</source>
        <translation>Стереть сохранённый API-ключ для этого провайдера</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="190"/>
        <source>API key:</source>
        <translation>API-ключ:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="194"/>
        <source>Launch</source>
        <translation>Запуск</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="204"/>
        <location filename="../../settings/ProviderDetailPane.cpp" line="410"/>
        <source>idle</source>
        <translation>ожидание</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="205"/>
        <source>Start</source>
        <translation>Запустить</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="206"/>
        <source>Stop</source>
        <translation>Остановить</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="207"/>
        <source>Restart</source>
        <translation>Перезапустить</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="224"/>
        <location filename="../../settings/ProviderDetailPane.cpp" line="243"/>
        <source>▸ Show launch terminal</source>
        <translation>▸ Показать терминал запуска</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="243"/>
        <source>▾ Hide launch terminal</source>
        <translation>▾ Скрыть терминал запуска</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="253"/>
        <location filename="../../settings/ProviderDetailPane.cpp" line="264"/>
        <source>▸ Show raw TOML</source>
        <translation>▸ Показать исходный TOML</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="264"/>
        <source>▾ Hide raw TOML</source>
        <translation>▾ Скрыть исходный TOML</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="295"/>
        <source>No description provided.</source>
        <translation>Описание не указано.</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="309"/>
        <source>— not required (local provider)</source>
        <translation>— не требуется (локальный провайдер)</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="310"/>
        <source>This provider type does not use a key.</source>
        <translation>Этот тип провайдера не использует ключ.</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="312"/>
        <location filename="../../settings/ProviderDetailPane.cpp" line="366"/>
        <source>Stored — enter a new key to replace it.</source>
        <translation>Сохранён — введите новый ключ для замены.</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="313"/>
        <location filename="../../settings/ProviderDetailPane.cpp" line="367"/>
        <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>
        <location filename="../../settings/ProviderDetailPane.cpp" line="317"/>
        <location filename="../../settings/ProviderDetailPane.cpp" line="371"/>
        <source>No key stored yet. Type a key and press Save key.</source>
        <translation>Ключ ещё не сохранён. Введите ключ и нажмите «Сохранить ключ».</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="338"/>
        <source>Select a provider</source>
        <translation>Выберите провайдера</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="389"/>
        <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>
        <location filename="../../settings/ProviderDetailPane.cpp" line="400"/>
        <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>
        <location filename="../../settings/ProviderDetailPane.cpp" line="411"/>
        <source>starting…</source>
        <translation>запуск…</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="412"/>
        <source>probing…</source>
        <translation>проверка…</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="413"/>
        <source>ready</source>
        <translation>готово</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="414"/>
        <source>stopping…</source>
        <translation>остановка…</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="416"/>
        <source>failed</source>
        <translation>ошибка</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderDetailPane.cpp" line="417"/>
        <source>failed — %1</source>
        <translation>ошибка — %1</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::ProvidersPageWidget</name>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="76"/>
        <source>Providers</source>
        <translation>Провайдеры</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="92"/>
        <source>Filter providers…</source>
        <translation>Фильтр провайдеров…</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="136"/>
        <source>Open in editor</source>
        <translation>Открыть в редакторе</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="137"/>
        <source>Bundled providers are read-only. Use Duplicate to create an editable user copy first.</source>
        <translation>Встроенные провайдеры доступны только для чтения. Используйте «Дублировать», чтобы сначала создать редактируемую пользовательскую копию.</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="278"/>
        <source>No user instances yet.</source>
        <translation>Пока нет пользовательских экземпляров.</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="279"/>
        <source>No bundled instances loaded.</source>
        <translation>Встроенные экземпляры не загружены.</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="289"/>
        <source>User</source>
        <translation>Пользовательские</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="290"/>
        <source>Bundled</source>
        <translation>Встроенные</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="325"/>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="331"/>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="343"/>
        <source>Duplicate provider</source>
        <translation>Дублировать провайдера</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="326"/>
        <source>Name for the new provider:</source>
        <translation>Имя нового провайдера:</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="332"/>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="402"/>
        <source>An instance named &apos;%1&apos; already exists.</source>
        <translation>Экземпляр с именем &apos;%1&apos; уже существует.</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="362"/>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="367"/>
        <source>Delete provider</source>
        <translation>Удалить провайдера</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="363"/>
        <source>Delete user provider &apos;%1&apos;?

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

Файл: %2</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="368"/>
        <source>Failed to delete file:
%1</source>
        <translation>Не удалось удалить файл:
%1</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="382"/>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="395"/>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="401"/>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="408"/>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="423"/>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="431"/>
        <source>Save</source>
        <translation>Сохранить</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="382"/>
        <source>Name cannot be empty.</source>
        <translation>Имя не может быть пустым.</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="410"/>
        <source>Save anyway?</source>
        <translation>Сохранить всё равно?</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="432"/>
        <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>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="471"/>
        <source>Clear API key</source>
        <translation>Очистить API-ключ</translation>
    </message>
    <message>
        <location filename="../../settings/ProvidersSettingsPage.cpp" line="472"/>
        <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>
        <location filename="../../settings/TagFilterStrip.cpp" line="115"/>
        <source>FILTER BY TAG</source>
        <translation>ФИЛЬТР ПО ТЕГУ</translation>
    </message>
    <message>
        <location filename="../../settings/TagFilterStrip.cpp" line="120"/>
        <source>clear</source>
        <translation>очистить</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Tools::TodoTool</name>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="100"/>
        <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>
        <location filename="../../tools/TodoTool.cpp" line="107"/>
        <source>Error: &apos;tasks&apos; array cannot be empty. Provide at least one task.</source>
        <translation>Ошибка: массив &apos;tasks&apos; не может быть пустым. Укажите хотя бы одну задачу.</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="120"/>
        <source>Error: All tasks in &apos;tasks&apos; array are empty strings.</source>
        <translation>Ошибка: все задачи в массиве &apos;tasks&apos; — пустые строки.</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="128"/>
        <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>
        <location filename="../../tools/TodoTool.cpp" line="135"/>
        <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>
        <location filename="../../tools/TodoTool.cpp" line="148"/>
        <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>
        <location filename="../../tools/TodoTool.cpp" line="159"/>
        <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>
        <location filename="../../tools/TodoTool.cpp" line="192"/>
        <source>✓ Added 1 new task</source>
        <translation>✓ Добавлена 1 новая задача</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="193"/>
        <source>✓ Added %1 new tasks</source>
        <translation>✓ Добавлено новых задач: %1</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="203"/>
        <source>Error: No todos found in this session</source>
        <translation>Ошибка: в этой сессии не найдено задач</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="228"/>
        <source>✓ Marked 1 task as completed</source>
        <translation>✓ 1 задача отмечена как выполненная</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="229"/>
        <source>✓ Marked %1 tasks as completed</source>
        <translation>✓ Задач отмечено как выполненные: %1</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="234"/>
        <source>⚠ %1 already completed</source>
        <translation>⚠ %1 уже выполнено</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="238"/>
        <source>❌ Not found: %1</source>
        <translation>❌ Не найдено: %1</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="255"/>
        <source>📋 TODO List: (empty)</source>
        <translation>📋 Список задач: (пусто)</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="264"/>
        <source>📋 TODO List:</source>
        <translation>📋 Список задач:</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="287"/>
        <location filename="../../tools/TodoTool.cpp" line="329"/>
        <source>Progress: %1/%2 completed (%3%)</source>
        <translation>Прогресс: %1/%2 выполнено (%3%)</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="296"/>
        <location filename="../../tools/TodoTool.cpp" line="316"/>
        <source>📋 All tasks completed! 🎉</source>
        <translation>📋 Все задачи выполнены! 🎉</translation>
    </message>
    <message>
        <location filename="../../tools/TodoTool.cpp" line="321"/>
        <source>📋 Remaining tasks:</source>
        <translation>📋 Оставшиеся задачи:</translation>
    </message>
</context>
<context>
    <name>QodeAssist::UpdateDialog</name>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="19"/>
        <source>QodeAssist Update</source>
        <translation>Обновление QodeAssist</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="27"/>
        <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>
        <location filename="../../settings/UpdateDialog.cpp" line="54"/>
        <source>QodeAssistUpdater - convenient tool for plugin installation and updates</source>
        <translation>QodeAssistUpdater — удобный инструмент для установки и обновления плагина</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="60"/>
        <source>Download QodeAssistUpdater</source>
        <translation>Скачать QodeAssistUpdater</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="70"/>
        <location filename="../../settings/UpdateDialog.cpp" line="127"/>
        <source>A new version of QodeAssist is available!</source>
        <translation>Доступна новая версия QodeAssist!</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="76"/>
        <location filename="../../settings/UpdateDialog.cpp" line="128"/>
        <source>Version %1 is now available - you have %2</source>
        <translation>Доступна версия %1 — у вас %2</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="80"/>
        <source>Release Notes:</source>
        <translation>Заметки о выпуске:</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="89"/>
        <source>Open Release Page</source>
        <translation>Открыть страницу выпуска</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="92"/>
        <source>Open Plugin Folder</source>
        <translation>Открыть папку плагина</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="95"/>
        <source>Close</source>
        <translation>Закрыть</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="121"/>
        <source>QodeAssist is up to date</source>
        <translation>QodeAssist обновлён до последней версии</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="123"/>
        <source>You are using the latest version: %1</source>
        <translation>Вы используете последнюю версию: %1</translation>
    </message>
    <message>
        <location filename="../../settings/UpdateDialog.cpp" line="135"/>
        <source>No release notes available. Check the release page for more information.</source>
        <translation>Заметки о выпуске недоступны. Проверьте страницу выпуска для получения дополнительной информации.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::UpdateStatusWidget</name>
    <message>
        <location filename="../../UpdateStatusWidget.cpp" line="28"/>
        <source>Update</source>
        <translation>Обновить</translation>
    </message>
    <message>
        <location filename="../../UpdateStatusWidget.cpp" line="45"/>
        <source>New version: v%1</source>
        <translation>Новая версия: v%1</translation>
    </message>
    <message>
        <location filename="../../UpdateStatusWidget.cpp" line="48"/>
        <source>Check update information</source>
        <translation>Проверить информацию об обновлении</translation>
    </message>
</context>
<context>
    <name>QtC::QodeAssist</name>
    <message>
        <location filename="../../sources/providersConfig/ProviderInstanceWriter.cpp" line="141"/>
        <source>Cannot create user provider folder:
%1</source>
        <translation>Не удалось создать папку пользовательского провайдера:
%1</translation>
    </message>
    <message>
        <location filename="../../sources/providersConfig/ProviderInstanceWriter.cpp" line="147"/>
        <source>Cannot pick a free filename in:
%1</source>
        <translation>Не удалось подобрать свободное имя файла в:
%1</translation>
    </message>
    <message>
        <location filename="../../sources/providersConfig/ProviderInstanceWriter.cpp" line="153"/>
        <source>Cannot write %1:
%2</source>
        <translation>Не удалось записать %1:
%2</translation>
    </message>
    <message>
        <location filename="../../sources/providersConfig/ProviderInstanceWriter.cpp" line="159"/>
        <source>Write failed for %1:
%2</source>
        <translation>Запись не удалась для %1:
%2</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="79"/>
        <location filename="../../settings/GeneralSettings.cpp" line="86"/>
        <location filename="../../settings/GeneralSettings.cpp" line="93"/>
        <source>Quick Setup</source>
        <translation>Быстрая настройка</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="82"/>
        <location filename="../../settings/GeneralSettings.cpp" line="89"/>
        <location filename="../../settings/GeneralSettings.cpp" line="96"/>
        <location filename="../../settings/SettingsTr.hpp" line="81"/>
        <source>Configure API Key</source>
        <translation>Настроить API-ключ</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="83"/>
        <location filename="../../settings/GeneralSettings.cpp" line="90"/>
        <location filename="../../settings/GeneralSettings.cpp" line="97"/>
        <source>Open Provider Settings to configure API keys</source>
        <translation>Откройте «Настройки провайдеров», чтобы настроить API-ключи</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="129"/>
        <location filename="../../settings/GeneralSettings.cpp" line="208"/>
        <location filename="../../settings/GeneralSettings.cpp" line="245"/>
        <source>Load configuration (includes predefined cloud models)</source>
        <translation>Загрузить конфигурацию (включая предустановленные облачные модели)</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="251"/>
        <location filename="../../settings/GeneralSettings.cpp" line="255"/>
        <location filename="../../settings/GeneralSettings.cpp" line="259"/>
        <source>Show template information</source>
        <translation>Показать информацию о шаблоне</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="522"/>
        <source>Template Information</source>
        <translation>Информация о шаблоне</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="523"/>
        <source>Template</source>
        <translation>Шаблон</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="526"/>
        <source>Description:</source>
        <translation>Описание:</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="744"/>
        <source>Failed to save configuration. Check logs for details.</source>
        <translation>Не удалось сохранить конфигурацию. Подробности в логах.</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="785"/>
        <source>[Preset] configurations are predefined cloud models ready to use.</source>
        <translation>Конфигурации [Preset] — это готовые к использованию предустановленные облачные модели.</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="832"/>
        <source>Predefined configurations cannot be deleted.</source>
        <translation>Предустановленные конфигурации нельзя удалить.</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="850"/>
        <source>Failed to delete configuration.</source>
        <translation>Не удалось удалить конфигурацию.</translation>
    </message>
    <message>
        <location filename="../../settings/GeneralSettings.cpp" line="912"/>
        <source>-- Select Preset --</source>
        <translation>-- Выберите пресет --</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="11"/>
        <location filename="../../settings/ProjectSettings.cpp" line="22"/>
        <location filename="../../settings/ProjectSettings.cpp" line="23"/>
        <source>Enable QodeAssist</source>
        <translation>Включить QodeAssist</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="12"/>
        <source>General</source>
        <translation>Общие</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="14"/>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="346"/>
        <location filename="../../settings/ToolsSettings.cpp" line="167"/>
        <location filename="../../settings/McpSettings.cpp" line="79"/>
        <location filename="../../settings/ProviderSettings.cpp" line="126"/>
        <source>Reset Page to Defaults</source>
        <translation>Сбросить страницу к значениям по умолчанию</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="15"/>
        <source>Check Update</source>
        <translation>Проверить обновление</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="16"/>
        <source>Select...</source>
        <translation>Выбрать...</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="17"/>
        <source>Provider:</source>
        <translation>Провайдер:</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="18"/>
        <source>Model:</source>
        <translation>Модель:</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="19"/>
        <source>Template:</source>
        <translation>Шаблон:</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="20"/>
        <source>URL:</source>
        <translation>URL:</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="21"/>
        <source>Status:</source>
        <translation>Статус:</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="22"/>
        <source>Test</source>
        <translation>Тест</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="23"/>
        <source>Enable Logging</source>
        <translation>Включить логирование</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="25"/>
        <source>Log messages are visible in General Messages pane</source>
        <translation>Сообщения логов отображаются на панели General Messages</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="27"/>
        <source>Check for updates when Qt Creator starts</source>
        <translation>Проверять обновления при запуске Qt Creator</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="28"/>
        <source>Enable Chat(If you have performance issues try disabling this, need restart QtC)</source>
        <translation>Включить чат (если у вас проблемы с производительностью, попробуйте отключить, требуется перезапуск QtC)</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="31"/>
        <source>Custom endpoint:</source>
        <translation>Своя конечная точка:</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="33"/>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="27"/>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="543"/>
        <source>Code Completion</source>
        <translation>Автодополнение кода</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="34"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="30"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="391"/>
        <source>Chat Assistant</source>
        <translation>Чат-ассистент</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="35"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="27"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="400"/>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="85"/>
        <source>Quick Refactor</source>
        <translation>Быстрый рефакторинг</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="36"/>
        <source>Chat Compression</source>
        <translation>Сжатие чата</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="37"/>
        <source>Agent Pipelines</source>
        <translation>Пайплайны агентов</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="38"/>
        <source>Inline completions while you type. Matchers run on every request.</source>
        <translation>Встроенные автодополнения во время набора текста. Сопоставители выполняются при каждом запросе.</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="41"/>
        <source>Conversational assistant in the QodeAssist panel.</source>
        <translation>Диалоговый ассистент на панели QodeAssist.</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="43"/>
        <source>Used when a chat conversation needs to be summarised to stay within context.</source>
        <translation>Используется, когда диалог чата нужно сократить, чтобы уместиться в контексте.</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="46"/>
        <source>Inline editor-driven refactors via the Quick Refactor action.</source>
        <translation>Встроенные в редактор рефакторинги через действие «Быстрый рефакторинг».</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="48"/>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="465"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="348"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="356"/>
        <location filename="../../settings/ToolsSettings.cpp" line="235"/>
        <location filename="../../settings/McpSettings.cpp" line="148"/>
        <location filename="../../settings/ProviderSettings.cpp" line="199"/>
        <source>Reset Settings</source>
        <translation>Сбросить настройки</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="49"/>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="466"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="349"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="357"/>
        <location filename="../../settings/ToolsSettings.cpp" line="236"/>
        <location filename="../../settings/McpSettings.cpp" line="149"/>
        <location filename="../../settings/ProviderSettings.cpp" line="200"/>
        <source>Are you sure you want to reset all settings to default values?</source>
        <translation>Вы уверены, что хотите сбросить все настройки к значениям по умолчанию?</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="52"/>
        <source>Current template description:</source>
        <translation>Описание текущего шаблона:</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="54"/>
        <source>Connection Error</source>
        <translation>Ошибка соединения</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="56"/>
        <source>Unable to retrieve the list of models from the server.</source>
        <translation>Не удалось получить список моделей с сервера.</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="57"/>
        <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>
        <location filename="../../settings/SettingsTr.hpp" line="65"/>
        <source>Select Provider</source>
        <translation>Выбрать провайдера</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="66"/>
        <source>Select URL</source>
        <translation>Выбрать URL</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="67"/>
        <source>Close</source>
        <translation>Закрыть</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="68"/>
        <source>Model Selection</source>
        <translation>Выбор модели</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="69"/>
        <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>
        <location filename="../../settings/SettingsTr.hpp" line="76"/>
        <source>Model name:</source>
        <translation>Имя модели:</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="77"/>
        <source>OK</source>
        <translation>OK</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="78"/>
        <source>Cancel</source>
        <translation>Отмена</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="80"/>
        <source>Enter Model Manually</source>
        <translation>Ввести модель вручную</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="82"/>
        <source>URL Selection</source>
        <translation>Выбор URL</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="83"/>
        <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>
        <location filename="../../settings/SettingsTr.hpp" line="88"/>
        <source>Use default provider URL or from history</source>
        <translation>Использовать стандартный URL провайдера или из истории</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="89"/>
        <source>Enter custom URL</source>
        <translation>Ввести свой URL</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="91"/>
        <source>Enter Model Name Manually</source>
        <translation>Ввести имя модели вручную</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="93"/>
        <source>Auto Completion Settings</source>
        <translation>Настройки автодополнения</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="96"/>
        <source>Add new preset for language</source>
        <translation>Добавить новый пресет для языка</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="98"/>
        <source>Save Config...</source>
        <translation>Сохранить конфигурацию...</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="99"/>
        <source>Load Config...</source>
        <translation>Загрузить конфигурацию...</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="100"/>
        <source>Open Folder</source>
        <translation>Открыть папку</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="101"/>
        <source>Save Configuration</source>
        <translation>Сохранить конфигурацию</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="102"/>
        <source>Load Configuration</source>
        <translation>Загрузить конфигурацию</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="103"/>
        <source>Configuration name:</source>
        <translation>Имя конфигурации:</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="104"/>
        <source>Select Configuration</source>
        <translation>Выбрать конфигурацию</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="105"/>
        <source>No saved configurations found.</source>
        <translation>Сохранённые конфигурации не найдены.</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="106"/>
        <source>Configuration saved successfully.</source>
        <translation>Конфигурация успешно сохранена.</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="107"/>
        <source>Configuration loaded successfully.</source>
        <translation>Конфигурация успешно загружена.</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="108"/>
        <location filename="../../settings/AgentRolesWidget.cpp" line="60"/>
        <source>Delete</source>
        <translation>Удалить</translation>
    </message>
    <message>
        <location filename="../../settings/SettingsTr.hpp" line="109"/>
        <source>Are you sure you want to delete this configuration?</source>
        <translation>Вы уверены, что хотите удалить эту конфигурацию?</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="31"/>
        <source>Enable Auto Complete</source>
        <translation>Включить автодополнение</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="36"/>
        <source>Enable Multiline Completion</source>
        <translation>Включить многострочное автодополнение</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="38"/>
        <source>Text output proccessing mode:</source>
        <translation>Режим обработки текстового вывода:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="46"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="52"/>
        <source>Completion trigger mode:</source>
        <translation>Режим запуска автодополнения:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="59"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="62"/>
        <source>Completion mode:</source>
        <translation>Режим автодополнения:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="69"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="74"/>
        <source>Smart context-aware triggering</source>
        <translation>Умный контекстно-зависимый запуск</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="77"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="83"/>
        <source>Don&apos;t dismiss Qt Creator&apos;s completion popup</source>
        <translation>Не закрывать всплывающее окно автодополнения Qt Creator</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="86"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="91"/>
        <source>Cancel in-flight request on new input</source>
        <translation>Отменять активный запрос при новом вводе</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="94"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="102"/>
        <source>with delay(ms)</source>
        <translation>с задержкой(мс)</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="104"/>
        <source>Delay before sending the completion request.
(Only for Automatic trigger mode)</source>
        <translation>Задержка перед отправкой запроса автодополнения.
(Только для автоматического режима запуска)</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="110"/>
        <source>AI suggestion triggers after typing</source>
        <translation>Подсказка ИИ запускается после ввода</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="112"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="119"/>
        <source>character(s) within(ms)</source>
        <translation>символ(ов) в течение(мс)</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="121"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="128"/>
        <source>Hint shows after typing</source>
        <translation>Подсказка появляется после ввода</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="130"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="136"/>
        <source>Hint auto-hide timeout (ms)</source>
        <translation>Таймаут автоскрытия подсказки (мс)</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="138"/>
        <source>Time in milliseconds after which the hint widget will automatically hide (only for Hint-based trigger mode).</source>
        <translation>Время в миллисекундах, через которое виджет подсказки автоматически скроется (только для режима запуска по подсказке).</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="143"/>
        <source>Trigger key:</source>
        <translation>Клавиша запуска:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="154"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="160"/>
        <source>Ignore spaces and tabs in character count</source>
        <translation>Игнорировать пробелы и табуляции при подсчёте символов</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="163"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="169"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="67"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="31"/>
        <source>Temperature:</source>
        <translation>Температура:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="175"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="73"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="37"/>
        <source>Max Tokens:</source>
        <translation>Макс. токенов:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="182"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="80"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="44"/>
        <source>Top P:</source>
        <translation>Top P:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="191"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="89"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="53"/>
        <source>Top K:</source>
        <translation>Top K:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="199"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="97"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="61"/>
        <source>Presence Penalty:</source>
        <translation>Presence Penalty:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="208"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="106"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="70"/>
        <source>Frequency Penalty:</source>
        <translation>Frequency Penalty:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="217"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="147"/>
        <source>Read Full File</source>
        <translation>Читать файл полностью</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="220"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="150"/>
        <source>Read Strings Before Cursor:</source>
        <translation>Читать строк перед курсором:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="228"/>
        <source>Read Strings After Cursor:</source>
        <translation>Читать строк после курсора:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="234"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="116"/>
        <source>Use System Prompt</source>
        <translation>Использовать системный промпт</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="245"/>
        <source>Use special system prompt and user message for non FIM models</source>
        <translation>Использовать специальный системный промпт и пользовательское сообщение для моделей, отличных от FIM</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="249"/>
        <source>System prompt for non FIM models:</source>
        <translation>Системный промпт для моделей, отличных от FIM:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="274"/>
        <source>User message for non FIM models:</source>
        <translation>Сообщение пользователя для моделей, отличных от FIM:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="281"/>
        <source>Additional Programming Languages for handling: Example: rust,//,rust rs,rs</source>
        <translation>Дополнительные языки программирования для обработки: Пример: rust,//,rust rs,rs</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="282"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="290"/>
        <source>Show progress indicator during code completion</source>
        <translation>Показывать индикатор прогресса во время автодополнения кода</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="294"/>
        <source>Abort existing assist on new completion request</source>
        <translation>Прерывать существующий ассист при новом запросе автодополнения</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="296"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="302"/>
        <source>Include context from open files</source>
        <translation>Включать контекст из открытых файлов</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="307"/>
        <source>Max Changes Cache Size:</source>
        <translation>Макс. размер кэша изменений:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="316"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="129"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="80"/>
        <source>Time to suspend Ollama after completion request (in minutes), Only Ollama,  -1 to disable</source>
        <translation>Время приостановки Ollama после запроса автодополнения (в минутах), только для Ollama, -1 для отключения</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="323"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="136"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="88"/>
        <source>Context Window:</source>
        <translation>Контекстное окно:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="329"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="167"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="127"/>
        <source>Reasoning effort:</source>
        <translation>Усилие на рассуждения:</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="338"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="176"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="136"/>
        <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>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="383"/>
        <source>Prompts for FIM models</source>
        <translation>Промпты для FIM-моделей</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="385"/>
        <source>Prompts for Non FIM models</source>
        <translation>Промпты для моделей, отличных от FIM</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="416"/>
        <source>General Settings</source>
        <translation>Общие настройки</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="418"/>
        <source>Automatic Trigger Mode</source>
        <translation>Автоматический режим запуска</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="420"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="316"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="278"/>
        <source>General Parameters</source>
        <translation>Общие параметры</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="425"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="320"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="282"/>
        <source>Advanced Parameters</source>
        <translation>Расширенные параметры</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="428"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="323"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="288"/>
        <source>Context Settings</source>
        <translation>Настройки контекста</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="430"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="312"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="286"/>
        <source>OpenAI Responses API</source>
        <translation>OpenAI Responses API</translation>
    </message>
    <message>
        <location filename="../../settings/CodeCompletionSettings.cpp" line="432"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="328"/>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="294"/>
        <location filename="../../settings/ProviderSettings.cpp" line="152"/>
        <source>Ollama Settings</source>
        <translation>Настройки Ollama</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="33"/>
        <source>Sync open files with assistant by default</source>
        <translation>Синхронизировать открытые файлы с ассистентом по умолчанию</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="38"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="185"/>
        <source>Enable autosave when message received</source>
        <translation>Включить автосохранение при получении сообщения</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="41"/>
        <source>Enable chat in bottom toolbar</source>
        <translation>Включить чат в нижней панели инструментов</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="45"/>
        <source>Enable chat in navigation panel</source>
        <translation>Включить чат в панели навигации</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="49"/>
        <source>Enable tools/function calling</source>
        <translation>Включить вызов инструментов/функций</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="50"/>
        <source>When enabled, AI can use tools to read files, search project, and build code</source>
        <translation>Когда включено, ИИ может использовать инструменты для чтения файлов, поиска по проекту и сборки кода</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="54"/>
        <source>Auto-compress chat when session tokens exceed:</source>
        <translation>Автоматически сжимать чат, когда токены сессии превышают:</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="55"/>
        <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>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="142"/>
        <source>Enable extended thinking mode.</source>
        <translation>Включить режим расширенного мышления.</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="144"/>
        <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>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="150"/>
        <source>Thinking budget tokens:</source>
        <translation>Бюджет токенов мышления:</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="152"/>
        <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>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="158"/>
        <source>Thinking mode max output tokens:</source>
        <translation>Макс. выходных токенов в режиме мышления:</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="160"/>
        <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>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="188"/>
        <source>Text Font:</source>
        <translation>Шрифт текста:</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="197"/>
        <source>Text Font Size:</source>
        <translation>Размер шрифта текста:</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="201"/>
        <source>Code Font:</source>
        <translation>Шрифт кода:</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="232"/>
        <source>Code Font Size:</source>
        <translation>Размер шрифта кода:</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="236"/>
        <source>Text Format:</source>
        <translation>Формат текста:</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="244"/>
        <source>Chat Renderer:</source>
        <translation>Отрисовщик чата:</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="297"/>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="329"/>
        <source>Chat Settings</source>
        <translation>Настройки чата</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="304"/>
        <location filename="../../settings/ToolsSettings.cpp" line="27"/>
        <location filename="../../settings/ToolsSettings.cpp" line="190"/>
        <location filename="../../settings/ToolsSettings.cpp" line="269"/>
        <source>Tools</source>
        <translation>Инструменты</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="308"/>
        <source>Extended Thinking (Claude)</source>
        <translation>Расширенное мышление (Claude)</translation>
    </message>
    <message>
        <location filename="../../settings/ChatAssistantSettings.cpp" line="405"/>
        <source>Agent Roles</source>
        <translation>Роли агентов</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="93"/>
        <source>Enable Tools</source>
        <translation>Включить инструменты</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="95"/>
        <source>Enable AI tools/functions for quick refactoring (allows reading project files, searching code, etc.)</source>
        <translation>Включить инструменты/функции ИИ для быстрого рефакторинга (позволяет читать файлы проекта, искать код и т. д.)</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="101"/>
        <source>Enable Thinking Mode</source>
        <translation>Включить режим мышления</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="103"/>
        <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>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="109"/>
        <source>Thinking Budget Tokens:</source>
        <translation>Бюджет токенов мышления:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="111"/>
        <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>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="118"/>
        <source>Thinking Max Output Tokens:</source>
        <translation>Макс. выходных токенов мышления:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="120"/>
        <source>Maximum output tokens when thinking mode is enabled (includes thinking + response)</source>
        <translation>Максимум выходных токенов, когда включён режим мышления (включает мышление + ответ)</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="154"/>
        <source>Lines Before Cursor/Selection:</source>
        <translation>Строк перед курсором/выделением:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="156"/>
        <source>Number of lines to include before cursor or selection for context</source>
        <translation>Количество строк для включения в контекст перед курсором или выделением</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="161"/>
        <source>Lines After Cursor/Selection:</source>
        <translation>Строк после курсора/выделения:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="163"/>
        <source>Number of lines to include after cursor or selection for context</source>
        <translation>Количество строк для включения в контекст после курсора или выделения</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="168"/>
        <source>Display Mode:</source>
        <translation>Режим отображения:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="170"/>
        <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>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="175"/>
        <source>Inline Widget</source>
        <translation>Встроенный виджет</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="176"/>
        <source>Qt Creator Suggestion</source>
        <translation>Подсказка Qt Creator</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="180"/>
        <source>Widget Orientation:</source>
        <translation>Ориентация виджета:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="182"/>
        <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>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="186"/>
        <source>Horizontal</source>
        <translation>Горизонтальная</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="187"/>
        <source>Vertical</source>
        <translation>Вертикальная</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="191"/>
        <source>Widget Minimum Width:</source>
        <translation>Минимальная ширина виджета:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="192"/>
        <source>Minimum width for the refactor widget (in pixels)</source>
        <translation>Минимальная ширина для виджета рефакторинга (в пикселях)</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="197"/>
        <source>Widget Maximum Width:</source>
        <translation>Максимальная ширина виджета:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="198"/>
        <source>Maximum width for the refactor widget (in pixels)</source>
        <translation>Максимальная ширина для виджета рефакторинга (в пикселях)</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="203"/>
        <source>Widget Minimum Height:</source>
        <translation>Минимальная высота виджета:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="204"/>
        <source>Minimum height for the refactor widget (in pixels)</source>
        <translation>Минимальная высота для виджета рефакторинга (в пикселях)</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="209"/>
        <source>Widget Maximum Height:</source>
        <translation>Максимальная высота виджета:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="210"/>
        <source>Maximum height for the refactor widget (in pixels)</source>
        <translation>Максимальная высота для виджета рефакторинга (в пикселях)</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="215"/>
        <source>System Prompt:</source>
        <translation>Системный промпт:</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="224"/>
        <source>Include context from open files in quick refactor</source>
        <translation>Включать контекст из открытых файлов в быстрый рефакторинг</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="284"/>
        <source>Tools Settings</source>
        <translation>Настройки инструментов</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="290"/>
        <source>Display Settings</source>
        <translation>Настройки отображения</translation>
    </message>
    <message>
        <location filename="../../settings/QuickRefactorSettings.cpp" line="292"/>
        <source>Prompt Settings</source>
        <translation>Настройки промпта</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="30"/>
        <source>Allow file access outside project</source>
        <translation>Разрешить доступ к файлам вне проекта</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="32"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="37"/>
        <source>Automatically apply file edits</source>
        <translation>Автоматически применять изменения файлов</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="39"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="44"/>
        <source>Max tool continuations:</source>
        <translation>Макс. продолжений инструментов:</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="46"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="53"/>
        <source>List Project Files</source>
        <translation>Список файлов проекта</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="55"/>
        <source>Lists every source file tracked by the active Qt Creator project(s).</source>
        <translation>Перечисляет каждый исходный файл, отслеживаемый активным проектом(-ами) Qt Creator.</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="59"/>
        <source>Find File</source>
        <translation>Найти файл</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="61"/>
        <source>Locates a file in the project by name or partial path. Returns paths only, without file content.</source>
        <translation>Находит файл в проекте по имени или частичному пути. Возвращает только пути, без содержимого файла.</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="66"/>
        <source>Read File</source>
        <translation>Прочитать файл</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="68"/>
        <source>Reads the content of a file by absolute path or path relative to the project root.</source>
        <translation>Читает содержимое файла по абсолютному пути или пути относительно корня проекта.</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="72"/>
        <source>Search in Project</source>
        <translation>Поиск в проекте</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="74"/>
        <source>Searches project files for text occurrences or C++ symbol definitions.</source>
        <translation>Ищет в файлах проекта вхождения текста или определения символов C++.</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="78"/>
        <source>Create New File</source>
        <translation>Создать новый файл</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="80"/>
        <source>Creates a new empty file at the given absolute path, making missing directories.</source>
        <translation>Создаёт новый пустой файл по заданному абсолютному пути, создавая отсутствующие директории.</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="84"/>
        <location filename="../../settings/ToolsSettings.cpp" line="212"/>
        <source>Edit File</source>
        <translation>Редактировать файл</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="86"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="91"/>
        <source>Build Project</source>
        <translation>Собрать проект</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="93"/>
        <source>Triggers a build of the active Qt Creator project and reports the result.</source>
        <translation>Запускает сборку активного проекта Qt Creator и сообщает о результате.</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="97"/>
        <source>Get Issues List</source>
        <translation>Получить список проблем</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="99"/>
        <source>Reads compiler/clang diagnostics from Qt Creator&apos;s Issues panel.</source>
        <translation>Читает диагностику компилятора/clang из панели Issues Qt Creator.</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="103"/>
        <location filename="../../settings/ToolsSettings.cpp" line="215"/>
        <source>Execute Terminal Command</source>
        <translation>Выполнить команду терминала</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="105"/>
        <source>Runs a command from the OS-specific allowed list below, in the project directory.</source>
        <translation>Выполняет команду из приведённого ниже списка, разрешённого для конкретной ОС, в директории проекта.</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="109"/>
        <source>Todo</source>
        <translation>Задачи</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="111"/>
        <source>Lets the AI maintain a session-scoped todo list for multi-step workflows.</source>
        <translation>Позволяет ИИ вести список задач в рамках сессии для многошаговых рабочих процессов.</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="115"/>
        <source>Read Original History (Pre-Compression)</source>
        <translation>Читать оригинальную историю (до сжатия)</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="117"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="123"/>
        <source>Load Skill</source>
        <translation>Загрузить навык</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="125"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="131"/>
        <source>Allowed Commands (Linux)</source>
        <translation>Разрешённые команды (Linux)</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="133"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="141"/>
        <source>Allowed Commands (macOS)</source>
        <translation>Разрешённые команды (macOS)</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="143"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="151"/>
        <source>Allowed Commands (Windows)</source>
        <translation>Разрешённые команды (Windows)</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="153"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="160"/>
        <source>Command Timeout (seconds)</source>
        <translation>Таймаут команды (секунды)</translation>
    </message>
    <message>
        <location filename="../../settings/ToolsSettings.cpp" line="162"/>
        <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>
        <location filename="../../settings/ToolsSettings.cpp" line="206"/>
        <source>Tool Settings</source>
        <translation>Настройки инструмента</translation>
    </message>
    <message>
        <location filename="../../settings/SkillsSettings.cpp" line="55"/>
        <location filename="../../settings/SkillsSettings.cpp" line="104"/>
        <location filename="../../settings/SkillsSettings.cpp" line="127"/>
        <location filename="../../settings/ProjectSettingsPanel.cpp" line="96"/>
        <source>Skills</source>
        <translation>Навыки</translation>
    </message>
    <message>
        <location filename="../../settings/SkillsSettings.cpp" line="58"/>
        <source>Enable skills</source>
        <translation>Включить навыки</translation>
    </message>
    <message>
        <location filename="../../settings/SkillsSettings.cpp" line="60"/>
        <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>
        <location filename="../../settings/SkillsSettings.cpp" line="69"/>
        <source>Global skill directories:</source>
        <translation>Глобальные директории навыков:</translation>
    </message>
    <message>
        <location filename="../../settings/SkillsSettings.cpp" line="72"/>
        <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>
        <location filename="../../settings/SkillsSettings.cpp" line="97"/>
        <location filename="../../settings/ProjectSettingsPanel.cpp" line="86"/>
        <source>No skills discovered.</source>
        <translation>Навыки не обнаружены.</translation>
    </message>
    <message>
        <location filename="../../settings/SkillsSettings.cpp" line="110"/>
        <source>Skill Directories</source>
        <translation>Директории навыков</translation>
    </message>
    <message>
        <location filename="../../settings/SkillsSettings.cpp" line="113"/>
        <source>Discovered global skills:</source>
        <translation>Обнаруженные глобальные навыки:</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="38"/>
        <location filename="../../settings/McpSettings.cpp" line="341"/>
        <source>MCP</source>
        <translation>MCP</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="41"/>
        <source>Enable MCP server</source>
        <translation>Включить сервер MCP</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="43"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="48"/>
        <source>Server port</source>
        <translation>Порт сервера</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="50"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="56"/>
        <source>Connect to external MCP servers</source>
        <translation>Подключаться к внешним серверам MCP</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="58"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="64"/>
        <source>Extra PATH for stdio servers</source>
        <translation>Дополнительный PATH для stdio-серверов</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="67"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="80"/>
        <source>How to connect...</source>
        <translation>Как подключиться...</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="93"/>
        <source>Server</source>
        <translation>Сервер</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="100"/>
        <source>Clients</source>
        <translation>Клиенты</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="211"/>
        <source>Connect to QodeAssist MCP</source>
        <translation>Подключение к QodeAssist MCP</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="215"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="242"/>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="265"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="271"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="279"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="287"/>
        <source>Direct (HTTP/SSE)</source>
        <translation>Direct (HTTP/SSE)</translation>
    </message>
    <message>
        <location filename="../../settings/McpSettings.cpp" line="296"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="306"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="312"/>
        <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>
        <location filename="../../settings/McpSettings.cpp" line="321"/>
        <source>Bridge (stdio)</source>
        <translation>Bridge (stdio)</translation>
    </message>
    <message>
        <location filename="../../settings/ProjectSettings.cpp" line="28"/>
        <source>Chat History Path:</source>
        <translation>Путь к истории чата:</translation>
    </message>
    <message>
        <location filename="../../settings/ProjectSettings.cpp" line="36"/>
        <source>Skill directories:</source>
        <translation>Директории навыков:</translation>
    </message>
    <message>
        <location filename="../../settings/ProjectSettings.cpp" line="39"/>
        <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>
        <location filename="../../settings/ProjectSettingsPanel.cpp" line="99"/>
        <source>Discovered project skills:</source>
        <translation>Обнаруженные навыки проекта:</translation>
    </message>
    <message>
        <location filename="../../settings/ProjectSettingsPanel.cpp" line="115"/>
        <source>QodeAssist</source>
        <translation>QodeAssist</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="27"/>
        <location filename="../../settings/ProviderSettings.cpp" line="224"/>
        <source>Provider Settings</source>
        <translation>Настройки провайдера</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="31"/>
        <source>OpenRouter API Key:</source>
        <translation>API-ключ OpenRouter:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="33"/>
        <location filename="../../settings/ProviderSettings.cpp" line="42"/>
        <location filename="../../settings/ProviderSettings.cpp" line="51"/>
        <location filename="../../settings/ProviderSettings.cpp" line="77"/>
        <location filename="../../settings/ProviderSettings.cpp" line="86"/>
        <location filename="../../settings/ProviderSettings.cpp" line="94"/>
        <location filename="../../settings/ProviderSettings.cpp" line="103"/>
        <location filename="../../settings/ProviderSettings.cpp" line="112"/>
        <location filename="../../settings/ProviderSettings.cpp" line="121"/>
        <source>Enter your API key here</source>
        <translation>Введите ваш API-ключ здесь</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="40"/>
        <source>OpenAI Compatible API Key:</source>
        <translation>API-ключ OpenAI Compatible:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="49"/>
        <source>Claude API Key:</source>
        <translation>API-ключ Claude:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="57"/>
        <source>Enable prompt caching</source>
        <translation>Включить кэширование промптов</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="59"/>
        <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>
        <location filename="../../settings/ProviderSettings.cpp" line="66"/>
        <source>Use 1h cache TTL (beta)</source>
        <translation>Использовать TTL кэша 1 час (бета)</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="68"/>
        <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>
        <location filename="../../settings/ProviderSettings.cpp" line="75"/>
        <source>OpenAI API Key:</source>
        <translation>API-ключ OpenAI:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="84"/>
        <source>Mistral AI API Key:</source>
        <translation>API-ключ Mistral AI:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="92"/>
        <source>Codestral API Key:</source>
        <translation>API-ключ Codestral:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="101"/>
        <source>Google AI API Key:</source>
        <translation>API-ключ Google AI:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="110"/>
        <source>Ollama(Bearer) API Key:</source>
        <translation>API-ключ Ollama(Bearer):</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="119"/>
        <source>llama.cpp API Key:</source>
        <translation>API-ключ llama.cpp:</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="138"/>
        <source>OpenRouter Settings</source>
        <translation>Настройки OpenRouter</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="140"/>
        <source>OpenAI Settings</source>
        <translation>Настройки OpenAI</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="142"/>
        <source>OpenAI Compatible Settings</source>
        <translation>Настройки OpenAI Compatible</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="145"/>
        <source>Claude Settings</source>
        <translation>Настройки Claude</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="148"/>
        <source>Mistral AI Settings</source>
        <translation>Настройки Mistral AI</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="150"/>
        <source>Google AI Settings</source>
        <translation>Настройки Google AI</translation>
    </message>
    <message>
        <location filename="../../settings/ProviderSettings.cpp" line="154"/>
        <source>llama.cpp Settings</source>
        <translation>Настройки llama.cpp</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="28"/>
        <source>Agent roles define different system prompts for specific tasks.</source>
        <translation>Роли агентов определяют разные системные промпты для конкретных задач.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="32"/>
        <source>Open Roles Folder...</source>
        <translation>Открыть папку ролей...</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="48"/>
        <source>Add...</source>
        <translation>Добавить...</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="52"/>
        <source>Edit...</source>
        <translation>Редактировать...</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="56"/>
        <source>Duplicate...</source>
        <translation>Дублировать...</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="83"/>
        <source>(Built-in role)</source>
        <translation>(Встроенная роль)</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="118"/>
        <location filename="../../settings/AgentRolesWidget.cpp" line="192"/>
        <source>Role Already Exists</source>
        <translation>Роль уже существует</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="119"/>
        <location filename="../../settings/AgentRolesWidget.cpp" line="193"/>
        <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>
        <location filename="../../settings/AgentRolesWidget.cpp" line="128"/>
        <location filename="../../settings/AgentRolesWidget.cpp" line="160"/>
        <location filename="../../settings/AgentRolesWidget.cpp" line="201"/>
        <location filename="../../settings/AgentRolesWidget.cpp" line="231"/>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="492"/>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="521"/>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="554"/>
        <source>Error</source>
        <translation>Ошибка</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="128"/>
        <source>Failed to save role &apos;%1&apos;.</source>
        <translation>Не удалось сохранить роль &apos;%1&apos;.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="144"/>
        <source>Cannot Edit Built-in Role</source>
        <translation>Нельзя редактировать встроенную роль</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="145"/>
        <source>Built-in roles cannot be edited. You can duplicate this role and modify the copy.</source>
        <translation>Встроенные роли нельзя редактировать. Вы можете дублировать эту роль и изменить копию.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="160"/>
        <source>Failed to update role &apos;%1&apos;.</source>
        <translation>Не удалось обновить роль &apos;%1&apos;.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="201"/>
        <source>Failed to duplicate role.</source>
        <translation>Не удалось дублировать роль.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="216"/>
        <source>Cannot Delete Built-in Role</source>
        <translation>Нельзя удалить встроенную роль</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="216"/>
        <source>Built-in roles cannot be deleted.</source>
        <translation>Встроенные роли нельзя удалить.</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="222"/>
        <source>Delete Role</source>
        <translation>Удалить роль</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="223"/>
        <source>Are you sure you want to delete the role &apos;%1&apos;?</source>
        <translation>Вы уверены, что хотите удалить роль &apos;%1&apos;?</translation>
    </message>
    <message>
        <location filename="../../settings/AgentRolesWidget.cpp" line="231"/>
        <source>Failed to delete role &apos;%1&apos;.</source>
        <translation>Не удалось удалить роль &apos;%1&apos;.</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="160"/>
        <source>Generate QodeAssist suggestion at the current cursor position.</source>
        <translation>Сгенерировать подсказку QodeAssist в текущей позиции курсора.</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="161"/>
        <source>Request QodeAssist Suggestion</source>
        <translation>Запросить подсказку QodeAssist</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="244"/>
        <source>Refactor code using QodeAssist</source>
        <translation>Рефакторить код с помощью QodeAssist</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="245"/>
        <source>Quick Refactor with QodeAssist</source>
        <translation>Быстрый рефакторинг с QodeAssist</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="270"/>
        <source>Open QodeAssist Chat as an editor tab</source>
        <translation>Открыть чат QodeAssist как вкладку редактора</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="271"/>
        <source>Show QodeAssist Chat</source>
        <translation>Показать чат QodeAssist</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="287"/>
        <location filename="../../qodeassist.cpp" line="288"/>
        <source>Close QodeAssist Chat</source>
        <translation>Закрыть чат QodeAssist</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="297"/>
        <source>Open QodeAssist Chat in Separate Window</source>
        <translation>Открыть чат QodeAssist в отдельном окне</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="298"/>
        <source>Open the QodeAssist chat in a separate window</source>
        <translation>Открыть чат QodeAssist в отдельном окне</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="303"/>
        <source>New QodeAssist Chat</source>
        <translation>Новый чат QodeAssist</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="304"/>
        <source>Open a fresh chat in a new editor tab</source>
        <translation>Открыть новый чат в новой вкладке редактора</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="310"/>
        <source>Send QodeAssist Chat Message</source>
        <translation>Отправить сообщение в чате QodeAssist</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="311"/>
        <source>Send the current message to the LLM</source>
        <translation>Отправить текущее сообщение в LLM</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="320"/>
        <source>Clear QodeAssist Chat Session</source>
        <translation>Очистить сессию чата QodeAssist</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="321"/>
        <source>Clear the current chat session</source>
        <translation>Очистить текущую сессию чата</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="379"/>
        <location filename="../../qodeassist.cpp" line="388"/>
        <location filename="../../chat/ChatOutputPane.cpp" line="19"/>
        <location filename="../../chat/ChatDocument.cpp" line="19"/>
        <location filename="../../chat/ChatEditor.cpp" line="42"/>
        <location filename="../../chat/ChatEditorFactory.cpp" line="18"/>
        <source>QodeAssist Chat</source>
        <translation>Чат QodeAssist</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="460"/>
        <source>Chat in Bottom Panel</source>
        <translation>Чат на нижней панели</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="467"/>
        <source>Chat in Sidebar</source>
        <translation>Чат в боковой панели</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="477"/>
        <source>Open Chat in Editor</source>
        <translation>Открыть чат в редакторе</translation>
    </message>
    <message>
        <location filename="../../qodeassist.cpp" line="485"/>
        <source>Open Chat in Separate Window</source>
        <translation>Открыть чат в отдельном окне</translation>
    </message>
    <message>
        <location filename="../../ConfigurationManager.cpp" line="133"/>
        <source>Select LLM Provider</source>
        <translation>Выбрать провайдера LLM</translation>
    </message>
    <message>
        <location filename="../../ConfigurationManager.cpp" line="133"/>
        <source>Providers:</source>
        <translation>Провайдеры:</translation>
    </message>
    <message>
        <location filename="../../ConfigurationManager.cpp" line="175"/>
        <source>Select LLM Model</source>
        <translation>Выбрать модель LLM</translation>
    </message>
    <message>
        <location filename="../../ConfigurationManager.cpp" line="175"/>
        <source>Models:</source>
        <translation>Модели:</translation>
    </message>
    <message>
        <location filename="../../ConfigurationManager.cpp" line="206"/>
        <source>Select Template</source>
        <translation>Выбрать шаблон</translation>
    </message>
    <message>
        <location filename="../../ConfigurationManager.cpp" line="206"/>
        <source>Templates:</source>
        <translation>Шаблоны:</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="117"/>
        <source>Switch AI configuration</source>
        <translation>Переключить конфигурацию ИИ</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="130"/>
        <source>Enable/Disable AI Tools</source>
        <translation>Включить/выключить инструменты ИИ</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="147"/>
        <source>Enable/Disable Thinking Mode</source>
        <translation>Включить/выключить режим мышления</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="159"/>
        <source>Open Quick Refactor Settings</source>
        <translation>Открыть настройки быстрого рефакторинга</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="167"/>
        <source>Your Current Instruction:</source>
        <translation>Ваша текущая инструкция:</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="172"/>
        <source>Type or edit your instruction...</source>
        <translation>Введите или отредактируйте вашу инструкцию...</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="178"/>
        <source>Or Load saved:</source>
        <translation>Или загрузить сохранённую:</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="185"/>
        <source>Search saved instructions...</source>
        <translation>Поиск сохранённых инструкций...</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="197"/>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="21"/>
        <source>Add Custom Instruction</source>
        <translation>Добавить пользовательскую инструкцию</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="203"/>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="30"/>
        <source>Edit Custom Instruction</source>
        <translation>Редактировать пользовательскую инструкцию</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="209"/>
        <source>Delete Custom Instruction</source>
        <translation>Удалить пользовательскую инструкцию</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="215"/>
        <source>Open Instructions Folder</source>
        <translation>Открыть папку инструкций</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="285"/>
        <source>Repeat Last Instructions</source>
        <translation>Повторить последние инструкции</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="291"/>
        <source>Improve Current Code</source>
        <translation>Улучшить текущий код</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="297"/>
        <source>Suggest Alternative Solution</source>
        <translation>Предложить альтернативное решение</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="366"/>
        <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>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="377"/>
        <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>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="493"/>
        <source>Failed to save custom instruction. Check logs for details.</source>
        <translation>Не удалось сохранить пользовательскую инструкцию. Подробности в логах.</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="505"/>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="534"/>
        <source>No Instruction Selected</source>
        <translation>Инструкция не выбрана</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="506"/>
        <source>Please select an instruction to edit.</source>
        <translation>Пожалуйста, выберите инструкцию для редактирования.</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="522"/>
        <source>Failed to update custom instruction. Check logs for details.</source>
        <translation>Не удалось обновить пользовательскую инструкцию. Подробности в логах.</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="535"/>
        <source>Please select an instruction to delete.</source>
        <translation>Пожалуйста, выберите инструкцию для удаления.</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="541"/>
        <source>Confirm Deletion</source>
        <translation>Подтвердите удаление</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="542"/>
        <source>Are you sure you want to delete the instruction &apos;%1&apos;?</source>
        <translation>Вы уверены, что хотите удалить инструкцию &apos;%1&apos;?</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="555"/>
        <source>Failed to delete custom instruction. Check logs for details.</source>
        <translation>Не удалось удалить пользовательскую инструкцию. Подробности в логах.</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="593"/>
        <source>Current</source>
        <translation>Текущая</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="603"/>
        <source>Current (%1)</source>
        <translation>Текущая (%1)</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="640"/>
        <source>No Instruction</source>
        <translation>Нет инструкции</translation>
    </message>
    <message>
        <location filename="../../widgets/QuickRefactorDialog.cpp" line="641"/>
        <source>Please type an instruction or select a saved one.</source>
        <translation>Пожалуйста, введите инструкцию или выберите сохранённую.</translation>
    </message>
    <message>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="46"/>
        <source>Enter instruction name...</source>
        <translation>Введите имя инструкции...</translation>
    </message>
    <message>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="47"/>
        <source>Name:</source>
        <translation>Имя:</translation>
    </message>
    <message>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="51"/>
        <source>Instruction Body:</source>
        <translation>Тело инструкции:</translation>
    </message>
    <message>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="56"/>
        <source>Enter the refactoring instruction that will be sent to the LLM...</source>
        <translation>Введите инструкцию по рефакторингу, которая будет отправлена в LLM...</translation>
    </message>
    <message>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="59"/>
        <source>Set as default instruction</source>
        <translation>Установить как инструкцию по умолчанию</translation>
    </message>
    <message>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="61"/>
        <source>This instruction will be automatically selected when opening Quick Refactor dialog</source>
        <translation>Эта инструкция будет автоматически выбираться при открытии диалога быстрого рефакторинга</translation>
    </message>
    <message>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="69"/>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="73"/>
        <source>Invalid Input</source>
        <translation>Некорректный ввод</translation>
    </message>
    <message>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="69"/>
        <source>Instruction name cannot be empty.</source>
        <translation>Имя инструкции не может быть пустым.</translation>
    </message>
    <message>
        <location filename="../../widgets/AddCustomInstructionDialog.cpp" line="73"/>
        <source>Instruction body cannot be empty.</source>
        <translation>Тело инструкции не может быть пустым.</translation>
    </message>
</context>
<context>
    <name>RootItem</name>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="75"/>
        <source>Compressing chat…</source>
        <translation>Сжатие чата…</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="100"/>
        <source>next ~%1  ·  session ↑%2 ↓%3 ↻%4</source>
        <translation>следующий ~%1  ·  сессия ↑%2 ↓%3 ↻%4</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="105"/>
        <source>next ~%1  ·  session ↑%2 ↓%3</source>
        <translation>следующий ~%1  ·  сессия ↑%2 ↓%3</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="110"/>
        <source>next request (estimate)  ·  session prompt ↑ / completion ↓ / cached ↻ (provider cache hits)</source>
        <translation>следующий запрос (оценка)  ·  сессия: промпт ↑ / ответ ↓ / кэш ↻ (попадания в кэш провайдера)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="111"/>
        <source>next request (estimate)  ·  session prompt ↑ / completion ↓</source>
        <translation>следующий запрос (оценка)  ·  сессия: промпт ↑ / ответ ↓</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="114"/>
        <source>Сhat name: %1</source>
        <translation>Имя чата: %1</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="128"/>
        <source>Move this chat to an editor tab</source>
        <translation>Переместить этот чат на вкладку редактора</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="129"/>
        <source>Move this chat to a separate window</source>
        <translation>Переместить этот чат в отдельное окно</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="385"/>
        <source>Type your message here... (⌘+↩ to send)</source>
        <translation>Введите ваше сообщение здесь... (⌘+↩ для отправки)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="386"/>
        <source>Type your message here... (Ctrl+Enter to send)</source>
        <translation>Введите ваше сообщение здесь... (Ctrl+Enter для отправки)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="483"/>
        <source>Cut</source>
        <translation>Вырезать</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="489"/>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="495"/>
        <source>Paste</source>
        <translation>Вставить</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="503"/>
        <source>Select All</source>
        <translation>Выделить всё</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="511"/>
        <source>Clear</source>
        <translation>Очистить</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="563"/>
        <source>Send</source>
        <translation>Отправить</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="563"/>
        <location filename="../../ChatView/qml/RootItem.qml" line="565"/>
        <source>Stop</source>
        <translation>Остановить</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="564"/>
        <source>Send message to LLM %1</source>
        <translation>Отправить сообщение в LLM %1</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="650"/>
        <source>Compress Chat</source>
        <translation>Сжать чат</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/RootItem.qml" line="655"/>
        <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>
</context>
<context>
    <name>SplitDropZone</name>
    <message numerus="yes">
        <location filename="../../ChatView/qml/controls/SplitDropZone.qml" line="49"/>
        <source>%n file(s) to drop</source>
        <translation>
            <numerusform>%n файл(ов) для сброса</numerusform>
            <numerusform>%n файл(ов) для сброса</numerusform>
            <numerusform>%n файл(ов) для сброса</numerusform>
        </translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/SplitDropZone.qml" line="79"/>
        <source>Attach</source>
        <translation>Прикрепить</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/SplitDropZone.qml" line="87"/>
        <source>Images &amp; Text Files</source>
        <translation>Изображения и текстовые файлы</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/SplitDropZone.qml" line="95"/>
        <source>(for one-time use)</source>
        <translation>(для одноразового использования)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/SplitDropZone.qml" line="131"/>
        <source>LINK</source>
        <translation>ССЫЛКА</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/SplitDropZone.qml" line="139"/>
        <source>Text Files</source>
        <translation>Текстовые файлы</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/SplitDropZone.qml" line="147"/>
        <source>(added to context)</source>
        <translation>(добавлено в контекст)</translation>
    </message>
</context>
<context>
    <name>TextBlock</name>
    <message>
        <location filename="../../ChatView/qml/chatparts/TextBlock.qml" line="27"/>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/TextBlock.qml" line="33"/>
        <source>Select All</source>
        <translation>Выделить всё</translation>
    </message>
</context>
<context>
    <name>ThinkingBlock</name>
    <message>
        <location filename="../../ChatView/qml/chatparts/ThinkingBlock.qml" line="45"/>
        <source>Thinking (Redacted)</source>
        <translation>Мышление (скрыто)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ThinkingBlock.qml" line="46"/>
        <source>Thinking</source>
        <translation>Мышление</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ThinkingBlock.qml" line="75"/>
        <source>Thinking content was redacted by safety systems</source>
        <translation>Содержимое мышления было скрыто системами безопасности</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ThinkingBlock.qml" line="133"/>
        <source>Collapse</source>
        <translation>Свернуть</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ThinkingBlock.qml" line="133"/>
        <source>Expand</source>
        <translation>Развернуть</translation>
    </message>
</context>
<context>
    <name>ToolBlock</name>
    <message>
        <location filename="../../ChatView/qml/chatparts/ToolBlock.qml" line="47"/>
        <source>Tool: %1</source>
        <translation>Инструмент: %1</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ToolBlock.qml" line="99"/>
        <source>Copy</source>
        <translation>Копировать</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ToolBlock.qml" line="105"/>
        <source>Select All</source>
        <translation>Выделить всё</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ToolBlock.qml" line="113"/>
        <source>Collapse</source>
        <translation>Свернуть</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/chatparts/ToolBlock.qml" line="113"/>
        <source>Expand</source>
        <translation>Развернуть</translation>
    </message>
</context>
<context>
    <name>TopBar</name>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="64"/>
        <source>Unpin chat window</source>
        <translation>Открепить окно чата</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="65"/>
        <source>Pin chat window to the top</source>
        <translation>Закрепить окно чата сверху</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="97"/>
        <source>Clean chat</source>
        <translation>Очистить чат</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="117"/>
        <source>Open new chat in a new tab</source>
        <translation>Открыть новый чат в новой вкладке</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="130"/>
        <source>Switch saved AI configuration</source>
        <translation>Переключить сохранённую конфигурацию ИИ</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="143"/>
        <source>Switch agent role (different system prompts)</source>
        <translation>Переключить роль агента (разные системные промпты)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="170"/>
        <source>Tools are disabled in General Settings</source>
        <translation>Инструменты отключены в общих настройках</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="173"/>
        <source>Tools enabled: AI can use tools to read files, search project, and build code</source>
        <translation>Инструменты включены: ИИ может использовать инструменты для чтения файлов, поиска по проекту и сборки кода</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="174"/>
        <source>Tools disabled: Simple conversation without tool access</source>
        <translation>Инструменты отключены: простой диалог без доступа к инструментам</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="196"/>
        <source>Thinking Mode enabled (Check model list support it)</source>
        <translation>Режим мышления включён (проверьте, поддерживает ли его модель)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="197"/>
        <source>Thinking Mode disabled</source>
        <translation>Режим мышления отключён</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="198"/>
        <source>Thinking Mode is not available for this provider</source>
        <translation>Режим мышления недоступен для этого провайдера</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="215"/>
        <source>Open Chat Assistant Settings</source>
        <translation>Открыть настройки чат-ассистента</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="266"/>
        <source>Save chat to *.json file</source>
        <translation>Сохранить чат в файл *.json</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="279"/>
        <source>Load chat from *.json file</source>
        <translation>Загрузить чат из файла *.json</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="292"/>
        <source>Show in system</source>
        <translation>Показать в системе</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="309"/>
        <source>View chat context (system prompt, role, rules)</source>
        <translation>Просмотреть контекст чата (системный промпт, роль, правила)</translation>
    </message>
    <message>
        <location filename="../../ChatView/qml/controls/TopBar.qml" line="317"/>
        <source>Current amount tokens in chat and LLM limit threshold</source>
        <translation>Текущее количество токенов в чате и порог лимита LLM</translation>
    </message>
</context>
</TS>
