{
  "common": {
    "loading": "Loading...",
    "loadFailed": "Load Failed",
    "saving": "Saving...",
    "saved": "Saved",
    "error": "Error",
    "seconds": "s",
    "locale": "en-US",
    "confirm": "Confirm",
    "cancel": "Cancel",
    "save": "Save",
    "delete": "Delete",
    "edit": "Edit",
    "close": "Close",
    "refresh": "Refresh",
    "search": "Search",
    "advanced": "Advanced",
    "collapse": "Collapse",
    "and": "and",
    "docs": "Docs",
    "forMoreDetails": "for more details",
    "manage": "Manage",
    "add": "Add",
    "confirmDelete": "Confirm Delete?",
    "processing": "Processing...",
    "actions": {
      "more": "More"
    },
    "config": "Configure",
    "view": "View"
  },
  "sidebar": {
    "home": "Home",
    "xLab": "X·LAB",
    "skills": "Skill",
    "chat": "Chat",
    "projects": "Projects",
    "team": "Team",
    "settings": "Settings",
    "recent": "Recent",
    "noRecent": "No recent chats",
    "rename": "Rename",
    "delete": "Delete",
    "exitProject": "Leave Project",
    "joinProject": "Join Project",
    "search": "Search",
    "more": "More",
    "status": {
      "connected": "Connected",
      "connecting": "Connecting",
      "disconnected": "Disconnected",
      "connectedAria": "Current status: Connected",
      "connectingAria": "Current status: Connecting",
      "disconnectedAria": "Current status: Disconnected"
    },
    "expandAria": "Expand Sidebar",
    "mainNavigationAria": "Main Navigation",
    "mainContentAria": "Main Content Area",
    "collapseAria": "Collapse Sidebar",
    "recentExpandAria": "Expand Recent",
    "recentCollapseAria": "Collapse Recent",
    "switchToEnglish": "Switch to English",
    "switchToChinese": "切换为中文",
    "switchDark": "Dark Mode",
    "switchLight": "Light Mode",
    "switchDarkAria": "Switch to Dark Mode",
    "switchLightAria": "Switch to Light Mode",
    "resizeTitle": "Drag to resize (double-click to reset)",
    "resizeAria": "Drag to resize sidebar width"
  },
  "search": {
    "placeholder": "Search actions or recent chats...",
    "quickActions": "Quick actions",
    "newSession": "New Session",
    "newSessionDesc": "Go to home and start a new task.",
    "recent": "Recent",
    "noRecent": "No matching recent chats",
    "noMatchActions": "No matching actions",
    "close": "Close Search"
  },
  "models": {
    "title": "Models",
    "subtitle": "Manage your providers, API keys, and endpoints",
    "primaryProvider": "Primary Provider",
    "jumpToSettings": "Jump to Settings",
    "fallbackEnabled": "Provider Fallback",
    "fallbackEnabledDesc": "Automatic fallback chain when primary model is unavailable",
    "searchPlaceholder": "Search providers...",
    "noMatch": "No matching providers",
    "select": "Please select...",
    "unrecognized": "Unrecognized node: {{name}}",
    "visitOfficialSite": "Visit Official Site",
    "protocols": {
      "openai": "OpenAI Protocol",
      "anthropic": "Anthropic Protocol",
      "gemini": "Gemini Protocol"
    },
    "protocolLabel": "Protocol Compatibility",
    "protocolDesc": "Format used when writing Custom providers to llm.providers",
    "apiKeyLabel": "API Key",
    "apiKeyPlaceholder": "API Key",
    "apiKeyHint": "Separate multiple keys with commas",
    "getApiKey": "Click here to get a key",
    "test": {
      "testing": "Testing",
      "ok": "Available",
      "fail": "Failed",
      "normal": "Test"
    },
    "apiBaseLabel": "API Base URL",
    "apiBaseInvalid": "Enter a valid URL, e.g. https://api.example.com",
    "protocolType": "Protocol Type",
    "previewLabel": "Preview: ",
    "modelsLabel": "Models",
    "searchModels": "Search models...",
    "noModels": "No models yet. Refresh or add below.",
    "syncOk": "Synced {{total}} models, added {{added}} new",
    "syncOkNoAdded": "Synced {{total}} models",
    "syncFailed": "Failed to sync models: {{reason}}",
    "addModelId": "Please enter model ID",
    "modelExists": "Model ID already exists",
    "modelAlreadyExists": "Model already exists",
    "engineError": "Cannot connect to engine. Ensure the console port is active.",
    "timeout": "Request timed out",
    "requestFailed": "Request failed: {{error}}",
    "noModelsInRegistry": "Registry returned no models",
    "noModelsForProvider": "No models for {{name}} in registry",
    "apiNotFound": "Management API not found (Ensure engine version ≥ 2026-05-14)",
    "editModel": "Edit Model",
    "addModel": "Add Model",
    "modelIdLabel": "Model ID",
    "modelIdHint": "Unique identifier for the model, required",
    "modelIdPlaceholder": "Required, e.g. gpt-3.5-turbo",
    "modelNameLabel": "Model Name",
    "modelNameHint": "Friendly display name, optional",
    "modelNamePlaceholder": "e.g. GPT-4",
    "modelGroupLabel": "Group Name",
    "modelGroupHint": "Logical grouping name, optional",
    "modelGroupPlaceholder": "e.g. ChatGPT",
    "modelTagsLabel": "Capabilities (Tags)",
    "goToAgents": "Configure Agent LLM Nodes",
    "hotReloadError": "{{label}} failed ({{detail}})",
    "hotReloadLabels": {
      "apiKey": "Credential Update",
      "create": "Provider Creation",
      "modelCreate": "Model Creation",
      "list": "Provider Query",
      "enable": "Model Enable",
      "disable": "Model Disable",
      "update": "Link Update",
      "delete": "Model Deletion",
      "modelUpdate": "Model Update",
      "protocol": "Protocol Switch"
    },
    "validation": {
      "missingKey": "{{name}} is missing API key",
      "missingBase": "{{name}} is missing API base URL",
      "noModels": "{{name}} needs at least one model added",
      "noneSelected": "{{name}} needs at least one model selected"
    },
    "persist": {
      "readFailed": "Failed to read model config",
      "saving": "Saving UI preferences...",
      "saveFailed": "Failed to save model config"
    },
    "status": {
      "healthy": "Healthy",
      "tripped": "Tripped",
      "ready_to_probe": "Ready to Probe",
      "unknown": "Unknown"
    },
    "capabilities": {
      "vision": "Vision",
      "search": "Web",
      "reasoning": "Reasoning",
      "tools": "Tools",
      "visionHint": "Model accepts image inputs (screenshots, photos, PDFs).",
      "searchHint": "Model can search the web for external information.",
      "reasoningHint": "Model supports extended chain-of-thought / thinking mode.",
      "toolsHint": "Model supports tool use / function calling."
    },
    "pricing": {
      "currency": "Currency",
      "inputPrice": "Input Price",
      "outputPrice": "Output Price",
      "perMillionTokens": "/ million tokens"
    },
    "addModal": {
      "namePlaceholder": "Search or create a group",
      "tagsLabel": "Capabilities (Tags)",
      "tagsHint": "Check carefully — wrong selections will break the model."
    }
  },
  "agents": {
    "title": "Agent Settings",
    "subtitle": "Default parameters for new agents",
    "searchPlaceholder": "Search Agents...",
    "newAgent": "Create Agent",
    "empty": "No Agents yet",
    "emptyDesc": "Create your first Agent",
    "model": "Model Nodes",
    "generation": "Generation",
    "reasoningEffort": "Reasoning Effort (O1/O3)",
    "reasoningDefault": "Auto",
    "style": "Response Style",
    "stylePrecise": "Precise",
    "stylePreciseFull": "Precise Mode",
    "stylePreciseDesc": "Stable and repeatable answers, almost always giving the same result.",
    "styleBalanced": "Balanced",
    "styleBalancedFull": "Balanced Mode",
    "styleBalancedDesc": "Accuracy-focused, natural expression, suitable for daily use.",
    "styleFlexible": "Flexible",
    "styleFlexibleFull": "Flexible Mode",
    "styleFlexibleDesc": "Broad thinking, willing to provide answers from multiple perspectives.",
    "styleCreative": "Creative",
    "styleCreativeFull": "Creative Mode",
    "styleCreativeDesc": "Bold and divergent, with new surprises every time.",
    "morePrecise": "More Precise",
    "moreCreative": "More Creative",
    "recommended": "Recommended",
    "suitableScenarios": "Suitable for these scenarios:",
    "params": "Agent Parameters",
    "maxTokens": "Max tokens per reply (0 = endpoint default)",
    "contextBudget": "Context budget (Tokens, 0 = unlimited)",
    "toolsAndWorkspace": "Tools & Workspace",
    "maxToolIterations": "Max Tool Iterations",
    "workspace": "Workspace Path",
    "workspaceDesc": "Base directory for Agent file operations (Supports ~ path)",
    "apiNotFoundHint": "Management API not found (Check engine version ≥ 2026-05-14)",
    "styleTitle": "Response Style",
    "fallback": {
      "chainTitle": "Fallback Chain",
      "addNode": "Add Node",
      "noNodes": "No available backup nodes",
      "empty": "No backup nodes yet",
      "remove": "Remove",
      "removeNode": "Remove Node"
    },
    "actions": {
      "edit": "Edit",
      "archive": "Archive",
      "delete": "Delete"
    },
    "dialog": {
      "title": "Create Agent",
      "name": "Name",
      "namePlaceholder": "Agent name",
      "emoji": "Emoji",
      "workspace": "Workspace",
      "cancel": "Cancel",
      "create": "Create"
    },
    "scenarios": {
      "precise": {
        "s1": "Code",
        "s2": "Extraction",
        "s3": "Math",
        "s4": "Fact lookup"
      },
      "balanced": {
        "s1": "Q&A",
        "s2": "Summarize",
        "s3": "Daily chat",
        "s4": "Planning"
      },
      "flexible": {
        "s1": "Rewrite",
        "s2": "Translate",
        "s3": "Advice",
        "s4": "Exploration"
      },
      "creative": {
        "s1": "Writing",
        "s2": "Naming",
        "s3": "Storytelling",
        "s4": "Brainstorm"
      }
    }
  },
  "xlab": {
    "title": "X·LAB",
    "description": "Experimental field. Upcoming experimental features and early previews will appear here. Stay tuned."
  },
  "skills": {
    "title": "Skills",
    "market": {
      "title": "Skill Market",
      "back": "Back to Skills",
      "refreshStartFailed": "Failed to start refresh task",
      "refreshProgress": "Refresh complete: {{success}}/{{total}} repos succeeded, {{error}} failed",
      "refreshSuccess": "Discovery refreshed: {{repos}} repos, {{skills}} skills",
      "refreshFailed": "Background refresh failed",
      "installed": "Installed",
      "discovered": "Discovered",
      "saveRepoFailed": "Failed to save repository",
      "repoSaved": "Repo saved, discovery result kept from cache",
      "repoRemoved": "Repo removed, discovery result kept from cache",
      "skillDeleted": "{{name}} deleted",
      "skillInstalled": "{{name}} installed",
      "skillReinstalled": "{{name}} reinstalled",
      "installFailed": "Installation failed",
      "deleteFailed": "Deletion failed",
      "enterUrlFirst": "Please enter GitHub repository URL first",
      "closeMarket": "Close Skill Market"
    },
    "back": "Back to Skills",
    "manage": "Manage Repos",
    "refresh": "Refresh Discovery",
    "searchPlaceholder": "Search...",
    "searchAriaLabel": "Search skills",
    "noMatch": "No matching skills",
    "empty": "No Skills installed yet",
    "emptyDesc": "Go to the Skill Market to pick the capabilities you need. They will appear here immediately after installation. Installing your first Skill will expand how HarnessClaw works.",
    "goToMarket": "Go to Skill Market",
    "autoAppear": "They will appear here after selection and installation",
    "confirm": "Confirm",
    "cancel": "Cancel",
    "delete": "Delete",
    "deleteAriaLabel": "Delete skill",
    "noContent": "No content",
    "closeDetail": "Close Details",
    "deleting": "Deleting...",
    "confirmDelete": "Confirm Delete",
    "failed": "Operation failed",
    "installed": "Installed",
    "notInstalled": "Not Installed",
    "reinstall": "Reinstall",
    "installToLocal": "Install to Local",
    "refs": "Refs",
    "templates": "Templates",
    "noDiscovered": "No discoverable skills yet",
    "noReposDesc": "Add a GitHub repo first, then refresh discovery.",
    "checkRepoDesc": "Check repo URL, branch, and scan path then refresh again.",
    "repoConfigured": "Repo Configured",
    "noSkillFoundDesc": "No skills discovered yet. Check branch, scan path, or click 'Refresh Discovery' to pull latest content.",
    "skillUnit": "skills",
    "canInstallUnit": "Installable",
    "allRepos": "All Repositories",
    "onlyInstallable": "Only Installable",
    "enabledRepos": "Enabled Repos",
    "discoveredCount": "Discovered Skills",
    "searchMarketPlaceholder": "Search skill market...",
    "repo": {
      "title": "Skill Repository",
      "desc": "Enabled repos participate in discovery. Refreshing only updates the remote index; it won't touch your original repo. Fill in scan path to limit range. Proxy only affects pulling and refreshing.",
      "close": "Close",
      "add": "Add Repository",
      "addDesc": "Keep one main input to start adding. Branch, display name, scan path, and proxy are in advanced settings.",
      "url": "Git URL",
      "advanced": "Advanced",
      "update": "Update Repository",
      "branch": "Branch",
      "branchDesc": "Default is `main`, custom branches are supported.",
      "name": "Display Name",
      "namePlaceholder": "Optional",
      "path": "Scan Path",
      "pathPlaceholder": "Optional, e.g. skills",
      "proxy": "Proxy Download",
      "proxyDesc": "When enabled, clone, fetch, and ls-remote will use this proxy address.",
      "proxyProtocol": "Protocol",
      "proxyHost": "Host",
      "proxyPort": "Port",
      "list": "Repository List",
      "unit": "repos",
      "noRepos": "No skill repositories configured yet.",
      "refresh": "Refresh Repo",
      "enabled": "Enabled",
      "disabled": "Disabled",
      "lastUpdate": "Updated",
      "neverUpdated": "Never Updated",
      "proxyLabel": "Proxy",
      "branchLabel": "Branch: ",
      "pathLabel": "Scan Path",
      "manage": "Manage Repos",
      "refreshDiscovery": "Refresh Discovery",
      "browseByRepo": "Browse by Repository",
      "browseByRepoDesc": "Browse by repository, installed directly to current CLI by default"
    },
    "composer": {
      "noDescription": "No description",
      "noMatching": "No matching skills",
      "selectionHint": "↑↓ Select",
      "confirmHint": "Enter Confirm",
      "shortcutHint": "{{key}} + 1-9 Quick select",
      "removeAria": "Remove skill {{name}}"
    }
  },
  "sessions": {
    "title": "Sessions",
    "subtitle": "View history or continue recent context.",
    "searchPlaceholder": "Search sessions...",
    "exitMultiSelect": "Exit Multi-select",
    "enterMultiSelect": "Multi-select",
    "newSession": "New Session",
    "loading": "Loading sessions...",
    "noHistory": "No session history yet",
    "noHistoryDesc": "Start a new conversation and it will appear here.",
    "noMatch": "No matching sessions",
    "noMatchDesc": "Try different keywords to search again.",
    "sessionLabel": "Session",
    "header": {
      "select": "Select",
      "selectedSession": "Selected",
      "session": "Session",
      "project": "Project",
      "lastUpdated": "Last Updated",
      "actions": "Actions"
    },
    "messageCount": "{{n}} messages",
    "multiSelect": {
      "selectedCount": "Selected {{n}} sessions",
      "copy": "Copy",
      "delete": "Delete",
      "close": "Close",
      "copyTooltip": "Copy selected sessions",
      "deleteTooltip": "Delete selected sessions",
      "closeTooltip": "Exit multi-select mode",
      "deleteConfirm": "All messages and history for the {{n}} selected sessions will be permanently deleted and cannot be recovered.",
      "ariaTimeRegion": "Select time region for {{name}}"
    },
    "actions": {
      "more": "More Actions",
      "rename": "Rename",
      "exitProject": "Leave Project",
      "joinProject": "Join Project",
      "delete": "Delete"
    },
    "delete": {
      "title": "Confirm Delete Session?",
      "desc": "All messages and history of \"{{title}}\" will be permanently deleted and cannot be recovered.",
      "cancel": "Cancel",
      "confirm": "Delete"
    },
    "assignProject": {
      "title": "Join Project",
      "desc": "Select a project for this session",
      "noProjects": "No projects available",
      "current": "Current",
      "join": "Join Project",
      "exit": "Leave Project",
      "subtitle": "Assign this session to a project"
    },
    "deleteConfirm": {
      "batchDesc": "All messages and history of the {{count}} selected sessions will be permanently deleted and cannot be recovered."
    }
  },
  "projects": {
    "title": "Projects",
    "newProject": "New Project",
    "allProjects": "All Projects",
    "loading": "Loading projects...",
    "empty": "No projects yet",
    "emptyDesc": "Create a project to centralize sessions and deliverables into one workspace.",
    "selectProject": "Select Project",
    "noProjects": "No projects available",
    "current": "Current",
    "actions": {
      "deleting": "Deleting",
      "openAria": "Open project actions for {{name}}"
    },
    "errors": {
      "nameRequired": "Please enter a project name.",
      "nameTooLong": "Project name should be within 40 characters.",
      "nameConflict": "Project with this name already exists.",
      "createFailed": "Failed to create project. Please try again later.",
      "deleteFailed": "Failed to delete project. Please try again later."
    },
    "dialog": {
      "title": "New Project",
      "closeAria": "Close new project dialog",
      "name": "Project Name",
      "namePlaceholder": "e.g., v0.1.0 Release Prep",
      "desc": "Description",
      "descPlaceholder": "Briefly describe the purpose of this project...",
      "defaultDesc": "No description provided yet. You can add goals and context later.",
      "cancel": "Cancel",
      "create": "Create Project"
    },
    "defaults": {
      "release009": {
        "name": "v0.0.9 Release Wrap-up",
        "description": "Bring release notes, regression verification, and bug fixes together so context and deliverables stay in one project."
      },
      "sidebarRefine": {
        "name": "Sidebar Interaction Refinement",
        "description": "Handle multi-select conversations, click targets, and overflow issues in one place to avoid bouncing between pages."
      },
      "skillsOnboarding": {
        "name": "Skills Onboarding Cleanup",
        "description": "Refine first-run guidance, repository entry points, and the default flow so new users can understand the next step faster."
      }
    },
    "workspace": {
      "back": "Back to Projects",
      "allProjects": "All Projects",
      "notExist": "Project Not Found",
      "notExistDesc": "This project may have been removed, or the link has no data.",
      "inputPlaceholder": "+ Enter questions, goals, or next steps, I'll take over.",
      "addFile": "Add Files",
      "send": "Send",
      "noSessions": "No conversations yet. Start your first chat from the input above.",
      "unnamedSession": "Unnamed Chat {{id}}",
      "deleteSessionError": "Failed to delete chat, please try again later.",
      "panels": {
        "constraints": "Project Constraints",
        "addConstraint": "Add Description",
        "noDescription": "No description",
        "files": "Files",
        "addFile": "Add Files",
        "usage": "LLM Usage",
        "usageTrend": "Token trend (last 14 days)",
        "todayUsage": "Today's Usage",
        "usageDetail": "View usage details",
        "agents": "Agents",
        "addAgent": "Add Agent"
      }
    }
  },
  "chat": {
    "greetings": {
      "night": {
        "tone": "Late night",
        "title": "Gather your scattered thoughts",
        "detail": "Ask questions, attach files, or split complex tasks to HarnessClaw."
      },
      "morning": {
        "tone": "Good morning",
        "title": "Start your day with a clear question",
        "detail": "New chats keep context, files, and approvals, ready for any task."
      },
      "afternoon": {
        "tone": "Good afternoon",
        "title": "Continue your work in this session",
        "detail": "Add background, attach files, and let the Agent handle the rest."
      },
      "evening": {
        "tone": "Good evening",
        "title": "Wrap up your day with a quiet chat",
        "detail": "Questions, attachments, and progress will stay here for later."
      }
    },
    "tools": {
      "Bash": "Bash",
      "Read": "Read",
      "Edit": "Edit",
      "Write": "Write",
      "Grep": "Grep",
      "Glob": "Glob",
      "WebFetch": "Web Fetch",
      "WebSearch": "Web Search",
      "TavilySearch": "Tavily Search",
      "Agent": "Sub Agent",
      "Skill": "Skill",
      "TaskCreate": "Create Task",
      "TaskGet": "Get Task",
      "TaskUpdate": "Update Task",
      "TaskList": "Task List",
      "SendMessage": "Send Message",
      "TeamCreate": "Create Team",
      "TeamDelete": "Delete Team"
    },
    "status": {
      "executingSubAgent": "Executing Sub-agent task",
      "taskInProgress": "Task in progress · {{subject}}",
      "taskDone": "Task completed · {{subject}}",
      "taskRemoved": "Task removed · {{subject}}",
      "taskCreated": "Task created · {{subject}}",
      "routedTo": "Routed to @{{name}}",
      "collabMessage": "Collaboration from {{name}}",
      "agentStarted": "{{name}} started",
      "agentWaiting": "{{name}} waiting",
      "agentDone": "{{name}} completed",
      "agentFailed": "{{name}} failed",
      "memberJoined": "{{name}} joined {{team}}",
      "memberLeft": "{{name}} left {{team}}",
      "teamArchived": "{{team}} archived",
      "teamCreated": "{{team}} established",
      "preparingTool": "Preparing tool",
      "toolFailed": "Tool execution failed",
      "toolDone": "Tool execution completed",
      "subagentFailed": "Sub-agent failed",
      "subagentDone": "Sub-agent completed",
      "subagentStarted": "Sub-task started",
      "subagentSummarizing": "Summarizing",
      "subagentCreated": "Sub-task created",
      "waitingPermission": "Waiting for permission",
      "lifecycleFailed": "Sub-task lifecycle ended with failure",
      "lifecycleEnded": "Sub-task lifecycle ended",
      "terminated": "(Terminated)",
      "stoppingSession": "Requesting to stop current session...",
      "requestFailed": "Request failed",
      "serviceNotConnected": "Message failed to send: Backend service not connected. Please ensure the local backend is started and try again.",
      "serviceNotConnectedHint": "Please check if the local service is running and your connection settings are correct.",
      "unnamedTask": "Unnamed Task",
      "newMember": "new member",
      "member": "member",
      "taskUpdated": "Task updated",
      "asyncCollab": "Background collaboration task",
      "asyncAgents": "Async Agents",
      "routedToPrefix": "Routed to",
      "totalDuration": "Total duration {{time}}",
      "allMembers": "All Members",
      "waitingResults": "Waiting for more results...",
      "serviceContinuing": "Service is continuing",
      "processRecords": "{{n}} process records",
      "subagentCollab": "Sub-agent collaborators",
      "subagentDetails": "Number of details output by current sub-agent",
      "detailContent": "Detailed Content",
      "organizingAnswer": "Agent is organizing the answer",
      "executingPrefix": "Executing",
      "failedSuffix": "failed",
      "doneSuffix": "completed",
      "supplementingProcess": "Supplementing processing details.",
      "subagentUnit": "sub-agents",
      "records": "records",
      "prevSubagentAria": "Previous sub-agent",
      "nextSubagentAria": "Next sub-agent",
      "subagentSwitchProgress": "sub-agent switch progress",
      "closeSubagentDetails": "Close sub-agent details",
      "retrying": "Retrying...",
      "retryIn": "Retrying in about {{n}}s...",
      "autoRetrying": "Auto retrying...",
      "fallbackToNext": "Switched to fallback, see next steps.",
      "fallbackUsed": "Switched to fallback plan.",
      "abortedAction": "Aborted subsequent actions.",
      "subagentFailedShort": "Subtask failed",
      "subagentDoneShort": "Subtask completed",
      "subagentCreatedShort": "Subtask created",
      "subagentStartedShort": "Subtask started",
      "subagentEndFailed": "Subtask lifecycle ended with failure",
      "subagentEnd": "Subtask lifecycle ended",
      "loadFailed": "Load failed",
      "apiNotFound": "Management API not found (please confirm engine version ≥ 2026-05-14)",
      "subagentTask": "Subagent task"
    },
    "tool": {
      "nameLabel": "Tool Name",
      "inputLabel": "Input Parameters",
      "associatedFiles": "Associated Files",
      "searchResult": "Search Results",
      "diagnostics": "Diagnostics",
      "searchResultPrefix": "Search: {{query}}",
      "waitingReturn": "Waiting for return...",
      "totalRecords": "{{n}} total"
    },
    "ask": {
      "title": "Quick Question",
      "yourReply": "Your Reply",
      "cancelled": "Question cancelled, session continues.",
      "submitFailedWithReason": "Failed to send reply: {{reason}}. The question may have expired (server may have restarted), please start a new session or refresh and try again.",
      "submitFailed": "Failed to send reply, please try again later.",
      "cancelFailedWithReason": "Failed to cancel: {{reason}}. The question may have expired (server may have restarted).",
      "cancelFailed": "Failed to cancel, please try again later.",
      "responded": "Responded",
      "cancelledStatus": "Cancelled",
      "waiting": "Waiting for reply",
      "defaultQuestion": "More information is needed to continue.",
      "customPlaceholder": "Or enter a custom reply...",
      "placeholder": "Enter your reply...",
      "cancel": "Cancel",
      "sending": "Sending...",
      "send": "Send"
    },
    "file": {
      "label": "Files",
      "artifacts": "Artifacts",
      "readLimit": "Showing read result, limit is {{n}} lines",
      "writeContent": "Showing content submitted for file write",
      "noContent": "No file content to display",
      "noContentDesc": "This tool call returned no previewable text.",
      "binaryTitle": "Binary file, cannot preview directly",
      "binaryDesc": "This format (e.g. .docx / .pdf / .xlsx) is not UTF-8 text. Use the Export action in the top-right to save the original file.",
      "preview": "Preview"
    },
    "web": {
      "refresh": "Refresh",
      "openExternal": "Open in Browser",
      "close": "Close web preview",
      "loading": "Loading...",
      "loadFailed": "Failed to load page"
    },
    "actions": {
      "copyMessage": "Copy Message",
      "copy": "Copy",
      "export": "Export",
      "closePreview": "Close preview",
      "copyFailed": "Copy failed, please try again.",
      "exportedTo": "Exported to: {{path}}",
      "exportFailed": "Export failed, please try again.",
      "exportFailedWithReason": "Export failed: {{reason}}",
      "collapseArtifacts": "Collapse file list",
      "expandArtifacts": "Expand file list"
    },
    "errors": {
      "accountIssue": "Please switch to a model available for your account, or check your account type.",
      "serviceIssue": "Please check if the local service is running and connection settings are correct.",
      "requestFailed": "Request failed, please try again later.",
      "requestFailedTitle": "Request Failed",
      "serviceNotConnected": "Service not connected",
      "tryingToConnect": "Trying to connect to HarnessClaw, please try again later.",
      "cannotConnect": "Cannot connect to HarnessClaw, ensure local service is running.",
      "sendFailedNoService": "Message failed: service not connected, ensure local service is running."
    },
    "newChat": "New Chat",
    "team": {
      "title": "Team",
      "members": "Members",
      "details": "Details",
      "status": "Current Status",
      "size": "Team Size",
      "lastUpdate": "Last Updated {{time}}",
      "closeDetails": "Close Details",
      "switchProgress": "Team Switching Progress",
      "membersLabel": "Members",
      "memberCount": "{{n}} members",
      "prevTeamAria": "Previous Team",
      "nextTeamAria": "Next Team",
      "switchTeamAria": "Switch to {{name}}",
      "switchToAria": "Switch to {{name}}"
    },
    "chatQuickSwitch": "Quick Chat Switch",
    "jumpToChat": "Jump to chat {{n}}",
    "chatIndex": "Chat {{n}}",
    "permissions": {
      "allowOnce": "Allow Once",
      "alwaysAllow": "Always Allow in Session",
      "deny": "Deny",
      "sessionAllowed": "Allowed for this session",
      "onceAllowed": "Allowed once",
      "denied": "Denied",
      "waiting": "Waiting for authorization",
      "needsConfirmation": "Needs your confirmation",
      "defaultMessage": "This action requires your confirmation.",
      "readOnly": "Read-only access",
      "modifiesEnv": "May modify files or environment",
      "submitting": "Submitting...",
      "expandDetails": "Expand details",
      "collapseDetails": "Collapse details",
      "detailsLabel": "Action Details",
      "resultLabel": "Result"
    },
    "toolRenderHint": {
      "terminal": "Terminal Output",
      "code": "Code Content",
      "diff": "Changes",
      "fileInfo": "File Result",
      "search": "Search Results",
      "markdown": "Markdown",
      "agent": "Agent Output",
      "skill": "Skill Result",
      "task": "Task Result",
      "message": "Message Result",
      "team": "Team Result",
      "plain": "Text Result",
      "default": "Text Result"
    },
    "toolResult": {
      "executing": "Agent is executing this step.",
      "cancelled": "Cancelled.",
      "skipped": "Skipped.",
      "failed": "This step did not complete successfully.",
      "fileInvolved": "Involves file {{name}}",
      "fileAssociated": "Associated file {{name}}",
      "searchSummary": "Search results summary returned.",
      "markdownSummary": "Fetched and organized as Markdown.",
      "terminalSummary": "Command execution completed.",
      "agentSummary": "Sub Agent summary returned.",
      "writeSummary": "File write completed.",
      "editSummary": "File changes generated.",
      "stepCompleted": "This step has completed."
    },
    "defaultToolName": "Tool Action",
    "toolError": {
      "invalidInput": "Invalid Input",
      "permissionDenied": "Permission Denied",
      "timeout": "Timeout",
      "aborted": "Cancelled",
      "rateLimit": "Rate Limited",
      "overloaded": "Overloaded",
      "modelError": "Model Error",
      "contractFail": "Contract Failure",
      "dependencyFail": "Sub-task Failed",
      "internal": "Internal Error",
      "unsupportedModality": "Modality not supported by model"
    },
    "taskStatus": {
      "inProgress": "In Progress",
      "completed": "Completed",
      "deleted": "Removed",
      "pending": "Pending"
    },
    "syncAgentStatus": {
      "running": "Running",
      "completed": "Completed",
      "maxTurns": "Max Turns Reached",
      "modelError": "Model Error",
      "aborted": "Aborted",
      "timeout": "Timeout",
      "failed": "Failed"
    },
    "asyncAgentStatus": {
      "running": "Running",
      "idle": "Idle",
      "completed": "Completed",
      "failed": "Failed",
      "aborted": "Aborted"
    },
    "teamEvent": {
      "memberJoin": "Member Joined",
      "memberLeft": "Member Left",
      "deleted": "Team Archived",
      "created": "Team Established",
      "memberJoined": "{{name}} joined",
      "memberLeftDesc": "{{name}} left",
      "memberChange": "{{name}} changed",
      "archivedDesc": "This team is no longer receiving new collaboration messages.",
      "defaultDesc": "Team members remain in the current group"
    },
    "header": {
      "artifacts": "Artifacts in this session",
      "artifactsCount": "Artifacts in this session ({{n}})",
      "workspace": "Workspace",
      "workspaceCount": "Workspace ({{n}})",
      "workspaceLoading": "Loading workspace…",
      "workspaceEmpty": "No files yet",
      "workspaceRefresh": "Refresh workspace",
      "workspaceOpenFolder": "Open in file manager",
      "workspacePreviewEmpty": "Select a file on the left to preview its content",
      "workspaceBinaryHint": "This file type can't be previewed inline",
      "quickSwitch": "Quick Switch",
      "jumpToIndex": "Jump to chat {{n}}",
      "chatIndex": "Chat {{n}}",
      "activeProject": "Project: {{name}}"
    },
    "composer": {
      "stopping": "Stopping current task",
      "stoppingDesc": "Stop request sent. You can enter new content once the task ends.",
      "confirm": "Needs your confirmation",
      "confirmDesc": "Agent wants to perform an action that may affect files or environment. It will continue automatically after authorization.",
      "connecting": "Connecting to HarnessClaw",
      "connectingDesc": "You can organize your questions first; you can continue once connection is restored.",
      "reconnect": "Reconnect",
      "noConnection": "Not connected to HarnessClaw",
      "noConnectionDesc": "Will try to connect automatically when sending. You can also retry manually.",
      "sendHint": "Enter to send, Shift + Enter for new line",
      "dropFiles": "Drag and drop files here",
      "permissionHint": "Sensitive actions require confirmation",
      "placeholderConnected": "+ What can HarnessClaw do for you?",
      "placeholderDisconnected": "+ Write your question, will connect when sending.",
      "addFilesAria": "Add Files",
      "stopAria": "Stop current task",
      "sendAria": "Send message",
      "dropToUpload": "Drop to upload files to this session",
      "dropDesc": "Attachments will be included in the current context."
    },
    "welcome": {
      "startNew": "Start new chat",
      "welcomeDesc": "Keep questions, attachments, and progress in one place."
    },
    "scroll": {
      "toBottom": "Scroll to bottom"
    },
    "decision": {
      "needsAction": "Needs your decision: {{target}}",
      "targetPlan": "Entire plan",
      "targetStep": "Step {{id}}",
      "retryCount": "Failed after {{n}} retries",
      "failedReason": "Failure reason: {{reason}}",
      "retryOnce": "Retry once",
      "skipStep": "Skip and continue",
      "abortTask": "Abort task",
      "stepLabel": "Step {{id}}",
      "stepLabelPrefix": "Step: ",
      "reasonLabel": "Reason: ",
      "attemptsLabel": "(Tried {{n}} times)",
      "remarkPlaceholder": "Optional: remarks for fallback summary...",
      "remarkLabel": "Remarks",
      "submitFailedWithReason": "Failed to send decision: {{reason}}. Please try again later.",
      "submitFailed": "Failed to send decision, please try again later.",
      "noReason": "No failure reason provided",
      "continued": "Chose to continue",
      "retried": "Chose to retry",
      "cancelled": "Cancelled",
      "waiting": "Waiting for decision",
      "planFailed": "Plan failed · Awaiting decision",
      "stepFailed": "Step failed · Awaiting decision",
      "sending": "Sending...",
      "cancel": "Cancel",
      "retry": "Retry",
      "continue": "Continue",
      "retryDisabledHint": "Retry is not supported for this failure"
    },
    "task": {
      "detailsLabel": "Task",
      "viewDetails": "View task details",
      "hideDetails": "Hide task details"
    }
  },
  "settings": {
    "title": "Settings",
    "nav": {
      "settings": "Settings",
      "connection": "Connection",
      "models": "Models",
      "agents": "Agents",
      "search": "Search",
      "tools": "Tools",
      "appConfig": "App Config",
      "software": "Software",
      "launcher": "Quick Launcher",
      "logs": "Logs",
      "ui": "UI Settings",
      "storage": "Storage",
      "updates": "Updates"
    },
    "connection": {
      "title": "Connection Settings",
      "subtitle": "Gateway connection and heartbeat",
      "gateway": {
        "title": "Gateway Connection",
        "host": "Listen Address",
        "hostDesc": "The host address that the Gateway server binds to",
        "port": "Port",
        "portDesc": "Console API port, default is 8090",
        "probe": "Test",
        "probing": "Testing",
        "connected": "Connected",
        "failed": "Failed",
        "probeFailed": "Unable to connect",
        "requestFailed": "Test request failed",
        "autoReconnect": "Auto Reconnect",
        "autoReconnectDesc": "Automatically try to reconnect after connection is lost",
        "reconnectInterval": "Reconnect Interval",
        "reconnectIntervalDesc": "Wait time between each reconnection attempt",
        "timeout": "Connection Timeout",
        "timeoutDesc": "Maximum wait time to establish a connection"
      },
      "heartbeat": {
        "title": "Heartbeat",
        "enabled": "Heartbeat Check",
        "enabledDesc": "Periodically send ping to keep connection active",
        "interval": "Heartbeat Interval",
        "intervalDesc": "Time interval between heartbeat packets"
      },
      "seconds": "s"
    },
    "auth": {
      "title": "Authentication Settings",
      "subtitle": "Local configuration, no API support required",
      "mode": {
        "title": "Auth Mode",
        "label": "Auth Method",
        "desc": "Select the authentication protocol used when connecting to the Gateway",
        "noneDesc": "No authentication, connect directly to the Gateway. Only for local development.",
        "proxyDesc": "Forward authentication info through a trusted proxy, authentication is handled by the proxy layer."
      },
      "token": {
        "label": "Token",
        "desc": "Access token used for connection",
        "placeholder": "Enter Token"
      },
      "password": {
        "label": "Password",
        "desc": "Authentication password used for connection",
        "placeholder": "Enter Password"
      },
      "test": "Test Connection",
      "testing": "Connecting...",
      "success": "Connected successfully",
      "failed": "Connection failed"
    },
    "software": {
      "title": "Software Settings",
      "subtitle": "App-level runtime options",
      "chatBehavior": {
        "title": "Chat Behavior",
        "linkOpen": "Link Opening",
        "linkOpenDesc": "How to open links in chat messages: built-in drawer or system default browser",
        "drawer": "Built-in Drawer",
        "external": "System Browser"
      },
      "logging": {
        "title": "Logging",
        "level": "Log Level",
        "levelDesc": "Minimum level for logs. Lower levels are more detailed (fatal is least, trace is most).",
        "fatal": "Fatal",
        "error": "Error",
        "warn": "Warn",
        "info": "Info",
        "debug": "Debug",
        "trace": "Trace"
      }
    },
    "models": {
      "title": "Models",
      "subtitle": "Manage your providers, API keys, and endpoints",
      "primaryProvider": "Primary Provider",
      "jumpToSettings": "Jump to Settings",
      "fallbackEnabled": "Provider Fallback",
      "fallbackEnabledDesc": "Automatic fallback chain when primary model is unavailable",
      "searchPlaceholder": "Search providers...",
      "noMatch": "No matching providers",
      "visitOfficialSite": "Visit Official Site",
      "protocols": {
        "openai": "OpenAI Protocol",
        "anthropic": "Anthropic Protocol",
        "gemini": "Gemini Protocol"
      },
      "protocolLabel": "Protocol Compatibility",
      "protocolDesc": "Format used when writing Custom providers to llm.providers",
      "apiKeyLabel": "API Key",
      "apiKeyPlaceholder": "API Key",
      "apiKeyHint": "Separate multiple keys with commas",
      "getApiKey": "Click here to get a key",
      "test": {
        "testing": "Testing",
        "ok": "Available",
        "fail": "Failed",
        "normal": "Test"
      },
      "apiBaseLabel": "API Base URL",
      "protocolType": "Protocol Type",
      "previewLabel": "Preview: ",
      "modelsLabel": "Models",
      "searchModels": "Search models...",
      "noModels": "No models yet. Refresh or add below.",
      "syncOk": "Synced {{total}} models, added {{added}} new",
      "syncOkNoAdded": "Synced {{total}} models",
      "syncFailed": "Failed to sync models: {{reason}}",
      "addModelId": "Please enter model ID",
      "modelExists": "Model ID already exists",
      "modelAlreadyExists": "Model already exists",
      "engineError": "Cannot connect to engine. Ensure the console port is active.",
      "timeout": "Request timed out",
      "requestFailed": "Request failed: {{error}}",
      "noModelsInRegistry": "Registry returned no models",
      "noModelsForProvider": "No models for {{name}} in registry",
      "apiNotFound": "Management API not found (Ensure engine version ≥ 2026-05-14)",
      "editModel": "Edit Model",
      "addModel": "Add Model",
      "modelIdLabel": "Model ID",
      "modelIdHint": "Unique identifier for the model, required",
      "modelIdPlaceholder": "Required, e.g. gpt-3.5-turbo",
      "modelNameLabel": "Model Name",
      "modelNameHint": "Friendly display name, optional",
      "modelNamePlaceholder": "e.g. GPT-4",
      "modelGroupLabel": "Group Name",
      "modelGroupHint": "Logical grouping name, optional",
      "modelGroupPlaceholder": "e.g. ChatGPT",
      "modelTagsLabel": "Capabilities (Tags)",
      "goToAgents": "Configure Agent LLM Nodes",
      "hotReloadError": "{{label}} failed ({{detail}})",
      "hotReloadLabels": {
        "apiKey": "Credential Update",
        "create": "Provider Creation",
        "modelCreate": "Model Creation",
        "list": "Provider Query",
        "enable": "Model Enable",
        "disable": "Model Disable",
        "update": "Link Update",
        "delete": "Model Deletion",
        "modelUpdate": "Model Update",
        "protocol": "Protocol Switch"
      },
      "validation": {
        "missingKey": "{{name}} is missing API key",
        "missingBase": "{{name}} is missing API base URL",
        "noModels": "{{name}} needs at least one model added",
        "noneSelected": "{{name}} needs at least one model selected"
      },
      "persist": {
        "readFailed": "Failed to read model config",
        "saving": "Saving UI preferences...",
        "saveFailed": "Failed to save model config"
      },
      "capabilities": {
        "vision": "Vision",
        "web": "Web",
        "reasoning": "Reasoning",
        "tools": "Tools"
      }
    },
    "channels": {
      "title": "Channel Settings",
      "searchPlaceholder": "Search channels...",
      "sendProgress": "Send Progress",
      "sendToolHints": "Tool Hints",
      "noChannels": "No channels found",
      "config": "Configuration",
      "names": {
        "dingtalk": "DingTalk",
        "discord": "Discord",
        "email": "Email",
        "feishu": "Feishu",
        "mochat": "MoChat",
        "qq": "QQ",
        "slack": "Slack",
        "telegram": "Telegram",
        "wecom": "WeCom",
        "whatsapp": "WhatsApp",
        "harnessclaw": "Harnessclaw"
      },
      "labels": {
        "enabled": "Enabled",
        "imapUsername": "IMAP Username",
        "imapPassword": "IMAP Password",
        "imapMailbox": "IMAP Mailbox",
        "smtpUsername": "SMTP Username",
        "smtpPassword": "SMTP Password",
        "fromAddress": "From Address",
        "autoReplyEnabled": "Auto Reply",
        "pollIntervalSeconds": "Poll Interval (sec)",
        "markSeen": "Mark Seen",
        "maxBodyChars": "Max Body Chars",
        "subjectPrefix": "Subject Prefix",
        "groupPolicy": "Group Policy",
        "reactEmoji": "React Emoji",
        "replyToMessage": "Reply to Message",
        "replyInThread": "Reply in Thread",
        "userTokenReadOnly": "User Token Read-only",
        "msgFormat": "Message Format",
        "welcomeMessage": "Welcome Message",
        "mode": "Mode",
        "consentGranted": "Consent Granted",
        "allowFrom": "Allow From",
        "groupAllowFrom": "Group Allow From",
        "host": "Host",
        "port": "Port"
      },
      "hints": {
        "commaSeparated": "Multiple values separated by commas",
        "noLimit": "Leave empty for no limit"
      }
    },
    "welcome": {
      "greeting": "Welcome to HarnessClaw",
      "saveError": "Failed to save configuration",
      "back": "Back",
      "next": "Next",
      "finish": "Finish & Launch",
      "submitting": "Initializing...",
      "stages": {
        "emma": "Meet emma",
        "emmaSubtitle": "Your all-in-one smart assistant",
        "engine": "Select Engine",
        "engineSubtitle": "Choose a primary LLM service as the core brain",
        "connection": "Connection Params",
        "profile": "Preset Profile"
      },
      "modelIdHint": "e.g., gpt-4o-mini, claude-sonnet-4, etc.",
      "engineOptions": {
        "openaiDetail": "Supports GPT-4o, GPT-4o-mini, etc. Compatible with OpenAI protocol endpoints.",
        "anthropicDetail": "Supports Claude 3.5 Sonnet, Claude 3 Opus, etc. Native API."
      },
      "profileOptions": {
        "devTitle": "Dev Expert",
        "devDetail": "Focus on code, debugging and architecture. High reasoning effort by default.",
        "researchTitle": "Research Assistant",
        "researchDetail": "Expert in data gathering, summarization and paper analysis. Balanced strategy.",
        "opsTitle": "Ops Pro",
        "opsDetail": "Quick handling of daily tasks, syncs and data organization. Lightweight strategy."
      },
      "prompts": {
        "categories": {
          "dev": "Dev",
          "research": "Research",
          "writing": "Writing",
          "data": "Data",
          "life": "Life",
          "daily": "Daily"
        },
        "items": {
          "dev1": "Refactor this function to be more readable and add unit tests.",
          "dev2": "Troubleshoot this error log, locate the root cause and provide a fix.",
          "dev3": "Review this PR's design and boundaries, listing potential risks.",
          "dev4": "Add rate limiting and retries to this interface, with unit tests.",
          "res1": "Search for new RAG papers from the past week and summarize key points.",
          "res2": "Compare architecture and use cases of 3 leading vector databases.",
          "res3": "Review mainstream benchmarks in the Agent evaluation field.",
          "res4": "Track all papers published by this author in the last 6 months.",
          "wri1": "Write a 300-word teaser post for next week's product launch.",
          "wri2": "Rewrite this technical document for non-technical colleagues.",
          "wri3": "Write a concise and powerful README for this open-source project.",
          "wri4": "Organize this retrospective into a story-driven external post.",
          "dat1": "Analyze order data in this CSV for retention and outliers.",
          "dat2": "Parse this log into fields and create a trend chart of hourly calls.",
          "dat3": "Analyze these A/B test results and provide statistical significance.",
          "dat4": "Cluster these user feedbacks into 5 most noteworthy topics.",
          "lif1": "Plan a two-day family weekend trip around Hangzhou.",
          "lif2": "Give me adjustment suggestions for next week based on my activity and diet.",
          "lif3": "Compare the total cost-performance of these two flight+hotel packages.",
          "lif4": "List weekend evening activities suitable for spending alone quietly.",
          "dai1": "Organize today's meeting notes into To-dos and schedule for next week.",
          "dai2": "Summarize all @ mentions in Slack today, marking those needing reply.",
          "dai3": "Organize this week's work into a draft weekly report for external use.",
          "dai4": "Pick 3 things from my emails that truly need processing today."
        }
      }
    },
    "plan": {
      "buttonLabel": "Plan",
      "dialogTitle": "Execution Plan",
      "taskPlan": "Task Plan",
      "close": "Close",
      "noSteps": "No steps",
      "dependsOn": "Depends on {{deps}}",
      "status": {
        "running": "Running",
        "dispatched": "Dispatched",
        "completed": "Completed",
        "failed": "Failed",
        "skipped": "Skipped",
        "pending": "Pending"
      },
      "summary": {
        "completed": "Plan completed · {{completed}}/{{total}} steps successful",
        "failed": "Plan failed · {{failed}} failed, {{skipped}} skipped",
        "running": "Running · {{completed}}/{{total}} completed",
        "progress": "Completed {{completed}}/{{total}} steps",
        "waiting": "Plan approved, waiting to dispatch · {{total}} steps total"
      },
      "draft": {
        "title": "Execution Plan Draft",
        "goalLabel": "Goal:",
        "noSteps": "No steps yet. Click \"+ Add Step\" below to supplement.",
        "stepPlaceholder": "Step description",
        "newStep": "New Step",
        "deleteStepAria": "Delete step",
        "addStep": "Add Step",
        "regenerate": "Regenerate",
        "reject": "Reject",
        "execute": "Execute"
      }
    },
    "stats": {
      "title": "Stats",
      "dialogTitle": "Session Statistics",
      "refresh": "Refresh Stats",
      "close": "Close",
      "noData": "No data yet — This session hasn't generated any LLM calls.",
      "fetchError": "Failed to fetch stats: {{error}}",
      "fetchErrorHint": "Please try again later",
      "contextWindow": "Context Window",
      "remaining": "Remaining",
      "buckets": {
        "input": "Input",
        "cache": "Cache",
        "output": "Output",
        "thinking": "Thinking",
        "includingCache": "Incl. {{n}} cached",
        "percentOfInput": "{{percent}}% of input"
      },
      "cards": {
        "totalTokens": "Total Tokens",
        "inputTokens": "Input Tokens",
        "outputTokens": "Output Tokens",
        "avgLatency": "Avg. Latency",
        "cacheHit": "Cache Hit {{percent}}%",
        "includingThinking": "Incl. {{n}} thinking",
        "ttft": "TTFT {{latency}}",
        "cacheSaved": "Saved {{cost}}"
      },
      "breakdown": {
        "title": "Agent Breakdown",
        "agent": "Agent",
        "input": "Input",
        "output": "Output",
        "contribution": "Contribution",
        "noSubagents": "No sub-agent data",
        "mainBadge": "Main"
      }
    },
    "attachments": {
      "removeAria": "Remove file {{name}}"
    },
    "pasted": {
      "label": "Pasted",
      "lines": "{{n}} lines",
      "removeAria": "Remove pasted content",
      "previewTitle": "Pasted Content Preview",
      "closeAria": "Close preview"
    },
    "ui": {
      "title": "UI Settings",
      "subtitle": "Interface preferences",
      "appearance": "Appearance",
      "theme": "Theme",
      "themeDesc": "Select the interface color theme",
      "themeLight": "Light",
      "themeDark": "Dark",
      "themeSystem": "System",
      "fontSize": "Font Size",
      "fontSizeDesc": "Adjust the interface text size",
      "fontSizeSmall": "Small",
      "fontSizeMedium": "Medium",
      "fontSizeLarge": "Large",
      "language": "Language",
      "languageDesc": "Interface display language",
      "languageZh": "中文",
      "languageEn": "English",
      "editor": "Code Editor",
      "codeTheme": "Code Theme",
      "codeThemeDesc": "Syntax highlighting style for code blocks",
      "animation": "Animations",
      "animationDesc": "Enable interface transitions and micro-interaction animations",
      "viewAvatar": "View avatar: {{name}}"
    },
    "tools": {
      "title": "Tool Configuration",
      "subtitle": "Search, Exec & MCP",
      "iflySearch": {
        "label": "Enable iFly Search",
        "desc": "Synced to tools.web_search module in engine",
        "apiKey": "API Key",
        "apiSecret": "API Secret",
        "appId": "App ID",
        "host": "Host",
        "hostDesc": "iFly Search service Host",
        "path": "Path",
        "pathDesc": "iFly Search request Path",
        "limit": "Limit",
        "limitDesc": "Max results per request"
      },
      "tavilySearch": {
        "label": "Enable Tavily Search",
        "desc": "Synced to tools.tavily_search module in engine",
        "apiKey": "API Key",
        "console": "Open Tavily Console",
        "limit": "Max Results",
        "limitDesc": "Max results per Tavily Search request"
      },
      "exec": {
        "title": "Command Execution",
        "timeout": "Timeout",
        "timeoutDesc": "Max wait time for command execution (seconds)",
        "pathAppend": "PATH Append",
        "pathAppendDesc": "Paths to append to PATH environment variable",
        "restrictWorkspace": "Restrict to Workspace",
        "restrictWorkspaceDesc": "Only allow command execution within the workspace directory"
      },
      "mcp": {
        "title": "MCP Server",
        "noServers": "No MCP Server configured",
        "configured": "{{count}} MCP Servers configured"
      }
    },
    "storage": {
      "title": "Data & Storage",
      "subtitle": "Local files & cache management",
      "dbPath": "Database Path",
      "dbPathDesc": "Local SQLite database file location",
      "dbShowInFolder": "Show database file in folder",
      "logsPath": "Logs Path",
      "logsPathDesc": "Directory for system run logs",
      "cacheSize": "Cache Size",
      "cacheSizeDesc": "Disk space occupied by application temporary cache",
      "clearCache": "Clear Cache",
      "export": {
        "title": "Data Export",
        "db": "Export Database",
        "dbDesc": "Export all sessions as JSON or Markdown",
        "logs": "Export Logs",
        "logsDesc": "Export application run logs",
        "config": "Export Config",
        "configDesc": "Export all settings as a configuration file",
        "success": "Exported to {{path}}",
        "failed": "Export failed",
        "openFailed": "Failed to open directory"
      }
    },
    "logs": {
      "title": "System Logs",
      "subtitle": "Unified view of latest.log. Levels are for filtering display only and do not change the recording level (adjust in \"Software Settings\").",
      "searchPlaceholder": "Search message, module or metadata",
      "followModeOn": "Following",
      "followModeOff": "Paused",
      "directoryLabel": "Log Directory: {{path}}",
      "openDirectory": "Open Directory",
      "exportLogs": "Export Logs",
      "reset": "Reset",
      "copy": "Copy",
      "copied": "Copied",
      "levels": {
        "fatal": "Fatal",
        "error": "Error",
        "warn": "Warn",
        "info": "Info",
        "debug": "Debug",
        "trace": "Trace"
      },
      "viewModes": {
        "parsed": "Parsed",
        "raw": "Raw"
      },
      "notices": {
        "openDirSuccess": "Opened log directory: {{path}}",
        "openDirFailed": "Failed to open log directory.",
        "exportSuccess": "Logs exported to: {{path}}",
        "exportFailed": "Failed to export logs."
      }
    },
    "search": {
      "errors": {
        "loadFailed": "Failed to load tool configuration",
        "invalidConfig": "Credentials are incomplete. Please fill them in before enabling.",
        "notRegistered": "Tool is not registered — engine version may be incompatible.",
        "hotReloadFailed": "Hot-reload failed. Try again later or restart the service.",
        "persistFailed": "Failed to write configuration file — in-memory state was rolled back.",
        "registryMissing": "Tool was not registered at startup. Please restart the service.",
        "badRequest": "Invalid request parameters.",
        "networkError": "Cannot reach the local service. Make sure HarnessClaw is running.",
        "timeout": "Request timed out. Please try again.",
        "generic": "{{code}}: operation failed",
        "requestFailed": "Request failed: {{detail}}"
      },
      "toast": {
        "enabled": "Enabled",
        "disabled": "Disabled",
        "noChanges": "No changes to save",
        "savedAndApplied": "Saved and applied"
      },
      "ui": {
        "reload": "Reload",
        "searchPlaceholder": "Search services...",
        "pendingConfig": "Pending",
        "unsavedChanges": "Unsaved changes",
        "noMatch": "No matching search services",
        "effective": "Active",
        "notEnabled": "Disabled",
        "visitWebsite": "Visit website",
        "saving": "Saving",
        "save": "Save"
      },
      "fields": {
        "apiKeyPlaceholder": "Enter API Key",
        "getKeyHere": "Click here to get a key",
        "iflyConsoleHint": "Visit the iFlytek Open Platform console",
        "tavilyConsoleHint": "Visit the Tavily console",
        "maxResults": "Max Results",
        "maxResultsDesc": "Maximum number of results returned per request",
        "tavilyMaxResultsDesc": "Maximum results returned per Tavily Search request"
      }
    },
    "launcher": {
      "header": {
        "title": "Quick Launcher",
        "subtitle": "Global hotkey to summon the input bar and start a new chat from your question"
      },
      "group": {
        "basic": "Basic"
      },
      "enabled": {
        "label": "Enable",
        "desc": "When enabled, the global hotkey opens the Quick Launcher input box; type a question to jump straight into a new chat."
      },
      "hotkey": {
        "label": "Hotkey",
        "desc": "Click the input on the right and press a key combination to update. Include at least one modifier (⌘/⌃/⌥/⇧).",
        "capturingAria": "Recording hotkey, press a key combination",
        "idleAria": "Current hotkey {{value}}, click to edit",
        "unset": "Not set",
        "pressKeys": "Press a key combination…"
      }
    }
  },
  "welcome": {
    "greeting": "Nice to meet you",
    "stages": {
      "emma": "Meet Emma",
      "emmaSubtitle": "Start with an Agent console that can both chat and work.",
      "engine": "Select Inference Engine",
      "engineSubtitle": "Determine the model API protocol for the first connection.",
      "connection": "Configure Connection",
      "profile": "Select Task Profile"
    },
    "engineOptions": {
      "openaiDetail": "Connect to OpenAI official API or accounts compatible with its model naming and gateway configuration.",
      "anthropicDetail": "Connect to Anthropic official API as the default entry point for Claude series models.",
      "xunfeiDetail": "Connect to iFlytek Spark, suited for Chinese-language scenarios and the domestic developer ecosystem.",
      "googleDetail": "Connect to Google Generative Language for Gemini-series models via the gemini protocol.",
      "deepseekDetail": "Connect to DeepSeek's OpenAI-compatible API — great for code and reasoning at low cost.",
      "zhipuDetail": "Connect to Zhipu GLM via the OpenAI-compatible gateway; supports GLM-4 series models.",
      "moonshotDetail": "Connect to Moonshot Kimi via the OpenAI-compatible API for long-context conversations.",
      "minimaxDetail": "Connect to MiniMax via the OpenAI-compatible API; supports the abab series.",
      "customDetail": "Bring your own gateway — set base URL, key and a protocol (OpenAI or Anthropic) yourself."
    },
    "protocolLabel": "Protocol",
    "profileOptions": {
      "devTitle": "R&D and Automated Ops",
      "devDetail": "Focused on long-chain execution, with higher tool iteration limits by default.",
      "researchTitle": "Data Collection and Research Analysis",
      "researchDetail": "Focused on multi-round retrieval and organization, maintaining medium reasoning intensity.",
      "opsTitle": "Complex Daily Workflow",
      "opsDetail": "Focused on stable collaboration and batch processing, maintaining concise default values."
    },
    "modelIdHint": "Use a model ID supported by your provider, e.g. gpt-4o-mini or claude-sonnet-4.",
    "prompts": {
      "categories": {
        "dev": "Engineering",
        "research": "Research",
        "writing": "Writing",
        "data": "Data",
        "life": "Life",
        "daily": "Daily"
      },
      "items": {
        "dev1": "Review this code for performance bottlenecks",
        "dev2": "Port this Python script to TypeScript",
        "dev3": "Write unit tests for this API",
        "dev4": "Deploy a minimal containerized service",
        "res1": "Summarize recent LLM benchmark papers from the past 30 days",
        "res2": "Compare three popular vector databases",
        "res3": "List key feature differences across competitors",
        "res4": "Extract the key points from this meeting transcript",
        "wri1": "Rewrite this technical post for a broader audience",
        "wri2": "Draft a product launch announcement email",
        "wri3": "Suggest three catchy titles for this blog post",
        "wri4": "Turn these notes into a 200-word talk",
        "dat1": "Find the outliers in this CSV",
        "dat2": "Write a SQL query for last month's active users",
        "dat3": "Aggregate these logs into a visualization",
        "dat4": "Clean this dataset and fill missing values",
        "lif1": "Plan a 3-day getaway near my city",
        "lif2": "Suggest healthy breakfast ideas for the week",
        "lif3": "Build a 30-minute home workout routine",
        "lif4": "Recommend a few highly rated non-fiction books",
        "dai1": "Organize today's tasks into time blocks",
        "dai2": "Draft a time-off request email",
        "dai3": "Remind me to archive project progress every Friday",
        "dai4": "Transcribe this voice note into a meeting summary"
      }
    },
    "back": "Back",
    "next": "Next",
    "finish": "Meet Emma",
    "submitting": "Emma is lighting the lamp for you...",
    "saveError": "Failed to save configuration"
  },
  "home": {
    "status": {
      "connected": "Connected",
      "connectedDesc": "Put your questions, goals or files here, and start a new conversation directly.",
      "connecting": "Connecting",
      "connectingDesc": "Connection is being established. You can organize your input first and send it once ready.",
      "disconnected": "Disconnected",
      "disconnectedDesc": "It's okay to write down your thoughts first; you can continue once the connection is complete."
    },
    "dropToFiles": "Drop to add files",
    "inputPlaceholder": "+ Enter your question, goal or next step, I'll take it from here.",
    "addFiles": "Add Files",
    "planMode": "Plan Mode",
    "planModeEnabled": "Plan Mode enabled: this query will be executed in explicit steps",
    "planModeDisabled": "Click to enable Plan Mode (recommended for multi-step, complex tasks)",
    "shortcutHint": "Enter to send, Shift + Enter for new line",
    "send": "Send"
  },
  "team": {
    "title": "Agent Team",
    "agents": "Agents",
    "teams": "Agent Team",
    "newAgent": "New Agent",
    "newTeam": "New Agent Team",
    "emptyAgents": "No Agents yet",
    "emptyAgentsDesc": "Create your first agent above to use in teams later.",
    "emptyTeams": "No Agent Teams yet",
    "emptyTeamsDesc": "Create a team to combine multiple agents into fixed collaborative groups.",
    "agentType": {
      "sync": "sync (Sync Sub-agent)",
      "async": "async (Async Sub-agent)",
      "teammate": "teammate (Collaborator)",
      "coordinator": "coordinator (Orchestrator)",
      "custom": "custom (Custom)"
    },
    "profile": {
      "full": "full (All-in-one)",
      "explore": "explore (Explore Mode)",
      "plan": "plan (Plan Mode)"
    },
    "dialog": {
      "createAgent": "New Agent",
      "editAgent": "Edit Agent",
      "createDesc": "Create an agent to use alone or in an Agent Team.",
      "editDesc": "Modify agent config, changes take effect immediately.",
      "baseInfo": "Basic Info",
      "name": "Name *",
      "nameDesc": "@-mention unique identifier",
      "displayName": "Display Name",
      "displayNameDesc": "Used for UI display",
      "type": "Agent Type",
      "typeDesc": "Tool filtering strategy",
      "template": "Agent Profile",
      "templateDesc": "Preset profile",
      "desc": "Description",
      "descDesc": "Capability description",
      "descPlaceholder": "e.g., Responsible for planning, task decomposition, and execution flow.",
      "systemPrompt": "System Prompt",
      "systemPromptDesc": "Custom system instructions",
      "systemPromptPlaceholder": "Define agent behavior, boundaries, and style using multi-line text.",
      "advanced": "Advanced Settings",
      "advancedDesc": "Model, turns, tools, skills, and auto-team presets",
      "model": "Model",
      "modelDesc": "Leave blank to inherit default model",
      "maxTurns": "Max Turns",
      "maxTurnsDesc": "1-25, leave blank for auto",
      "allowedTools": "Allowed Tools",
      "disallowedTools": "Disallowed Tools",
      "tools": "Tools",
      "toolsDesc": "Independent tool whitelist",
      "skills": "Skills",
      "skillsDesc": "Skill whitelist",
      "autoTeam": "Auto Team",
      "subAgents": "Sub Agents",
      "subAgentsDesc": "Predefine sub-agents when auto-team is enabled",
      "noSubAgents": "Create agents first, then select predefined sub-agents here.",
      "save": "Save",
      "saving": "Saving...",
      "cancel": "Cancel",
      "delete": "Delete",
      "errors": {
        "nameRequired": "Please fill in the agent identifier.",
        "nameInvalid": "Identifier only supports letters, numbers, _, -, with optional @ prefix.",
        "conflict": "Identifier already exists, please choose another.",
        "failed": "Failed to save, please try again later.",
        "network": "Network error, please check if engine is running.",
        "deleteFailed": "Failed to delete."
      }
    },
    "sop": {
      "wizardTitle": "Step {{step}}: {{label}}",
      "next": "Next: {{label}}",
      "publish": "Publish",
      "cancel": "Cancel",
      "prev": "Previous",
      "overview": "SOP Workflow Overview",
      "status": {
        "done": "Completed",
        "doing": "In Progress",
        "todo": "Pending"
      },
      "steps": {
        "target": {
          "label": "Define Goal",
          "desc": "Describe team goals and purpose to guide the AI team.",
          "name": "Team Name",
          "namePlaceholder": "2-8 characters name",
          "objective": "Team Goal",
          "objectivePlaceholder": "Describe specific goals to achieve",
          "scenario": "Application Scenario",
          "scenarioPlaceholder": "e.g., Code Review, Doc Gen, Project Management",
          "constraints": "Boundaries & Constraints (Optional)",
          "constraintsPlaceholder": "e.g., No access to production data",
          "error": "Please fill in the team name before publishing."
        },
        "members": {
          "label": "Select Members",
          "desc": "Select members from created agents to join the team.",
          "empty": "No agents available. Switch to 'Agents' to create one first."
        },
        "workflow": {
          "label": "Design Workflow",
          "desc": "Design internal interaction flow and message routing rules."
        },
        "collaboration": {
          "label": "Configure Collaboration",
          "desc": "Configure team collaboration strategies and shared context."
        },
        "test": {
          "label": "Test & Publish",
          "desc": "Test team collaboration and publish once ready."
        }
      },
      "items": {
        "workflow": "Interaction Flow",
        "routing": "Message Routing",
        "conditions": "Trigger Conditions",
        "context": "Shared Context",
        "strategy": "Collaboration Strategy",
        "conflict": "Conflict Resolution",
        "test": "Collaboration Testing",
        "optimization": "Debug & Optimize",
        "publish": "Publish",
        "targetDesc": [
          "Team Name / Goal",
          "Scenarios",
          "Constraints"
        ],
        "membersDesc": [
          "Select from Agents",
          "Role Assignment",
          "Capability Match"
        ],
        "workflowDesc": [
          "Interaction Flow",
          "Message Routing",
          "Trigger Conditions"
        ],
        "collaborationDesc": [
          "Shared Context",
          "Collaboration Strategy",
          "Conflict Resolution"
        ],
        "testDesc": [
          "Team Testing",
          "Debug & Optimize",
          "Publish"
        ]
      },
      "placeholder": "Coming Soon",
      "example": "Example",
      "output": "Output: High-quality Delivery"
    },
    "card": {
      "noDesc": "No description provided.",
      "noTeamDesc": "No team description provided.",
      "turns": "{{n}} Turns",
      "autoTurns": "Auto Turns",
      "inheritModel": "Inherit Default Model",
      "skills": "Skills",
      "tools": "Allowed Tools",
      "members": "Combined Roles",
      "unknownMember": "Unknown Agent",
      "memberCount": "{{n}} Agents"
    }
  },
  "attachments": {
    "removeAria": "Remove attachment"
  },
  "pasted": {
    "closeAria": "Close preview",
    "label": "Pasted text",
    "lines": "{{count}} lines",
    "previewTitle": "Pasted text preview",
    "removeAria": "Remove pasted text"
  },
  "plan": {
    "buttonLabel": "Plan",
    "close": "Close",
    "dependsOn": "Depends on",
    "dialogTitle": "Execution Plan",
    "draft": {
      "addStep": "Add step",
      "deleteStepAria": "Delete step",
      "execute": "Execute Plan",
      "goalLabel": "Goal",
      "newStep": "New step",
      "noSteps": "No steps yet — add one to begin.",
      "regenerate": "Regenerate",
      "reject": "Reject",
      "stepPlaceholder": "Describe this step...",
      "title": "Plan Draft"
    },
    "noSteps": "No steps",
    "status": {
      "completed": "Completed",
      "dispatched": "Dispatched",
      "failed": "Failed",
      "pending": "Pending",
      "running": "Running",
      "skipped": "Skipped"
    },
    "summary": {
      "completed": "{{count}} completed",
      "failed": "{{count}} failed",
      "progress": "{{done}} / {{total}}",
      "running": "{{count}} running",
      "waiting": "{{count}} waiting"
    },
    "taskPlan": "Task Plan"
  },
  "stats": {
    "breakdown": {
      "agent": "Agent",
      "contribution": "Contribution",
      "input": "Input",
      "mainBadge": "Main",
      "noSubagents": "No subagent activity",
      "output": "Output",
      "title": "Agent Breakdown"
    },
    "buckets": {
      "cache": "Cache",
      "includingCache": "incl. cache",
      "input": "Input",
      "output": "Output",
      "percentOfInput": "% of input",
      "thinking": "Thinking"
    },
    "cards": {
      "avgLatency": "Avg Latency",
      "cacheHit": "Cache Hit",
      "cacheSaved": "Cache Saved",
      "includingThinking": "incl. thinking",
      "inputTokens": "Input Tokens",
      "outputTokens": "Output Tokens",
      "totalTokens": "Total Tokens",
      "ttft": "TTFT"
    },
    "close": "Close",
    "contextWindow": "Context Window",
    "dialogTitle": "Session Stats",
    "fetchError": "Failed to fetch stats",
    "fetchErrorHint": "Make sure the engine is running.",
    "noData": "No data yet",
    "refresh": "Refresh",
    "remaining": "Remaining",
    "title": "Stats"
  },
  "storage": {
    "export": {
      "config": "Export Config",
      "configDesc": "Export the current app config as JSON.",
      "db": "Export Database",
      "dbDesc": "Export sessions and messages as a SQLite snapshot.",
      "failed": "Export failed",
      "logs": "Export Logs",
      "logsDesc": "Bundle runtime logs into a single archive.",
      "openFailed": "Failed to open exported file",
      "success": "Exported to {{path}}",
      "title": "Export Data"
    }
  },
  "ui": {
    "viewAvatar": "View avatar"
  },
  "updates": {
    "autoCheckHint": "Updates are checked automatically on startup.",
    "available": "Update available",
    "check": "Check for updates",
    "checkDesc": "Check Github for a newer release.",
    "checkFailed": "Failed to check for updates",
    "checking": "Checking…",
    "checkingSource": "Checking release source…",
    "checkingStatus": "Status: checking",
    "currentVersion": "Current Version",
    "currentVersionDesc": "The version currently installed.",
    "downloadDeferred": "Download deferred until later — {{version}}",
    "downloadDeferredGeneric": "Download deferred until later.",
    "downloadDone": "Download finished — {{version}}",
    "downloadDoneGeneric": "Download finished.",
    "downloadProgress": "Downloading {{version}}… {{percent}}%",
    "downloadProgressGeneric": "Downloading… {{percent}}%",
    "downloadStarted": "Download started — {{version}}",
    "downloadStartedGeneric": "Download started.",
    "downloaded": "Update downloaded — restart to install",
    "downloading": "Downloading…",
    "error": "Update error: {{message}}",
    "foundNew": "New version available — {{version}}",
    "foundNewGeneric": "A new version is available.",
    "idle": "Idle",
    "latest": "Already up to date — {{version}}",
    "latestGeneric": "Already up to date.",
    "notAvailable": "No updates available",
    "progress": "{{percent}}%",
    "status": "Update Status",
    "statusDesc": "Latest result from the update checker.",
    "subtitle": "Manage automatic updates and check for new releases.",
    "title": "Updates",
    "version": "Version {{version}}"
  }
}
