open-design/apps/web/src/i18n/locales/es-ES.ts
BayesWang af4a62b69a
Add configurable project locations (#2041)
* add daemon project location support

* wire project locations into web settings

* localize project location settings

* move default project location to settings

* polish project location selection cards

* fix project location i18n gaps

* fix external project validation cleanup
2026-05-31 04:47:45 +00:00

1722 lines
98 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import type { Dict } from '../types';
import { en } from './en';
export const esES: Dict = {
...en,
'chat.amrCard.switchTitle': 'Falló la llamada al modelo — esta ejecución está en pausa',
'chat.amrCard.switchBody': 'Cambia al servicio oficial de modelos AMR de Open Design — sin configurar API Key. Tras iniciar sesión, autorizar y recargar, esta ejecución se reintentará automáticamente.',
'chat.amrCard.chipOfficial': 'Alojamiento oficial',
'chat.amrCard.chipNoKey': 'Sin API Key',
'chat.amrCard.chipAutoRetry': 'Reintento automático tras iniciar sesión',
'chat.amrCard.switchCta': 'Cambiar a AMR y reintentar',
'chat.amrError.authMessage': 'Tu cuenta de AMR aún no está autorizada. Autorízala y esta ejecución se reintentará automáticamente.',
'chat.amrError.balanceMessage': 'Tu saldo de AMR se ha agotado. Recarga para continuar esta ejecución.',
'chat.amrError.authorizeCta': 'Autorizar y reintentar',
'chat.amrError.rechargeCta': 'Recargar AMR',
'chat.antigravityError.launchTerminalCta': 'Sign in via terminal',
'chat.antigravityError.launchSwitchModelCta': 'Switch model in terminal',
'plugins.actions.copyInstallCommand': 'Copiar comando de instalación',
'plugins.actions.copyPluginId': 'Copiar ID del plugin',
'plugins.actions.copyReadmeBadge': 'Copiar insignia README',
'plugins.actions.openSourceGithub': 'Abrir código fuente en GitHub',
'plugins.actions.openSource': 'Abrir código fuente',
'plugins.actions.openHomepage': 'Abrir página de inicio',
'plugins.actions.openMarketplace': 'Abrir en el marketplace',
'workingDirPicker.title': "Folder",
'workingDirPicker.homeTitle': "Choose where this project should live",
'workingDirPicker.processing': "Processing…",
'workingDirPicker.select': "Choose working directory",
'workingDirPicker.clearAria': "Clear working directory",
'workingDirPicker.replaceFailed': "Could not replace working directory",
'workingDirPicker.unavailable': "Folder picker is unavailable in this build. Run the desktop app to pick a folder.",
'workingDirPicker.openUnavailable': "Open this project in the desktop app to show the folder.",
'workingDirPicker.openFailed': "Could not show this folder",
'workingDirPicker.showInFileManager': "Show in file manager",
'workingDirPicker.replace': "Clear and replace directory…",
'workingDirPicker.recent': "Recent directories",
'handoff.toTarget': 'Hand off to {target}',
'handoff.action': 'Hand off',
'handoff.fallbackTitle': 'No editors found on $PATH - opens in {target}',
'handoff.chooseTargetAria': 'Choose hand-off target',
'handoff.notInstalled': 'Not installed',
'handoff.notDetectedTitle': '{target} - not detected on $PATH',
'homeHero.promptExamples': "Ejemplos",
'homeHero.footer.designSystem': "Estilo",
'homeHero.footer.autoDesignSystem': "Auto",
'homeHero.footer.autoDesignSystemSummary': "Elige automáticamente el sistema de diseño y estilo visual más adecuados para el prompt actual.",
'homeHero.footer.ratio': "Proporción",
'homeHero.footer.duration': "Duración",
'homeHero.footer.resolution': "Resolución",
'homeHero.footer.speakerNotes': "Notes",
'homeHero.footer.noSpeakerNotes': "Sin notas",
'homeHero.footer.availableCount': "{n} available",
'homeHero.footer.noMatches': "No matches",
'homeHero.moreShortcuts': "Más",
'common.cancel': 'Cancelar',
'common.save': 'Guardar',
'common.close': 'Cerrar',
'common.delete': 'Eliminar',
'common.rename': 'Renombrar',
'common.edit': 'Editar',
'common.preview': 'Vista previa',
'common.share': 'Compartir',
'common.search': 'Buscar',
'common.searchEllipsis': 'Buscar…',
'common.loading': 'Cargando…',
'common.all': 'Todos',
'common.none': 'Ninguno',
'common.default': 'Predeterminado',
'common.installed': 'instalado',
'common.notInstalled': 'no instalado',
'common.active': 'activo',
'common.offline': 'sin conexión',
'common.selected': 'seleccionado',
'common.create': 'Crear',
'common.openPreview': 'Abrir vista previa',
'common.exitFullscreen': 'Salir de pantalla completa',
'common.fullscreen': 'Pantalla completa',
'common.openInNewTab': 'Abrir en pestaña nueva',
'common.exportPdf': 'Exportar como PDF',
'common.exportZip': 'Descargar como .zip',
'common.exportHtml': 'Exportar como HTML independiente',
'common.exportImage': 'Exportar como imagen',
'common.exportImageFailed': 'Error al capturar la imagen. Inténtalo de nuevo o usa la herramienta de captura de pantalla de tu navegador.',
'common.justNow': 'justo ahora',
'common.minutesAgo': 'hace {n} min',
'common.hoursAgo': 'hace {n} h',
'common.daysAgo': 'hace {n} d',
'common.weeksAgo': '{n}w ago',
'common.now': 'ahora',
'common.minutesShort': '{n} min',
'common.hoursShort': '{n} h',
'common.daysShort': '{n} d',
'common.untitled': 'Sin título',
'app.brand': 'Open Design',
'app.brandPill': 'Vista previa de investigación',
'app.brandSubtitle': 'por Nexu Labs',
'app.welcomeLoading': 'Cargando espacio de trabajo…',
'settings.welcomeKicker': "",
'settings.welcomeTitle': "Welcome",
'settings.welcomeSubtitle': "",
'settings.onboardingCreateTitle': 'Start from a brief',
'settings.onboardingCreateBody':
'Describe the site, app, deck, image, or video you want. Open Design will create a project and keep the work editable.',
'settings.onboardingMemoryTitle': 'Save working context',
'settings.onboardingMemoryBody':
'Add preferences, project facts, and recurring rules so future chats pick up the right context.',
'settings.onboardingSystemsTitle': 'Bring your design system',
'settings.onboardingSystemsBody':
'Pick or create a brand system so generated work follows real colors, typography, and product language.',
'settings.onboardingExecutionTitle': 'Choose how generation runs',
'settings.onboardingExecutionBody':
'Official CLI with one-click setup and ready-to-use defaults. Use one key to choose from many models with better pricing.',
'settings.onboardingAmrCloudBenefitOfficial': 'Recomendado oficialmente',
'settings.onboardingAmrCloudBenefitReady': 'Sin despliegue',
'settings.onboardingAmrCloudBenefitModels': 'Compatible con Claude Opus 4.8',
'settings.onboardingAmrCloudBenefitPricing': 'SOTA Harness',
'settings.onboardingAmrCloudUpcomingLabel': 'Próximamente',
'settings.onboardingAmrCloudUpcomingImageVideo': 'Imagen y video',
'settings.onboardingAmrCloudUpcomingSkills': 'Skills masivas',
'settings.onboardingAmrCloudUpcomingRouting': 'Enrutamiento inteligente',
'settings.onboardingAmrModelSourceLabel': 'AMR CLI',
'settings.onboardingAmrCloudAuthorizeAction': 'Autorizar AMR',
'settings.onboardingAmrCloudAuthorizedAction': 'Autorizado',
'settings.onboardingStepConnect': "Connect",
'settings.onboardingStepDesignSystem': "Design system",
'settings.onboardingStepProfile': "About you",
'settings.onboardingConnectTitle': "Choose a runtime",
'settings.onboardingConnectBody': "",
'settings.onboardingRecommended': "Recommended",
'settings.onboardingLocalTitle': "Local coding agent",
'settings.onboardingLocalBody': "Use an installed CLI such as Claude Code, Codex, Cursor, Gemini, or OpenCode.",
'settings.onboardingLocalAction': "Open CLI settings",
'settings.onboardingCliScanHint': "This usually takes 5-10 seconds.",
'settings.onboardingByokTitle': "Bring your own key",
'settings.onboardingByokBody': "Use your own model provider credentials.",
'settings.onboardingByokAction': "Open BYOK settings",
'settings.onboardingDesignTitle': "Design system",
'settings.onboardingDesignBody': "Generate once, reuse everywhere.",
'settings.onboardingDesignIntroGenerateTitle': "Generate from existing work",
'settings.onboardingDesignIntroGenerateBody': "Upload your design system from GitHub or local code repositories, Figma files, images, and other content assets.",
'settings.onboardingDesignIntroReuseTitle': "Reuse in future work",
'settings.onboardingDesignIntroReuseBody': "Future prototypes, slides, and other content can reference your existing fonts, spacing, logo style, and color tone.",
'settings.onboardingDesignIntroSkipTitle': "Optional for now",
'settings.onboardingDesignIntroSkipBody': "Skip this step if you want to start without generating a design system.",
'settings.onboardingGithubTitle': "Import from GitHub",
'settings.onboardingGithubBody': "Use a frontend repository.",
'settings.onboardingUploadTitle': "Upload local files",
'settings.onboardingUploadBody': "Add project files, screenshots, CSS, docs, or assets.",
'settings.onboardingPromptTitle': "Generate from prompt",
'settings.onboardingPromptBody': "Describe the product or brand.",
'settings.onboardingProfileTitle': "About you",
'settings.onboardingProfileBody': "Optional details for better defaults.",
'settings.onboardingRoleLabel': "Your role",
'settings.onboardingOrgSizeLabel': "Organization size",
'settings.onboardingUseCaseLabel': "Use case",
'settings.onboardingSourceLabel': "Where did you hear about us?",
'settings.onboardingSelectPlaceholder': "Select one",
'settings.onboardingSelectMultiplePlaceholder': "Select one or more",
'settings.onboardingOrgSolo': "Solo / personal (1)",
'settings.onboardingOrgTeam': "Small team (2-10)",
'settings.onboardingOrgStartup': "Startup / SMB (11-50)",
'settings.onboardingOrgGrowth': "Growth company (51-200)",
'settings.onboardingOrgMidMarket': "Mid-market (201-1000)",
'settings.onboardingOrgEnterprise': "Enterprise (1000+)",
'settings.onboardingRolePm': "📋 Product manager",
'settings.onboardingRoleDesigner': "🎨 Designer",
'settings.onboardingRoleEngineer': "💻 Engineer",
'settings.onboardingRoleMarketing': "📣 Marketing",
'settings.onboardingRoleGrowth': "📈 Growth",
'settings.onboardingRoleOps': "⚙️ Operations",
'settings.onboardingRoleFounder': "🚀 Founder / executive",
'settings.onboardingRoleStudent': "🎓 Student / educator",
'settings.onboardingRoleOther': "✨ Other",
'settings.onboardingUseProduct': "🎨 Product design",
'settings.onboardingUseDesignSystem': "🧩 Design system",
'settings.onboardingUsePrototype': "📱 Prototype / app UI",
'settings.onboardingUseLanding': "🌐 Landing pages",
'settings.onboardingUseAds': "📣 Ads / social content",
'settings.onboardingUseDashboard': "📊 Dashboards / internal tools",
'settings.onboardingUseDeck': "🖥️ Presentation / deck",
'settings.onboardingUseMarketing': "📈 Marketing / growth",
'settings.onboardingUseEngineering': "🤝 Engineering handoff",
'settings.onboardingUseAgency': "💼 Agency / client work",
'settings.onboardingSourceGithub': "🐙 GitHub",
'settings.onboardingSourceFriend': "👥 Friend or coworker",
'settings.onboardingSourceSocial': "📱 Social media",
'settings.onboardingSourceProductHunt': "🅿️ Product Hunt",
'settings.onboardingSourceCommunity': "💬 Design / AI community",
'settings.onboardingSourceYoutube': "▶️ YouTube",
'settings.onboardingSourceBlog': "📰 Blog or newsletter",
'settings.onboardingSourceAiTool': "✨ AI tool recommendation",
'settings.onboardingSourceSearch': "🔍 Search",
'settings.onboardingSourceEvent': "🎤 Event or community",
'settings.onboardingBack': "Back",
'settings.onboardingContinue': "Continue",
'settings.onboardingFinish': "Finish setup",
'settings.onboardingSkip': "Skip for now",
'settings.kicker': 'Ajustes',
'settings.title': 'Modo de ejecución',
'settings.subtitle': 'Elige entre CLI local y BYOK.',
'settings.modeAria': 'Modo de ejecución',
'settings.protocolAria': 'Protocolo de API',
'settings.modeDaemon': 'CLI local',
'settings.modeDaemonHelp': 'Ejecuta a través de una CLI de agente de código en tu máquina',
'settings.modeDaemonOffline': 'El daemon no está en ejecución',
'settings.modeDaemonOfflineMeta': 'daemon sin conexión',
'settings.modeDaemonInstalledMeta': '{count} instalados',
'settings.modeApi': 'Proveedor de API',
'settings.modeApiMeta': 'BYOK',
'settings.codeAgent': 'Agente de código',
'settings.codeAgentHint':
'Detectado al escanear tu PATH. Elige la CLI por la que quieres que pasen las generaciones.',
'settings.rescan': '↻ Reescanear',
'settings.rescanTitle': 'Reescanear PATH',
'settings.rescanRunning': 'Escaneando...',
'settings.rescanSuccess': 'Escaneo completado. {count} disponibles.',
'settings.designSystemRenameFailed': 'No se pudo cambiar el nombre. Comprueba el daemon e inténtalo de nuevo.',
'settings.rescanFailed': 'El escaneo falló. Comprueba el daemon e inténtalo de nuevo.',
'settings.test': 'Probar',
'settings.testTitle': 'Envía un mensaje minúsculo de prueba para verificar la conexión',
'settings.testRunning': 'Probando conexión…',
'settings.testCancel': 'Cancelar',
'settings.testSuccessApi': 'Conectado. Respondió en {ms} ms — \'{sample}\'',
'settings.testSuccessCli': '{agentName} respondió en {ms} ms — \'{sample}\'',
'settings.testAuthFailed': 'Autenticación fallida. Comprueba tu clave de API.',
'settings.testForbidden': 'Acceso prohibido. Verifica cuenta, región u organización.',
'settings.testNotFoundModel': 'No se encontró el modelo \'{model}\' en este endpoint.',
'settings.testInvalidModelId': 'El id de modelo \'{model}\' no es válido. Los ids personalizados deben empezar con una letra o un número y no contener espacios.',
'settings.testInvalidBaseUrl': 'La Base URL no es válida o no es accesible.',
'settings.testRateLimited': 'El proveedor limitó la prueba. La configuración parece válida.',
'settings.testUpstream': 'El proveedor devolvió {status}. Inténtalo de nuevo.',
'settings.testTimeout': 'La prueba expiró tras {ms} ms.',
'settings.testAgentMissing': '{agentName} no está instalado o no está en el PATH.',
'settings.testAgentSpawn': 'No se pudo iniciar {agentName}: {detail}.',
'settings.testUnknown': 'Prueba fallida: {detail}',
'settings.agentInstall.install': 'Instalar',
'settings.agentInstall.docs': 'Docs',
'settings.agentInstall.pathHint':
'Si instalaste una CLI con npm o Homebrew y sigue apareciendo como no instalada, asegúrate de que el directorio bin de la herramienta esté en el PATH que hereda el daemon de Open Design (Terminal y apps GUI pueden diferir en macOS). Consulta QUICKSTART.md (sección "Local agent CLI and PATH").',
'settings.agentInstall.stepOpenLinks': 'Abre Instalar o Docs para el agente que prefieras.',
'settings.agentInstall.stepAuth':
'Autentícate con la CLI del proveedor (inicia sesión o añade credenciales API) antes de volver a Open Design.',
'settings.agentInstall.stepRescan': 'Haz clic en Reescanear en esta sección.',
'settings.agentInstall.stepSelect': 'Selecciona la tarjeta del agente cuando aparezca como instalado.',
'settings.noAgentsDetected':
'Aún no se ha detectado ningún agente. Instala Claude Code, Codex, Devin for Terminal, Gemini CLI, OpenCode, Cursor Agent, Qwen o GitHub Copilot CLI y pulsa Reescanear.',
'settings.agentInstalledGroup': 'Tus CLI ({count})',
'settings.agentInstallGroup': 'Disponibles para instalar ({count})',
'settings.agentAuthRequired': 'Autenticación requerida',
'settings.agentAuthUnknown': 'Estado de autenticación desconocido',
'settings.amrLogin': 'Sign in',
'settings.amrLogout': 'Sign out',
'settings.amrLoggingIn': 'Signing in…',
'settings.amrLoggingOut': 'Signing out…',
'settings.amrLoggedInAs': 'Signed in as {email}',
'settings.amrLoggedInWithPlan': 'Signed in as {email} · {plan}',
'settings.amrLoggedInPill': 'Signed in',
'settings.amrNotLoggedIn': 'Not signed in',
'settings.amrCloud': 'Open Design AMR',
'settings.amrAuthorize': 'Authorize',
'settings.amrBenefitOfficial': 'Officially maintained',
'settings.amrBenefitLowerPrice': 'Lower price',
'settings.amrBenefitManyModels': 'Many models',
'settings.amrPromoBonus': 'Limited bonus: +100%',
'settings.amrSignInToContinue': 'Sign in to continue',
'settings.amrSignIn': 'Sign in',
'settings.amrSignedIn': 'Signed in',
'settings.amrNotSignedIn': 'Not signed in',
'settings.amrSigningIn': 'Signing in…',
'settings.amrCancelSignIn': 'Cancel sign-in',
'settings.amrAccountStatus': 'AMR account status',
'settings.amrLoginErrorCompact': 'AMR sign-in failed.',
'settings.apiSection': 'API de Anthropic',
'settings.quickFillProvider': 'Rellenar proveedor',
'settings.customProvider': 'Proveedor personalizado',
'settings.apiKey': 'Clave de API',
'settings.showKey': 'Mostrar clave',
'settings.hideKey': 'Ocultar clave',
'settings.show': 'Mostrar',
'settings.hide': 'Ocultar',
'settings.model': 'Modelo',
'settings.suggestedModelsHint':
'Estos son modelos sugeridos para este protocolo. Tu proveedor puede admitir modelos diferentes.',
'settings.baseUrl': 'URL base',
'settings.baseUrlInvalid': 'Introduce una URL pública http:// o https:// válida. Localhost está permitido; las IPs de red privada se bloquean.',
'settings.baseUrlCustomize': 'Personalizar',
'settings.baseUrlDefaultHint': 'Endpoint predeterminado. Normalmente no hace falta cambiarlo.',
'settings.azureBaseUrlPlaceholder': 'https://my-resource.openai.azure.com',
'settings.azureBaseUrlHint': 'Find this in Azure portal → your resource → Endpoint.',
'settings.azureDeploymentModel': 'Nombre del despliegue',
'settings.azureDeploymentModelHint':
'Para Azure OpenAI, este campo se usa como nombre del despliegue en /openai/deployments/<model>. Introduce el nombre del despliegue que creaste en Azure.',
'settings.apiVersion': 'Versión de API',
'settings.byokImageModel': 'Modelo de generación de imágenes',
'settings.maxTokens': 'Tokens máx. (opcional)',
'settings.maxTokensHint':
'Tope para la longitud de la respuesta. Cada modelo tiene un valor por defecto ajustado (visible en el placeholder); déjalo vacío para usarlo o introduce un número para anularlo.',
'settings.apiHint': 'Las llamadas pasan por el proxy del daemon local hasta la URL base configurada. La clave se guarda solo en este navegador y se envía con las solicitudes al proveedor.',
'settings.skipForNow': 'Omitir por ahora',
'settings.getStarted': 'Empezar',
'settings.envConfigure': 'Modo de ejecución',
'settings.localCli': 'CLI local',
'settings.anthropicApi': 'API de Anthropic',
'settings.noAgentSelected': 'ningún agente seleccionado',
'settings.language': 'Idioma',
'settings.languageHint': 'Cambia el idioma de la interfaz. Se guarda en este navegador.',
'settings.appearance': 'Apariencia',
'settings.appearanceHint': 'Elige claro, oscuro o seguir la configuración del sistema.',
'settings.themeSystem': 'Sistema',
'settings.themeLight': 'Claro',
'settings.themeDark': 'Oscuro',
'settings.agentModelHead': 'Modelo para:',
'settings.modelPicker': 'Modelo',
'settings.modelSourceLive': 'En vivo desde la CLI',
'settings.modelSourceFallback': 'Lista integrada',
'settings.reasoningPicker': 'Esfuerzo de razonamiento',
'settings.modelPickerHint':
'Se obtiene de la CLI cuando expone un comando `models`. «Predeterminado» deja la elección a la propia configuración de la CLI; «Personalizado…» permite escribir cualquier id de modelo aceptado por la CLI.',
'settings.modelPickerLiveHint':
'Los modelos se actualizaron desde la CLI instalada. Predeterminado sigue usando la configuración de la CLI.',
'settings.modelPickerFallbackHint':
'Mostrando valores predeterminados integrados. Pulsa Reescanear para obtener modelos en vivo desde la CLI.',
'settings.cliEnvTitle': 'CLI config locations',
'settings.cliEnvHint':
'Set non-secret config directories for packaged app runs and agent detection.',
'settings.cliEnvClaudeConfigDir': 'Claude Code config directory',
'settings.cliEnvClaudeBaseUrl': 'Claude proxy base URL',
'settings.cliEnvClaudeApiKey': 'Claude proxy API key',
'settings.cliEnvCodexHome': 'Codex home',
'settings.cliEnvCodexBin': 'Codex executable path',
'settings.cliEnvCodexBaseUrl': 'Codex/OpenAI proxy base URL',
'settings.cliEnvCodexApiKey': 'Codex/OpenAI proxy API key',
'settings.modelCustom': 'Personalizado (escribe abajo)…',
'settings.modelCustomLabel': 'Id de modelo personalizado',
'settings.modelCustomPlaceholder': 'p. ej., anthropic/claude-sonnet-4-6',
'settings.mediaProviders': 'Proveedores de medios',
'settings.mediaProvidersHint':
'Claves de API para generación de imagen, vídeo y audio. Se guardan localmente y se sincronizan con el daemon local.',
'settings.mcpServerTitle': 'Servidor MCP',
'settings.mcpServerHint': 'Expón Open Design como servidor MCP para tu agente de código.',
'settings.externalMcpTitle': 'MCP externo',
'settings.externalMcpHint': 'Añade herramientas MCP desde servicios externos (Higgsfield, GitHub, …).',
'settings.mediaProviderApiKey': 'Clave de API',
'settings.mediaProviderBaseUrl': 'URL base',
'settings.mediaProviderConfigured': 'Configurado',
'settings.mediaProviderUnset': 'Sin configurar',
'settings.mediaProviderClear': 'Limpiar',
'settings.mediaProviderClearConfirm': '¿Eliminar la configuración guardada de {name}? Tendrás que introducirla de nuevo para usar {name}.',
'settings.mediaProviderPlaceholder': 'Pega la clave de API',
'settings.mediaProviderBaseUrlPlaceholder': 'Sobrescribir URL base por defecto',
'settings.mediaProviderReload': 'Recargar desde el daemon',
'settings.mediaProviderReloadError': 'No se pudieron recargar los ajustes de los proveedores de medios desde el daemon local.',
'settings.mediaProviderReloadSuccess': 'Se recargaron los ajustes de los proveedores de medios desde el daemon local.',
'settings.mediaProviderLoadError': 'No se pudieron cargar los ajustes de los proveedores de medios desde el daemon local. Por ahora se usarán los ajustes guardados en el navegador.',
'settings.mediaProviderComingSoonHint': 'Rastreamos estos para la hoja de ruta; el daemon aún no incluye un cliente, por lo que no hay nada que configurar.',
'settings.privacy': 'Privacy',
'settings.privacyHint': 'What data is shared with the Open Design team',
'settings.privacyConsentKicker': 'Help us improve Open Design',
'settings.privacyConsentLead': 'Open Design can share usage data with our team to help us improve. This includes:',
'settings.privacyConsentFooter': 'You can change either of these any time in Settings → Privacy. We never upload the contents of your generated artifact files.',
'settings.privacyConsentShare': 'Share usage data',
'settings.privacyConsentDecline': "Don't share",
'settings.privacyConsentAccept': 'I get it',
'settings.privacyConsentBannerFooter':
'Data sharing is on by default. You can turn it off any time in Settings → Privacy. We never upload the contents of your generated artifact files.',
'settings.privacyConsentPolicyLink': 'Read the privacy policy',
'settings.privacyMetrics': 'Anonymous metrics',
'settings.privacyMetricsHint': 'Run counts, token usage, error rate, duration. No prompts, no project data.',
'settings.privacyContent': 'Conversation content',
'settings.privacyContentHint': "Your prompts and the assistant's responses (truncated 8 KB / 16 KB). API keys, tokens, JWTs, emails, IPs, and credit-card numbers are stripped automatically before send.",
'settings.privacyArtifacts': 'Project artifacts manifest',
'settings.privacyArtifactsHint': 'Filenames, types, sizes of generated files. File contents are never sent.',
'settings.privacyInstallationId': 'Anonymous ID',
'settings.privacyOptedOut': 'opted out',
'settings.privacyDataDeletion': 'Delete my data',
'settings.privacyDataDeletionHint': 'Rotates your anonymous ID and stops sending. Existing traces age out under our retention policy.',
'settings.about': 'Acerca de',
'settings.aboutHint': 'Versión y detalles de ejecución',
'settings.appVersion': 'Versión',
'settings.appChannel': 'Canal',
'settings.appRuntime': 'Ejecución',
'settings.appPlatform': 'Plataforma',
'settings.appArchitecture': 'Arquitectura',
'settings.runtimePackaged': 'App empaquetada',
'settings.runtimeDevelopment': 'Desarrollo',
'settings.versionUnavailable': 'Los detalles de versión no están disponibles mientras el daemon está offline.',
'settings.installLatest': 'Instalar la última versión',
'settings.alreadyLatest': 'Ya tienes la última versión',
'entry.tabDesigns': 'Diseños',
'entry.tabTemplates': 'Plantillas',
'entry.tabDesignSystems': 'Sistemas de diseño',
'entry.openSettingsTitle': 'Ajustes',
'entry.openSettingsAria': 'Abrir ajustes',
'entry.resizeAria': 'Redimensionar barra lateral',
'entry.loadingWorkspace': 'Cargando espacio de trabajo…',
'entry.useEverywhereTitle': 'Usar en todas partes',
'entry.useEverywhereAria': 'Abrir la guía «Usar en todas partes» (CLI, MCP, HTTP, Skills)',
'entry.navNewProject': 'Nuevo proyecto',
'entry.navHome': 'Inicio',
'entry.navProjects': 'Proyectos',
'entry.navDesignSystems': 'Sistemas de diseño',
'entry.helpAria': 'Ayuda',
'entry.helpMenuAria': 'Menú de ayuda',
'entry.helpGetHelp': 'Obtener ayuda en GitHub',
'entry.helpSubmitFeature': 'Enviar una sugerencia',
'entry.helpWhatsNew': 'Novedades',
'entry.helpDownloadDesktop': 'Descargar app de escritorio',
'entry.githubStarLabel': 'Star',
'entry.githubStarTitle': 'Haz clic para darnos una estrella en GitHub',
'entry.githubStarAria': 'Dar una estrella a Open Design en GitHub',
'entry.tabImageTemplates': 'Plantillas de imagen',
'entry.tabVideoTemplates': 'Plantillas de vídeo',
'promptTemplates.searchPlaceholder': 'Buscar plantillas…',
'promptTemplates.countLabel': '{n} resultados',
'promptTemplates.emptyImage': 'Aún no hay plantillas de prompt de imagen instaladas.',
'promptTemplates.emptyVideo': 'Aún no hay plantillas de prompt de vídeo instaladas.',
'promptTemplates.emptyNoMatch': 'Ninguna plantilla coincide con tu búsqueda.',
'promptTemplates.attributionFooter':
'Adaptadas de bibliotecas públicas de prompts. Cada tarjeta enlaza al autor original.',
'promptTemplates.openPreviewTitle': 'Abrir prompt y vista previa',
'promptTemplates.sourcePrefix': 'Fuente:',
'promptTemplates.fetchError': 'No se pudo cargar el cuerpo de esta plantilla.',
'promptTemplates.promptLabel': 'Cuerpo del prompt',
'promptTemplates.copyPrompt': 'Copiar prompt',
'promptTemplates.copyDone': '¡Copiado!',
'promptTemplates.modelHint': 'Modelo sugerido: {model}',
'promptTemplates.openSource': 'Ver original',
'promptTemplates.openFullscreen': 'Abrir vista previa en pantalla completa',
'promptTemplates.closeFullscreen': 'Cerrar vista previa en pantalla completa',
'promptTemplates.allSources': 'Todas las fuentes',
'promptTemplates.sourceFilterAria': 'Filtrar por fuente',
'promptTemplates.retry': 'Reintentar',
'newproj.tabPrototype': 'Prototipo',
'newproj.tabDeck': 'Presentación',
'newproj.tabTemplate': 'Desde plantilla',
'newproj.tabMedia': 'Medios',
'newproj.tabOther': 'Otro',
'newproj.titlePrototype': 'Nuevo prototipo',
'newproj.titleDeck': 'Nueva presentación',
'newproj.titleTemplate': 'Empezar desde una plantilla',
'newproj.titleImage': 'Nueva imagen',
'newproj.titleVideo': 'Nuevo vídeo',
'newproj.titleAudio': 'Nuevo audio',
'newproj.titleMedia': 'Nuevo medio',
'newproj.titleOther': 'Nuevo proyecto',
'newproj.namePlaceholder': 'Nombre del proyecto',
'newproj.fidelityLabel': 'Fidelidad',
'newproj.fidelityWireframe': 'Wireframe',
'newproj.fidelityHigh': 'Alta fidelidad',
'newproj.toggleSpeakerNotes': 'Usar notas del orador',
'newproj.toggleSpeakerNotesHint': 'Menos texto en las diapositivas: deja los puntos clave en las notas.',
'newproj.toggleAnimations': 'Incluir animaciones',
'newproj.toggleAnimationsHint':
'Añade movimiento (entrada, hover, transiciones) sobre la plantilla.',
'newproj.templateLabel': 'Plantilla',
'newproj.noTemplatesTitle': 'Aún no hay plantillas',
'newproj.noTemplatesBody':
'Abre cualquier proyecto y usa el menú Compartir dentro del visor de archivos para convertirlo en plantilla. Las plantillas aparecerán aquí.',
'newproj.savedTemplate': 'Plantilla guardada',
'newproj.fileSingular': 'archivo',
'newproj.filePlural': 'archivos',
'newproj.create': 'Crear',
'newproj.locationLabel': 'Guardar en',
'newproj.locationDefault': 'Proyectos de Open Design',
'newproj.locationExternalBase': 'Base externa',
'newproj.createFromTemplate': 'Crear desde plantilla',
'newproj.createDisabledTitle':
'Guarda primero un proyecto como plantilla (menú Compartir dentro de cualquier proyecto).',
'newproj.importClaudeZip': 'Importar ZIP de Claude Design',
'newproj.importClaudeZipTitle': 'Importar una exportación .zip de Claude Design',
'newproj.importingClaudeZip': 'Importando…',
'newproj.privacyFooter': 'Por defecto, solo tú puedes ver tu proyecto.',
'newproj.designSystem': 'Sistema de diseño',
'newproj.dsNoneFreeform': 'Ninguno: estilo libre',
'newproj.dsNoneSubtitleEmpty': 'Sin tokens de sistema, elige tu propia paleta',
'newproj.dsNoneSubtitleSelected': 'Omitir tokens de sistema. El agente elige su propia paleta.',
'newproj.dsCategoryFallback': 'Sistema de diseño',
'newproj.dsSearch': 'Buscar sistemas de diseño…',
'newproj.dsModeAria': 'Modo de selección',
'newproj.dsModeSingle': 'Único',
'newproj.dsModeMulti': 'Múltiple',
'newproj.dsNoneTitle': 'Ninguno: estilo libre',
'newproj.dsNoneSub': 'Omitir tokens de sistema. El agente elige su propia paleta.',
'newproj.dsEmpty': 'Ningún sistema de diseño coincide con «{query}».',
'newproj.dsFootSingular': 'es solo inspiración.',
'newproj.dsFootPlural': 'son solo inspiración.',
'newproj.dsFootClear': 'Limpiar',
'newproj.dsBadgeDefault': 'PREDETERMINADO',
'newproj.dsPrimaryFallback': 'Principal',
'newproj.surfaceImage': 'Imagen',
'newproj.surfaceVideo': 'Vídeo',
'newproj.surfaceAudio': 'Audio',
'newproj.modelLabel': 'Modelo',
'newproj.modelSearch': 'Buscar modelos…',
'newproj.modelEmpty': 'No hay modelos que coincidan.',
'newproj.modelRecommended': 'Recomendado',
'newproj.modelMissingTitle': 'Elegir un modelo',
'newproj.modelMissingSub': 'Elige un modelo para esta superficie.',
'newproj.aspectLabel': 'Proporción',
'newproj.videoLengthLabel': 'Duración',
'newproj.videoLengthSeconds': '{n} s',
'newproj.audioKindLabel': 'Tipo de audio',
'newproj.audioKindMusic': 'Música',
'newproj.audioKindSpeech': 'Voz / TTS',
'newproj.audioKindSfx': 'Efecto de sonido',
'newproj.audioDurationLabel': 'Duración',
'newproj.audioDurationSeconds': '{n} s',
'newproj.voiceLabel': 'Voz',
'newproj.voicePlaceholder': 'Id de voz del proveedor, opcional',
'newproj.promptTemplateLabel': 'Plantilla de referencia',
'newproj.promptTemplateNoneTitle': 'Ninguna — escribe la tuya',
'newproj.promptTemplateNoneSub': 'Sáltate la galería y describe tu propio briefing',
'newproj.promptTemplateRefSub': 'Plantilla de referencia',
'newproj.promptTemplateSearch': 'Buscar plantillas…',
'newproj.promptTemplateEmpty': 'Aún no hay plantillas para este formato.',
'newproj.promptTemplateBodyLabel': 'Prompt (editable)',
'newproj.promptTemplateOptimizeHint':
'Edita lo que quieras — tus cambios se incorporan al briefing del agente.',
'newproj.promptTemplateBodyEmpty':
'Cuerpo vacío — el agente no recibirá ninguna referencia de plantilla.',
'newproj.deleteTemplateTitle': 'Eliminar plantilla',
'newproj.deleteTemplateConfirm': '¿Eliminar «{name}»? Esta acción no se puede deshacer.',
'newproj.deleteTemplateConfirmCta': 'Eliminar plantilla',
'newproj.deleteTemplateError':
'No se pudo eliminar esta plantilla. Inténtalo de nuevo.',
'designs.subRecent': 'Recientes',
'designs.subYours': 'Tus diseños',
'designs.filterAria': 'Filtrar proyectos',
'designs.searchPlaceholder': 'Buscar…',
'designs.emptyNoProjects': 'Aún no hay proyectos.',
'designs.emptyNoMatch': 'Ningún proyecto coincide con tu búsqueda.',
'designs.deleteTitle': 'Eliminar proyecto',
'designs.deleteConfirm': '¿Eliminar «{name}»?',
'designs.cardFreeform': 'estilo libre',
'designs.status.notStarted': 'Sin empezar',
'designs.status.queued': 'En cola',
'designs.status.running': 'En ejecución',
'designs.status.awaitingInput': 'Necesita respuesta',
'designs.status.succeeded': 'Completado',
'designs.status.published': 'Publicado',
'designs.status.failed': 'Fallido',
'designs.status.canceled': 'Cancelado',
'designs.viewToggleAria': 'Modo de vista',
'designs.viewGrid': 'Vista en cuadrícula',
'designs.viewKanban': 'Vista en tablero',
'designs.kanbanEmptyColumn': 'Sin diseños',
'designs.deleteAria': 'Eliminar proyecto {name}',
'designs.menuMore': 'More actions',
'designs.menuRename': 'Rename',
'designs.menuDelete': 'Delete',
'designs.renamePrompt': 'New name for "{name}"',
'designs.selectMode': 'Select',
'designs.cancelSelect': 'Cancel',
'designs.deleteSelected': 'Delete selected',
'designs.selectedCount': '{n} selected',
'designs.deleteSelectedConfirm': 'Delete {n} project(s)?',
'designs.deleteSelectedSuccess': '{n} project(s) deleted successfully.',
'designs.deleteSelectedPartial': 'Deleted {deleted} project(s); {failed} failed.',
'designs.tagPrototype': 'Prototype',
'designs.tagLiveArtifact': 'Live Artifact',
'designs.tagSlide': 'Slide',
'designs.tagMedia': 'Media',
'designs.renameTitle': 'Rename project',
'designs.renameSave': 'OK',
'designs.renameCancel': 'Cancel',
'examples.typeLabel': 'Tipo',
'examples.surfaceLabel': 'Superficie',
'examples.surfaceWeb': 'Web',
'examples.surfaceImage': 'Imagen',
'examples.surfaceVideo': 'Vídeo',
'examples.surfaceAudio': 'Audio',
'examples.scenarioLabel': 'Escenario',
'examples.modeAll': 'Todos',
'examples.modePrototypeDesktop': 'Prototipos · Escritorio',
'examples.modePrototypeMobile': 'Prototipos · Móvil',
'examples.modeDeck': 'Diapositivas',
'examples.modeDocument': 'Documentos y plantillas',
'examples.modeOrbit': 'Orbit',
'examples.modeLive': 'En vivo',
'examples.scenarioGeneral': 'General',
'examples.scenarioEngineering': 'Ingeniería',
'examples.scenarioProduct': 'Producto',
'examples.scenarioDesign': 'Diseño',
'examples.scenarioMarketing': 'Marketing',
'examples.scenarioSales': 'Ventas',
'examples.scenarioFinance': 'Finanzas',
'examples.scenarioHr': 'RR. HH.',
'examples.scenarioOperations': 'Operaciones',
'examples.scenarioSupport': 'Soporte',
'examples.scenarioLegal': 'Legal',
'examples.scenarioEducation': 'Educación',
'examples.scenarioPersonal': 'Personal',
'examples.emptyNoSkills': 'No hay skills disponibles. ¿Está el daemon en ejecución?',
'examples.searchPlaceholder': 'Buscar ejemplos…',
'examples.searchAria': 'Buscar ejemplos por nombre',
'examples.emptyNoMatch': 'Ningún ejemplo coincide con estos filtros.',
'examples.openPreview': '⤢ Abrir vista previa',
'examples.loadingPreview': 'Cargando vista previa…',
'examples.hoverPreview': 'Pasa el cursor para ver la vista previa',
'examples.usePrompt': 'Usar este prompt',
'examples.previewModalTitle': 'Abrir vista previa completa (modal)',
'examples.shareTitle': 'Compartir este ejemplo',
'examples.shareLoadFirst': 'Pasa el cursor para cargar primero la vista previa',
'examples.unavailablePlaceholder': 'Sin vista previa {kind} incluida — abre para saber más',
'examples.shareUnavailable': 'Sin vista previa {kind} incluida para compartir',
'examples.shareMenu': 'Compartir ▾',
'examples.exportPdfAllSlides': 'Exportar como PDF (todas las diapositivas)',
'examples.exportPptxLocked': 'Exportar como PPTX… (abre primero la plantilla)',
'examples.tagSlideDeck': 'Presentación',
'examples.tagTemplate': 'Plantilla',
'examples.tagDesignSystem': 'Sistema de diseño',
'examples.tagMobilePrototype': 'Prototipo móvil',
'examples.tagDesktopPrototype': 'Prototipo de escritorio',
'examples.tagImage': 'Imagen',
'examples.tagVideo': 'Vídeo',
'examples.tagAudio': 'Audio',
'examples.previewLabel': 'Vista previa',
'ds.surfaceLabel': 'Superficie',
'ds.surfaceWeb': 'Web',
'ds.surfaceImage': 'Imagen',
'ds.surfaceVideo': 'Vídeo',
'ds.surfaceAudio': 'Audio',
'ds.searchPlaceholder': 'Buscar sistemas de diseño…',
'ds.emptyNoMatch': 'Ningún sistema de diseño coincide con tu búsqueda.',
'ds.badgeDefault': 'PREDETERMINADO',
'ds.preview': 'Vista previa',
'ds.previewTitle': 'Vista previa del sistema de diseño',
'ds.categoryAll': 'Todos',
'ds.categoryUncategorized': 'Sin categoría',
'ds.showcase': 'Vitrina',
'ds.tokens': 'Tokens',
'ds.specToggle': 'DESIGN.md',
'ds.specLoading': 'Cargando DESIGN.md…',
'avatar.title': 'Cuenta y ajustes',
'avatar.localCli': 'CLI local',
'avatar.anthropicApi': 'API de Anthropic',
'avatar.useLocal': 'Usar CLI local',
'avatar.useApi': 'Usar API · BYOK',
'avatar.codeAgent': 'Agente de código',
'avatar.rescan': 'Reescanear PATH',
'avatar.settings': 'Ajustes',
'avatar.backToProjects': 'Volver a los proyectos',
'avatar.metaActive': 'activo',
'avatar.metaOffline': 'sin conexión',
'avatar.metaSelected': 'seleccionado',
'avatar.noAgentSelected': 'ningún agente seleccionado',
'avatar.modelSection': 'Modelo',
'avatar.modelLabel': 'Modelo',
'avatar.reasoningLabel': 'Razonamiento',
'avatar.customSuffix': '(personalizado)',
'inlineSwitcher.chipTitle': 'Cambiar CLI / modelo',
'inlineSwitcher.chipCli': 'CLI local',
'inlineSwitcher.chipByok': 'BYOK',
'inlineSwitcher.modelDefault': 'predeterminado',
'inlineSwitcher.noAgent': 'sin agente',
'inlineSwitcher.modeLabel': 'Modo',
'inlineSwitcher.agentLabel': 'Agente',
'inlineSwitcher.providerLabel': 'Proveedor',
'inlineSwitcher.modelLabel': 'Modelo',
'inlineSwitcher.useCli': 'Usar CLI local',
'inlineSwitcher.useByok': 'Usar clave API propia',
'inlineSwitcher.daemonOffline': 'Daemon offline — abrir ajustes',
'inlineSwitcher.noAgentsDetected': 'No se detectó CLI en PATH',
'inlineSwitcher.openSettingsForModel': 'Configura el proveedor en Ajustes',
'inlineSwitcher.missingApiKey': 'Falta la clave API — abre Ajustes para añadirla.',
'inlineSwitcher.openFullSettings': 'Abrir ajustes de ejecución',
'inlineSwitcher.customSuffix': '(personalizado)',
'project.backToProjects': 'Volver a los proyectos',
'project.metaFreeform': 'estilo libre',
'project.resizeChatPanel': 'Redimensionar panel de chat',
'project.instructionsActive': 'Activo: se incluye en cada mensaje',
'chat.tabChat': 'Chat',
'chat.tabComments': 'Comentarios',
'chat.commentsSoon': 'Comentarios — próximamente',
'chat.comments.attached': 'Attached to chat',
'chat.comments.emptyAttached': 'No comments attached.',
'chat.comments.saved': 'Saved comments',
'chat.comments.emptySaved': 'No saved comments.',
'chat.comments.add': 'Add',
'chat.comments.addAll': 'Add all',
'chat.comments.remove': 'Remove',
'chat.comments.placeholder': 'Comment on this element…',
'chat.comments.addSend': 'Add & send',
'chat.comments.updateSend': 'Update & send',
'chat.comments.removeAttachment': 'Remove comment attachment',
'chat.comments.removeAttachmentAria': 'Remove comment attachment for {name}',
'chat.comments.comment': 'Comment',
'chat.comments.sendToChat': 'Send to chat',
'chat.comments.sending': 'Sending…',
'chat.comments.edit': 'Edit',
'chat.comments.select': 'Select',
'chat.comments.selectAll': 'Seleccionar todo',
'chat.comments.deselect': 'Deselect',
'chat.comments.nSelected': '{n} selected',
'chat.comments.pin': 'Pin',
'chat.comments.addNote': 'Add note',
'chat.comments.savedToast': 'Comment saved',
'chat.comments.pinSavedToast': 'Pin saved',
'chat.comments.pinAtCoords': 'at {x}, {y}',
'chat.comments.capturedItems': '{n} captured items',
'chat.comments.clear': 'Clear',
'chat.comments.targetImage': 'Image',
'chat.comments.targetControl': 'Control',
'chat.comments.targetLink': 'Link',
'chat.comments.targetText': 'Text',
'chat.comments.targetSection': 'Section',
'chat.comments.targetPage': 'Page',
'chat.comments.targetArea': 'Area',
'chat.annotationNotePlaceholder': 'Add a note for this mark',
'chat.annotationQueue': 'Queue',
'chat.annotationQueueing': 'Queueing...',
'chat.annotationSending': 'Sending...',
'chat.annotationSendDisabledReason': 'A task is currently running',
'chat.annotationPreviewMissing': 'Could not capture the preview. Please try again.',
'chat.annotationPreviewMissingInk': 'Could not capture the preview. Try again to avoid sending only ink.',
'chat.annotationTimeout': 'Annotation send timed out. Please try again.',
'chat.annotationFailed': 'Annotation send failed. Please try again.',
'chat.annotationProjectCreateFailed': 'Could not create a project, so the annotation was not sent.',
'chat.annotationUploadFailed': 'Attachment upload failed. Please try again.',
'chat.inspect.noEditableTargets': 'This page has no editable elements yet.',
'chat.inspect.noCommentTargets': 'This page has no commentable elements yet.',
'chat.inspect.editHint': 'Click an element in the canvas to edit its styles.',
'chat.inspect.commentHint': 'Click an element in the canvas to add a comment.',
'chat.conversationsTitle': 'Conversaciones',
'chat.conversationsAria': 'Historial de conversaciones',
'chat.newConversation': 'Nueva conversación',
'chat.newConversationsTitle': 'Nueva conversación',
'chat.conversationsHeading': 'Conversaciones',
'chat.new': 'Nueva',
'chat.emptyConversations': 'Aún no hay conversaciones.',
'chat.deleteConversation': 'Eliminar conversación',
'chat.renameConversationLabel': 'Renombrar «{title}»',
'chat.deleteConversationConfirm':
'¿Eliminar «{title}»? Se borrarán sus mensajes.',
'chat.untitledConversation': 'Conversación sin título',
'chat.startTitle': 'Empieza una conversación',
'chat.startHint': "Describe lo que quieres generar o empieza con uno de estos ejemplos:",
'chat.fillInputTitle': 'Haz clic para rellenar el campo',
'chat.jumpToLatest': 'Ir al más reciente',
'chat.scrollToLatest': 'Desplazar al más reciente',
'chat.you': 'Tú',
'chat.openFile': 'Abrir {name}',
'chat.copyPrompt': 'Copiar prompt',
'chat.copyDone': '¡Copiado!',
'chat.composerPlaceholder': "Describe lo que quieres generar…",
'chat.composerHint': "⌘/Ctrl + Enter para enviar · incluye objetivo, contenido, estilo y formato",
'chat.cliSettingsTitle': 'Ajustes de CLI y modelo',
'chat.cliSettingsAria': 'Abrir ajustes de CLI y modelo',
'chat.attachTitle': 'Adjuntar archivos (o pegar / soltar)',
'chat.attachAria': 'Adjuntar archivos',
'chat.importTitle': 'Importar fuentes (próximamente)',
'chat.importLabel': 'Importar',
'chat.importComingSoon': 'Próximamente',
'chat.importSoon': 'Pronto',
'chat.importFig': 'Subir archivo .fig',
'chat.importGitHub': 'Conectar GitHub',
'chat.importWeb': 'Capturar elemento web',
'chat.importFolder': 'Vincular carpeta de código',
'chat.importSkills': 'Skills y sistemas de diseño',
'chat.importProject': 'Reference another project',
'chat.linkedFolderRemoveAria': 'Eliminar carpeta vinculada {path}',
'chat.linkedFolderNotFound': 'La carpeta no existe',
'chat.linkedFolderAlready': 'Esta carpeta ya está vinculada',
'chat.linkedFolderPickError': 'No se pudo abrir el selector de carpetas',
'chat.queuedHeader': 'Queued',
'chat.queuedToSend': 'to Send',
'chat.queuedEditQueuedTaskAria': 'Edit queued task',
'chat.queuedSave': 'Save',
'chat.queuedCancel': 'Cancel',
'chat.queuedEdit': 'Edit',
'chat.queuedMore': 'more queued',
'chat.queuedFollowUpFallback': 'Queued follow-up',
'chat.send': 'Enviar',
'chat.stop': 'Detener',
'chat.removeAria': 'Quitar {name}',
'chat.example1Title': 'Pitch deck editorial',
'chat.example1Tag': 'Revista',
'chat.example1Prompt':
'Una presentación editorial de 10 diapositivas para un estudio de diseño que levanta una ronda seed: maquetación con grid suizo, titulares serif enormes con capitulares marcadas, números de sección en monoespaciada, abundante espacio en blanco y diapositivas a sangre con foto intercaladas con otras densas en texto. Portada, visión, mercado, producto, tracción, equipo, petición y contacto.',
'chat.example2Title': 'Dashboard de analítica SaaS',
'chat.example2Tag': 'Datos',
'chat.example2Prompt':
'Un dashboard denso de analítica para un SaaS de herramientas para desarrolladores: tira de KPIs con variaciones semana a semana, dos gráficos de líneas apilados (MRR y workspaces activos), un mapa de calor mundial de uso, una rejilla de retención por cohortes, un ranking de clientes principales y un feed de eventos en tiempo real. Tema oscuro, números monoespaciados tabulares, acentos con sparklines.',
'chat.example3Title': 'Memoria anual long-scroll',
'chat.example3Tag': 'Editorial',
'chat.example3Prompt':
'Una memoria anual interactiva para una ONG climática: maquetación editorial long-scroll mezclando grandes bloques de citas, visualizaciones de datos (barras apiladas, contadores animados, un mapa coroplético de proyectos), separadores con fotografía, muro de donantes y llamada a la acción final. Cuerpo en serif moderna, etiquetas de gráficos en sans-serif, paleta terrosa de papel.',
'preview.shareMenu': 'Compartir',
'preview.exportMenu': 'Export',
'preview.shareTemplateBadge': 'Template',
'preview.shareToX': 'X / Twitter',
'preview.shareToReddit': 'Reddit',
'preview.shareToFacebook': 'Facebook',
'preview.shareToLinkedIn': 'LinkedIn',
'preview.shareToInstagram': 'Instagram',
'preview.shareToXiaohongshu': '小红书',
'preview.copyTemplateLink': 'Copy template link',
'preview.copyShareText': 'Copy share text',
'preview.shareSocialGroup': 'Share to social',
'preview.shareCopyGroup': 'Copy',
'preview.shareExportGroup': 'Export files',
'preview.shareCopied': 'Copied',
'preview.shareCopyFailed': 'Copy failed',
'preview.shareTextDefault': 'Open Design template: {title}',
'preview.openInNewTab': 'Abrir en pestaña nueva',
'preview.exit': '⤓ Salir',
'preview.fullscreen': '⤢ Pantalla completa',
'preview.closeTitle': 'Cerrar (Esc)',
'preview.loading': 'Cargando {label}…',
'preview.errorTitle': 'No se pudo cargar este ejemplo.',
'preview.errorBody': 'No se pudo obtener el HTML del ejemplo. Asegúrate de que Open Design esté en ejecución e inténtalo de nuevo.',
'preview.retry': 'Reintentar',
'preview.unavailableTitle': 'No hay vista previa incluida para {noun}.',
'preview.unavailableBody': 'Ejecuta el prompt en el chat para generar un resultado {kind}.',
'preview.nounSkill': 'esta skill',
'preview.nounPlugin': 'este plugin',
'preview.nounTemplate': 'esta plantilla',
'preview.showSidebar': 'Mostrar {label}',
'preview.hideSidebar': 'Ocultar {label}',
'misc.savedTemplate': 'Plantilla guardada',
'misc.primary': 'Principal',
'misc.designSystem': 'Sistema de diseño',
'workspace.designFiles': 'Archivos de diseño',
'workspace.focusMode': 'Focus workspace',
'workspace.showChat': 'Show chat',
'workspace.closeTab': 'Cerrar pestaña',
'workspace.deleteFileConfirm': '¿Eliminar «{name}» de la carpeta del proyecto?',
'workspace.deleteSelectedFilesConfirm': '¿Eliminar {n} archivo(s) seleccionado(s) de la carpeta del proyecto?',
'workspace.deleteSelectedFilesPartial': 'No se pudieron eliminar {n} archivo(s).',
'workspace.openFromDesignFiles': 'Abre un archivo desde',
'workspace.designFilesLink': 'Archivos de diseño',
'workspace.loadingSketch': 'Cargando boceto…',
'designFiles.title': 'Archivos de diseño',
'designFiles.upload': 'Subir archivos',
'designFiles.pasteText': 'Pegar como archivo de texto',
'designFiles.newSketch': 'Nuevo boceto',
'designFiles.empty': 'Las creaciones aparecerán aquí',
'designFiles.refresh': 'Actualizar',
'designFiles.delete': 'Eliminar',
'designFiles.searchPlaceholder': 'Buscar archivos…',
'designFiles.up': 'Subir',
'designFiles.back': 'Atrás',
'designFiles.crumbs': 'proyecto',
'designFiles.rowMenu': 'Menú de la fila',
'designFiles.openInTab': 'Abrir en pestaña',
'designFiles.download': 'Descargar',
'designFiles.downloadSelected': 'Descargar {n} como ZIP',
'designFiles.deleteSelected': 'Eliminar {n}',
'designFiles.clearSelection': 'Limpiar selección',
'designFiles.selectPage': 'Seleccionar todo en la página',
'designFiles.selectAll': 'Seleccionar todo',
'designFiles.dropTitle': '⤓ Suelta archivos aquí',
'designFiles.dropDesc':
'Imágenes, documentos, referencias o carpetas: el agente los usará como contexto.',
'designFiles.upload.title': 'Subir archivos',
'designFiles.paste.title': 'Pegar texto como archivo',
'designFiles.upload.label': 'Subir',
'designFiles.paste.label': 'Pegar',
'designFiles.previewOpen': 'Abrir',
'designFiles.previewClose': 'Cerrar vista previa',
'designFiles.modified': 'Modificado {time} · {size}',
'designFiles.weeksAgo': 'hace {n} sem',
'designFiles.groupBy': 'Agrupar por',
'designFiles.groupByKind': 'Tipo',
'designFiles.groupByModified': 'Modificado',
'designFiles.expandGroup': 'Expandir',
'designFiles.collapseGroup': 'Contraer',
'designFiles.sectionPages': 'Páginas',
'designFiles.sectionScripts': 'Scripts',
'designFiles.sectionImages': 'Imágenes',
'designFiles.sectionSketches': 'Bocetos',
'designFiles.sectionOther': 'Otros',
'designFiles.modifiedToday': 'Hoy',
'designFiles.modifiedYesterday': 'Ayer',
'designFiles.modifiedPrevious7Days': 'Últimos 7 días',
'designFiles.modifiedPrevious30Days': 'Últimos 30 días',
'designFiles.modifiedOlder': 'Anterior',
'designFiles.showMore': 'Mostrar +{n} más',
'designFiles.kindHtml': 'Página HTML',
'designFiles.kindImage': 'Imagen',
'designFiles.kindSketch': 'Boceto',
'designFiles.kindText': 'Texto',
'designFiles.kindCode': 'Script',
'designFiles.kindPdf': 'PDF',
'designFiles.kindDocument': 'Documento',
'designFiles.kindPresentation': 'Presentación',
'designFiles.kindSpreadsheet': 'Hoja de cálculo',
'designFiles.kindBinary': 'Binario',
'designFiles.kindFolder': 'Carpeta',
'designFiles.folderCount': '{n} archivos',
'designFiles.colName': 'Nombre',
'designFiles.colKind': 'Tipo',
'designFiles.colModified': 'Modificado',
'designFiles.perPage': 'Mostrar',
'designFiles.all': 'Todos',
'designFiles.prev': 'Anterior',
'designFiles.next': 'Siguiente',
'designFiles.jumpToPage': 'Ir a la página',
'designFiles.pageInfo': '{start}{end} de {total}',
'quickSwitcher.placeholder': 'Abrir archivo…',
'quickSwitcher.empty': 'No hay archivos en este proyecto',
'quickSwitcher.noMatches': 'Sin resultados',
'quickSwitcher.navigate': 'navegar',
'quickSwitcher.open': 'abrir',
'quickSwitcher.close': 'cerrar',
'pasteDialog.title': 'Pegar texto',
'pasteDialog.hint': 'Se guarda en la carpeta del proyecto. Elige cualquier nombre.',
'pasteDialog.fileNameLabel': 'Nombre del archivo',
'pasteDialog.namePlaceholder': 'notas.txt',
'pasteDialog.contentLabel': 'Contenido',
'pasteDialog.contentPlaceholder': 'Pega lo que quieras…',
'pasteDialog.save': 'Guardar',
'pasteDialog.cancel': 'Cancelar',
'sketch.save': 'Guardar boceto',
'sketch.cancel': 'Cancelar',
'sketch.saving': 'Guardando…',
'sketch.saved': 'Guardado',
'sketch.tooltipDirty': 'Cambios sin guardar',
'sketch.tooltipClean': 'Guardado',
'fileViewer.empty': 'Selecciona un archivo para verlo.',
'fileViewer.loading': 'Cargando…',
'fileViewer.exportPptx': 'Exportar como PPTX',
'fileViewer.openInNewTab': 'Abrir en pestaña nueva',
'fileViewer.copyPath': 'Copiar ruta',
'fileViewer.copied': '¡Copiado!',
'fileViewer.share': 'Compartir',
'fileViewer.binaryMeta': 'Binario · {size}',
'fileViewer.binaryNote':
'Archivo binario ({size} bytes). Descárgalo o ábrelo desde el disco para inspeccionarlo.',
'fileViewer.pdfMeta': 'PDF · {size}',
'fileViewer.documentMeta': 'Documento',
'fileViewer.presentationMeta': 'Presentación',
'fileViewer.spreadsheetMeta': 'Hoja de cálculo',
'fileViewer.previewUnavailable': 'Vista previa no disponible. Descarga o abre el archivo para inspeccionarlo.',
'fileViewer.download': 'Descargar',
'fileViewer.open': 'Abrir',
'fileViewer.imageMeta': 'Imagen · {size}',
'fileViewer.reactMeta': 'Componente React · {size}',
'fileViewer.sketchMeta': 'Boceto · {size}',
'fileViewer.markdownStreamingMeta': 'Vista previa en streaming…',
'fileViewer.markdownErrorMeta': 'La vista previa puede estar incompleta (error de generación).',
'fileViewer.markdownStreamingStatus': 'Streaming… mostrando markdown parcial.',
'fileViewer.markdownErrorStatus': 'Error de generación. Mostrando el último contenido disponible.',
'fileViewer.videoMeta': 'Vídeo · {size}',
'fileViewer.audioMeta': 'Audio · {size}',
'fileViewer.reload': 'Recargar',
'fileViewer.reloadDisk': 'Recargar desde el disco',
'fileViewer.copy': 'Copiar',
'fileViewer.copyTitle': 'Copiar el contenido del archivo',
'fileViewer.saveDisabled': 'Guardar (visor de solo lectura)',
'fileViewer.save': 'Guardar',
'fileViewer.preview': 'Vista previa',
'fileViewer.source': 'Código fuente',
'fileViewer.tweaks': 'Ajustes',
'fileViewer.tweaksUnavailable': 'Sin panel de ajustes en este artefacto',
'fileViewer.jsxModuleTitle': 'Sin vista previa independiente',
'fileViewer.jsxModuleBody': 'Este archivo es un módulo de componente cargado por otra página.',
'fileViewer.jsxModuleCta': 'Abre la página que lo renderiza:',
'fileViewer.comment': 'Comentar',
'fileViewer.edit': 'Editar',
'fileViewer.draw': 'Dibujar',
'fileViewer.mark': 'Marcar',
'fileViewer.markTool': 'Herramienta de marcado',
'fileViewer.boxSelect': 'Seleccionar área',
'fileViewer.screenshot': 'Captura',
'manualEdit.layers': "Layers",
'manualEdit.editableCount': "{count} editable",
'manualEdit.hiddenBadge': "Hidden",
'manualEdit.title': "Manual editor",
'manualEdit.fallbackTitle': 'Edit',
'manualEdit.movePanel': 'Move edit panel',
'manualEdit.closePanel': 'Close edit panel',
'manualEdit.selectLayer': "Select a layer",
'manualEdit.empty': "Click an element in the preview or choose a layer.",
'manualEdit.noEditableLayers': "No editable layers found.",
'manualEdit.noClass': "no class",
'manualEdit.tabsAria': "Manual edit tabs",
'manualEdit.tabContent': "Content",
'manualEdit.tabStyle': "Style",
'manualEdit.tabAttributes': "Attributes",
'manualEdit.tabHtml': "Html",
'manualEdit.tabSource': "Source",
'manualEdit.attributesJson': "Attributes JSON",
'manualEdit.selectedHtml': "Selected element HTML",
'manualEdit.fullSource': "Full artifact source",
'manualEdit.applyContent': "Apply Content",
'manualEdit.applyStyle': "Apply Style",
'manualEdit.applyAttributes': "Apply Attributes",
'manualEdit.applyHtml': "Apply HTML",
'manualEdit.applySource': "Apply Source",
'manualEdit.invalidAttributes': "Invalid attributes JSON.",
'manualEdit.changes': "Changes",
'manualEdit.undo': "Undo",
'manualEdit.redo': "Redo",
'manualEdit.noChanges': "No manual edits yet.",
'manualEdit.imageUrl': "Image URL",
'manualEdit.altText': "Alt text",
'manualEdit.label': "Label",
'manualEdit.text': "Text",
'manualEdit.href': "Href",
'manualEdit.textColor': "Text color",
'manualEdit.background': "Background",
'manualEdit.fontSize': "Font size",
'manualEdit.weight': "Weight",
'manualEdit.align': "Align",
'manualEdit.padding': "Padding",
'manualEdit.margin': "Margin",
'manualEdit.radius': "Radius",
'manualEdit.border': "Border",
'manualEdit.width': "Width",
'manualEdit.minHeight': "Min height",
'fileViewer.zoomOut': 'Reducir zoom',
'fileViewer.zoomIn': 'Aumentar zoom',
'fileViewer.resetZoom': 'Restablecer zoom',
'fileViewer.viewportAria': 'Preview viewport',
'fileViewer.viewportDesktop': 'Desktop',
'fileViewer.viewportDesktopTitle': 'Full-width desktop preview',
'fileViewer.viewportTablet': 'Tablet',
'fileViewer.viewportTabletTitle': 'Tablet preview at 820 × 1180 (modern portrait baseline)',
'fileViewer.viewportMobile': 'Mobile',
'fileViewer.viewportMobileTitle': 'Mobile preview at 390 × 844',
'fileViewer.reloadAria': 'Recargar',
'fileViewer.previousSlide': 'Diapositiva anterior',
'fileViewer.nextSlide': 'Diapositiva siguiente',
'fileViewer.slideNavAria': 'Navegación de diapositivas',
'fileViewer.present': 'Presentar',
'fileViewer.presentInTab': 'En esta pestaña',
'fileViewer.presentFullscreen': 'Pantalla completa',
'fileViewer.presentNewTab': 'Pestaña nueva',
'fileViewer.exitPresentation': 'Salir de la presentación',
'fileViewer.shareLabel': "Compartir",
'fileViewer.shareMenuShareLink': 'SHARE LINK',
'fileViewer.shareMenuPublishOnline': 'PUBLISH ONLINE',
'fileViewer.shareMenuDownload': 'DOWNLOAD',
'fileViewer.shareMenuPresentation': 'Presentation',
'fileViewer.shareMenuSourceFiles': 'Source files',
'fileViewer.shareMenuSave': 'SAVE',
'fileViewer.copyProviderLink': 'Copy {provider} link',
'fileViewer.copyCloudflareLink': 'Copy Cloudflare link',
'fileViewer.screenshotCopying': 'Copying screenshot...',
'fileViewer.screenshotCopied': 'Screenshot copied to clipboard',
'fileViewer.screenshotClipboardDenied': 'Browser blocked clipboard access',
'fileViewer.screenshotPreviewLoading': 'Preview is still loading. Try again in a moment.',
'fileViewer.screenshotCaptureFailed': 'Could not capture the preview. Please try again.',
'fileViewer.exportPdf': 'Exportar como PDF',
'fileViewer.exportPdfAllSlides': 'Exportar como PDF (todas las diapositivas)',
'fileViewer.exportPptxBusy': 'Espera a que termine el turno actual.',
'fileViewer.exportPptxHint':
'Envía una solicitud al agente para convertir este diseño a PPTX.',
'fileViewer.exportPptxNa': 'La exportación a PPTX no está disponible aquí.',
'fileViewer.exportZip': 'Descargar como .zip',
'fileViewer.exportHtml': 'Exportar como HTML independiente',
'fileViewer.exportMd': 'Exportar como Markdown',
'fileViewer.exportImage': 'Exportar como imagen',
'fileViewer.exportImageFailed': 'Error al capturar la imagen. Inténtalo de nuevo o usa la herramienta de captura de pantalla de tu navegador.',
'fileViewer.exportImageModalSubtitle': 'Elige un formato y descarga la vista previa actual como imagen.',
'fileViewer.exportImageFormatLabel': 'Formato',
'fileViewer.exportImageSaving': 'Guardando imagen…',
'fileViewer.exportImageSaved': 'Imagen guardada',
'fileViewer.exportImageDownloadStarted': 'Descarga iniciada',
'fileViewer.exportImageDownloadDetails': '{filename} está en las descargas del navegador si no apareció un cuadro de diálogo Guardar como.',
'fileViewer.exportJsx': 'Exportar como JSX',
'fileViewer.exportReactHtml': 'Exportar vista previa como HTML',
'fileViewer.exportStarted': 'Export started',
'fileViewer.saveAsTemplate': 'Guardar como plantilla…',
'fileViewer.savingTemplate': 'Guardando plantilla…',
'fileViewer.savedTemplate': 'Guardado como «{name}»',
'fileViewer.savedTemplateFail': 'No se pudo guardar la plantilla. Inténtalo de nuevo.',
'fileViewer.templateNamePrompt': 'Nombre de la plantilla',
'fileViewer.templateNameDefault': 'Plantilla sin título',
'fileViewer.templateDescPrompt':
'Descripción breve (opcional: ¿qué hace útil esta plantilla?)',
'fileViewer.deployToVercel': 'Desplegar en Vercel',
'fileViewer.redeployToVercel': 'Volver a desplegar',
'fileViewer.deployingToVercel': 'Desplegando en Vercel…',
'fileViewer.deployProviderLabel': 'Proveedor',
'fileViewer.vercelProvider': 'Vercel',
'fileViewer.cloudflarePagesProvider': 'Cloudflare Pages',
'fileViewer.deployToProvider': 'Desplegar en {provider}',
'fileViewer.redeployToProvider': 'Volver a desplegar en {provider}',
'fileViewer.deployingToProvider': 'Desplegando en {provider}…',
'fileViewer.preparingPublicLink': 'Preparando enlace público…',
'fileViewer.copyDeployLink': 'Copiar enlace',
'fileViewer.deployModalTitle': 'Desplegar',
'fileViewer.deployModalSubtitle': 'Usa la cuenta del proveedor seleccionado para desplegar esta vista previa HTML.',
'fileViewer.vercelToken': 'Token de Vercel',
'fileViewer.vercelTokenGetLink': 'Obtener token de Vercel',
'fileViewer.vercelTokenPlaceholder': 'Pega tu token de Vercel',
'fileViewer.vercelTokenReuseHint': 'Se usará el token guardado. Introduce uno nuevo para sustituirlo.',
'fileViewer.vercelTokenRequired': 'Introduce y guarda primero un token de Vercel.',
'fileViewer.cloudflareApiToken': 'Token de API de Cloudflare',
'fileViewer.cloudflareApiTokenGetLink': 'Obtener token de API de Cloudflare',
'fileViewer.cloudflareApiTokenPlaceholder': 'Pega tu token de API de Cloudflare',
'fileViewer.cloudflareApiTokenReuseHint': 'Se usará el token de API de Cloudflare guardado. Introduce uno nuevo para sustituirlo.',
'fileViewer.cloudflareApiTokenRequired': 'Introduce y guarda primero un token de API de Cloudflare.',
'fileViewer.cloudflareApiTokenScopeHint': 'Pages Edit is required for deploys. Zone Read is required to list domains. DNS Edit is only needed when binding a custom domain.',
'fileViewer.vercelTeamId': 'ID del equipo',
'fileViewer.vercelTeamSlug': 'Slug del equipo',
'fileViewer.cloudflareAccountId': 'ID de cuenta',
'fileViewer.cloudflareAccountIdHint': 'Obligatorio. Encuentra el ID de cuenta en el panel de Cloudflare.',
'fileViewer.cloudflareAccountIdRequired': 'Introduce y guarda primero un Cloudflare Account ID.',
'fileViewer.cloudflareZoneLabel': 'Domain',
'fileViewer.cloudflareZonePlaceholder': 'Save Cloudflare settings to load domains',
'fileViewer.cloudflareZoneRequired': 'Select a Cloudflare domain first.',
'fileViewer.cloudflareZonesLoading': 'Loading Cloudflare domains…',
'fileViewer.cloudflareZonesRefresh': 'Refresh domains',
'fileViewer.cloudflareZonesLoadFailed': 'Could not load Cloudflare domains.',
'fileViewer.cloudflareZonesEmpty': 'No active full Cloudflare domains were found for this account.',
'fileViewer.cloudflareDomainPrefixLabel': 'Subdomain prefix',
'fileViewer.cloudflareDomainPrefixPlaceholder': 'demo',
'fileViewer.cloudflareDomainPrefixInvalid': 'Use one DNS label only: lowercase letters, numbers, and hyphens.',
'fileViewer.cloudflareHostnamePreview': 'Custom domain preview: {hostname}',
'fileViewer.cloudflareCustomDomainHint': 'Optional: choose a Cloudflare domain and prefix to bind a custom subdomain. pages.dev will still be available.',
'fileViewer.cloudflarePagesDevLinkLabel': 'pages.dev URL',
'fileViewer.cloudflareCustomDomainLinkLabel': 'Custom domain',
'fileViewer.optional': 'Opcional',
'fileViewer.vercelPreviewOnly': 'Los despliegues son solo Preview por ahora.',
'fileViewer.cloudflarePagesPreviewHint': 'Cloudflare Pages usa Direct Upload.',
'fileViewer.savingConfig': 'Guardando…',
'fileViewer.deployConfigSaveFailed': 'No se pudo guardar la configuración de Vercel.',
'fileViewer.deployFailed': 'El despliegue falló. Revisa la configuración de Vercel e inténtalo de nuevo.',
'fileViewer.deployProviderConfigSaveFailed': 'No se pudo guardar la configuración de {provider}.',
'fileViewer.deployProviderFailed': 'El despliegue en {provider} falló. Revisa la configuración e inténtalo de nuevo.',
'fileViewer.deployResultLabel': 'URL desplegada',
'fileViewer.deployLinkReady': 'Listo',
'fileViewer.deploySuccessToast': 'Despliegue subido correctamente',
'fileViewer.deploySuccessToastDetails': '{provider} · {url}',
'fileViewer.deployLinkPreparingLabel': 'Enlace público pendiente',
'fileViewer.deployLinkDelayed': 'El sitio se ha desplegado. El proveedor aún está preparando el enlace público.',
'fileViewer.deployLinkFailed': 'Falló el dominio personalizado',
'fileViewer.deployLinkProtectedLabel': 'Protección del despliegue activada',
'fileViewer.deployLinkProtected': 'El sitio se ha desplegado, pero este enlace de vista previa requiere autenticación. Desactiva Deployment Protection o usa un dominio personalizado.',
'fileViewer.retryLink': 'Reintentar ahora',
'questionForm.submit': 'Enviar',
'questionForm.skip': 'Omitir',
'questionForm.locked': 'Respondido',
'conv.switch': 'Cambiar de conversación',
'conv.label': 'Conversación',
'conv.heading': 'Conversaciones',
'conv.new': '+ Nueva',
'conv.empty': 'Aún no hay conversaciones.',
'conv.untitled': 'Conversación sin título',
'conv.renameTooltip': 'Doble clic para renombrar',
'conv.delete': 'Eliminar conversación',
'conv.deleteConfirm': '¿Eliminar «{title}»? Se borrarán sus mensajes.',
'agentPicker.label': 'Agente',
'agentPicker.modeChoose': 'Elige el modo de ejecución',
'agentPicker.localCli': 'CLI local',
'agentPicker.daemonOff': 'daemon apagado',
'agentPicker.byok': 'API · BYOK',
'agentPicker.selectAgent': 'Selecciona una CLI de agente de código detectada',
'agentPicker.noAgents': 'no hay agentes en el PATH',
'agentPicker.notInstalled': 'no instalado',
'agentPicker.rescan': 'Reescanear el PATH local en busca de agentes',
'tool.openInTab': 'Abrir {name} en una pestaña',
'tool.open': 'abrir',
'tool.todos': 'Tareas',
'tool.askQuestion': 'Pregunta',
'tool.askQuestionSubmit': 'Enviar',
'tool.askQuestionPending': 'Esperando tu respuesta',
'tool.askQuestionAnswered': 'Respondido',
'tool.todosExpand': 'Mostrar tareas',
'tool.todosCollapse': 'Ocultar tareas',
'tool.todosDone': 'Listo',
'tool.todosDismiss': 'Descartar lista de tareas',
'tool.write': 'Escribir',
'tool.edit': 'Editar',
'tool.read': 'Leer',
'tool.bash': 'Bash',
'tool.glob': 'Glob',
'tool.grep': 'Grep',
'tool.fetch': 'Obtener',
'tool.search': 'Buscar',
'tool.lines': '{n} líneas',
'tool.changeSingular': 'cambio',
'tool.changePlural': 'cambios',
'tool.in': 'en {path}',
'tool.hide': 'ocultar',
'tool.output': 'salida',
'tool.running': 'ejecutando…',
'tool.error': 'error',
'tool.done': 'listo',
'assistant.role': 'Asistente',
'assistant.workingLabel': 'Trabajando',
'assistant.doneLabel': 'Listo',
'assistant.feedbackPrompt': 'Comentarios',
'assistant.feedbackPositive': 'Útil',
'assistant.feedbackNegative': 'No útil',
'assistant.feedbackReasonTitle': 'Tell us why',
'assistant.feedbackReasonPositiveMatched': 'Understood my request',
'assistant.feedbackReasonPositiveVisual': 'Looks good',
'assistant.feedbackReasonPositiveUseful': 'Useful structure',
'assistant.feedbackReasonPositiveEasy': 'Easy to keep editing',
'assistant.feedbackReasonPositiveDesignSystem': 'Followed the design system',
'assistant.feedbackReasonNegativeMissed': 'Missed my request',
'assistant.feedbackReasonNegativeVisual': 'Visual quality needs work',
'assistant.feedbackReasonNegativeIncomplete': 'Incomplete output',
'assistant.feedbackReasonNegativeHard': 'Hard to use',
'assistant.feedbackReasonNegativeDesignSystem': 'Did not follow the design system',
'assistant.feedbackReasonOther': 'Other',
'assistant.feedbackReasonPlaceholder': 'Add a short note...',
'assistant.feedbackReasonSubmit': 'Submit',
'assistant.emptyResponseLabel': 'No output',
'assistant.emptyResponseMessage': 'The provider ended the request without returning text or an artifact. Try another model or provider, check quota, or retry.',
'assistant.unfinishedLabel': 'Detenido con tareas pendientes',
'assistant.unfinishedSummary': 'quedan {n} tarea(s)',
'assistant.unfinishedMore': '+{n} más',
'assistant.continueRemaining': 'Continuar tareas pendientes',
'assistant.outTokens': '{n} salida',
'assistant.producedFiles': 'Archivos de este turno',
'assistant.openFile': 'Abrir',
'assistant.downloadFile': 'Descargar',
'assistant.thinking': 'Pensando',
'assistant.systemReminder': 'Recordatorio del sistema',
'assistant.waitingFirstOutput': 'Esperando la primera salida',
'assistant.statusBootingAgent': 'Iniciando agente',
'assistant.statusStarting': 'Iniciando',
'assistant.statusRequesting': 'Enviando solicitud',
'assistant.statusThinking': 'Pensando',
'assistant.statusStreaming': 'Transmitiendo',
'assistant.slowHint':
'Está tardando más de lo normal. El formulario suele aparecer en 5-10 s. Puedes pulsar Detener y reformular.',
'assistant.verbEditing': 'Editando',
'assistant.verbWriting': 'Escribiendo',
'assistant.verbReading': 'Leyendo',
'assistant.verbSearching': 'Buscando',
'assistant.verbRunning': 'Ejecutando',
'assistant.verbTodos': 'Tareas',
'assistant.verbFetching': 'Obteniendo',
'assistant.verbCalling': 'Llamando',
'qf.answered': 'respondido',
'qf.choose': 'Elige…',
'qf.required': 'obligatorio',
'qf.lockedSubmitted':
'Respuestas enviadas: el agente las usará durante el resto de la sesión.',
'qf.lockedPrev': 'Este formulario es de un turno anterior.',
'qf.hint':
'Elige lo que encaje. Omite los campos opcionales que no te importen: el agente usará valores predeterminados sensatos.',
'qf.submitDefault': 'Enviar respuestas',
'qf.submitDisabledTitle': 'Rellena primero los campos obligatorios',
'qf.submitTitle': 'Enviar respuestas',
'qf.cardSelected': 'seleccionado',
'qf.cardRefs': 'Refs:',
'qf.cardSampleText': 'El veloz murciélago hindú · 0123',
'sketch.toolSelect': 'Seleccionar (sin acción)',
'sketch.toolPen': 'Lápiz',
'sketch.toolText': 'Texto',
'sketch.toolRect': 'Rectángulo',
'sketch.toolArrow': 'Flecha',
'sketch.toolEraser': 'Borrador',
'sketch.color': 'Color',
'sketch.strokeSize': 'Grosor del trazo',
'sketch.undo': 'Deshacer',
'sketch.clear': 'Limpiar',
'sketch.close': 'Cerrar',
'sketch.closeConfirm': '¿Cerrar el boceto y descartar los cambios sin guardar?',
'sketch.textPrompt': 'Texto:',
'sketch.textModalTitle': 'Añadir texto',
'pet.title': 'Mascotas',
'pet.tabBuiltIn': 'Integradas',
'pet.tabBuiltInHint': 'Compañeros incluidos con Open Design — elige uno y adóptalo.',
'pet.builtInEmpty': 'Las mascotas integradas no están disponibles ahora. Actualiza la pestaña Comunidad cuando el daemon vuelva a estar en línea.',
'pet.tabCustom': 'Personalizada',
'pet.tabCustomHint': 'Pon nombre, glifo, color o sube un sprite.',
'pet.tabCommunity': 'Comunidad',
'pet.tabCommunityHint': 'Mascotas eclosionadas de Codex — adopta o genera una con IA.',
'pet.tabsAria': 'Fuente de la mascota',
'pet.subtitle': 'Adopta una mascotita que flota sobre tu workspace.',
'pet.navTitle': 'Mascotas',
'pet.navHint': 'Adopta o personaliza',
'pet.adopt': 'Adoptar',
'pet.adoptedBadge': 'Adoptada',
'pet.adoptCallout': 'Adopta una mascota',
'pet.changePet': 'Cambiar mascota',
'pet.wake': 'Despertar',
'pet.tuck': 'Esconder',
'pet.wakeTitle': 'Despertar la mascota — mostrar el overlay.',
'pet.tuckTitle': 'Esconder la mascota — ocultar el overlay.',
'pet.settingsTitle': 'Abrir ajustes de mascota',
'pet.useCustom': 'Usar mi mascota',
'pet.customTitle': 'Crea la tuya',
'pet.customHint': 'Elige nombre, símbolo y color — el overlay se actualiza en vivo.',
'pet.customGreetingPlaceholder': 'Saluda con tu mascota…',
'pet.fieldName': 'Nombre',
'pet.fieldGlyph': 'Símbolo',
'pet.fieldGlyphHint': 'Un solo emoji va mejor (p. ej. 🐝, 🦄, 🐢).',
'pet.fieldGreeting': 'Saludo',
'pet.fieldAccent': 'Color de acento',
'pet.fieldAccentCustom': 'Color personalizado',
'pet.fieldAccentDefault': 'Color de acento predeterminado',
'pet.overlayAria': 'Compañero',
'pet.spriteAria': '{name} — arrastra para mover, haz clic para conversar',
'pet.spriteTitle': '¡Hola de {name}! Haz clic para conversar.',
'pet.composerTitle': 'Mascotas — despertar, esconder o elegir',
'pet.composerMenuTitle': 'Mascotas',
'pet.composerMenuHint': 'tip: escribe /pet para alternar',
'pet.composerOpenSettings': 'Administrar mascotas',
'pet.welcomeTeaserTitle': 'Adopta una mascota',
'pet.welcomeTeaserBody': 'Un compañerito que flota sobre tu workspace.',
'pet.welcomeTeaserCta': 'Elegir',
'pet.imageUpload': 'Subir sprite',
'pet.imageReplace': 'Reemplazar sprite',
'pet.imageRemove': 'Usar emoji',
'pet.imageHintIdle': 'PNG, JPG, WebP, GIF o SVG. ¿Spritesheet? Sube una tira horizontal y ajusta el número de frames.',
'pet.imageHintActive': 'Mostrando tu sprite. Pon frames > 1 para animar un spritesheet horizontal.',
'pet.fieldFrames': 'Frames',
'pet.fieldFramesHint': '1 = estático. > 1 = spritesheet horizontal.',
'pet.fieldFps': 'Velocidad (fps)',
'pet.fieldFpsHint': 'Velocidad de cambio de frames.',
'pet.atlasImport': 'Importar sprite de Codex',
'pet.atlasImportTitle': 'Importa un atlas hatch-pet 8x9 / 192x208 (PNG o WebP).',
'pet.atlasPickerTitle': 'Elige una fila de animación',
'pet.atlasPickerHint': 'Las mascotas Codex traen 9 filas de animación. Por defecto mantenemos todo el atlas para que la mascota cambie de fila al pasar el ratón, según la dirección del arrastre o tras estar inactiva. También puedes fijar un solo bucle.',
'pet.atlasCancel': 'Descartar atlas',
'pet.atlasAdopt': 'Fijar a esta fila',
'pet.atlasAdoptFull': 'Usar atlas completo (animado)',
'pet.atlasAdoptFullTitle': 'Conserva todas las filas para que la mascota reaccione al hover, a la dirección del arrastre y a la inactividad larga.',
'pet.atlasAdoptRowTitle': 'Recorta solo la fila resaltada en una tira con bucle único.',
'pet.atlasActiveHint': 'Atlas animado activo — la mascota elige una fila según tu interacción (hover, arrastre, inactividad).',
'pet.atlasRow.idle': 'Idle',
'pet.atlasRow.running-right': 'Corre a la derecha',
'pet.atlasRow.running-left': 'Corre a la izquierda',
'pet.atlasRow.waving': 'Saludo',
'pet.atlasRow.jumping': 'Salto',
'pet.atlasRow.failed': 'Falló',
'pet.atlasRow.waiting': 'Espera',
'pet.atlasRow.running': 'Corre',
'pet.atlasRow.review': 'Revisión',
'pet.hatchTitle': 'Eclosiona una mascota nueva con IA',
'pet.hatchHint': 'Usa la skill hatch-pet incluida desde el chat para generar un spritesheet estilo Codex y luego impórtalo aquí.',
'pet.hatchConcept': 'Concepto de mascota (opcional)',
'pet.hatchConceptPlaceholder': 'p. ej. un shiba pixel-art con un suéter cómodo',
'pet.hatchCopy': 'Copiar prompt',
'pet.hatchCopied': '¡Copiado!',
'pet.hatchFoot': 'Cuando la skill guarde tu mascota, vuelve y pulsa "Importar sprite de Codex".',
'pet.slashPopoverAria': 'Comandos slash',
'pet.slashPopoverTitle': 'Comandos',
'pet.slashPopoverHint': '↑↓ navegar · enter elegir · esc cerrar',
'pet.slashPet': 'Alternar, adoptar o ir a ajustes de mascota.',
'pet.slashPetWake': 'Despertar la mascota flotante.',
'pet.slashPetTuck': 'Guardar la mascota por ahora.',
'pet.slashHatch': 'Genera una mascota Codex con la skill hatch-pet.',
'pet.slashHatchArg': '<concepto>',
'pet.slashSearch': 'Busca en la web con el comando OD research.',
'pet.slashSearchArg': '<consulta>',
'pet.codexTitle': 'Recién eclosionadas',
'pet.codexSubtitle': 'Las mascotas empaquetadas por la skill hatch-pet aparecen aquí para adopción en un clic.',
'pet.codexSubtitleWithDir': 'Escaneando {dir} en busca de paquetes de hatch-pet.',
'pet.codexEmpty': 'Aún no hay mascotas eclosionadas. Escribe /hatch en el chat para generar una.',
'pet.codexLoading': 'Buscando mascotas eclosionadas…',
'pet.codexRefresh': 'Refrescar',
'pet.codexAdopt': 'Adoptar',
'pet.codexAdopting': 'Adoptando…',
'pet.communitySync': 'Descargar mascotas de la comunidad',
'pet.communitySyncing': 'Descargando…',
'pet.communitySyncTitle': 'Sincronizar las últimas mascotas de Codex Pet Share + j20 Hatchery en ~/.codex/pets/.',
'pet.communitySyncDone': '{wrote} mascotas nuevas sincronizadas ({total} en total).',
'pet.communitySyncFailed': 'Error al sincronizar: {error}',
'pet.codexBundled': 'Incluida',
'pet.codexBundledTitle': 'Viene con Open Design — sin descarga.',
'settings.notifications': 'Notificaciones',
'settings.notificationsHint': 'Sonido y notificación al completar la tarea',
'settings.notifyCompletionSound': 'Sonido al completar',
'settings.notifyCompletionSoundHint': 'Se reproduce al terminar un turno. Desactivado por defecto.',
'settings.notifySuccessSound': 'Sonido de éxito',
'settings.notifyFailureSound': 'Sonido de error',
'settings.notifyDesktop': 'Notificación de escritorio',
'settings.notifyDesktopHint': 'Se envía cuando la ventana no está en primer plano.',
'settings.notifyDesktopBlocked': 'Bloqueadas por el navegador. Habilítalas en la configuración del sitio.',
'settings.notifyDesktopUnsupported': 'Las notificaciones de escritorio no están disponibles en este entorno.',
'settings.notifyTest': 'Enviar prueba',
'settings.notifyTestSent': 'Notificación de prueba enviada. Si no aparece el aviso, revisa las notificaciones del navegador y del sistema.',
'settings.notifyTestFailed': 'Falló la llamada de notificación. Revisa las notificaciones del navegador y del sistema.',
'settings.notifySoundDing': 'Tilín',
'settings.notifySoundChime': 'Carillón',
'settings.notifySoundTwoToneUp': 'Dos tonos ascendente',
'settings.notifySoundPluck': 'Pulsación',
'settings.notifySoundBuzz': 'Zumbido',
'settings.notifySoundTwoToneDown': 'Dos tonos descendente',
'settings.notifySoundThud': 'Golpe',
'settings.skills': 'Habilidades',
'settings.skillsHint': 'Habilidades funcionales que el agente puede invocar durante la tarea',
'settings.skillsNew': 'Nueva habilidad',
'settings.skillsEmpty': 'Selecciona una habilidad a la izquierda o crea una nueva.',
'settings.skillsEdit': 'Editar',
'settings.skillsDelete': 'Eliminar',
'settings.skillsDeleteConfirm': 'Confirmar eliminación',
'settings.skillsName': 'Nombre',
'settings.skillsTriggers': 'Disparadores (separados por comas o saltos de línea)',
'settings.skillsDescription': 'Descripción',
'settings.skillsBody': 'Cuerpo de SKILL.md',
'settings.skillsCreate': 'Crear',
'settings.skillsSave': 'Guardar',
'settings.skillsSaving': 'Guardando…',
'settings.skillsFiles': 'Archivos',
'settings.skillsNoFiles': 'No hay archivos en esta carpeta de habilidad.',
'settings.skillsNameRequired': 'El nombre de la habilidad es obligatorio.',
'settings.skillsBodyRequired': 'El contenido de la habilidad es obligatorio.',
'settings.designSystems': 'Sistemas de diseño',
'settings.designSystemsHint': 'Explora y activa los sistemas de diseño disponibles',
'settings.designSystemsInstalled': 'Instalados',
'settings.designSystemsAdd': 'Añadir sistema de diseño',
'settings.designSystemsHiddenCount': '{count} ocultos en la galería de inicio',
'settings.designSystemsShowAll': 'Mostrar todo',
'settings.designSystemsShowHidden': 'Mostrar ocultos',
'settings.designSystemsSource': 'Origen',
'settings.designSystemsSourceLocal': 'Local',
'settings.designSystemsSourceGithub': 'GitHub',
'settings.designSystemsStructure': 'Estructura',
'settings.designSystemsModeHybrid': 'Híbrido',
'settings.designSystemsModeNormalized': 'Normalizado',
'settings.designSystemsModeVerbatim': 'Literal',
'settings.designSystemsCraft': 'Craft',
'settings.designSystemsCraftColor': 'Color',
'settings.designSystemsCraftAccessibility': 'Accesibilidad',
'settings.designSystemsGithubUrl': 'URL de GitHub',
'settings.designSystemsProjectPath': 'Ruta del proyecto',
'settings.designSystemsImportGithub': 'Importar desde GitHub',
'settings.designSystemsImportProject': 'Importar desde proyecto',
'settings.designSystemsImportedStatus': '{title} importado',
'settings.designSystemsViewImported': 'Ver sistema de diseño importado',
'settings.designSystemsCategory': 'Categoría',
'settings.designSystemsAllCategories': 'Todas las categorías',
'settings.designSystemsShowInHomeGallery': 'Mostrar en la galería de inicio',
'settings.projectLocations': 'Ubicaciones de proyectos',
'settings.projectLocationsHint': 'Raíces de almacenamiento del espacio de trabajo',
'settings.projectLocationsDescription': 'Añade bases de trabajo que pueden contener varias carpetas de proyectos de Open Design. Los proyectos nuevos se guardan como una carpeta dentro de la base seleccionada.',
'settings.projectLocationsSaveError': 'No se pudieron guardar las ubicaciones de proyectos. Comprueba que cada ruta sea una carpeta accesible.',
'settings.projectLocationsSaved': 'Ubicaciones de proyectos guardadas.',
'settings.projectLocationsScanError': 'No se pudieron escanear las ubicaciones de proyectos.',
'settings.projectLocationsScanComplete': 'Escaneo completado: {imported} importados, {existing} ya registrados.',
'settings.projectLocationsNoFolderSelected': 'No se seleccionó ninguna carpeta.',
'settings.projectLocationsDuplicate': 'Esa base de trabajo ya está añadida.',
'settings.projectLocationsWorkBaseMeta': 'Base de trabajo · los proyectos se crean aquí como subcarpetas',
'settings.projectLocationsAddFolder': 'Añadir carpeta…',
'settings.projectLocationsDefaultBadge': 'Ubicación predeterminada',
'settings.projectLocationsMakeDefault': 'Hacer predeterminada',
'settings.projectLocationsDefaultSaved': 'Ubicación de proyecto predeterminada actualizada.',
'settings.librarySkills': 'Habilidades',
'settings.libraryDesignSystems': 'Sistemas de diseño',
'settings.librarySearch': 'Buscar...',
'settings.libraryAll': 'Todo',
'settings.libraryPreview': 'Vista previa',
'settings.libraryPreviewClose': 'Cerrar',
'settings.libraryLoading': 'Cargando...',
'settings.libraryNoResults': 'Ningún elemento coincide con tu búsqueda.',
'settings.libraryEnabled': 'Activado',
'settings.libraryDisabled': 'Desactivado',
'settings.connectorsNavHint': 'Conexiones a sistemas externos',
'settings.connectorsHint': 'Gestiona la configuración de conectores y proveedores de herramientas para este dispositivo.',
'settings.connectorsComposioApiKey': 'Clave API de Composio',
'settings.connectorsSavedTitle': 'Guardada en el daemon local',
'settings.connectorsSavedWithTail': 'Guardada · ••••{tail}',
'settings.connectorsSaved': 'Guardada',
'settings.connectorsGetApiKey': 'Obtener clave API',
'settings.connectorsReplaceKeyPlaceholder': 'Pega una clave nueva para sustituir la guardada',
'settings.connectorsApiKeyPlaceholder': 'Pega la clave API de Composio',
'settings.connectorsClear': 'Borrar',
'settings.connectorsClearConfirmTitle': '¿Borrar la clave de API de Composio guardada?',
'settings.connectorsClearConfirmBody': 'Eliminar la clave desconecta todos los conectores de Composio vinculados a este espacio. Se quitarán las cuentas conectadas, los permisos OAuth y el acceso a las herramientas.',
'settings.connectorsClearConfirmContinue': 'Continuar',
'settings.connectorsClearFinalTitle': 'Esto desconectará todos los conectores',
'settings.connectorsClearFinalBody': 'No hay vuelta atrás. Tendrás que volver a conectar cada integración desde cero después de pegar una clave nueva.',
'settings.connectorsClearFinalConfirm': 'Borrar clave y desconectar',
'settings.connectorsClearArming': 'Un momento\u2026',
'settings.connectorsClearCancel': 'Cancelar',
'settings.connectorsSaveKey': "Guardar clave",
'settings.connectorsSaveKeyTitle': "Enviar esta clave al daemon local",
'settings.connectorsKeySaving': "Guardando…",
'settings.connectorsKeySaved': "Guardado ✓",
'settings.connectorsKeyError': "No se pudo guardar la clave. Comprueba que el daemon local está activo y vuelve a intentarlo.",
'settings.connectorsHelpSaved': 'Tu clave desbloquea el catálogo de abajo y permanece en el daemon local. Pega una clave nueva para sustituirla o bórrala.',
'settings.connectorsHelpUnsaved': "Cambios sin guardar — pulsa Guardar clave para almacenar esta credencial en el daemon local y desbloquear el catálogo de abajo.",
'settings.connectorsHelpEmpty': 'Añade una clave para desbloquear el catálogo de abajo. Las claves se guardan localmente en el daemon y nunca se envían mediante variables de entorno.',
'settings.connectorsLoadingSavedKey': 'Buscando una clave guardada en el daemon local…',
'settings.autosaveSaving': "Guardando…",
'settings.autosaveSaved': "Todos los cambios guardados",
'settings.autosaveError': "No se pudieron guardar los cambios. Es posible que el daemon local esté desconectado.",
'settings.libraryToggleLabel': 'Alternar',
// Memory (auto-extracted personalization saved as on-disk markdown)
'settings.memory': 'Memoria',
'settings.memoryHint': 'Datos personales extraídos automáticamente de los chats',
'settings.memoryDescription': 'Datos sobre tus preferencias extraídos automáticamente, guardados como Markdown e inyectados en cada chat.',
'settings.memoryEnabled': 'Activada',
'settings.memoryDisabled': 'Desactivada',
'settings.memoryEnableLabel': 'Activar inyección de memoria',
'settings.memoryDisabledBanner': 'La memoria está desactivada. Los datos existentes permanecen en disco pero no se inyectarán en nuevos chats.',
'settings.memoryNew': 'Nueva memoria',
'settings.memoryEdit': 'Editar',
'settings.memoryDelete': 'Eliminar',
'settings.memoryPreview': 'Vista previa',
'settings.memoryEmpty': 'Aún no hay memoria.',
'settings.memoryEmptyHintZh': '记住: 用户偏好深色主题',
'settings.memoryEmptyHintEn': 'I prefer dark mode',
'settings.memoryName': 'Nombre',
'settings.memoryDesc': 'Descripción en una línea',
'settings.memoryBody': 'Cuerpo (Markdown compatible)',
'settings.memoryBodyHint': 'La regla primero, luego Why y How to apply.',
'settings.memoryStartersLabel': 'Need a starting point? Click to fill the form:',
'settings.memoryStarterUserName': 'My role',
'settings.memoryStarterUserDesc': 'I am a frontend engineer working on a SaaS design tool',
'settings.memoryStarterUserBody': '- Role: senior frontend engineer\n- Stack: React, TypeScript, Vite\n- Domain: design / collaboration tools\n- Timezone: GMT+8 (Asia/Shanghai)\n\nWhen to apply: any chat — frame examples around web frontend.',
'settings.memoryStarterFeedbackName': 'UI preferences',
'settings.memoryStarterFeedbackDesc': 'Dark mode, large body text, low information density',
'settings.memoryStarterFeedbackBody': '- Theme: dark by default\n- Body text: ≥ 18px\n- Information density: prefer whitespace, fewer items per screen\n\nWhy: less eye strain during long sessions.\nWhen to apply: whenever you generate UI, web pages, or slides.',
'settings.memoryStarterProjectName': 'Current project',
'settings.memoryStarterProjectDesc': 'Open Design v0.5 — chat-driven design editor',
'settings.memoryStarterProjectBody': '- Goal: ship the chat-driven editor this quarter\n- Priorities: streaming render, local multimodal, offline-first\n- Stack: Next.js 16, Express daemon, SQLite\n\nWhen to apply: in any conversation about this project.',
'settings.memorySaveHint': 'Not auto-saved — click Create / Save to apply.',
'settings.memoryIndexSaveHint': 'Edits to the index are not auto-saved — click Save index to apply.',
'settings.memoryIndexUnsaved': 'Unsaved changes',
'settings.memoryFlashCreated': '✓ Memory created',
'settings.memoryFlashSaved': '✓ Memory saved',
'settings.memoryFlashDeleted': '✓ Memory deleted',
'settings.memoryFlashIndexSaved': '✓ Index saved',
'settings.memoryFlashPathCopied': '✓ Ruta copiada',
'settings.memoryNameLabel': 'Title',
'settings.memoryTypeLabel': 'Type',
'settings.memoryDescLabel': 'Description',
'settings.memoryBodyLabel': 'Content',
'settings.memoryTypeUser': 'Usuario',
'settings.memoryTypeFeedback': 'Retroalimentación',
'settings.memoryTypeProject': 'Proyecto',
'settings.memoryTypeReference': 'Referencia',
'settings.memoryIndex': 'MEMORY.md (índice)',
'settings.memoryIndexSave': 'Guardar índice',
'settings.memoryIndexReset': 'Restablecer',
'settings.memoryToastChanged': 'Memoria actualizada',
'settings.memoryToastClickHint': 'Ver',
'settings.memoryAll': 'Todo',
'settings.memoryExtractions': 'Extraction history',
'settings.memoryExtractionsHint': 'Recent LLM-backed extraction attempts. Heuristic regex extraction always runs first; LLM extraction runs in the background after each turn.',
'settings.memoryExtractionsEmpty': 'No extractions yet. The next chat turn will populate this list.',
'settings.memoryExtractionsRefresh': 'Refresh',
'settings.memoryExtractionsRefreshing': 'Refreshing…',
'settings.memoryExtractionPhaseRunning': 'Running…',
'settings.memoryExtractionPhaseSuccess': 'Success',
'settings.memoryExtractionPhaseSkipped': 'Skipped',
'settings.memoryExtractionPhaseFailed': 'Failed',
'settings.memoryExtractionSkipNoProvider': 'No API key configured for LLM memory extraction.',
'settings.memoryExtractionSkipDisabled': 'Memory is disabled.',
'settings.memoryExtractionSkipEmpty': 'Empty user message — nothing to extract.',
'settings.memoryExtractionSkipNoMatch': 'No regex pattern matched this turn.',
'settings.memoryExtractionKindHeuristic': 'regex',
'settings.memoryExtractionKindLlm': 'LLM',
'settings.memoryExtractionProviderEnv': 'env',
'settings.memoryExtractionProviderMediaConfig': 'media settings',
'settings.memoryExtractionProposed': 'proposed',
'settings.memoryExtractionWritten': 'written',
'settings.memoryExtractionDuration': 'in',
'settings.memoryNoProviderBannerTitle': 'LLM memory extraction is not running',
'settings.memoryNoProviderBannerBody': 'No API key found for the memory extractor. Add an OpenAI key under Media providers, or set ANTHROPIC_API_KEY / OPENAI_API_KEY in the environment, to enable LLM-driven extraction. Heuristic regex extraction is still active.',
'settings.memoryExtractionProviderOverride': 'memory settings',
'settings.memoryExtractionDelete': 'Delete',
'settings.memoryExtractionsClear': 'Clear',
'settings.memoryExtractionsClearTitle': 'Clear all extraction history',
'settings.libraryInstall': 'Instalar',
'settings.libraryInstallGithub': 'GitHub',
'settings.libraryInstallLocal': 'Ruta local',
'settings.libraryInstallUrl': 'https://github.com/owner/repo',
'settings.libraryInstallPath': '/path/to/skill-folder',
'settings.libraryInstallButton': 'Instalar',
'settings.libraryUninstall': 'Desinstalar',
'settings.libraryBuiltIn': 'Integrado',
'settings.libraryInstalled': 'Instalado',
'notify.successTitle': 'Tarea completada',
'notify.failureTitle': 'La tarea falló',
'notify.successBody': 'Un turno ha terminado.',
'notify.failureBody': 'La tarea terminó con un error.',
'updater.available': 'Actualización disponible',
'updater.availableBody': 'Open Design {version} está disponible. Se descargará antes de abrir el instalador.',
'updater.checking': 'Buscando actualizaciones',
'updater.download': 'Descargar actualización',
'updater.downloading': 'Descargando actualización',
'updater.downloadingPercent': 'Descargando actualización {percent}%',
'updater.done': 'Listo',
'updater.failed': 'Error de actualización',
'updater.installerOpenBody': 'El instalador está abierto. Open Design se está cerrando para que puedas completar la actualización.',
'updater.installerOpened': 'Instalador abierto',
'updater.later': 'Más tarde',
'updater.openFailedFallback': 'No se pudo abrir el instalador.',
'updater.openInstaller': 'Instalar actualización',
'updater.opening': 'Abriendo instalador...',
'updater.quitButton': 'Salir de Open Design',
'updater.quitFailedBody': 'El instalador está abierto, pero Open Design no pudo cerrarse. Cierra Open Design antes de reemplazar la app.',
'updater.quitFailedTitle': 'No se pudo salir',
'updater.quitting': 'Cerrando...',
'updater.ready': 'Actualización lista',
'updater.readyGeneric': 'Hay una nueva versión lista. Open Design se cerrará y abrirá el instalador.',
'updater.readyVersion': 'Open Design {version} está listo. Open Design se cerrará y abrirá el instalador.',
'updater.upToDate': 'Ya tienes la versión más reciente.',
'settings.memoryModelInlineLabel': 'Memory model',
'settings.memoryModelInlineSameAsChat': 'Same as chat',
'settings.memoryModelInlineSameAsChatWithModel': 'Same as chat ({model})',
'settings.memoryModelInlineSameAsChatWithProvider': 'Same as chat ({provider})',
'settings.memoryModelInlineHintCli': 'Optional. The memory extractor uses an env-var or media-providers API key on this provider; pinning a model here just overrides the auto-pick.',
'settings.memoryModelInlineHintCliConstrained': 'Optional. Memory will call {provider}; needs an env-var or media-providers API key for that provider, or pick a model below to override.',
'settings.memoryModelInlineHintByok': 'Optional. Reuses your chat API key on the same provider — picking a different (usually cheaper) model only changes the request body.',
'settings.memoryModelInlineFlashSaved': 'Saved',
'settings.memoryModelInlineFlashCleared': 'Cleared',
'settings.orbit.eyebrow': 'Automatización',
'settings.orbit.title': 'Orbit',
'settings.orbit.navHint': 'Resumen diario de conectores',
'settings.orbit.lede': 'Recopila actividad de conectores según una programación y publica el resultado como un live artifact actualizable.',
'settings.orbit.statusOnTitle': 'Las ejecuciones diarias programadas están activadas',
'settings.orbit.statusOffTitle': 'Las ejecuciones diarias programadas están desactivadas',
'settings.orbit.statusActive': 'Activo',
'settings.orbit.statusOff': 'Desactivado',
'settings.orbit.runTitle': 'Iniciar una ejecución de Orbit y abrir la conversación en vivo',
'settings.orbit.running': 'Ejecutando…',
'settings.orbit.runOpen': 'Ejecutar ahora',
'settings.orbit.dailySummaryTitle': 'Resumen diario',
'settings.orbit.dailySummarySub': 'Se ejecuta una vez al día a la hora local programada.',
'settings.orbit.on': 'Activado',
'settings.orbit.off': 'Desactivado',
'settings.orbit.runTimeTitle': 'Hora de ejecución',
'settings.orbit.runTimeSub': 'Predeterminada 08:00. Guarda para aplicar la programación del daemon.',
'settings.orbit.runTimeAria': 'Hora de ejecución diaria de Orbit',
'settings.orbit.nextRun': 'Próxima ejecución',
'settings.orbit.nextRunScheduledAfterSave': 'Programada después de guardar',
'settings.orbit.schedule': 'Programación',
'settings.orbit.pausedManualOnly': 'Pausado — solo ejecuciones manuales',
'settings.orbit.templateTitle': 'Plantilla de prompt',
'settings.orbit.templateMissing': 'La plantilla {id} no está instalada.',
'settings.orbit.templateMissingOption': '{id} (falta)',
'settings.orbit.templateMissingInstall': 'Instala una skill de Orbit para dirigir el prompt.',
'settings.orbit.templateMissingPickAnother': 'Elige otra plantilla en el desplegable.',
'settings.orbit.templateResetTitle': 'Restablecer a {id}',
'settings.orbit.templateReset': 'Restablecer',
'settings.orbit.templateHelp': 'Dirige Orbit con una skill: el prompt de ejemplo de la plantilla seleccionada se inyecta en cada ejecución de Orbit para que los resúmenes sigan esa forma.',
'settings.orbit.templateAria': 'Plantilla de prompt de Orbit',
'settings.orbit.templatesLoading': 'Cargando plantillas…',
'settings.orbit.templatesOptgroup': 'Plantillas de skills de Orbit',
'settings.orbit.lastRun': 'Última ejecución',
'settings.orbit.triggerManual': 'Manual',
'settings.orbit.triggerScheduled': 'Programada',
'settings.orbit.meterAria': '{succeeded} correctos, {skipped} omitidos, {failed} fallidos de {checked} comprobados',
'settings.orbit.countChecked': 'Comprobados',
'settings.orbit.countSucceeded': 'Correctos',
'settings.orbit.countSkipped': 'Omitidos',
'settings.orbit.countFailed': 'Fallidos',
'settings.orbit.runError': 'No se pudo ejecutar Orbit. Asegúrate de que el daemon local esté en ejecución y los conectores estén configurados.',
'settings.orbit.gateAriaLabel': "Se necesitan conectores para usar Orbit",
'settings.orbit.gateEyebrow': "Configuración requerida",
'settings.orbit.gateTitle': "Conecta una herramienta para impulsar Orbit",
'settings.orbit.gateBody': "Orbit resume la actividad de tus conectores. Aún no has conectado ninguno — añade al menos una integración para que Orbit tenga algo que informar.",
'settings.orbit.gateBodyNoKey': "Orbit resume la actividad de tus conectores, y los conectores funcionan a través de Composio. Añade una clave de API de Composio en Conectores para desbloquear el catálogo y elegir tu primera integración.",
'settings.orbit.gateAction': "Abrir Conectores",
'settings.orbit.gateActionNoKey': "Configurar Composio",
'settings.orbit.gateLoading': "Comprobando tus conectores…",
'settings.orbit.controlsLockedBadge': "Bloqueado",
'settings.orbit.controlsLockedHint': "Conecta una herramienta para desbloquear la programación y la plantilla de Orbit.",
'settings.orbit.artifactKickerLive': 'live artifact',
'settings.orbit.artifactKickerLegacy': 'Resumen heredado',
'settings.orbit.artifactTitle': 'Resumen diario de actividad de Orbit',
'settings.orbit.artifactMetaLive': 'Artefacto HTML actualizable generado a partir de actividad de conectores.',
'settings.orbit.artifactMetaLegacy': 'Generado antes de activar la compatibilidad con live artifact; ejecuta Orbit de nuevo para publicar uno.',
'settings.orbit.copyMarkdownTitle': 'Copiar resumen Markdown al portapapeles',
'settings.orbit.copied': 'Copiado',
'settings.orbit.copy': 'Copiar',
'settings.orbit.openArtifact': 'Abrir artefacto',
'settings.orbit.sourceMarkdown': 'Markdown fuente',
'liveArtifact.viewer.tabPreview': 'Vista previa',
'liveArtifact.viewer.tabCode': 'Código',
'liveArtifact.viewer.tabData': 'Datos',
'liveArtifact.viewer.tabRefreshHistory': 'Historial de actualizaciones',
'liveArtifact.viewer.dataEmpty': 'No hay caché data.json disponible.',
'liveArtifact.viewer.code.templateHeading': 'HTML de plantilla',
'liveArtifact.viewer.code.renderedHeading': 'HTML renderizado',
'liveArtifact.viewer.code.templateHelp': 'La plantilla editable usada con data.json para generar la vista previa.',
'liveArtifact.viewer.code.renderedHelp': 'El index.html generado que Preview carga actualmente.',
'liveArtifact.viewer.code.variantAria': 'Variante de código',
'liveArtifact.viewer.code.variantTemplate': 'Plantilla',
'liveArtifact.viewer.code.variantRendered': 'Renderizado',
'liveArtifact.viewer.code.loading': 'Cargando código…',
'liveArtifact.viewer.code.unavailable': 'El código aún no está disponible.',
'liveArtifact.viewer.code.empty': 'Este archivo de código está vacío.',
// Diagnostics export
'diagnostics.exportTitle': 'Exportar diagnósticos',
'diagnostics.exportButton': 'Exportar diagnósticos',
'diagnostics.exportHint': 'Empaqueta los registros recientes y la información del equipo en un zip para enviar al soporte.',
'diagnostics.exporting': 'Exportando…',
'diagnostics.exportSuccess': 'Diagnósticos guardados en {path}',
'diagnostics.exportFailed': 'No se pudieron exportar los diagnósticos: {message}',
'generationPreview.title': 'Generando…',
'generationPreview.failedTitle': 'Error de generación',
'generationPreview.failedFallback': 'Algo salió mal. Inténtalo de nuevo.',
'generationPreview.footnote': 'Suele tardar de 2 a 5 minutos',
'generationPreview.stepUnderstand': 'Entendiendo los requisitos',
'generationPreview.stepGenerate': 'Generando la página',
'generationPreview.stepPrepare': 'Preparando la vista previa',
'generationPreview.elapsed': '{elapsed} transcurridos',
'generationPreview.estimate': 'Normalmente 25 min',
'generationPreview.progressAria': 'Progreso de la generación: {percent}%',
'generationPreview.retry': 'Reintentar',
'generationPreview.awaitingTitle': 'Esperando tu respuesta',
'generationPreview.awaitingLead': 'Responde unas preguntas en el chat para continuar.',
'generationPreview.stoppedTitle': 'Generación en pausa',
'generationPreview.stoppedLead': 'Reanuda los pasos restantes desde el chat de la izquierda.',
};