{
  "title": "Settings",
  "settingsMode": "Settings Mode",
  "settingsModeDesc": "Basic mode shows daily workflow settings. Advanced mode includes provider, key, and automation controls.",
  "basic": "Basic",
  "advanced": "Advanced",
  "appearance": "Appearance",
  "appearanceActive": "Currently using {{appearance}} appearance.",
  "appearanceActiveSystem": "Following system. Currently using {{appearance}} appearance.",
  "light": "Light",
  "dark": "Dark",
  "system": "System",
  "customize": "Customize",
  "resetAppearance": "Reset",
  "lightTheme": "Light theme",
  "darkTheme": "Dark theme",
  "accent": "Accent",
  "background": "Background",
  "foreground": "Foreground",
  "uiFont": "UI font",
  "codeFont": "Code font",
  "uiFontSize": "UI font size",
  "uiFontSizeDesc": "Adjust the base size used for the OpenYak UI",
  "codeFontSize": "Code font size",
  "codeFontSizeDesc": "Adjust the base size used for code across chats and diffs",
  "usePointerCursors": "Use pointer cursors",
  "usePointerCursorsDesc": "Change the cursor to a pointer when hovering over interactive elements",
  "language": "Language",
  "defaultModel": "Default Model",
  "defaultModelDesc": "Choose the default model for new conversations. Models are provided via OpenRouter.",
  "modelAccess": "Model Access",
  "modelAccessDesc": "Choose how to connect to AI models.",
  "providerModeDesc": "Connect multiple providers and select which one to use. Switch anytime without disconnecting.",
  "localProvider": "Local endpoint",
  "localProviderConnectError": "Cannot reach the configured endpoint. Make sure it exposes /v1/chat/completions.",
  "activeProvider": "Active",
  "switchingProvider": "Switching...",
  "ownApiKey": "Own API Key",
  "disconnect": "Disconnect",
  "back": "Back",
  "backToApp": "Back to app",
  "apiKeyDesc": "Enter your OpenRouter API key for direct access. Get one at",
  "byokDesc": "Use your own API keys for direct access to AI providers. Configure one or more providers below.",
  "openrouterDesc": "Aggregator — access 200+ models with one key. Get one at",
  "providerModels": "models",
  "providerKeyPlaceholder_openrouter": "sk-or-...",
  "providerKeyPlaceholder_openai": "sk-...",
  "providerKeyPlaceholder_anthropic": "sk-ant-...",
  "providerKeyPlaceholder_google": "AIza...",
  "providerKeyPlaceholder_groq": "gsk_...",
  "providerKeyPlaceholder_deepseek": "sk-...",
  "providerKeyPlaceholder_mistral": "...",
  "providerKeyPlaceholder_xai": "xai-...",
  "providerKeyPlaceholder_together": "...",
  "providerKeyPlaceholder_deepinfra": "...",
  "providerKeyPlaceholder_cerebras": "csk-...",
  "providerKeyPlaceholder_cohere": "...",
  "providerKeyPlaceholder_perplexity": "pplx-...",
  "providerKeyPlaceholder_fireworks": "fw_...",
  "providerKeyPlaceholder_azure": "...",
  "providerKeyPlaceholder_qwen": "sk-...",
  "providerKeyPlaceholder_kimi": "sk-...",
  "providerKeyPlaceholder_minimax": "...",
  "providerKeyPlaceholder_zhipu": "...",
  "providerKeyPlaceholder_siliconflow": "sk-...",
  "providerKeyPlaceholder_xiaomi": "...",
  "providerKeyPlaceholder_custom": "Custom Endpoint API Key",
  "providerUrlPlaceholder_custom": "http://localhost:1234/v1 or https://api.example.com/v1",
  "enableProvider": "Enable provider",
  "disableProvider": "Disable provider",
  "removeApiKey": "Remove API key",
  "save": "Save",
  "failedSaveKey": "Failed to save key",
  "chatgptSubscription": "ChatGPT Subscription",
  "chatgptSubscriptionDesc": "Sign in with your ChatGPT Plus/Pro/Team subscription to access OpenAI models at no extra API cost.",
  "chatgptSignIn": "Sign in with ChatGPT",
  "chatgptWaiting": "Waiting for authentication...",
  "chatgptConnected": "ChatGPT Subscription",
  "chatgptActive": "Active",
  "chatgptNeedsReauth": "Re-authorization needed",
  "chatgptLoginFailed": "Failed to start authentication",
  "chatgptPasteInstruction": "After logging in, copy the full URL from your browser and paste it here:",
  "chatgptPastePlaceholder": "Paste callback URL here...",
  "chatgptSubmitCallback": "Submit",
  "chatgptManualCallbackFailed": "Failed to process URL. It may have expired — try signing in again.",
  "defaultAgent": "Default Agent",
  "defaultAgentDesc": "Choose the default agent mode for new conversations.",
  "thinkingMode": "Thinking Mode",
  "thinkingModeDesc": "When enabled, the AI shows its reasoning process for better answers.",
  "workspaceDirectory": "Workspace Directory",
  "workspaceDirectoryDesc": "Restrict the assistant to only read and modify files within this directory. Leave empty for unrestricted access.",
  "noRestriction": "Entire computer (full filesystem access)",
  "browseDirectory": "Browse for directory",
  "autoApprove": "Auto-approve",
  "autoApproveDesc": "Allow the assistant to perform actions without asking for permission each time.",
  "fileChanges": "File Changes",
  "fileChangesDesc": "Create and edit files without asking",
  "runCommands": "Run Commands",
  "runCommandsDesc": "Run system commands without asking",
  "agentLabel": "Agent",
  "agentCustom": "custom",
  "agentDesc_build": "Full-featured local agent with all tools",
  "agentDesc_plan": "Read-only analysis and planning mode",
  "remote": "Remote Access",
  "remoteDesc": "Control OpenYak from your phone. Tasks execute on this computer and results stream back.",
  "remoteStarting": "Starting tunnel...",
  "remoteActive": "Remote Access Active",
  "remoteDisabled": "Remote Access Disabled",
  "remoteCopy": "Copy",
  "remoteCopied": "Copied",
  "remoteShowQr": "Show QR",
  "remoteHideQr": "Hide QR",
  "remoteQrAlt": "Remote Access QR Code",
  "remoteRotateToken": "Rotate Token",
  "remoteTokenLabel": "Token (copy to phone):",
  "remoteTokenPreview": "Token: {{preview}}",
  "remotePermission": "Permission Mode",
  "remotePermissionDesc": "How to handle tool approvals from remote tasks",
  "remotePermAuto": "Auto-approve safe tools",
  "remotePermAsk": "Ask every time",
  "remotePermDeny": "Deny all",
  "remoteActiveTasks": "{{n}} active remote task(s)",
  "remoteInstructions": "Enable remote access to control OpenYak from your phone:",
  "remoteStep1": "Toggle the switch above to enable",
  "remoteStep2": "Scan the QR code with your phone camera",
  "remoteStep3": "Or open the tunnel URL in your phone browser",
  "about": "About",
  "aboutVersion": "OpenYak v{{version}}",
  "aboutDesc": "Local-first AI agent for desktop files, tools, and long-running work.",
  "aboutCopyright": "W Aixs Inc. © 2024–2026",
  "selectWorkspaceDir": "Select workspace directory",
  "tabGeneral": "General",
  "tabProviders": "Providers",
  "tabPermissions": "Permissions",
  "tabAutomations": "Automations",
  "tabPlugins": "Plugins",
  "tabRemote": "Remote",
  "tabUsage": "Usage",
  "tabMemory": "Memory",
  "permissionsRemembered": "Remembered permissions",
  "permissionsDesc": "Choices saved from permission prompts. They apply to future requests from this browser.",
  "permissionsClearAll": "Clear all",
  "permissionsClearConfirm": "Clear all remembered permissions?",
  "permissionsEmpty": "No remembered permissions",
  "permissionsEmptyDesc": "When you choose Remember this choice, it will appear here.",
  "permissionsAllow": "Allow",
  "permissionsDeny": "Deny",
  "permissionsScopeAll": "All {{tool}} requests",
  "permissionsRevoke": "Revoke",
  "permissionsRevokeRule": "Revoke {{tool}} permission",
  "memoryDesc": "Each workspace maintains its own memory — automatically generated from conversations and used to provide context in future sessions.",
  "memoryEmpty": "No workspace memories yet. Start a conversation in a workspace and memory will be generated automatically.",
  "memoryLines": "{{count}} lines",
  "memoryDelete": "Delete",
  "memoryExport": "Export",
  "memoryEdit": "Edit",
  "memorySave": "Save",
  "memoryCancel": "Cancel",
  "memorySaved": "Memory saved",
  "memoryDeleted": "Memory deleted",
  "memoryExported": "Exported to {{path}}",
  "memoryDeleteConfirmTitle": "Delete workspace memory?",
  "memoryDeleteConfirmDesc": "This will permanently delete the memory for this workspace. It will be regenerated from future conversations.",
  "memoryDeleteConfirm": "Yes, delete",
  "channelsTitle": "Messaging Channels",
  "channelsDesc": "Connect OpenYak to messaging platforms. Messages will be processed by OpenYak's AI.",
  "openclawGateway": "Channel System",
  "gatewayRunning": "Running",
  "gatewayStopped": "Stopped",
  "gatewayNotInstalled": "Not installed",
  "gatewayStarting": "Starting...",
  "gatewayStart": "Start",
  "gatewayStopping": "Stopping...",
  "gatewayStop": "Stop",
  "gatewayHint": "Start the gateway to connect platforms.",
  "channelConnect": "Connect",
  "channelCancel": "Cancel",
  "channelConnecting": "Connecting...",
  "channelDisconnect": "Disconnect",
  "channelRemoved": "Removed",
  "channelFieldRequired": "{{field}} is required",
  "tunnelUrlChanged": "Tunnel URL changed",
  "tunnelUrlChangedDesc": "The tunnel was restarted with a new URL. Mobile devices need to rescan the QR code to reconnect.",
  "tunnelShowQr": "Show QR",
  "qrPreparing": "Preparing...",
  "qrFailedLogin": "Failed to start login",
  "qrScanPhone": "Scan QR code with your phone",
  "qrScanWhatsapp": "Scan QR code in WhatsApp → Linked Devices",
  "qrConnected": "Connected!",
  "qrDone": "Done",
  "qrWaiting": "Waiting for scan...",
  "qrCodeAlt": "QR Code",
  "setupFailed": "Setup failed",
  "setupRetry": "Retry",
  "setupSetUp": "Set Up",
  "platformHelp_whatsapp": "Scan QR code with your phone to link WhatsApp",
  "platformHelp_discord": "Create a bot at Discord Developer Portal",
  "platformHelp_telegram": "Get a token from @BotFather on Telegram",
  "platformHelp_slack": "Create an app at api.slack.com/apps",
  "platformHelp_feishu": "Create an app at Feishu Open Platform",
  "platformHelp_weixin": "Requires WeChat HTTP API (e.g. ilinkai)",
  "platformHelp_dingtalk": "Create a bot at DingTalk Open Platform",
  "platformHelp_wecom": "Create a bot at WeCom Admin Console",
  "platformHelp_qq": "Create a bot at QQ Open Platform",
  "platformHelp_email": "Connect via IMAP/SMTP",
  "platformHelp_matrix": "Connect to a Matrix homeserver",
  "platformHelp_mochat": "Connect to MoChat server",
  "platformHelp_websocket": "Generic WebSocket channel for custom integrations",
  "fieldLabel_token": "Bot Token",
  "fieldLabel_bot_token": "Bot Token",
  "fieldLabel_app_token": "App Token",
  "fieldLabel_app_id": "App ID",
  "fieldLabel_app_secret": "App Secret",
  "fieldLabel_api_url": "API URL",
  "fieldLabel_db_path": "Database Path (optional)",
  "fieldPlaceholder_discord_token": "Paste Discord bot token",
  "fieldPlaceholder_feishu_app_secret": "Enter app secret",
  "fieldPlaceholder_line_token": "Paste LINE channel access token",
  "updateAvailable": "Update Available",
  "updateAvailableDesc": "Version {{version}} is ready to install.",
  "updateNow": "Update Now",
  "updateLater": "Later",
  "updateDownloading": "Downloading update...",
  "checkForUpdates": "Check for Updates",
  "upToDate": "You're up to date!",
  "updateFailed": "Update failed",
  "updateRetry": "Retry",
  "customEndpoint": "Custom Endpoint",
  "savedEndpoints": "Saved Endpoints",
  "addNewCustomEndpoint": "Add New Custom Endpoint",
  "customEndpointDesc": "Connect local or remote OpenAI-compatible endpoints with full control. API keys are optional when the endpoint does not require one.",
  "endpointNamePlaceholder": "Endpoint Name (e.g. My Local Model)",
  "apiKeyPlaceholderOptional": "API Key (Leave blank if not required)",
  "addEndpoint": "Add Endpoint",
  "customProviderFormTitle": "Custom provider",
  "customProviderFormDesc": "Configure an OpenAI-compatible provider with full control over slug, models, and request headers.",
  "customProviderIdLabel": "Provider ID",
  "customProviderIdPlaceholder": "myprovider",
  "customProviderIdHelp": "Lowercase letters, numbers, hyphens, or underscores",
  "customSlugInvalid": "Slug must start with a letter/digit; only lowercase letters, digits, hyphens, or underscores (max 50 chars).",
  "customDisplayNameLabel": "Display name",
  "customDisplayNamePlaceholder": "My AI Provider",
  "customBaseUrlLabel": "Base URL",
  "customApiKeyLabel": "API key",
  "customApiKeyHelp": "Optional. Leave empty if you manage auth via headers.",
  "customModelsLabel": "Models",
  "customModelsHelp": "Leave empty to auto-discover via /v1/models",
  "customModelIdPlaceholder": "model-id",
  "customModelDisplayPlaceholder": "Display Name",
  "customAddModel": "Add model",
  "customHeadersLabel": "Headers (optional)",
  "customHeaderNamePlaceholder": "Header-Name",
  "customHeaderValuePlaceholder": "value",
  "customAddHeader": "Add header",
  "customHeadersBadge": "{{count}} header",
  "customHeadersBadge_other": "{{count}} headers",
  "customModelCountManual": "{{count}} model (manual)",
  "customModelCountManual_other": "{{count}} models (manual)",
  "customModelCountAuto": "{{count}} model",
  "customModelCountAuto_other": "{{count}} models",
  "customModelsManualTitle": "Manually declared",
  "customModelsAutoTitle": "Auto-discovered via /v1/models",
  "submit": "Submit",
  "remove": "Remove",
  "failedSaveEndpoint": "Failed to save endpoint",
  "customEndpointEditTitle": "Edit custom endpoint",
  "customSlugLockedHelp": "Provider ID cannot be changed. Delete and recreate to rename.",
  "customApiKeyEditPlaceholderExisting": "{{masked}} (leave blank to keep)",
  "customApiKeyEditPlaceholderEmpty": "Enter a key to add one (optional)",
  "customApiKeyEditHelp": "Leave blank to keep the existing key.",
  "customApiKeyClear": "Clear key",
  "customApiKeyClearedPlaceholder": "Key will be removed on save",
  "customApiKeyClearedHelp": "Saving will wipe the stored key. Type a new key to replace instead.",
  "undo": "Undo",
  "customHeaderValueExistingPlaceholder": "{{masked}} (leave blank to keep)",
  "customHeadersEditHint": "Leave a value blank to keep it. Trash deletes the header. Add new rows below.",
  "customHeaderDeleteTitle": "Delete this header",
  "customHeaderDeletedHint": "Will be removed on save.",
  "customHeaderDuplicate": "Header \"{{name}}\" is listed more than once. Header names must be unique.",
  "customBaseUrlRequired": "Base URL is required.",
  "editProvider": "Edit provider",
  "cancel": "Cancel",
  "saveChanges": "Save changes"
}
