{
  "settings": {
    "title": "Settings",
    "realtimeHint": "All changes are applied in real-time",
    "general": "General",
    "reading": "Reading",
    "fonts": "Fonts",
    "ai": "AI",
    "translationTab": "Translation",
    "externalAi": "External AI Access",
    "tts": "TTS",
    "about": "About",
    "other": "More",
    "aboutDesc": "Read Any, Understand More",
    "version": "Version",
    "techStack": "Tech Stack",
    "techStackTauri": "Cross-platform desktop framework",
    "techStackReact": "UI component library",
    "techStackTypeScript": "Type safety",
    "techStackFoliate": "eBook rendering engine",
    "feedback": "Feedback",
    "supportCenter": "Support Center",
    "license": "Open source under GPL v3 license",
    "checkUpdate": "Check for Updates",
    "updateChecking": "Checking...",
    "updateAvailable": "Update Available",
    "updateDownloading": "Downloading",
    "updateReady": "Update Ready",
    "updateError": "Update Failed",
    "downloadUpdate": "Download Update",
    "downloading": "Downloading",
    "updateReadyMessage": "Update downloaded, restart the app to complete installation",
    "updateErrorMessage": "Update failed, please try again later",
    "upToDate": "You're up to date",
    "relaunch": "Restart App",
    "dismiss": "Dismiss",
    "newVersionAvailable": "New version {{version}} available. Download now?",
    "later": "Later",
    "ok": "OK",
    "skills": "Skills",
    "language": "Language",
    "general_title": "General",
    "general_desc": "App appearance and behavior",
    "theme": "Theme",
    "themeDesc": "Choose your preferred theme",
    "system": "System",
    "light": "Light",
    "dark": "Dark",
    "sepia": "Sepia",
    "autoSave": "Auto-save interval",
    "autoSaveDesc": "How often to save reading progress",
    "languageDesc": "Choose the display language",
    "appearance": "Appearance & Language",
    "updaterNetworkError": "Cannot connect to update server, please check network",
    "updaterNoUpdate": "No updates available or service temporarily unavailable",
    "updaterCheckFailed": "Failed to check for updates",
    "updaterNoAvailable": "No updates available",
    "updaterDownloadFailed": "Failed to download update",
    "updaterRelaunchFailed": "Failed to restart the app. Please reopen it manually to finish installing the update",
    "relaunching": "Restarting...",
    "reading_title": "Reading",
    "reading_desc": "Customize your reading experience",
    "readingNotice": "Font and layout settings only apply to EPUB and other reflowable formats, not PDF.",
    "fontSize": "Font Size: {{size}}px",
    "lineHeight": "Line Height: {{height}}",
    "fontTheme": "Font Theme",
    "paragraphSpacing": "Paragraph Spacing",
    "showTopTitleProgress": "Top Title & Progress",
    "showBottomTimeBattery": "Bottom Time & Battery",
    "volumeButtonsPageTurn": "Volume Buttons Turn Pages",
    "volumeButtonsPageTurnDesc": "While reading, volume keys turn pages",
    "followSystemFontScale": "Follow System Font Scale",
    "followSystemFontScaleDesc": "Auto-scale by the OS accessibility font size",
    "fixedLayoutNotice": "PDF is a fixed layout format. Font and layout settings are not available.",
    "notAvailableForPdf": "Not available for PDF",
    "sansSerif": "Sans-serif",
    "serif": "Serif",
    "monospace": "Monospace",
    "viewMode": "View Mode",
    "paginated": "Paginated",
    "scroll": "Scroll",
    "paginatedLayout": "Page Layout",
    "singlePage": "Single Page",
    "doublePage": "Double Page",
    "ai_title": "AI Configuration",
    "ai_desc": "Configure AI endpoints and model settings",
    "ai_endpoints": "Endpoints",
    "ai_addEndpoint": "Add Endpoint",
    "ai_provider": "Provider",
    "ai_provider_openai": "OpenAI Compatible",
    "ai_provider_anthropic": "Anthropic Claude",
    "ai_provider_google": "Google Gemini",
    "ai_provider_deepseek": "DeepSeek",
    "ai_endpointName": "Name",
    "ai_endpointNamePlaceholder": "e.g. OpenAI, Ollama, Claude...",
    "ai_apiKey": "API Key",
    "ai_baseUrl": "Base URL",
    "ai_baseUrlPlaceholder": "https://api.openai.com/v1",
    "ai_baseUrlOptional": "Base URL (optional)",
    "ai_fetchModels": "Fetch Models",
    "ai_testConnection": "Test Connection",
    "ai_testingConnection": "Testing...",
    "ai_testSuccess": "Connection successful",
    "ai_testSuccessWithModels": "Connection successful, {{count}} model(s) available",
    "ai_testSuccessWithModel": "Connection successful, tested with model {{model}}",
    "ai_testFailed": "Connection failed",
    "ai_requestUrlPreview": "Final Request URL",
    "ai_baseUrlHint": "OpenAI-compatible endpoints append /v1 by default. Enable exact request URL mode if you want to use the URL exactly as entered.",
    "ai_ollamaCorsHint": "Can't connect to Ollama? Set the environment variable OLLAMA_ORIGINS=* and restart Ollama.",
    "ai_exactRequestUrl": "Use exact request URL",
    "ai_exactRequestUrlLabel": "Exact request URL",
    "ai_exactRequestUrlDesc": "Use the URL exactly as entered, without automatically appending /v1, /chat/completions, or /models.",
    "ai_exactRequestUrlFetchHint": "Exact request URL mode cannot infer the model list automatically. Add a model manually before testing.",
    "ai_testModel": "Test Model",
    "ai_testModelAuto": "Auto-select first available model",
    "ai_fetchingModels": "Fetching...",
    "ai_modelsLoaded": "{{count}} models loaded",
    "ai_noModels": "No models — fetch from API or add manually",
    "ai_addModel": "Add",
    "ai_addModelPlaceholder": "Enter model name, e.g. gpt-4o",
    "ai_removeModel": "Remove model",
    "ai_modelsList": "Models",
    "ai_removeEndpoint": "Remove",
    "ai_activeEndpoint": "Active Endpoint",
    "ai_activeModel": "Model",
    "ai_selectModel": "Select a model",
    "ai_selectEndpoint": "Select an endpoint",
    "ai_noEndpoints": "No endpoints configured",
    "ai_setDefault": "Set as Default",
    "ai_name": "Name",
    "ai_provider_zhipu": "Zhipu GLM",
    "ai_provider_aliyun": "Alibaba Cloud Tongyi",
    "ai_provider_custom": "Custom (OpenAI Compatible)",
    "ai_currentLabel": "Current",
    "ai_searchModels": "Search models...",
    "ai_noMatchingResults": "No matching results",
    "ai_totalModels": "{{count}} models total",
    "webdavUrl": "WebDAV Server URL",
    "webdavUsername": "Username",
    "webdavPassword": "App Password",
    "testConnection": "Test Connection",
    "ai_providerLabel": "Provider",
    "ai_deleteEndpoint": "Delete Endpoint",
    "ai_globalParams": "Global Parameters",
    "ai_contextWindow": "Context Window",
    "ai_slidingWindow": "Sliding Window",
    "ai_contextWindowUnit": "messages",
    "ai_addManualModelPlaceholder": "Add model manually...",
    "ai_newEndpoint": "New Endpoint",
    "model": "Model",
    "apiKey": "API Key",
    "baseUrl": "Base URL (optional)",
    "parameters": "Parameters",
    "temperature": "Temperature: {{value}}",
    "maxTokens": "Max Tokens: {{value}}",
    "slidingWindowSize": "Context Length: {{value}} rounds",
    "translation_title": "Translation Settings",
    "translation_desc": "Configure translation options",
    "enableTranslation": "Enable Translation",
    "enableTranslationDesc": "Show translation for selected text",
    "targetLanguage": "Target Language",
    "showOriginal": "Show Original",
    "showOriginalDesc": "Show original text alongside translation",
    "autoTranslate": "Auto Translate",
    "autoTranslateDesc": "Automatically translate page",
    "skills_title": "Skills",
    "skills_desc": "Manage AI tool extensions",
    "addSkill": "Add Skill",
    "noSkills": "No custom skills yet. Built-in skills are automatically available.",
    "builtIn": "Built-in",
    "enabled": "Enabled",
    "disabled": "Disabled",
    "viewSkill": "View Skill",
    "editSkill": "Edit Skill",
    "skillName": "Skill Name",
    "skillNamePlaceholder": "e.g. Generate Mindmap",
    "skillDescription": "Skill Description",
    "skillDescriptionPlaceholder": "Brief description of what this skill does",
    "skillPrompt": "Skill Prompt",
    "skillPromptPlaceholder": "Describe the skill's behavior and output requirements in detail",
    "builtinNameReadOnly": "Built-in skill names cannot be modified",
    "skillUsage": "Skill Usage Instructions",
    "skillUsageSummary": "Summary",
    "skillUsageSummaryDesc": "Enter 'summarize this chapter' or 'book summary' in chat",
    "skillUsageCharacter": "Characters",
    "skillUsageCharacterDesc": "Ask 'who are the characters' or 'analyze the protagonist'",
    "skillUsageQuote": "Quotes",
    "skillUsageQuoteDesc": "Request 'find quotes' or '精彩的段落'",
    "skillUsageAnalysis": "Analysis",
    "skillUsageAnalysisDesc": "Ask 'what is the author's argument' or 'analyze the logic'",
    "vectorModel": "Vector Model",
    "vm_title": "Vector Model",
    "vm_desc": "Configure embedding model for semantic search and RAG retrieval",
    "vm_autoVectorizeOnImport": "Auto-vectorize new books",
    "vm_autoVectorizeOnImportDesc": "When enabled, imported or synced-downloaded books are queued for indexing automatically. Off by default to avoid unexpected model usage.",
    "vm_modeTitle": "Model Source",
    "vm_modeBuiltin": "Built-in Local Model",
    "vm_modeBuiltinDesc": "Download model to run locally, no API required",
    "vm_modeRemote": "Remote API",
    "vm_modeRemoteDesc": "Use external embedding API service",
    "vm_builtinModels": "Built-in Models",
    "vm_builtinDesc": "Download lightweight models to run locally within the app. First download is automatically cached.",
    "vm_download": "Download",
    "vm_loaded": "Loaded",
    "vm_clearCache": "Clear",
    "vm_clearing": "Clearing...",
    "vm_clearSuccess": "Cache cleared",
    "vm_recommended": "Recommended",
    "vm_loadError": "Load failed: {{error}}",
    "vm_remoteModels": "Remote Models",
    "vm_remoteDesc": "Connect to external embedding API service",
    "vm_noRemoteModels": "No remote model configurations yet. Add one to use external embedding API.",
    "vm_models": "Model List",
    "vm_addModel": "Add Model",
    "vm_addModelTitle": "Add New Model",
    "vm_editModel": "Edit Model",
    "vm_noModels": "No vector model configurations. Add one to enable semantic search.",
    "vm_name": "Name",
    "vm_modelId": "Model ID",
    "vm_url": "API Endpoint",
    "vm_urlHint": "Enter an API root, /v1 base, or full /embeddings URL. Save and test normalize it automatically.",
    "vm_apiKey": "API Key",
    "vm_description": "Description",
    "vm_descriptionPlaceholder": "Optional description for the model",
    "vm_dimension": "Dimension: {{dim}}",
    "vm_test": "Test",
    "vm_testing": "Testing...",
    "vm_testSuccess": "✓ Connection successful | Dimension: {{dimension}}",
    "vm_testFailed": "✗ Connection failed: {{error}}",
    "vm_testFailedWithUrl": "✗ Connection failed: {{error}} (tested URL: {{url}})",
    "vm_model_desc_miniLM": "Fast and lightweight, good general quality",
    "vm_model_desc_bgeEn": "High-quality English embeddings",
    "vm_model_desc_bgeZh": "High-quality Chinese embeddings",
    "vm_model_desc_e5": "Multi-language support, good overall performance",
    "vm_lang_en": "English",
    "vm_lang_zh": "Chinese",
    "vm_lang_multi": "100+ languages",
    "sync": "Sync",
    "syncTitle": "WebDAV Sync",
    "syncDesc": "Sync reading data across devices via WebDAV",
    "syncLayoutMigrationNotice": "Remote layout updated — please upgrade every syncing device to this version",
    "syncConnection": "Connection Settings",
    "syncUrl": "Server URL",
    "syncUrlPlaceholder": "https://dav.example.com",
    "syncUsername": "Username",
    "syncPassword": "Password",
    "syncRemoteRoot": "Remote Folder",
    "syncRemoteRootPlaceholder": "readany",
    "syncRemoteRootDesc": "Choose the remote folder used only for ReadAny sync. Nested paths are supported and will be created automatically during test or first sync. ReadAny does not scan books you already placed there; import an existing WebDAV library with \"Connect another WebDAV\".",
    "syncTestConnection": "Test Connection",
    "syncTesting": "Testing...",
    "syncTestSuccess": "Connection successful",
    "syncTestFailed": "Connection failed: {{error}}",
    "syncSave": "Save Configuration",
    "syncSaved": "Configuration saved",
    "syncStatus": "Sync Status",
    "syncNow": "Sync Now",
    "syncSyncing": "Syncing...",
    "syncLastSync": "Last Sync",
    "syncNever": "Never synced",
    "syncSuccess": "Sync completed",
    "syncFailed": "Sync failed: {{error}}",
    "syncRecordsUp": "Uploaded {{count}} records",
    "syncRecordsDown": "Downloaded {{count}} records",
    "syncFilesUp": "Uploaded {{count}} files",
    "syncFilesDown": "Downloaded {{count}} files",
    "syncFilesPartialFailed": "⚠️ Some files didn't sync ({{uploadFailed}} upload failures, {{downloadFailed}} download failures). Likely causes: remote refused to create a new folder, network blip, or permission denied. The next sync will retry automatically.",
    "syncAutoSync": "自动同步",
    "syncAutoSyncDesc": "在后台自动同步数据",
    "syncInterval": "Sync Interval",
    "syncIntervalDesc": "When auto sync is enabled, check for updates every N minutes",
    "syncIntervalMinutes": "{{count}} min",
    "syncAllowInsecure": "Allow Insecure Connection",
    "syncAllowInsecureDesc": "Skip TLS certificate verification (for self-signed certificates)",
    "syncAllowInsecureDescMobile": "Use HTTP instead of HTTPS for self-signed certificate servers",
    "syncWebdavAuthFailed": "WebDAV authentication failed. Check the username and app password.",
    "syncWebdavForbidden": "WebDAV access was denied. Check account permissions for this path.",
    "syncWebdavNotFound": "The WebDAV address or path was not found. Check the server URL and root path.",
    "syncWebdavMethodNotAllowed": "The server did not respond correctly to a WebDAV request. Make sure WebDAV is enabled.",
    "syncWebdavTimeout": "WebDAV connection timed out after {{seconds}} seconds. Check the server URL, port, and network.",
    "syncWebdavNetworkError": "Could not reach the WebDAV server. Check the network, URL, port, or certificate setup.",
    "syncWebdavDesktopScopeError": "This desktop build has not allowed that WebDAV address yet. Update to the latest build and restart the app, then try again.",
    "syncWebdavTlsError": "WebDAV TLS certificate validation failed. Check the certificate, or allow insecure connections and try again.",
    "syncWebdavServerError": "WebDAV server error ({{status}}).",
    "syncWebdavHttpError": "WebDAV request failed ({{status}}).",
    "syncWebdavUnknownError": "WebDAV request failed: {{message}}",
    "syncNotConfigured": "Not configured",
    "syncAdvanced": "Advanced Options",
    "syncForceUpload": "Full Upload",
    "syncForceUploadDesc": "Overwrite remote database, books, and covers with this device's current data.",
    "syncForceUploadConfirm": "Start a full upload? The remote database will be overwritten and matching remote books and covers will be re-uploaded.",
    "syncForceDownload": "Full Download",
    "syncForceDownloadDesc": "Overwrite this device's database, books, and covers with the remote copy.",
    "syncForceDownloadConfirm": "Start a full download? This device's database will be overwritten and remote books and covers will be downloaded again.",
    "syncDeviceId": "Device ID",
    "syncReset": "Reset Sync Data",
    "syncResetDesc": "Clear all sync metadata. Use this if sync is having issues.",
    "syncResetConfirm": "Are you sure you want to reset? This will clear all sync status and perform a full resync next time.",
    "syncResetDone": "Sync data has been reset",
    "syncDisconnect": "Disconnect",
    "syncDisconnectConfirm": "Are you sure you want to disconnect? Data on this device will not be deleted.",
    "syncChecking": "Checking...",
    "syncUploading": "Uploading database...",
    "syncDownloading": "Downloading database...",
    "syncSyncingFiles": "Syncing files...",
    "syncError": "Sync error",
    "syncDirection": "Direction: {{direction}}",
    "syncDuration": "Duration: {{ms}}ms",
    "syncConflictTitle": "Sync Conflict",
    "syncConflictDesc": "Both local and remote data have changes. Choose which version to keep.",
    "syncConflictUpload": "Upload Local",
    "syncConflictDownload": "Download Remote",
    "syncProgressDatabase": "{{operation}} in progress...",
    "syncProgressFiles": "{{operation}} files {{completed}}/{{total}}",
    "syncBackendType": "Sync Method",
    "syncWebdavDesc": "Sync via WebDAV service",
    "syncS3Desc": "Sync via S3-compatible storage",
    "syncLANDesc": "LAN quick transfer",
    "syncWebDavConfig": "WebDAV Configuration",
    "syncS3Config": "S3 Configuration",
    "syncS3Endpoint": "Service Endpoint",
    "syncS3Region": "Region",
    "syncS3Bucket": "Bucket",
    "syncS3RemoteRoot": "Sync Folder",
    "syncS3RemoteRootDesc": "Choose the folder prefix inside this bucket. Nested paths are supported, for example apps/readany.",
    "syncS3AccessKeyId": "Access Key ID",
    "syncS3SecretAccessKey": "Secret Access Key",
    "syncS3PathStyle": "Use path-style URL",
    "syncLANConfig": "LAN Transfer",
    "syncLANDescFull": "Incrementally import data from another device on the same LAN, merging library changes and downloading missing books and covers.",
    "syncLANServer": "Send This Device",
    "syncLANServerDesc": "Share this device's data for another device to import",
    "syncLANClient": "Import From Device",
    "syncLANClientDesc": "Quickly import library data from another device",
    "syncLANServerTitle": "Send This Device Data",
    "syncLANClientTitle": "Import Device Data",
    "syncLANServerStatus": {
      "idle": "Not Started",
      "starting": "Preparing...",
      "running": "Waiting for import",
      "stopping": "Stopping...",
      "error": "Error"
    },
    "syncLANQRPlaceholder": "QR code will appear here",
    "syncLANPairCode": "Pair Code",
    "syncLANServerHint": "Open ReadAny on another device and scan this QR code or enter the pair code to import this device's data there",
    "syncLANServerStart": "Start Server",
    "syncLANServerStarting": "Starting...",
    "syncLANServerStop": "Stop Server",
    "syncLANScanQR": "Scan QR Code",
    "syncLANScannerPlaceholder": "Camera preview area",
    "syncLANManualConnect": "Manual Import",
    "syncLANIP": "IP Address",
    "syncLANPort": "Port",
    "syncLANPairCodeLabel": "Pair Code",
    "syncLANInvalidQR": "Invalid QR code",
    "syncLANFillAll": "Please fill all fields",
    "syncLANConnectionFailed": "Connection failed, please check if pair code is correct",
    "syncLANConnecting": "Connecting...",
    "syncLANConnect": "Connect & Import",
    "syncLANManual": "Or manual entry",
    "syncLANScanHint": "Align the scanner with the desktop QR code",
    "syncLANImportWarningTitle": "LAN Import Notice",
    "syncLANImportWarning": "Connecting will incrementally import database changes from the server device and download missing books and covers instead of replacing this device wholesale. If the server has explicit deletions, those deletions will also sync over.",
    "syncLANImportBanner": "This LAN import now merges changes and downloads missing files instead of replacing the whole library.",
    "syncLANImportStatus": "Import Status",
    "syncLANLastImport": "Last Import",
    "syncLANPreparingImport": "Preparing import",
    "syncLANImporting": "Importing",
    "syncLANImportingFiles": "Importing files",
    "syncLANImportProgressDatabase": "Importing database...",
    "syncLANImportProgressFiles": "Importing files {{completed}}/{{total}}",
    "syncLANImportComplete": "Import completed",
    "syncLANImportedFiles": "Imported {{count}} files",
    "syncLANExpoGoUnsupported": "Expo Go does not support the LAN sender because it requires native TCP modules. Please use a custom Dev Client (expo run) or the desktop app.",
    "syncAndroidExpoGoHttpUnsupported": "Android Expo Go does not support testing this plain HTTP WebDAV endpoint. Please use HTTPS, or test again in a custom Dev Client / release build.",
    "cameraPermission": "Camera Permission",
    "cameraPermissionDesc": "Sync feature needs camera permission to scan QR code",
    "syncClose": "Close",
    "syncLANManualIPHint": "Cannot auto-detect IP address. Please enter local LAN IP manually.",
    "syncLANTauriRequired": "The LAN sender only works inside the Tauri desktop app. It looks like you're running the browser dev page, so please launch the desktop shell instead.",
    "syncLANAddress": "Address",
    "translationProvider": "Translation Engine",
    "selectModel": "Select Model",
    "noModelsFetched": "Please fetch model list in AI settings first",
    "apiKeyPlaceholder": "Enter API Key",
    "deeplKeyHint": "DeepL API Key",
    "translationModel": "Translation Model",
    "selectEngine": "Select Engine",
    "username": "Username",
    "password": "App Password",
    "autoSync": "Auto Sync",
    "autoSyncDesc": "Automatically sync data in background",
    "appearanceLanguage": "Appearance & Language",
    "storageLocation": "Library Storage Location",
    "storageLocationDesc": "Desktop books, covers, and database files are stored here. Changing the directory migrates them together to avoid filling the system drive.",
    "storageCurrentPath": "Current Directory",
    "storageTargetPath": "Target Directory",
    "storageChooseFolder": "Choose Folder",
    "storageMigrate": "Migrate to This Directory",
    "storageMigrating": "Migrating...",
    "storageResetDefault": "Restore Default Directory",
    "storageMigrationNote": "Migration moves imported books, covers, and database files together. After migration, the app restarts automatically and future imports and sync downloads also use the new directory.",
    "storageMigrationSuccess": "Migrated {{count}} files. The app will restart shortly.",
    "storageMigrationFailed": "Migration failed: {{error}}",
    "storageChooseFolderFirst": "Choose a target folder first",
    "storageNoChange": "This directory is already in use",
    "storageAlreadyDefault": "Already using the default directory",
    "aiConfig": "AI configuration",
    "aiProvider": "Provider",
    "ai_models": "models",
    "ai_namePlaceholder": "e.g. My OpenAI",
    "configImported": "Configuration imported",
    "copiedToClipboard": "Token copied to clipboard",
    "copyToken": "Copy the token below and import on another device",
    "english": "English",
    "exportConfig": "Export",
    "exportFailed": "Export failed",
    "importConfig": "Import",
    "importFailed": "Import failed",
    "invalidConfig": "Invalid configuration format",
    "pasteConfig": "Paste configuration token...",
    "simplifiedChinese": "Simplified Chinese",
    "syncConfig": "Sync configuration",
    "transferConfig": "Transfer configuration",
    "vectorConfig": "Vector configuration",
    "webdavAllowInsecure": "Allow insecure connections",
    "externalAiSettings": {
      "overview": {
        "title": "External AI Access Beta",
        "description": "Checks the CLI, Skill, client discovery folders, and MCP configuration. Repair uses the currently selected profile.",
        "mcpConfigHint": "MCP config means ReadAny appears in common client config files. Restart or open a new session to confirm the tools are actually loaded."
      },
      "cli": {
        "title": "ReadAny CLI",
        "description": "The desktop app only runs approved CLI checks, not arbitrary shell commands.",
        "notInstalledOrPath": "Not installed or unavailable in PATH",
        "runtimeEvidence": "Runtime / packaging evidence"
      },
      "agent": {
        "title": "Agent bootstrap",
        "description": "Copy this command to an external AI. It installs the ReadAny CLI and Skill, then returns an MCP config snippet.",
        "clientDiscoveryStatus": "Client discovery status",
        "clientDiscoveryEmpty": "Run diagnostics to show client Skill discovery status.",
        "mcpConfigStatus": "MCP config status",
        "mcpConfigEmpty": "Run diagnostics to show MCP config results.",
        "profileRiskWarning": "This profile allows draft writes or exports. Confirm the risk switch above before copying or running bootstrap.",
        "latestInstallResult": "Latest one-click install result"
      },
      "skill": {
        "title": "AI assistant install",
        "description": "Copy one instruction to an AI assistant and let it install Skill and MCP itself.",
        "copyToCurrentAssistant": "Copy to current AI assistant",
        "copyHint": "It will install directly using the selected profile.",
        "allClients": "All clients",
        "skillInstalled": "Skill installed",
        "pending": "Pending"
      },
      "mcp": {
        "title": "MCP access profile",
        "description": "Choose the access level for MCP. editor / publisher require explicit confirmation; installing CLI or Skill does not grant write access by itself.",
        "currentTemplate": "{{description}} Currently copying the {{client}} template.",
        "riskConfirmation": "Allow external AI to use write/export tools",
        "currentTools": "Current MCP tools"
      },
      "profileDescriptions": {
        "readonly": "Read-only access: library, chapters, notes, highlights, RAG, and diagnostic reads.",
        "editor": "Editor access: includes readonly and allows creating EPUB drafts and editing draft content.",
        "publisher": "Publisher access: includes editor and allows validate / export / notes export / knowledge export."
      },
      "clients": {
        "generic": "Generic JSON",
        "genericShort": "Generic",
        "codex": "Codex TOML",
        "agents": "Agents generic"
      },
      "output": {
        "notRun": "Not run yet.",
        "success": "Command completed successfully.",
        "exitStatus": "Command exited with status {{status}}",
        "accessUninstalled": "External AI access and CLI have been uninstalled.",
        "cliUninstalled": "ReadAny CLI has been uninstalled."
      },
      "skillPrompt": {
        "intro": "Please directly install and enable the ReadAny external AI Skill for me.",
        "execute": "Do not only explain the steps, and do not output an installation path table. Please run:",
        "mergeConfig": "If you can modify the current AI client configuration, merge the MCP config directly; otherwise give me only the shortest necessary config snippet.",
        "done": "When finished, reply only: ReadAny Skill is installed. Please restart or open a new session in the current AI client.",
        "protectBooks": "Do not modify, export, or delete my book content."
      },
      "status": {
        "betaReady": "Beta ready",
        "needsRepair": "Needs repair",
        "notReady": "Not ready",
        "available": "Available",
        "missing": "Missing",
        "passed": "Passed",
        "failed": "Failed",
        "healthy": "Healthy",
        "abnormal": "Abnormal",
        "installed": "Installed",
        "notInstalled": "Not installed",
        "complete": "Complete",
        "configured": "Configured",
        "needsPasteRestart": "Paste / restart needed",
        "notDetected": "Not detected",
        "notDetectedYet": "Not detected yet",
        "canCopy": "Can copy",
        "canConfigure": "Can configure",
        "waitingConfirmation": "Waiting confirmation",
        "exists": "Exists",
        "managed": "Managed",
        "unmanaged": "Unmanaged",
        "checked": "Checked",
        "notFound": "Not found",
        "containsReadAny": "Has readany",
        "needsConfig": "Needs config"
      },
      "actions": {
        "verify": "Verify",
        "repairExternalAI": "Repair external AI",
        "diagnose": "Diagnose",
        "install": "Install",
        "repair": "Repair",
        "uninstall": "Uninstall",
        "update": "Update",
        "copied": "Copied",
        "copyEvidence": "Copy evidence",
        "copyCommand": "Copy command",
        "copyAllCommand": "Copy all-client command",
        "oneClickInstall": "One-click install",
        "oneClickInstallAll": "One-click install all",
        "uninstallAccess": "Uninstall access",
        "copyInstructions": "Copy instructions",
        "copyConfig": "Copy config",
        "expandDetails": "Expand"
      },
      "labels": {
        "cli": "CLI",
        "doctor": "Doctor",
        "runtime": "Runtime",
        "skill": "Skill",
        "clientLinks": "Client links",
        "mcpConfig": "MCP config",
        "version": "Version",
        "profile": "Profile",
        "tools": "Tools",
        "commandSource": "Command source",
        "client": "Client",
        "skillTarget": "Skill target",
        "returnedCommand": "Returned command",
        "removedCliShim": "Removed CLI shim",
        "removedSkill": "Removed Skill",
        "distribution": "Distribution",
        "builtBundle": "Built bundle",
        "desktopResource": "Desktop resource",
        "nativeBinary": "Native binary",
        "usesNodeRuntime": "Uses Node runtime",
        "node": "Node",
        "nativeSqlite": "Native SQLite",
        "bundleRoot": "Bundle root",
        "entrypoint": "Entrypoint",
        "nodeExecutable": "Node executable",
        "cliShim": "CLI shim",
        "mcpFormat": "MCP format"
      },
      "empty": {
        "runDiagnostics": "Run diagnostics to show results."
      },
      "doctorChecks": {
        "nodeRuntime": {
          "name": "Node runtime",
          "message": "Node runtime is available at {{executable}} ({{version}})."
        },
        "nativeSqlite": {
          "name": "Native SQLite",
          "ok": "better-sqlite3 is available for library and MCP data commands.",
          "fail": "better-sqlite3 is unavailable; library and MCP data commands may fail."
        },
        "readanyHome": {
          "name": "ReadAny home",
          "ok": "ReadAny home is writable.",
          "fail": "ReadAny home is not writable."
        },
        "skill": {
          "name": "Skill",
          "ok": "ReadAny Skill is installed at {{path}}.",
          "fail": "ReadAny Skill is not installed at {{path}}."
        }
      }
    }
  }
}
