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

Your role is to:
- Task 1
- Task 2
- Task 3</source>
        <translation>You are an expert in...

Your role is to:
- Task 1
- Task 2
- Task 3</translation>
    </message>
    <message>
        <source>ID cannot be changed for existing roles</source>
        <translation>ID cannot be changed for existing roles</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::AgentsWidget</name>
    <message>
        <source>Agents</source>
        <translation>Agents</translation>
    </message>
    <message>
        <source>Reload from disk</source>
        <translation>Reload from disk</translation>
    </message>
    <message>
        <source>Open agents folder</source>
        <translation>Open agents folder</translation>
    </message>
    <message>
        <source>Open agent</source>
        <translation>Open agent</translation>
    </message>
    <message>
        <source>&apos;%1&apos; is bundled with the plugin and read-only.
Use Duplicate to create an editable user copy.</source>
        <translation>&apos;%1&apos; is bundled with the plugin and read-only.
Use Duplicate to create an editable user copy.</translation>
    </message>
    <message>
        <source>Agent &apos;%1&apos; has no editable source file.</source>
        <translation>Agent &apos;%1&apos; has no editable source file.</translation>
    </message>
    <message>
        <source>Could not open %1.</source>
        <translation>Could not open %1.</translation>
    </message>
    <message>
        <source>Duplicate</source>
        <translation>Duplicate</translation>
    </message>
    <message>
        <source>Delete Agent</source>
        <translation>Delete Agent</translation>
    </message>
    <message>
        <source>Delete agent &apos;%1&apos;?

This will remove the file:
%2</source>
        <translation>Delete agent &apos;%1&apos;?

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

File: %2</source>
        <translation>Delete user provider &apos;%1&apos;?

File: %2</translation>
    </message>
    <message>
        <source>Failed to delete file:
%1</source>
        <translation>Failed to delete file:
%1</translation>
    </message>
    <message>
        <source>Save</source>
        <translation>Save</translation>
    </message>
    <message>
        <source>Name cannot be empty.</source>
        <translation>Name cannot be empty.</translation>
    </message>
    <message>
        <source>Save anyway?</source>
        <translation>Save anyway?</translation>
    </message>
    <message>
        <source>Saved to:
%1

but could not remove the old file:
%2

Two provider files now describe this instance — delete the old file manually to avoid a duplicate-name error.</source>
        <translation>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.</translation>
    </message>
    <message>
        <source>Clear API key</source>
        <translation>Clear API key</translation>
    </message>
    <message>
        <source>Erase the stored API key for &apos;%1&apos;?</source>
        <translation>Erase the stored API key for &apos;%1&apos;?</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Settings::TagFilterStrip</name>
    <message>
        <source>FILTER BY TAG</source>
        <translation>FILTER BY TAG</translation>
    </message>
    <message>
        <source>clear</source>
        <translation>clear</translation>
    </message>
</context>
<context>
    <name>QodeAssist::Tools::TodoTool</name>
    <message>
        <source>Error: &apos;tasks&apos; parameter (array) is required for &apos;add&apos; operation. Example: {&quot;operation&quot;: &quot;add&quot;, &quot;tasks&quot;: [&quot;Task 1&quot;, &quot;Task 2&quot;]}</source>
        <translation>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;]}</translation>
    </message>
    <message>
        <source>Error: &apos;tasks&apos; array cannot be empty. Provide at least one task.</source>
        <translation>Error: &apos;tasks&apos; array cannot be empty. Provide at least one task.</translation>
    </message>
    <message>
        <source>Error: All tasks in &apos;tasks&apos; array are empty strings.</source>
        <translation>Error: All tasks in &apos;tasks&apos; array are empty strings.</translation>
    </message>
    <message>
        <source>Error: &apos;todo_ids&apos; parameter (array) is required for &apos;complete&apos; operation. Example: {&quot;operation&quot;: &quot;complete&quot;, &quot;todo_ids&quot;: [1, 2, 3]}</source>
        <translation>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]}</translation>
    </message>
    <message>
        <source>Error: &apos;todo_ids&apos; array cannot be empty. Provide at least one ID.</source>
        <translation>Error: &apos;todo_ids&apos; array cannot be empty. Provide at least one ID.</translation>
    </message>
    <message>
        <source>Error: All IDs in &apos;todo_ids&apos; array are invalid. IDs must be positive integers.</source>
        <translation>Error: All IDs in &apos;todo_ids&apos; array are invalid. IDs must be positive integers.</translation>
    </message>
    <message>
        <source>Error: Unknown operation &apos;%1&apos;. Valid operations: &apos;add&apos;, &apos;complete&apos;, &apos;list&apos;</source>
        <translation>Error: Unknown operation &apos;%1&apos;. Valid operations: &apos;add&apos;, &apos;complete&apos;, &apos;list&apos;</translation>
    </message>
    <message>
        <source>✓ Added 1 new task</source>
        <translation>✓ Added 1 new task</translation>
    </message>
    <message>
        <source>✓ Added %1 new tasks</source>
        <translation>✓ Added %1 new tasks</translation>
    </message>
    <message>
        <source>Error: No todos found in this session</source>
        <translation>Error: No todos found in this session</translation>
    </message>
    <message>
        <source>✓ Marked 1 task as completed</source>
        <translation>✓ Marked 1 task as completed</translation>
    </message>
    <message>
        <source>✓ Marked %1 tasks as completed</source>
        <translation>✓ Marked %1 tasks as completed</translation>
    </message>
    <message>
        <source>⚠ %1 already completed</source>
        <translation>⚠ %1 already completed</translation>
    </message>
    <message>
        <source>❌ Not found: %1</source>
        <translation>❌ Not found: %1</translation>
    </message>
    <message>
        <source>📋 TODO List: (empty)</source>
        <translation>📋 TODO List: (empty)</translation>
    </message>
    <message>
        <source>📋 TODO List:</source>
        <translation>📋 TODO List:</translation>
    </message>
    <message>
        <source>Progress: %1/%2 completed (%3%)</source>
        <translation>Progress: %1/%2 completed (%3%)</translation>
    </message>
    <message>
        <source>📋 All tasks completed! 🎉</source>
        <translation>📋 All tasks completed! 🎉</translation>
    </message>
    <message>
        <source>📋 Remaining tasks:</source>
        <translation>📋 Remaining tasks:</translation>
    </message>
</context>
<context>
    <name>QodeAssist::UpdateDialog</name>
    <message>
        <source>QodeAssist Update</source>
        <translation>QodeAssist Update</translation>
    </message>
    <message>
        <source>QodeAssist is an open-source project that helps
developers write better code. If you find it useful, please</source>
        <translation>QodeAssist is an open-source project that helps
developers write better code. If you find it useful, please</translation>
    </message>
    <message>
        <source>Install via Extension Registry (recommended)</source>
        <translation>Install via Extension Registry (recommended)</translation>
    </message>
    <message>
        <source>In Qt Creator open Extensions → Browser tab, enable &quot;Use External Repository&quot;, add one of the URLs below and click Apply to install QodeAssist. Updates are then installed from the same screen.</source>
        <translation>In Qt Creator open Extensions → Browser tab, enable &quot;Use External Repository&quot;, add one of the URLs below and click Apply to install QodeAssist. Updates are then installed from the same screen.</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Copy</translation>
    </message>
    <message>
        <source>Latest (for the newest Qt Creator, always up to date)</source>
        <translation>Latest (for the newest Qt Creator, always up to date)</translation>
    </message>
    <message>
        <source>Only for Qt Creator %1</source>
        <translation>Only for Qt Creator %1</translation>
    </message>
    <message>
        <source>Alternative: QodeAssistUpdater</source>
        <translation>Alternative: QodeAssistUpdater</translation>
    </message>
    <message>
        <source>A standalone tool for installing and updating the plugin.</source>
        <translation>A standalone tool for installing and updating the plugin.</translation>
    </message>
    <message>
        <source>Download QodeAssistUpdater</source>
        <translation>Download QodeAssistUpdater</translation>
    </message>
    <message>
        <source>A new version of QodeAssist is available!</source>
        <translation>A new version of QodeAssist is available!</translation>
    </message>
    <message>
        <source>Version %1 is now available - you have %2</source>
        <translation>Version %1 is now available - you have %2</translation>
    </message>
    <message>
        <source>Release Notes:</source>
        <translation>Release Notes:</translation>
    </message>
    <message>
        <source>Open Release Page</source>
        <translation>Open Release Page</translation>
    </message>
    <message>
        <source>Open Plugin Folder</source>
        <translation>Open Plugin Folder</translation>
    </message>
    <message>
        <source>Close</source>
        <translation>Close</translation>
    </message>
    <message>
        <source>QodeAssist is up to date</source>
        <translation>QodeAssist is up to date</translation>
    </message>
    <message>
        <source>You are using the latest version: %1</source>
        <translation>You are using the latest version: %1</translation>
    </message>
    <message>
        <source>No release notes available. Check the release page for more information.</source>
        <translation>No release notes available. Check the release page for more information.</translation>
    </message>
</context>
<context>
    <name>QodeAssist::UpdateStatusWidget</name>
    <message>
        <source>Update</source>
        <translation>Update</translation>
    </message>
    <message>
        <source>New version: v%1</source>
        <translation>New version: v%1</translation>
    </message>
    <message>
        <source>Check update information</source>
        <translation>Check update information</translation>
    </message>
</context>
<context>
    <name>QtC::QodeAssist</name>
    <message>
        <source>Reset Page to Defaults</source>
        <translation>Reset Page to Defaults</translation>
    </message>
    <message>
        <source>Reset Settings</source>
        <translation>Reset Settings</translation>
    </message>
    <message>
        <source>Are you sure you want to reset all settings to default values?</source>
        <translation>Are you sure you want to reset all settings to default values?</translation>
    </message>
    <message>
        <source>Enable QodeAssist</source>
        <translation>Enable QodeAssist</translation>
    </message>
    <message>
        <source>General</source>
        <translation>General</translation>
    </message>
    <message>
        <source>Check Update</source>
        <translation>Check Update</translation>
    </message>
    <message>
        <source>Select...</source>
        <translation>Select...</translation>
    </message>
    <message>
        <source>Provider:</source>
        <translation>Provider:</translation>
    </message>
    <message>
        <source>Model:</source>
        <translation>Model:</translation>
    </message>
    <message>
        <source>Template:</source>
        <translation>Template:</translation>
    </message>
    <message>
        <source>URL:</source>
        <translation>URL:</translation>
    </message>
    <message>
        <source>Status:</source>
        <translation>Status:</translation>
    </message>
    <message>
        <source>Test</source>
        <translation>Test</translation>
    </message>
    <message>
        <source>Enable Logging</source>
        <translation>Enable Logging</translation>
    </message>
    <message>
        <source>Log messages are visible in General Messages pane</source>
        <translation>Log messages are visible in General Messages pane</translation>
    </message>
    <message>
        <source>Check for updates when Qt Creator starts</source>
        <translation>Check for updates when Qt Creator starts</translation>
    </message>
    <message>
        <source>Enable Chat(If you have performance issues try disabling this, need restart QtC)</source>
        <translation>Enable Chat(If you have performance issues try disabling this, need restart QtC)</translation>
    </message>
    <message>
        <source>Custom endpoint:</source>
        <translation>Custom endpoint:</translation>
    </message>
    <message>
        <source>Code Completion</source>
        <translation>Code Completion</translation>
    </message>
    <message>
        <source>Chat Assistant</source>
        <translation>Chat Assistant</translation>
    </message>
    <message>
        <source>Chat Compression</source>
        <translation>Chat Compression</translation>
    </message>
    <message>
        <source>Agent Pipelines</source>
        <translation>Agent Pipelines</translation>
    </message>
    <message>
        <source>Inline completions while you type. Matchers run on every request.</source>
        <translation>Inline completions while you type. Matchers run on every request.</translation>
    </message>
    <message>
        <source>Conversational assistant in the QodeAssist panel.</source>
        <translation>Conversational assistant in the QodeAssist panel.</translation>
    </message>
    <message>
        <source>Used when a chat conversation needs to be summarised to stay within context.</source>
        <translation>Used when a chat conversation needs to be summarised to stay within context.</translation>
    </message>
    <message>
        <source>Inline editor-driven refactors via the Quick Refactor action.</source>
        <translation>Inline editor-driven refactors via the Quick Refactor action.</translation>
    </message>
    <message>
        <source>Current template description:</source>
        <translation>Current template description:</translation>
    </message>
    <message>
        <source>Connection Error</source>
        <translation>Connection Error</translation>
    </message>
    <message>
        <source>Unable to retrieve the list of models from the server.</source>
        <translation>Unable to retrieve the list of models from the server.</translation>
    </message>
    <message>
        <source>Please verify the following:
- Server is running and accessible
- URL is correct
- Provider is properly configured
- API key is correctly set (if required)

You can try selecting a different provider or changing the URL:</source>
        <translation>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:</translation>
    </message>
    <message>
        <source>Select Provider</source>
        <translation>Select Provider</translation>
    </message>
    <message>
        <source>Select URL</source>
        <translation>Select URL</translation>
    </message>
    <message>
        <source>Close</source>
        <translation>Close</translation>
    </message>
    <message>
        <source>Model Selection</source>
        <translation>Model Selection</translation>
    </message>
    <message>
        <source>Select from previously used models or enter a new model name.

If entering a new model name:
• For providers with automatic listing - ensure the model is installed
• For providers without listing support - check provider&apos;s documentation
• Make sure the model name matches exactly</source>
        <translation>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</translation>
    </message>
    <message>
        <source>Model name:</source>
        <translation>Model name:</translation>
    </message>
    <message>
        <source>OK</source>
        <translation>OK</translation>
    </message>
    <message>
        <source>Cancel</source>
        <translation>Cancel</translation>
    </message>
    <message>
        <source>Enter Model Manually</source>
        <translation>Enter Model Manually</translation>
    </message>
    <message>
        <source>Save Config...</source>
        <translation>Save Config...</translation>
    </message>
    <message>
        <source>Load Config...</source>
        <translation>Load Config...</translation>
    </message>
    <message>
        <source>Open Folder</source>
        <translation>Open Folder</translation>
    </message>
    <message>
        <source>Save Configuration</source>
        <translation>Save Configuration</translation>
    </message>
    <message>
        <source>Load Configuration</source>
        <translation>Load Configuration</translation>
    </message>
    <message>
        <source>Configuration name:</source>
        <translation>Configuration name:</translation>
    </message>
    <message>
        <source>Select Configuration</source>
        <translation>Select Configuration</translation>
    </message>
    <message>
        <source>No saved configurations found.</source>
        <translation>No saved configurations found.</translation>
    </message>
    <message>
        <source>Configuration saved successfully.</source>
        <translation>Configuration saved successfully.</translation>
    </message>
    <message>
        <source>Configuration loaded successfully.</source>
        <translation>Configuration loaded successfully.</translation>
    </message>
    <message>
        <source>Delete</source>
        <translation>Delete</translation>
    </message>
    <message>
        <source>Are you sure you want to delete this configuration?</source>
        <translation>Are you sure you want to delete this configuration?</translation>
    </message>
    <message>
        <source>Request timeout (seconds):</source>
        <translation>Request timeout (seconds):</translation>
    </message>
    <message>
        <source>Maximum time to wait for the model to send data before a request is aborted. Applies to all requests — chat, code completion, quick refactor and chat compression. The timer resets every time data is received, so this effectively limits the time-to-first-token and any stall between tokens. Increase it for slow or local models that need a long time to start responding. Set to 0 to disable the timeout.</source>
        <translation>Maximum time to wait for the model to send data before a request is aborted. Applies to all requests — chat, code completion, quick refactor and chat compression. The timer resets every time data is received, so this effectively limits the time-to-first-token and any stall between tokens. Increase it for slow or local models that need a long time to start responding. Set to 0 to disable the timeout.</translation>
    </message>
    <message>
        <source>Quick Setup</source>
        <translation>Quick Setup</translation>
    </message>
    <message>
        <source>Configure API Key</source>
        <translation>Configure API Key</translation>
    </message>
    <message>
        <source>Open Provider Settings to configure API keys</source>
        <translation>Open Provider Settings to configure API keys</translation>
    </message>
    <message>
        <source>Load configuration (includes predefined cloud models)</source>
        <translation>Load configuration (includes predefined cloud models)</translation>
    </message>
    <message>
        <source>Show template information</source>
        <translation>Show template information</translation>
    </message>
    <message>
        <source>Network</source>
        <translation>Network</translation>
    </message>
    <message>
        <source>Support the development of QodeAssist:</source>
        <translation>Support the development of QodeAssist:</translation>
    </message>
    <message>
        <source>Template Information</source>
        <translation>Template Information</translation>
    </message>
    <message>
        <source>Template</source>
        <translation>Template</translation>
    </message>
    <message>
        <source>Description:</source>
        <translation>Description:</translation>
    </message>
    <message>
        <source>Failed to save configuration. Check logs for details.</source>
        <translation>Failed to save configuration. Check logs for details.</translation>
    </message>
    <message>
        <source>[Preset] configurations are predefined cloud models ready to use.</source>
        <translation>[Preset] configurations are predefined cloud models ready to use.</translation>
    </message>
    <message>
        <source>Predefined configurations cannot be deleted.</source>
        <translation>Predefined configurations cannot be deleted.</translation>
    </message>
    <message>
        <source>Failed to delete configuration.</source>
        <translation>Failed to delete configuration.</translation>
    </message>
    <message>
        <source>-- Select Preset --</source>
        <translation>-- Select Preset --</translation>
    </message>
    <message>
        <source>URL Selection</source>
        <translation>URL Selection</translation>
    </message>
    <message>
        <source>Select from the list of default and previously used URLs, or enter a custom one.
Please ensure the selected URL is accessible and the service is running.</source>
        <translation>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.</translation>
    </message>
    <message>
        <source>Use default provider URL or from history</source>
        <translation>Use default provider URL or from history</translation>
    </message>
    <message>
        <source>Enter custom URL</source>
        <translation>Enter custom URL</translation>
    </message>
    <message>
        <source>Enter Model Name Manually</source>
        <translation>Enter Model Name Manually</translation>
    </message>
    <message>
        <source>Auto Completion Settings</source>
        <translation>Auto Completion Settings</translation>
    </message>
    <message>
        <source>Add new preset for language</source>
        <translation>Add new preset for language</translation>
    </message>
    <message>
        <source>Enable Auto Complete</source>
        <translation>Enable Auto Complete</translation>
    </message>
    <message>
        <source>Enable Multiline Completion</source>
        <translation>Enable Multiline Completion</translation>
    </message>
    <message>
        <source>with delay(ms)</source>
        <translation>with delay(ms)</translation>
    </message>
    <message>
        <source>AI suggestion triggers after typing</source>
        <translation>AI suggestion triggers after typing</translation>
    </message>
    <message>
        <source>character(s) within(ms)</source>
        <translation>character(s) within(ms)</translation>
    </message>
    <message>
        <source>Text output proccessing mode:</source>
        <translation>Text output proccessing mode:</translation>
    </message>
    <message>
        <source>Auto: Automatically detects codeblock and applies processing when found, other text as comments
Force Processing: Always processes text with codeblock formatting and other text as comments
Raw Text: Shows unprocessed text without any formatting</source>
        <translation>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</translation>
    </message>
    <message>
        <source>Completion trigger mode:</source>
        <translation>Completion trigger mode:</translation>
    </message>
    <message>
        <source>Hint-based: Shows a hint when typing, press Tab to request completion
Automatic: Automatically requests completion after typing threshold</source>
        <translation>Hint-based: Shows a hint when typing, press Tab to request completion
Automatic: Automatically requests completion after typing threshold</translation>
    </message>
    <message>
        <source>Completion mode:</source>
        <translation>Completion mode:</translation>
    </message>
    <message>
        <source>Automatic: requests completion while typing (with smart context gates).
Manual: no auto-triggering; invoke via the &apos;Request QodeAssist Suggestion&apos; shortcut (default Ctrl+Alt+Q, reconfigurable in Preferences &gt; Keyboard).</source>
        <translation>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).</translation>
    </message>
    <message>
        <source>Smart context-aware triggering</source>
        <translation>Smart context-aware triggering</translation>
    </message>
    <message>
        <source>When enabled, auto-completion is suppressed in places where Qt Creator&apos;s built-in completion is usually stronger (middle of an identifier, right after &apos;.&apos;, &apos;-&gt;&apos;, &apos;::&apos;) and is triggered more eagerly after structural characters like &apos;(&apos;, &apos;,&apos;, &apos;{&apos;, &apos;=&apos; and on fresh indented lines.</source>
        <translation>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.</translation>
    </message>
    <message>
        <source>Don&apos;t dismiss Qt Creator&apos;s completion popup</source>
        <translation>Don&apos;t dismiss Qt Creator&apos;s completion popup</translation>
    </message>
    <message>
        <source>When enabled, an AI completion arriving while Qt Creator&apos;s own completion popup is already visible will not force it closed. The LLM suggestion still appears inline.</source>
        <translation>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.</translation>
    </message>
    <message>
        <source>Cancel in-flight request on new input</source>
        <translation>Cancel in-flight request on new input</translation>
    </message>
    <message>
        <source>When enabled, every new keystroke cancels any completion request already in flight and restarts the debounce timer. Useful for slow local models where an outdated answer is rarely worth waiting for.
When disabled (default), the in-flight request is kept; when the answer arrives, the plugin compares it with characters typed in the meantime and either trims the matching prefix or drops the answer.</source>
        <translation>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.</translation>
    </message>
    <message>
        <source>Delay before sending the completion request.
(Only for Automatic trigger mode)</source>
        <translation>Delay before sending the completion request.
(Only for Automatic trigger mode)</translation>
    </message>
    <message>
        <source>The number of characters that need to be typed within the typing interval before an AI suggestion request is sent automatically.
(Only for Automatic trigger mode)</source>
        <translation>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)</translation>
    </message>
    <message>
        <source>The time window (in milliseconds) during which the character threshold must be met to trigger an AI suggestion request automatically.
(Only for Automatic trigger mode)</source>
        <translation>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)</translation>
    </message>
    <message>
        <source>Hint shows after typing</source>
        <translation>Hint shows after typing</translation>
    </message>
    <message>
        <source>The number of characters that need to be typed before the hint widget appears (only for Hint-based trigger mode).</source>
        <translation>The number of characters that need to be typed before the hint widget appears (only for Hint-based trigger mode).</translation>
    </message>
    <message>
        <source>Hint auto-hide timeout (ms)</source>
        <translation>Hint auto-hide timeout (ms)</translation>
    </message>
    <message>
        <source>Time in milliseconds after which the hint widget will automatically hide (only for Hint-based trigger mode).</source>
        <translation>Time in milliseconds after which the hint widget will automatically hide (only for Hint-based trigger mode).</translation>
    </message>
    <message>
        <source>Trigger key:</source>
        <translation>Trigger key:</translation>
    </message>
    <message>
        <source>Key to press for requesting completion when hint is visible.
Space is recommended as least conflicting with context menu.
(Only for Hint-based trigger mode)</source>
        <translation>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)</translation>
    </message>
    <message>
        <source>Ignore spaces and tabs in character count</source>
        <translation>Ignore spaces and tabs in character count</translation>
    </message>
    <message>
        <source>When enabled, spaces and tabs are not counted towards the character threshold for triggering completions. This helps trigger completions based on actual code characters only.</source>
        <translation>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.</translation>
    </message>
    <message>
        <source>Temperature:</source>
        <translation>Temperature:</translation>
    </message>
    <message>
        <source>Max Tokens:</source>
        <translation>Max Tokens:</translation>
    </message>
    <message>
        <source>Top P:</source>
        <translation>Top P:</translation>
    </message>
    <message>
        <source>Top K:</source>
        <translation>Top K:</translation>
    </message>
    <message>
        <source>Presence Penalty:</source>
        <translation>Presence Penalty:</translation>
    </message>
    <message>
        <source>Frequency Penalty:</source>
        <translation>Frequency Penalty:</translation>
    </message>
    <message>
        <source>Read Full File</source>
        <translation>Read Full File</translation>
    </message>
    <message>
        <source>Read Strings Before Cursor:</source>
        <translation>Read Strings Before Cursor:</translation>
    </message>
    <message>
        <source>Read Strings After Cursor:</source>
        <translation>Read Strings After Cursor:</translation>
    </message>
    <message>
        <source>Use System Prompt</source>
        <translation>Use System Prompt</translation>
    </message>
    <message>
        <source>Use special system prompt and user message for non FIM models</source>
        <translation>Use special system prompt and user message for non FIM models</translation>
    </message>
    <message>
        <source>System prompt for non FIM models:</source>
        <translation>System prompt for non FIM models:</translation>
    </message>
    <message>
        <source>User message for non FIM models:</source>
        <translation>User message for non FIM models:</translation>
    </message>
    <message>
        <source>Additional Programming Languages for handling: Example: rust,//,rust rs,rs</source>
        <translation>Additional Programming Languages for handling: Example: rust,//,rust rs,rs</translation>
    </message>
    <message>
        <source>Specify additional programming languages in format: name,comment_style,model_names,extensions
Example: rust,//,rust rs,rs
Fields: language name, comment prefix, names from LLM (space-separated), file extensions (space-separated)</source>
        <translation>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)</translation>
    </message>
    <message>
        <source>Show progress indicator during code completion</source>
        <translation>Show progress indicator during code completion</translation>
    </message>
    <message>
        <source>Abort existing assist on new completion request</source>
        <translation>Abort existing assist on new completion request</translation>
    </message>
    <message>
        <source>When enabled, cancels any active Qt Creator code assist popup before requesting LLM completion.
(Only for Automatic trigger mode)</source>
        <translation>When enabled, cancels any active Qt Creator code assist popup before requesting LLM completion.
(Only for Automatic trigger mode)</translation>
    </message>
    <message>
        <source>Include context from open files</source>
        <translation>Include context from open files</translation>
    </message>
    <message>
        <source>Max Changes Cache Size:</source>
        <translation>Max Changes Cache Size:</translation>
    </message>
    <message>
        <source>OpenAI Responses API</source>
        <translation>OpenAI Responses API</translation>
    </message>
    <message>
        <source>Enable Tools</source>
        <translation>Enable Tools</translation>
    </message>
    <message>
        <source>Enable AI tools/functions for quick refactoring (allows reading project files, searching code, etc.)</source>
        <translation>Enable AI tools/functions for quick refactoring (allows reading project files, searching code, etc.)</translation>
    </message>
    <message>
        <source>Enable Thinking Mode</source>
        <translation>Enable Thinking Mode</translation>
    </message>
    <message>
        <source>Enable extended thinking mode for complex refactoring tasks (supported by compatible models like Claude and Google AI)</source>
        <translation>Enable extended thinking mode for complex refactoring tasks (supported by compatible models like Claude and Google AI)</translation>
    </message>
    <message>
        <source>Thinking Budget Tokens:</source>
        <translation>Thinking Budget Tokens:</translation>
    </message>
    <message>
        <source>Number of tokens allocated for thinking process. Use -1 for dynamic thinking (model decides), 0 to disable, or positive value for custom budget</source>
        <translation>Number of tokens allocated for thinking process. Use -1 for dynamic thinking (model decides), 0 to disable, or positive value for custom budget</translation>
    </message>
    <message>
        <source>Thinking Max Output Tokens:</source>
        <translation>Thinking Max Output Tokens:</translation>
    </message>
    <message>
        <source>Maximum output tokens when thinking mode is enabled (includes thinking + response)</source>
        <translation>Maximum output tokens when thinking mode is enabled (includes thinking + response)</translation>
    </message>
    <message>
        <source>Lines Before Cursor/Selection:</source>
        <translation>Lines Before Cursor/Selection:</translation>
    </message>
    <message>
        <source>Number of lines to include before cursor or selection for context</source>
        <translation>Number of lines to include before cursor or selection for context</translation>
    </message>
    <message>
        <source>Lines After Cursor/Selection:</source>
        <translation>Lines After Cursor/Selection:</translation>
    </message>
    <message>
        <source>Number of lines to include after cursor or selection for context</source>
        <translation>Number of lines to include after cursor or selection for context</translation>
    </message>
    <message>
        <source>Display Mode:</source>
        <translation>Display Mode:</translation>
    </message>
    <message>
        <source>Choose how to display refactoring suggestions:
- Inline Widget: Shows refactor in a widget overlay with Apply/Decline buttons (default)
- Qt Creator Suggestion: Uses Qt Creator&apos;s built-in suggestion system</source>
        <translation>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</translation>
    </message>
    <message>
        <source>Inline Widget</source>
        <translation>Inline Widget</translation>
    </message>
    <message>
        <source>Qt Creator Suggestion</source>
        <translation>Qt Creator Suggestion</translation>
    </message>
    <message>
        <source>Widget Orientation:</source>
        <translation>Widget Orientation:</translation>
    </message>
    <message>
        <source>Choose default orientation for refactor widget:
- Horizontal: Original and refactored code side by side (default)
- Vertical: Original and refactored code stacked vertically</source>
        <translation>Choose default orientation for refactor widget:
- Horizontal: Original and refactored code side by side (default)
- Vertical: Original and refactored code stacked vertically</translation>
    </message>
    <message>
        <source>Horizontal</source>
        <translation>Horizontal</translation>
    </message>
    <message>
        <source>Vertical</source>
        <translation>Vertical</translation>
    </message>
    <message>
        <source>Widget Minimum Width:</source>
        <translation>Widget Minimum Width:</translation>
    </message>
    <message>
        <source>Minimum width for the refactor widget (in pixels)</source>
        <translation>Minimum width for the refactor widget (in pixels)</translation>
    </message>
    <message>
        <source>Widget Maximum Width:</source>
        <translation>Widget Maximum Width:</translation>
    </message>
    <message>
        <source>Maximum width for the refactor widget (in pixels)</source>
        <translation>Maximum width for the refactor widget (in pixels)</translation>
    </message>
    <message>
        <source>Widget Minimum Height:</source>
        <translation>Widget Minimum Height:</translation>
    </message>
    <message>
        <source>Minimum height for the refactor widget (in pixels)</source>
        <translation>Minimum height for the refactor widget (in pixels)</translation>
    </message>
    <message>
        <source>Widget Maximum Height:</source>
        <translation>Widget Maximum Height:</translation>
    </message>
    <message>
        <source>Maximum height for the refactor widget (in pixels)</source>
        <translation>Maximum height for the refactor widget (in pixels)</translation>
    </message>
    <message>
        <source>System Prompt:</source>
        <translation>System Prompt:</translation>
    </message>
    <message>
        <source>Include context from open files in quick refactor</source>
        <translation>Include context from open files in quick refactor</translation>
    </message>
    <message>
        <source>Tools Settings</source>
        <translation>Tools Settings</translation>
    </message>
    <message>
        <source>Display Settings</source>
        <translation>Display Settings</translation>
    </message>
    <message>
        <source>Prompt Settings</source>
        <translation>Prompt Settings</translation>
    </message>
    <message>
        <source>Time to suspend Ollama after completion request (in minutes), Only Ollama,  -1 to disable</source>
        <translation>Time to suspend Ollama after completion request (in minutes), Only Ollama,  -1 to disable</translation>
    </message>
    <message>
        <source>Context Window:</source>
        <translation>Context Window:</translation>
    </message>
    <message>
        <source>Reasoning effort:</source>
        <translation>Reasoning effort:</translation>
    </message>
    <message>
        <source>Constrains effort on reasoning for OpenAI gpt-5 and o-series models:

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

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

The summary will be generated by LLM and saved as a new chat file.</source>
        <translation>Create a summarized copy of this chat?

The summary will be generated by LLM and saved as a new chat file.</translation>
    </message>
    <message>
        <source>Copied</source>
        <translation>Copied</translation>
    </message>
</context>
<context>
    <name>SplitDropZone</name>
    <message numerus="yes">
        <source>%n file(s) to drop</source>
        <translation>
            <numerusform>%n file(s) to drop</numerusform>
            <numerusform>%n file(s) to drop</numerusform>
        </translation>
    </message>
    <message>
        <source>Attach</source>
        <translation>Attach</translation>
    </message>
    <message>
        <source>Images &amp; Text Files</source>
        <translation>Images &amp; Text Files</translation>
    </message>
    <message>
        <source>(for one-time use)</source>
        <translation>(for one-time use)</translation>
    </message>
    <message>
        <source>LINK</source>
        <translation>LINK</translation>
    </message>
    <message>
        <source>Text Files</source>
        <translation>Text Files</translation>
    </message>
    <message>
        <source>(added to context)</source>
        <translation>(added to context)</translation>
    </message>
</context>
<context>
    <name>TextBlock</name>
    <message>
        <source>Copy</source>
        <translation>Copy</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>Select All</translation>
    </message>
</context>
<context>
    <name>ThinkingBlock</name>
    <message>
        <source>Thinking (Redacted)</source>
        <translation>Thinking (Redacted)</translation>
    </message>
    <message>
        <source>Thinking</source>
        <translation>Thinking</translation>
    </message>
    <message>
        <source>Thinking content was redacted by safety systems</source>
        <translation>Thinking content was redacted by safety systems</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Collapse</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Expand</translation>
    </message>
</context>
<context>
    <name>ToolBlock</name>
    <message>
        <source>Tool: %1</source>
        <translation>Tool: %1</translation>
    </message>
    <message>
        <source>Copy</source>
        <translation>Copy</translation>
    </message>
    <message>
        <source>Select All</source>
        <translation>Select All</translation>
    </message>
    <message>
        <source>Collapse</source>
        <translation>Collapse</translation>
    </message>
    <message>
        <source>Expand</source>
        <translation>Expand</translation>
    </message>
</context>
<context>
    <name>TopBar</name>
    <message>
        <source>Unpin chat window</source>
        <translation>Unpin chat window</translation>
    </message>
    <message>
        <source>Pin chat window to the top</source>
        <translation>Pin chat window to the top</translation>
    </message>
    <message>
        <source>Clean chat</source>
        <translation>Clean chat</translation>
    </message>
    <message>
        <source>Open new chat in a new tab</source>
        <translation>Open new chat in a new tab</translation>
    </message>
    <message>
        <source>Switch saved AI configuration</source>
        <translation>Switch saved AI configuration</translation>
    </message>
    <message>
        <source>Switch agent role (different system prompts)</source>
        <translation>Switch agent role (different system prompts)</translation>
    </message>
    <message>
        <source>Tools are disabled in General Settings</source>
        <translation>Tools are disabled in General Settings</translation>
    </message>
    <message>
        <source>Tools enabled: AI can use tools to read files, search project, and build code</source>
        <translation>Tools enabled: AI can use tools to read files, search project, and build code</translation>
    </message>
    <message>
        <source>Tools disabled: Simple conversation without tool access</source>
        <translation>Tools disabled: Simple conversation without tool access</translation>
    </message>
    <message>
        <source>Thinking Mode enabled (Check model list support it)</source>
        <translation>Thinking Mode enabled (Check model list support it)</translation>
    </message>
    <message>
        <source>Thinking Mode disabled</source>
        <translation>Thinking Mode disabled</translation>
    </message>
    <message>
        <source>Thinking Mode is not available for this provider</source>
        <translation>Thinking Mode is not available for this provider</translation>
    </message>
    <message>
        <source>Open Chat Assistant Settings</source>
        <translation>Open Chat Assistant Settings</translation>
    </message>
    <message>
        <source>Save chat to *.json file</source>
        <translation>Save chat to *.json file</translation>
    </message>
    <message>
        <source>Load chat from *.json file</source>
        <translation>Load chat from *.json file</translation>
    </message>
    <message>
        <source>Show in system</source>
        <translation>Show in system</translation>
    </message>
    <message>
        <source>View chat context (system prompt, role, rules)</source>
        <translation>View chat context (system prompt, role, rules)</translation>
    </message>
    <message>
        <source>Current amount tokens in chat and LLM limit threshold</source>
        <translation>Current amount tokens in chat and LLM limit threshold</translation>
    </message>
</context>
</TS>
