import type { TranslationMap } from '../types';

// English chunk 5/5. Source of truth for translators.
const en5: TranslationMap = {
  'settings.billing.subscription.save': '{pct}',
  'settings.billing.subscription.upgrade': 'Upgrade',
  'settings.billing.subscription.waiting': 'Waiting',
  'settings.billing.subscription.waitingPayment': 'Waiting payment',
  'settings.composio.apiKeyDesc': 'A Composio API key is currently stored on this device.',
  'settings.composio.apiKeyLabel': 'Composio API key',
  'settings.composio.apiKeyStored': 'API key stored',
  'settings.composio.apiKeyStoredPlaceholder': '••••••••••••••••',
  'settings.composio.clearedToBackend': 'Switched to Backend mode',
  'settings.composio.confirmItem1': 'An account at app.composio.dev with an API key',
  'settings.composio.confirmItem2':
    'To re-link each integration through your personal Composio account',
  'settings.composio.confirmItem3':
    "Note: Composio triggers (real-time webhooks) don't fire in Direct mode yet — only synchronous tool calls",
  'settings.composio.confirmNeedItems': "You'll need:",
  'settings.composio.confirmSwitch': 'I understand, switch to Direct',
  'settings.composio.confirmTitle': '⚠️ Switching to Direct mode',
  'settings.composio.confirmWarning':
    "Your existing integrations (Gmail, Slack, GitHub, etc. linked through OpenHuman) won't be visible — they live in the OpenHuman-managed Composio tenant.",
  'settings.composio.intro':
    'Composio integrates 250+ external apps as tools your agent can call. Choose how those tool calls are routed.',
  'settings.composio.modeDirect': 'Direct (bring your own API key)',
  'settings.composio.modeDirectDesc':
    'Calls go to backend.composio.dev directly. Sovereign / offline-friendly. Tool execution works synchronously; real-time trigger webhooks are not yet routed in direct mode (follow-up issue).',
  'settings.composio.modeManaged': 'Managed (OpenHuman handles it for you)',
  'settings.composio.modeManagedDesc':
    'OpenHuman proxies tool calls through our backend (recommended). Auth is brokered; you never paste a Composio API key. Webhooks are fully routed.',
  'settings.composio.routingMode': 'Routing mode',
  'settings.composio.saveErrorNoKey': 'Failed to save. Direct mode requires a non-empty API key.',
  'settings.composio.saving': 'Saving…',
  'settings.composio.switching': 'Switching…',
  'settings.cron.jobs.desc': 'Desc',
  'settings.cron.jobs.empty': 'No core cron jobs found.',
  'settings.cron.jobs.lastStatus': 'Last status',
  'settings.cron.jobs.loading': 'Loading cron jobs...',
  'settings.cron.jobs.loadingRuns': 'Loading runs',
  'settings.cron.jobs.nextRun': 'Next run',
  'settings.cron.jobs.pause': 'Pause',
  'settings.cron.jobs.paused': 'Enabled',
  'settings.cron.jobs.recentRuns': 'Recent runs',
  'settings.cron.jobs.removing': 'Removing',
  'settings.cron.jobs.resume': 'Resume',
  'settings.cron.jobs.runningNow': 'Running now',
  'settings.cron.jobs.saving': 'Saving…',
  'settings.cron.jobs.schedule': 'Schedule',
  'settings.cron.jobs.title': 'Core Cron Jobs',
  'settings.cron.jobs.viewRuns': 'View runs',
  'settings.localModel.deviceCapability.active': 'Active',
  'settings.localModel.deviceCapability.appliedTier': 'Applied tier',
  'settings.localModel.deviceCapability.applying': 'Applying',
  'settings.localModel.deviceCapability.cores': '{count}',
  'settings.localModel.deviceCapability.couldNotLoadPresets': 'Could not load presets',
  'settings.localModel.deviceCapability.cpu': 'CPU',
  'settings.localModel.deviceCapability.customModelIds': 'Custom model ids',
  'settings.localModel.deviceCapability.detected': 'Detected',
  'settings.localModel.deviceCapability.disabled': 'Disabled',
  'settings.localModel.deviceCapability.disabledDesc': 'Disabled desc',
  'settings.localModel.deviceCapability.downloadingModels': '(downloading models)',
  'settings.localModel.deviceCapability.downloadingSetupDesc':
    'Downloading the OllamaSetup installer (~2 GB) and unpacking it. This can take a minute on first install.',
  'settings.localModel.deviceCapability.failedToApplyPreset': 'Failed to apply preset',
  'settings.localModel.deviceCapability.gpu': 'GPU',
  'settings.localModel.deviceCapability.installFailed': 'Ollama install failed',
  'settings.localModel.deviceCapability.installFailedDesc':
    'The installer exited before Ollama was usable. Click retry to try again, or install manually from ollama.com.',
  'settings.localModel.deviceCapability.installFirst': 'Run Ollama first.',
  'settings.localModel.deviceCapability.installFirstDesc':
    'Local tiers depend on an externally managed Ollama endpoint. Start it yourself, pull the models you want, and keep using "Disabled (cloud fallback)" until the runtime is reachable.',
  'settings.localModel.deviceCapability.installOllamaFirst': 'Run Ollama first to use this tier',
  'settings.localModel.deviceCapability.installingOllama': 'Installing ollama',
  'settings.localModel.deviceCapability.loadingDeviceInfo': 'Loading device info',
  'settings.localModel.deviceCapability.localAiDisabled':
    'Local AI disabled — using cloud fallback.',
  'settings.localModel.deviceCapability.modelTier': 'Model Tier',
  'settings.localModel.deviceCapability.needsOllama': 'Needs ollama',
  'settings.localModel.deviceCapability.notDetected': 'Not detected',
  'settings.localModel.deviceCapability.ram': 'RAM',
  'settings.localModel.deviceCapability.recommended': 'Recommended',
  'settings.localModel.deviceCapability.retryInstall': 'Retrying…',
  'settings.localModel.deviceCapability.retrying': 'Retrying…',
  'settings.localModel.deviceCapability.starting': 'Starting…',
  'settings.localModel.download.audioPathPlaceholder': 'Absolute path to audio file',
  'settings.localModel.download.capabilityAssets': 'Capability Assets',
  'settings.localModel.download.downloading': 'Downloading...',
  'settings.localModel.download.embeddingPlaceholder': 'One input string per line...',
  'settings.localModel.download.noThinkMode': 'No think mode',
  'settings.localModel.download.promptPlaceholder':
    'Type any prompt and run it against the local model...',
  'settings.localModel.download.quantizationPref': 'Quantization pref',
  'settings.localModel.download.runEmbeddingTest': 'Running...',
  'settings.localModel.download.runPromptTest': 'Run Prompt Test',
  'settings.localModel.download.runSummaryTest': 'Run Summary Test',
  'settings.localModel.download.runTranscriptionTest': 'Running...',
  'settings.localModel.download.runTtsTest': 'Running...',
  'settings.localModel.download.runVisionTest': 'Running...',
  'settings.localModel.download.running': 'Running...',
  'settings.localModel.download.runningPrompt': 'Running prompt',
  'settings.localModel.download.summarizePlaceholder':
    'Paste text to summarize with the local model...',
  'settings.localModel.download.testCustomPrompt': 'Test Custom Prompt',
  'settings.localModel.download.testEmbeddings': 'Test Embeddings',
  'settings.localModel.download.testSummarization': 'Test Summarization',
  'settings.localModel.download.testVisionPrompt': 'Test Vision Prompt',
  'settings.localModel.download.testVoiceInput': 'Test Voice Input (STT)',
  'settings.localModel.download.testVoiceOutput': 'Test Voice Output (TTS)',
  'settings.localModel.download.ttsOutputPlaceholder': 'Optional output WAV path',
  'settings.localModel.download.ttsPlaceholder': 'Enter text to synthesize...',
  'settings.localModel.download.visionImagePlaceholder':
    'One image reference per line (data URI, URL, or local path marker)',
  'settings.localModel.download.visionPromptPlaceholder': 'Enter a prompt for the vision model...',
  'settings.localModel.status.allChecksPassed': 'All checks passed',
  'settings.localModel.status.artifact': 'Artifact',
  'settings.localModel.status.backend': 'Backend',
  'settings.localModel.status.binary': 'Binary',
  'settings.localModel.status.bootstrapResume': 'Bootstrap / Resume',
  'settings.localModel.status.checking': 'Checking...',
  'settings.localModel.status.checkingOllama': 'Checking ollama',
  'settings.localModel.status.customLocation': 'Custom location',
  'settings.localModel.status.customLocationDesc': 'Custom location desc',
  'settings.localModel.status.diagnosticsHint':
    'Click "Run Diagnostics" to verify Ollama is running and models are installed.',
  'settings.localModel.status.downloadingUnknown': 'Downloading (size unknown)',
  'settings.localModel.status.eta': 'Eta',
  'settings.localModel.status.expectedModels': 'Expected models',
  'settings.localModel.status.forceRebootstrap': 'Force Re-bootstrap',
  'settings.localModel.status.generationTps': 'Generation TPS',
  'settings.localModel.status.hideErrorDetails': 'Hide error details',
  'settings.localModel.status.installManually': 'Install manually',
  'settings.localModel.status.installManuallyFrom': 'Install manually from',
  'settings.localModel.status.installOllama': 'Starting…',
  'settings.localModel.status.installedModels': 'Installed models',
  'settings.localModel.status.installing': 'Installing...',
  'settings.localModel.status.installingOllama': 'Installing Ollama runtime...',
  'settings.localModel.status.issues': 'Issues',
  'settings.localModel.status.issuesFound': '{count} issue(s) found',
  'settings.localModel.status.lastLatency': 'Last Latency',
  'settings.localModel.status.model': 'Model',
  'settings.localModel.status.notFound': 'Not found',
  'settings.localModel.status.notRunning': 'Not running',
  'settings.localModel.status.ollamaBinaryPath': 'Ollama binary path',
  'settings.localModel.status.ollamaDiagnostics': 'Ollama Diagnostics',
  'settings.localModel.status.ollamaNotInstalled': 'Ollama runtime unavailable',
  'settings.localModel.status.ollamaNotInstalledDesc':
    'OpenHuman now treats Ollama as an external inference runtime. Start your own Ollama server, pull the models you want, and point workload routing at it.',
  'settings.localModel.status.progress': 'Progress',
  'settings.localModel.status.provider': 'Provider',
  'settings.localModel.status.retryBootstrap': 'Retry Bootstrap',
  'settings.localModel.status.runDiagnostics': 'Checking...',
  'settings.localModel.status.running': 'Running',
  'settings.localModel.status.runningExternalProcess': 'Running via external process',
  'settings.localModel.status.runtimeStatus': 'Runtime Status',
  'settings.localModel.status.server': 'Server',
  'settings.localModel.status.setPath': 'Setting...',
  'settings.localModel.status.setting': 'Setting...',
  'settings.localModel.status.showErrorDetails': 'Hide error details',
  'settings.localModel.status.showInstallErrorDetails': 'Hide error details',
  'settings.localModel.status.suggestedFixes': 'Suggested fixes',
  'settings.localModel.status.thenSetPath': 'Then set path',
  'settings.localModel.status.triggering': 'Triggering...',
  'settings.localModel.status.unavailable': 'Unavailable',
  'settings.localModel.status.working': 'Working...',
  'settings.developerMenu.ai.title': 'AI Configuration',
  'settings.developerMenu.ai.desc':
    'Cloud providers, local Ollama models, and per-workload routing',
  'settings.developerMenu.screenAwareness.title': 'Screen Awareness',
  'settings.developerMenu.screenAwareness.desc':
    'Screen capture permissions, monitoring policy, and session controls',
  'settings.developerMenu.messagingChannels.title': 'Messaging Channels',
  'settings.developerMenu.messagingChannels.desc':
    'Configure Telegram/Discord auth modes and default channel routing',
  'settings.developerMenu.tools.title': 'Tools',
  'settings.developerMenu.tools.desc':
    'Enable or disable capabilities OpenHuman can use on your behalf',
  'settings.developerMenu.agentChat.title': 'Agent Chat',
  'settings.developerMenu.agentChat.desc':
    'Test agent conversation with model and temperature overrides',
  'settings.developerMenu.cronJobs.title': 'Cron Jobs',
  'settings.developerMenu.cronJobs.desc': 'View and configure scheduled jobs for runtime skills',
  'settings.developerMenu.localModelDebug.title': 'Local Model Debug',
  'settings.developerMenu.localModelDebug.desc':
    'Ollama config, asset downloads, model tests, and diagnostics',
  'settings.developerMenu.webhooks.title': 'Webhooks',
  'settings.developerMenu.webhooks.desc':
    'Inspect runtime webhook registrations and captured request logs',
  'settings.developerMenu.intelligence.title': 'Intelligence',
  'settings.developerMenu.intelligence.desc':
    'Memory workspace, subconscious engine, dreams, and settings',
  'settings.developerMenu.notificationRouting.title': 'Notification Routing',
  'settings.developerMenu.notificationRouting.desc':
    'AI importance scoring and orchestrator escalation for integration alerts',
  'settings.developerMenu.composeioTriggers.title': 'ComposeIO Triggers',
  'settings.developerMenu.composeioTriggers.desc': 'View ComposeIO trigger history and archive',
  'settings.developerMenu.composioRouting.title': 'Composio Routing (Direct Mode)',
  'settings.developerMenu.composioRouting.desc':
    'Bring your own Composio API key and route calls directly to backend.composio.dev',
  'settings.developerMenu.integrationTriggers.title': 'Integration Triggers',
  'settings.developerMenu.integrationTriggers.desc':
    'Configure AI triage settings for Composio integration triggers',
  'settings.appearance.menuDesc': 'Pick light, dark, or match your system theme',
  'settings.mascot.active': 'Active',
  'settings.mascot.characterDesc': 'Character desc',
  'settings.mascot.characterHeading': 'Character heading',
  'settings.mascot.colorDesc': 'Color desc',
  'settings.mascot.colorHeading': 'Color heading',
  'settings.mascot.loadingLibrary': 'Loading OpenHuman library…',
  'settings.mascot.localDefault': 'Local OpenHuman (default)',
  'settings.mascot.menuTitle': 'Mascot',
  'settings.mascot.menuDesc': 'Pick the mascot color used across the app',
  'settings.mascot.noCharacters': 'No OpenHuman characters are available yet',
  'settings.mascot.noColorVariants': 'No color variants',
  'settings.mascot.voice.current': 'current',
  'settings.mascot.voice.customDesc':
    'Find voice ids at api.elevenlabs.io/v1/voices or your ElevenLabs dashboard. Only the id is stored — your API key stays on the backend.',
  'settings.mascot.voice.customHeading': 'Custom voice id',
  'settings.mascot.voice.customOption': 'Other (paste voice id)…',
  'settings.mascot.voice.desc':
    'Pick the ElevenLabs voice the mascot uses for spoken replies. Filter by gender, pick from the curated list, paste a custom id, or let the app pick a voice that matches your interface language.',
  'settings.mascot.voice.genderFemale': 'Female',
  'settings.mascot.voice.genderHeading': 'Voice gender',
  'settings.mascot.voice.genderMale': 'Male',
  'settings.mascot.voice.heading': 'Voice',
  'settings.mascot.voice.preset': 'Voice preset',
  'settings.mascot.voice.presetHeading': 'Voice preset',
  'settings.mascot.voice.preview': 'Preview voice',
  'settings.mascot.voice.previewError': 'Voice preview failed',
  'settings.mascot.voice.previewing': 'Previewing…',
  'settings.mascot.voice.reset': 'Reset to default',
  'settings.mascot.voice.useLocaleDefault': 'Match the app language',
  'settings.mascot.voice.useLocaleDefaultDesc':
    'Auto-pick a voice for the current interface language.',
  'settings.memoryWindow.balanced.badge': 'Recommended',
  'settings.memoryWindow.balanced.hint':
    'Sensible default — good continuity without burning extra tokens on every run.',
  'settings.memoryWindow.balanced.label': 'Balanced',
  'settings.memoryWindow.description':
    'How much remembered context OpenHuman injects into every new agent run. Larger windows feel more aware of past conversations but use more tokens — and cost more — on every run.',
  'settings.memoryWindow.extended.badge': 'More context',
  'settings.memoryWindow.extended.hint':
    'More long-term memory injected into each run. Higher token cost per turn.',
  'settings.memoryWindow.extended.label': 'Extended',
  'settings.memoryWindow.maximum.badge': 'Highest cost',
  'settings.memoryWindow.maximum.hint':
    'The largest safe window. Best continuity, meaningfully higher token bill on every run.',
  'settings.memoryWindow.maximum.label': 'Maximum',
  'settings.memoryWindow.minimal.badge': 'Cheapest',
  'settings.memoryWindow.minimal.hint':
    'Smallest memory window. Cheapest, fastest, least continuity between runs.',
  'settings.memoryWindow.minimal.label': 'Minimal',
  'settings.memoryWindow.title': 'Long-term memory window',
  'settings.screenIntel.permissions.accessibility': 'Accessibility',
  'settings.screenIntel.permissions.grantHint': 'Grant hint',
  'settings.screenIntel.permissions.inputMonitoring': 'Input Monitoring',
  'settings.screenIntel.permissions.macosAppliesPrivacy': 'Macos applies privacy',
  'settings.screenIntel.permissions.openInputMonitoring': 'Requesting…',
  'settings.screenIntel.permissions.refreshStatus': 'Refreshing…',
  'settings.screenIntel.permissions.refreshing': 'Refreshing…',
  'settings.screenIntel.permissions.requestAccessibility': 'Requesting…',
  'settings.screenIntel.permissions.requestScreenRecording': 'Requesting…',
  'settings.screenIntel.permissions.requesting': 'Requesting…',
  'settings.screenIntel.permissions.restartRefresh': 'Restarting core…',
  'settings.screenIntel.permissions.restartingCore': 'Restarting core…',
  'settings.screenIntel.permissions.screenRecording': 'Screen Recording',
  'settings.screenIntel.permissions.title': 'Permissions',
  'skills.card.moreActions': 'More actions',
  'skills.create.allowedTools': 'Allowed tools',
  'skills.create.author': 'Author',
  'skills.create.authorPlaceholder': 'Your name',
  'skills.create.commaSeparated': '(comma-separated)',
  'skills.create.createBtn': 'Create skill',
  'skills.create.createError': 'Could not create skill',
  'skills.create.creating': 'Creating…',
  'skills.create.description': 'Description',
  'skills.create.descriptionPlaceholder': 'What does this skill do?',
  'skills.create.license': 'License',
  'skills.create.name': 'Name',
  'skills.create.namePlaceholder': 'e.g. Trade Journal',
  'skills.create.scope': 'Scope',
  'skills.create.scopeProjectHint': '/.openhuman/skills/',
  'skills.create.scopeUserHint':
    'Written to ~/.openhuman/skills/<slug>/SKILL.md — available across all workspaces.',
  'skills.create.slugLabel': 'Slug label',
  'skills.create.subtitle': 'SKILL.md',
  'skills.create.tags': 'Tags',
  'skills.create.title': 'New skill',
  'skills.detail.allowedTools': 'Allowed tools',
  'skills.detail.author': 'Author',
  'skills.detail.bundledResources': 'Bundled resources',
  'skills.detail.closeAriaLabel': 'Close skill details',
  'skills.detail.location': 'Location',
  'skills.detail.noBundledResources': 'No bundled resources.',
  'skills.detail.tags': 'Tags',
  'skills.detail.warnings': 'Warnings',
  'skills.install.fetchLog': 'Fetch log',
  'skills.install.installBtn': 'Installing…',
  'skills.install.installComplete': 'Install complete',
  'skills.install.installing': 'Installing…',
  'skills.install.parseWarnings': 'Parse warnings',
  'skills.install.rawError': 'Raw error',
  'skills.install.timeoutHint': '(seconds, optional)',
  'skills.install.timeoutLabel': 'Timeout label',
  'skills.install.title': 'Install skill from URL',
  'skills.install.urlLabel': 'Skill URL',
  'skills.meetingBots.bannerDesc':
    'Drop a Google Meet link and OpenHuman joins as a guest, talks, listens, and waves back.',
  'skills.meetingBots.bannerTitle': 'Send OpenHuman to a meeting',
  'skills.meetingBots.busyTitle': 'OpenHuman is busy',
  'skills.meetingBots.comingSoon': 'Coming soon',
  'skills.meetingBots.couldNotStartTitle': 'Could not start OpenHuman',
  'skills.meetingBots.displayName': 'Display name',
  'skills.meetingBots.failedToStart': 'Failed to start OpenHuman.',
  'skills.meetingBots.joiningMessage': 'It should appear as a participant in a few seconds.',
  'skills.meetingBots.joiningTitle': 'OpenHuman is joining the meeting',
  'skills.meetingBots.meetingLink': 'Meeting link',
  'skills.meetingBots.modalAriaLabel': 'Send OpenHuman to a meeting',
  'skills.meetingBots.modalDesc':
    'OpenHuman joins as an anonymous guest, streams its video into the call, and replies via the agent.',
  'skills.meetingBots.modalTitle': 'Send OpenHuman to a meeting',
  'skills.meetingBots.newBadge': 'New',
  'skills.meetingBots.sendTo': 'Send to',
  'skills.meetingBots.starting': 'Starting…',
  'skills.resource.preview.closeAriaLabel': 'Close preview',
  'skills.resource.preview.failed': 'Preview failed',
  'skills.resource.preview.loading': 'Loading preview…',
  'skills.resource.tree.empty': 'No bundled resources.',
  'skills.search.placeholder': 'Placeholder',
  'skills.setup.autocomplete.acceptKey': 'Accept key',
  'skills.setup.autocomplete.activeDesc': 'Active desc',
  'skills.setup.autocomplete.activeTitle': 'Auto-Complete is Active',
  'skills.setup.autocomplete.customizeSettings': 'Customize settings',
  'skills.setup.autocomplete.debounce': 'Debounce',
  'skills.setup.autocomplete.description': 'Description',
  'skills.setup.autocomplete.enableBtn': 'Enabling...',
  'skills.setup.autocomplete.enableError': 'Failed to enable autocomplete',
  'skills.setup.autocomplete.enabling': 'Enabling...',
  'skills.setup.autocomplete.notSupported': 'Not supported',
  'skills.setup.autocomplete.stepEnable': 'Enable inline completions',
  'skills.setup.autocomplete.stepSuccess': 'Ready to go',
  'skills.setup.autocomplete.stylePreset': 'Style preset',
  'skills.setup.autocomplete.stylePresetValue': 'Balanced (configurable later)',
  'skills.setup.autocomplete.title': 'Text Auto-Complete',
  'skills.setup.screenIntel.activeDesc': 'Active desc',
  'skills.setup.screenIntel.activeTitle': 'Screen Intelligence is Enabled',
  'skills.setup.screenIntel.advancedSettings': 'Advanced settings',
  'skills.setup.screenIntel.allGranted': 'All permissions granted',
  'skills.setup.screenIntel.captureMode': 'Capture mode',
  'skills.setup.screenIntel.captureModeValue': 'All windows (configurable later)',
  'skills.setup.screenIntel.deniedHint':
    'After granting permissions in System Settings, click below to restart and pick up the changes.',
  'skills.setup.screenIntel.enableBtn': 'Enabling...',
  'skills.setup.screenIntel.enableDesc': 's on your screen and feed useful context into your agent',
  'skills.setup.screenIntel.enableError': 'Failed to enable Screen Intelligence',
  'skills.setup.screenIntel.enabling': 'Enabling...',
  'skills.setup.screenIntel.grant': 'Opening...',
  'skills.setup.screenIntel.granted': 'Granted',
  'skills.setup.screenIntel.macosOnly': 'Macos only',
  'skills.setup.screenIntel.opening': 'Opening...',
  'skills.setup.screenIntel.panicHotkey': 'Panic hotkey',
  'skills.setup.screenIntel.permAccessibility': 'Accessibility',
  'skills.setup.screenIntel.permInputMonitoring': 'Input Monitoring',
  'skills.setup.screenIntel.permScreenRecording': 'Screen Recording',
  'skills.setup.screenIntel.permissionsDesc': 'Permissions desc',
  'skills.setup.screenIntel.refreshStatus': 'Refresh status',
  'skills.setup.screenIntel.restartRefresh': 'Restarting...',
  'skills.setup.screenIntel.restarting': 'Restarting...',
  'skills.setup.screenIntel.stepEnable': 'Enable the skill',
  'skills.setup.screenIntel.stepPermissions': 'Grant permissions',
  'skills.setup.screenIntel.stepSuccess': 'Ready to go',
  'skills.setup.screenIntel.title': 'Screen Intelligence',
  'skills.setup.screenIntel.visionModel': 'Vision model',
  'skills.setup.voice.activation': 'Activation',
  'skills.setup.voice.activeDescPrefix': 'Fn',
  'skills.setup.voice.activeDescSuffix': 'Fn',
  'skills.setup.voice.activeTitle': 'Voice Intelligence is Active',
  'skills.setup.voice.customizeSettings': 'Customize settings',
  'skills.setup.voice.downloadSttBtn': 'Download stt btn',
  'skills.setup.voice.enableDesc': 'Enable desc',
  'skills.setup.voice.hotkey': 'Hotkey',
  'skills.setup.voice.startBtn': 'Starting...',
  'skills.setup.voice.startError': 'Failed to start voice server',
  'skills.setup.voice.starting': 'Starting...',
  'skills.setup.voice.stepEnable': 'Start voice server',
  'skills.setup.voice.stepSetup': 'Model download required',
  'skills.setup.voice.stepSuccess': 'Ready to go',
  'skills.setup.voice.sttNotReady': 'Speech-to-text model not ready',
  'skills.setup.voice.sttNotReadyDesc':
    'Voice Intelligence requires a local Whisper model for transcription. Download it from the Local Model settings.',
  'skills.setup.voice.sttReady': 'Speech-to-text model ready',
  'skills.setup.voice.sttReturnHint': 'Stt return hint',
  'skills.setup.voice.title': 'Voice Intelligence',
  'skills.uninstall.couldNotUninstall': 'Could not uninstall',
  'skills.uninstall.description':
    'This permanently deletes the skill directory and all its bundled resources. The agent will stop seeing it at the next turn.',
  'skills.uninstall.title': 'Uninstall',
  'skills.uninstall.uninstallBtn': 'Uninstall',
  'skills.uninstall.uninstalling': 'Uninstalling…',
  'upsell.global.limitMessage': 'Upgrade your plan or top up credits to continue',
  'upsell.global.limitTitle': 'You',
  'upsell.global.nearLimitMessage':
    "You've used {pct}% of your usage limit. Upgrade for higher limits.",
  'upsell.global.nearLimitTitle': 'Approaching usage limit',
  'upsell.usageLimit.bodyBudget':
    "You've hit your weekly limit.{reset} Upgrade your plan or top up credits to avoid limits.",
  'upsell.usageLimit.bodyRate':
    "You've hit your 10-hour inference rate limit.{reset} Upgrade for higher limits.",
  'upsell.usageLimit.heading': 'Usage Limit Reached',
  'upsell.usageLimit.notNow': 'Not now',
  'upsell.usageLimit.perWindow': '{amount}',
  'upsell.usageLimit.planIncludes': '{plan}',
  'upsell.usageLimit.resetsIn': 'It resets {time}.',
  'upsell.usageLimit.upgradePlan': 'Upgrade plan',
  'upsell.usageLimit.weeklyInference': '{amount}',
  'walkthrough.tooltip.letsGo': "Let's go!",
  'walkthrough.tooltip.next': 'Next →',
  'walkthrough.tooltip.skip': 'Skip tour',
  'walkthrough.tooltip.stepCounter': '{n} of {total}',
  'webhooks.activity.empty': 'Empty',
  'webhooks.activity.title': 'Recent Activity',
  'webhooks.composioHistory.empty': 'Empty',
  'webhooks.composioHistory.metadataId': 'Metadata ID',
  'webhooks.composioHistory.metadataUuid': 'Metadata UUID',
  'webhooks.composioHistory.payload': 'Payload',
  'webhooks.composioHistory.title': 'ComposeIO Trigger History',
  'webhooks.tunnels.active': 'Active',
  'webhooks.tunnels.createFailed': 'Failed to create tunnel',
  'webhooks.tunnels.creating': 'Creating...',
  'webhooks.tunnels.deleteFailed': 'Failed to delete tunnel',
  'webhooks.tunnels.descriptionPlaceholder': 'Description (optional)',
  'webhooks.tunnels.echo': 'Echo',
  'webhooks.tunnels.empty': 'Empty',
  'webhooks.tunnels.enableEcho': 'Remove Echo',
  'webhooks.tunnels.inactive': 'Active',
  'webhooks.tunnels.namePlaceholder': 'Tunnel name (e.g. telegram-bot)',
  'webhooks.tunnels.newTunnel': 'New tunnel',
  'webhooks.tunnels.removeEcho': 'Remove Echo',
  'webhooks.tunnels.title': 'Webhook Tunnels',
  'webhooks.tunnels.toggleFailed': 'Failed to toggle echo',
  'composio.authExpired': 'Auth expired',
  'composio.reconnect': 'Reconnect',
  'composio.previewBadge': 'Preview',
  'composio.previewTooltip':
    'Agent integration coming soon — you can connect, but the agent can’t use this toolkit yet.',
  'composio.directModeRequiresKey': 'Failed to save. Direct mode requires a non-empty API key.',
  'composio.notYetRouted': 'not yet routed',
  'composio.triggers.loading': 'Loading…',
  'conversations.taskKanban.todo': 'To do',
  'settings.composio.loading': 'Loading…',
  'settings.mascot.noCharactersAvailable': 'No OpenHuman characters are available yet',
  'skills.uninstall.confirmTitle': 'Uninstall {name}?',
  'conversations.taskKanban.blocked': 'Blocked',
  'conversations.taskKanban.done': 'Done',
  'conversations.taskKanban.inProgress': 'In progress',
  'intelligence.memoryChunk.detail.copiedHint': 'copied',
  'settings.composio.notYetRouted': 'not yet routed',
  'settings.localModel.download.manageExternal': 'Manage this model in your external runtime.',
  'settings.localModel.status.manageOllamaExternal':
    'Manage the Ollama process and model pulls outside OpenHuman, then rerun diagnostics.',
  'settings.localModel.status.ollamaDocs': 'Ollama docs',
  'settings.localModel.status.thenRetry':
    'for setup instructions, then retry after your runtime is reachable.',
  'settings.appearance.title': 'Appearance',
  'settings.appearance.themeHeading': 'Theme',
  'settings.appearance.themeAria': 'Theme',
  'settings.appearance.modeLight': 'Light',
  'settings.appearance.modeLightDesc': 'Bright surfaces, dark text.',
  'settings.appearance.modeDark': 'Dark',
  'settings.appearance.modeDarkDesc': 'Dim surfaces, easier on the eyes after dusk.',
  'settings.appearance.modeSystem': 'Match system',
  'settings.appearance.modeSystemDesc': 'Follow your OS appearance setting.',
  'settings.appearance.helperText':
    'Dark mode switches the entire app — chat, settings, panels — to a dim palette. "Match system" follows your OS appearance and updates live.',
  'settings.mascot.characterPreview': 'Preview',
  'settings.mascot.characterStates': 'states',
  'settings.mascot.characterVisemes': 'visemes',
  'settings.mascot.colorAria': 'OpenHuman color',
  'settings.mascot.colorBlack': 'Black',
  'settings.mascot.colorBurgundy': 'Burgundy',
  'settings.mascot.colorGreen': 'Green',
  'settings.mascot.colorNavy': 'Navy',
  'settings.mascot.colorYellow': 'Yellow',
  'settings.mascot.libraryUnavailable': 'OpenHuman library unavailable',
  'settings.mascot.title': 'OpenHuman',
  'settings.developerMenu.mcpServer.title': 'MCP Server',
  'settings.developerMenu.mcpServer.desc': 'Configure external MCP clients to connect to OpenHuman',
  'settings.mcpServer.title': 'MCP Server',
  'settings.mcpServer.toolsSectionTitle': 'Available Tools',
  'settings.mcpServer.toolsSectionDesc':
    'Tools exposed via the MCP stdio server when running openhuman-core mcp',
  'settings.mcpServer.configSectionTitle': 'Client Configuration',
  'settings.mcpServer.configSectionDesc':
    'Select your MCP client to generate the correct configuration snippet',
  'settings.mcpServer.copySnippet': 'Copy to Clipboard',
  'settings.mcpServer.copied': 'Copied!',
  'settings.mcpServer.openConfigFile': 'Open Config File',
  'settings.mcpServer.binaryPathNotFound':
    'OpenHuman binary not found. If running from source, build with: cargo build --bin openhuman-core',
  'settings.mcpServer.openConfigError': 'Failed to open config file',
  'settings.mcpServer.clientClaudeDesktop': 'Claude Desktop',
  'settings.mcpServer.clientCursor': 'Cursor',
  'settings.mcpServer.clientCodex': 'Codex',
  'settings.mcpServer.clientZed': 'Zed',
  'settings.mcpServer.configFilePath': 'Config file',
  'settings.mcpServer.clientSelectorAriaLabel': 'MCP client selector',
};

export default en5;
