{
  "channel.allowFrom": "Allowed Users",
  "channel.allowFromAdd": "Add user",
  "channel.allowFromEmpty": "No users added yet — anyone can interact with the bot.",
  "channel.allowFromHint": "Only listed users can interact with the bot; your 'Platform User ID' is auto-included.",
  "channel.allowFromIdLabel": "User ID",
  "channel.allowFromIdPlaceholder": "Platform user ID",
  "channel.allowFromNameLabel": "Note",
  "channel.allowFromNamePlaceholder": "e.g. Alice (your reminder)",
  "channel.allowListRemove": "Remove",
  "channel.appSecret": "App Secret",
  "channel.appSecretHint": "The App Secret of your bot application. It will be encrypted and stored securely.",
  "channel.appSecretPlaceholder": "Paste your app secret here",
  "channel.applicationId": "Application ID / Bot Username",
  "channel.applicationIdHint": "Unique identifier for your bot application.",
  "channel.applicationIdPlaceholder": "e.g. 1234567890",
  "channel.botToken": "Bot Token / API Key",
  "channel.botTokenEncryptedHint": "Token will be encrypted and stored securely.",
  "channel.botTokenHowToGet": "How to get?",
  "channel.botTokenPlaceholderExisting": "Token is hidden for security",
  "channel.botTokenPlaceholderNew": "Paste your bot token here",
  "channel.charLimit": "Character Limit",
  "channel.charLimitHint": "Maximum number of characters per message",
  "channel.comingSoon": "Coming Soon",
  "channel.comingSoonDesc": "We are working on bringing this integration to LobeHub. Stay tuned for updates.",
  "channel.comingSoonTitle": "{{name}} integration is coming soon",
  "channel.concurrency": "Concurrency Mode",
  "channel.concurrencyDebounce": "Debounce",
  "channel.concurrencyDebounceHint": "Only process the last message in a burst (earlier ones are dropped)",
  "channel.concurrencyHint": "How concurrent messages are batched",
  "channel.concurrencyQueue": "Queue",
  "channel.concurrencyQueueHint": "Process messages one at a time",
  "channel.connectFailed": "Bot connection failed",
  "channel.connectQueued": "Bot connection queued. It will start shortly.",
  "channel.connectStarting": "Bot is starting. Please wait a moment.",
  "channel.connectSuccess": "Bot connected successfully",
  "channel.connecting": "Connecting...",
  "channel.connectionConfig": "Connection Configuration",
  "channel.connectionMode": "Connection Mode",
  "channel.connectionModeHint": "How the platform delivers events to the bot",
  "channel.connectionModeWebSocket": "WebSocket",
  "channel.connectionModeWebSocketHint": "Recommended for new bots",
  "channel.connectionModeWebhook": "Webhook",
  "channel.connectionModeWebhookHint": "Use if your bot has a callback URL configured",
  "channel.copied": "Copied to clipboard",
  "channel.copy": "Copy",
  "channel.credentials": "Credentials",
  "channel.debounceMs": "Debounce Window (ms)",
  "channel.debounceMsHint": "How long to wait for additional messages before dispatching to the agent (ms)",
  "channel.deleteAllChannels": "Remove All Channels",
  "channel.deleteAllConfirm": "Are you sure you want to remove all channels?",
  "channel.deleteAllConfirmDesc": "This action will permanently remove all message channels and their configurations for this agent. This cannot be undone.",
  "channel.deleteAllFailed": "Failed to remove all channels",
  "channel.deleteAllSuccess": "All channels removed",
  "channel.deleteConfirm": "Are you sure you want to remove this channel?",
  "channel.deleteConfirmDesc": "This action will permanently remove this message channel and its configuration. This cannot be undone.",
  "channel.devWebhookProxyUrl": "HTTPS Tunnel URL",
  "channel.devWebhookProxyUrlHint": "Optional. HTTPS tunnel URL for forwarding webhook requests to local dev server.",
  "channel.disabled": "Disabled",
  "channel.discord.description": "Connect this assistant to Discord server for channel chat and direct messages.",
  "channel.displayToolCalls": "Display Tool Calls",
  "channel.displayToolCallsHint": "Show tool call details during AI responses. When disabled, only the final response is displayed for a cleaner experience.",
  "channel.dm": "Direct Messages",
  "channel.dmPolicy": "DM Policy",
  "channel.dmPolicyAllowlist": "Allowlist",
  "channel.dmPolicyAllowlistHint": "Only listed users can DM the bot",
  "channel.dmPolicyDisabled": "Disabled",
  "channel.dmPolicyDisabledHint": "Reject all DMs",
  "channel.dmPolicyHint": "Who can DM the bot",
  "channel.dmPolicyOpen": "Open",
  "channel.dmPolicyOpenHint": "Accept DMs from anyone",
  "channel.dmPolicyPairing": "Pairing",
  "channel.dmPolicyPairingHint": "Strangers need /approve to DM",
  "channel.documentation": "Documentation",
  "channel.enabled": "Enabled",
  "channel.encryptKey": "Encrypt Key",
  "channel.encryptKeyHint": "Optional. Used to decrypt encrypted event payloads.",
  "channel.encryptKeyPlaceholder": "Optional encryption key",
  "channel.endpointUrl": "Webhook URL",
  "channel.endpointUrlHint": "Please copy this URL and paste it into the <bold>{{fieldName}}</bold> field in the {{name}} Developer Portal.",
  "channel.exportConfig": "Export Configuration",
  "channel.feishu.description": "Connect this assistant to Feishu for private and group chats.",
  "channel.feishu.webhookMigrationDesc": "WebSocket mode provides real-time event delivery without needing a public callback URL. To migrate, switch the Connection Mode to WebSocket in Advanced Settings. No additional configuration is needed on the Feishu/Lark Open Platform.",
  "channel.feishu.webhookMigrationTitle": "Consider migrating to WebSocket mode",
  "channel.groupAllowFrom": "Allowed Channels",
  "channel.groupAllowFromAdd": "Add channel",
  "channel.groupAllowFromEmpty": "No channels added yet — the bot will not respond anywhere.",
  "channel.groupAllowFromHint": "Channel / group / chat IDs the bot may respond in.",
  "channel.groupAllowFromIdLabel": "Channel ID",
  "channel.groupAllowFromIdPlaceholder": "Channel / group / chat ID",
  "channel.groupAllowFromNameLabel": "Note",
  "channel.groupAllowFromNamePlaceholder": "e.g. #general (your reminder)",
  "channel.groupPolicy": "Group Policy",
  "channel.groupPolicyAllowlist": "Allowlist",
  "channel.groupPolicyAllowlistHint": "Only respond in listed channels",
  "channel.groupPolicyDisabled": "Disabled",
  "channel.groupPolicyDisabledHint": "Ignore all group messages",
  "channel.groupPolicyHint": "Where the bot responds in groups, channels, and threads",
  "channel.groupPolicyOpen": "Open",
  "channel.groupPolicyOpenHint": "Respond in any group, channel, or thread",
  "channel.historyLimit": "History Message Limit",
  "channel.historyLimitHint": "Default number of messages to fetch when reading channel history",
  "channel.imessage.applicationIdHint": "A stable identifier shared by the cloud channel and the Desktop bridge.",
  "channel.imessage.applicationIdPlaceholder": "e.g. home-mac-mini",
  "channel.imessage.blueBubblesPassword": "BlueBubbles Password",
  "channel.imessage.blueBubblesPasswordHint": "Stored locally in LobeHub Desktop and used only to call the local BlueBubbles server.",
  "channel.imessage.blueBubblesServerUrl": "BlueBubbles Server URL",
  "channel.imessage.blueBubblesServerUrlHint": "The local BlueBubbles server URL reachable from this Desktop app.",
  "channel.imessage.blueBubblesServerUrlTip": "If BlueBubbles and LobeHub Desktop run on the same Mac, use 127.0.0.1; if they run on different devices, enter the LAN IP.",
  "channel.imessage.bridgeEnabled": "Enable Bridge",
  "channel.imessage.bridgeEnabledHint": "When enabled, LobeHub Desktop receives local BlueBubbles webhooks and forwards them to LobeHub.",
  "channel.imessage.bridgeMissingApplicationId": "Enter the Application ID first.",
  "channel.imessage.bridgeMissingPassword": "Enter the BlueBubbles password first.",
  "channel.imessage.bridgeMissingServerUrl": "Enter the BlueBubbles Server URL first.",
  "channel.imessage.bridgeMissingWebhookSecret": "Enter the Webhook Secret first.",
  "channel.imessage.bridgePasswordSavedPlaceholder": "Leave blank to keep the saved password",
  "channel.imessage.bridgeRefresh": "Refresh",
  "channel.imessage.bridgeRefreshFailed": "Failed to refresh iMessage Desktop bridge",
  "channel.imessage.bridgeRunning": "Running",
  "channel.imessage.bridgeRunningDesc": "This local relay forwards iMessage messages to LobeHub. You can now test the BlueBubbles connection.",
  "channel.imessage.bridgeRunningDescListening": "Listening on {url}, relaying iMessage messages to LobeHub. You can now test the BlueBubbles connection.",
  "channel.imessage.bridgeRunningTitle": "Bridge service running",
  "channel.imessage.bridgeSave": "Save Bridge",
  "channel.imessage.bridgeSaveFailed": "Failed to save iMessage Desktop bridge",
  "channel.imessage.bridgeSaved": "iMessage Desktop bridge saved",
  "channel.imessage.bridgeSectionDesc": "Confirm the Server URL and password first, then enable the bridge and test the connection.",
  "channel.imessage.bridgeSectionTitle": "BlueBubbles Connection",
  "channel.imessage.bridgeStatusConnected": "Connected",
  "channel.imessage.bridgeStatusFailed": "Connection Failed",
  "channel.imessage.bridgeStatusPending": "Pending Test",
  "channel.imessage.bridgeStopped": "Stopped",
  "channel.imessage.bridgeStoppedDesc": "Enable the bridge to relay iMessage messages to LobeHub, then test the connection.",
  "channel.imessage.bridgeStoppedTitle": "Bridge service stopped",
  "channel.imessage.bridgeTest": "Test BlueBubbles",
  "channel.imessage.bridgeTestDisabledHint": "Enable the bridge service first.",
  "channel.imessage.bridgeTestFailed": "BlueBubbles test failed",
  "channel.imessage.bridgeTestSuccess": "BlueBubbles connection passed",
  "channel.imessage.description": "Connect this assistant to iMessage through the local LobeHub Desktop BlueBubbles bridge.",
  "channel.imessage.desktopBridge": "Desktop Bridge",
  "channel.imessage.desktopDeviceId": "Desktop Device ID",
  "channel.imessage.desktopDeviceIdHint": "The LobeHub Desktop device that runs the local BlueBubbles bridge. Find it in Desktop Gateway settings.",
  "channel.imessage.webhookSecret": "Webhook Secret",
  "channel.imessage.webhookSecretHint": "A shared secret used between LobeHub Desktop and the cloud webhook. Use the same value in the Desktop bridge config.",
  "channel.importConfig": "Import Configuration",
  "channel.importFailed": "Failed to import configuration",
  "channel.importInvalidFormat": "Invalid configuration file format",
  "channel.importSuccess": "Configuration imported successfully",
  "channel.lark.description": "Connect this assistant to Lark for private and group chats.",
  "channel.line.channelAccessToken": "Channel Access Token",
  "channel.line.channelAccessTokenHint": "Long-lived token issued under the Messaging API tab. Token will be encrypted and stored securely.",
  "channel.line.channelSecret": "Channel Secret",
  "channel.line.channelSecretHint": "From the Basic settings tab. Required — used to verify X-Line-Signature on every inbound webhook.",
  "channel.line.description": "Connect this assistant to LINE Messaging API for direct and group chats.",
  "channel.line.destinationUserId": "Destination User ID",
  "channel.line.destinationUserIdHint": "The bot's own user ID (`U` + 32 chars) — click \"Fetch from LINE\" below to auto-fill. Not the personal \"Your user ID\" shown in LINE's Basic settings.",
  "channel.line.destinationUserIdPlaceholder": "e.g. U1234567890abcdef1234567890abcdef",
  "channel.line.fetchBotInfo": "Fetch from LINE",
  "channel.line.fetchBotInfoFailed": "Failed to fetch bot info",
  "channel.line.fetchBotInfoMissingToken": "Enter the Channel Access Token first, then click \"Fetch from LINE\".",
  "channel.line.fetchBotInfoSuccess": "Destination User ID fetched",
  "channel.line.webhookManualSetup": "LINE does not allow programmatic webhook registration. Copy this URL into the LINE Developers Console (Messaging API → Webhook URL), click \"Verify\", and enable \"Use webhook\".",
  "channel.messengerPromo.action": "Try Messenger",
  "channel.messengerPromo.desc": "No bot setup. Chat with LobeHub on Slack, Discord, Telegram.",
  "channel.messengerPromo.dismiss": "Dismiss",
  "channel.messengerPromo.title": "Skip the setup",
  "channel.openPlatform": "Open Platform",
  "channel.platforms": "Platforms",
  "channel.publicKey": "Public Key",
  "channel.publicKeyHint": "Optional. Used to verify interaction requests from Discord.",
  "channel.publicKeyPlaceholder": "Required for interaction verification",
  "channel.qq.appIdHint": "Your QQ Bot App ID from QQ Open Platform",
  "channel.qq.description": "Connect this assistant to QQ for group chats and direct messages.",
  "channel.qq.webhookMigrationDesc": "WebSocket mode provides real-time event delivery and automatic reconnection without needing a callback URL. To migrate, create a new bot on QQ Open Platform without configuring a callback URL, then switch the Connection Mode to WebSocket in Advanced Settings.",
  "channel.qq.webhookMigrationTitle": "Consider migrating to WebSocket mode",
  "channel.refreshStatus": "Refresh status",
  "channel.removeChannel": "Remove Channel",
  "channel.removeFailed": "Failed to remove channel",
  "channel.removed": "Channel removed",
  "channel.runtimeDisconnected": "Bot disconnected",
  "channel.save": "Save Configuration",
  "channel.saveFailed": "Failed to save configuration",
  "channel.saveFirstWarning": "Please save configuration first",
  "channel.saved": "Configuration saved successfully",
  "channel.secretToken": "Webhook Secret Token",
  "channel.secretTokenHint": "Optional. Used to verify webhook requests from Telegram.",
  "channel.secretTokenPlaceholder": "Optional secret for webhook verification",
  "channel.serverId": "Default Server ID",
  "channel.serverIdHint": "Default server / guild AI tools act on; not used for access control",
  "channel.serverIdHint.discord": "Enable Developer Mode (Settings → Advanced), then right-click the server icon → Copy Server ID.",
  "channel.serverIdHint.slack": "Workspace ID (starts with T). Find it under Settings & administration → Workspace settings, or in the workspace URL.",
  "channel.settings": "Advanced Settings",
  "channel.settingsResetConfirm": "Are you sure you want to reset advanced settings to default?",
  "channel.settingsResetDefault": "Reset to Default",
  "channel.setupGuide": "Setup Guide",
  "channel.showUsageStats": "Show Usage Stats",
  "channel.showUsageStatsHint": "Show token usage, cost, and duration stats in bot replies",
  "channel.signingSecret": "Signing Secret",
  "channel.signingSecretHint": "Used to verify webhook requests.",
  "channel.slack.appIdHint": "Your Slack App ID from the Slack API dashboard (starts with A).",
  "channel.slack.appToken": "App-Level Token",
  "channel.slack.appTokenHint": "Required for Socket Mode (WebSocket). Generate an app-level token (xapp-...) under Basic Information in your Slack app settings.",
  "channel.slack.description": "Connect this assistant to Slack for channel conversations and direct messages.",
  "channel.slack.webhookMigrationDesc": "Socket Mode provides real-time event delivery via WebSocket without exposing a public HTTP endpoint. To migrate, enable Socket Mode in your Slack app settings, generate an App-Level Token, then switch the Connection Mode to WebSocket in Advanced Settings.",
  "channel.slack.webhookMigrationTitle": "Consider migrating to Socket Mode (WebSocket)",
  "channel.statusConnected": "Connected",
  "channel.statusDisconnected": "Disconnected",
  "channel.statusDormant": "Dormant",
  "channel.statusFailed": "Failed",
  "channel.statusQueued": "Queued",
  "channel.statusStarting": "Starting",
  "channel.telegram.description": "Connect this assistant to Telegram for private and group chats.",
  "channel.testConnection": "Test Connection",
  "channel.testFailed": "Connection test failed",
  "channel.testSuccess": "Connection test passed",
  "channel.updateFailed": "Failed to update status",
  "channel.userId": "Your Platform User ID",
  "channel.userIdHint": "Lets AI tools reach you proactively (e.g. reminders); auto-trusted by the global allowlist",
  "channel.userIdHint.discord": "Enable Developer Mode (Settings → Advanced), then right-click your avatar → Copy User ID.",
  "channel.userIdHint.feishu": "Open your app on the Feishu / Lark Open Platform → Permissions, then look up your Open ID.",
  "channel.userIdHint.imessage": "Use your iMessage handle as seen in BlueBubbles, usually an email address or E.164 phone number.",
  "channel.userIdHint.line": "Open the LINE Developers Console → your channel → Basic settings tab, and copy \"Your user ID\" (starts with U, 33 chars).",
  "channel.userIdHint.qq": "Your QQ number, shown on your QQ profile page.",
  "channel.userIdHint.slack": "Open your Slack profile → ⋮ More → Copy member ID (starts with U).",
  "channel.userIdHint.telegram": "Send any message to @userinfobot on Telegram — it replies with your numeric User ID.",
  "channel.userIdMissingDesc": "Without it, AI tools can't reach you with reminders, and pairing approvals will fail. Fill it in under Advanced Settings.",
  "channel.userIdMissingTitle": "Add your platform User ID",
  "channel.validationError": "Please fill in Application ID and Token",
  "channel.verificationToken": "Verification Token",
  "channel.verificationTokenHint": "Optional. Used to verify webhook event source.",
  "channel.verificationTokenPlaceholder": "Paste your verification token here",
  "channel.watchKeywordInstructionLabel": "Instruction",
  "channel.watchKeywordInstructionPlaceholder": "e.g. Scan the recent thread and reply if there is an actionable bug report",
  "channel.watchKeywordLabel": "Keyword",
  "channel.watchKeywordPlaceholder": "e.g. bug",
  "channel.watchKeywords": "Watch Keywords",
  "channel.watchKeywordsAdd": "Add keyword",
  "channel.watchKeywordsEmpty": "No keywords added yet — bot only wakes on @mention or DM in subscribed channels.",
  "channel.watchKeywordsHint": "A keyword match wakes the bot without an @mention; its instruction is prepended to the user message. Whole-word, case-insensitive.",
  "channel.wechat.description": "Connect this assistant to WeChat via iLink Bot for private and group chats.",
  "channel.wechatBotId": "Bot ID",
  "channel.wechatBotIdHint": "Bot identifier assigned after QR code authorization.",
  "channel.wechatConnectedInfo": "Connected WeChat Account",
  "channel.wechatIdleNotice": "If no users send messages for over 7 days, this connection will be automatically paused. To resume, click \"Rebind via QR Code\".",
  "channel.wechatManagedCredentials": "This channel is already connected through QR code authorization. Credentials are managed automatically.",
  "channel.wechatQrExpired": "QR code expired. Please refresh to get a new one.",
  "channel.wechatQrRefresh": "Refresh QR Code",
  "channel.wechatQrScaned": "QR code scanned. Please confirm the login on WeChat.",
  "channel.wechatQrWait": "Open WeChat and scan the QR code to connect.",
  "channel.wechatRebind": "Rebind via QR Code",
  "channel.wechatScanTitle": "Connect WeChat Bot",
  "channel.wechatScanToConnect": "Scan QR Code to Connect",
  "channel.wechatTips": "Please update WeChat to the latest version and restart it. The ClawBot plugin is in gradual rollout, so check Settings > Plugins to confirm access.",
  "channel.wechatUserId": "WeChat User ID",
  "channel.wechatUserIdHint": "WeChat account identifier returned by the authorization flow.",
  "transfer.button": "Transfer",
  "transfer.confirm.botChannels": "Bot channel connections may need to be refreshed after transfer",
  "transfer.confirm.chatGroups": "Multi-agent group associations will be removed",
  "transfer.confirm.desc": "This will move the agent and all associated data (topics, messages, files, etc.) to the target workspace.",
  "transfer.confirm.plugins": "Custom plugins may not be available in the target workspace",
  "transfer.confirm.title": "Transfer Agent",
  "transfer.confirm.warning": "Some features don't transfer:",
  "transfer.copyTo": "Copy To",
  "transfer.desc": "Transfer this agent to another workspace or your personal account.",
  "transfer.error": "Failed to transfer agent",
  "transfer.personalAccount": "Personal Account",
  "transfer.searchWorkspace": "Search workspaces...",
  "transfer.selectTarget": "Transfer Agent To",
  "transfer.success": "Agent transferred successfully",
  "transfer.title": "Transfer",
  "transfer.transferTo": "Transfer To"
}
