export default {
  'ModelSwitch.title': 'Model',
  'active': 'Active',
  'agentBuilder.installPlugin.authRequired': 'Cloud MCP requires sign-in to continue',
  'agentBuilder.installPlugin.cancel': 'Cancel',
  'agentBuilder.installPlugin.clickApproveToConnect':
    'Click "Approve" to connect and authorize this Integration',
  'agentBuilder.installPlugin.clickApproveToInstall': 'Click "Approve" to install this Skill',
  'agentBuilder.installPlugin.connectedAndEnabled': 'Connected and enabled',
  'agentBuilder.installPlugin.connectionFailed':
    'Connection failed. Retry, or check authorization and network settings.',
  'agentBuilder.installPlugin.installFailed':
    'Installation failed. Retry, or view details and try again.',
  'agentBuilder.installPlugin.installPlugin': 'Install Skill',
  'agentBuilder.installPlugin.installToEnable':
    'Install to enable this Skill for the Agent (you can do it later)',
  'agentBuilder.installPlugin.installedAndEnabled': 'Installed and enabled',
  'agentBuilder.installPlugin.requiresAuth': 'Requires authorization. Click "Approve" to connect',
  'agentBuilder.installPlugin.retry': 'Retry',
  'agentBuilder.title': 'Agent Builder',
  'agentBuilder.welcome':
    'Tell me your use case.\n\nWriting, coding, or data analysis—anything works. You own the goal and standards; I’ll break it down into collaborative, runnable Agents.',
  'agentConfigError.retry': 'Retry',
  'agentConfigError.title': 'Failed to load agent settings',
  'agentDefaultMessage':
    'Hi, I’m **{{name}}**. One sentence is enough.\n\nWant me to match your workflow better? Go to [Agent Settings]({{url}}) and fill in the Agent Profile (you can edit it anytime).',
  'agentDefaultMessageWithSystemRole':
    "Hi, I’m **{{name}}**. One sentence is enough—you're in control.",
  'agentDefaultMessageWithoutEdit':
    "Hi, I’m **{{name}}**. One sentence is enough—you're in control.",
  'agentProfile.files_one': '{{count}} file',
  'agentProfile.files_other': '{{count}} files',
  'agentProfile.knowledgeBases_one': '{{count}} knowledge base',
  'agentProfile.knowledgeBases_other': '{{count}} knowledge bases',
  'agentProfile.skills_one': '{{count}} skill',
  'agentProfile.skills_other': '{{count}} skills',
  'agentSignal.receipts.agentSignalLabel': 'Agent Signal',
  'agentSignal.receipts.memory.detail': 'Saved this for future replies',
  'agentSignal.receipts.memory.title': 'Memory saved',
  'agentSignal.receipts.recentActivity': 'Recent activity',
  'agentSignal.receipts.skill.detail': 'Self-refined how this agent handles similar requests',
  'agentSignal.receipts.skill.title': 'Auto-learned a new skill',
  'agents': 'Agents',
  'artifact.generating': 'Generating',
  'artifact.inThread':
    'Cannot view in subtopic, please switch to the main conversation area to open',
  'artifact.thinking': 'Thinking',
  'artifact.thought': 'Thought process',
  'artifact.unknownTitle': 'Untitled Work',
  'availableAgents': 'Available Agents',
  'backToBottom': 'Jump to latest',
  'beforeUnload.confirmLeave': 'A request is still running. Leave anyway?',
  'builtinCopilot': 'Built-in Copilot',
  'chatList.expandMessage': 'Expand Message',
  'chatList.longMessageDetail': 'View Details',
  'clearCurrentMessages': 'Clear current session messages',
  'compressedHistory': 'Compressed History',
  'compression.cancel': 'Uncompress',
  'compression.cancelConfirm':
    'Are you sure you want to uncompress? This will restore the original messages.',
  'compression.history': 'History',
  'compression.summary': 'Summary',
  'confirmClearCurrentMessages':
    'You are about to clear the current session messages. Once cleared, they cannot be retrieved. Please confirm your action.',
  'confirmRemoveChatGroupItemAlert':
    'This Group will be deleted. Group-specific assistants will also be deleted, while external assistants will not be affected.',
  'confirmRemoveGroupItemAlert':
    'You are about to delete this category. After deletion, its agents will be moved to the default list. Please confirm your action.',
  'confirmRemoveGroupSuccess': 'Group deleted successfully',
  'confirmRemoveSessionItemAlert':
    'You are about to delete this agent. Once deleted, it cannot be retrieved. Please confirm your action.',
  'confirmRemoveSessionSuccess': 'Agent removed successfully',
  'defaultAgent': 'Default Agent',
  'defaultGroupChat': 'Group',
  'defaultList': 'Default List',
  'defaultSession': 'Default Agent',
  'desktopNotification.aiReplyCompleted.body': 'Agent reply is ready',
  'desktopNotification.aiReplyCompleted.title': 'Reply completed',
  'desktopNotification.humanApprovalRequired.body': 'An Agent needs your approval to continue',
  'desktopNotification.humanApprovalRequired.title': 'Approval required',
  'dm.placeholder': 'Your private messages with {{agentTitle}} will appear here.',
  'dm.tooltip': 'Send a private message',
  'dm.visibleTo': 'Visible to {{target}} only',
  'dm.you': 'You',
  'duplicateSession.loading': 'Copying...',
  'duplicateSession.success': 'Copy successful',
  'duplicateSession.title': '{{title}} Copy',
  'duplicateTitle': '{{title}} Copy',
  'emptyAgent': 'No Agents yet. Start with your first Agent—build your system over time.',
  'emptyAgentAction': 'Create Agent',
  'extendParams.disableContextCaching.desc':
    'Reduce by up to 90% of the cost of generating a single conversation and bring a max of 4x speed. <1>Learn more</1>',
  'extendParams.disableContextCaching.title': 'Enable Context Caching',
  'extendParams.effort.desc':
    'Control how many tokens Claude uses when responding with the effort parameter.',
  'extendParams.effort.title': 'Effort',
  'extendParams.enableAdaptiveThinking.desc':
    'Let Claude dynamically decide when and how much to think with adaptive thinking mode.',
  'extendParams.enableAdaptiveThinking.title': 'Enable Adaptive Thinking',
  'extendParams.enableReasoning.desc':
    'Let the model reason before answering. Use it for complex tasks.',
  'extendParams.enableReasoning.title': 'Enable Deep Thinking',
  'extendParams.preserveThinking.desc':
    'When enabled, assistant historical reasoning will be sent back as context for models. This may increase token usage.',
  'extendParams.preserveThinking.title': 'Preserve Historical Thinking',
  'extendParams.imageAspectRatio.title': 'Image Aspect Ratio',
  'extendParams.imageResolution.title': 'Image Resolution',
  'extendParams.reasoningBudgetToken.title': 'Thinking Consumption Token',
  'extendParams.reasoningEffort.title': 'Reasoning Intensity',
  'extendParams.textVerbosity.title': 'Output Text Detail Level',
  'extendParams.thinking.title': 'Deep Thinking Switch',
  'extendParams.thinkingBudget.title': 'Thinking Budget',
  'extendParams.thinkingLevel.title': 'Level of Thinking',
  'extendParams.title': 'Model Extension Features',
  'extendParams.urlContext.desc':
    'When enabled, web links will be automatically parsed to retrieve the actual webpage context content',
  'extendParams.urlContext.title': 'Extract Webpage Link Content',
  'group.desc': 'Move a task forward with multiple Agents in one shared space.',
  'group.memberTooltip': 'There are {{count}} members in the group',
  'group.orchestratorThinking': 'Orchestrator is thinking...',
  'group.profile.contentPlaceholder':
    'Set the group objectives/work modes here. This information will be shared with all group members.',
  'group.profile.external': 'External',
  'group.profile.externalAgentWarning':
    'This is an external agent. Changes made here will directly modify the original agent configuration.',
  'group.profile.groupSettings': 'Group Settings',
  'group.profile.supervisor': 'Supervisor',
  'group.profile.supervisorPlaceholder':
    'The supervisor coordinates different agents. Setting supervisor information here enables more precise workflow coordination.',
  'group.removeMember': 'Remove Member',
  'group.title': 'Group',
  'groupDescription': 'Group description',
  'groupSidebar.agentProfile.chat': 'Chat',
  'groupSidebar.agentProfile.model': 'Model',
  'groupSidebar.agentProfile.settings': 'Settings',
  'groupSidebar.members.addMember': 'Add Member',
  'groupSidebar.members.enableOrchestrator': 'Enable Orchestrator',
  'groupSidebar.members.memberSettings': 'Member Settings',
  'groupSidebar.members.orchestrator': 'Orchestrator',
  'groupSidebar.members.orchestratorThinking': 'Orchestrator is thinking...',
  'groupSidebar.members.removeMember': 'Remove Member',
  'groupSidebar.members.stopOrchestrator': 'Stop',
  'groupSidebar.members.triggerOrchestrator': 'Start',
  'groupSidebar.tabs.host': 'Orchestrator',
  'groupSidebar.tabs.members': 'Members',
  'groupSidebar.tabs.role': 'Profile',
  'groupWizard.chooseMembers': 'Select existing agents...',
  'groupWizard.createGroup': 'Create Group',
  'groupWizard.existingMembers': 'Current Agents',
  'groupWizard.groupMembers': 'These agents will also be added to your list',
  'groupWizard.host.description':
    'Let the Group move forward automatically. You can step in anytime.',
  'groupWizard.host.title': 'Enable Orchestrator',
  'groupWizard.host.tooltip': 'When off, you’ll need to @mention members to get their replies.',
  'groupWizard.memberCount': '{{count}} members',
  'groupWizard.noMatchingTemplates': 'No matching templates',
  'groupWizard.noSelectedTemplates': 'No templates selected',
  'groupWizard.noTemplateMembers': 'No members in the template',
  'groupWizard.noTemplates': 'No templates available',
  'groupWizard.searchTemplates': 'Search templates...',
  'groupWizard.title': 'Create Group',
  'groupWizard.useTemplate': 'Use Template',
  'heteroAgent.fullAccess.label': 'Full access',
  'heteroAgent.fullAccess.tooltip':
    'Claude Code runs locally with full read/write access to the working directory. Switching permission modes is not available yet.',
  'heteroAgent.resumeReset.cwdChanged':
    'Working directory changed. Previous Claude Code session can only be resumed from its original directory, so a new conversation has started.',
  'heteroAgent.resumeReset.resumeFailed':
    'The saved Codex thread could not be resumed safely, so a new conversation has started for this topic.',
  'heteroAgent.switchCwd.cancel': 'Cancel',
  'heteroAgent.switchCwd.content':
    'Claude Code sessions are pinned to a working directory. Switching will start a new session for this topic — chat messages stay, but the previous session context cannot be resumed.',
  'heteroAgent.switchCwd.ok': 'Switch and start new session',
  'heteroAgent.switchCwd.title': 'Switch working directory?',
  'heteroAgent.cloudNotConfigured.action': 'Configure',
  'heteroAgent.cloudNotConfigured.desc':
    'Configure your Claude Code token in agent profile to start sending messages.',
  'heteroAgent.cloudNotConfigured.title': 'Cloud credentials required',
  'heteroAgent.cloudRepo.sectionTitle': 'Repositories',
  'heteroAgent.cloudRepo.notSet': 'No repo selected',
  'heteroAgent.cloudRepo.noRepos': 'No repositories configured. Add them in agent settings.',
  'heteroAgent.cloudRepo.multiSelected': '{{count}} repos selected',
  'heteroAgent.executionTarget.infoTooltip':
    'Pick a device and the agent uses it as its runtime environment — reading and writing files and operating the computer. Cloud sandbox is provided by LobeHub Marketplace.',
  'heteroAgent.executionTarget.loading': 'Loading devices…',
  'heteroAgent.executionTarget.local': 'This device',
  'heteroAgent.executionTarget.localDesc': 'Run as a local process on this desktop app',
  'heteroAgent.executionTarget.noDevices':
    'No remote devices yet. Run `lh connect` on another machine to add one.',
  'heteroAgent.executionTarget.none': 'No device',
  'heteroAgent.executionTarget.noneDesc': 'No device enabled',
  'heteroAgent.executionTarget.offline': 'Offline',
  'heteroAgent.executionTarget.online': 'Online',
  'heteroAgent.executionTarget.sandbox': 'Cloud Sandbox',
  'heteroAgent.executionTarget.sandboxDesc': 'Run in an ephemeral cloud sandbox',
  'heteroAgent.executionTarget.downloadDesktop': 'Get Desktop App',
  'heteroAgent.executionTarget.downloadDesktopDesc': 'Run agents with access to your computer',
  'heteroAgent.executionTarget.downloadDesktopTitle': 'Get the desktop app',
  'heteroAgent.executionTarget.title': 'Execution Device',
  'heteroAgent.executionTarget.unknownDevice': 'Unknown device',
  'hideForYou':
    "Direct message content is hidden. Please enable 'Show Direct Message Content' in settings to view.",
  'history.title': 'The Agent will keep only the latest {{count}} messages.',
  'historyRange': 'History Range',
  'historySummary': 'Historical Message Summary',
  'inactive': 'Inactive',
  'inbox.desc': 'Collaborate in one Workspace and move ideas into outcomes.',
  'inbox.title': 'Lobe AI',
  'input.addAi': 'Add an AI message',
  'input.addUser': 'Add a user message',
  'input.costEstimate.creditsPerMillionTokens': '{{credits}} credits/M tokens',
  'input.costEstimate.hint': 'Estimated cost: ~{{credits}} credits',
  'input.costEstimate.inputLabel': 'Input',
  'input.costEstimate.outputLabel': 'Output',
  'input.costEstimate.settingsLink': 'Adjust warning threshold',
  'input.costEstimate.tokenCount': '~{{tokens}} tokens',
  'input.costEstimate.tooltip':
    'Estimated from current context, tools, and model pricing. Actual cost may vary.',
  'input.disclaimer': 'Agents can make mistakes. Use your judgment for critical info.',
  'input.errorMsg': 'Send failed: {{errorMsg}}. Retry, or send again later.',
  'input.inputCompletionError.desc':
    'Input suggestions stopped after an error. Retry, or adjust the suggestion model in Settings.',
  'input.inputCompletionError.retry': 'Retry',
  'input.inputCompletionError.settings': 'Settings',
  'input.inputCompletionError.title': 'Input suggestions paused',
  'input.more': 'More',
  'input.send': 'Send',
  'input.sendWithCmdEnter': 'Press <key/> to send',
  'input.sendWithEnter': 'Press <key/> to send',
  'input.stop': 'Stop',
  'input.warp': 'New Line',
  'input.warpWithKey': 'Press <key/> to insert a line break',
  'inputQueue.delete': 'Delete',
  'inputQueue.edit': 'Edit',
  'inputQueue.sendNow': 'Send now (interrupts current run)',
  'intentUnderstanding.title': 'Understanding your intent...',
  'inviteMembers': 'Invite members',
  'knowledgeBase.all': 'All Content',
  'knowledgeBase.allFiles': 'All Files',
  'knowledgeBase.allLibraries': 'All Libraries',
  'knowledgeBase.disabled':
    'Library chat isn’t available in this deployment. Switch to a server-side database, or use {{cloud}}.',
  'knowledgeBase.library.action.add': 'Add',
  'knowledgeBase.library.action.detail': 'Details',
  'knowledgeBase.library.action.remove': 'Remove',
  'knowledgeBase.library.title': 'Files / Libraries',
  'knowledgeBase.files': 'Files',
  'knowledgeBase.libraries': 'Libraries',
  'knowledgeBase.relativeFilesOrLibraries': 'Related Files/Libraries',
  'knowledgeBase.title': 'Library',
  'knowledgeBase.uploadGuide': "Uploaded files can be viewed in the 'Resources' section.",
  'knowledgeBase.viewMore': 'View More',
  'memberSelection.addMember': 'Add Member',
  'memberSelection.allMembers': 'All members',
  'memberSelection.createGroup': 'Create Group',
  'memberSelection.noAvailableAgents': 'No available agents to invite',
  'memberSelection.noSelectedAgents': 'No agents selected yet',
  'memberSelection.searchAgents': 'Search agents...',
  'memberSelection.selectedAgents': 'Selected ({{count}})',
  'memberSelection.setInitialMembers': 'Select Group members',
  'members': 'Members',
  'mention.category.agents': 'Agents',
  'mention.category.members': 'Members',
  'mention.category.skills': 'Skills',
  'mention.category.tools': 'Tools',
  'mention.category.topics': 'Topics',
  'mention.title': 'Mention Members',
  'messageAction.collapse': 'Collapse Message',
  'messageAction.continueGeneration': 'Continue Generating',
  'messageAction.delAndRegenerate': 'Delete and Regenerate',
  'messageAction.interrupted': 'Interrupted',
  'messageAction.interruptedHint': 'What should I do instead?',
  'messageAction.deleteDisabledByThreads': 'This message has a subtopic and can’t be deleted',
  'messageAction.expand': 'Expand Message',
  'messageAction.reaction': 'Add Reaction',
  'messageAction.regenerate': 'Regenerate',
  'messageLongCollapse.collapse': 'Show less',
  'messageLongCollapse.expand': 'Show more',
  'messages.dm.sentTo': 'Visible only to {{name}}',
  'messages.dm.title': 'DM',
  'messages.modelCard.credit': 'Credits',
  'messages.modelCard.creditPricing': 'Pricing',
  'messages.modelCard.creditTooltip':
    'For counting, we treat $1 as 1M credits. Example: $3/M tokens → 3 credits per token.',
  'messages.modelCard.pricing.inputCachedTokens': 'Cached input {{amount}} credits · ${{amount}}/M',
  'messages.modelCard.pricing.inputCharts': '${{amount}}/M characters',
  'messages.modelCard.pricing.inputMinutes': '${{amount}}/minute',
  'messages.modelCard.pricing.inputTokens': 'Input {{amount}} credits · ${{amount}}/M',
  'messages.modelCard.pricing.outputTokens': 'Output {{amount}} credits · ${{amount}}/M',
  'messages.modelCard.pricing.writeCacheInputTokens':
    'Cache write {{amount}} credits · ${{amount}}/M',
  'messages.tokenDetails.average': 'Average unit price',
  'messages.tokenDetails.input': 'Input',
  'messages.tokenDetails.inputAudio': 'Audio Input',
  'messages.tokenDetails.inputCached': 'Cached Input',
  'messages.tokenDetails.inputCitation': 'Input citation',
  'messages.tokenDetails.inputText': 'Text Input',
  'messages.tokenDetails.inputTitle': 'Input Details',
  'messages.tokenDetails.inputUncached': 'Uncached Input',
  'messages.tokenDetails.inputWriteCached': 'Input cache write',
  'messages.tokenDetails.inputTool': 'Tool Use Input',
  'messages.tokenDetails.output': 'Output',
  'messages.tokenDetails.outputAudio': 'Audio Output',
  'messages.tokenDetails.outputImage': 'Image Output',
  'messages.tokenDetails.outputText': 'Text Output',
  'messages.tokenDetails.outputTitle': 'Output Details',
  'messages.tokenDetails.reasoning': 'Deep Thinking',
  'messages.tokenDetails.speed.tps.title': 'TPS',
  'messages.tokenDetails.speed.tps.tooltip':
    'Tokens Per Second (TPS). This indicates the average speed of AI-generated content (Tokens/second), calculated from the moment the first Token is received.',
  'messages.tokenDetails.speed.ttft.title': 'TTFT',
  'messages.tokenDetails.speed.ttft.tooltip':
    'Time To First Token (TTFT). This refers to the time interval from when you send a message to when the client receives the first Token.',
  'messages.tokenDetails.title': 'Generation Details',
  'messages.tokenDetails.total': 'Total Consumption',
  'minimap.emptyPreview': '(No text content)',
  'minimap.jumpToMessage': 'Jump to message {{index}}',
  'minimap.nextMessage': 'Next message',
  'minimap.previousMessage': 'Previous message',
  'minimap.senderAssistant': 'Agent',
  'minimap.senderUser': 'You',
  'createModal.createBlank': 'Create Blank',
  'createModal.groupPlaceholder': 'Describe what this group should do...',
  'createModal.groupTitle': 'What should your group do?',
  'createModal.placeholder': 'Describe what your agent should do...',
  'createModal.title': 'What should your agent do?',
  'claudeCodeInstallGuide.actions.openDocs': 'Open Install Guide',
  'claudeCodeInstallGuide.actions.openSystemTools': 'Open System Tools',
  'claudeCodeInstallGuide.afterInstall':
    'After installing, run Claude Code once to sign in, then retry your message or click Re-detect in System Tools.',
  'claudeCodeInstallGuide.desc':
    'Claude Code needs the Claude Code CLI to run locally. Install it and make sure the `claude` command is available in your PATH.',
  'claudeCodeInstallGuide.installWithBrew': 'Homebrew',
  'claudeCodeInstallGuide.installWithNpm': 'Recommended install',
  'claudeCodeInstallGuide.menuNotification.title': 'Claude Code CLI not found',
  'claudeCodeInstallGuide.reason': 'LobeHub could not start Claude Code: {{message}}',
  'claudeCodeInstallGuide.title': 'Install Claude Code CLI',
  'cliAuthGuide.actions.openDocs': 'Open Sign-in Guide',
  'cliAuthGuide.actions.openSystemTools': 'Open System Tools',
  'cliAuthGuide.afterLogin':
    'After signing in again or refreshing credentials, retry your message. You can also re-detect in System Tools.',
  'cliAuthGuide.desc':
    '{{name}} could not continue because its sign-in session expired or the credentials are invalid.',
  'cliAuthGuide.errorDetails': 'Error details',
  'cliAuthGuide.runCommand': 'Run this in Terminal',
  'cliAuthGuide.title': 'Sign in to {{name}}',
  'cliOverloadedGuide.actions.retry': 'Retry',
  'cliOverloadedGuide.desc':
    "{{name}}'s upstream model service is temporarily overloaded. This usually clears in a moment.",
  'cliOverloadedGuide.errorDetails': 'Error details',
  'cliOverloadedGuide.retryHint':
    'Wait a few seconds and retry. If it keeps failing, the provider may be having a wider incident.',
  'cliOverloadedGuide.title': '{{name}} is temporarily overloaded',
  'cliRateLimitGuide.actions.openSystemTools': 'Open System Tools',
  'cliRateLimitGuide.actions.retry': 'Retry',
  'cliRateLimitGuide.afterReset':
    'Wait until the reset time, then retry your message. If you are using API authorization, you can also check your provider quota and billing status.',
  'cliRateLimitGuide.desc':
    '{{name}} has reached its current usage limit and cannot continue this run right now.',
  'cliRateLimitGuide.limitType': 'Limit window',
  'cliRateLimitGuide.limitTypes.weekCycle': 'Week cycle',
  'cliRateLimitGuide.relative.day_one': '{{count}} day',
  'cliRateLimitGuide.relative.day_other': '{{count}} days',
  'cliRateLimitGuide.relative.hour_one': '{{count}} hour',
  'cliRateLimitGuide.relative.hour_other': '{{count}} hours',
  'cliRateLimitGuide.relative.minute_one': '{{count}} minute',
  'cliRateLimitGuide.relative.minute_other': '{{count}} minutes',
  'cliRateLimitGuide.relative.soon': 'Resets soon',
  'cliRateLimitGuide.resetAt': 'Resets at',
  'cliRateLimitGuide.resetInApprox': 'Resets in about {{duration}}',
  'cliRateLimitGuide.title': '{{name}} usage limit reached',
  'codexInstallGuide.actions.openDocs': 'Open Install Guide',
  'codexInstallGuide.actions.openSystemTools': 'Open System Tools',
  'codexInstallGuide.afterInstall':
    'After installing, run Codex once to sign in, then retry your message or click Re-detect in System Tools.',
  'codexInstallGuide.desc':
    'Codex Agent needs the Codex CLI to run locally. Install it and make sure the codex command is available in your PATH.',
  'codexInstallGuide.installWithBrew': 'Homebrew (macOS)',
  'codexInstallGuide.installWithNpm': 'Recommended install',
  'codexInstallGuide.menuNotification.title': 'Codex CLI not found',
  'codexInstallGuide.reason': 'LobeHub could not start Codex: {{message}}',
  'codexInstallGuide.title': 'Install Codex CLI',
  'newAgent': 'Create Agent',
  'newClaudeCodeAgent': 'Add Claude Code',
  'newCodexAgent': 'Add Codex',
  'newPlatformAgent': 'Connect Agent',
  'newGroupChat': 'Create Group',

  // Op status tray (floating panel above the chat input during a run)
  'opStatusTray.status.compressing': 'Compressing context',
  'opStatusTray.status.generating': 'Generating',
  'opStatusTray.status.reasoning': 'Thinking',
  'opStatusTray.status.searching': 'Searching',
  'opStatusTray.status.toolCalling': 'Calling tools',
  'opStatusTray.cost': 'cost',
  'opStatusTray.steps': 'steps',
  'opStatusTray.tokens': 'tokens',

  // Connect agent: per-agent descriptions shown in step 0 of the connect modal
  'platformAgent.create.desc.openclaw': 'Connect to OpenClaw running on one of your devices',
  'platformAgent.create.desc.hermes': 'Connect to Hermes running on one of your devices',
  'platformAgent.create.desc.amp': 'Connect to Amp running on one of your devices',
  'platformAgent.create.desc.opencode': 'Connect to OpenCode running on one of your devices',

  // Connect agent: shared device status label (used in Select option labels)
  'platformAgent.device.online': 'Online',

  // Connect agent modal (openclaw / hermes)
  'platformAgent.create.title': 'Connect Agent',
  'platformAgent.create.step1': 'Select Agent',
  'platformAgent.create.step2': 'Select Device',
  'platformAgent.create.step3': 'Configure Agent',
  'platformAgent.create.next': 'Next',
  'platformAgent.create.back': 'Back',
  'platformAgent.create.create': 'Connect',
  'platformAgent.create.creating': 'Connecting...',
  'platformAgent.create.namePlaceholder': 'e.g. My OpenClaw Agent',
  'platformAgent.create.descriptionPlaceholder': 'Brief description (optional)',
  'platformAgent.create.fetchingProfile': 'Fetching profile...',
  'platformAgent.create.noDevices': 'No devices connected',
  'platformAgent.create.noDevicesDesktopHint':
    'Install the Desktop App — it connects automatically after login',
  'platformAgent.create.downloadDesktop': 'Download Desktop App',
  'platformAgent.create.noDevicesCliHint': 'Or connect any machine via CLI, then click Refresh:',
  'platformAgent.create.noDevicesCmd': 'lh connect',
  'platformAgent.create.refresh': 'Refresh',
  'platformAgent.create.selectDevice': 'Select a device',
  'platformAgent.create.checking': 'Checking availability...',
  'platformAgent.create.available': 'Available',
  'platformAgent.create.notInstalled': '{{name}} not installed on this device',
  'platformAgent.create.checkFailed': 'Check failed',
  'platformAgent.create.versionTooLow': 'lh version is too low',
  'platformAgent.create.versionTooLowHint': 'Update lh to the latest version:',
  'platformAgent.create.upgradeCmd': 'npm install -g @lobehub/cli',
  'platformAgent.create.comingSoon': 'Coming Soon',

  // Connect agent device guard banner
  'platformAgent.deviceGuard.deviceOffline.title': 'Device not connected',
  'platformAgent.deviceGuard.deviceOffline.desc':
    'The bound device is not connected. Run `lh connect` on that machine then refresh.',
  'platformAgent.deviceGuard.platformUnavailable.title': '{{name}} not available',
  'platformAgent.deviceGuard.platformUnavailable.desc':
    '{{name}} is not installed on the connected device.',
  'platformAgent.deviceGuard.noDevice.title': 'No device bound',
  'platformAgent.deviceGuard.noDevice.desc':
    'This agent has no bound device. Edit the agent profile to configure one.',
  'platformAgent.deviceGuard.refresh': 'Refresh',
  'platformAgent.deviceGuard.configure': 'Configure',
  'newPage': 'Create Page',
  'noAgentsYet': 'This group has no members yet. Click the + button to invite agents.',
  'noAvailableAgents': 'No members available to invite',
  'noMatchingAgents': 'No matching members found',
  'noMembersYet': "This group doesn't have any members yet. Click the + button to invite agents.",
  'noSelectedAgents': 'No members selected yet',
  'openInNewWindow': 'Open in New Window',
  'operation.contextCompression': 'Context too long, compressing history...',
  'operation.execAgentRuntime': 'Preparing response',
  'operation.execClientSubAgent': 'Running sub-agent',
  'operation.execHeterogeneousAgent': '{{name}} is running',
  'operation.heterogeneousAgentFallback': 'External agent',
  'operation.execServerAgentRuntime':
    'Task is running in the server. You are safe to leave this page',
  'operation.sendMessage': 'Sending message',
  'owner': 'Group owner',
  'pageCopilot.title': 'Page Agent',
  'pageCopilot.welcome': `**Clearer, sharper writing**\n\nDraft, rewrite, or polish—tell me your intent and I'll refine the rest.`,
  'pageSelection.lines': 'Lines {{start}}-{{end}}',
  'pageSelection.reference': 'Selected Text',
  'pin': 'Pin',
  'pinOff': 'Unpin',
  'rag.referenceChunks': 'Reference Source',
  'rag.userQuery.actions.delete': 'Delete Query Rewrite',
  'rag.userQuery.actions.regenerate': 'Regenerate Query',
  'regenerate': 'Regenerate',
  'roleAndArchive': 'Agent Profile & History',
  'memory.effort.desc': 'Control how aggressively the AI retrieves and updates memory.',
  'memory.effort.high.title': 'High',
  'memory.effort.low.title': 'Low',
  'memory.effort.medium.title': 'Medium',
  'memory.effort.title': 'Aggressiveness',
  'memory.off.desc': 'AI will not search, create, or update memories in this conversation.',
  'memory.off.title': 'Disable Memory Tool',
  'memory.on.desc': 'Allow AI to actively search and manage your memories during conversation.',
  'memory.on.title': 'Enable Memory Tool',
  'memory.title': 'Memory',
  'search.grounding.imageSearchQueries': 'Image Search Keywords',
  'search.grounding.imageTitle': 'Found {{count}} images',
  'chatMode.agent': 'Agent',
  'plus.search.appSearch': 'Smart Search',
  'plus.search.appSearchDesc':
    'LobeHub optimized search service, delivering best retrieval results.',
  'plus.search.modelSearch': 'Provider Search',
  'plus.search.modelSearchDesc': 'May cause unexpected behavior when enabled, not recommended.',
  'plus.search.off': 'Off',
  'plus.search.offDesc': '',
  'plus.addAttachments': 'Attachments',
  'plus.addSkills': 'Add Skills...',
  'plus.title': 'Add',
  'plus.tooltip': 'Add files, skills, and more context...',
  'chatMode.agentCap.env': 'Runtime env',
  'chatMode.agentCap.files': 'File access',
  'chatMode.agentCap.memory': 'Memory',
  'chatMode.agentCap.tools': 'Tool calls',
  'chatMode.agentCap.web': 'Web search',
  'chatMode.agentDesc': 'Agent can use tools and environment to complete tasks automatically',
  'chatMode.chat': 'Chat',
  'chatMode.chatDesc': 'No runtime environment or autonomy; uses fewer tokens',
  'chatMode.select': 'Switch Mode',
  'runtimeEnv.mode.cloud': 'Cloud Sandbox',
  'runtimeEnv.mode.cloudDesc': 'Run in a secure cloud sandbox',
  'runtimeEnv.mode.local': 'Local',
  'runtimeEnv.mode.localDesc': 'Access local files and commands',
  'runtimeEnv.mode.none': 'Off',
  'runtimeEnv.mode.noneDesc': 'Disable runtime environment',
  'runtimeEnv.selectMode': 'Select Runtime Environment',
  'runtimeEnv.title': 'Runtime Environment',
  'search.grounding.searchQueries': 'Search Keywords',
  'search.grounding.title': 'Found {{count}} results',
  'search.mode.auto.desc': 'Search the web automatically when needed.',
  'search.mode.auto.title': 'Auto',
  'search.mode.off.desc': 'Disable web access.',
  'search.mode.off.title': 'Off',
  'search.mode.on.desc': 'Always search the web for the latest information.',
  'search.mode.on.title': 'Always on',
  'search.mode.useModelBuiltin': 'Use model built-in web search',
  'search.searchModel.desc':
    'The current model does not support function calls, so it needs to be paired with a model that does support function calls for online searching.',
  'search.searchModel.title': 'Search helper model',
  'search.title': 'Web search',
  'searchAgentPlaceholder': 'Search agents...',
  'searchAgents': 'Search agents...',
  'selectedAgents': 'Selected agents',
  'followUpPlaceholder': 'Follow up.',
  'followUpPlaceholderHeterogeneous': 'Follow up.',
  'sendPlaceholder': 'Ask, create, or start a task, <hotkey><hotkey/>',
  'sendPlaceholderChat': 'Ask, search, or brainstorm, <hotkey><hotkey/>',
  'sendPlaceholderChatWithAgentAssignment':
    'Ask, search, or brainstorm. @ to bring in other agents.',
  'sendPlaceholderHeterogeneous': 'Describe a task or ask a question to {{name}}',
  'sendPlaceholderWithAgentAssignment':
    'Ask, create, or start a task. @ to assign tasks to other agents.',
  'sessionGroup.config': 'Category Management',
  'sessionGroup.confirmRemoveGroupAlert':
    'This category is about to be deleted. After deletion, the agents in this category will be moved to the default list. Please confirm your operation.',
  'sessionGroup.createAgentSuccess': 'Agent created successfully',
  'sessionGroup.createGroup': 'Add New Category',
  'sessionGroup.createGroupFailed': 'Failed to create category',
  'sessionGroup.createGroupSuccess': 'Category created successfully',
  'sessionGroup.createSuccess': 'Created successfully',
  'sessionGroup.creatingAgent': 'Creating agent...',
  'sessionGroup.groupName': 'Category Name',
  'sessionGroup.inputPlaceholder': 'Please enter category name...',
  'sessionGroup.moveGroup': 'Move to Category',
  'sessionGroup.newGroup': 'New Category',
  'sessionGroup.noAvailableAgents': 'No available agents',
  'sessionGroup.noMatchingAgents': 'No matching agents found',
  'sessionGroup.noSelectedAgents': 'Please select agents',
  'sessionGroup.rename': 'Rename Category',
  'sessionGroup.renameSuccess': 'Renamed successfully',
  'sessionGroup.searchAgents': 'Search agents',
  'sessionGroup.selectedAgents': 'Selected agents ({{count}})',
  'sessionGroup.sortSuccess': 'Reorder successful',
  'sessionGroup.sorting': 'Category sorting updating...',
  'sessionGroup.tooLong': 'Category name length should be between 1-20',
  'shareModal.copy': 'Copy',
  'shareModal.copyLink': 'Copy Link',
  'shareModal.copyLinkSuccess': 'Share link copied to clipboard',
  'shareModal.download': 'Download Screenshot',
  'shareModal.downloadError': 'Download failed',
  'shareModal.downloadFile': 'Download File',
  'shareModal.downloadPdf': 'Download PDF',
  'shareModal.downloadSuccess': 'Download successful',
  'shareModal.exportMode.full': 'Default',
  'shareModal.exportMode.label': 'Export Mode',
  'shareModal.exportMode.simple': 'OpenAI Compatible',
  'shareModal.exportPdf': 'Export as PDF',
  'shareModal.exportTitle': 'Default Title',
  'shareModal.generatePdf': 'Generate PDF',
  'shareModal.generatingPdf': 'Generating PDF...',
  'shareModal.imageType': 'Image Format',
  'shareModal.includeTool': 'Include Skill messages',
  'shareModal.includeUser': 'Include User Messages',
  'shareModal.link': 'Link',
  'shareModal.link.linkHint': 'Anyone with the link can view this topic',
  'shareModal.link.noTopic': 'Start a conversation first to share',
  'shareModal.link.permissionLink': 'Anyone with the link',
  'shareModal.link.permissionPrivate': 'Private',
  'shareModal.link.privateHint': 'Only you can access this link',
  'shareModal.link.updateError': 'Failed to update sharing settings',
  'shareModal.link.visibilityUpdated': 'Visibility updated',
  'shareModal.loadingPdf': 'Loading PDF...',
  'shareModal.noPdfData': 'No PDF data available',
  'shareModal.pdf': 'PDF',
  'shareModal.pdfErrorDescription': 'An error occurred while generating the PDF, please try again',
  'shareModal.pdfGenerationError': 'PDF generation failed',
  'shareModal.pdfReady': 'PDF is ready',
  'shareModal.popover.export': 'Export',
  'shareModal.popover.privacyWarning.confirm': 'Share & copy link',
  'shareModal.popover.privacyWarning.content':
    "Anyone with the link can open this whole conversation, so take a moment to make sure there's nothing here you'd rather keep private. A shared topic may include:",
  'shareModal.popover.privacyWarning.doNotShowAgain': "Don't show this again",
  'shareModal.popover.privacyWarning.items.credentials': 'Credentials',
  'shareModal.popover.privacyWarning.items.files': 'Uploaded files',
  'shareModal.popover.privacyWarning.items.images': 'Images',
  'shareModal.popover.privacyWarning.items.toolCalls': 'Connector calling details',
  'shareModal.popover.privacyWarning.note': 'You can switch back to private anytime.',
  'shareModal.popover.privacyWarning.title': 'Before you share this link',
  'shareModal.popover.title': 'Share Topic',
  'shareModal.popover.visibility': 'Visibility',
  'shareModal.regeneratePdf': 'Regenerate PDF',
  'shareModal.screenshot': 'Screenshot',
  'shareModal.settings': 'Export Settings',
  'shareModal.text': 'Text',
  'shareModal.title': 'Export',
  'shareModal.widthMode.label': 'Width Mode',
  'shareModal.widthMode.narrow': 'Narrow',
  'shareModal.widthMode.wide': 'Wide',
  'shareModal.withBackground': 'Include Background Image',
  'shareModal.withFooter': 'Include Footer',
  'shareModal.withPluginInfo': 'Include Skill Information',
  'shareModal.withRole': 'Include Message Role',
  'shareModal.withSystemRole': 'Include Agent Profile',
  'sharePage.actions.findMord': 'Find more',
  'sharePage.actions.tryItYourself': 'Try it yourself',
  'sharePage.error.forbidden.subtitle': 'This share is private and not accessible.',
  'sharePage.error.forbidden.title': 'Access Denied',
  'sharePage.error.notFound.subtitle': 'This topic does not exist or has been removed.',
  'sharePage.error.notFound.title': 'Topic Not Found',
  'sharePage.error.unauthorized.action': 'Sign In',
  'sharePage.error.unauthorized.subtitle': 'Please sign in to view this shared topic.',
  'sharePage.error.unauthorized.title': 'Sign In Required',
  'sharePage.menu.copyLink': 'Copy Link',
  'sharePage.menu.goToLobeHub': 'Go to LobeHub',
  'sharePage.menu.more': 'More',
  'sharePage.menu.report': 'Report',
  'sharePageDisclaimer':
    "Shared by a user. The content reflects their views, not LobeHub's, and LobeHub takes no responsibility for it.",
  'signalCallbacks.collapse': 'Hide details',
  'signalCallbacks.empty': 'No callback messages',
  'signalCallbacks.expand': 'Show details',
  'signalCallbacks.title': '{{tool}} · {{count}} callback updates',
  'stt.action': 'Voice Input',
  'stt.loading': 'Recognizing...',
  'stt.prettifying': 'Polishing...',
  'supervisor.label': 'Supervisor',
  'supervisor.todoList.allComplete': 'All tasks completed',
  'supervisor.todoList.title': 'Tasks Completed',
  'tab.groupProfile': 'Group Profile',
  'tab.integration': 'Channels',
  'tab.profile': 'Agent Profile',
  'tab.search': 'Search',
  'tab.tasks': 'Tasks',
  'task.activity.calling': 'Calling Skill...',
  'task.activity.clientExecuting': 'Executing locally...',
  'task.activity.generating': 'Generating response...',
  'task.activity.gotResult': 'Tool result received',
  'task.activity.toolCalling': 'Calling {{toolName}}...',
  'task.activity.toolResult': '{{toolName}} result received',
  'task.batchTasks': '{{count}} Batch Subtasks',
  'task.groupTasks': '{{count}} Parallel Tasks',
  'task.groupTasksTitle': '{{agents}} and {{count}} agents tasks',
  'task.groupTasksTitleSimple': '{{agents}} {{count}} tasks',
  'task.instruction': 'Task Instruction',
  'task.intermediateSteps': '{{count}} intermediate steps',
  'task.metrics.duration': '(took {{duration}})',
  'task.metrics.stepsShort': 'steps',
  'task.metrics.toolCallsShort': 'skill uses',
  'task.status.cancelled': 'Task Cancelled',
  'task.status.failed': 'Task Failed',
  'task.status.fetchingDetails': 'Fetching details...',
  'task.status.initializing': 'Initializing task...',
  'task.subtask': 'Subtask',
  'taskSchedule.advancedSettings': 'Advanced settings',
  'taskSchedule.clear': 'Clear',
  'taskSchedule.continuous': 'Continuous',
  'taskSchedule.enable': 'Enable automation',
  'taskSchedule.every': 'Every',
  'taskSchedule.frequency': 'Frequency',
  'taskSchedule.heading': 'Automation',
  'taskSchedule.hours': 'Hours',
  'taskSchedule.intervalLabel': 'Run interval',
  'taskSchedule.intervalSuffix': 'each time',
  'taskSchedule.intervalTab': 'Heartbeat',
  'taskSchedule.maxExecutions': 'Max runs',
  'taskSchedule.maxExecutionsPlaceholder': 'Unlimited',
  'taskSchedule.minutes': 'Minutes',
  'taskSchedule.nextRun': 'Next run',
  'taskSchedule.nextRun.format': 'MMM D HH:mm',
  'taskSchedule.scheduleType.daily': 'Daily',
  'taskSchedule.scheduleType.hourly': 'Hourly',
  'taskSchedule.scheduleType.weekly': 'Weekly',
  'taskSchedule.scheduler': 'Scheduler',
  'taskSchedule.schedulerTab': 'Scheduled',
  'taskSchedule.startScheduling': 'Start scheduling',
  'taskSchedule.summary.daily': 'Daily at {{time}}',
  'taskSchedule.summary.disabled': 'Automation is off',
  'taskSchedule.summary.everyNHours': 'Every {{count}} hours',
  'taskSchedule.summary.everyNHoursHalfPast': 'Every {{count}} hours at half past',
  'taskSchedule.summary.heartbeat': 'Runs every {{interval}}',
  'taskSchedule.summary.hourly': 'Every hour',
  'taskSchedule.summary.hourlyHalfPast': 'Every hour at half past',
  'taskSchedule.summary.weekly': 'Every {{days}} at {{time}}',
  'taskSchedule.tag.add': 'Set schedule',
  'taskSchedule.tag.every': 'Every {{interval}}',
  'taskSchedule.tag.heartbeat': 'Heartbeat · {{every}}',
  'taskSchedule.tag.schedule': 'Schedule · {{schedule}}{{timezone}}',
  'taskSchedule.time': 'Time',
  'taskSchedule.timezone': 'Timezone',
  'taskSchedule.timezoneSearchEmpty': 'No matching timezone',
  'taskSchedule.timezoneSearchPlaceholder': 'Search timezone',
  'taskSchedule.title': 'Schedule',
  'taskSchedule.unit.hour_one': '{{count}} hr',
  'taskSchedule.unit.hour_other': '{{count}} hrs',
  'taskSchedule.unit.minute_one': '{{count}} min',
  'taskSchedule.unit.minute_other': '{{count}} mins',
  'taskSchedule.unit.second_one': '{{count}} sec',
  'taskSchedule.unit.second_other': '{{count}} secs',
  'taskSchedule.weekday': 'Weekday',
  'taskSchedule.weekdays.fri': 'Fri',
  'taskSchedule.weekdays.mon': 'Mon',
  'taskSchedule.weekdays.sat': 'Sat',
  'taskSchedule.weekdays.sun': 'Sun',
  'taskSchedule.weekdays.thu': 'Thu',
  'taskSchedule.weekdays.tue': 'Tue',
  'taskSchedule.weekdays.wed': 'Wed',
  'taskDetail.activities': 'Activities',
  'taskDetail.activitiesEmpty': 'No activity yet',
  'taskDetail.artifacts': 'Artifacts',
  'taskDetail.untitled': 'Untitled',
  'taskDetail.artifactMenu.delete': 'Remove from task',
  'taskDetail.artifactMenu.deleteConfirm.content':
    'This artifact will no longer appear in this task workspace.',
  'taskDetail.artifactMenu.deleteConfirm.ok': 'Remove',
  'taskDetail.artifactMenu.deleteConfirm.title': 'Remove this artifact?',
  'taskDetail.artifactSize': '{{value}} chars',
  'taskDetail.activities.agentTag': 'Agent',
  'taskDetail.activities.fallback.brief': 'posted a brief',
  'taskDetail.activities.fallback.comment': 'left a comment',
  'taskDetail.activities.fallback.created': 'created the task',
  'taskDetail.activities.fallback.topic': 'started a topic',
  'taskDetail.blockedBy': 'Blocked by {{id}}',
  'taskDetail.comment.cancel': 'Cancel',
  'taskDetail.comment.delete': 'Delete',
  'taskDetail.comment.deleteConfirm.content': 'This comment will be permanently removed.',
  'taskDetail.comment.deleteConfirm.ok': 'Delete',
  'taskDetail.comment.deleteConfirm.title': 'Delete this comment?',
  'taskDetail.comment.edit': 'Edit',
  'taskDetail.comment.save': 'Save',
  'taskDetail.commentPlaceholder':
    'Leave feedback to guide the agent — your comments shape the next run...',
  'taskDetail.replyInThread': 'Reply in this thread',
  'taskDetail.replyPlaceholder': 'Reply in this thread...',
  'taskDetail.sendFollowUp': 'Send follow up message',
  'taskDetail.deleteConfirm.content': 'This action cannot be undone.',
  'taskDetail.deleteConfirm.ok': 'Delete',
  'taskDetail.deleteConfirm.title': 'Delete this task?',
  'taskDetail.instruction': 'Instruction',
  'taskDetail.modelConfig': 'Model Override',
  'taskDetail.saveModelConfig': 'Save',
  'taskDetail.instructionPlaceholder': 'Add task instruction...',
  'taskDetail.latestActivity.brief': 'Brief: {{title}}',
  'taskDetail.latestActivity.briefWithAction': '{{title}} - {{action}}',
  'taskDetail.latestActivity.briefWithType': 'Brief ({{type}}): {{title}}',
  'taskDetail.latestActivity.briefWithTypeOnly': 'Brief ({{type}})',
  'taskDetail.latestActivity.topic': 'Topic: {{title}}',
  'taskDetail.latestActivity.topicWithSeq': 'Topic #{{seq}}: {{title}}',
  'taskDetail.latestActivity.untitledTopic': 'Untitled topic',
  'taskDetail.cancelSchedule': 'Cancel schedule',
  'taskDetail.nextRunCountdown': 'Next run in {{countdown}}',
  'taskDetail.pauseTask': 'Pause task',
  'taskDetail.rerunTask': 'Re-run task',
  'taskDetail.runNow': 'Run now',
  'taskDetail.runTask': 'Run',
  'taskDetail.stopTask': 'Stop task',
  'taskDetail.navigation': 'Navigation',
  'taskDetail.notFound.backToTasks': 'Back to all tasks',
  'taskDetail.notFound.desc':
    "This task may have been deleted, or you don't have permission to view it.",
  'taskDetail.notFound.title': 'Task not found',
  'taskDetail.subIssueOf': 'Sub-issue of',
  'taskDetail.priority.high': 'High',
  'taskDetail.priority.low': 'Low',
  'taskDetail.priority.none': 'No priority',
  'taskDetail.priority.normal': 'Normal',
  'taskDetail.priority.urgent': 'Urgent',
  'taskDetail.properties': 'Properties',
  'taskDetail.status.backlog': 'Backlog',
  'taskDetail.status.canceled': 'Canceled',
  'taskDetail.status.completed': 'Completed',
  'taskDetail.status.failed': 'Failed',
  'taskDetail.status.paused': 'Pending review',
  'taskDetail.status.running': 'In progress',
  'taskDetail.status.scheduled': 'Scheduled',
  'taskDetail.subtasks': 'Subtasks',
  'taskDetail.addSubtask': 'Add sub-task',
  'taskDetail.subtaskInstructionPlaceholder': 'Describe the sub-task...',
  'taskDetail.runAll': 'Run all',
  'taskDetail.runAll.title': 'Run subtasks in dependency order',
  'taskDetail.runAll.description':
    'Subtasks will run layer by layer. Each layer waits for the previous one to finish. Tasks with no dependencies run in layer 1.',
  'taskDetail.runAll.layer': 'Layer {{index}}',
  'taskDetail.runAll.layerHint.first': 'Starts immediately',
  'taskDetail.runAll.layerHint.next': 'Waits for layer {{prev}} to finish',
  'taskDetail.runAll.skipped.alreadyDone':
    '{{count}} task(s) already completed or canceled — skipped',
  'taskDetail.runAll.skipped.ineligible': '{{count}} task(s) running or scheduled — skipped',
  'taskDetail.runAll.skipped.blockedExternally':
    '{{count}} task(s) waiting on a blocker outside this batch — will run automatically when unblocked',
  'taskDetail.runAll.cycleWarning':
    'Circular dependency detected. Tasks involved in or blocked by the cycle will not run: {{members}}',
  'taskDetail.runAll.empty':
    'Nothing to run — every subtask is already completed, in flight, or stuck in a cycle.',
  'taskDetail.runAll.confirm': 'Run {{count}} subtask(s)',
  'taskDetail.runAll.cancel': 'Cancel',
  'taskDetail.runAll.kickedOff': 'Started {{count}} subtask(s); downstream layers will follow.',
  'taskDetail.runAll.partialFailure': 'Started {{ok}} of {{total}} subtask(s); {{failed}} failed.',
  'taskDetail.runAll.loading': 'Loading subtask plan...',
  'taskDetail.reassignDisabled': 'Cannot reassign agent while task is running',
  'taskDetail.titlePlaceholder': 'Task title',
  'taskDetail.topicDrawer.untitled': 'Untitled',
  'taskDetail.updateFailed': 'Failed to update task',

  'createTask.assignee': 'Assignee',
  'createTask.collapse': 'Hide input',
  'createTask.expandToInline': 'Dock to page',
  'createTask.instructionPlaceholder': 'Add task instruction...',
  'createTask.submit': 'Create task',
  'createTask.titlePlaceholder': 'Task title',
  'taskList.activeTasks': 'Active Tasks',
  'taskList.all': 'All tasks',
  'taskList.breadcrumb.task': 'Task',
  'taskList.empty': 'No tasks yet',
  'taskList.emptyHero.greeting': 'What should we tackle today?',
  'taskList.emptyHero.subtitle': 'Describe a task for your agent, or start from a template below.',
  'taskList.emptyHero.templatesTitle': 'Templates picked for you',
  'taskList.form.grouping': 'Grouping',
  'taskList.form.orderCompletedByRecency': 'Sort completed tasks by recency',
  'taskList.form.ordering': 'Ordering',
  'taskList.form.showCompleted': 'Show completed & canceled',
  'taskList.form.subGrouping': 'Sub-grouping',
  'taskList.hiddenCompleted.count_one': '{{count}} task',
  'taskList.hiddenCompleted.count_other': '{{count}} tasks',
  'taskList.hiddenCompleted.show': 'Show',
  'taskList.hiddenCompleted.suffix': 'hidden by display options',
  'taskList.groupBy.assignee': 'Assignee',
  'taskList.groupBy.none': 'No grouping',
  'taskList.groupBy.priority': 'Priority',
  'taskList.groupBy.status': 'Status',
  'taskList.orderBy.assignee': 'Assignee',
  'taskList.orderBy.createdAt': 'Created at',
  'taskList.orderBy.priority': 'Priority',
  'taskList.orderBy.status': 'Status',
  'taskList.orderBy.title': 'Title',
  'taskList.orderBy.updatedAt': 'Updated at',
  'taskList.title': 'Tasks',
  'taskList.unassigned': 'Unassigned',
  'taskList.unassignedHint': 'Lobe AI will run this task when no assignee is set',
  'taskList.assigneeSearch.empty': 'No matching agent',
  'taskList.assigneeSearch.placeholder': 'Search agent...',
  'taskList.contextMenu.copyConfirm': 'Copy',
  'taskList.contextMenu.copyDescription':
    'Clone this task (and all its subtasks) into another workspace. Status resets to backlog.',
  'taskList.contextMenu.copyFailed': 'Failed to copy task',
  'taskList.contextMenu.copyId': 'Copy ID',
  'taskList.contextMenu.copyIdSuccess': 'ID copied',
  'taskList.contextMenu.copyLink': 'Copy Link',
  'taskList.contextMenu.copyLinkSuccess': 'Link copied',
  'taskList.contextMenu.copySuccess': 'Task copied',
  'taskList.contextMenu.copyTitle': 'Copy task',
  'taskList.contextMenu.copyTo': 'Copy to…',
  'taskList.contextMenu.priority': 'Priority',
  'taskList.contextMenu.runNow': 'Run now',
  'taskList.contextMenu.status': 'Status',
  'taskList.contextMenu.transferConfirm': 'Transfer',
  'taskList.contextMenu.transferDescription':
    'Move this task (and all its subtasks) to another workspace. Identifiers will be re-assigned.',
  'taskList.contextMenu.transferFailed': 'Failed to transfer task',
  'taskList.contextMenu.transferSuccess': 'Task transferred',
  'taskList.contextMenu.transferTitle': 'Transfer task',
  'taskList.contextMenu.transferTo': 'Transfer to…',
  'taskList.contextMenu.transferWarning':
    'Cross-workspace references like assigned agent and active topic will be cleared.',
  'taskList.kanban.addTask': 'Create task',
  'taskList.kanban.backlog': 'Backlog',
  'taskList.kanban.canceled': 'Canceled',
  'taskList.kanban.done': 'Done',
  'taskList.kanban.emptyColumn': 'No tasks',
  'taskList.kanban.hiddenColumns': 'Hidden columns',
  'taskList.kanban.hideColumn': 'Hide column',
  'taskList.kanban.needsInput': 'Pending review',
  'taskList.kanban.running': 'In progress',
  'taskList.kanban.showColumn': 'Show column',
  'taskList.view.board': 'Board',
  'taskList.view.list': 'List',
  'taskList.viewAll': 'View all',
  'thread.closeSubagentThread': 'Hide Detail',
  'thread.divider': 'Subtopic',
  'thread.openSubagentThread': 'View Detail',
  'thread.subagentMetrics.modelLabel': 'Model',
  'thread.subagentMetrics.toolCalls_one': '{{count}} tool call',
  'thread.subagentMetrics.toolCalls_other': '{{count}} tool calls',
  'thread.subagentMetrics.tokens': '{{count}} tokens',
  'thread.subagentMetrics.toolsShort_one': '{{count}} tool',
  'thread.subagentMetrics.toolsShort_other': '{{count}} tools',
  'thread.subagentReadOnlyHint':
    'SubAgent conversations are read-only — execution is driven by the parent agent.',
  'thread.threadMessageCount': '{{messageCount}} messages',
  'thread.title': 'Subtopic',
  'todoProgress.allCompleted': 'All tasks completed',
  'todoProgress.title': 'Tasks',
  'toggleWideScreen.off': 'Turn off widescreen mode',
  'toggleWideScreen.on': 'Turn on widescreen mode',
  'tokenDetails.chats': 'Chat Messages',
  'tokenDetails.historySummary': 'History Summary',
  'tokenDetails.rest': 'Remaining',
  'tokenDetails.supervisor': 'Group Host',
  'tokenDetails.systemRole': 'Role Settings',
  'tokenDetails.title': 'Context Details',
  'tokenDetails.tools': 'Skill Settings',
  'tokenDetails.total': 'Total Available',
  'tokenDetails.used': 'Total Used',
  'tokenTag.overload': 'Exceeded Limit',
  'tokenTag.remained': 'Remaining',
  'tokenTag.used': 'Used',
  'tool.intervention.approvalMode': 'Approval Mode',
  'tool.intervention.approve': 'Approve',
  'tool.intervention.optionApprove': 'Approve',
  'tool.intervention.rememberSimilar': "Don't ask again for similar actions",
  'tool.intervention.submit': 'Submit',
  'tool.intervention.mode.allowList': 'Allow List',
  'tool.intervention.mode.allowListDesc': 'Only automatically execute approved tools',
  'tool.intervention.mode.autoRun': 'Auto Approve',
  'tool.intervention.mode.autoRunDesc': 'Automatically approve all tool executions',
  'tool.intervention.mode.manual': 'Manual',
  'tool.intervention.mode.manualDesc': 'Manual approval required for each invocation',
  'tool.intervention.onboarding.agentIdentity.editHint':
    'You can edit the name or avatar directly below.',
  'tool.intervention.onboarding.agentIdentity.namePlaceholder': 'Agent name',
  'tool.intervention.onboarding.agentIdentity.title': "I'll update my name and avatar",
  'tool.intervention.onboarding.agentIdentity.titleAvatarOnly': "I'll update my avatar",
  'tool.intervention.onboarding.agentIdentity.titleNameOnly': "I'll update my name",
  'tool.intervention.onboarding.userProfile.applyHint':
    'These details will be saved to your profile after approval.',
  'tool.intervention.onboarding.userProfile.description':
    'Approving this change updates your onboarding profile so the Agent can tailor future replies.',
  'tool.intervention.onboarding.userProfile.eyebrow': 'Onboarding approval',
  'tool.intervention.onboarding.userProfile.fullName': 'Full name',
  'tool.intervention.onboarding.userProfile.responseLanguage': 'Response language',
  'tool.intervention.onboarding.userProfile.title': 'Confirm your profile update',
  'tool.intervention.reject': 'Reject',
  'tool.intervention.rejectOnly': 'Reject',
  'tool.intervention.rejectReasonPlaceholder': "Tell the agent what you'd like instead",
  'tool.intervention.rejectedWithReason': 'This Skill call was rejected: {{reason}}',
  'tool.intervention.pending': 'Pending',
  'tool.intervention.scrollToIntervention': 'View',
  'tool.intervention.viewParameters': 'View parameters ({{count}})',
  'tool.intervention.toolAbort': 'You canceled this Skill call',
  'tool.intervention.toolRejected': 'This Skill call was rejected',
  'toolAuth.authorize': 'Authorize',
  'toolAuth.authorizing': 'Authorizing...',
  'toolAuth.hint':
    "When Skills aren't authorized or configured, the related Skills won't work and the Agent's capabilities may be limited or run into errors.",
  'task.title': 'Tasks',
  'toolAuth.signIn': 'Sign In',
  'toolAuth.title': 'Authorize Skills for this Agent',
  'topic.checkOpenNewTopic': 'Start a new topic?',
  'topic.checkSaveCurrentMessages': 'Do you want to save the current conversation as a topic?',
  'topic.openNewTopic': 'Open New Topic',
  'topic.defaultTitle': 'Untitled Topic',
  'topic.recent': 'Recent Topics',
  'topic.saveCurrentMessages': 'Save current session as topic',
  'topic.viewAll': 'View All Topics',
  'translate.action': 'Translate',
  'translate.clear': 'Clear Translation',
  'tts.action': 'Text-to-Speech',
  'tts.clear': 'Clear Speech',
  'untitledAgent': 'Untitled Agent',
  'untitledGroup': 'Untitled Group',
  'updateAgent': 'Update Agent Information',
  'upload.action.fileUpload': 'Upload File',
  'upload.action.fileOrImageUpload': 'Upload File or Image',
  'upload.action.folderUpload': 'Upload Folder',
  'upload.action.imageDisabled':
    'The current model does not support visual recognition. Please switch models to use this feature.',
  'upload.action.imageUpload': 'Upload Image',
  'upload.action.tooltip': 'Upload',
  'upload.clientMode.actionFiletip': 'Upload File',
  'upload.clientMode.actionTooltip': 'Upload',
  'upload.clientMode.disabled':
    'The current model does not support visual recognition and file analysis. Please switch models to use this feature.',
  'upload.clientMode.fileNotSupported':
    'File uploads are not supported in browser mode; only images are allowed.',
  'upload.clientMode.visionNotSupported':
    'The current model does not support visual recognition. Please switch to a different model to use this feature.',
  'upload.preview.prepareTasks': 'Preparing chunks...',
  'upload.preview.status.pending': 'Preparing to upload...',
  'upload.preview.status.processing': 'Processing file...',
  'upload.validation.unsupportedFileType':
    'Unsupported file type: {{files}}. Supported images: JPG, PNG, GIF, WebP. Supported documents include PDF, Word, Excel, PowerPoint, Markdown, text, CSV, JSON, and code files.',
  'upload.validation.videoSizeExceeded':
    'Video file size must not exceed {{maxSize}}. Current file size is {{actualSize}}.',
  'viewMode.fullWidth': 'Full Width',
  'viewMode.normal': 'Standard',
  'viewMode.wideScreen': 'Widescreen',
  'viewSwitcher.chat': 'Chat',
  'viewSwitcher.page': 'Page',
  'viewSwitcher.task': 'Task',
  'workflow.failedSuffix': '(failed)',
  'workflow.summaryFailed': '{{count}} failed',
  'workflow.summaryMoreTools': '{{count}} tool kinds',
  'workflow.summaryTotalCalls': '{{count}} calls total',
  'workflow.thoughtForDuration': 'Thought for {{duration}}',
  'workflow.toolDisplayName.activateDevice': 'Activated device',
  'workflow.toolDisplayName.activateSkill': 'Activated a skill',
  'workflow.toolDisplayName.activateTools': 'Activated tools',
  'workflow.toolDisplayName.addActivityMemory': 'Saved memory',
  'workflow.toolDisplayName.addContextMemory': 'Saved memory',
  'workflow.toolDisplayName.addExperienceMemory': 'Saved memory',
  'workflow.toolDisplayName.addIdentityMemory': 'Saved memory',
  'workflow.toolDisplayName.addPreferenceMemory': 'Saved memory',
  'workflow.toolDisplayName.calculate': 'Calculated',
  'workflow.toolDisplayName.callAgent': 'Called an agent',
  'workflow.toolDisplayName.callMcpTool': 'Called MCP tool',
  'workflow.toolDisplayName.callSubAgent': 'Called a sub-agent',
  'workflow.toolDisplayName.clearTodos': 'Cleared todos',
  'workflow.toolDisplayName.copyDocument': 'Copied a document',
  'workflow.toolDisplayName.crawlMultiPages': 'Crawled pages',
  'workflow.toolDisplayName.crawlSinglePage': 'Crawled a page',
  'workflow.toolDisplayName.createAgent': 'Created an agent',
  'workflow.toolDisplayName.createDocument': 'Created a document',
  'workflow.toolDisplayName.createPlan': 'Created a plan',
  'workflow.toolDisplayName.createTodos': 'Created todos',
  'workflow.toolDisplayName.deleteAgent': 'Deleted an agent',
  'workflow.toolDisplayName.deleteDocument': 'Deleted a document',
  'workflow.toolDisplayName.replaceDocumentContent': 'Replaced document content',
  'workflow.toolDisplayName.editLocalFile': 'Edited a file',
  'workflow.toolDisplayName.editTitle': 'Edited title',
  'workflow.toolDisplayName.evaluate': 'Evaluated expression',
  'workflow.toolDisplayName.execScript': 'Executed a script',
  'workflow.toolDisplayName.execute': 'Executed calculation',
  'workflow.toolDisplayName.executeCode': 'Executed code',
  'workflow.toolDisplayName.finishOnboarding': 'Finished onboarding',
  'workflow.toolDisplayName.getCommandOutput': 'Read command output',
  'workflow.toolDisplayName.getDocument': 'Read a document',
  'workflow.toolDisplayName.getPageContent': 'Read Page content',
  'workflow.toolDisplayName.getTopicContext': 'Read topic context',
  'workflow.toolDisplayName.globLocalFiles': 'Searched files',
  'workflow.toolDisplayName.grepContent': 'Searched content',
  'workflow.toolDisplayName.importFromMarket': 'Imported from market',
  'workflow.toolDisplayName.importSkill': 'Imported a skill',
  'workflow.toolDisplayName.initPage': 'Initialized Page',
  'workflow.toolDisplayName.killCommand': 'Stopped a command',
  'workflow.toolDisplayName.listDocuments': 'Listed documents',
  'workflow.toolDisplayName.listLocalFiles': 'Listed files',
  'workflow.toolDisplayName.listOnlineDevices': 'Listed devices',
  'workflow.toolDisplayName.modifyNodes': 'Modified Page',
  'workflow.toolDisplayName.moveLocalFiles': 'Moved files',
  'workflow.toolDisplayName.readDocument': 'Read a document',
  'workflow.toolDisplayName.readKnowledge': 'Read knowledge',
  'workflow.toolDisplayName.readLocalFile': 'Read a file',
  'workflow.toolDisplayName.removeDocument': 'Removed a document',
  'workflow.toolDisplayName.removeIdentityMemory': 'Removed memory',
  'workflow.toolDisplayName.renameDocument': 'Renamed a document',
  'workflow.toolDisplayName.renameLocalFile': 'Renamed a file',
  'workflow.toolDisplayName.replaceText': 'Replaced text',
  'workflow.toolDisplayName.runCommand': 'Ran a command',
  'workflow.toolDisplayName.saveUserQuestion': 'Recorded info',
  'workflow.toolDisplayName.search': 'Searched the web',
  'workflow.toolDisplayName.showAgentMarketplace': 'Assembled agent team',
  'workflow.toolDisplayName.submitAgentPick': 'Picked agents',
  'workflow.toolDisplayName.searchAgent': 'Searched agents',
  'workflow.toolDisplayName.searchKnowledgeBase': 'Searched knowledge base',
  'workflow.toolDisplayName.searchLocalFiles': 'Searched files',
  'workflow.toolDisplayName.searchSkill': 'Searched skills',
  'workflow.toolDisplayName.searchUserMemory': 'Searched memory',
  'workflow.toolDisplayName.solve': 'Solved equation',
  'workflow.toolDisplayName.updateAgent': 'Updated an agent',
  'workflow.toolDisplayName.updateDocument': 'Updated a document',
  'workflow.toolDisplayName.updateIdentityMemory': 'Updated memory',
  'workflow.toolDisplayName.updateLoadRule': 'Updated load rule',
  'workflow.toolDisplayName.updatePlan': 'Updated plan',
  'workflow.toolDisplayName.updateTodos': 'Updated todos',
  'workflow.toolDisplayName.writeDocument': 'Wrote a document',
  'workflow.toolDisplayName.writeLocalFile': 'Wrote a file',
  'workflow.awaitingConfirmation': 'Awaiting your confirmation',
  'workflow.collapse': 'Collapse',
  'workflow.expandFull': 'Expand fully',
  'workflow.working': 'Working...',
  'workingPanel.agentDocuments': 'Agent Documents',
  'workingPanel.progress': 'Progress',
  'workingPanel.progress.allCompleted': 'All tasks completed',
  'workingPanel.resources': 'Resources',
  'workingPanel.resources.deleteConfirm': 'This action cannot be undone.',
  'workingPanel.resources.deleteError': 'Failed to delete document',
  'workingPanel.resources.deleteSuccess': 'Document deleted',
  'workingPanel.resources.deleteTitle': 'Delete document?',
  'workingPanel.resources.deleteTitleMulti': 'Delete {{count}} items?',
  'workingPanel.resources.empty': 'No webpages. Webpages crawled in this agent will show up here.',
  'workingPanel.resources.error': 'Failed to load resources',
  'workingPanel.resources.filter.documents': 'Documents',
  'workingPanel.resources.filter.skills': 'Skills',
  'workingPanel.resources.filter.web': 'Web',
  'workingPanel.resources.loading': 'Loading resources...',
  'workingPanel.resources.previewError': 'Failed to load preview',
  'workingPanel.resources.previewLoading': 'Loading preview...',
  'workingPanel.resources.renameEmpty': 'Title cannot be empty',
  'workingPanel.resources.renameError': 'Failed to rename document',
  'workingPanel.resources.renameSuccess': 'Document renamed',
  'workingPanel.resources.tree.createError': 'Failed to create',
  'workingPanel.resources.tree.deleteSelected': 'Delete selected ({{count}})',
  'workingPanel.resources.tree.moveError': 'Failed to move',
  'workingPanel.resources.tree.parentMissing': 'Parent folder is unavailable',
  'workingPanel.resources.tree.newDocument': 'New document',
  'workingPanel.resources.tree.newFolder': 'New folder',
  'workingPanel.resources.tree.rename': 'Rename',
  'workingPanel.resources.tree.untitledDocument': 'Untitled document',
  'workingPanel.resources.tree.untitledFolder': 'Untitled folder',
  'workingPanel.resources.updatedAt': 'Updated {{time}}',
  'workingPanel.resources.viewMode.list': 'List view',
  'workingPanel.resources.viewMode.tree': 'Tree view',
  'workingPanel.localFile.binary': 'Binary file — preview unavailable',
  'workingPanel.localFile.close': 'Close',
  'workingPanel.localFile.closeLeft': 'Close to the Left',
  'workingPanel.localFile.closeOther': 'Close Others',
  'workingPanel.localFile.closeRight': 'Close to the Right',
  'workingPanel.localFile.error': "Couldn't load this file",
  'workingPanel.localFile.preview.raw': 'Raw',
  'workingPanel.localFile.preview.reload': 'Reload preview',
  'workingPanel.localFile.preview.render': 'Preview',
  'workingPanel.localFile.preview.source': 'Source',
  'workingPanel.localFile.truncated': 'File preview truncated to {{limit}} characters',
  'workingPanel.skills.empty': 'No skills available',
  'workingPanel.skills.section.agent': 'Agent skills',
  'workingPanel.skills.section.project': 'Project skills',
  'workingPanel.skills.section.user': 'User skills',
  'workingPanel.skills.title': 'Skills',
  'workingPanel.files.count_one': '{{count}} file',
  'workingPanel.files.count_other': '{{count}} files',
  'workingPanel.files.copyAbsolutePath': 'Copy Path',
  'workingPanel.files.copyRelativePath': 'Copy Relative Path',
  'workingPanel.files.empty': 'No files in this workspace',
  'workingPanel.files.open': 'Open File',
  'workingPanel.files.refresh': 'Refresh',
  'workingPanel.files.showInReview': 'Show in Review',
  'workingPanel.files.showInSystem': 'Reveal in Folder',
  'workingPanel.files.title': 'Files',
  'workingPanel.review.baseRef.default': 'default',
  'workingPanel.review.baseRef.loading': 'Loading branches…',
  'workingPanel.review.baseRef.reset': 'Reset to default branch',
  'workingPanel.review.baseRef.unresolved': 'Pick a base branch',
  'workingPanel.review.binary': 'Binary file — diff not shown',
  'workingPanel.review.collapseAll': 'Collapse all',
  'workingPanel.review.copied': 'Path copied',
  'workingPanel.review.copyPath': 'Copy file path',
  'workingPanel.review.revealInTree': 'Reveal in tree',
  'workingPanel.review.empty': 'No working tree changes',
  'workingPanel.review.empty.branch': 'No changes vs {{baseRef}}',
  'workingPanel.review.empty.noBaseRef':
    "Couldn't determine the remote default branch. Run `git remote set-head origin --auto` in your terminal.",
  'workingPanel.review.error': "Couldn't load this file's diff",
  'workingPanel.review.expandAll': 'Expand all',
  'workingPanel.review.group.collapseDiffs': 'Collapse all diffs in this group',
  'workingPanel.review.group.expandDiffs': 'Expand all diffs in this group',
  'workingPanel.review.group.fileCount': '{{count}} files',
  'workingPanel.review.group.submoduleClean': 'No internal changes',
  'workingPanel.review.mode.branch': 'Branch',
  'workingPanel.review.mode.unstaged': 'Unstaged',
  'workingPanel.review.more': 'More options',
  'workingPanel.review.refresh': 'Refresh',
  'workingPanel.review.revert': 'Discard changes',
  'workingPanel.review.revert.confirm.cancel': 'Cancel',
  'workingPanel.review.revert.confirm.description':
    'Working tree changes to {{filePath}} will be permanently discarded. Untracked files are deleted from disk.',
  'workingPanel.review.revert.confirm.ok': 'Discard',
  'workingPanel.review.revert.confirm.title': 'Discard changes to this file?',
  'workingPanel.review.revert.failed': "Couldn't discard changes: {{error}}",
  'workingPanel.review.revert.success': 'Discarded changes to {{filePath}}',
  'workingPanel.review.textDiff.disable': 'Disable inline text diff',
  'workingPanel.review.textDiff.enable': 'Enable inline text diff',
  'workingPanel.review.title': 'Review',
  'workingPanel.review.tooLarge': 'File is too large to diff inline',
  'workingPanel.review.unstaged': 'Unstaged',
  'workingPanel.review.viewMode.split': 'Switch to split view',
  'workingPanel.review.viewMode.unified': 'Switch to unified view',
  'workingPanel.review.wordWrap.disable': 'Disable word wrap',
  'workingPanel.review.wordWrap.enable': 'Enable word wrap',
  'workingPanel.space': 'Space',
  'workingPanel.documents.close': 'Close',
  'workingPanel.documents.error': 'Failed to load document',
  'workingPanel.documents.loading': 'Loading document...',
  'workingPanel.documents.discard': 'Discard',
  'workingPanel.documents.preview': 'Preview',
  'workingPanel.documents.edit': 'Edit',
  'workingPanel.documents.save': 'Save',
  'workingPanel.documents.saved': 'All changes saved',
  'workingPanel.documents.title': 'Document',
  'workingPanel.documents.unsaved': 'Unsaved changes',
  'workingPanel.title': 'Working Panel',
  'you': 'You',
  'zenMode': 'Zen Mode',
};
