{
  "appName": { "message": "xopc" },
  "appDescription": { "message": "Chat with xopc and explicitly share or control the current page." },
  "actionTitle": { "message": "Open xopc" },
  "settings": { "message": "Settings" },
  "appearance": { "message": "Appearance" },
  "themeLight": { "message": "Light" },
  "themeDark": { "message": "Dark" },
  "language": { "message": "Language" },
  "languageChinese": { "message": "中文" },
  "languageEnglish": { "message": "English" },
  "contextMenuAskSelection": { "message": "Ask xopc about “%s”" },
  "statusPairing": { "message": "Pairing" },
  "statusStarting": { "message": "Starting" },
  "statusSetupRequired": { "message": "Setup required" },
  "loading": { "message": "Loading…" },
  "connectToXopc": { "message": "Connect a Gateway" },
  "localGatewayFound": { "message": "A local xopc Gateway was found. xopc connects automatically on this computer." },
  "connecting": { "message": "Connecting…" },
  "retryLocalConnection": { "message": "Retry local connection" },
  "connectGatewayHelp": { "message": "Connect locally, or paste the one-time invitation copied from Device access." },
  "connectLocalGateway": { "message": "Connect local Gateway" },
  "pairingLinkDivider": { "message": "or paste an invitation" },
  "pairingLink": { "message": "One-time invitation" },
  "allowGatewayAndContinue": {
    "message": "Allow $HOST$ and continue",
    "placeholders": { "host": { "content": "$1" } }
  },
  "cancelPairing": { "message": "Cancel pairing" },
  "confirmGatewayCode": { "message": "Confirm this code in the Gateway:" },
  "waitingForApproval": { "message": "Waiting for approval…" },
  "connect": { "message": "Connect" },
  "disconnect": { "message": "Disconnect" },
  "disconnectGateway": {
    "message": "Disconnect $GATEWAY$",
    "placeholders": { "gateway": { "content": "$1" } }
  },
  "ready": { "message": "Ready" },
  "wakingUp": { "message": "Waking up…" },
  "offline": { "message": "Offline" },
  "newChat": { "message": "New chat" },
  "startNewChat": { "message": "Start a new chat" },
  "recentChats": { "message": "Recent chats" },
  "closeRecentChats": { "message": "Close recent chats" },
  "searchChats": { "message": "Search chats" },
  "noChatsFound": { "message": "No chats found" },
  "gatewayOffline": { "message": "Gateway connection is offline." },
  "reconnect": { "message": "Reconnect" },
  "loadingChat": { "message": "Loading chat" },
  "emptyChatTitle": { "message": "What can I help with?" },
  "emptyChatDescription": { "message": "Ask a question, bring in the current page, or let xopc help you complete a browser task." },
  "promptSummarizePage": { "message": "Summarize this page and highlight the key points." },
  "summarizePage": { "message": "Summarize this page" },
  "promptExplainSelection": { "message": "Explain the selected text in plain language." },
  "explainSelection": { "message": "Explain selection" },
  "promptHelpTask": { "message": "Help me complete the task on this page. Ask before taking any consequential action." },
  "helpWithTask": { "message": "Help with a task" },
  "you": { "message": "You" },
  "system": { "message": "System" },
  "truncated": { "message": "truncated" },
  "copyResponse": { "message": "Copy response" },
  "copied": { "message": "Copied" },
  "copy": { "message": "Copy" },
  "responding": { "message": "Responding" },
  "activityRunning": { "message": "Working…" },
  "activitySteps": { "message": "$1 tool steps" },
  "activityThoughts": { "message": "Thinking" },
  "thinking": { "message": "Thinking" },
  "thinkingRunning": { "message": "Thinking…" },
  "toolRunning": { "message": "Running" },
  "toolCompleted": { "message": "Done" },
  "toolFailed": { "message": "Failed" },
  "xopcResponding": { "message": "xopc is responding" },
  "scrollLatest": { "message": "Scroll to latest message" },
  "dropFiles": { "message": "Drop files to attach" },
  "browserApproval": { "message": "Browser approval" },
  "riskExternalEffect": { "message": "external effect" },
  "riskDestructive": { "message": "destructive" },
  "riskSensitive": { "message": "sensitive" },
  "riskDraft": { "message": "draft" },
  "riskRead": { "message": "read" },
  "allowOnce": { "message": "Allow once" },
  "deny": { "message": "Deny" },
  "agentQuestion": { "message": "Agent question" },
  "approvalRequired": { "message": "Approval required" },
  "xopcNeedsInput": { "message": "xopc needs your input" },
  "typeAnswer": { "message": "Type your answer" },
  "send": { "message": "Send" },
  "letXopcDecide": { "message": "Let xopc decide" },
  "cancelTask": { "message": "Cancel task" },
  "queuedMessageNotice": { "message": "Connection interrupted. Your message is queued and will send after xopc reconnects." },
  "tab": { "message": "Tab" },
  "selection": { "message": "Selection" },
  "page": { "message": "Page" },
  "refresh": { "message": "Refresh" },
  "removePageContext": { "message": "Remove page context" },
  "image": { "message": "Image" },
  "file": { "message": "File" },
  "attachment": { "message": "Attachment" },
  "removeAttachment": {
    "message": "Remove $NAME$",
    "placeholders": { "name": { "content": "$1" } }
  },
  "openTabs": { "message": "Open tabs" },
  "currentTab": { "message": "current" },
  "noMatchingTabs": { "message": "No matching tabs" },
  "addContext": { "message": "Add context or attachment" },
  "addToMessage": { "message": "Add to this message" },
  "currentPage": { "message": "Current page" },
  "sharePageContent": { "message": "Share readable page content" },
  "selectedText": { "message": "Selected text" },
  "shareSelection": { "message": "Share your current selection" },
  "screenshot": { "message": "Screenshot" },
  "captureVisibleTab": { "message": "Capture the visible tab" },
  "supportedFileTypes": { "message": "Images, Office documents, PDF, text, and code" },
  "liveTabAccess": { "message": "Live tab access" },
  "controlEnabled": { "message": "Control enabled" },
  "readEnabled": { "message": "Read enabled" },
  "stopAccess": { "message": "Click to stop access" },
  "readThisTab": { "message": "Read this tab" },
  "keepPageAvailable": { "message": "Keep page content available" },
  "controlThisTab": { "message": "Control this tab" },
  "controlSafeguards": { "message": "Allow browser actions with safeguards" },
  "composerPlaceholder": { "message": "Message xopc…  Use @ to mention a tab" },
  "stopResponse": { "message": "Stop response" },
  "stoppingResponse": { "message": "Stopping response" },
  "sendMessage": { "message": "Send message" },
  "stopping": { "message": "Stopping…" },
  "sending": { "message": "Sending…" },
  "queued": { "message": "Queued" },
  "control": { "message": "Control" },
  "read": { "message": "Read" },
  "model": { "message": "Model" },
  "sessionModel": { "message": "Session model" },
  "thinkingLevel": { "message": "Thinking level" },
  "thinkingOff": { "message": "Off" },
  "thinkingMinimal": { "message": "Minimal" },
  "thinkingLow": { "message": "Low" },
  "thinkingMedium": { "message": "Medium" },
  "thinkingHigh": { "message": "High" },
  "thinkingXhigh": { "message": "Extra high" },
  "thinkingMax": { "message": "Maximum" },
  "thinkingUltra": { "message": "Ultra" },
  "errorNoLocalGateway": { "message": "No local xopc Gateway was found" },
  "errorAttachedPageChanged": { "message": "The attached page changed. Refresh or remove it before sending." },
  "errorAttachmentLimit": {
    "message": "Attach up to $COUNT$ files",
    "placeholders": { "count": { "content": "$1" } }
  },
  "errorNoActivePage": { "message": "No active web page" },
  "errorAttachmentTooLarge": { "message": "Attachments must be 32 MiB or smaller" },
  "errorUnsupportedAttachment": { "message": "Attach an image, Office document, PDF, text, or code file" },
  "errorActiveTabChanged": { "message": "The active tab changed. Try the screenshot again." },
  "errorInvalidScreenshot": { "message": "Chrome returned an invalid screenshot" },
  "errorInvalidWebAddress": { "message": "This tab does not have a valid web address" },
  "errorRestrictedPage": { "message": "Chrome does not allow xopc to read this page. Open a regular http(s) page and try again." },
  "errorWebStorePage": { "message": "Chrome does not allow extensions to read Chrome Web Store pages." },
  "errorSiteAccessBlocked": {
    "message": "Chrome blocked access to $HOST$. Check xopc's site access for this page and try again.",
    "placeholders": { "host": { "content": "$1" } }
  },
  "errorTabUnavailable": { "message": "The selected tab is no longer available" },
  "errorSiteAccessRequired": {
    "message": "Allow xopc to access $HOST$ to continue.",
    "placeholders": { "host": { "content": "$1" } }
  },
  "errorSelectText": { "message": "Select text on the page first" },
  "errorNoReadableContent": { "message": "No readable text was found. Select text or attach a screenshot instead." },
  "errorReadPage": { "message": "Chrome returned no page data. Reload the tab and try again, or attach a screenshot." },
  "attachScreenshotInstead": { "message": "Attach screenshot" },
  "errorPageChangedReading": { "message": "The page changed while xopc was reading it. Try again." },
  "errorPageChangedConnecting": { "message": "The page changed while xopc was connecting to it. Try again." },
  "errorIdentifyPage": { "message": "Could not identify this page" },
  "errorInvalidLocalHostResponse": { "message": "The local xopc enrollment host returned an invalid response" },
  "errorInvalidPairingLink": { "message": "Pairing link is invalid" },
  "errorUnsupportedPairingLink": { "message": "Pairing link version is not supported" },
  "errorExpiredPairingLink": { "message": "Pairing link has expired" },
  "errorMissingGatewayRoute": { "message": "Pairing link has no Gateway route" },
  "errorInvalidGatewayRoute": { "message": "Pairing link contains an unsafe Gateway route" },
  "errorNoReachableGatewayRoute": { "message": "No verified Gateway route could be reached" },
  "errorIdentityInUse": { "message": "Browser identity is still in use" },
  "errorIdentityExport": { "message": "Browser identity key export failed" },
  "errorGatewayPermission": { "message": "Gateway site permission was not granted" },
  "errorGatewayPermissionHelp": { "message": "Chrome needs access to the Gateway address. Select Connect again and allow the site permission." },
  "errorInvitationExpiredHelp": { "message": "This invitation expired. Create and copy a new invitation from Device access." },
  "errorPairingDeviceMismatch": { "message": "This invitation was created for a phone. Create a browser invitation instead." },
  "errorNoReachableGatewayRouteHelp": { "message": "None of the Gateway addresses responded. Check that the Gateway is online and its secure connection is active." },
  "errorNextRoutePermission": { "message": "The current Gateway address did not respond. Select Continue to allow the next address listed in the invitation." },
  "errorGatewayTimeout": {
    "message": "Gateway did not respond within $SECONDS$ seconds",
    "placeholders": { "seconds": { "content": "$1" } }
  },
  "errorGatewayStatus": {
    "message": "Gateway returned $STATUS$",
    "placeholders": { "status": { "content": "$1" } }
  },
  "errorUnsignedPairing": { "message": "Gateway pairing response is unsigned" },
  "errorGatewayVerification": { "message": "Gateway identity could not be verified" },
  "errorPairingMismatch": { "message": "Gateway pairing response does not match this request" },
  "errorInvalidCredentials": { "message": "Gateway returned invalid browser credentials" },
  "errorPairingStatus": {
    "message": "Pairing $STATUS$",
    "placeholders": { "status": { "content": "$1" } }
  },
  "errorBrowserNotRegistered": { "message": "Gateway did not register the browser" },
  "errorBrowserNotPaired": { "message": "Browser is not paired" },
  "errorEndpointRegistration": {
    "message": "Browser endpoint registration failed ($STATUS$)",
    "placeholders": { "status": { "content": "$1" } }
  },
  "errorInvalidGatewayResponse": { "message": "Gateway returned an invalid response" },
  "errorReconnectEndpoint": { "message": "Could not reconnect to the browser endpoint" },
  "errorOpenChatBeforeSending": { "message": "Open a chat before sending" },
  "errorWaitQueuedMessage": { "message": "Wait for the queued message to be delivered before sending another" },
  "errorEndpointNotReady": { "message": "Realtime endpoint is not ready" },
  "errorSentStatusUnknown": { "message": "Message sent, but the response status could not be refreshed. Reopen this chat to sync it." },
  "errorOpenChatForEndpoint": { "message": "Open a chat and wait for the browser endpoint" },
  "errorInvalidModelConfig": { "message": "Gateway returned an invalid session model configuration" },
  "errorProfileNotLoaded": { "message": "Gateway profile is not loaded" },
  "errorOpenOutbox": { "message": "Could not open the browser chat outbox" },
  "errorOutboxRequest": { "message": "Browser chat outbox request failed" },
  "errorOutboxTransaction": { "message": "Browser chat outbox transaction failed" },
  "errorOutboxAborted": { "message": "Browser chat outbox transaction was aborted" },
  "errorScreenshotPermissionRequired": {"message": "To take screenshots from the side panel, allow access to all websites when Chrome asks, then try again."},
  "queueMessage": {"message": "Add to queue"},
  "cancelQueuedMessage": {"message": "Cancel"},
  "errorChatChanged": {"message": "The chat changed. Please send again."},
  "preview": {"message": "Preview"},
  "closePreview": {"message": "Close"},
  "processingAttachments": {"message": "Preparing attachments…"},
  "errorPageLimit": {"message": "Attach up to $1 pages or selections"},
  "errorPageContextSize": {"message": "The selected pages contain too much text. Attach a selection instead."},
  "searchModels": {"message": "Search models"},
  "noMatchingModels": {"message": "No matching models"},
  "commandsAndSkills": {"message": "Commands and skills"},
  "loadingCommands": {"message": "Loading commands"},
  "noMatchingCommands": {"message": "No matching commands or skills"},
  "skillUnavailable": {"message": "Unavailable for this agent"},
  "voiceInput": {"message": "Voice input"},
  "voiceStarting": {"message": "Opening microphone…"},
  "voiceRecording": {"message": "Recording"},
  "voiceTranscribing": {"message": "Transcribing…"},
  "voiceFinish": {"message": "Finish"},
  "voiceRetry": {"message": "Retry transcription"},
  "voiceNoSpeech": {"message": "No speech detected. Please try again."},
  "voiceUnavailable": {"message": "Speech recognition is unavailable. Configure it in Web UI → Settings → Voice."},
  "interruptSend": {"message": "Stop and send now (Ctrl/⌘+Enter)"},
  "editQueuedMessage": {"message": "Edit"},
  "saveQueuedMessage": {"message": "Save"},
  "voicePermissionHelp": { "message": "Microphone access needs permission. Open the authorization page, then return here and retry." },
  "voicePermissionOpen": { "message": "Authorize microphone" },
  "voicePermissionGranted": { "message": "Microphone authorized. Close this tab and return to chat." },
  "voicePermissionFailed": { "message": "Microphone access was denied. Allow microphone access in browser and system settings, then retry." }
}
