{ "Language": { "followSystem": "Seguir el sistema", "english": "Inglés", "simplifiedChinese": "Chino simplificado", "traditionalChinese": "Chino tradicional", "japanese": "Japonés", "korean": "Coreano", "spanish": "Español", "german": "Alemán", "french": "Francés", "portuguese": "Portugués", "arabic": "Árabe" }, "GitCredentialDialog": { "title": "Autenticación requerida", "description": "El servidor remoto requiere credenciales. Introduce tu nombre de usuario y contraseña (o token de acceso personal).", "username": "Nombre de usuario", "usernamePlaceholder": "Usuario o correo electrónico", "password": "Contraseña / Token", "passwordPlaceholder": "Contraseña o token de acceso personal", "passwordHint": "Introduce el nombre de usuario y contraseña del servidor.", "cancel": "Cancelar", "authenticate": "Autenticar", "authenticating": "Autenticando...", "invalidCredentials": "Credenciales inválidas. Inténtalo de nuevo.", "saveCredentials": "Guardar credenciales para futuras operaciones", "githubTitle": "Autenticación de GitHub", "githubDescription": "Introduce un token de acceso personal para conectarte a GitHub. El token se validará y guardará automáticamente.", "githubToken": "Token de acceso personal", "githubTokenPlaceholder": "ghp_xxxxxxxxxxxx", "githubTokenHint": "Genera un token en GitHub → Settings → Developer settings → Personal access tokens.", "githubAuthenticate": "Validar y conectar", "generateToken": "Generar token" }, "SettingsShell": { "title": "Configuración", "preferences": "Preferencias", "nav": { "appearance": "Apariencia", "agents": "Agentes", "mcp": "MCP", "skills": "Skills", "shortcuts": "Atajos", "version_control": "Control de versiones", "system": "Sistema", "chat_channels": "Canales de chat", "web_service": "Servicio Web", "model_providers": "Proveedores de Modelos", "experts": "Expertos" } }, "AppearanceSettings": { "sectionTitle": "Apariencia del tema", "sectionDescription": "Elige claro, oscuro o seguir el sistema. La configuración se guarda automáticamente.", "themeMode": "Modo de tema", "placeholder": "Selecciona el modo de tema", "system": "Seguir el sistema", "light": "Claro", "dark": "Oscuro", "currentTheme": "Tema efectivo actual: {theme}", "resolvedTheme": { "light": "Claro", "dark": "Oscuro", "unknown": "--" }, "themeColor": { "sectionTitle": "Color del tema", "sectionDescription": "Elige una paleta de colores para acentos, botones y resaltados.", "current": "Color actual: {color}", "options": { "neutral": "Neutral", "zinc": "Zinc", "slate": "Slate", "stone": "Stone", "gray": "Gray", "red": "Red", "rose": "Rose", "orange": "Orange", "green": "Green", "blue": "Blue", "yellow": "Yellow", "violet": "Violet" } }, "zoomLevel": { "sectionTitle": "Zoom de ventana", "sectionDescription": "Escala toda la interfaz. Se aplica al instante y se guarda por dispositivo.", "placeholder": "Selecciona el nivel de zoom", "default": "Predeterminado", "current": "Zoom actual: {zoom}%" }, "resetToDefaults": "Restablecer valores", "resetHint": "Restablece el color del tema y el zoom de ventana a los valores predeterminados." }, "SystemSettings": { "loading": "Cargando...", "sectionTitle": "Administración del sistema", "sectionDescription": "Administra el proxy de red, las actualizaciones de la app y las preferencias de idioma.", "proxyTitle": "Proxy de red", "proxyDescription": "Cuando está activado, las solicitudes de red posteriores usarán este proxy preferentemente (incluyendo chat ACP, instalación de agentes y operaciones remotas de Git).", "loadFailed": "Error al cargar: {message}", "enableProxy": "Activar proxy del sistema", "proxyAddress": "Dirección del proxy", "proxyHint": "Compatible con http(s)/socks5, ejemplo: {example}. Solo funciona cuando el proxy del sistema está activado.", "save": "Guardar", "saving": "Guardando...", "proxyRequired": "Se requiere URL del proxy cuando el proxy está activado", "saveSuccess": "La configuración del proxy del sistema se guardó", "saveFailed": "Error al guardar: {message}", "languageTitle": "Idioma", "languageDescription": "Configura el idioma de la app. Al seguir el idioma del sistema, los no compatibles vuelven a inglés.", "appLanguage": "Idioma de la app", "languageSaveSuccess": "La configuración de idioma se guardó", "languageSaveFailed": "No se pudo guardar la configuración de idioma: {message}", "updateTitle": "Actualización de la app", "versionTitle": "Actualización de software", "updateDescription": "Comprueba versiones más nuevas en la fuente de versiones configurada e instálalas directamente cuando estén disponibles.", "currentVersion": "Versión actual", "upgradableVersion": "Última versión", "none": "Ninguna", "lastChecked": "Última comprobación: {time}", "updateError": "Error de actualización: {message}", "checking": "Comprobando...", "checkUpdate": "Buscar actualizaciones", "updating": "Instalando...", "downloading": "Descargando...", "upgradeTo": "Actualizar a v{version}", "foundUpdate": "Nueva versión v{version} encontrada", "alreadyLatest": "Ya tienes la versión más reciente", "checkUpdateFailed": "No se pudo buscar actualizaciones: {message}", "installSuccess": "Actualización instalada. Reiniciando la app.", "installFailed": "La actualización falló: {message}", "updateErrors": { "sourceUnavailable": "No se puede acceder al origen de actualización. Revisa tu red o proxy e inténtalo de nuevo.", "network": "Falló la conexión de red. Revisa tu red o proxy e inténtalo de nuevo.", "downloadFailed": "No se pudo descargar el paquete de actualización. Inténtalo más tarde.", "installFailed": "No se pudo instalar la actualización. Cierra la app e inténtalo de nuevo.", "unknown": "La actualización falló. Inténtalo más tarde." } }, "VersionControlSettings": { "loading": "Cargando...", "sectionTitle": "Control de versiones", "sectionDescription": "Configura el ejecutable de Git y gestiona las cuentas de GitHub.", "gitTitle": "Configuración de Git", "gitDescription": "Configura el ejecutable de Git utilizado por la aplicación.", "gitDetected": "Git detectado", "gitNotFound": "Git no encontrado en el sistema", "gitVersion": "Versión", "gitPath": "Ruta", "customGitPath": "Ruta personalizada de Git", "customGitPathPlaceholder": "/usr/bin/git", "customGitPathHint": "Dejar vacío para usar la ruta detectada automáticamente.", "test": "Probar", "testing": "Probando...", "testSuccess": "El ejecutable de Git es válido.", "testFailed": "Prueba de Git fallida: {message}", "save": "Guardar", "saving": "Guardando...", "saveSuccess": "Configuración de Git guardada.", "saveFailed": "Error al guardar: {message}", "githubTitle": "Cuentas de GitHub", "githubDescription": "Gestiona las cuentas de GitHub para autenticación. Los tokens se almacenan localmente.", "noAccounts": "No hay cuentas de GitHub configuradas.", "addAccount": "Añadir cuenta", "serverUrl": "URL del servidor", "serverUrlPlaceholder": "https://github.com", "token": "Token de acceso personal", "tokenPlaceholder": "ghp_xxxxxxxxxxxx", "generateToken": "Generar token", "tokenHint": "Genera un token en GitHub → Settings → Developer settings → Personal access tokens.", "validateAndAdd": "Validar y añadir", "validating": "Validando...", "addSuccess": "Cuenta {username} añadida correctamente.", "addFailed": "Error al añadir cuenta: {message}", "testConnection": "Probar", "connectionSuccess": "Conexión exitosa.", "connectionFailed": "Conexión fallida: {message}", "setDefault": "Establecer como predeterminada", "defaultLabel": "Predeterminada", "defaultSet": "Cuenta predeterminada actualizada.", "removeAccount": "Eliminar", "removeConfirmTitle": "Eliminar cuenta", "removeConfirmMessage": "¿Estás seguro de que deseas eliminar la cuenta \"{username}\"?", "removeConfirm": "Eliminar", "removeCancel": "Cancelar", "removeSuccess": "Cuenta eliminada.", "scopes": "Alcances", "loadFailed": "Error al cargar configuración: {message}", "gitAccount": { "sectionTitle": "Cuentas de servidor Git", "sectionDescription": "Gestiona credenciales para servidores Git que no son GitHub (GitLab, Bitbucket, autoalojados, etc.).", "noAccounts": "No hay cuentas de servidor Git configuradas.", "addAccount": "Añadir cuenta", "addTitle": "Añadir cuenta Git", "addDescription": "Introduce la dirección del servidor, nombre de usuario y contraseña o token de acceso.", "serverUrl": "URL del servidor", "serverUrlPlaceholder": "https://gitlab.example.com", "username": "Nombre de usuario", "usernamePlaceholder": "Usuario o correo electrónico", "password": "Contraseña / Token", "passwordPlaceholder": "Contraseña o token de acceso", "passwordHint": "Introduce tu contraseña o token de acceso del servidor.", "add": "Añadir", "serverRequired": "La URL del servidor es obligatoria.", "usernameRequired": "El nombre de usuario es obligatorio.", "passwordRequired": "La contraseña es obligatoria." } }, "ShortcutSettings": { "sectionTitle": "Atajos", "resetDefault": "Restablecer valores predeterminados", "recordInstruction": "Haz clic en el botón derecho y luego pulsa una combinación de teclas. Usa Ctrl/Cmd, Alt y Shift. Pulsa Esc para cancelar la grabación.", "recording": "Pulsa un atajo...", "toasts": { "conflict": "El atajo ya está en uso por \"{title}\"", "updated": "Atajo actualizado", "invalid": "Atajo no válido, inténtalo de nuevo", "reset": "Se restauraron los atajos predeterminados" }, "actions": { "toggle_search": { "title": "Abrir búsqueda", "description": "Muestra u oculta el panel de búsqueda de conversaciones" }, "toggle_sidebar": { "title": "Alternar barra lateral izquierda", "description": "Muestra u oculta la barra lateral de lista de conversaciones" }, "toggle_terminal": { "title": "Alternar terminal", "description": "Muestra u oculta el panel de terminal inferior" }, "new_terminal_tab": { "title": "Nueva terminal", "description": "Crea una nueva pestaña de terminal cuando el foco está en la terminal" }, "close_current_terminal_tab": { "title": "Cerrar terminal actual", "description": "Cierra la pestaña de terminal actual cuando el foco está en la terminal" }, "toggle_aux_panel": { "title": "Alternar panel derecho", "description": "Muestra u oculta el panel de información auxiliar" }, "new_conversation": { "title": "Nueva conversación", "description": "Crea una nueva pestaña de conversación en la carpeta actual" }, "open_folder": { "title": "Abrir carpeta", "description": "Abre el selector de carpetas y la carpeta en una nueva ventana" }, "open_settings": { "title": "Abrir configuración", "description": "Abre la ventana de configuración" }, "close_current_tab": { "title": "Cerrar pestaña actual", "description": "Cierra la conversación o pestaña de archivo actual" }, "close_all_file_tabs": { "title": "Cerrar todas las pestañas de archivos", "description": "Cierra todas las pestañas de archivos solo en modo de archivos" }, "send_message": { "title": "Enviar mensaje", "description": "Enviar el mensaje actual en el cuadro de entrada" }, "newline_in_message": { "title": "Nueva línea en mensaje", "description": "Insertar una nueva línea en el cuadro de entrada" } } }, "SkillsSettings": { "title": "Skills", "description": "Selecciona una Skill a la izquierda. A la derecha se muestra una vista previa de Markdown por defecto; cambia a edición para modificar y guardar.", "loadingAgents": "Cargando agentes compatibles con Skills...", "emptyNoManageableAgents": "No hay agentes disponibles para gestionar Skills.", "managedTarget": "Objetivo gestionado", "selectAgentPlaceholder": "Selecciona un agente", "searchPlaceholder": "Buscar por nombre / ID / ruta...", "skillsList": "Lista de Skills", "loadingSkills": "Cargando Skills...", "agentNotSupported": "El agente actual no admite gestión de Skills.", "emptySkills": "Aún no hay Skills. Haz clic en \"Nueva Skill\" para crear una.", "newSkillTitle": "Nueva Skill", "skillInfo": "Información de la Skill", "skillIdPlaceholder": "skill-id (letras/números/-/_/.)", "skillsDirectoryWithPath": "Directorio de Skills: {path}", "skillsDirectoryNeedId": "Directorio de Skills: introduce el ID de Skill para generar la ruta completa", "markdownContent": "Contenido Markdown", "editingStatus": "Editando", "previewStatus": "Vista previa", "contentPlaceholder": "Introduce el contenido Markdown de la Skill...", "metadataTitle": "Metadatos de Skills", "onlyYamlMetadata": "Esta Skill solo contiene metadatos YAML.", "emptyContentHint": "Aún no hay contenido. Haz clic en \"Editar\" para empezar.", "loadingSkill": "Cargando Skill...", "emptyNoAgents": "No hay agentes disponibles.", "noSelectionHint": "Selecciona un Skill a la izquierda o haz clic en \"Nuevo Skill\" para crear uno.", "scope": { "global": "Global", "folder": "Carpeta", "selectFolderPlaceholder": "Seleccionar una carpeta", "noFolders": "No se encontraron carpetas", "pickFolderHint": "Selecciona una carpeta para ver sus Skills." }, "actions": { "preview": "Vista previa", "edit": "Editar", "openInWindow": "Abrir en nueva ventana", "delete": "Eliminar", "deleting": "Eliminando...", "refresh": "Actualizar", "newSkill": "Nueva Skill", "reset": "Restablecer", "save": "Guardar", "saving": "Guardando...", "cancel": "Cancelar" }, "deleteDialog": { "title": "Eliminar Skill", "confirm": "¿Eliminar la Skill actual? Esta acción no se puede deshacer.", "confirmWithNamePrefix": "¿Eliminar la Skill", "confirmWithNameSuffix": "? Esta acción no se puede deshacer." }, "toasts": { "loadFailed": "No se pudo cargar la Skill", "openFolderFailed": "No se pudo abrir la carpeta", "noSkillDirectory": "No se encontró un directorio de Skills disponible para el agente actual", "nameRequired": "El nombre de la Skill no puede estar vacío", "updated": "Skill actualizada", "created": "Skill creada", "saveFailed": "No se pudo guardar la Skill", "deleted": "Skill eliminada", "deleteFailed": "No se pudo eliminar la Skill" }, "templates": { "gemini": "---\nname: example-skill\ndescription: Describe when this skill should be used.\n---\n\n# Skill Name\n\nInstructions for the agent when this skill is active.\n\n## Workflow\n\n1. Add actionable step one.\n2. Add actionable step two.\n", "openCode": "---\nname: example-skill\ndescription: Describe when this skill should be used.\n---\n\n# Purpose\n\nDescribe what this skill helps with.\n\n# Steps\n\n1. Add actionable step one.\n2. Add actionable step two.\n", "openClaw": "---\nname: example-skill\ndescription: Describe when this skill should be used.\nuser-invocable: true\ndisable-model-invocation: false\n---\n\n# Purpose\n\nDescribe what this skill helps with.\n\n# Instructions\n\n1. Add actionable instruction one.\n2. Add actionable instruction two.\n", "default": "# Skill: example-skill\n\n## When to use\n\n- Describe trigger conditions.\n\n## Instructions\n\n1. Add actionable instruction one.\n2. Add actionable instruction two.\n" } }, "McpSettings": { "loading": "Cargando...", "summary": { "missingCommand": "(comando faltante)", "missingUrl": "(URL faltante)" }, "protocol": { "stdio": "Stdio" }, "errors": { "selectInstallProtocol": "Selecciona un protocolo de instalación", "fieldRequired": "{field} es obligatorio", "fieldNeedsBoolean": "{field} debe ser true o false", "fieldNeedsNumber": "{field} debe ser un número", "fieldNeedsInteger": "{field} debe ser un entero", "fieldInvalidJson": "{field} tiene JSON inválido: {message}", "fieldOutOfRange": "El valor de {field} está fuera del rango permitido", "jsonEmpty": "{name} no puede estar vacío", "jsonInvalid": "{name} no es un JSON válido: {message}", "jsonMustBeObject": "{name} debe ser un objeto JSON" }, "jsonNames": { "localConfig": "Configuración MCP", "installConfig": "Configuración de instalación" }, "toasts": { "uninstalled": "MCP desinstalado", "uninstallFailed": "Error al desinstalar: {message}", "selectAtLeastOneApp": "Selecciona al menos una app de destino", "saveSuccess": "Guardado", "saveFailed": "Error al guardar: {message}", "installed": "{name} instalado", "installFailed": "Error al instalar: {message}" }, "installDialog": { "title": "Confirmar instalación de MCP", "descriptionWithName": "Instalar {name} en la configuración local.", "description": "Selecciona las apps de destino para la instalación.", "protocol": "Protocolo", "selectProtocol": "Seleccionar protocolo", "parameters": "Parámetros de configuración", "booleanPlaceholder": "Selecciona true/false", "selectOneValue": "Selecciona un valor", "targetApps": "Apps de destino" }, "actions": { "cancel": "Cancelar", "confirmInstall": "Confirmar instalación", "installing": "Instalando", "uninstall": "Desinstalar", "uninstalling": "Desinstalando", "viewDetails": "Ver detalles", "save": "Guardar", "saving": "Guardando", "install": "Instalar" }, "tabs": { "local": "MCP local", "market": "Marketplace MCP" }, "local": { "filterPlaceholder": "Filtrar MCP local...", "loadFailed": "Error de carga: {message}", "empty": "No se detectó MCP local.", "description": "La configuración de MCP local se puede editar y guardar directamente.", "enabledApps": "Apps habilitadas", "configJson": "Configuración MCP (JSON)" }, "market": { "selectMarketplace": "Seleccionar marketplace", "searchPlaceholder": "Buscar MCP...", "searchFailed": "Error de búsqueda: {message}", "loadingList": "Cargando lista de MCP...", "empty": "Sin resultados de MCP.", "loadingDetail": "Cargando detalles del marketplace...", "detailLoadFailed": "No se pudieron cargar los detalles: {message}", "owner": "Propietario: {owner}", "namespace": "Espacio de nombres: {namespace}", "defaultInstallProtocol": "Protocolo de instalación predeterminado", "currentOptionParameterCount": "Cantidad de parámetros de la opción actual: {count}", "installConfigDescription": "Configuración de instalación (JSON, editable antes de instalar; las ediciones sobrescribirán el formulario de protocolo/parámetros)", "selectLeftToView": "Selecciona un MCP del marketplace a la izquierda para ver detalles." }, "badges": { "verified": "Verificado", "remote": "Remoto", "hasHomepage": "Tiene página web", "uses": "{count} usos", "deployed": "Desplegado", "notDeployed": "No desplegado" }, "selectLeftMcp": "Selecciona un MCP a la izquierda." }, "AcpAgentSettings": { "title": "Gestión del SDK de agentes", "description": "Gestiona en un solo lugar la conexión del SDK de agentes, estado habilitado, variables de entorno, gestión de configuración e información de preflight de versión.", "loadingAgents": "Cargando lista de agentes...", "agentList": "Lista de agentes", "emptyNoAgent": "No hay agentes disponibles.", "configManagement": "Gestión de configuración", "envVars": "Variables de entorno", "nativeJsonConfig": "Configuración JSON nativa", "modelHintDefault": "Déjalo vacío para usar el modelo predeterminado del sistema.", "generalConfigDescriptionClaude": "Admite configuración rápida de API URL, API Key y modelos de Claude, y sincroniza con la configuración JSON nativa.", "generalConfigDescriptionDefault": "Admite entrada de configuración importante (API URL, API Key, Model) y gestión de configuración JSON nativa.", "actions": { "dragSort": "Arrastrar para reordenar", "dragSortAgent": "Arrastrar para reordenar {name}", "refreshCheck": "Actualizar comprobación", "refreshCheckAgent": "Actualizar comprobación de {name}", "clickEnable": "Haz clic para habilitar {name}", "clickDisable": "Haz clic para deshabilitar {name}", "install": "Instalar", "upgrade": "Actualizar", "uninstall": "Desinstalar", "uninstalling": "Desinstalando...", "saveEnvVars": "Guardar variables de entorno", "saving": "Guardando...", "saveCodexConfig": "Guardar configuración de Codex", "saveGeminiConfig": "Guardar configuración de Gemini", "saveOpenCodeConfig": "Guardar configuración de OpenCode", "saveOpenClawConfig": "Guardar configuración de OpenClaw", "saveConfigManagement": "Guardar gestión de configuración", "saveCurrentProvider": "Guardar proveedor actual", "showApiKey": "Mostrar API Key", "hideApiKey": "Ocultar API Key", "showKey": "Mostrar clave", "hideKey": "Ocultar clave", "showToken": "Mostrar token", "hideToken": "Ocultar token", "cancel": "Cancelar", "delete": "Eliminar", "deleting": "Eliminando...", "confirmDelete": "Confirmar eliminación", "confirmUninstall": "Confirmar desinstalación", "saveClineConfig": "Guardar configuración de Cline" }, "status": { "enabled": "Habilitado", "disabled": "Deshabilitado", "unchecked": "Sin comprobar", "agentEnabledAria": "{name} habilitado", "agentEnabledSwitch": "Interruptor de habilitación de {name}" }, "preflight": { "count": "Elementos de preflight: {count}", "notRun": "Las comprobaciones aún no se han ejecutado." }, "codex": { "configDescription": "Admite configuración rápida de URL de API, API Key, nombre del modelo y reasoning effort, y sincroniza con `auth.json` / `config.toml`.", "authMode": "Modo de Autenticación", "chatgptSubscription": "Suscripción oficial", "chatgptSubscriptionHint": "Iniciar sesión con suscripción oficial de ChatGPT, sin necesidad de API Key", "apiKeyHint": "Conectar usando API Key a OpenAI o servicios API compatibles", "selectProvider": "Seleccionar proveedor", "modelName": "Nombre del modelo", "selectReasoningEffort": "Seleccionar Reasoning Effort", "enableWebsocket": "Habilitar WebSocket", "enableWebsocketAria": "Habilitar WebSocket para Codex Provider", "enableSkills": "Habilitar Skills", "enableSkillsAria": "Habilitar Skills para Codex", "enableFast": "Habilitar Fast", "enableFastAria": "Habilitar nivel de servicio Fast para Codex", "authJsonNative": "auth.json (nativo)", "configTomlNative": "config.toml (nativo)", "loginButton": "Iniciar sesión con ChatGPT", "loginRequesting": "Solicitando código de inicio de sesión...", "loginStep1": "Abre la siguiente URL en tu navegador:", "loginStep2": "Introduce el siguiente código:", "loginPolling": "Esperando autorización...", "loginCancel": "Cancelar", "loginSuccess": "¡Inicio de sesión exitoso, configuración guardada!", "loginFailed": "Error de inicio de sesión: {message}", "loginRetry": "Reintentar", "loginCodeCopied": "Código copiado", "loggedIn": "Cuenta conectada", "loginRelogin": "Reconectar / Cambiar cuenta", "loginTimeout": "Tiempo de inicio de sesión agotado, inténtalo de nuevo", "loginSaveFailed": "Inicio de sesión exitoso pero falló al guardar la configuración" }, "gemini": { "authConfig": "Configuración de autenticación de Gemini", "authConfigDescription": "Alineado con la documentación de autenticación de Gemini CLI, con soporte para endpoint personalizado, inicio de sesión de Google, Gemini API Key y Vertex AI (ADC / cuenta de servicio / API Key).", "authMode": "Modo de autenticación", "selectAuthMode": "Seleccionar modo de autenticación", "viewAuthDoc": "Ver documentación de autenticación", "mode": { "custom": "Endpoint personalizado", "loginGoogle": "Inicio de sesión de Google (OAuth)", "vertexServiceAccount": "Vertex AI (Cuenta de servicio)" }, "hint": { "custom": "Completa API URL, API Key y Modelo; se mapean a GOOGLE_GEMINI_BASE_URL / GEMINI_API_KEY / GEMINI_MODEL.", "loginGoogle": "Ejecuta gemini en terminal y completa primero el inicio de sesión de Google; no se requiere API key.", "geminiApiKey": "Completa GEMINI_API_KEY cuando uses la API de Gemini.", "vertexAdc": "Usa gcloud ADC; se recomienda configurar GOOGLE_CLOUD_PROJECT y GOOGLE_CLOUD_LOCATION.", "vertexServiceAccount": "Establece la ruta del JSON de la cuenta de servicio en GOOGLE_APPLICATION_CREDENTIALS.", "vertexApiKey": "Completa GOOGLE_API_KEY cuando uses API key de Vertex AI." } }, "openCode": { "configManagement": "Gestión de configuración de OpenCode", "configDescription": "Alineado con el esquema `provider` de OpenCode, admite gestión de múltiples proveedores y sincronización bidireccional con archivos JSON nativos.", "providerManagement": "Gestión de proveedores", "providerCount": "{count} proveedores", "addProvider": "Agregar proveedor", "emptyProvider": "Aún no hay proveedor. Introduce un ID y haz clic en \"Agregar proveedor\".", "providerEnabledState": "Estado habilitado de {providerId}", "selectProviderNpm": "Seleccionar provider.npm", "notSet": "No establecido", "modelManagement": "Gestión de modelos", "modelCount": "{count} modelos", "modelDescription": "Alineado con `provider.models` de OpenCode. La gestión rápida actualmente soporta `name` / `id`; otros campos avanzados se conservan y se pueden editar en el JSON nativo de abajo.", "addModel": "Agregar modelo", "emptyModel": "Aún no hay modelo. Introduce model id y haz clic en \"Agregar modelo\".", "modelId": "ID de modelo", "modelName": "Nombre del modelo", "deleteModel": "Eliminar modelo {modelId}", "nativeJsonConfig": "Configuración JSON nativa de OpenCode", "mainModel": "Modelo principal", "smallModel": "Modelo pequeño", "noMatchingModels": "No hay modelos coincidentes" }, "openClaw": { "gatewayConfig": "Configuración de Gateway", "gatewayDescription": "Configura la conexión de OpenClaw Gateway. Admite gateway local o remoto.", "gatewayUrlHint": "Déjalo vacío para usar gateway.remote.url desde la configuración local de openclaw.", "gatewayTokenPlaceholder": "Token de autenticación de Gateway", "gatewayTokenHint": "Usa token-file en lugar de token en texto plano cuando sea posible; configúralo con el CLI de openclaw.", "sessionKeyHint": "Opcional. Especifica la session key del gateway; si se deja vacío se asigna automáticamente una sesión aislada." }, "authModeOfficialSubscription": "Suscripción oficial", "authModeCustomEndpoint": "Endpoint personalizado", "authModeCustomEndpointHint": "Configurar manualmente la URL de API y la clave API para un endpoint personalizado.", "authModeModelProvider": "Proveedor de modelo", "modelProvider": "Proveedor de modelo", "modelProviderHint": "Usar la URL de API y la clave API de un proveedor de modelo configurado.", "selectModelProvider": "Seleccionar proveedor de modelo", "noModelProviderAvailable": "No hay proveedor de modelo configurado para este agente. Vaya a la configuración de proveedores de modelo para agregar uno.", "claude": { "authMode": "Modo de autenticación", "officialSubscription": "Suscripción oficial", "officialSubscriptionHint": "Usar la suscripción oficial de Anthropic, no se requiere API Key.", "mainModel": "Modelo principal", "reasoningModel": "Modelo de razonamiento (thinking)", "haikuDefaultModel": "Modelo Haiku predeterminado", "sonnetDefaultModel": "Modelo Sonnet predeterminado", "opusDefaultModel": "Modelo Opus predeterminado", "effortLevel": "Nivel de razonamiento", "effortLevelDefault": "Nivel predeterminado", "effortLevel_low": "Bajo", "effortLevel_medium": "Medio", "effortLevel_high": "Alto", "effortLevel_xhigh": "Extra Alto" }, "dialogs": { "confirmDeleteProvider": "¿Eliminar proveedor {providerId}?", "confirmDeleteProviderDescription": "La configuración de OpenCode y auth JSON se actualizarán juntos. Esta acción no se puede deshacer.", "confirmUninstall": "¿Desinstalar {name}?", "confirmUninstallDescription": "Esto elimina la versión instalada localmente. Puedes reinstalar más tarde." }, "errors": { "nativeJsonMustBeObject": "La configuración JSON nativa debe ser un objeto", "nativeJsonInvalid": "Error de formato en JSON nativo: {message}", "openCodeAuthMustBeObject": "OpenCode auth.json debe ser un objeto JSON", "openCodeAuthInvalid": "Error de formato en OpenCode auth.json: {message}", "authMustBeObject": "auth.json debe ser un objeto JSON", "authInvalid": "Error de formato en auth.json: {message}", "providerIdPattern": "El ID de proveedor solo admite letras, números, guion bajo, punto y guion", "providerExists": "El proveedor '{providerId}' ya existe", "modelIdPattern": "El ID de modelo solo admite letras, números, guion bajo, punto, dos puntos y guion", "modelExists": "El modelo '{modelId}' ya existe" }, "warnings": { "nativeJsonRecoveredStructured": "La configuración JSON nativa es inválida; se restableció a configuración estructurada", "nativeJsonRecoveredOpenCode": "La configuración JSON nativa es inválida; se restableció a configuración estructurada de OpenCode", "openCodeAuthRecovered": "OpenCode auth.json es inválido; se restableció a configuración predeterminada", "authRecoveredStructured": "auth.json es inválido; se restableció a configuración estructurada" }, "toasts": { "agentActionCompleted": "{name} {action} completado", "agentActionFailed": "{name} {action} falló", "localVersion": "Versión local: {version}", "installCompletedVersionLater": "Instalación completada, la versión se actualizará en la próxima comprobación", "uninstallCompleted": "Desinstalación de {name} completada", "uninstallFailed": "Desinstalación de {name} fallida", "localVersionRemoved": "Versión local eliminada", "saveAgentOrderFailed": "No se pudo guardar el orden de Agent", "saveAgentSwitchFailed": "No se pudo guardar el switch de Agent", "saveEnvFailed": "No se pudieron guardar las variables de entorno", "codexSaved": "Configuración de Codex guardada", "saveCodexNativeFailed": "No se pudo guardar la configuración nativa de Codex", "geminiSaved": "Configuración de Gemini guardada", "saveGeminiFailed": "No se pudo guardar la configuración de Gemini", "providerDeleted": "Proveedor {providerId} eliminado", "providerDeleteFailed": "No se pudo eliminar el proveedor {providerId}", "providerSaved": "Proveedor {providerId} guardado", "saveProviderFailed": "No se pudo guardar el proveedor {providerId}", "openCodeConfigSynced": "La configuración de OpenCode y auth JSON se sincronizaron.", "openCodeSaved": "Configuración de OpenCode guardada", "saveOpenCodeFailed": "No se pudo guardar la configuración de OpenCode", "openClawSaved": "Configuración de OpenClaw guardada", "saveOpenClawFailed": "No se pudo guardar la configuración de OpenClaw", "configSaved": "Configuración guardada", "configSavedHint": "Las sesiones existentes deben reabrirse para que surta efecto", "saveConfigManagementFailed": "No se pudo guardar la gestión de configuración", "clineSaved": "Configuración de Cline guardada", "saveClineFailed": "Error al guardar la configuración de Cline", "modelProviderRequired": "Seleccione un proveedor de modelo antes de guardar." }, "version": { "statusLabel": "Estado de versión", "notInstalled": "No instalado", "remoteLocal": "Remota: {remoteVersion} · Local: {localVersion}", "platformUnsupported": "{versionText}. La plataforma actual no soporta este agente.", "clickInstall": "{versionText}. Haz clic en Instalar a la derecha.", "localUnrecognized": "{versionText}. La versión local no es comparable; intenta actualizar para sobrescribir la instalación.", "upgradeAvailable": "{versionText}. Hay actualización disponible.", "remoteUnavailable": "{versionText}. La versión remota no está disponible por ahora.", "latest": "{versionText}. Ya está en la última versión." }, "cline": { "configDescription": "Configure el proveedor de API y las credenciales de Cline. La configuración se guarda en ~/.cline/data/." }, "opencodePlugins": { "title": "Plugins de OpenCode", "declared": "Plugins declarados", "noPlugins": "No hay plugins declarados en opencode.json", "status": { "installed": "Instalado", "missing": "No instalado" }, "installAll": "Instalar todos los faltantes", "pinVersions": "Fijar versiones @latest", "install": "Instalar", "uninstall": "Desinstalar", "refresh": "Actualizar", "success": "Todos los plugins se instalaron correctamente", "failed": "La operación del plugin falló" } }, "SettingsPages": { "agentsLoading": "Cargando configuración de agentes..." }, "CommitPage": { "title": "Confirmación", "invalidFolderId": "ID de carpeta no válido", "loadingRepo": "Cargando repositorio..." }, "MergePage": { "title": "Resolver conflictos", "invalidFolderId": "ID de carpeta no válido", "loadingRepo": "Cargando repositorio...", "localVersion": "Local (Nuestro)", "result": "Resultado", "remoteVersion": "Remoto (Suyo)", "acceptLocal": "Aceptar local", "acceptRemote": "Aceptar remoto", "markResolved": "Marcar como resuelto", "abortMerge": "Abortar", "completeMerge": "Completar fusión", "unresolvedConflicts": "Todavía hay marcadores de conflicto sin resolver en este archivo", "fileResolved": "Archivo resuelto correctamente", "allResolved": "Todos los conflictos resueltos", "conflictFiles": "Archivos en conflicto", "loadingFile": "Cargando archivo...", "preparingMerge": "Preparando fusión...", "selectFile": "Seleccionar un archivo para resolver", "noConflicts": "No hay archivos en conflicto", "skipFile": "Omitir", "abortSuccess": "Operación abortada", "applyAllNonConflicting": "Aplicar todos los cambios sin conflicto", "applyLeftNonConflicting": "Aplicar local", "applyRightNonConflicting": "Aplicar remoto" }, "Folder": { "workspaceStatus": { "degradedTitle": "Actualizaciones en vivo no disponibles", "degradedHint": "El observador no pudo iniciarse (por ejemplo, permiso denegado). Actualiza manualmente para ver los cambios.", "retry": "Reintentar", "retrying": "Reintentando..." }, "common": { "all": "Todo", "cancel": "Cancelar", "close": "Cerrar", "closeOthers": "Cerrar otros", "closeAll": "Cerrar todo", "confirm": "Confirmar", "save": "Guardar", "delete": "Eliminar", "rename": "Renombrar", "loading": "Cargando...", "refresh": "Actualizar", "refreshing": "Actualizando...", "create": "Crear", "createAndSwitch": "Crear y cambiar", "openFile": "Abrir archivo", "viewDiff": "Ver Diff", "push": "Enviar..." }, "modes": { "conversation": "Modo conversación", "fusion": "Modo fusión", "files": "Modo archivos", "workspaceModesAria": "Modos del espacio de trabajo" }, "statusLabels": { "in_progress": "En progreso", "pending_review": "Revisión", "completed": "Completado", "cancelled": "Cancelado" }, "sidebar": { "title": "Conversaciones", "locateActiveConversation": "Ubicar conversación activa", "expandAllGroups": "Expandir todos los grupos", "collapseAllGroups": "Colapsar todos los grupos", "newConversation": "Nueva conversación", "noConversationsFound": "No se encontraron conversaciones.", "importLocalSessions": "Importar sesiones locales", "importing": "Importando...", "error": "Error del sistema: {message}", "completeAllSessions": "Completar todas las sesiones", "completeAllReviewTitle": "¿Completar todas las sesiones en revisión?", "completeAllReviewDescription": "Esto marcará como completadas todas las {count, plural, one {# sesión} other {# sesiones}} en Revisión.", "completing": "Completando...", "toasts": { "importedSessions": "Se importaron {imported, plural, one {# sesión} other {# sesiones}}, se omitieron {skipped}", "noNewSessionsFound": "No se encontraron sesiones nuevas (omitidas {skipped})", "importFailed": "Error al importar: {message}", "reviewCompleted": "Se marcaron como completadas {count, plural, one {# sesión en revisión} other {# sesiones en revisión}}", "completeReviewFailed": "Error al completar sesiones en revisión: {message}", "folderOpened": "Carpeta {name} abierta", "folderRemoved": "Carpeta {name} eliminada", "openFolderFailed": "Error al abrir carpeta", "removeFolderFailed": "Error al eliminar carpeta: {message}", "reorderFoldersFailed": "Error al reordenar carpetas: {message}" }, "statsLabel": "{folders} carpetas · {convos} conversaciones", "reorderHandle": "Arrastrar para reordenar", "openFolder": "Abrir carpeta", "searchPlaceholder": "Buscar conversaciones...", "showCompleted": "Mostrar conversaciones completadas", "moreOptions": "Más opciones", "sortBy": "Ordenar por", "sortByCreatedAt": "Fecha de creación", "sortByUpdatedAt": "Fecha de actualización", "statusRunningBadge": "Ejecutando", "statusFailedBadge": "Fallido", "conversationCountUnit": "{count, plural, one {# conversación} other {# conversaciones}}", "emptyFolderHint": "Sin conversaciones", "noMatchingConversations": "No hay conversaciones coincidentes", "removeFolderConfirmTitle": "¿Eliminar carpeta del espacio de trabajo?", "removeFolderConfirmDescription": "¿Eliminar \"{name}\" del espacio de trabajo? Sus pestañas y terminales se cerrarán.", "folderHeaderMenu": { "manageConversations": "Gestionar conversaciones…", "removeFromWorkspace": "Quitar del espacio de trabajo" }, "manageConversations": { "title": "Gestionar conversaciones — {name}", "searchPlaceholder": "Buscar por título…", "agentFilterAll": "Todos los agentes", "statusFilterAll": "Todos los estados", "selectAllVisible": "Seleccionar todo", "deselectAll": "Deseleccionar todo", "selectedCount": "{count} seleccionada(s)", "matchedCount": "{count} coincidencia(s)", "messagesShort": "{count} msg", "untitledConversation": "Conversación sin título", "setStatus": "Cambiar estado…", "deleteSelected": "Eliminar", "noConversations": "No hay conversaciones en esta carpeta.", "noMatchingConversations": "Ninguna conversación coincide con los filtros.", "confirmDeleteTitle": "¿Eliminar {count} conversación(es)?", "confirmDeleteDescription": "Esta acción no se puede deshacer.", "toastDeleted": "Se eliminaron {count} conversación(es)", "toastStatusUpdated": "Estado actualizado para {count} conversación(es)", "toastOpFailed": "Error en la operación: {message}" } }, "conversation": { "reloadFailed": "No se pudo recargar la conversación: {message}", "reloaded": "Conversación recargada", "reload": "Recargar", "newConversation": "Nueva conversación", "closeConversation": "Cerrar conversación", "copyText": "Copiar texto", "copyTextSuccess": "Copiado", "copyTextFailed": "Error al copiar", "forkSession": "Bifurcar sesión", "forkSessionSuccess": "Sesión bifurcada exitosamente", "forkSessionFailed": "Error al bifurcar la sesión: {error}", "exportConversation": "Exportar conversación", "exportImage": "Imagen", "exportMarkdown": "Markdown", "exportHtml": "HTML", "exportSuccess": "Conversación exportada", "exportFailed": "Error al exportar", "exportImageTooLong": "La conversación es demasiado larga para exportar como imagen", "exportLabels": { "untitledConversation": "Conversación sin título", "agent": "Agente", "model": "Modelo", "status": "Estado", "started": "Inicio", "updated": "Actualizado", "tokens": "Estadísticas de tokens", "duration": "Duración", "inputTokens": "Entrada", "outputTokens": "Salida", "cacheRead": "Caché leída", "cacheWrite": "Caché escrita", "user": "Usuario", "assistant": "Asistente", "system": "Sistema", "toolResult": "Resultado", "toolError": "Error" } }, "conversationCard": { "untitledConversation": "Conversación sin título", "newConversation": "Nueva conversación", "rename": "Renombrar", "status": "Estado", "delete": "Eliminar", "importLocalSessions": "Importar sesiones locales", "importing": "Importando...", "renameConversation": "Renombrar conversación", "deleteConversationTitle": "¿Eliminar conversación?", "deleteConversationDescription": "Esto eliminará \"{title}\". Esta acción no se puede deshacer.", "cancel": "Cancelar", "save": "Guardar" }, "search": { "dialogTitle": "Buscar", "tabConversations": "Conversaciones", "tabFiles": "Archivos", "placeholder": "Buscar conversaciones...", "filePlaceholder": "Buscar archivos o directorios...", "allAgents": "Todo", "searching": "Buscando...", "typeToSearch": "Escribe para buscar conversaciones", "typeToSearchFiles": "Escribe para buscar archivos o directorios", "noResults": "No se encontraron resultados.", "untitledConversation": "Conversación sin título" }, "folderTitleBar": { "showSidebar": "Mostrar barra lateral", "hideSidebar": "Ocultar barra lateral", "toggleTerminal": "Alternar terminal", "toggleAuxPanel": "Alternar panel auxiliar", "search": "Buscar", "openSettings": "Abrir configuración", "withShortcut": "{label} (atajo: {shortcut})" }, "statusBar": { "connection": { "connected": "Conectado", "connecting": "Conectando...", "prompting": "Respondiendo...", "error": "Error de conexión", "disconnected": "Desconectado", "tooltip": "{agent}: {status}", "tooltipError": "{agent}: {error}" }, "tasks": { "title": "Tareas" }, "alerts": { "title": "Alertas", "empty": "Sin alertas" }, "stats": { "conversations": "{count} conversaciones", "summary": "{conversations} conversaciones / {messages} mensajes" }, "tokens": { "contextWindowUsageAria": "Uso de la ventana de contexto", "contextWindow": "Ventana de contexto", "usedMax": "Usado / Máx", "tokenUsage": "Uso de tokens", "input": "Entrada", "output": "Salida", "cacheRead": "Lectura de caché", "cacheWrite": "Escritura de caché", "total": "Total de tokens" } }, "auxPanel": { "tabs": { "diff": "Diferencias", "files": "Archivos", "changes": "Cambios", "commits": "Confirmaciones" }, "noFolderTitle": "No hay carpeta abierta", "noFolderHint": "Abre una carpeta para ver su contenido aquí" }, "windowControls": { "minimizeWindow": "Minimizar ventana", "minimize": "Minimizar", "maximizeWindow": "Maximizar ventana", "maximize": "Maximizar", "restoreWindow": "Restaurar ventana", "restore": "Restaurar", "closeWindow": "Cerrar ventana", "close": "Cerrar" }, "tabs": { "closeConversationTab": "Cerrar pestaña de conversación", "close": "Cerrar", "closeOthers": "Cerrar otros", "closeAll": "Cerrar todo", "tileDisplay": "Vista en mosaico", "untileDisplay": "Salir de mosaico" }, "fileWorkspace": { "files": "Archivos", "closeFileTab": "Cerrar pestaña de archivo", "close": "Cerrar", "closeOthers": "Cerrar otros", "closeAll": "Cerrar todo", "preview": "Vista previa", "editSource": "Editar fuente" }, "terminal": { "rename": "Renombrar", "close": "Cerrar", "closeOthers": "Cerrar otros", "closeAll": "Cerrar todo", "hideTerminal": "Ocultar terminal ({shortcut})", "openFolderFirst": "Abre primero una carpeta" }, "sessionFiles": { "currentResponse": "Respuesta actual", "noDiffDataAvailable": "No hay datos de diff disponibles para {filePath}", "loading": "Cargando...", "noFileChangesInConversation": "No se encontraron cambios de archivos en esta conversación", "openConversationToSeeChanges": "Abre una conversación para ver sus cambios de archivos", "remove": "Quitar", "changeCount": "{count, plural, one {# cambio} other {# cambios}}", "fileCount": "{count, plural, one {# archivo} other {# archivos}}" }, "folderNameDropdown": { "fallbackFolderName": "Carpeta", "openFolder": "Abrir carpeta", "cloneRepository": "Clonar repositorio", "projectBoot": "Inicializador de proyecto", "opened": "Abierto", "recentOpen": "Abiertos recientemente" }, "fileWorkspacePanel": { "viewDiff": "Ver Diff", "openFile": "Abrir archivo", "fileCount": "{count, plural, one {# archivo} other {# archivos}}", "openFileOrDiff": "Abre un archivo o diff desde el panel derecho", "disk": "Disco", "head": "HEAD (referencia)", "unsaved": "Sin guardar", "workingTree": "Árbol de trabajo", "loading": "Cargando...", "compareWithBranch": "{path} · comparar con {branch}", "hunkCount": "{count, plural, one {# bloque} other {# bloques}}", "prev": "Anterior", "next": "Siguiente", "jumpToLine": "Ir a la línea {line}", "noParsedDiffSections": "No hay secciones de diff analizadas", "loadingEditor": "Cargando editor...", "imageZoomIn": "Ampliar", "imageZoomOut": "Reducir", "imageZoomReset": "Restablecer zoom" }, "branchDropdown": { "toasts": { "commitCodeCompleted": "Commit de código completado", "pushCodeCompleted": "Push de código completado", "committedFiles": "{count, plural, one {# archivo confirmado} other {# archivos confirmados}}", "taskCompleted": "{label} completado", "taskFailed": "{label} falló", "mergeNoNewCommits": "{branchName} no tiene commits nuevos", "mergedCommits": "{count, plural, one {# commit fusionado} other {# commits fusionados}}", "allFilesUpToDate": "Todos los archivos están actualizados", "updatedFiles": "{count, plural, one {# archivo actualizado} other {# archivos actualizados}}", "openCommitWindowFailed": "No se pudo abrir la ventana de commit", "openPushWindowFailed": "Error al abrir la ventana de envío", "upstreamSet": "La rama upstream se ha configurado", "upstreamSetAndPushed": "Rama upstream configurada y se enviaron {count, plural, one {# commit} other {# commits}}", "noCommitsToPush": "No hay commits para enviar", "pushedCommits": "Se enviaron {count, plural, one {# commit} other {# commits}}" }, "tasks": { "newBranch": "Crear rama {name}", "newWorktree": "Crear worktree {name}", "checkoutTo": "Cambiar a {branchName}", "mergeBranch": "Fusionar {branchName}", "rebaseTo": "Rebase a {branchName}", "deleteRemoteBranch": "Eliminar rama remota {branchName}", "initGitRepo": "Inicializar repositorio Git", "pullCode": "Hacer pull del código", "fetchInfo": "Obtener información", "pushCode": "Enviar código", "stashChanges": "Guardar cambios en stash", "stashPop": "Aplicar stash", "deleteBranch": "Eliminar rama {branchName}" }, "confirm": { "mergeTitle": "Fusionar rama", "rebaseTitle": "Rebase de rama", "mergeDescription": "¿Fusionar {branchName} en la rama actual {currentBranch}?", "rebaseDescription": "¿Hacer rebase de la rama actual {currentBranch} sobre {branchName}?", "deleteRemoteTitle": "Eliminar rama remota", "deleteRemoteDescription": "¿Eliminar la rama remota {branchName}? Esto la eliminará del repositorio remoto y no se puede deshacer.", "deleteTitle": "Eliminar rama", "deleteDescription": "¿Eliminar la rama {branchName}? Esta acción no se puede deshacer.", "forceDeleteTitle": "Forzar eliminación de rama", "forceDeleteDescription": "La rama {branchName} no está completamente fusionada. ¿Estás seguro de que quieres forzar su eliminación? Esta acción no se puede deshacer." }, "current": "Actual", "switchToBranch": "Cambiar a esta rama", "mergeBranchIntoCurrent": "Fusionar {branchName} en {currentBranch}", "rebaseCurrentToBranch": "Rebase de {currentBranch} sobre {branchName}", "versionControl": "Control de versiones", "initGitRepo": "Inicializar repositorio Git", "pullCode": "Hacer pull del código", "fetchRemoteBranches": "Obtener ramas remotas", "openCommitWindow": "Commit de código...", "pushCode": "Enviar...", "newBranch": "Nueva rama...", "newWorktree": "Nuevo worktree...", "stashChanges": "Guardar cambios...", "stashPop": "Aplicar stash...", "manageRemotes": "Gestionar remotos...", "localBranches": "Ramas locales ({count, plural, one {#} other {#}})", "noLocalBranches": "Sin ramas locales", "remoteBranches": "Ramas remotas ({count, plural, one {#} other {#}})", "noRemoteBranches": "Sin ramas remotas", "dialogs": { "newBranchTitle": "Nueva rama", "newBranchDescription": "Crear una nueva rama desde la rama actual {branch}", "branchNamePlaceholder": "Nombre de la rama", "newWorktreeTitle": "Nuevo worktree", "newWorktreeDescription": "Crear un nuevo worktree desde la rama actual {branch}", "branchNameLabel": "Nombre de la rama", "worktreePathLabel": "Ruta del worktree", "worktreePathPlaceholder": "Ruta del worktree", "manageRemotesTitle": "Gestionar remotos", "manageRemotesEmpty": "No hay remotos configurados", "remoteNamePlaceholder": "Nombre del remoto", "remoteUrlPlaceholder": "URL del remoto", "addRemote": "Añadir", "savingRemotes": "Guardando..." }, "conflict": { "title": "Conflictos de fusión", "description": "Los siguientes archivos tienen conflictos que necesitan ser resueltos:", "abort": "Abortar fusión", "openMergeTool": "Abrir herramienta de fusión", "completeMerge": "Completar fusión", "abortSuccess": "Fusión abortada correctamente", "completeSuccess": "Fusión completada correctamente" }, "stashDialog": { "title": "Guardar cambios en stash", "description": "Guardar los cambios actuales en el stash", "messageLabel": "Mensaje", "messagePlaceholder": "Mensaje del stash (opcional)", "keepIndex": "Mantener índice (los cambios preparados permanecen preparados)", "cancel": "Cancelar", "stash": "Guardar", "success": "Cambios guardados en stash", "error": "Error al guardar en stash" }, "unstashDialog": { "title": "Aplicar stash", "noStashes": "No hay stashes", "selectFile": "Selecciona un archivo para ver diferencias", "viewDiff": "Ver diferencias", "original": "Original", "modified": "Modificado", "apply": "Aplicar", "drop": "Eliminar", "applySuccess": "Stash aplicado", "dropSuccess": "Stash eliminado", "confirmApply": "¿Aplicar stash {ref} al directorio de trabajo?", "cancel": "Cancelar" }, "deleteBranch": "Eliminar rama" }, "commitDialog": { "toasts": { "commitCompleted": "Commit de código completado", "pushFailed": "Error al enviar", "committedFiles": "{count, plural, one {# archivo confirmado} other {# archivos confirmados}}", "addedToVcs": "Añadido a VCS", "addToVcsFailed": "No se pudo añadir a VCS", "fileDeleted": "Archivo eliminado", "deleteFailed": "Error al eliminar", "fileRolledBack": "Archivo revertido", "rollbackFailed": "Error al revertir", "dirRolledBack": "Directorio revertido", "dirDeleted": "Directorio eliminado" }, "confirm": { "deleteTitle": "Confirmar eliminación", "deleteDescription": "¿Eliminar el archivo \"{file}\"? Esta acción no se puede deshacer.", "rollbackTitle": "Confirmar reversión", "rollbackDescription": "¿Revertir el archivo \"{file}\" a HEAD? Se perderán los cambios sin guardar.", "rollbackDirDescription": "¿Revertir el directorio \"{dir}\" a HEAD? Los cambios no guardados se perderán.", "deleteDirDescription": "¿Eliminar el directorio \"{dir}\"? Esta acción no se puede deshacer." }, "actions": { "select": "Seleccionar", "unselect": "Deseleccionar", "rollback": "Revertir", "addToVcs": "Añadir a VCS" }, "aria": { "selectFile": "{action}: {path}", "unselectAllFiles": "Deseleccionar todos los archivos", "selectAllFiles": "Seleccionar todos los archivos", "unselectTracked": "Deseleccionar cambios rastreados", "selectTracked": "Seleccionar cambios rastreados", "unselectUntracked": "Deseleccionar archivos no rastreados", "selectUntracked": "Seleccionar archivos no rastreados" }, "loading": "Cargando...", "selectionCount": "{selected} / {total} archivos", "emptyFiles": "No hay archivos cambiados", "trackedChanges": "Cambios rastreados ({count})", "untrackedFiles": "Archivos no rastreados ({count})", "commitMessage": "Mensaje de commit", "commitMessagePlaceholder": "Introduce el mensaje de commit...", "commitButton": "Confirmar ({count})", "commitAndPushButton": "Confirmar y enviar ({count})", "head": "HEAD", "workingTree": "Árbol de trabajo", "clickFileToDiff": "Haz clic en un nombre de archivo para ver diff", "loadingDiff": "Cargando diff..." }, "pushWindow": { "title": "Enviar código", "noUnpushedCommits": "No hay commits sin enviar", "noRemoteConfigured": "No hay remoto Git configurado\nAñade uno en «Gestionar remotos»", "newBranchNoPushedCommits": "Nueva rama — enviar para crear rama de seguimiento remota", "unpushed": "Sin enviar", "selectFileToViewDiff": "Selecciona un archivo para ver las diferencias", "before": "Antes", "after": "Después", "push": "Enviar", "toasts": { "pushSuccess": "Envío exitoso", "pushFailed": "Error al enviar", "upstreamSet": "Se ha configurado la rama remota", "upstreamSetAndPushed": "Rama remota configurada y enviados {count} commits", "noCommitsToPush": "No hay commits para enviar", "pushedCommits": "Enviados {count} commits" } }, "gitLogTab": { "filesTitle": "Archivos", "expandAllFiles": "Expandir todos los archivos", "collapseAllFiles": "Colapsar todos los archivos", "workspace": "espacio de trabajo", "retry": "Reintentar", "noCommitsFound": "No se encontraron commits", "notAGitRepoTitle": "No es un repositorio Git", "notAGitRepoHint": "Inicializa Git desde el menú de ramas superior, o abre un repositorio existente.", "hash": "Hash del commit", "copyHash": "Copiar hash", "copyMessage": "Copiar mensaje", "author": "Autor", "noFileChangeDetails": "No hay detalles de cambios de archivo disponibles.", "branchesTitle": "Ramas", "loadingBranches": "Cargando ramas...", "noContainingBranches": "No se encontraron ramas contenedoras.", "newBranch": "Nueva rama...", "resetToHere": "Resetear aquí", "resetDisabledReasonNotCurrentBranchView": "Disponible solo al ver la rama actual", "viewCommitDiffAria": "Ver diff del commit {hash}", "copyFullCommitHashAria": "Copiar hash completo del commit {hash}", "pushStatus": { "pushed": "Enviado al remoto", "notPushed": "No enviado al remoto", "unknown": "Estado de push desconocido (sin upstream configurado)" }, "time": { "monthsAgo": "{count, plural, one {hace # mes} other {hace # meses}}", "daysAgo": "{count, plural, one {hace # día} other {hace # días}}", "hoursAgo": "{count, plural, one {hace # hora} other {hace # horas}}", "minsAgo": "{count, plural, one {hace # min} other {hace # mins}}", "justNow": "justo ahora" }, "toasts": { "createdAndSwitchedNewBranch": "Nueva rama creada y activada", "newBranchFromCommit": "{name} (desde {shortHash})", "createBranchFailed": "No se pudo crear la rama", "openPushWindowFailed": "No se pudo abrir la ventana de envío", "resetSuccess": "Reset completado", "resetSuccessDescription": "{branch} se reseteó a {shortHash} con {mode}", "resetFailed": "Falló el reset" }, "branchSelector": { "selectBranchPlaceholder": "Seleccionar rama...", "localBranches": "Ramas locales", "current": "Actual", "remoteBranches": "Ramas remotas", "refreshCommitHistory": "Actualizar historial de commits" }, "dialogs": { "newBranchTitle": "Nueva rama", "newBranchDescription": "Crea una nueva rama con el commit {shortHash} como último commit.", "branchNamePlaceholder": "Nombre de la rama", "reset": { "title": "Resetear la rama actual hasta aquí", "branchLabel": "Rama", "targetLabel": "Commit objetivo", "messageLabel": "Mensaje", "modeLabel": "Modo de reset", "confirmButton": "Resetear", "modes": { "soft": { "label": "--soft", "description": "Mueve HEAD y el puntero de la rama actual al commit objetivo.\nMantiene Index y Working Tree sin cambios.\nLos cambios de los commits retirados permanecen en estado staged." }, "mixed": { "label": "--mixed (predeterminado)", "description": "Mueve HEAD al commit objetivo.\nResetea Index al commit objetivo y mantiene los cambios en Working Tree.\nLos cambios pasan de staged a unstaged." }, "hard": { "label": "--hard", "description": "Mueve HEAD y resetea tanto Index como Working Tree al commit objetivo.\nSe descartan los cambios locales rastreados posteriores al commit objetivo.\nEs una operación destructiva." }, "keep": { "label": "--keep", "description": "Mueve HEAD al commit objetivo e intenta conservar los cambios locales.\nSolo se conservan cambios que no entren en conflicto.\nSi hay conflictos, el reset se aborta para proteger tu trabajo." } } } } }, "gitChangesTab": { "workspace": "espacio de trabajo", "noChanges": "No hay cambios locales", "notAGitRepoTitle": "No es un repositorio Git", "notAGitRepoHint": "Inicializa Git desde el menú de ramas superior, o abre un repositorio existente.", "trackedChanges": "Cambios rastreados ({count})", "untrackedFiles": "Archivos no rastreados ({count})", "expandTracked": "Expandir cambios rastreados", "collapseTracked": "Colapsar cambios rastreados", "expandUntracked": "Expandir archivos no rastreados", "collapseUntracked": "Colapsar archivos no rastreados", "actions": { "commitCode": "Hacer commit del código", "rollback": "Revertir", "addToVcs": "Añadir a VCS", "delete": "Eliminar" }, "toasts": { "noAddableFilesInDir": "No hay archivos cambiados en este directorio para añadir a VCS", "noRollbackFilesInDir": "No hay archivos cambiados en este directorio para revertir", "addedToVcs": "Se añadió {name} a VCS", "addToVcsFailed": "No se pudo añadir a VCS", "openCommitWindowFailed": "No se pudo abrir la ventana de commit", "rolledBack": "Se revirtió {name}", "rollbackFailed": "Error al revertir", "addedFilesToVcs": "Se añadieron {count, plural, one {# archivo} other {# archivos}} a VCS", "rolledBackFiles": "Se revirtieron {count, plural, one {# archivo} other {# archivos}}", "deleted": "Se eliminó {name}", "deleteFailed": "Error al eliminar", "deletedFiles": "Se eliminaron {count} archivos", "noDeletableFilesInDir": "No hay archivos modificados en este directorio que se puedan eliminar" }, "directoryDialog": { "descriptionAdd": "Selecciona archivos bajo el directorio {path} para añadir a VCS.", "descriptionRollback": "Selecciona archivos bajo el directorio {path} para revertir.", "descriptionDelete": "Selecciona archivos bajo el directorio {path} para eliminar. Esta acción no se puede deshacer.", "descriptionFallback": "Selecciona archivos para continuar.", "selectionCount": "Seleccionados {selected} / {total} archivos", "selectAll": "Seleccionar todo", "unselectAll": "Deseleccionar todo", "loadingCandidates": "Cargando cambios del directorio...", "noOperableFiles": "No hay archivos operables" }, "rollbackConfirm": { "title": "Confirmar reversión", "descriptionWithTarget": "¿Revertir cambios locales de {kind} \"{name}\"?", "descriptionFallback": "¿Revertir cambios locales?", "kindDirectory": "directorio", "kindFile": "archivo" }, "deleteConfirm": { "title": "Confirmar eliminación", "descriptionWithTarget": "¿Eliminar {kind} \"{name}\"? Esta acción no se puede deshacer.", "descriptionFallback": "Esta acción no se puede deshacer.", "kindDirectory": "directorio", "kindFile": "archivo" } }, "tabContext": { "loadingConversation": "Cargando...", "untitledConversation": "Conversación sin título", "newConversation": "Nueva conversación" }, "fileTreeTab": { "workspace": "Espacio de trabajo", "retry": "Reintentar", "git": "Git", "openInFileManager": "Abrir en el gestor de archivos", "openInFinder": "Abrir en Finder", "openInExplorer": "Abrir en Explorer", "attachToCurrentSession": "Agregar a la sesión", "compareWithBranch": "Comparar con rama...", "reloadFromDisk": "Recargar desde disco", "new": "Nuevo", "newFile": "Archivo", "newDirectory": "Directorio", "openIn": "Abrir en", "openInTerminal": "Abrir en terminal", "actions": { "select": "Seleccionar", "unselect": "Deseleccionar", "commitCode": "Confirmar código", "rollback": "Revertir", "addToVcs": "Añadir a VCS" }, "aria": { "selectPath": "{action}: {path}" }, "toasts": { "openDirectoryFailed": "No se pudo abrir el directorio", "openBuiltinTerminalFailed": "No se pudo abrir la terminal integrada", "openCommitWindowFailed": "No se pudo abrir la ventana de commit", "noAddableFilesInDir": "No hay archivos modificados en este directorio que se puedan añadir a VCS", "noRollbackFilesInDir": "No hay archivos modificados en este directorio que se puedan revertir", "addedToVcs": "Se añadió {name} a VCS", "addToVcsFailed": "No se pudo añadir a VCS", "loadBranchesFailed": "No se pudieron cargar las ramas", "renameFailed": "Error al renombrar", "deleteFailed": "Error al eliminar", "rolledBack": "Se revirtió {name}", "rollbackFailed": "Error al revertir", "addedFilesToVcs": "{count, plural, one {Se añadió # archivo a VCS} other {Se añadieron # archivos a VCS}}", "rolledBackFiles": "{count, plural, one {Se revirtió # archivo} other {Se revirtieron # archivos}}", "savedAsCopy": "Guardado como copia", "saveCopyFailed": "No se pudo guardar como copia", "watchStartFailed": "No se pudo iniciar la vigilancia de archivos", "createFailed": "Error al crear" }, "createDialog": { "newFile": "Nuevo archivo", "newDirectory": "Nuevo directorio", "description": "Ingrese un nombre para el nuevo {kind}.", "placeholderFile": "file-name.ext", "placeholderDirectory": "folder-name" }, "renameDialog": { "renameDirectory": "Renombrar directorio", "renameFile": "Renombrar archivo", "description": "Introduce un nuevo nombre (solo nombre, sin ruta).", "placeholderDirectory": "nuevo-nombre-carpeta", "placeholderFile": "nuevo-nombre-archivo.ext" }, "directoryDialog": { "descriptionAdd": "Selecciona archivos del directorio {path} para añadir a VCS.", "descriptionRollback": "Selecciona archivos del directorio {path} para revertir.", "descriptionFallback": "Selecciona archivos para continuar.", "selectionCount": "Seleccionados {selected} / {total} archivos", "selectAll": "Seleccionar todo", "unselectAll": "Deseleccionar todo", "loadingCandidates": "Cargando cambios del directorio...", "noOperableFiles": "No hay archivos operables" }, "compareDialog": { "title": "Comparar con rama", "descriptionWithTarget": "Selecciona una rama y compara con {kind} {path}", "descriptionFallback": "Selecciona una rama para comparar.", "kindDirectory": "directorio", "kindFile": "archivo", "filterPlaceholder": "Filtra ramas, p. ej. main / origin/main", "singleClickHint": "Haz clic en una rama para comparar directamente", "loadingBranches": "Cargando ramas...", "recentBranches": "Ramas recientes ({count})", "noCurrentBranch": "Sin rama actual", "localBranches": "Ramas locales ({count})", "remoteBranches": "Ramas remotas ({count})", "noMatchingBranches": "No hay ramas coincidentes" }, "externalConflictDialog": { "title": "Se detectaron cambios externos en archivos", "descriptionWithPath": "El archivo {path} cambió en disco y las ediciones actuales no están guardadas.", "descriptionFallback": "El archivo actual cambió en disco y las ediciones actuales no están guardadas.", "compare": "Comparar", "savingCopy": "Guardando copia...", "saveAsCopy": "Guardar como copia", "reload": "Recargar" }, "deleteConfirm": { "title": "Confirmar eliminación", "descriptionWithTarget": "¿Eliminar {kind} \"{name}\"? Esta acción no se puede deshacer.", "descriptionFallback": "Esta acción no se puede deshacer.", "kindDirectory": "directorio", "kindFile": "archivo" }, "rollbackConfirm": { "title": "Confirmar reversión", "descriptionWithTarget": "¿Revertir cambios locales del archivo \"{name}\"?", "descriptionFallback": "¿Revertir cambios locales de este archivo?" }, "terminalTitle": "Consola · {name}" }, "commandDropdown": { "loading": "Cargando...", "addCommand": "Agregar comando", "manageCommands": "Gestionar comandos...", "runCommandTitle": "Ejecutar: {command}", "stopCommandTitle": "Detener: {command}", "manageDialog": { "title": "Gestionar comandos", "empty": "Aún no hay comandos", "namePlaceholder": "Nombre", "commandPlaceholder": "Comando", "add": "Agregar", "saving": "Guardando..." } }, "workspaceContext": { "confirmCloseDirtyTab": "¿Cerrar \"{title}\" sin guardar?", "confirmCloseOtherDirtyTabs": "¿Cerrar otras pestañas con cambios sin guardar?", "confirmCloseAllDirtyTabs": "¿Cerrar todas las pestañas con cambios sin guardar?", "unableLoadContent": "No se puede cargar el contenido.\n\n{message}", "previewRequestTimedOut": "La solicitud de vista previa agotó el tiempo", "diffRequestTimedOut": "La solicitud de Diff agotó el tiempo", "branchCompareRequestTimedOut": "La solicitud de comparación de ramas agotó el tiempo", "commitDiffRequestTimedOut": "La solicitud de Diff de commit agotó el tiempo", "saveRequestTimedOut": "La solicitud de guardado agotó el tiempo", "reloadRequestTimedOut": "La solicitud de recarga agotó el tiempo", "noChanges": "Sin cambios.", "noDiffOutput": "Sin salida de diff.", "diffTitleWorkspace": "Diferencias · Espacio de trabajo", "diffDescriptionWorkingTree": "Árbol de trabajo (HEAD)", "diffTitleFile": "Diferencias · {name}", "compareTitleFile": "Comparar · {name}", "compareTitleBranch": "Comparar · {branch}", "compareDescriptionPath": "{path} · comparar con {branch}", "compareDescriptionBranch": "comparar con {branch}", "diffTitleCommitFile": "Diferencias · {name} @ {hash}", "diffTitleCommit": "Diferencias · {hash}", "diffDescriptionCommitPath": "{path} · confirmación {commit}", "diffDescriptionCommit": "confirmación {commit}", "diffTitleConflictFile": "Conflicto · {name}", "diffDescriptionConflict": "{path} · disco vs sin guardar" }, "chat": { "acpConnections": { "actions": { "openAgentsSettings": "Abrir ajustes de agentes", "retry": "Reintentar" }, "agentsSetupHint": "Abre Ajustes > Agentes para gestionar la instalación.", "withSetupHint": "{message}\n{hint}", "blocked": { "missingConfig": "No se puede leer la configuración actual del agente.", "disabled": "{agent} está deshabilitado en Ajustes de agentes. Actívalo antes de conectar.", "unavailable": "{agent} no está disponible en la plataforma actual.", "sdkMissing": "El SDK de {agent} no está instalado" }, "backendErrors": { "initializeTimeout": "Se agotó el tiempo del handshake de conexión de {agent} (sin respuesta tras 60 segundos). Abre Ajustes para revisar la configuración del agente y de la red.", "processExited": "El proceso de {agent} terminó inesperadamente.", "spawnFailed": "No se pudo iniciar {agent}: {message}", "downloadFailed": "La descarga de {agent} falló: {message}" }, "unableReadAgentConfig": "No se puede leer la configuración del agente: {message}", "connectFailedTitle": "Falló la conexión de {agent}", "toolFallbackTitle": "Herramienta", "eventErrorTitle": "Error del agente", "notificationTurnComplete": "{agent} ha terminado de responder", "notificationError": "{agent} error: {message}", "claudeApiRetry": { "fallbackError": "authentication_failed", "retryingWithMax": "reintentando {attempt}/{max}", "retryingAttempt": "reintentando intento {attempt}", "retrying": "reintentando", "nextRetryIn": "siguiente en {seconds}s", "line": "{error}{status} · {retry}", "lineWithDelay": "{error}{status} · {retry}, {delay}", "httpStatus": " (HTTP {status})" } }, "connectionLifecycle": { "tasks": { "connectingTitle": "Conectando con {agent}", "connectingDescription": "Estableciendo conexión", "loadingSelectorsTitle": "Cargando selectores de {agent}", "loadingSelectorsDescription": "Obteniendo opciones de modo y configuración de sesión", "initSessionTitle": "Initializing {agent} session", "initSessionDescription": "Creating session and loading configuration" }, "errors": { "connectionFailed": "Conexión fallida" } }, "shared": { "attachedResources": "Recursos adjuntos", "toolCallFailed": "Falló la llamada de herramienta" }, "messageThread": { "emptyTitle": "Aún no hay mensajes", "emptyDescription": "Inicia una conversación para ver mensajes aquí" }, "chatInput": { "connecting": "Conectando...", "agentResponding": "{agent} está respondiendo...", "sendMessage": "Enviar un mensaje..." }, "messageInput": { "askAnything": "Pregunta lo que sea...", "removeAttachmentAria": "Quitar {name}", "attachFiles": "Adjuntar archivos", "dropFilesToAttach": "Suelta archivos para adjuntar", "loadingSettings": "Cargando ajustes...", "loadingMode": "Cargando modo...", "cancel": "Cancelar", "send": "Enviar", "forkAndSend": "Fork y Enviar", "slashCommands": "Comandos de barra", "expertSkills": "Habilidades de expertos", "expertsEmptyForAgent": "Este agente no tiene expertos habilitados. Actívalos en Configuración > Expertos.", "slashSearchPlaceholder": "Buscar comandos...", "slashSearchEmpty": "Sin comandos coincidentes" }, "messageQueue": { "addToQueue": "Agregar a la cola", "saveEdit": "Guardar", "cancelEdit": "Cancelar edición", "editItem": "Editar", "deleteItem": "Eliminar" }, "welcomeInputPanel": { "agentsSettingsPath": "Ajustes > Agentes", "autoConnectFallback": "Haz clic para abrir {path} y gestionar la instalación.", "autoConnectAppend": "{message}. Haz clic para abrir {path} y gestionar la instalación.", "enableAgentFirstPlaceholder": "Habilita al menos un agente antes de iniciar una sesión...", "askAnythingPlaceholder": "Pregunta lo que sea..." }, "agentSelector": { "noEnabledAgents": "No hay agentes habilitados", "openAgentsSettings": "Abrir ajustes de agentes" }, "agentPlanOverlay": { "title": "Plan del agente", "collapsePlanAria": "Contraer plan", "collapsedSummary": "Plan de trabajo {completed}/{total}", "status": { "completed": "Completado", "inProgress": "En progreso", "pending": "Pendiente", "unknown": "Desconocido" }, "priority": { "high": "Alta", "medium": "Media", "low": "Baja", "unknown": "Desconocida" } }, "permissionDialog": { "subtitle": "El agente solicita permiso para continuar este turno.", "kindFallbackTool": "herramienta", "command": "Comando", "cwd": "Directorio de trabajo: {cwd}", "filesSummary": "Archivos: {count}", "moreFiles": "+{count} archivos más", "plan": "Plan de trabajo", "allowedActions": "Acciones permitidas", "targetMode": "Modo objetivo: {mode}" }, "questionDialog": { "title": "El agente está haciendo una pregunta", "placeholder": "Escribe tu respuesta...", "send": "Enviar" }, "messageBranch": { "previousBranchAria": "Rama anterior", "nextBranchAria": "Rama siguiente", "pageOf": "{current} de {total}" }, "terminal": { "title": "Consola", "running": "En ejecución" }, "reasoning": { "thinking": "Pensando…", "thoughtForFewSeconds": "Pensamiento", "thoughtForSeconds": "Pensamiento" }, "linkSafety": { "localFileTitle": "¿Abrir archivo local?", "externalLinkTitle": "¿Abrir enlace externo?", "localFileDescription": "Está a punto de abrir un archivo local en el panel de archivos.", "externalLinkDescription": "Está a punto de visitar un sitio web externo.", "cancel": "Cancelar", "opening": "Abriendo…", "openFile": "Abrir archivo", "openLink": "Abrir enlace", "errorCannotOpen": "No se puede abrir el archivo local", "errorNoWorkspace": "No hay ninguna carpeta de espacio de trabajo activa.", "errorOutsideWorkspace": "El archivo está fuera de la carpeta del espacio de trabajo actual.", "errorFailedOpen": "Error al abrir el archivo local", "errorFailedLink": "Error al abrir el enlace" }, "messageList": { "attachedResources": "Recursos adjuntos", "loading": "Cargando...", "error": "Error del chat: {message}", "emptyConversation": "No hay mensajes en esta conversación.", "systemMessage": "Mensaje del sistema", "copyMessage": "Copiar", "copied": "Copiado" }, "liveTurnStats": { "thinking": "Pensando...", "streaming": "Transmitiendo", "elapsedHours": "{value} h", "elapsedMinutes": "{value} min", "elapsedSeconds": "{value} s", "toolUseCount": "{count} herramienta {count, plural, one {use} other {uses}}" }, "tool": { "parameters": "Parámetros", "error": "Error de herramienta", "result": "Resultado", "status": { "approvalRequested": "Esperando aprobación", "approvalResponded": "Respondido", "inputAvailable": "En ejecución", "inputStreaming": "Pendiente", "outputAvailable": "Completado", "outputDenied": "Denegado", "outputError": "Error de salida" } }, "toolCallBlock": { "tool": "Herramienta", "error": "Error de ejecución", "result": "Resultado" }, "contentParts": { "showingTailOutput": "Mostrando la salida final durante el streaming para mejorar el rendimiento.", "result": "Resultado", "unknown": "desconocido", "inputTruncated": "La entrada fue truncada — el diff puede estar incompleto.", "replaceAll": "REEMPLAZAR TODO", "filesCount": "Archivos: {count}", "update": "actualizar", "moreFiles": "+{count} archivos más", "timeoutMs": "Tiempo de espera: {timeout}ms", "backgroundTrue": "Segundo plano: true", "offset": "Desplazamiento: {offset}", "limit": "Límite: {limit}", "pages": "Páginas: {pages}", "mode": "Modo: {mode}", "cell": "Celda: {cell}", "pathLabel": "Ruta:", "globLabel": "Patrón glob:", "typeLabel": "Tipo:", "outputLabel": "Salida:", "caseInsensitive": "Sin distinguir mayúsculas/minúsculas", "multiline": "Multilínea", "promptLabel": "Instrucción", "subjectLabel": "Asunto", "taskLabel": "Tarea", "nameLabel": "Nombre:", "agentPromptLabel": "Instrucción", "agentModelLabel": "Modelo", "agentRunning": "Ejecutando...", "agentStatsBash": "Comandos", "agentStatsRead": "Archivos leídos", "agentStatsSearch": "Búsquedas", "agentStatsEdit": "Ediciones", "agentStatsOther": "Otros", "field": { "file": "Archivo", "notebook": "Cuaderno", "command": "Comando", "old": "Anterior", "new": "Nuevo", "pattern": "Patrón", "path": "Ruta", "query": "Consulta", "url": "URL:", "description": "Descripción", "content": "Contenido", "source": "Fuente", "prompt": "Instrucción", "subject": "Asunto", "taskId": "ID de tarea", "status": "Estado", "skill": "Skill", "args": "Argumentos", "offset": "Desplazamiento", "limit": "Límite", "glob": "Patrón glob", "type": "Tipo", "output": "Salida", "replaceAll": "Reemplazar todo", "language": "Idioma", "timeout": "Tiempo de espera", "background": "Segundo plano", "agentType": "Tipo de agente", "library": "Biblioteca", "libraryId": "ID de biblioteca" }, "title": { "edit": "Editar", "command": "Comando", "todoWrite": "TodoWrite (actualización de tareas)", "read": "Leer", "write": "Escribir", "notebookEdit": "NotebookEdit (edición de cuaderno)", "editFiles": "Editar ({count} archivos)", "editWithTarget": "Editar {target}", "readWithTarget": "Leer {target}", "writeWithTarget": "Escribir {target}", "notebookEditWithTarget": "NotebookEdit ({target})", "globWithPattern": "Patrón glob {pattern}", "grepWithPattern": "Patrón grep {pattern}", "taskCreateWithSubject": "Crear tarea: {subject}", "taskUpdateWithStatus": "Actualizar tarea #{id} -> {status}", "taskUpdate": "Actualizar tarea #{id}", "webFetchWithUrl": "WebFetch ({url})", "webSearchWithQuery": "Búsqueda web: {query}", "todosProgress": "Tareas ({done}/{total})", "skillWithName": "Skill: {name}", "genericWithContext": "{tool} ({context})" } } }, "diffPreview": { "mode": { "added": "Añadido", "deleted": "Eliminado", "renamed": "Renombrado", "modified": "Modificado" }, "hunkLabel": "Bloque {index}", "loadingHunk": "Cargando hunk...", "noDiffData": "Sin datos de diff" }, "conversationContextBar": { "searchFolder": "Search folder...", "searchBranch": "Search branch...", "noFolders": "No folders", "noBranches": "No branches", "noBranch": "(no branch)", "commit": "Commit", "push": "Push", "merge": "Merge", "toasts": { "folderChanged": "Switched to {name}", "openFolderFailed": "Failed to open folder", "openStashFailed": "Failed to open stash window", "openMergeFailed": "Failed to open merge window" } }, "cloneDialog": { "title": "Clonar repositorio", "repositoryUrl": "URL del repositorio", "repositoryUrlPlaceholder": "https://github.com/user/repo.git", "directory": "Directorio", "directoryPlaceholder": "Selecciona el directorio de destino...", "browseDirectory": "Explorar directorio", "cancel": "Cancelar", "clone": "Clonar", "clonePath": "Ruta de clonación: {path}" }, "toasts": { "cloneFailed": "No se pudo clonar el repositorio" } }, "ProjectBoot": { "title": "Inicio de Proyecto", "tabs": { "shadcn": "shadcn" }, "config": { "base": "Base", "style": "Estilo", "baseColor": "Color base", "theme": "Tema", "chartColor": "Color del gráfico", "iconLibrary": "Biblioteca de iconos", "font": "Fuente", "fontHeading": "Fuente de título", "menuAccent": "Acento del menú", "menuColor": "Color del menú", "radius": "Radio", "template": "Plantilla", "createProject": "Crear proyecto", "sectionStyle": "Estilo", "sectionColors": "Colores", "sectionTypography": "Tipografía", "sectionInterface": "Interfaz" }, "preview": { "loading": "Cargando vista previa..." }, "createDialog": { "title": "Crear proyecto", "projectName": "Nombre del proyecto", "projectNamePlaceholder": "my-app", "frameworkTemplate": "Plantilla del framework", "packageManager": "Gestor de paquetes", "saveDirectory": "Directorio de guardado", "saveDirectoryPlaceholder": "Seleccionar directorio...", "browseDirectory": "Explorar", "projectPath": "El proyecto se creará en: {path}", "advancedOptions": "Opciones Avanzadas", "base": "Biblioteca Base", "enableRtl": "Habilitar Soporte RTL", "enableRtlDescription": "Habilitar soporte de diseño para idiomas de derecha a izquierda (ej. árabe, hebreo)", "pmChecking": "Verificando...", "pmNotInstalled": "No instalado", "cancel": "Cancelar", "create": "Crear", "creating": "Creando proyecto..." }, "toasts": { "createFailed": "Error al crear el proyecto", "createSuccess": "Proyecto creado exitosamente" }, "errors": { "directoryExists": "El directorio de destino ya existe", "commandFailed": "El comando de creación del proyecto falló." } }, "WebServiceSettings": { "sectionTitle": "Servicio Web", "sectionDescription": "Habilitar para acceder a Codeg de forma remota a través del navegador", "port": "Puerto", "status": "Estado", "running": "En ejecución", "stopped": "Detenido", "processing": "Procesando...", "start": "Iniciar", "stop": "Detener", "startFailed": "Error al iniciar", "stopFailed": "Error al detener", "open": "Abrir", "hide": "Ocultar", "show": "Mostrar", "copy": "Copiar", "addressLabel": "Dirección de acceso", "tokenLabel": "Token de acceso", "tokenHint": "Ingrese este token al acceder al cliente Web por primera vez", "tokenPlaceholder": "Dejar vacío para generar automáticamente", "regenerate": "Regenerar", "errors": { "alreadyRunning": "El servicio Web ya está en ejecución", "invalidAddress": "Formato de host o puerto no válido", "portInUse": "El puerto {port} ya está en uso. Cierre el proceso que lo usa o elija otro puerto.", "permissionDenied": "Permiso denegado. Utilice un puerto superior a 1024 o ejecute con mayores privilegios.", "addressUnavailable": "La dirección no está disponible en este equipo", "bindFailed": "No se pudo enlazar la dirección" } }, "DirectoryBrowser": { "title": "Explorar directorio", "pathPlaceholder": "Ingrese la ruta del directorio...", "goHome": "Ir al directorio principal", "navigateUp": "Ir al directorio superior", "select": "Seleccionar", "cancel": "Cancelar", "loading": "Cargando...", "emptyDirectory": "Este directorio está vacío", "errorLoadingDir": "Error al cargar el directorio", "permissionDenied": "Permiso denegado" }, "ChatChannelSettings": { "loading": "Cargando...", "sectionTitle": "Canales de chat", "sectionDescription": "Configure bots de IM para recibir notificaciones de eventos y consultar actividad de codificación.", "addChannel": "Agregar canal", "noChannels": "Aún no se han configurado canales de chat.", "channelName": "Nombre", "channelNamePlaceholder": "Mi bot de Telegram", "channelType": "Tipo de canal", "lark": "Lark (Feishu)", "weixin": "WeChat", "dailyReport": "Informe diario", "dailyReportTime": "Hora del informe", "nameRequired": "El nombre del canal es obligatorio.", "tokenRequired": "El token es obligatorio.", "chatIdRequired": "El Chat ID es obligatorio.", "loadFailed": "Error al cargar los canales.", "saveFailed": "Error al guardar los cambios.", "connectSuccess": "Canal conectado.", "connectFailed": "Error al conectar", "disconnectSuccess": "Canal desconectado.", "disconnectFailed": "Error al desconectar.", "testSuccess": "Prueba de conexión exitosa.", "testFailed": "Prueba de conexión fallida", "deleteSuccess": "Canal eliminado.", "deleteFailed": "Error al eliminar el canal.", "deleteConfirmTitle": "Eliminar canal", "deleteConfirmMessage": "Se eliminará permanentemente el canal y sus registros de mensajes. ¿Está seguro?", "cancel": "Cancelar", "delete": "Eliminar", "create": "Crear", "save": "Guardar", "channelListTitle": "Canales configurados", "channelListDescription": "Los canales habilitados se conectarán automáticamente al iniciar el servicio.", "editChannel": "Editar canal", "editSuccess": "Canal actualizado.", "tokenPlaceholderKeep": "Dejar vacío para mantener actual", "weixinScanTitle": "Escanear código QR", "weixinScanDescription": "Abra WeChat y escanee el código QR para conectarse.", "weixinQrcodeExpired": "El código QR ha expirado.", "weixinRefreshQrcode": "Actualizar", "weixinWaitingScan": "Esperando escaneo...", "weixinPollError": "Conexión inestable, reintentando...", "weixinReconnectNotice": "Debido a limitaciones del protocolo iLink, después de cada reconexión debes enviar un mensaje al bot para que los activadores de eventos surtan efecto.", "connect": "Conectar", "disconnect": "Desconectar", "test": "Probar conexión", "tabs": { "channels": "Canales", "commands": "Comandos", "events": "Eventos", "other": "Otros" }, "commands": { "title": "Comandos integrados", "description": "Comandos de bot disponibles en los canales de chat. En chats grupales, se requiere @Bot para procesar mensajes.", "prefixLabel": "Prefijo de comando", "prefixDescription": "1-3 caracteres no alfanuméricos para activar comandos del bot (por defecto /).", "prefixSaved": "Prefijo de comando guardado.", "prefixSaveFailed": "Error al guardar el prefijo.", "prefixInvalid": "El prefijo debe ser de 1-3 caracteres no alfanuméricos.", "save": "Guardar", "folderDesc": "Seleccionar carpeta de trabajo", "agentDesc": "Seleccionar agente de IA", "taskDesc": "Crear sesión y ejecutar tarea", "sessionsDesc": "Listar sesiones activas en la carpeta", "resumeDesc": "Conversaciones recientes / reanudar una sesión", "cancelDesc": "Cancelar tarea actual", "approveDesc": "Aprobar solicitud de permiso del agente", "denyDesc": "Denegar solicitud de permiso del agente", "searchDesc": "Buscar conversaciones por palabra clave", "todayDesc": "Resumen de actividad de hoy", "statusDesc": "Estado de conexión del canal", "helpDesc": "Mostrar ayuda" }, "events": { "title": "Notificaciones de eventos", "description": "Al habilitar eventos, se enviarán al canal cuando se activen.", "turnComplete": "Turno completado", "turnCompleteDesc": "Cuando finaliza un turno del agente", "error": "Error del agente", "errorDesc": "Cuando un agente encuentra un error", "saved": "Filtro de eventos actualizado.", "saveFailed": "Error al guardar el filtro de eventos." }, "language": { "title": "Idioma de mensajes", "description": "Idioma utilizado para las notificaciones de eventos, respuestas de comandos e informes diarios enviados a los canales de chat.", "saved": "Idioma de mensajes guardado.", "saveFailed": "Error al guardar el idioma de mensajes.", "en": "Inglés", "zh-cn": "Chino simplificado", "zh-tw": "Chino tradicional", "ja": "Japonés", "ko": "Coreano", "es": "Español", "de": "Alemán", "fr": "Francés", "pt": "Portugués", "ar": "Árabe" } }, "ModelProviderSettings": { "sectionTitle": "Proveedores de Modelos", "sectionDescription": "Gestionar las credenciales de proveedores API para agentes.", "filterAll": "Todos", "providerListTitle": "Proveedores Configurados", "addProvider": "Agregar Proveedor", "editProvider": "Editar Proveedor", "noProviders": "Aún no se han configurado proveedores de modelos.", "providerName": "Nombre", "providerNamePlaceholder": "Ej. OpenAI, Anthropic", "apiUrl": "URL de API", "apiUrlPlaceholder": "https://api.openai.com/v1", "apiKey": "Clave API", "apiKeyPlaceholder": "sk-...", "apiKeyKeepCurrent": "Dejar vacío para mantener actual", "agentTypes": "Tipos de Agente", "agentTypesRequired": "Se requiere al menos un tipo de agente.", "nameRequired": "El nombre del proveedor es obligatorio.", "apiUrlRequired": "La URL de API es obligatoria.", "apiKeyRequired": "La clave API es obligatoria.", "loadFailed": "Error al cargar proveedores.", "saveFailed": "Error al guardar cambios.", "createSuccess": "Proveedor creado.", "editSuccess": "Proveedor actualizado.", "deleteSuccess": "Proveedor eliminado.", "deleteConfirmTitle": "Eliminar Proveedor", "deleteConfirmMessage": "Esto eliminará permanentemente el proveedor \"{name}\". ¿Está seguro?", "deleteBlockedByAgent": "{agents} está usando este proveedor. Desvincúlelo antes de eliminarlo.", "cancel": "Cancelar", "delete": "Eliminar", "create": "Crear", "save": "Guardar" }, "ExpertsSettings": { "title": "Habilidades de expertos", "description": "Habilita flujos de trabajo de habilidades cuidadosamente seleccionadas y probadas en la práctica para tus agentes de codificación de IA. Cada experto es una habilidad independiente del proyecto superpowers — codeg gestiona la copia central y la vincula a los agentes que elijas.", "loading": "Cargando expertos…", "loadingContent": "Cargando contenido…", "emptyExperts": "No hay expertos disponibles. Revisa los registros de la aplicación.", "emptySelection": "Selecciona un experto para ver su contenido y gestionar la activación.", "emptySearch": "Ningún experto coincide con la búsqueda actual.", "searchPlaceholder": "Buscar expertos por nombre, ID o descripción", "enableForAgents": "Habilitar para agentes", "noAgents": "No se detectaron agentes ACP.", "copyModeWarning": "Copiado (no vinculado). Vuelve a habilitarlo después de actualizar codeg para obtener la última versión.", "previewTitle": "Vista previa de SKILL.md", "categories": { "discovery": "Descubrimiento y diseño", "planning": "Planificación", "execution": "Ejecución", "quality": "Calidad y pruebas", "debugging": "Depuración", "review": "Revisión e integración", "meta": "Meta" }, "states": { "not_linked": "No habilitado", "linked_to_codeg": "Habilitado", "linked_elsewhere": "Bloqueado — existe otro vínculo", "blocked_by_real_directory": "Bloqueado — una habilidad personalizada ocupa este nombre", "broken": "Vínculo roto" }, "badges": { "userModified": "Modificado por el usuario" }, "actions": { "openCentralDir": "Abrir carpeta central", "refresh": "Actualizar" }, "toasts": { "loadFailed": "Error al cargar los detalles del experto", "enabled": "Experto habilitado para este agente", "disabled": "Experto deshabilitado para este agente", "enableFailed": "Error al habilitar el experto", "disableFailed": "Error al deshabilitar el experto", "openFolderFailed": "Error al abrir la carpeta" } } }