mirror of
https://github.com/nexu-io/open-design.git
synced 2026-06-01 03:14:35 +07:00
* 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
1722 lines
98 KiB
TypeScript
1722 lines
98 KiB
TypeScript
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 2–5 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.',
|
||
};
|