{
  "ai-chat-ui.show-settings": "Mostrar configuración de IA",
  "ai.executePlanWithCoder": "Ejecutar el plan actual con Coder",
  "aiConfiguration:open": "Abrir la vista Configuración de IA",
  "aiConfiguration:openTools": "Configuración de Open AI Tools",
  "aiHistory:clear": "Historial de IA: Borrar historial",
  "aiHistory:open": "Abrir vista Historial de AI",
  "aiHistory:sortChronologically": "Historial de IA: Ordenar cronológicamente",
  "aiHistory:sortReverseChronologically": "Historial de IA: Ordenar cronológicamente en orden inverso",
  "aiHistory:toggleCompact": "Historial de IA: Alternar vista compacta",
  "aiHistory:toggleHideNewlines": "Historia de la IA: Deja de interpretar los saltos de línea.",
  "aiHistory:toggleRaw": "Historial de IA: Alternar vista sin formato",
  "aiHistory:toggleRenderNewlines": "Historia de la IA: interpretar saltos de línea",
  "debug.breakpoint.editCondition": "Editar condición...",
  "debug.breakpoint.removeSelected": "Eliminar puntos de interrupción seleccionados",
  "debug.breakpoint.toggleEnabled": "Alternar habilitar puntos de interrupción",
  "notebook.cell.changeToCode": "Cambiar celda a código",
  "notebook.cell.changeToMarkdown": "Cambiar celda a Markdown",
  "notebook.cell.insertMarkdownCellAbove": "Insertar celda Markdown arriba",
  "notebook.cell.insertMarkdownCellBelow": "Insertar celda Markdown a continuación",
  "terminal:new:profile": "Crear un nuevo terminal integrado a partir de un perfil",
  "terminal:profile:default": "Elija el perfil de terminal predeterminado.",
  "theia": {
    "ai": {
      "agents": {
        "capabilityOverrides": {
          "mdDescription": "Modificaciones del usuario para capacidades basadas en plantillas. Las claves son ID de fragmentos de capacidad, los valores son habilitado (verdadero) o deshabilitado (falso).",
          "title": "Anulaciones de capacidades"
        },
        "completionNotification": {
          "mdDescription": "Comportamiento de las notificaciones cuando este agente requiera tu atención, es decir, cuando haya completado una tarea o solicite tu intervención.                     Si no se configura, se utilizará la configuración global predeterminada de notificaciones.\n                    - `os-notification`: Mostrar notificaciones del sistema operativo/del sistema\n                    - `message`: Mostrar notificaciones en la barra de estado/área de mensajes\n                    - `blink`: Hacer parpadear o resaltar la interfaz de usuario\n                    - `off`: Desactivar las notificaciones para este agente",
          "title": "Notificación"
        },
        "enable": {
          "mdDescription": "Especifica si el agente debe estar habilitado (verdadero) o deshabilitado (falso).",
          "title": "Habilitar agente"
        },
        "genericCapabilitySelections": {
          "agentDelegation": "ID de agentes seleccionados para la delegación",
          "functions": "ID de funciones seleccionadas",
          "mcpFunctions": "ID de funciones MCP seleccionadas",
          "mdDescription": "Selecciones del usuario para capacidades genéricas, como habilidades, funciones y herramientas MCP.",
          "promptFragments": "ID de fragmentos de mensajes seleccionados",
          "skills": "ID de habilidades seleccionadas",
          "title": "Selecciones de capacidades genéricas",
          "variables": "Nombres de variables seleccionados"
        },
        "languageModelRequirements": {
          "identifier": {
            "mdDescription": "El identificador del modelo de lenguaje que se va a utilizar."
          },
          "mdDescription": "Especifica los modelos de idioma utilizados para este agente.",
          "purpose": {
            "mdDescription": "El propósito para el que se utiliza este modelo de lenguaje.",
            "title": "Finalidad"
          },
          "title": "Requisitos del modelo de idioma"
        },
        "mdDescription": "Configurar los ajustes de los agentes, como habilitar o deshabilitar agentes específicos, configurar avisos y seleccionar LLM.",
        "selectedVariants": {
          "mdDescription": "Especifica las variantes de solicitud seleccionadas actualmente para este agente.",
          "title": "Variantes seleccionadas"
        },
        "serverToolSelections": {
          "mdDescription": "Selecciones de usuario para herramientas de servidor de proveedores, clasificadas por fabricante del modelo. Cada valor contiene los identificadores de las herramientas de servidor habilitadas para ese fabricante.",
          "title": "Selección de herramientas de servidor"
        },
        "showInChat": {
          "mdDescription": "Especifica si el agente debe mostrarse en la interfaz de usuario del chat (verdadero) u ocultarse (falso).",
          "title": "Mostrar en el chat"
        },
        "title": "Configuración del agente"
      },
      "anthropic": {
        "apiKey": {
          "description": "Introduzca una clave API de su cuenta oficial de Anthropic. **Nota:** al utilizar esta preferencia, la clave API de Anthropic se almacenará en texto sin cifrar en el equipo que ejecuta Theia. Utilice la variable de entorno `ANTHROPIC_API_KEY` para configurar la clave de forma segura."
        },
        "compaction": {
          "default": "Sigue la configuración global de compactación del chat del lado del servidor.",
          "description": "Anula la compactación nativa del proveedor del lado del servidor para los modelos de Anthropic. La opción «predeterminada» sigue la configuración global del chat ({0}). Cuando está habilitada de forma efectiva, se utiliza la API de mensajes de Anthropic Beta para que el proveedor pueda resumir los turnos más antiguos una vez que la conversación supere su umbral.",
          "disabled": "Nunca solicites la compactación del lado del servidor para los modelos de Anthropic.",
          "enabled": "Solicita siempre la compactación del lado del servidor para los modelos de Anthropic."
        },
        "compactionTokenThreshold": {
          "description": "Anula el umbral global de tokens de entrada para la compactación del lado del servidor en los modelos de Anthropic. Si no se establece, se aplica la configuración global o el valor predeterminado del proveedor. Si se establece, el valor debe ser de al menos 50 000 tokens."
        },
        "customEndpoints": {
          "apiKey": {
            "title": "La clave para acceder a la API que se sirve en la URL dada o «true» para utilizar la clave API global de Anthropic."
          },
          "enableStreaming": {
            "title": "Indica si se debe utilizar la API de streaming. Por defecto es «true»."
          },
          "id": {
            "title": "Identificador único que se utiliza en la interfaz de usuario para identificar el modelo personalizado."
          },
          "maxRetries": {
            "title": "Número máximo de reintentos cuando falla una solicitud. 3 por defecto."
          },
          "mdDescription": "Integra modelos personalizados compatibles con la API de Anthropic. Los atributos obligatorios son `model` y `url`.            \n            Opcionalmente, puedes            \n            - especificar un `id` único para identificar el modelo personalizado en la interfaz de usuario. Si no se proporciona ninguno, se utilizará `model` como `id`.            \n            - proporcionar una `apiKey` para acceder a la API servida en la URL indicada. Utilice `true` para indicar el uso de la clave global de la API de Anthropic.            \n            - especificar `enableStreaming: false` para indicar que no se utilizará el streaming.            \n            - especificar `useCaching: false` para indicar que no se utilizará el almacenamiento en caché de las solicitudes.            \n            - especificar `maxRetries: <número>` para indicar el número máximo de reintentos cuando falla una solicitud. El valor predeterminado es 3.            \n            Las capacidades de razonamiento y el límite máximo de tokens de salida se derivan de la respuesta del punto final `/v1/models`.",
          "modelId": {
            "title": "ID del modelo"
          },
          "url": {
            "title": "El punto final compatible con la API de Anthropic donde se aloja el modelo."
          },
          "useCaching": {
            "title": "Indica si el modelo admite el almacenamiento en caché de mensajes. Por defecto es «true»."
          }
        },
        "models": {
          "description": "Modelos oficiales de Anthropic que se utilizarán."
        }
      },
      "chat": {
        "agent": {
          "architect": "Arquitecto",
          "coder": "Programador",
          "universal": "Universal"
        },
        "app-tester": {
          "description": "Este agente prueba la interfaz de usuario de su aplicación para verificar los escenarios de prueba especificados por el usuario mediante la automatización del navegador. Puede automatizar los flujos de trabajo de prueba y proporcionar información detallada sobre la funcionalidad de la aplicación."
        },
        "applySuggestion": "Aplicar sugerencia",
        "bypassModelRequirement": {
          "description": "Omita la comprobación de requisitos del modelo de lenguaje. Active esta opción si utiliza agentes externos (por ejemplo, Claude Code) que no requieren modelos de lenguaje Theia."
        },
        "category": "IA",
        "changeSetDefaultTitle": "Cambios sugeridos",
        "changeSetFileDiffUriLabel": "Cambios de IA: {0}",
        "chatAgentsVariable": {
          "description": "Devuelve la lista de agentes de chat disponibles en el sistema."
        },
        "chatSessionNamingAgent": {
          "description": "Agente para generar nombres de sesiones de chat.",
          "vars": {
            "conversation": {
              "description": "El contenido de la conversación del chat."
            },
            "listOfSessionNames": {
              "description": "La lista de nombres de sesiones existentes."
            }
          }
        },
        "chatSessionSummaryAgent": {
          "description": "Agente para generar resúmenes de sesiones de chat."
        },
        "clipboardSeparator": "portapapeles",
        "confirmApplySuggestion": "El archivo {0} ha cambiado desde que se creó esta sugerencia. ¿Está seguro de que desea aplicar el cambio?",
        "confirmRevertSuggestion": "El archivo {0} ha cambiado desde que se creó esta sugerencia. ¿Está seguro de que desea revertir el cambio?",
        "couldNotFindMatchingLM": "No se ha encontrado un modelo de idioma coincidente. ¡Comprueba tu configuración!",
        "couldNotFindReadyLMforAgent": "No se ha encontrado un modelo de idioma listo para el agente {0}. ¡Comprueba tu configuración!",
        "customAgents": {
          "migratePrompt": {
            "message": "Tus agentes personalizados siguen utilizando el formato antiguo `customAgents.yml`. Recomendamos migrarlos al nuevo formato por agente (`agents/<id>/agent.md`), que {0} utilizará en adelante. Cada agente tendrá su propio archivo junto a tu `customAgents.yml`, y el original se conservará como copia de seguridad con el nombre `customAgents.yml.bak`."
          },
          "migrationResult": {
            "empty": "Migración de agentes personalizados: no hay nada que migrar."
          },
          "rerunMigration": "Volver a ejecutar la migración de custom-agent"
        },
        "defaultAgent": {
          "description": "Opcional: <nombre-del-agente> del agente de chat que se invocará, si no se menciona explícitamente ningún agente con @<nombre-del-agente> en la consulta del usuario. Si no se ha configurado ningún agente predeterminado, se aplicarán los valores predeterminados de Theia."
        },
        "defaultToolConfirmation": {
          "description": "Comportamiento de confirmación predeterminado utilizado para herramientas que no tienen una entrada específica en «ai-features.chat.toolConfirmation». Las herramientas que requieren explícitamente una confirmación antes de ser aprobadas automáticamente siempre se establecen de forma predeterminada en «confirmar», independientemente de esta configuración."
        },
        "fromClipboard": "$(clippy) Desde el portapapeles",
        "fromClipboardDescription": "Pegar imagen del portapapeles",
        "imageContextVariable": {
          "args": {
            "data": {
              "description": "Los datos de imagen en base64."
            },
            "mimeType": {
              "description": "El tipo MIME de la imagen."
            },
            "name": {
              "description": "El nombre del archivo de imagen, si está disponible."
            },
            "wsRelativePath": {
              "description": "La ruta relativa al espacio de trabajo del archivo de imagen, si está disponible."
            }
          },
          "description": "Proporciona información contextual para una imagen.",
          "label": "Archivo de imagen"
        },
        "imagePickerPlaceholder": "Seleccione un archivo de imagen o busque por nombre.",
        "orchestrator": {
          "description": "Este agente analiza la solicitud del usuario en función de la descripción de todos los agentes de chat disponibles y selecciona el agente más adecuado para responder a la solicitud (mediante IA). La solicitud del usuario se delegará directamente al agente seleccionado sin necesidad de confirmación adicional.",
          "vars": {
            "availableChatAgents": {
              "description": "La lista de agentes de chat a los que el coordinador puede delegar, excluyendo los agentes especificados en la preferencia de la lista de exclusión."
            }
          }
        },
        "pendingImage": {
          "file": "Imagen pendiente: {0}",
          "pasted": "Imagen pendiente (pegada)"
        },
        "persistedSessionLimit": {
          "description": "Número máximo de sesiones de chat que se mantendrán. Utilice -1 para sesiones ilimitadas y 0 para desactivar la persistencia de las sesiones. Cuando se reduce el límite, las sesiones más antiguas que superan el nuevo límite se eliminan automáticamente la próxima vez que se guarden."
        },
        "pinChatAgent": {
          "description": "Habilite la fijación de agentes para mantener automáticamente activo un agente de chat mencionado en todas las indicaciones, lo que reduce la necesidad de repetir las menciones. Puede desactivar o cambiar de agente manualmente en cualquier momento."
        },
        "revertSuggestion": "Revertir sugerencia",
        "sessionStorageScope": {
          "description": "Elija si desea conservar las sesiones de chat en almacenes separados por espacio de trabajo o en un único almacén global. Si no hay ningún espacio de trabajo abierto, las sesiones se guardarán en el almacenamiento global.",
          "global": "Almacenar las sesiones de chat en un único almacén, compartido entre todos los espacios de trabajo.",
          "workspace": "Almacenar las sesiones de chat en un almacenamiento de metadatos específico del espacio de trabajo. Las sesiones están asociadas al espacio de trabajo, pero se almacenan fuera del directorio del espacio de trabajo."
        },
        "taskContextService": {
          "summarizeProgressMessage": "Resumen: {0}"
        },
        "taskContextStorageDirectory": {
          "description": "Una ruta relativa del espacio de trabajo en la que persistir y desde la que recuperar las descripciones del contexto de la tarea. Si se establece en un valor vacío, los contextos de tarea generados se almacenarán en la memoria en lugar de en el disco."
        },
        "toolConfirmation": {
          "alwaysAllow": {
            "description": "Ejecutar herramientas automáticamente sin confirmación"
          },
          "confirm": {
            "description": "Solicitar confirmación antes de ejecutar herramientas."
          },
          "description": "Configura el comportamiento de confirmación para herramientas individuales. La clave es el ID de la herramienta, el valor es el modo de confirmación. Para cambiar el valor predeterminado para todas las herramientas, utiliza «ai-features.chat.defaultToolConfirmation».",
          "disabled": {
            "description": "Desactivar la ejecución de la herramienta"
          }
        },
        "toolConfirmationTimeout": {
          "denialReason": "La confirmación ha expirado tras {0} segundos",
          "description": "Tiempo de espera en segundos para los cuadros de diálogo de confirmación de la herramienta. Cuando se establece un valor positivo, las confirmaciones de la herramienta se rechazarán automáticamente tras el tiempo especificado. Establezca el valor en 0 para desactivarlo (valor predeterminado)."
        },
        "universal": {
          "description": "Este agente está diseñado para ayudar a los desarrolladores de software proporcionando respuestas concisas y precisas a preguntas generales sobre programación y desarrollo de software. También es el recurso de reserva para cualquier pregunta genérica que pueda plantear el usuario. El agente universal no tiene actualmente ningún contexto por defecto, es decir, no puede acceder al contexto actual del usuario ni al espacio de trabajo."
        },
        "view": {
          "label": "Chat con IA"
        },
        "welcomeScreenSessions": {
          "description": "Número máximo de sesiones de chat que se muestran en la vista general del chat (página de inicio). Las sesiones activas se muestran en primer lugar; se puede acceder al resto a través del enlace «Explorar todos los chats...». Reduce este valor si un zoom elevado del editor provoca la aparición de una barra de desplazamiento. Establece el valor en 0 para ocultar por completo la lista en línea; se seguirá pudiendo acceder a las sesiones a través del enlace «Explorar todos los chats...»."
        }
      },
      "chat-ui": {
        "addContextVariable": "Añadir variable de contexto",
        "agentDefaultModel": "agente por defecto",
        "agentDelegationDescription": "Otros agentes de IA a los que se puede delegar",
        "aiDisabled": "Las funciones de IA están desactivadas.",
        "allowedResourceUrls": "Los recursos externos (imágenes, hojas de estilo, archivos multimedia, etc.) a los que se hace referencia en las respuestas del chat de IA están bloqueados por defecto y se sustituyen por un marcador de posición hasta que se autoricen explícitamente. Los recursos cuya URL comience por uno de los prefijos configurados se muestran directamente sin ser bloqueados. Incluye el origen completo con una barra al final (p. ej., «https://example.com/») para evitar coincidencias no deseadas. Añade únicamente fuentes en las que confíes plenamente.",
        "applyAll": "Aplicar todo",
        "applyAllTitle": "Aplicar todos los cambios pendientes",
        "askQuestion": "Hacer una pregunta",
        "attachToContext": "Adjuntar elementos al contexto",
        "cancel": "Cancelar (Esc)",
        "chat-view-tree-widget": {
          "ai": "IA",
          "generating": "Generación",
          "noRenderer": "Error: No se ha encontrado ningún renderizador.",
          "scrollToBottom": "Ir al último mensaje",
          "waitingForInput": "Esperando entrada",
          "you": "Usted"
        },
        "chatInput": {
          "clearHistory": "Borrar el historial de solicitudes de entrada",
          "cycleMode": "Modo Chat cíclico",
          "nextPrompt": "Siguiente indicador",
          "pasteWithImageSupport": "Pegar (con soporte para imágenes)",
          "previousPrompt": "Solicitud anterior",
          "toggleCapabilities": "Configurar capacidades de alternancia"
        },
        "chatInputAriaLabel": "Escriba su mensaje aquí.",
        "chatRequestFailedWithDetail": "Error en la solicitud de chat: {0}",
        "chatResponses": "Respuestas de chat",
        "clearAllSelections": "Borrar cadena de búsqueda y selecciones de capacidades",
        "code-part-renderer": {
          "generatedCode": "Código generado"
        },
        "collapseAll": "Contraer todo",
        "collapseChangeSet": "Contraer conjunto de cambios",
        "command-part-renderer": {
          "commandNotExecutable": "El comando tiene el identificador «{0}», pero no se puede ejecutar desde la ventana de chat."
        },
        "compaction-part-renderer": {
          "compactionMarker": "Conversación resumida"
        },
        "copyCodeBlock": "Copiar bloque de código",
        "couldNotSendRequestToSession": "No se pudo enviar la solicitud «{0}» a la sesión {1}",
        "delegatedSession": "Delegado",
        "delegation-response-renderer": {
          "interactionNeeded": "Se requiere la interacción del usuario",
          "prompt": {
            "label": "Solicitud delegada:"
          },
          "response": {
            "label": "Respuesta:"
          },
          "restoredNotAvailable": "Respuesta no disponible para sesiones restauradas.",
          "starting": "Iniciando la delegación...",
          "status": {
            "canceled": "cancelado",
            "generating": "generando...",
            "starting": "Iniciando..."
          }
        },
        "deleteChangeSet": "Eliminar conjunto de cambios",
        "editRequest": "Editar",
        "edited": "editado",
        "editedTooltipHint": "Esta variante de solicitud ha sido editada. Puede restablecerla en la vista Configuración de IA.",
        "enterChatName": "Introduzca el nombre del chat",
        "errorChatInvocation": "Se ha producido un error durante la invocación del servicio de chat.",
        "expandChangeSet": "Expandir conjunto de cambios",
        "failedToDeleteSession": "No se ha podido eliminar la sesión de chat.",
        "failedToLoadChats": "No se han podido cargar las sesiones de chat.",
        "failedToRestoreSession": "No se ha podido restaurar la sesión de chat.",
        "failedToRetry": "Mensaje de error al reintentar",
        "focusInput": "Entrada de chat enfocada",
        "focusResponse": "Respuesta de chat enfocada",
        "functions": "Funciones",
        "functionsDescription": "Funciones integradas proporcionadas por las extensiones de{0}",
        "genericCapabilities": "Capacidades genéricas",
        "mcpFunctionsDescription": "Funciones del Protocolo de Contexto de Modelo (MCP) de servidores conectados.",
        "mermaid-rendering": {
          "copySource": "Copiar código fuente",
          "error": "No se puede representar el diagrama Mermaid. Cambia a la vista de código fuente para consultar la definición.",
          "rendering": "Generando diagrama…",
          "resetView": "Restablecer vista",
          "showDiagram": "Mostrar diagrama",
          "showSource": "Mostrar código fuente",
          "title": "Diagrama de Mermaid",
          "wheelZoomHint": "{0} + Desplazarse"
        },
        "modelBadgeTooltip": "Modelo de lenguaje utilizado para esta respuesta: {0}",
        "modelUnavailable": "no disponible",
        "noChatAgentsAvailable": "No hay agentes de chat disponibles.",
        "noMatchingCapabilities": "Sin capacidades coincidentes",
        "openDiff": "Abrir Diff",
        "openImage": "Abrir imagen",
        "openOriginalFile": "Abrir archivo original",
        "performThisTask": "Realice esta tarea.",
        "persistedSession": "Sesión persistente (haga clic para restaurar)",
        "promptFragmentsDescription": "Fragmentos de mensajes personalizados para incluir en la conversación.",
        "removeChat": "Eliminar chat",
        "requestNotFoundForRetry": "Solicitud no encontrada para reintentar",
        "responseFrom": "Respuesta de {0}",
        "saveCurrentSelectionsToSettings": "Guardar la configuración de funciones",
        "searchCapabilities": "Capacidades de búsqueda",
        "sectionRestored": "Restaurado",
        "selectAgentQuickPickPlaceholder": "Seleccionar un agente para la nueva sesión",
        "selectAllInCategory": "Seleccionar todo en esta categoría",
        "selectChat": "Seleccionar chat",
        "selectContextVariableQuickPickPlaceholder": "Seleccione una variable de contexto para adjuntarla al mensaje.",
        "selectTaskContextQuickPickItem": {
          "currentlyOpen": "actualmente abierto"
        },
        "selectTaskContextQuickPickPlaceholder": "Seleccione un contexto de tarea para adjuntar.",
        "selectVariableArguments": "Seleccionar argumentos variables",
        "send": "Enviar (Intro)",
        "server-toolcall-part-renderer": {
          "indicator": "servidor",
          "serverTooltip": "Se ejecuta en los servidores del proveedor (no localmente). Las herramientas de servidor se aprueban automáticamente al seleccionarlas."
        },
        "serverToolWarning": "Esta herramienta se aprueba automáticamente al seleccionarla. El modelo puede ejecutarla en cualquier momento.",
        "serverTools": "Herramientas de servidor",
        "serverToolsDescription": "Las herramientas de servidor se ejecutan del lado del servidor mediante el LLM en la infraestructura del proveedor.",
        "serverToolsWarning": "Estas herramientas se aprueban automáticamente al seleccionarlas. El modelo puede ejecutarlas en cualquier momento.",
        "sessionModel": "Modelo para este chat",
        "sessionModelDefault": "Modelo para este chat ({0})",
        "sessionModelUnavailable": "El modelo para este chat no está disponible ({0}); las solicitudes utilizan el agente predeterminado.",
        "sessionNotFoundForRetry": "No se ha encontrado la sesión para reintentar.",
        "skillsDescription": "Instrucciones de habilidades reutilizables que se pueden añadir a la conversación.",
        "switchAgentMode": "Cambiar modo agente",
        "text-part-renderer": {
          "cantDisplay": "No se puede mostrar la respuesta, ¡comprueba tus ChatResponsePartRenderers!"
        },
        "toggleCapabilitiesConfig": "Configurar capacidades de alternancia",
        "tokenUsageIndicatorEnabled": "Controla si se muestra el indicador experimental de uso de tokens en la vista de chat. Esta función es experimental y el recuento de tokens puede ser inexacto dependiendo del modelo y del proveedor.",
        "tokenUsageLabel": "Uso de tokens",
        "tokenUsageOverflow": "El uso de tokens supera con creces el umbral de advertencia. Considera la posibilidad de compactar o iniciar una nueva sesión.",
        "tokenUsageTooltipCacheCreate": "Creación de caché: {0}",
        "tokenUsageTooltipCacheRead": "Lectura de caché: {0}",
        "tokenUsageTooltipCompactions": "{0}e compactado x",
        "tokenUsageTooltipCumulative": "Acumulativo: {0}",
        "tokenUsageTooltipTotal": "Total: {0} / {1} ({2} %)",
        "tokenUsageWarning": "Se ha alcanzado el umbral de advertencia de uso de tokens.",
        "tokenUsageWarningEnabled": "Controla si se muestra una notificación cuando el uso de tokens de una sesión de chat supera el umbral configurado. Requiere que el proveedor del modelo de lenguaje informe del uso de tokens.",
        "tokenUsageWarningMessage": "El uso del token de la sesión de chat ha alcanzado el {0} % de la ventana de contexto. Considera resumir esta sesión o iniciar una nueva para evitar alcanzar el límite.",
        "tokenUsageWarningNewSessionAction": "Iniciar nuevo chat",
        "tokenUsageWarningSummarizeAction": "Resumen de la sesión actual",
        "tokenUsageWarningThresholdPercentage": "Porcentaje de la ventana de contexto del modelo en el que se activa la advertencia de uso de tokens. Este valor también determina las bandas de color de advertencia/error del indicador de uso de tokens. Actualmente se calcula en función de una ventana de contexto estimada de 200 000; se utilizará el tamaño real del contexto por modelo una vez que esté disponible.",
        "toolcall-part-renderer": {
          "denied": "Ejecución denegada",
          "finished": "Ejecutar",
          "rejected": "Ejecución cancelada"
        },
        "toolconfirmation": {
          "allow-options-dropdown-tooltip": "Más opciones de permiso",
          "allow-session": "Permitir este chat",
          "allowed": "Ejecución de herramientas permitida.",
          "alwaysAllowConfirm": "Entendido, habilitar la aprobación automática.",
          "alwaysAllowGenericWarning": "Esta herramienta requiere confirmación antes de que se pueda habilitar la aprobación automática. Una vez habilitada, todas las invocaciones futuras se ejecutarán sin confirmación. Habilítela solo si confía en esta herramienta y comprende los riesgos potenciales.",
          "alwaysAllowTitle": "¿Habilitar la aprobación automática para «{0}»?",
          "approveLatest": "Aprobar la confirmación de la herramienta más reciente",
          "autoCancel": "Cancelación automática en {0}",
          "canceled": "Ejecución de la herramienta cancelada.",
          "denied": "Ejecución de la herramienta denegada.",
          "deny-forever": "Denegar siempre",
          "deny-options-dropdown-tooltip": "Más opciones de denegación",
          "deny-reason-placeholder": "Introduzca el motivo del rechazo...",
          "deny-session": "Denegar para este chat",
          "deny-with-reason": "Denegar con motivo...",
          "denyLatest": "Rechazar la confirmación de la última herramienta",
          "executionDenied": "Ejecución de la herramienta denegada.",
          "header": "Confirmar ejecución de la herramienta"
        },
        "unableToSummarizeCurrentSession": "No se puede resumir la sesión actual. Confirme que el agente de resumen no está deshabilitado.",
        "unknown-part-renderer": {
          "contentNotRestoreable": "Este contenido (tipo «{0}») no se ha podido restaurar por completo. Puede que provenga de una extensión que ya no está disponible."
        },
        "unpinAgent": "Desanclar agente",
        "unselectAllInCategory": "Deseleccionar todo en esta categoría",
        "variablesDescription": "Variables dinámicas que proporcionan información contextual.",
        "variantTooltip": "Variante de solicitud: {0}",
        "yourMessage": "Tu mensaje"
      },
      "claude-code": {
        "agentDescription": "Agente de codificación de Anthropic.",
        "allowSession": "Permitir para esta sesión",
        "apiKey": {
          "description": "Introduzca una clave API para Claude Code. **Nota:** al utilizar esta preferencia, la clave API se almacenará en texto sin cifrar en el equipo que ejecuta Theia. Utilice la variable de entorno `ANTHROPIC_API_KEY` para configurar la clave de forma segura."
        },
        "askBeforeEdit": "Pregunte antes de editar.",
        "changeSetTitle": "Cambios realizados por Claude Code.",
        "clearCommand": {
          "description": "Crear una nueva sesión"
        },
        "compactCommand": {
          "description": "Conversación compacta con instrucciones de enfoque opcionales."
        },
        "completedCount": "{0} / {1} completado",
        "configCommand": {
          "description": "Abrir la configuración de Claude Code."
        },
        "currentDirectory": "directorio actual",
        "differentAgentRequestWarning": "La solicitud de chat anterior fue gestionada por otro agente. Claude Code no ve esos otros mensajes.",
        "edit": "Editar {0}",
        "editAutomatically": "Editar automáticamente",
        "editing": "Edición",
        "editsCount": "{0} ediciones",
        "emptyTodoList": "No todos disponibles",
        "entireFile": "Archivo completo",
        "excludingOnePattern": " (excluyendo 1 patrón)",
        "excludingPatterns": " (excluyendo los patrones «{0}»).",
        "executablePath": {
          "description": "Ruta al ejecutable Claude Code (cli.js) de `@anthropic-ai/claude-agent-sdk`. Si no se especifica, el sistema intentará resolver la ruta automáticamente a partir de la instalación global de npm."
        },
        "executedCommand": "Ejecutado: {0}",
        "failedToParseBashToolData": "No se han podido analizar los datos de la herramienta Bash.",
        "failedToParseEditToolData": "No se han podido analizar los datos de la herramienta de edición.",
        "failedToParseGlobToolData": "No se han podido analizar los datos de la herramienta Glob.",
        "failedToParseGrepToolData": "No se han podido analizar los datos de la herramienta Grep.",
        "failedToParseLSToolData": "No se han podido analizar los datos de la herramienta LS.",
        "failedToParseMultiEditToolData": "No se han podido analizar los datos de la herramienta MultiEdit.",
        "failedToParseReadToolData": "No se han podido analizar los datos de la herramienta de lectura.",
        "failedToParseTodoListData": "No se han podido analizar los datos de la lista de tareas pendientes.",
        "failedToParseWebFetchToolData": "No se han podido analizar los datos de la herramienta WebFetch.",
        "failedToParseWriteToolData": "Error al analizar los datos de la herramienta Write.",
        "fetching": "Obtención",
        "fileFilter": "Filtro de archivos",
        "filePath": "Ruta de archivo",
        "fileType": "Tipo de archivo",
        "findMatchingFiles": "Buscar archivos que coincidan con el patrón global «{0}» en el directorio actual.",
        "findMatchingFilesWithPath": "Buscar archivos que coincidan con el patrón global «{0}» dentro de {1}",
        "finding": "Búsqueda",
        "from": "De",
        "globPattern": "patrón glob",
        "grepOptions": {
          "caseInsensitive": "no distingue entre mayúsculas y minúsculas",
          "glob": "glob: {0}",
          "headLimit": "Límite: {0}",
          "lineNumbers": "números de línea",
          "linesAfter": "+{0} después de",
          "linesBefore": "+{0}o anterior",
          "linesContext": "± Contexto de {0}",
          "multiLine": "multilínea",
          "type": "tipo: {0}"
        },
        "grepOutputModes": {
          "content": "contenido",
          "count": "contar",
          "filesWithMatches": "archivos con coincidencias"
        },
        "ignoredPatterns": "Patrones ignorados",
        "ignoringPatterns": "Ignorar patrones de «{0}»",
        "initCommand": {
          "description": "Inicializar el proyecto con la guía CLAUDE.md."
        },
        "itemCount": "{0} elementos",
        "lineLimit": "Límite de líneas",
        "lines": "Líneas",
        "listDirectoryContents": "Mostrar el contenido del directorio",
        "listing": "Listado",
        "memoryCommand": {
          "description": "Editar el archivo de memoria CLAUDE.md"
        },
        "multiEditing": "Edición múltiple",
        "oneEdit": "1 edición",
        "oneItem": "1 elemento",
        "oneOption": "1 opción",
        "openDirectoryTooltip": "Haga clic para abrir el directorio.",
        "openFileTooltip": "Haga clic para abrir el archivo en el editor.",
        "optionsCount": "{0} opciones",
        "partial": "Parcial",
        "plan": "Modo plano",
        "project": "proyecto",
        "projectRoot": "raíz del proyecto",
        "readMode": "Modo de lectura",
        "reading": "Lectura",
        "replaceAllCount": "{0} reemplazar todo",
        "replaceAllOccurrences": "Reemplazar todas las apariciones.",
        "resumeCommand": {
          "description": "Reanudar una sesión"
        },
        "reviewCommand": {
          "description": "Solicitar revisión del código"
        },
        "searchPath": "Ruta de búsqueda",
        "searching": "Búsqueda",
        "startingLine": "Línea de salida",
        "timeout": "Tiempo de espera",
        "timeoutInMs": "Tiempo de espera: {0} ms",
        "to": "A",
        "todoList": "Todo List",
        "todoPriority": {
          "high": "alto",
          "low": "bajo",
          "medium": "medio"
        },
        "toolApprovalRequest": "Claude Code quiere utilizar la herramienta «{0}». ¿Desea permitirlo?",
        "totalEdits": "Ediciones totales",
        "vars": {
          "activeEditor": {
            "description": "El URI del editor actualmente activo."
          }
        },
        "webFetch": "Web Fetch",
        "writing": "Redacción"
      },
      "code-completion": {
        "progressText": "Calculando la finalización del código de IA..."
      },
      "codex": {
        "agentDescription": "Asistente de programación de OpenAI con tecnología Codex.",
        "apiKey": {
          "description": "Clave API de OpenAI para Codex. Si no se configura, se utiliza la clave API compartida de OpenAI (`ai-features.openAiOfficial.openAiApiKey`). También se puede configurar mediante la variable de entorno `OPENAI_API_KEY`."
        },
        "completedCount": "{0} / {1} completado",
        "exitCode": "Código de salida: {0}",
        "fileChangeFailed": "Codex no pudo aplicar los cambios para: {0}",
        "fileChangeFailedGeneric": "Codex no ha podido aplicar los cambios en el archivo.",
        "itemCount": "{0} elementos",
        "noItems": "Sin elementos",
        "oneItem": "1 elemento",
        "searched": "Buscado",
        "searching": "Búsqueda",
        "todoList": "Todo List"
      },
      "completion": {
        "agent": {
          "description": "Este agente proporciona autocompletado de código en el editor de código de {0}.",
          "vars": {
            "file": {
              "description": "El URI del archivo que se está editando."
            },
            "language": {
              "description": "El languageId del archivo que se está editando."
            },
            "prefix": {
              "description": "El código antes de la posición actual del cursor."
            },
            "suffix": {
              "description": "El código después de la posición actual del cursor."
            }
          }
        },
        "automaticEnable": {
          "description": "Activa automáticamente las completaciones de IA en línea dentro de cualquier editor (Monaco) mientras editas.            \n            También puedes activar manualmente el código mediante el comando «Activar sugerencia en línea» o el atajo predeterminado «Ctrl+Alt+Espacio»."
        },
        "cacheCapacity": {
          "description": "Número máximo de completaciones de código que se pueden almacenar en la caché. Un número más alto puede mejorar el rendimiento, pero consumirá más memoria. El valor mínimo es 10, el rango recomendado es entre 50 y 200.",
          "title": "Capacidad de la caché de autocompletado de código"
        },
        "debounceDelay": {
          "description": "Controla el retraso en milisegundos antes de activar las completaciones de IA después de que se hayan detectado cambios en el editor. Requiere que esté habilitada la opción «Autocompletado de código». Introduzca 0 para desactivar el retraso de rebote.",
          "title": "Retardo de rebote"
        },
        "excludedFileExts": {
          "description": "Especifique las extensiones de archivo (por ejemplo, .md, .txt) en las que se deben desactivar las completaciones de IA.",
          "title": "Extensiones de archivo excluidas"
        },
        "fileVariable": {
          "description": "La URI del archivo que se está editando. Solo disponible en el contexto de autocompletado de código."
        },
        "languageVariable": {
          "description": "El languageId del archivo que se está editando. Solo disponible en el contexto de autocompletado de código."
        },
        "maxContextLines": {
          "description": "El número máximo de líneas utilizadas como contexto, distribuidas entre las líneas anteriores y posteriores a la posición del cursor (prefijo y sufijo). Establezca este valor en -1 para utilizar todo el archivo como contexto sin ningún límite de líneas y en 0 para utilizar solo la línea actual.",
          "title": "Líneas de contexto máximas"
        },
        "prefixVariable": {
          "description": "El código anterior a la posición actual del cursor. Solo disponible en el contexto de autocompletado de código."
        },
        "stripBackticks": {
          "description": "Elimina las comillas invertidas que rodean el código devuelto por algunos LLM. Si se detecta una comilla invertida, también se elimina todo el contenido que hay después de la comilla invertida de cierre. Esta configuración ayuda a garantizar que se devuelva código sin formato cuando los modelos de lenguaje utilizan un formato similar al de Markdown.",
          "title": "Eliminar comillas invertidas de las completaciones en línea"
        },
        "suffixVariable": {
          "description": "El código después de la posición actual del cursor. Solo disponible en el contexto de autocompletado de código."
        }
      },
      "configuration": {
        "selectItem": "Seleccione un elemento."
      },
      "copilot": {
        "auth": {
          "aiConfiguration": "Configuración de IA",
          "authorize": "He autorizado",
          "copied": "¡Copiado!",
          "copyCode": "Copiar código",
          "expired": "La autorización ha caducado o ha sido denegada. Vuelva a intentarlo.",
          "hint": "Después de introducir el código y autorizar, haga clic en «He autorizado» a continuación.",
          "initiating": "Iniciando autenticación...",
          "instructions": "Para autorizar a {0} a utilizar GitHub Copilot, visita la URL que aparece a continuación e introduce el código:",
          "openGitHub": "Abrir GitHub",
          "privacy": "Theia es un proyecto de código abierto. Solo solicitamos acceso a tu nombre de usuario de GitHub para conectarnos a los servicios de GitHub Copilot; no se accede ni se almacena ningún otro dato.",
          "success": "¡Iniciada sesión correctamente en GitHub Copilot!",
          "successHint": "Si tu cuenta de GitHub tiene acceso a Copilot, ahora puedes configurar los modelos de lenguaje de Copilot en el ",
          "tos": "Al iniciar sesión, aceptas los ",
          "tosLink": "Condiciones de servicio de GitHub",
          "verifying": "Verificando la autorización..."
        },
        "category": "Copilot",
        "commands": {
          "signIn": "Iniciar sesión en GitHub Copilot",
          "signOut": "Cerrar sesión en GitHub Copilot"
        },
        "enabled": {
          "mdDescription": "Habilita el proveedor GitHub Copilot. Una vez habilitado, aparecerá una entrada en la barra de estado para la autenticación y se detectarán los modelos disponibles de tu suscripción a Copilot."
        },
        "enterpriseUrl": {
          "mdDescription": "Dominio de GitHub Enterprise para la API de Copilot (por ejemplo, `github.mycompany.com`). Déjelo vacío para GitHub.com."
        },
        "modelOverrides": {
          "mdDescription": "Anula los modelos de GitHub Copilot detectados automáticamente. Cuando está vacío (valor predeterminado), los modelos disponibles se detectan a partir de tu suscripción a Copilot. Establece ID de modelo explícitos para anular la detección automática."
        },
        "signOut": {
          "confirmMessage": "¿Estás seguro de que deseas cerrar sesión en GitHub Copilot?"
        },
        "statusBar": {
          "signedIn": "Iniciado sesión en GitHub Copilot como {0}. Haga clic para cerrar sesión.",
          "signedOut": "No has iniciado sesión en GitHub Copilot. Haz clic para iniciar sesión."
        },
        "tokenMigration": "Tu sesión de GitHub Copilot utilizaba un método de autenticación obsoleto y se ha borrado. Inicia sesión de nuevo para acceder a todos los modelos disponibles."
      },
      "core": {
        "agentConfiguration": {
          "addCustomAgent": "Añadir agente personalizado",
          "availableCapabilities": "Capacidades disponibles",
          "completionNotificationDescriptionPrefix": "Selecciona cómo deseas que se te notifique cuando este agente necesite tu atención, es decir, cuando complete su tarea o solicite tu intervención. La opción «Predeterminado» utiliza el ",
          "defaultNotificationDescription": "Utiliza la configuración global de notificaciones de IA.",
          "enableAgent": "Habilitar agente",
          "llmRequirements": "Requisitos de LLM",
          "notUsedInPrompt": "No se utiliza en el indicador.",
          "notUsedInPromptTooltip": "Esta variable es declarada por el agente, pero no se hace referencia a ella en la plantilla de solicitud actual.",
          "notificationSettings": "Configuración de notificaciones",
          "notificationSettingsLink": "Configuración de notificaciones de IA",
          "promptTemplates": "Plantillas de solicitud",
          "selectAgentMessage": "¡Seleccione primero un agente!",
          "showInChat": "Mostrar en el chat",
          "templateName": "Plantilla",
          "undeclared": "No declarado",
          "undeclaredTooltip": "Esta variable se utiliza en el indicador, pero el agente no ha declarado ninguna descripción.",
          "usedAgentSpecificVariables": "Variables específicas del agente utilizadas",
          "usedFunctions": "Funciones utilizadas",
          "usedGlobalVariables": "Variables globales utilizadas",
          "variant": "Variante"
        },
        "agentsVariable": {
          "description": "Devuelve la lista de agentes disponibles en el sistema."
        },
        "aiConfiguration": {
          "label": "Configuración de IA"
        },
        "blinkTitle": {
          "agentCompleted": "{0} - Agente completado",
          "namedAgentCompleted": "{0} - Agente «{1}» Completado"
        },
        "capabilityVariable": {
          "argDescription": "El fragmento de solicitud id, seguido opcionalmente de «predeterminado activado» o «predeterminado desactivado» (predeterminado desactivado).",
          "completions": {
            "detail": {
              "off": "Funcionalidad desactivada de forma predeterminada.",
              "on": "Funcionalidad habilitada de forma predeterminada."
            }
          },
          "description": "Resuelve condicionalmente fragmentos de mensajes basándose en la configuración predeterminada de activación/desactivación."
        },
        "changeSetSummaryVariable": {
          "description": "Proporciona un resumen de los archivos de un conjunto de cambios y su contenido."
        },
        "contextDetailsVariable": {
          "description": "Proporciona valores de texto completos y descripciones para todos los elementos de contexto."
        },
        "contextSummaryVariable": {
          "description": "Describe los archivos en el contexto de una sesión determinada."
        },
        "customAgentTemplate": {
          "description": "Este es un agente de ejemplo. Adapte las propiedades a sus necesidades."
        },
        "defaultModelAliases": {
          "code": {
            "description": "Optimizado para tareas de comprensión y generación de código."
          },
          "code-completion": {
            "description": "Ideal para escenarios de autocompletado de código."
          },
          "fast": {
            "description": "Modelos más rápidos y económicos para tareas más sencillas, como la exploración o la ejecución de herramientas básicas, en las que no se requiere un razonamiento profundo."
          },
          "summarize": {
            "description": "Modelos priorizados para la síntesis y condensación de contenidos."
          },
          "universal": {
            "description": "Equilibrado tanto para el uso de código como para el uso general del lenguaje."
          }
        },
        "defaultNotification": {
          "mdDescription": "El método de notificación predeterminado que se utiliza cuando un agente de IA necesita tu atención, es decir, cuando ha completado una tarea o solicita tu intervención. Los agentes individuales pueden anular esta configuración.",
          "title": "Tipo de notificación predeterminado"
        },
        "discard": {
          "label": "Descartar plantilla de solicitud de IA"
        },
        "discardCustomPrompt": {
          "tooltip": "Descartar personalizaciones"
        },
        "fileVariable": {
          "description": "Resuelve el contenido de un archivo.",
          "uri": {
            "description": "El URI del archivo solicitado."
          }
        },
        "languageModelRenderer": {
          "alias": "[alias] {0}",
          "languageModel": "Modelo de lenguaje",
          "purpose": "Finalidad"
        },
        "maxRetries": {
          "mdDescription": "El número máximo de intentos de reintento cuando falla una solicitud a un proveedor de IA. Un valor de 0 significa que no hay reintentos.",
          "title": "Número máximo de reintentos"
        },
        "modelAliasesConfiguration": {
          "agents": "Agentes que utilizan este alias",
          "defaultList": "[Lista predeterminada]",
          "evaluatesTo": "Se evalúa como",
          "label": "Alias de modelos",
          "modelNotReadyTooltip": "No está listo",
          "modelReadyTooltip": "Listo",
          "noAgents": "Ningún agente utiliza este alias.",
          "noModelReadyTooltip": "No hay ningún modelo listo.",
          "noResolvedModel": "No hay ningún modelo listo para este alias.",
          "priorityList": "Lista de prioridades",
          "selectAlias": "Seleccione un alias de modelo.",
          "selectedModelId": "Modelo seleccionado",
          "unavailableModel": "El modelo seleccionado ya no está disponible."
        },
        "noVariableFoundForOpenRequest": "No se ha encontrado ninguna variable para la solicitud abierta.",
        "notification": {
          "message": {
            "description": "Mostrar un mensaje de notificación dentro de la aplicación."
          },
          "off": {
            "description": "Desactivar todas las notificaciones"
          },
          "osNotification": "Notificación del sistema operativo",
          "windowBlink": "Parpadeo de ventana"
        },
        "openEditorsShortVariable": {
          "description": "Referencia breve a todos los archivos abiertos actualmente (rutas relativas, separadas por comas)."
        },
        "openEditorsVariable": {
          "description": "Una lista separada por comas de todos los archivos abiertos actualmente como rutas relativas al espacio de trabajo (p. ej., my-project/src/index.ts)."
        },
        "preference": {
          "languageModelAliases": {
            "description": "Configure los modelos para cada alias de modelo de idioma en la [Vista de configuración de IA]({0}). Alternativamente, puede establecer la configuración manualmente en settings.json: \n```\n\"default/code\": {\n  \"selectedModel\": \"anthropic/claude-opus-4-20250514\"\n}\n```",
            "selectedModel": "El modelo seleccionado por el usuario para este alias.",
            "title": "Alias del modelo de lenguaje"
          }
        },
        "productNameVariable": {
          "description": "El nombre del producto o la aplicación con la que está trabajando el usuario"
        },
        "promptFragmentsConfiguration": {
          "activeCustomizationTitle": "Personalización activa",
          "createCustomizationTitle": "Crear personalización",
          "customization": "personalización",
          "customizationLabel": "Personalización",
          "defaultVariantTitle": "Variante predeterminada",
          "deleteCustomizationTitle": "Eliminar personalización",
          "editTemplateTitle": "Editar plantilla",
          "headerTitle": "Fragmentos de solicitud",
          "label": "Fragmentos de solicitud",
          "noFragmentsAvailable": "No hay fragmentos de mensajes disponibles.",
          "otherPromptFragmentsHeader": "Otros fragmentos de indicaciones",
          "promptTemplateText": "Texto de plantilla de solicitud",
          "promptVariantsHeader": "Conjuntos de variantes de indicaciones",
          "removeCustomizationDialogMsg": "¿Está seguro de que desea eliminar la personalización {0} para el fragmento de solicitud «{1}»?",
          "removeCustomizationDialogTitle": "Eliminar personalización",
          "removeCustomizationWithDescDialogMsg": "¿Está seguro de que desea eliminar la personalización {0} para el fragmento de solicitud «{1}» ({2})?",
          "resetAllButton": "Restablecer todo",
          "resetAllCustomizationsDialogMsg": "¿Está seguro de que desea restablecer todos los fragmentos de solicitud a sus versiones integradas? Esto eliminará todas las personalizaciones.",
          "resetAllCustomizationsDialogTitle": "Restablecer todas las personalizaciones",
          "resetAllCustomizationsTitle": "Restablecer todas las personalizaciones",
          "resetAllPromptFragments": "Restablecer todos los fragmentos de solicitud",
          "resetToBuiltInDialogMsg": "¿Está seguro de que desea restablecer el fragmento de solicitud «{0}» a su versión integrada? Esto eliminará todas las personalizaciones.",
          "resetToBuiltInDialogTitle": "Restablecer a integrado",
          "resetToBuiltInTitle": "Restablecer a este integrado",
          "resetToCustomizationDialogMsg": "¿Está seguro de que desea restablecer el fragmento de solicitud «{0}» para utilizar la personalización {1}? Esto eliminará todas las personalizaciones de mayor prioridad.",
          "resetToCustomizationDialogTitle": "Restablecer a personalización",
          "resetToCustomizationTitle": "Restablecer esta personalización",
          "selectedVariantLabel": "Seleccionado",
          "selectedVariantTitle": "Variante seleccionada",
          "usedByAgentTitle": "Utilizado por el agente: {0}",
          "variantSetError": "La variante seleccionada no existe y no se ha encontrado ninguna predeterminada. Compruebe su configuración.",
          "variantSetWarning": "La variante seleccionada no existe. En su lugar, se utiliza la variante predeterminada.",
          "variantsOfSystemPrompt": "Variantes de este conjunto de variantes de indicaciones:"
        },
        "promptTemplates": {
          "description": "Carpeta para almacenar plantillas de indicaciones personalizadas. Si no se personalizan, se utiliza el directorio de configuración del usuario. Considere la posibilidad de utilizar una carpeta que esté bajo control de versiones para gestionar sus variantes de plantillas de indicaciones."
        },
        "promptVariable": {
          "argDescription": "La plantilla de solicitud de identificación para resolver",
          "completions": {
            "detail": {
              "builtin": "Fragmento de indicador integrado",
              "custom": "Fragmento de solicitud personalizado"
            }
          },
          "description": "Resuelve plantillas de solicitud a través del servicio de solicitud."
        },
        "prompts": {
          "category": "Plantillas de indicaciones de IA"
        },
        "reasoning": {
          "mdDescription": "Valor predeterminado para el selector de razonamiento de la entrada de chat, aplicado a modelos que admiten razonamiento.\n\nEsta es una configuración a nivel de la interfaz de usuario: el nivel elegido se traduce a los parámetros de la API nativa del proveedor en el momento de la solicitud (por ejemplo, Anthropic `thinking` / `output_config.effort`, OpenAI `reasoning.effort`, Gemini `thinkingConfig`) y tiene prioridad sobre cualquier valor sin procesar suministrado a través de `#ai-features.modelSettings.requestSettings#` para los mismos campos.\n\nCada entrada consta de:\n- `scope`: Define cuándo se aplica la configuración (`modelId`, `providerId`, `agentId`).\n- `reasoning.level`: Uno de `off`, `minimal`, `low`, `medium`, `high`, `auto`.\n\nPrioridad en tiempo de ejecución (de mayor a menor): anulación de sesión mediante el selector → esta preferencia → el valor predeterminado declarado del modelo. Se envía lo que muestre el selector. Para anular manualmente el campo de razonamiento de un proveedor mediante `#ai-features.modelSettings.requestSettings#`, establezca `reasoning.level` en `off` aquí para desactivar la traducción basada en el nivel.\n\nLas entradas se emparejan en función de la especificidad del ámbito (agente: 100, modelo: 10, proveedor: 1 punto).\n\nEjemplo:\n```json\n[\n  { \"scope\": { \"providerId\": \"anthropic\" }, \"reasoning\": { \"level\": \"medium\" } },\n  { \"scope\": { \"modelId\": \"openai/gpt-5\" }, \"reasoning\": { \"level\": \"high\" } },\n  { \"scope\": { \"agentId\": \"Coder\" }, \"reasoning\": { \"level\": \"off\" } }\n]\n```",
          "title": "Razonamiento por defecto"
        },
        "requestSettings": {
          "clientSettings": {
            "description": "Configuración del cliente para gestionar los mensajes que se envían de vuelta al llm.",
            "keepThinking": {
              "description": "Si se establece en falso, toda la salida de pensamiento se filtrará antes de enviar la siguiente solicitud del usuario en una conversación de varios turnos."
            },
            "keepToolCalls": {
              "description": "Si se establece en falso, todas las solicitudes y respuestas de herramientas se filtrarán antes de enviar la siguiente solicitud del usuario en una conversación de varios turnos."
            }
          },
          "mdDescription": "Permite especificar ajustes de solicitud personalizados para varios modelos.\nCada ajuste consta de:\n- `scope`: Define cuándo se aplica el ajuste:\n- `modelId` (opcional): El ID del modelo que debe coincidir\n- `providerId` (opcional): El ID del proveedor con el que se debe coincidir (por ejemplo, huggingface, openai, ollama, llamafile).\n- `agentId` (opcional): El ID del agente con el que se debe coincidir.\n- `requestSettings`: Ajustes específicos del modelo como pares clave-valor.\n- `clientSettings`: Ajustes de gestión de mensajes del lado del cliente:\n- `keepToolCalls` (booleano): Si se deben mantener las llamadas a herramientas en el contexto.\n- `keepThinking` (booleano): Si se deben mantener los mensajes de pensamiento.\nLa configuración se compara en función de la especificidad (agente: 100, modelo: 10, proveedor: 1 punto).\nConsulte [nuestra documentación](https://theia-ide.org/docs/user_ai/#custom-request-settings) para obtener más información.",
          "modelSpecificSettings": {
            "description": "Configuración para el ID de modelo específico."
          },
          "scope": {
            "agentId": {
              "description": "El identificador de agente (opcional) al que se aplicarán los ajustes."
            },
            "modelId": {
              "description": "El identificador del modelo (opcional)"
            },
            "providerId": {
              "description": "El identificador de proveedor (opcional) al que se aplicarán los ajustes."
            }
          },
          "title": "Configuración de solicitudes personalizadas"
        },
        "serverSideCompaction": {
          "description": "Habilitar de forma predeterminada la compactación nativa del proveedor en el lado del servidor para las solicitudes de chat. Cuando está activada, los modelos que la admiten pueden resumir automáticamente los turnos más antiguos una vez que la conversación supera su propio umbral, lo que permite que las sesiones largas continúen más allá del límite de contexto. Cada proveedor ofrece su propia opción de anulación, y las sesiones de chat individuales pueden anular esta configuración en sus ajustes de sesión. Los modelos que no la admiten la ignoran."
        },
        "serverSideCompactionTokenThreshold": {
          "description": "Umbral predeterminado de tokens de entrada a partir del cual debe ejecutarse la compactación nativa del proveedor en el lado del servidor. Los proveedores y las sesiones de chat individuales pueden anular este valor. Si no se establece, el proveedor elige su umbral predeterminado. Si se establece, el valor debe ser de al menos 50 000 tokens."
        },
        "skillDirectories": {
          "description": "Directorios adicionales que contienen definiciones de habilidades (archivos SKILL.md). Las habilidades proporcionan instrucciones reutilizables a las que pueden recurrir los agentes de IA. Los directorios .prompts/skills y .agents/skills de tu espacio de trabajo, el directorio .agents/skills de tu directorio de inicio y el directorio skills de la carpeta de configuración de tu producto siempre están incluidos."
        },
        "skillsVariable": {
          "description": "Devuelve la lista de habilidades disponibles que pueden utilizar los agentes de IA."
        },
        "taskContextSummary": {
          "description": "Resuelve todos los elementos de contexto de tareas presentes en el contexto de la sesión."
        },
        "templateSettings": {
          "edited": "editado",
          "unavailableVariant": "No disponible"
        },
        "todayVariable": {
          "description": "¿Hay algo que hacer hoy?",
          "format": {
            "description": "El formato de la fecha"
          }
        },
        "unableToDisplayVariableValue": "No se puede mostrar el valor de la variable.",
        "unableToResolveVariable": "No se puede resolver la variable.",
        "variable-contribution": {
          "builtInVariable": "{0} Variable incorporada",
          "currentAbsoluteFilePath": "La ruta absoluta del archivo actualmente abierto.",
          "currentFileContent": "El contenido sin formato del archivo actualmente abierto. Esto excluye la información sobre el origen del contenido.",
          "currentRelativeDirPath": "La ruta relativa al espacio de trabajo del directorio que contiene el archivo abierto actualmente (por ejemplo, mi-proyecto/src).",
          "currentRelativeFilePath": "La ruta relativa al espacio de trabajo del archivo actualmente abierto (por ejemplo, my-project/src/index.ts).",
          "currentSelectedText": "El texto sin formato que está seleccionado actualmente en el archivo abierto. Esto excluye la información sobre el origen del contenido.",
          "dotRelativePath": "Referencia breve a la ruta relativa al espacio de trabajo del archivo actualmente abierto («currentRelativeFilePath»)."
        }
      },
      "editor": {
        "editorContextVariable": {
          "description": "Resuelve la información contextual específica del editor.",
          "label": "EditorContext"
        },
        "explainWithAI": {
          "prompt": "Explique este error.",
          "title": "Explique con IA"
        },
        "fixWithAI": {
          "prompt": "Ayuda para solucionar este error"
        }
      },
      "google": {
        "apiKey": {
          "description": "Introduzca una clave API de su cuenta oficial de Google AI (Gemini). **Nota:** al utilizar esta preferencia, la clave API de GOOGLE AI se almacenará en texto sin cifrar en el equipo que ejecuta Theia. Utilice la variable de entorno `GOOGLE_API_KEY` para configurar la clave de forma segura."
        },
        "maxRetriesOnErrors": {
          "description": "Número máximo de reintentos en caso de errores. Si es menor que 1, la lógica de reintento se desactiva."
        },
        "models": {
          "description": "Modelos oficiales de Google Gemini que se utilizarán"
        },
        "retryDelayOnOtherErrors": {
          "description": "Retraso en segundos entre reintentos en caso de otros errores (a veces, Google GenAI informa de errores como sintaxis JSON incompleta devuelta por el modelo o error 500 del servidor interno). Al establecer este valor en -1, se evitan los reintentos en estos casos. De lo contrario, el reintento se produce inmediatamente (si se establece en 0) o tras este retraso en segundos (si se establece en un número positivo)."
        },
        "retryDelayOnRateLimitError": {
          "description": "Retraso en segundos entre reintentos en caso de errores de límite de velocidad. Véase https://ai.google.dev/gemini-api/docs/rate-limits"
        }
      },
      "history": {
        "clear": {
          "tooltip": "Borrar el historial de todos los agentes"
        },
        "edited": "editado",
        "exchange-card": {
          "timestamp": "Iniciado"
        },
        "open-history-tooltip": "Abrir historial de IA...",
        "request-card": {
          "promptVariant": "Variante de solicitud",
          "timestamp": "Marca de tiempo"
        },
        "sortChronologically": {
          "tooltip": "Ordenar cronológicamente"
        },
        "sortReverseChronologically": {
          "tooltip": "Ordenar cronológicamente en orden inverso"
        },
        "toggleCompact": {
          "tooltip": "Mostrar vista compacta"
        },
        "toggleHideNewlines": {
          "tooltip": "Dejar de interpretar saltos de línea"
        },
        "toggleRaw": {
          "tooltip": "Mostrar vista sin formato"
        },
        "toggleRenderNewlines": {
          "tooltip": "Interpretar saltos de línea"
        },
        "view": {
          "label": "Historial del agente de IA",
          "noAgent": "No hay ningún agente disponible.",
          "noAgentSelected": "No se ha seleccionado ningún agente.",
          "noHistoryForAgent": "No hay historial disponible para el agente seleccionado «{0}»."
        }
      },
      "huggingFace": {
        "apiKey": {
          "mdDescription": "Introduzca una clave API para su cuenta Hugging Face. **Nota:** al utilizar esta preferencia, la clave API de Hugging Face se almacenará en texto sin cifrar en el equipo que ejecuta Theia. Utilice la variable de entorno `HUGGINGFACE_API_KEY` para configurar la clave de forma segura."
        },
        "models": {
          "mdDescription": "Modelos de Hugging Face que se van a utilizar. **Nota:** Actualmente solo se admiten los modelos que son compatibles con la API de finalización de chat (modelos ajustados a instrucciones como «*-Instruct»). Es posible que algunos modelos requieran aceptar los términos de la licencia en el sitio web de Hugging Face."
        }
      },
      "ide": {
        "agent-description": "Configure los ajustes del agente de IA, incluyendo la habilitación, la selección de LLM, la personalización de plantillas de prompts y la creación de agentes personalizados en la [Vista de configuración de IA]({0}).",
        "agentConfiguration": {
          "customAgentLocationQuickPick": {
            "placeholder": "Elige dónde crear el archivo agents/<id>/agent.md",
            "title": "Selecciona la ubicación para el nuevo agente personalizado"
          },
          "genericCapabilitiesSettings": "Capacidades genéricas",
          "genericCapabilityType": {
            "agentDelegation": "Delegación de agentes",
            "functions": "Funciones",
            "mcpFunctions": "Funciones de MCP",
            "promptFragments": "Fragmentos de mensajes"
          },
          "newAgent": {
            "createFailed": "No se ha podido crear el agente personalizado «{0}»: {1}",
            "defaultDescription": "Agente personalizado. Edita esta descripción en agent.md.",
            "defaultPrompt": "Eres un agente servicial. Adapta esta indicación a tus necesidades.",
            "idInvalid": "Utiliza únicamente letras, dígitos, guiones, guiones bajos o puntos.",
            "idPrompt": "ID del agente (utilizado como nombre de carpeta en la ruta agents/)",
            "idTitle": "Nuevo agente personalizado",
            "noLocation": "No se puede crear un agente personalizado: no se ha configurado ninguna ubicación para las plantillas de línea de comandos. Configura una carpeta global o del espacio de trabajo para las plantillas de línea de comandos e inténtalo de nuevo."
          },
          "noDescription": "No hay descripción disponible.",
          "resetAllCapabilities": "Restablecer todas las capacidades a sus valores predeterminados",
          "resetAllDefaults": "Restablecer todo a los valores predeterminados",
          "selections": "Selecciones"
        },
        "agentMode": {
          "enabled": {
            "mdDescription": "Habilita el modo agente para el agente Coder. El modo agente permite modificar archivos de forma autónoma sin necesidad de confirmación adicional. Se muestra un cuadro de diálogo de confirmación de primer uso al utilizar el modo agente hasta que se establezca en `true`."
          }
        },
        "agentModeConfirmation": {
          "continueAgentMode": "Continuar con el modo Agente",
          "continueEditMode": "Continuar con el modo de edición",
          "info": "Si continúa en el modo Agente, se guardará su confirmación. Puede revocar esto más adelante mediante la configuración `ai-features.agentMode.enabled`.\n\nSi continúa en el modo Edición, su modo predeterminado cambiará al modo Edición.\n\nPuede cambiar de modo en cualquier momento mediante el selector de modo o en la configuración de IA.",
          "msg": "Este agente utiliza un **modo agéntico**. Para habilitar el flujo autónomo, es capaz de escribir directamente en los archivos de tu espacio de trabajo sin necesidad de confirmación adicional.\n\nSe recomienda utilizar un control de versiones (por ejemplo, Git) para que puedas revisar y revertir los cambios.\n\nPuedes cambiar al **modo de edición** utilizando el selector de modo en el área de entrada del chat que aparece a continuación, o utilizar el agente **Architect** para la planificación en modo de solo lectura.\n\nEsta confirmación se guarda para este espacio de trabajo y no volverá a mostrarse. Para restablecerla o configurarla globalmente, busca `ai-features.agentMode.confirmed` en la configuración.",
          "waiting": "Esperando confirmación..."
        },
        "allowAllMode": {
          "stripTooltip": "Las llamadas a herramientas de IA se ejecutan sin confirmación en esta sesión. Actívalas únicamente en entornos en los que confíes.",
          "stripTooltipFooter": "Se configuran mediante --session-preference. Reinicia sin el indicador para restaurar la configuración guardada.",
          "title": "Modo «Permitir todo» de Theia AI"
        },
        "app-tester": {
          "errorCheckingDevToolsServerStatus": "Comprobación de errores del estado del servidor DevTools MCP: {0}",
          "errorCheckingPlaywrightServerStatus": "Comprobación de errores del estado del servidor Playwright MCP: {0}",
          "startChromeDevToolsMcpServers": {
            "canceled": "Configure el servidor MCP de Chrome DevTools.",
            "error": "No se pudo iniciar el servidor MCP de Chrome DevTools: {0}",
            "progress": "Iniciando el servidor MCP de Chrome DevTools.",
            "question": "El servidor MCP de Chrome DevTools no se está ejecutando. ¿Desea iniciarlo ahora? Esto puede instalar el servidor MCP de Chrome DevTools."
          },
          "startMcpServers": {
            "no": "No, cancelar",
            "yes": "Sí, inicia los servidores."
          },
          "startPlaywrightServers": {
            "canceled": "Configure los servidores MCP de Playwright.",
            "error": "No se pudieron iniciar los servidores MCP de Playwright: {0}",
            "progress": "Inicio de los servidores Playwright MCP.",
            "question": "Los servidores Playwright MCP no se están ejecutando. ¿Desea iniciarlos ahora? Esto puede instalar los servidores Playwright MCP."
          }
        },
        "architectAgent": {
          "mode": {
            "planNext": "Modo Plan (Siguiente)",
            "simple": "Modo simple"
          },
          "suggestion": {
            "executePlanWithCoder": "Ejecutar «{0}» con Coder"
          }
        },
        "browseAllChats": "Explorar todos los chats...",
        "bypassHint": "Algunos agentes como Claude Code no requieren modelos de lenguaje Theia.",
        "chatDisabledMessage": {
          "title": "Las funciones de IA están desactivadas."
        },
        "chatRestrictedMessage": {
          "title": "Las funciones de IA están restringidas"
        },
        "childInteractionNeeded": "Una sesión delegada requiere tu atención",
        "codeReviewerAgent": {
          "description": "Un asistente de revisión de código que analiza los cambios en el código y devuelve veredictos estructurados. Comprueba los criterios de finalización, las pruebas de compilación/lint/pruebas y la calidad del código."
        },
        "coderAgent": {
          "mode": {
            "agentNext": "Modo agente (Siguiente)",
            "edit": "Modo de edición"
          },
          "suggestion": {
            "fixProblems": {
              "content": "[Solucionar problemas]({0}) en el archivo actual.",
              "prompt": "Consulte {1} y solucione cualquier problema."
            },
            "startNewChat": "Mantén los chats breves y centrados. [Inicia un nuevo chat]({0}) para una nueva tarea o [inicia un nuevo chat con un resumen de este]({1})."
          }
        },
        "collapseSession": "Ocultar «{0}»",
        "commandAgent": {
          "commandCallback": {
            "confirmAction": "Entendido.",
            "label": "Comando de IA",
            "message": "Ejecución de la devolución de llamada con argumentos {0}. El primer argumento es el identificador del comando registrado para el comando registrado dinámicamente. Los demás argumentos son los argumentos reales para el controlador."
          },
          "description": "Este agente conoce todos los comandos que el usuario puede ejecutar. En función de la solicitud del usuario, puede encontrar el comando adecuado y permitir que el usuario lo ejecute.",
          "response": {
            "customHandler": "Prueba a ejecutar esto:",
            "noCommand": "Lo siento, no encuentro ese comando.",
            "theiaCommand": "He encontrado este comando que podría serte útil:"
          },
          "vars": {
            "commandIds": {
              "description": "La lista de comandos disponibles."
            }
          }
        },
        "configurationState": "Problemas de configuración",
        "configureAgent": {
          "header": "Configurar un agente predeterminado"
        },
        "continueAnyway": "Continuar de todos modos",
        "createSkillAgent": {
          "mode": {
            "edit": "Modo predeterminado"
          }
        },
        "enableAI": {
          "mdDescription": "Esta configuración le permite acceder a las últimas capacidades de IA.            \n            Es importante tener en cuenta que estas funciones pueden generar            solicitudes continuas a los modelos de lenguaje (LLM) a los que proporciona acceso. Esto podría incurrir en costes que            deberá supervisar de cerca. Al habilitar esta opción, usted reconoce estos riesgos.            \n            **¡Tenga en cuenta que los ajustes que se indican a continuación en esta sección solo surtirán efecto\n            una vez que se haya habilitado el ajuste de la función principal. Después de habilitar la función, debe configurar al menos un            proveedor de LLM a continuación. Consulte también [la documentación](https://theia-ide.org/docs/user_ai/)**."
        },
        "expandSession": "Ver más{0}",
        "exploreAgent": {
          "description": "Un asistente de exploración del código fuente que extrae y sintetiza información del código fuente. Informa sobre lo que existe, proporciona fragmentos de código y describe los patrones observados."
        },
        "github": {
          "configureGitHubServer": {
            "canceled": "Configuración del servidor GitHub cancelada. Configure el servidor GitHub MCP para utilizar este agente.",
            "followup": "Archivo de configuración abierto. Añade tu token de acceso personal de GitHub a la propiedad «serverAuthToken» en la configuración del servidor de GitHub, luego guarda y vuelve a intentarlo.\n\nPuedes crear un token de acceso personal en: https://github.com/settings/tokens",
            "no": "No, cancelar",
            "question": "El servidor MCP de GitHub no está configurado. ¿Desea configurarlo ahora? Esto abrirá el archivo settings.json, donde podrá añadir su token de acceso a GitHub.",
            "yes": "Sí, configurar el servidor GitHub."
          },
          "description": "Este agente le ayuda a interactuar con repositorios, incidencias, solicitudes de extracción y otras funciones de GitHub a través del servidor GitHub MCP. Puede ayudarle a gestionar sus repositorios, crear incidencias, gestionar solicitudes de extracción y realizar diversas operaciones de GitHub.",
          "errorCheckingGitHubServerStatus": "Error al comprobar el estado del servidor GitHub MCP: {0}",
          "startGitHubServer": {
            "canceled": "Inicie el servidor GitHub MCP para utilizar este agente.",
            "error": "No se pudo iniciar el servidor GitHub MCP: {0}",
            "no": "No, cancelar",
            "progress": "Iniciando el servidor GitHub MCP.",
            "question": "El servidor GitHub MCP está configurado, pero no está en funcionamiento. ¿Desea iniciarlo ahora?",
            "yes": "Sí, inicia el servidor."
          }
        },
        "githubCapability": {
          "description": "Permite al agente interactuar con GitHub. Para ello, el agente puede delegar en el agente de GitHub, que puede leer y escribir incidencias, solicitudes de extracción, comentarios y contenidos del repositorio."
        },
        "githubRepoName": {
          "description": "Los repositorios de GitHub asociados a las raíces del espacio de trabajo (por ejemplo, «eclipse-theia/theia»)"
        },
        "howToGetStarted": "Cómo empezar",
        "model-selection-description": "Elija qué modelos de lenguaje grandes (LLM) utiliza cada agente de IA en la [Vista de configuración de IA]({0}).",
        "moreAgentsAvailable": {
          "header": "Hay más agentes disponibles."
        },
        "noRecommendedAgents": "No hay agentes recomendados disponibles.",
        "openSettings": "Abrir configuración de IA",
        "orchestrator": {
          "error": {
            "noAgents": "No hay ningún agente de chat disponible para gestionar la solicitud. Compruebe su configuración para ver si hay alguno habilitado."
          },
          "excludedAgents": {
            "mdDescription": "Lista de ID de agentes a los que el orquestador no puede delegar. Estos agentes no serán visibles para el orquestador cuando seleccione un agente para gestionar una solicitud."
          },
          "progressMessage": "Determinación del agente más adecuado",
          "response": {
            "delegatingToAgent": "Delegar a «@{0}»"
          }
        },
        "prReview": {
          "capability": {
            "codebaseExploration": {
              "description": "Delega la exploración de la arquitectura, el uso, las convenciones y las pruebas al agente Explore. Cuando está desactivado, el revisor de PR realiza la exploración con sus propias herramientas.",
              "name": "Exploración delegada"
            },
            "githubInfo": {
              "description": "Delega en el agente de GitHub la recuperación de metadatos de solicitudes de incorporación de cambios, diferencias, comentarios, comprobaciones y incidencias vinculadas.",
              "name": "Información de GH PR"
            },
            "localCheckout": {
              "description": "Extrae la solicitud de incorporación de cambios localmente y protege los cambios existentes en el árbol de trabajo.",
              "name": "Finalizar compra"
            },
            "localValidation": {
              "description": "Ejecuta tareas locales de instalación, compilación, lint, prueba o validación similar para la solicitud de incorporación de cambios.",
              "name": "Compilar"
            },
            "pendingGitHubReview": {
              "description": "Delega en el agente de GitHub la creación o actualización de una revisión de solicitud de incorporación de cambios pendiente con comentarios en línea preparados tras la confirmación explícita del usuario.",
              "name": "Pendiente de revisión de GH"
            }
          }
        },
        "prReviewAgent": {
          "description": "Un agente de revisión de PR impulsado por IA que coordina un flujo de trabajo completo de revisión de código: recupera información de PR, explora el código base, realiza análisis estructurados, guía al usuario de forma interactiva a través de los resultados con visores de diferencias y, opcionalmente, crea una revisión pendiente en GitHub."
        },
        "prompt-template-description": "Seleccione variantes de solicitud y personalice plantillas de solicitud para agentes de IA en la [Vista de configuración de IA]({0}).",
        "requiresApproval": "Requiere tu aprobación",
        "restoredSession": "Sesión restaurada",
        "restrictedModeDetails": "El chat de IA, las sugerencias en línea, las acciones de código y las plantillas de indicaciones están desactivadas",
        "restrictedModeLabel": "Funciones de IA (desactivadas en el modo restringido)",
        "sectionRestored": "Restaurado",
        "sessionOverride": {
          "defaultToolConfirmation": "Confirmación predeterminada de la herramienta: {0}",
          "toolConfirmation": "Anulaciones de confirmación por herramienta: {0}",
          "toolConfirmationGeneric": "Configuración de anulaciones de confirmación por herramienta"
        },
        "shellAllowlist": {
          "placeholder": "Por ejemplo, «git log» (exacto) o «git log *» (con argumentos)."
        },
        "shellDenylist": {
          "placeholder": "Por ejemplo, «git push *» o «rm -rf /»."
        },
        "shellExecutionCapability": {
          "description": "Permite al agente ejecutar comandos de shell arbitrarios en el sistema host. El agente puede entonces delegar la ejecución de scripts que no están disponibles como tareas, consultar información del sistema y realizar operaciones para las que no existe una herramienta específica.",
          "name": "Ejecución de shell"
        },
        "skillsConfiguration": {
          "noSkills": "No hay habilidades disponibles.",
          "noSlashCommands": "No hay comandos de barra disponibles.",
          "slashCommand": {
            "allAgents": "Todos los agentes"
          },
          "slashCommandsSectionHeader": "Comandos de barra"
        },
        "toolConfirmationInfo": {
          "header": "Confirmación de la herramienta"
        },
        "toolConfirmationOverrides": {
          "stripTooltip": "Una o varias herramientas de IA se aprueban automáticamente para esta sesión mediante opciones de la línea de comandos.",
          "title": "Anulaciones de la confirmación de la herramienta de IA"
        },
        "toolsConfiguration": {
          "confirmAlwaysAllow": {
            "confirm": "Entendido, habilitar la aprobación automática.",
            "genericWarning": "Esta herramienta requiere confirmación antes de que se pueda habilitar la aprobación automática. Una vez habilitada, todas las invocaciones futuras se ejecutarán sin confirmación. Habilítela solo si confía en esta herramienta y comprende los riesgos potenciales.",
            "title": "¿Habilitar la aprobación automática para «{0}»?"
          },
          "confirmationMode": {
            "label": "Modo de confirmación"
          },
          "default": {
            "label": "Modo de confirmación de herramienta predeterminado:"
          },
          "recommendedDefaults": {
            "apply": "Permitir herramientas predeterminadas",
            "dialogConfirm": "Entendido, aceptar",
            "dialogTitle": "¿Permitir herramientas predeterminadas?",
            "message": "Actualmente, las llamadas a herramientas requieren aprobación. Acepta automáticamente todas las herramientas integradas de una sola vez. Las herramientas que requieran una confirmación adicional (por ejemplo, la ejecución del shell), las herramientas MCP y cualquier herramienta que se añada posteriormente seguirán solicitando confirmación antes de ejecutarse.",
            "msg": {
              "line1": "Esto configura todas las herramientas integradas registradas actualmente en «Permitir siempre».",
              "line2": "Las herramientas que requieran una confirmación adicional (como la ejecución en el shell) seguirán solicitándola antes de ejecutarse.",
              "line3": "Las herramientas MCP son de terceros y no están incluidas. Puedes autorizarlas individualmente en esta vista.",
              "line4": "Las herramientas que se añadan más adelante seguirán mostrando por defecto «Confirmar» para que puedas revisarlas.",
              "line5": "Puedes cambiarlo más adelante en esta vista."
            }
          },
          "resetAll": "Restablecer todo",
          "resetAllConfirmDialog": {
            "msg": "¿Está seguro de que desea restablecer todos los modos de confirmación de herramientas a los valores predeterminados? Esto eliminará todos los ajustes personalizados.",
            "title": "Restablecer todos los modos de confirmación de herramientas"
          },
          "resetAllTooltip": "Restablecer todas las herramientas a los valores predeterminados",
          "shellAllowlist": {
            "description": "Los comandos que coincidan con estos patrones se permitirán automáticamente sin necesidad de confirmación. Utilice * como comodín: «git log» (coincidencia exacta), «git log *» (con cualquier argumento). El comodín debe ir precedido de un espacio.",
            "empty": "No hay patrones configurados. Todos los comandos de shell requerirán confirmación.",
            "title": "Lista de permitidos de Shell Execute"
          },
          "shellDenylist": {
            "description": "Los comandos que coincidan con estos patrones se denegarán automáticamente sin confirmación. Utilícelo para bloquear comandos peligrosos como «git push *» o «rm -rf /».",
            "empty": "No hay patrones configurados. No se denegará automáticamente ningún comando de shell.",
            "title": "Lista de denegados de ejecución de Shell"
          },
          "toolOptions": {
            "confirm": {
              "label": "Confirmar"
            }
          }
        },
        "tooltip": {
          "errorMessage": "Mensaje de error",
          "lastActivity": "Última actividad",
          "lastMessage": "Último mensaje",
          "multipleExchanges": "{0} intercambios",
          "oneExchange": "1 intercambio",
          "unread": "No leído"
        },
        "variableConfiguration": {
          "selectVariable": "Seleccione una variable.",
          "usedByAgents": "Utilizado por los agentes."
        },
        "waitingForInput": "A la espera de tu entrada"
      },
      "llamaFile": {
        "prefs": {
          "mdDescription": "Esta configuración le permite configurar y gestionar modelos LlamaFile en Theia IDE.            \n            Cada entrada requiere un «nombre» fácil de usar, el «uri» del archivo que apunta a su LlamaFile y el «puerto» en el que se ejecutará.            \n            Para iniciar un LlamaFile, utilice el comando «Iniciar LlamaFile», que le permite seleccionar el modelo deseado.            \n            Si edita una entrada (por ejemplo, cambia el puerto), cualquier instancia en ejecución se detendrá y deberá volver a iniciarla manualmente.            \n            [Más información sobre la configuración y gestión de LlamaFiles en la documentación de Theia IDE](https://theia-ide.org/docs/user_ai/#llamafile-models).",
          "name": {
            "description": "El nombre del modelo que se utilizará para este Llamafile."
          },
          "port": {
            "description": "El puerto que se utilizará para iniciar el servidor."
          },
          "title": "AI LlamaFile",
          "uri": {
            "description": "El URI del archivo Llamafile."
          }
        },
        "start": "Start Llamafile",
        "stop": "Stop Llamafile"
      },
      "llamafile": {
        "error": {
          "noConfigured": "No hay Llamafiles configurados.",
          "noRunning": "No Llamafiles running.",
          "startFailed": "Se ha producido un error durante el inicio de llamafile: {0}.\nPara obtener más información, consulte la consola.",
          "stopFailed": "Se ha producido un error durante la detención de llamafile: {0}.\nPara obtener más información, consulte la consola."
        }
      },
      "mcp": {
        "blockedServersLabel": "Servidores MCP (inicio automático bloqueado)",
        "error": {
          "allServersRunning": "Todos los servidores MCP ya están en funcionamiento.",
          "authenticationRequired": "El servidor MCP «{0}» requiere autenticación. Reinicia el servidor para iniciar sesión.",
          "getRedirectUrlFailed": "Se ha producido un error al determinar la URL de redireccionamiento de OAuth de MCP.",
          "noOAuthServersConfigured": "No hay ningún servidor MCP configurado con OAuth habilitado.",
          "noRunningServers": "No hay servidores MCP en ejecución.",
          "noServersConfigured": "No hay servidores MCP configurados.",
          "oauthRequiresTrustedWorkspace": "Para iniciar servidores MCP compatibles con OAuth se requiere un espacio de trabajo de confianza.",
          "signInFailed": "Se ha producido un error al iniciar sesión en el servidor MCP.",
          "signOutFailed": "Se ha producido un error al cerrar sesión en el servidor MCP.",
          "startFailed": "Se ha producido un error al iniciar el servidor MCP.",
          "stopFailed": "Se ha producido un error al detener el servidor MCP."
        },
        "getRedirectUrl": {
          "label": "MCP: Obtener la URL de redireccionamiento de OAuth de MCP"
        },
        "info": {
          "oauthRedirectUrl": "URL de redireccionamiento de OAuth de MCP: {0}",
          "serverSignedIn": "Inicio de sesión en el servidor MCP «{0}».",
          "serverSignedOut": "Se ha cerrado la sesión en el servidor MCP «{0}».",
          "serverStarted": "El servidor MCP «{0}» se ha iniciado correctamente. Herramientas registradas: {1}",
          "signInCancelled": "Se ha cancelado el inicio de sesión en el servidor MCP «{0}»."
        },
        "oauth": {
          "completeSignInInBrowser": "Completa el inicio de sesión MCP OAuth en tu navegador. Si no se ha abierto ninguna pestaña de inicio de sesión, es posible que tu navegador haya bloqueado la ventana emergente.",
          "notification": {
            "signInPrompt": "El servidor MCP «{0}» requiere autorización para iniciarse."
          }
        },
        "servers": {
          "args": {
            "mdDescription": "Una serie de argumentos que se pasan al comando.",
            "title": "Argumentos para el comando"
          },
          "autostart": {
            "mdDescription": "Iniciar automáticamente este servidor cuando se inicie la interfaz. Los servidores recién añadidos no se inician automáticamente de inmediato, sino al reiniciar.",
            "title": "Inicio automático"
          },
          "command": {
            "mdDescription": "El comando utilizado para iniciar el servidor MCP, por ejemplo, «uvx» o «npx».",
            "title": "Comando para ejecutar el servidor MCP."
          },
          "deferLoading": {
            "mdDescription": "Si se habilitan, las herramientas proporcionadas por este servidor se marcan como diferidas en el fragmento de indicador generado `mcp_<servidor>_tools`. Las herramientas diferidas no se cargan por adelantado en el contexto del modelo. En su lugar, el modelo las descubre bajo demanda a través del mecanismo de búsqueda de herramientas integrado del proveedor (Anthropic, OpenAI), cuando sea compatible. Esto reduce significativamente la sobrecarga de tokens para los servidores que exponen muchas herramientas.",
            "title": "Aplazar la carga"
          },
          "env": {
            "mdDescription": "Variables de entorno opcionales que se pueden configurar para el servidor, como una clave API.",
            "title": "Variables de entorno"
          },
          "headers": {
            "mdDescription": "Encabezados adicionales opcionales incluidos en cada solicitud al servidor. Los valores de los encabezados se almacenan en las preferencias como texto sin formato; evita utilizar la configuración del espacio de trabajo si contiene valores confidenciales."
          },
          "mdDescription": "Configura los servidores MCP, ya sea de forma local mediante comandos, argumentos y, opcionalmente, variables de entorno, o de forma remota mediante la URL del servidor, el token de autenticación, la configuración de OAuth y, opcionalmente, un nombre de encabezado de autenticación. Además, es posible configurar el inicio automático (activado por defecto). Cada servidor se identifica mediante una clave única, como «brave-search» o «filesystem». Para iniciar un servidor, utiliza el comando «MCP: Start MCP Server», que te permite seleccionar el servidor deseado. Para detener un servidor, utiliza el comando «MCP: Stop MCP Server». Ten en cuenta que el inicio automático solo surtirá efecto tras un reinicio; la primera vez deberás iniciar el servidor manualmente. Los servidores instalados desde un registro de IA incluyen un bloque adicional `registryMetadata` que se gestiona automáticamente y no está pensado para ser editado manualmente.\nEjemplo de configuración:\n```{\n  \"brave-search\": {\n    \"command\": \"npx\",\n    \"args\": [\n      \"-y\",\n      \"@modelcontextprotocol/server-brave-search\"\n    ],\n    \"env\": {\n      \"BRAVE_API_KEY\": \"TU_CLAVE_API\"\n    },\n  },\n  \"filesystem\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/Users/TU_NOMBRE_DE_USUARIO/Desktop\"],\n    \"env\": {\n      \"CUSTOM_ENV_VAR\": \"valor-personalizado\"\n    },\n    \"autostart\": false\n  },\n  \"jira\": {\n    \"serverUrl\": \"TU_URL_DEL_SERVIDOR_JIRA_MCP\",\n    \"serverAuthToken\": \"TU_TOKEN_DEL_SERVIDOR_JIRA_MCP\"\n  },\n  \"oauth-protected-server\": {\n    \"serverUrl\": \"TU_URL_DEL_SERVIDOR_MCP_PROTEGIDO_POR_OAUTH\",\n    \"oauth\": {\n      \"clientId\": \"ID_DE_CLIENTE_OPCIONAL\",\n      \"scopes\": [\"ÁMBITO_OPCIONAL\"]\n    }\n  }\n  }\n```",
          "oauth": {
            "authorizationServer": {
              "mdDescription": "Sustitución opcional de la URL del servidor de autorización. Si se omite, Theia la obtiene del servidor MCP.",
              "title": "Servidor de autorización"
            },
            "clientId": {
              "mdDescription": "ID de cliente OAuth estático opcional. Si se omite, Theia intenta realizar un registro dinámico del cliente.",
              "title": "ID de cliente"
            },
            "clientSecret": {
              "mdDescription": "Secreto de cliente OAuth opcional para servidores de autorización que solo aceptan clientes confidenciales prerregistrados (sin registro dinámico de clientes). Solo se utiliza junto con el ID de cliente. Se almacena en las preferencias como texto sin cifrar; evita utilizar la configuración del espacio de trabajo si el secreto es confidencial.",
              "title": "Secreto de cliente"
            },
            "mdDescription": "Configuración opcional de OAuth 2.1 para servidores MCP remotos que requieren autorización. La presencia de este objeto habilita OAuth para el servidor; elimínalo para deshabilitar OAuth. Theia utiliza clientes públicos con PKCE de forma predeterminada; configura un secreto de cliente solo para servidores que requieran un cliente confidencial prerregistrado. Los cambios surtirán efecto tras reiniciar el servidor MCP.",
            "resource": {
              "mdDescription": "Anulación opcional del indicador de recursos RFC 8707 para este servidor MCP.",
              "title": "Recurso"
            },
            "scopes": {
              "mdDescription": "Ámbitos OAuth opcionales que se pueden solicitar si el servidor no anuncia ningún ámbito.",
              "title": "Ámbitos"
            },
            "title": "OAuth"
          },
          "registryMetadata": {
            "configHash": {
              "mdDescription": "Hash del contenido de la autorización del registro utilizada para instalar este servidor.",
              "title": "Hash de configuración del Registro"
            },
            "mdDescription": "Metadatos de procedencia para un servidor instalado desde un registro de IA. Escrito por `@theia/ai-registry`; no editable por el usuario.",
            "serverId": {
              "mdDescription": "Identifica la entrada del registro de IA desde la que se instaló este servidor.",
              "title": "ID del servidor de registro"
            },
            "title": "Metadatos del Registro",
            "version": {
              "mdDescription": "La versión publicada en el registro registrada en el momento de la instalación.",
              "title": "Versión del Registro"
            }
          },
          "serverAuthToken": {
            "mdDescription": "El token de autenticación para el servidor, si es necesario. Este se almacena en las preferencias como texto sin formato; evita utilizar la configuración del espacio de trabajo si el token es confidencial.",
            "title": "Token de autenticación"
          },
          "serverAuthTokenHeader": {
            "mdDescription": "El nombre del encabezado que se utilizará para el token de autenticación del servidor. Si no se proporciona, se utilizará «Autorización» con «Portador».",
            "title": "Nombre del encabezado de autenticación"
          },
          "serverUrl": {
            "mdDescription": "La URL del servidor MCP remoto. Si se proporciona, el servidor se conectará a esta URL en lugar de iniciar un proceso local.",
            "title": "URL del servidor"
          },
          "title": "Configuración del servidor MCP"
        },
        "signin": {
          "label": "MCP: Iniciar sesión en el servidor MCP"
        },
        "signout": {
          "label": "MCP: Cerrar sesión del servidor MCP"
        },
        "start": {
          "label": "MCP: Iniciar el servidor MCP"
        },
        "stop": {
          "label": "MCP: Detener servidor MCP"
        },
        "useWorkspaceAsRoot": {
          "mdDescription": "Las raíces definen los límites de donde los servidores pueden operar dentro del sistema de archivos. Si se habilita, las carpetas del espacio de trabajo se utilizarán como raíces; de lo contrario, los servidores MCP tendrán acceso a todo el sistema de archivos. Al cambiar esta configuración, se reiniciarán todos los servidores MCP en ejecución para aplicar la nueva configuración de raíces.",
          "title": "Usar el espacio de trabajo como raíz"
        },
        "warn": {
          "serverPreferenceChangeFailed": "No se han podido aplicar los cambios en las preferencias del servidor MCP: {0}",
          "signInNotCompleted": "No se ha completado el inicio de sesión en el servidor MCP «{0}»."
        }
      },
      "mcpConfiguration": {
        "autostart": "Inicio automático",
        "browseAIRegistry": "Explorar el registro de IA",
        "browseAIRegistryTooltip": "Abre la vista «Extensiones» para explorar las entradas del registro de IA",
        "command": {
          "addServer": "Añadir configuración MCP local..."
        },
        "copiedAllList": "Se han copiado todas las herramientas al portapapeles (lista de todas las herramientas).",
        "copiedAllSingle": "Se han copiado todas las herramientas al portapapeles (fragmento de un solo comando con todas las herramientas).",
        "copiedForPromptTemplate": "Se han copiado todas las herramientas al portapapeles para la plantilla de solicitud (fragmento de solicitud único con todas las herramientas).",
        "copyAllList": "Copiar todo (lista de todas las herramientas)",
        "copyAllSingle": "Copiar todo para el chat (fragmento de un solo comando con todas las herramientas)",
        "copyForPrompt": "Herramienta de copia (para chat o plantilla de solicitud)",
        "copyForPromptTemplate": "Copiar todo para la plantilla de solicitud (fragmento de solicitud único con todas las herramientas)",
        "deferLoading": "Aplazar la carga de herramientas",
        "deleteServer": "Eliminar servidor",
        "deleteServerDialogMsg": "¿Está seguro de que desea eliminar el servidor «{0}»?",
        "deleteServerDialogTitle": "Eliminar servidor MCP",
        "deleteServerError": "No se ha podido eliminar el servidor MCP: {0}",
        "editServer": "Servidor de edición",
        "editServerTitle": "Editar servidor MCP",
        "environmentVariables": "Variables de entorno",
        "form": {
          "argsPlaceholder": "Separados por espacios, por ejemplo, -y @modelcontextprotocol/server-brave-search",
          "authHeaderPlaceholder": "Predeterminado: Autorización con portador.",
          "authTokenPlaceholder": "Token de autenticación opcional",
          "autostart": "Inicio automático",
          "commandPlaceholder": "Por ejemplo, npx o uvx.",
          "commandRequired": "Se requiere un comando para los servidores locales.",
          "deferLoading": "Aplazar la carga de herramientas (descubrir herramientas bajo demanda a través de la búsqueda de herramientas del proveedor)",
          "envPlaceholder": "KEY=valor (uno por línea)",
          "headersPlaceholder": "Nombre-de-encabezado=valor (uno por línea)",
          "localServer": "Local (Comando)",
          "nameExists": "Ya existe un servidor con este nombre.",
          "nameRequired": "Se requiere el nombre del servidor.",
          "oauthAuthorizationServerInvalid": "El servidor de autorización OAuth debe ser una URL http(s) válida.",
          "oauthAuthorizationServerPlaceholder": "URL opcional del servidor de autorización",
          "oauthClientIdPlaceholder": "ID de cliente estático opcional",
          "oauthClientSecretPlaceholder": "Solo para servidores que requieran un cliente confidencial",
          "oauthPublicClientDescription": "Theia utiliza por defecto clientes OAuth públicos con PKCE. Proporciona un secreto de cliente solo si el servidor requiere un cliente confidencial prerregistrado.",
          "oauthRedirectUrlDescription": "Las respuestas de autorización se envían a esta URL. Si dispones de un ID de cliente estático, regístralo como URI de redireccionamiento con tu proveedor de OAuth.",
          "oauthResourceInvalid": "El recurso OAuth debe ser una URL http(s) válida.",
          "oauthResourcePlaceholder": "URI de recurso opcional",
          "oauthScopesPlaceholder": "Ámbitos separados por espacios",
          "oauthSharedCredentialsDescription": "Las sesiones OAuth almacenadas se comparten entre los espacios de trabajo que utilizan el mismo nombre de servidor y la misma URL (o recurso).",
          "remoteOAuthServer": "Remoto (OAuth)",
          "remoteServer": "Remoto (URL)",
          "saveChanges": "Guardar cambios",
          "serverName": "Nombre del servidor",
          "serverNamePlaceholder": "Por ejemplo, my-mcp-server.",
          "serverUrlPlaceholder": "Por ejemplo, https://mcp.example.com",
          "serverUrlRequired": "Se requiere la URL del servidor para servidores remotos."
        },
        "fromRegistryLink": "Del registro",
        "oauth": "OAuth",
        "oauthAuthorizationServer": "Servidor de autorización",
        "oauthClientId": "ID de cliente de OAuth",
        "oauthClientSecret": "Secreto de cliente OAuth",
        "oauthRedirectUrl": "URL de redireccionamiento",
        "oauthResource": "Recurso OAuth",
        "oauthScopes": "Ámbitos de OAuth",
        "openInRegistry": "Abrir en el registro de IA: {0}",
        "saveServerError": "No se ha podido guardar la configuración del servidor MCP: {0}",
        "serverAuthToken": "Token de autenticación",
        "serverAuthTokenHeader": "Nombre del encabezado de autenticación",
        "serverUrl": "URL del servidor",
        "signInServerFailed": "No se ha podido iniciar sesión en el servidor MCP «{0}».",
        "signInServerNotCompleted": "No se ha completado el inicio de sesión en el servidor MCP «{0}».",
        "signInServerSucceeded": "Inicio de sesión en el servidor MCP «{0}».",
        "signOutServerDialogMsg": "¿Estás seguro de que quieres cerrar sesión en el servidor «{0}»? Esto eliminará los tokens OAuth almacenados para este servidor.",
        "signOutServerDialogTitle": "Cerrar sesión en el servidor MCP",
        "signOutServerFailed": "No se ha podido cerrar sesión en el servidor MCP «{0}».",
        "startServerFailed": "No se ha podido iniciar el servidor MCP «{0}».",
        "stopServerFailed": "No se ha podido detener el servidor MCP «{0}».",
        "tools": "Herramientas: "
      },
      "openai": {
        "apiKey": {
          "mdDescription": "Introduzca una clave API de su cuenta oficial de OpenAI. **Nota:** al utilizar esta preferencia, la clave API de Open AI se almacenará en texto sin cifrar en el equipo que ejecuta Theia. Utilice la variable de entorno `OPENAI_API_KEY` para configurar la clave de forma segura."
        },
        "compaction": {
          "default": "Sigue la configuración global de compactación del chat del lado del servidor.",
          "description": "Anula la compactación nativa del proveedor en el lado del servidor para los modelos oficiales de OpenAI. Esto se aplica únicamente a la API de respuesta de OpenAI; la API de autocompletado de chat lo ignora. «default» sigue la configuración global del chat ({0}). Cuando está efectivamente habilitado, se solicita a la API de respuesta que resuma los turnos más antiguos una vez que la conversación supera el umbral del proveedor.",
          "disabled": "Nunca solicites la compactación del lado del servidor para los modelos oficiales de OpenAI.",
          "enabled": "Solicita siempre la compactación del lado del servidor para los modelos oficiales de OpenAI."
        },
        "compactionTokenThreshold": {
          "description": "Anula el umbral global de tokens de entrada para la compactación del lado del servidor en los modelos oficiales de OpenAI. Si no se establece, se aplica la configuración global o el valor predeterminado del proveedor. Si se establece, el valor debe ser de al menos 50 000 tokens."
        },
        "customEndpoints": {
          "apiKey": {
            "title": "La clave para acceder a la API que se sirve en la URL dada o «true» para utilizar la clave API global de OpenAI."
          },
          "apiVersion": {
            "title": "La versión para acceder a la API servida en la URL dada en Azure o «true» para utilizar la versión global de la API de OpenAI."
          },
          "deployment": {
            "title": "El nombre de implementación para acceder a la API que se sirve en la URL dada en Azure."
          },
          "developerMessageSettings": {
            "title": "Controla el manejo de los mensajes del sistema: «user», «system» y «developer» se utilizarán como función, «mergeWithFollowingUserMessage» antepondrá el mensaje del sistema al siguiente mensaje del usuario o convertirá el mensaje del sistema en mensaje del usuario si el siguiente mensaje no es un mensaje del usuario. «skip» simplemente eliminará el mensaje del sistema, siendo «developer» el valor predeterminado."
          },
          "enableStreaming": {
            "title": "Indica si se debe utilizar la API de streaming. Por defecto es «true»."
          },
          "id": {
            "title": "Identificador único que se utiliza en la interfaz de usuario para identificar el modelo personalizado."
          },
          "mdDescription": "Integra modelos personalizados compatibles con la API de OpenAI, por ejemplo, a través de `vllm`. Los atributos obligatorios son `model` y `url`.            \n            Opcionalmente, puedes            \n            - especificar un `id` único para identificar el modelo personalizado en la interfaz de usuario. Si no se proporciona ninguno, se utilizará `model` como `id`.            \n            - proporcionar una `apiKey` para acceder a la API servida en la URL indicada. Utilice `true` para indicar el uso de la clave global de la API de OpenAI.            \n            - proporcionar una `apiVersion` para acceder a la API servida en la URL indicada en Azure. Utilice `true` para indicar el uso de la versión global de la API de OpenAI.            \n            - proporcione un nombre de `deployment` para su implementación de Azure.            \n            - establezca `developerMessageSettings` en uno de los siguientes valores: `user`, `system`, `developer`, `mergeWithFollowingUserMessage` o `skip` para controlar cómo se incluye el mensaje del desarrollador (donde «user», «system» y «developer» se utilizarán como un rol; «mergeWithFollowingUserMessage» antepondrá el mensaje del sistema al siguiente mensaje de usuario o convertirá el mensaje del sistema en un mensaje de usuario si el siguiente mensaje no es un mensaje de usuario; «skip» simplemente eliminará el mensaje del sistema). El valor predeterminado es «developer».            \n            - Especifique `supportsStructuredOutput: false` para indicar que no se utilizará la salida estructurada.            \n            - Especifique `enableStreaming: false` para indicar que no se utilizará la transmisión.            \n            - Especifique `useResponseApi: true` para utilizar la API de respuesta de OpenAI más reciente en lugar de la API de finalización de chat (requiere un punto final compatible).            \n            - Especifique `reasoningSupport` para activar el selector de razonamiento del chat. Proporcione un objeto con `supportedLevels` (por ejemplo, `[\"off\", \"low\", \"medium\", \"high\", \"auto\"]`) y un `defaultLevel` opcional.            \n            Consulte [nuestra documentación](https://theia-ide.org/docs/user_ai/#openai-compatible-models-eg-via-vllm) para obtener más información.",
          "modelId": {
            "title": "ID del modelo"
          },
          "reasoningSupport": {
            "title": "Declara las capacidades de razonamiento del modelo. Cuando se activa, el chat muestra un selector de razonamiento para este modelo."
          },
          "supportsStructuredOutput": {
            "title": "Indica si el modelo admite salida estructurada. Por defecto es «true»."
          },
          "url": {
            "title": "El punto final compatible con la API de Open AI donde se aloja el modelo."
          },
          "useResponseApi": {
            "title": "Utilice la nueva API de respuesta de OpenAI en lugar de la API de finalización de chat. `false` de forma predeterminada para proveedores personalizados. Nota: Se volverá automáticamente a la API de finalización de chat cuando se utilicen herramientas."
          }
        },
        "models": {
          "description": "Modelos oficiales de OpenAI que se utilizarán."
        },
        "useResponseApi": {
          "mdDescription": "Utiliza la API OpenAI Response más reciente en lugar de la API Chat Completion para los modelos oficiales de OpenAI. Esta configuración solo se aplica a los modelos oficiales de OpenAI; los proveedores personalizados deben configurarla de forma individual."
        }
      },
      "promptTemplates": {
        "directories": {
          "description": "Lista de rutas relativas que indican las carpetas del espacio de trabajo actual que se van a analizar en busca de plantillas de solicitud específicas de WORKSPACE. Cuando existen plantillas con el mismo ID (nombre de archivo) en varias ubicaciones, los conflictos se resuelven por prioridad: archivos de plantilla específicos (máxima) > directorios del espacio de trabajo > directorios globales (mínima).",
          "title": "Directorios de plantillas de comandos específicos del espacio de trabajo"
        },
        "extensions": {
          "description": "Lista de extensiones de archivo adicionales en ubicaciones de solicitud que se consideran plantillas de solicitud. «.prompttemplate» siempre se considera como valor predeterminado.",
          "title": "Extensiones de archivo de plantilla de solicitud adicionales"
        },
        "files": {
          "description": "Lista de rutas relativas a archivos específicos del espacio de trabajo actual que se utilizarán como plantillas de solicitud. Cuando existen plantillas con el mismo ID (nombre de archivo) en varias ubicaciones, los conflictos se resuelven por prioridad: archivos de plantilla específicos (máxima) > directorios del espacio de trabajo > directorios globales (mínima).",
          "title": "Archivos de plantilla de solicitud específicos del espacio de trabajo"
        }
      },
      "scanoss": {
        "changeSet": {
          "clean": "Sin coincidencias",
          "error": "Error: Volver a ejecutar",
          "error-notification": "Error de ScanOSS detectado: {0}.",
          "match": "Ver coincidencias",
          "scan": "Escanear",
          "scanning": "Escaneando..."
        },
        "mode": {
          "automatic": {
            "description": "Habilitar el escaneo automático de fragmentos de código en las vistas de chat."
          },
          "description": "Configure la función SCANOSS para analizar fragmentos de código en las vistas de chat. Esto enviará un hash de los fragmentos de código sugeridos al servicio SCANOSS\nalojado por la [Fundación para la Transparencia del Software](https://www.softwaretransparency.org/osskb) para su análisis.",
          "manual": {
            "description": "El usuario puede activar manualmente el escaneo haciendo clic en el elemento SCANOSS en la vista de chat."
          },
          "off": {
            "description": "La función está completamente desactivada."
          }
        },
        "snippet": {
          "dialog-header": "Resultados de ScanOSS",
          "errored": "SCANOSS - Error - {0}",
          "file-name-heading": "Coincidencia encontrada en {0}",
          "in-progress": "SCANOSS: realizando escaneo...",
          "match-count": "Se han encontrado coincidencias c {0}.",
          "matched": "SCANOSS: coincidencia encontrada en {0}",
          "no-match": "SCANOSS: sin coincidencias."
        }
      },
      "session-settings-dialog": {
        "advancedSettings": "Configuración avanzada (JSON)",
        "compactionHeader": "Compactación del lado del servidor",
        "compactionLabel": "Compactación:",
        "compactionNote": "Anula la configuración de compactación global y por proveedor para esta sesión. Se aplica únicamente a los proveedores que admiten la compactación del lado del servidor.",
        "compactionTokenThreshold": "Umbral de tokens:",
        "confirmationTimeout": "Tiempo de espera de confirmación",
        "confirmationTimeoutNote": "Rechaza automáticamente las confirmaciones de la herramienta tras el tiempo especificado. Anula la preferencia global para esta sesión.",
        "enableConfirmationTimeout": "Habilitar tiempo de espera de confirmación",
        "timeoutSeconds": "Tiempo de espera (segundos):",
        "title": "Configurar los ajustes de sesión",
        "tooltip": "Configurar los ajustes de sesión"
      },
      "terminal": {
        "agent": {
          "description": "Este agente proporciona asistencia para escribir y ejecutar comandos de terminal arbitrarios. Basándose en la solicitud del usuario, sugiere comandos y permite al usuario pegarlos y ejecutarlos directamente en la terminal. Accede al directorio actual, al entorno y a la salida reciente de la sesión de terminal para proporcionar asistencia contextual.",
          "vars": {
            "cwd": {
              "description": "El directorio de trabajo actual."
            },
            "recentTerminalContents": {
              "description": "Las últimas 0 a 50 líneas recientes visibles en el terminal."
            },
            "shell": {
              "description": "El shell que se utiliza, por ejemplo, /usr/bin/zsh."
            },
            "userRequest": {
              "description": "Pregunta o solicitud del usuario."
            }
          }
        },
        "askAi": "Preguntar a la IA",
        "askTerminalCommand": "Pregunta sobre un comando de terminal...",
        "hitEnterConfirm": "Pulse Intro para confirmar.",
        "howCanIHelp": "¿En qué puedo ayudarle?",
        "terminalCommandBlockAIVariable": {
          "description": "Almacena un comando de terminal ejecutado y su salida correspondiente.",
          "index": {
            "description": "Índice del bloque de comandos en el historial del terminal. Si no se especifica, el valor predeterminado es el último comando."
          },
          "quickPick": {
            "placeholder": "Escriba para filtrar comandos",
            "title": "Selecciona un comando y su resultado del historial del terminal"
          }
        },
        "tryAgain": "Inténtalo de nuevo...",
        "useArrowsAlternatives": " o utilice ⇅ para mostrar alternativas..."
      },
      "tokenUsage": {
        "cachedInputTokens": "Tokens de entrada escritos en la caché",
        "cachedInputTokensTooltip": "Se rastrean adicionalmente a los «tokens de entrada». Suelen ser más caros que los tokens sin caché.",
        "failedToGetTokenUsageData": "No se han podido recuperar los datos de uso de tokens: {0}",
        "inputTokens": "Tokens de entrada",
        "label": "Uso de tokens",
        "lastUsed": "Último uso",
        "noData": "Aún no hay datos disponibles sobre el uso de tokens.",
        "note": "El uso de tokens se registra desde el inicio de la aplicación y no se conserva.",
        "outputTokens": "Tokens de salida",
        "readCachedInputTokens": "Tokens de entrada leídos desde la caché",
        "readCachedInputTokensTooltip": "Se rastrea adicionalmente a «Input Token». Suele ser mucho menos costoso que sin caché. Por lo general, no cuenta para los límites de velocidad.",
        "totalTokensTooltip": "«Tokens de entrada» + «Tokens de salida»"
      },
      "vercelai": {
        "anthropicApiKey": {
          "mdDescription": "Introduzca una clave API para los modelos Anthropic utilizados por el SDK de IA de Vercel. **Nota:** al utilizar esta preferencia, la clave API se almacenará en texto sin cifrar en el equipo que ejecuta Theia. Utilice la variable de entorno `ANTHROPIC_API_KEY` para configurar la clave de forma segura."
        },
        "customEndpoints": {
          "apiKey": {
            "title": "La clave para acceder a la API que se sirve en la URL dada o «true» para utilizar la clave API global."
          },
          "enableStreaming": {
            "title": "Indica si se debe utilizar la API de streaming. Por defecto es «true»."
          },
          "id": {
            "title": "Identificador único que se utiliza en la interfaz de usuario para identificar el modelo personalizado."
          },
          "mdDescription": "Integra modelos personalizados compatibles con el SDK de IA de Vercel. Los atributos necesarios son «model» y «url».            \n            Opcionalmente, puedes            \n            - especificar un «id» único para identificar el modelo personalizado en la interfaz de usuario. Si no se proporciona ninguno, se utilizará «model» como «id».            \n            - proporcionar una «apiKey» para acceder a la API que se sirve en la url dada. Utilice «true» para indicar el uso de la clave API global.            \n            - Especifique «supportsStructuredOutput: false» para indicar que no se utilizará la salida estructurada.            \n            - Especifique «enableStreaming: false» para indicar que no se utilizará la transmisión.            \n            - Especifique «proveedor» para indicar de qué proveedor procede el modelo (openai, anthropic).",
          "modelId": {
            "title": "ID del modelo"
          },
          "supportsStructuredOutput": {
            "title": "Indica si el modelo admite salida estructurada. Por defecto es «true»."
          },
          "url": {
            "title": "El punto final de la API donde se aloja el modelo."
          }
        },
        "models": {
          "description": "Modelos oficiales para usar con Vercel AI SDK.",
          "id": {
            "title": "ID del modelo"
          },
          "model": {
            "provider": "Proveedor",
            "title": "Nombre del modelo"
          }
        },
        "openaiApiKey": {
          "mdDescription": "Introduzca una clave API para los modelos OpenAI utilizados por el SDK de IA de Vercel. **Nota:** al utilizar esta preferencia, la clave API se almacenará en texto sin cifrar en el equipo que ejecuta Theia. Utilice la variable de entorno `OPENAI_API_KEY` para configurar la clave de forma segura."
        }
      },
      "workspace": {
        "allowedExternalPaths": {
          "description": "Lista de rutas absolutas o URI de archivos (directorios o archivos) fuera del espacio de trabajo que las herramientas de IA pueden leer. Admite `~` para referirse al directorio de inicio del usuario. Vacío por defecto; solo se activa de forma opcional. Se respeta en getFileContent, findFilesByPattern, getWorkspaceFileList y getWorkspaceDirectoryStructure. Los valores del ámbito del espacio de trabajo se ignoran cuando el espacio de trabajo no es de confianza. Se siguen los enlaces simbólicos dentro de los directorios de la lista de permitidos y pueden apuntar a archivos fuera de la lista de permitidos; solo añade directorios cuyo contenido te inspire confianza.",
          "title": "Rutas externas permitidas"
        },
        "coderAgent": {
          "description": "Un asistente de IA integrado en Theia IDE, diseñado para ayudar a los desarrolladores de software. Este agente puede acceder al espacio de trabajo de los usuarios, obtener una lista de todos los archivos y carpetas disponibles y recuperar su contenido. Además, puede sugerir modificaciones de los archivos al usuario. Por lo tanto, puede ayudar al usuario con tareas de codificación u otras tareas que impliquen cambios en los archivos."
        },
        "considerGitignore": {
          "description": "Si está habilitado, excluye los archivos y carpetas que coincidan con las reglas de .gitignore que se encuentren en el directorio raíz de cada espacio de trabajo.",
          "title": "Considere .gitignore"
        },
        "createSkillAgent": {
          "description": "Un asistente de IA para crear nuevas habilidades. Las habilidades proporcionan instrucciones reutilizables y conocimientos específicos del ámbito para los agentes de IA. Este asistente te ayuda a crear habilidades bien estructuradas en los directorios .agents/skills o .prompts/skills con el frontmatter YAML y el contenido Markdown adecuados. Esta función se encuentra aún en una fase inicial y puede sufrir cambios."
        },
        "excludedPattern": {
          "description": "Lista de patrones (glob o regex) para archivos/carpetas que se deben excluir.",
          "title": "Patrones de archivos excluidos"
        },
        "fileContentMaxSizeKB": {
          "description": "Tamaño máximo en kilobytes del contenido devuelto por la herramienta getFileContent. Al leer un archivo completo (sin desplazamiento ni límite), los archivos que superen este límite devuelven un error. Cuando se utilizan el desplazamiento y el límite, solo se comprueba este límite con respecto al rango solicitado.",
          "title": "Tamaño máximo del contenido del archivo (KB)"
        },
        "projectInfoAgent": {
          "description": "Un asistente de IA para gestionar plantillas de información de proyectos. Este agente ayuda a crear, actualizar y revisar el archivo .prompts/project-info.prompttemplate, que proporciona contexto sobre su proyecto a otros agentes de IA. Puede analizar su espacio de trabajo para sugerir información del proyecto o actualizar plantillas existentes en función de sus requisitos."
        },
        "searchMaxResults": {
          "description": "Número máximo de resultados de búsqueda devueltos por la función de búsqueda del espacio de trabajo.",
          "title": "Resultados máximos de búsqueda"
        },
        "workspaceAgent": {
          "description": "Un asistente de IA integrado en Theia IDE, diseñado para ayudar a los desarrolladores de software. Este agente puede acceder al espacio de trabajo de los usuarios, obtener una lista de todos los archivos y carpetas disponibles y recuperar su contenido. No puede modificar archivos. Por lo tanto, puede responder a preguntas sobre el proyecto actual, los archivos del proyecto y el código fuente en el espacio de trabajo, como por ejemplo, cómo construir el proyecto, dónde colocar el código fuente, dónde encontrar código o configuraciones específicas, etc."
        }
      }
    },
    "ai-chat": {
      "fileChangeSetTitle": "Cambios propuestos"
    },
    "ai-chat-ui": {
      "blockedResource": {
        "allow": "Permitir este contenido bloqueado",
        "aria": "Recursos externos bloqueados: {0}",
        "inlineContent": "(contenido externo integrado)",
        "label": "Recurso externo bloqueado:",
        "resourcesToAllow": "{0} Los recursos se habilitarán"
      },
      "browseAllChats": "Ver todos los chats...",
      "confirm": "Confirmar",
      "deleteChat": "Eliminar chat",
      "home": "Inicio",
      "initiate-session-task-context": "Contexto de la tarea: Iniciar sesión",
      "noOutput": "Sin salida",
      "open-current-session-summary": "Resumen de la sesión actual abierta",
      "open-settings-tooltip": "Abrir configuración de IA...",
      "openSession": "Abrir sesión de chat",
      "renameChat": "Renombrar chat",
      "scroll-lock": "Bloquear desplazamiento",
      "scroll-unlock": "Desbloquear desplazamiento",
      "session-settings": "Configurar los ajustes de sesión",
      "summarize-current-session": "Resumir sesión actual"
    },
    "ai-claude-code": {
      "open-config": "Abrir la configuración de Claude Code.",
      "open-memory": "Abrir Claude Code Memory (CLAUDE.MD)"
    },
    "ai-core": {
      "agentCompletionMessage": "El agente «{0}» ha completado su tarea.",
      "agentCompletionMessageWithSession": "El agente «{0}» ha completado su tarea en «{1}».",
      "agentCompletionTitle": "Agente «{0}» Tarea completada",
      "agentInputNeededMessage": "El agente «{0}» necesita tu aportación.",
      "agentInputNeededMessageWithSession": "El agente «{0}» necesita que introduzcas datos en «{1}».",
      "agentInputNeededTitle": "El agente «{0}» necesita tu opinión",
      "aiDisabledInRestrictedMode": "Las funciones de IA no están disponibles en espacios de trabajo no confiables.",
      "preferences": {
        "linuxEnvHint": "En Linux, asegúrate de que la variable esté definida en `~/.profile` (no solo en `~/.bashrc`) si inicias la aplicación desde un acceso directo del escritorio. Consulta la [documentación](https://theia-ide.org/docs/user_ai/#setting-api-keys) para obtener más detalles.",
        "title": "Funciones de IA"
      },
      "showChat": "Mostrar chat"
    },
    "ai-editor": {
      "contextMenu": "Preguntar a la IA",
      "sendToChat": "Enviar al chat de IA"
    },
    "ai-ide": {
      "addressGhReviewCommand": {
        "argumentHint": "<pr-number>",
        "description": "Comentarios de revisión de direcciones en una solicitud de extracción de GitHub."
      },
      "appTester": {
        "description": "Delega en el agente AppTester la verificación de la interfaz de usuario basada en navegador tras la implementación.",
        "name": "Prueba E2E"
      },
      "codeReview": {
        "description": "Delega en el agente de revisión de código tras cada implementación. Bloquea los siguientes pasos hasta que se apruebe la revisión."
      },
      "fixGhTicketCommand": {
        "argumentHint": "<número de ticket>",
        "description": "Analizar un ticket de GitHub e implementar la solución."
      },
      "newChat": "Nuevo chat",
      "noSessions": "Aún no hay sesiones de chat.",
      "open-ai-configuration-tooltip": "Configuración de Open AI",
      "perspective": {
        "aiFirst": "AI First"
      },
      "rememberCommand": {
        "argumentHint": "[topic-hint]",
        "description": "Extraer temas de la conversación y actualizar la información del proyecto."
      },
      "sessionsView": "Sesiones de IA",
      "ticketCommand": {
        "argumentHint": "<número de ticket>",
        "description": "Analizar un ticket de GitHub y crear un plan de implementación."
      },
      "todoTool": {
        "noTasks": "Sin tareas"
      },
      "userInteractionCommentPlaceholder": "Añade un comentario para este paso...",
      "userInteractionEmpty": "Vacío",
      "userInteractionFinishStep": "Finalizar",
      "userInteractionGoToStep": "Ve al paso {0}: {1}",
      "userInteractionMalformed": "No se pudo mostrar la interacción del usuario",
      "userInteractionMalformedFallback": "No se han podido analizar los argumentos.",
      "userInteractionPreparing": "Preparando la interacción del usuario...",
      "userInteractionPreparingSteps": "Preparación: {0} (pasos de {1})",
      "userInteractionPreparingTitle": "Preparación: {0}",
      "userInteractionWorkingCopy": "Working Copy"
    },
    "ai-mcp": {
      "installDialog": {
        "authTokenPlaceholder": "Requerido por este servidor para conectarse",
        "authTokenRequired": "Se requiere un token de autenticación para instalar este servidor.",
        "oauthClientIdPlaceholder": "Requerido por este servidor para conectarse",
        "oauthClientSecretPlaceholder": "Requerido por este servidor para conectarse",
        "oauthCredentialsRequired": "Para instalar este servidor se requieren un ID de cliente OAuth y un secreto de cliente.",
        "oauthDescription": "Este servidor utiliza OAuth con un cliente confidencial prerregistrado. Introduce el ID de cliente y el secreto que te haya facilitado tu proveedor de OAuth.",
        "title": "Instalar MCP Server",
        "trust": {
          "unknown": "No hay ningún registro de IA configurado; no se puede verificar la fiabilidad.",
          "unverified": "Este servidor no figura en tu registro de IA ({0}). Instálalo bajo tu propia responsabilidad.",
          "verified": "Aprobado por tu registro de IA ({0})."
        }
      },
      "installUri": {
        "alreadyInstalled": {
          "msg": "Ya hay un servidor MCP configurado con el nombre «{0}». Si continúas, se sobrescribirá la entrada existente con la configuración del registro.",
          "title": "Servidor MCP ya instalado"
        },
        "missingId": "Al enlace de instalación le falta el parámetro «id» obligatorio.",
        "noRegistry": "No se puede instalar el servidor MCP «{0}»: no hay ningún registro de IA configurado en este producto.",
        "success": "Se ha instalado el servidor MCP «{0}» desde el registro de IA.",
        "unknownId": "El servidor MCP «{0}» no aparece en tu registro de IA."
      }
    },
    "ai-registry": {
      "action": {
        "fix": "Corregir configuración",
        "link": "Enlace al registro",
        "unlink": "Desvincular",
        "updateTooltip": "Actualización de {0} a {1}"
      },
      "skill": {
        "action": {
          "fix": "Corregir habilidad",
          "link": "Enlace al registro",
          "unlink": "Desvincular"
        },
        "fixed": "Se ha recuperado la habilidad «{0}».",
        "githubToken": {
          "mdDescription": "Token de acceso personal opcional de GitHub que se utiliza al descargar habilidades desde GitHub. Un token aumenta el límite de solicitudes de GitHub de 60 a 5000 por hora. **Nota:** Al utilizar esta opción, el token se almacena en texto sin cifrar en el equipo en el que se ejecuta Theia. Es preferible utilizar la variable de entorno `GITHUB_TOKEN` para proporcionarlo de forma segura."
        },
        "installUri": {
          "confirm": {
            "msg": "Instala la skill «{0}» descargando sus archivos desde {1}?",
            "title": "Habilidad de instalación"
          },
          "fetchFailed": "No se ha podido cargar el registro de IA para instalar la habilidad «{0}».",
          "missingId": "Al enlace de instalación le falta el parámetro «id» obligatorio.",
          "success": "Se ha instalado la habilidad «{0}» desde el registro de IA.",
          "unknownId": "La habilidad «{0}» no figura en tu registro de IA."
        },
        "installed": "Habilidad instalada: «{0}».",
        "linked": "Habilidad relacionada: «{0}».",
        "uninstalled": "Se ha desinstalado la habilidad «{0}».",
        "unlinked": "Habilidad no vinculada «{0}».",
        "updated": "Se ha actualizado la habilidad «{0}».",
        "warning": {
          "fix": "Los archivos de esta habilidad difieren de los del registro. Haz clic en «Corregir habilidad» para restaurarlos.",
          "linkStale": "Esta función se instaló desde el registro, pero ya no aparece en él. Haz clic en «Desvincular» para eliminar el enlace del registro y conservar los archivos, o en «Desinstalar» para eliminar la función.",
          "notInRegistry": "No está en el registro"
        },
        "watcherStopped": "Se ha dejado de supervisar la carpeta de habilidades en busca de cambios. Es posible que las habilidades instaladas ya no se actualicen automáticamente. Actualiza la ventana para reanudar el proceso."
      },
      "warning": {
        "fixConfig": "La configuración de este servidor difiere de la del registro. Haz clic en «Corregir configuración» para restaurarla.",
        "linkStale": "Este servidor se instaló desde el registro, pero ya no aparece en él. Si estás seguro de que quieres conservarlo y sigue funcionando correctamente, haz clic en «Desvincular» para eliminar el enlace del registro. De lo contrario, haz clic en «Desinstalar» para eliminar el servidor.",
        "notInRegistry": "No está en el registro"
      }
    },
    "ai-terminal": {
      "allowAllConfirm": "Entendido, permitir todo.",
      "allowAllForever": "Permitir siempre todos los comandos de shell...",
      "allowAllSession": "Permitir todos los comandos de shell para este chat...",
      "allowAllSessionConfirm": "Entendido, permitir todo para este chat.",
      "allowAllSessionTitle": "¿Permitir TODOS los comandos de Shell para este chat?",
      "allowAllSessionWarning": "Esto permitirá a la IA ejecutar cualquier comando de shell sin confirmación durante el resto de esta sesión de chat. Los comandos de shell tienen acceso completo al sistema y pueden ejecutar cualquier comando, modificar archivos fuera del espacio de trabajo y acceder a recursos de red. Los comandos de la lista de denegados seguirán bloqueados.",
      "allowAllTitle": "¿Permitir TODOS los comandos de Shell?",
      "allowAllWarning": "Esto permitirá a la IA ejecutar cualquier comando de shell sin confirmación. Los comandos de shell tienen acceso completo al sistema y pueden ejecutar cualquier comando, modificar archivos fuera del espacio de trabajo y acceder a recursos de red. Los comandos de la lista de denegados seguirán bloqueados.",
      "alwaysAllowPattern": "Permitir siempre {0}",
      "alwaysAllowPatterns": "Permitir siempre {0} y {1}",
      "alwaysAllowPatternsList": "Permitir siempre {0}",
      "alwaysDenyPattern": "Denegar siempre {0}",
      "alwaysDenyPatterns": "Denegar siempre {0} y {1}",
      "alwaysDenyPatternsList": "Denegar siempre {0}",
      "cancelExecution": "Cancelar la ejecución del comando.",
      "canceling": "Cancelando...",
      "configurePermissions": "Configurar los permisos de los comandos del shell",
      "confirmExecution": "Confirmar comando de Shell",
      "denialReason": "Motivo",
      "executionDenied": "Denegado",
      "executionDeniedWithReason": "Denegado con motivo",
      "partialOutput": "Salida parcial",
      "shellCommandAllowlist": {
        "description": "Lista de patrones de comandos de shell. Utilice * como comodín: «git log» (coincidencia exacta), «git log *» (con argumentos opcionales), «* --version» (cualquier comando que termine en --version). El comodín debe ir precedido de un espacio. Los comandos con patrones peligrosos ($, comillas invertidas) nunca se permiten automáticamente."
      },
      "shellCommandDenylist": {
        "description": "Lista de patrones de comandos de shell que siempre deben denegarse. Los comandos que coincidan con estos patrones se rechazarán automáticamente sin confirmación. Utiliza la sintaxis de patrones: «git push» (coincidencia exacta) o «git push *» (con cualquier argumento). Se incluye con patrones predeterminados para comandos peligrosos (eval, exec, sudo, rm -rf, etc.)."
      },
      "timeout": "Tiempo de espera",
      "workingDirectory": "Directorio de trabajo"
    },
    "ai-tool-sketchpad": {
      "addItemProperty": "Añadir propiedad de elemento",
      "addParameter": "Añadir parámetro",
      "addProperty": "Añadir propiedad",
      "addTool": "Añadir herramienta",
      "askAtRuntimeHint": "Cuando el LLM llame a esta herramienta, se abrirá un cuadro de diálogo rápido en el que se te pedirá que introduzcas el valor de retorno.",
      "askReturnPlaceholder": "Introduce el valor de retorno para esta llamada a la herramienta...",
      "askReturnPrompt": "La herramienta «{0}» se ha ejecutado con: {1}",
      "confirmDelete": "¿Estás seguro de que quieres eliminar la herramienta «{0}»?",
      "descriptionPlaceholder": "Describe para qué sirve la herramienta...",
      "itemType": "Tipo de elemento:",
      "label": "Herramienta de IA Sketchpad",
      "nParameters": "{0} parámetros",
      "nameDuplicate": "Ya existe una herramienta con este nombre.",
      "nameEmpty": "El nombre de la herramienta no debe estar vacío.",
      "nameInvalid": "El nombre de la herramienta solo puede contener letras, dígitos, guiones bajos y guiones (de 1 a 128 caracteres).",
      "noItemProperties": "No se han definido propiedades de los elementos.",
      "noParameters": "No se han definido parámetros.",
      "noTools": "Aún no hay herramientas.",
      "oneParameter": "1 parámetro",
      "parameters": "Parámetros",
      "required": "Obligatorio",
      "returnMode": "Modo de retorno",
      "returnModeAskAtRuntime": "Preguntar en tiempo de ejecución",
      "returnModeAskShort": "Preguntar en tiempo de ejecución",
      "returnModeStatic": "Valor de retorno estático",
      "returnModeStaticShort": "Estático",
      "selectTool": "Selecciona una herramienta para editarla o añade una nueva para empezar a esbozar.",
      "staticReturn": "Valor de retorno estático",
      "staticReturnHint": "Este valor estático se devuelve cada vez que se invoca la herramienta, independientemente de los argumentos de entrada.",
      "staticReturnPlaceholder": "El valor devuelto al ejecutar esta herramienta (p. ej., cadena JSON)",
      "toolName": "Nombre de la herramienta",
      "toolNamePlaceholder": "Por ejemplo: getWeather",
      "untitledTool": "Herramienta sin título"
    },
    "callhierarchy": {
      "noCallers": "No se han detectado llamadas.",
      "open": "Jerarquía de llamadas abiertas"
    },
    "chat": {
      "taskContextVariable": {
        "args": {
          "contextId": {
            "description": "El ID del contexto de la tarea que se va a recuperar o una sesión de chat que se va a resumir."
          }
        },
        "description": "Proporciona información contextual para una tarea, por ejemplo, el plan para completar una tarea o un resumen de sesiones anteriores.",
        "label": "Contexto de la tarea"
      }
    },
    "collaboration": {
      "collaborate": "Colaborar",
      "collaboration": "Colaboración",
      "collaborationWorkspace": "Espacio de trabajo colaborativo",
      "connected": "Conectado",
      "connectedSession": "Conectado a una sesión de colaboración",
      "copiedInvitation": "Código de invitación copiado al portapapeles.",
      "copyAgain": "Copiar de nuevo",
      "createRoom": "Crear nueva sesión de colaboración",
      "creatingRoom": "Creación de sesión",
      "end": "Finalizar sesión de colaboración",
      "endDetail": "Finalice la sesión, deje de compartir contenido y revoque el acceso a otras personas.",
      "enterCode": "Introducir el código de la sesión de colaboración",
      "failedCreate": "No se ha podido crear la sala: {0}",
      "failedJoin": "No se ha podido unirse a la sala: {0}",
      "fieldRequired": "El campo «{0}» (Nombre de usuario) es obligatorio. Inicio de sesión abortado.",
      "invite": "Invitar a otros",
      "inviteDetail": "Copie el código de invitación para compartirlo con otras personas y que puedan unirse a la sesión.",
      "joinRoom": "Unirse a la sesión de colaboración",
      "joiningRoom": "Unirse a la sesión",
      "leave": "Salir de la sesión de colaboración",
      "leaveDetail": "Desconéctese de la sesión de colaboración actual y cierre el espacio de trabajo.",
      "loginFailed": "Error de inicio de sesión.",
      "loginSuccessful": "Inicio de sesión correcto.",
      "noAuth": "El servidor no proporciona ningún método de autenticación.",
      "optional": "opcional",
      "selectAuth": "Seleccionar método de autenticación",
      "selectCollaboration": "Seleccionar opción de colaboración",
      "serverUrl": "URL del servidor",
      "serverUrlDescription": "URL de la instancia del servidor Open Collaboration Tools para sesiones de colaboración en directo.",
      "sharedSession": "Compartió una sesión de colaboración.",
      "startSession": "Iniciar o unirse a una sesión de colaboración",
      "userWantsToJoin": "El usuario «{0}» desea unirse a la sala de colaboración.",
      "whatToDo": "¿Qué te gustaría hacer con otros colaboradores?"
    },
    "core": {
      "about": {
        "compatibility": "{0} Compatibilidad",
        "defaultApi": "API predeterminada de {0}",
        "listOfExtensions": "Lista de extensiones",
        "monacoEditor": "Versión del editor Monaco"
      },
      "common": {
        "closeAll": "Cerrar todas las pestañas",
        "closeAllTabMain": "Cerrar todas las pestañas en el área principal",
        "closeOtherTabMain": "Cerrar otras pestañas en el área principal",
        "closeOthers": "Cerrar otras pestañas",
        "closeRight": "Cerrar pestañas a la derecha",
        "closeTab": "Cerrar pestaña",
        "closeTabMain": "Cerrar pestaña en el área principal",
        "collapseAllTabs": "Contraer todos los paneles laterales",
        "collapseBottomPanel": "Alternar panel inferior",
        "collapseLeftPanel": "Alternar panel izquierdo",
        "collapseRightPanel": "Alternar panel derecho",
        "collapseTab": "Contraer panel lateral",
        "showNextTabGroup": "Cambiar al siguiente grupo de pestañas",
        "showNextTabInGroup": "Cambiar a la siguiente pestaña del grupo",
        "showPreviousTabGroup": "Cambiar al grupo de pestañas anterior",
        "showPreviousTabInGroup": "Cambiar a la pestaña anterior del grupo",
        "toggleMaximized": "Alternar maximizado"
      },
      "copyInfo": "Abre primero un archivo para copiar su ruta.",
      "copyWarn": "Utilice el comando o el atajo de copiar del navegador.",
      "cutWarn": "Utilice el comando o el atajo de cortar del navegador.",
      "enhancedPreview": {
        "classic": "Mostrar una vista previa sencilla de la pestaña con información básica.",
        "enhanced": "Mostrar una vista previa mejorada de la pestaña con información adicional.",
        "visual": "Mostrar una vista previa visual de la pestaña."
      },
      "highlightModifiedTabs": "Controla si se dibuja o no un borde superior en las pestañas del editor modificadas (sucias).",
      "jumpListName": "Espacios de trabajo recientes",
      "keybinding": {
        "duplicateModifierError": "No se puede analizar la combinación de teclas {0} Modificadores duplicados",
        "metaError": "No se puede analizar la combinación de teclas {0} meta es solo para OSX",
        "unrecognizedKeyError": "Clave no reconocida {0} en {1}"
      },
      "keybindingStatus": "{0} se pulsó, esperando más teclas",
      "keyboard": {
        "choose": "Elegir distribución del teclado",
        "chooseLayout": "Elija una distribución de teclado",
        "current": "(actual: {0})",
        "currentLayout": " - Diseño actual",
        "mac": "Teclados Mac",
        "pc": "Teclados de PC",
        "tryDetect": "Intenta detectar la distribución del teclado a partir de la información del navegador y las teclas pulsadas."
      },
      "navigator": {
        "clipboardWarn": "Se deniega el acceso al portapapeles. Comprueba los permisos de tu navegador.",
        "clipboardWarnFirefox": "La API del portapapeles no está disponible. Se puede habilitar mediante la preferencia «{0}» (Permitir el uso del portapapeles) en la página «{1}» (Configuración de privacidad y seguridad). A continuación, vuelva a cargar Theia. Tenga en cuenta que esto permitirá a FireFox obtener acceso completo al portapapeles del sistema."
      },
      "pasteWarn": "Utilice el comando o el atajo de pegar del navegador.",
      "perspective": {
        "resetPerspective": "Restablecer perspectiva (experimental)",
        "selectPerspective": "Selecciona una perspectiva",
        "switchPerspective": "Cambiar de perspectiva (experimental)"
      },
      "quitMessage": "Los cambios no guardados no se guardarán.",
      "resetWorkbenchLayout": "Restablecer diseño del banco de trabajo",
      "searchbox": {
        "close": "Cerrar (Escape)",
        "next": "Siguiente (Abajo)",
        "previous": "Anterior (Arriba)",
        "showAll": "Mostrar todos los elementos",
        "showOnlyMatching": "Mostrar solo los elementos coincidentes"
      },
      "secondaryWindow": {
        "alwaysOnTop": "Cuando está habilitada, la ventana secundaria permanece por encima de todas las demás ventanas, incluidas las de otras aplicaciones.",
        "description": "Establece la posición inicial y el tamaño de la ventana secundaria extraída.",
        "fullSize": "La posición y el tamaño del widget extraído serán los mismos que los de la aplicación Theia en ejecución.",
        "halfWidth": "La posición y el tamaño del widget extraído serán la mitad del ancho de la aplicación Theia en ejecución.",
        "originalSize": "La posición y el tamaño del widget extraído serán los mismos que los del widget original."
      },
      "severity": {
        "log": "Registro"
      },
      "silentNotifications": "Controla si se suprimen las ventanas emergentes de notificación.",
      "tabDefaultSize": "Especifica el tamaño predeterminado de las pestañas.",
      "tabMaximize": "Controla si se maximizan las pestañas al hacer doble clic.",
      "tabMinimumSize": "Especifica el tamaño mínimo de las pestañas.",
      "tabShrinkToFit": "Reducir las pestañas para ajustarlas al espacio disponible.",
      "window": {
        "tabCloseIconPlacement": {
          "description": "Coloque los iconos de cierre en los títulos de las pestañas al principio o al final de la pestaña. El valor predeterminado es al final en todas las plataformas.",
          "end": "Coloque el icono de cierre al final de la etiqueta. En los idiomas que se escriben de izquierda a derecha, esto es el lado derecho de la pestaña.",
          "start": "Coloque el icono de cierre al principio de la etiqueta. En los idiomas que se escriben de izquierda a derecha, esto es el lado izquierdo de la pestaña."
        }
      },
      "window.menuBarVisibility": "El menú se muestra como un botón compacto en la barra lateral. Este valor se ignora cuando {0} es {1}."
    },
    "debug": {
      "TheiaIDE": "Theia IDE",
      "addConfigurationPlaceholder": "Seleccione la raíz del espacio de trabajo para añadir la configuración a",
      "breakpoint": "punto de interrupción",
      "cannotRunToThisLocation": "No se pudo ejecutar el subproceso actual en la ubicación especificada.",
      "compound-cycle": "La configuración de inicio «{0}» contiene un ciclo consigo misma.",
      "conditionalBreakpoint": "Punto de interrupción condicional",
      "conditionalBreakpointsNotSupported": "Los puntos de interrupción condicionales no son compatibles con este tipo de depuración.",
      "confirmRunToShiftedPosition_msg": "La posición de destino se desplazará a la línea {0} y la columna {1}. ¿Desea continuar?",
      "confirmRunToShiftedPosition_title": "No se puede ejecutar el subproceso actual exactamente en la ubicación especificada.",
      "consoleFilterAriaLabel": "Filtrar la salida de la consola de depuración",
      "consoleFilterPlaceholder": "Filtro (p. ej., texto, !excluir)",
      "consoleFilterTooltip": "Filtra la salida de la consola por texto. Separa varios términos con comas. Añade el prefijo «!» para excluir un término.\n\nEjemplos:\n\n- «texto»: muestra las líneas que contienen «texto».\n- «texto, otro»: muestra las líneas que contienen «texto» u «otro».\n- «!texto»: oculta las líneas que contienen «texto».\n- «texto, !otro»: muestra «texto» pero oculta «otro».",
      "consoleSessionSelectorTooltip": "Cambiar entre sesiones de depuración. Cada sesión de depuración tiene su propia salida de consola.",
      "consoleSeverityTooltip": "Filtra la salida de la consola por nivel de gravedad. Solo se mostrarán los mensajes con la gravedad seleccionada.",
      "continueAll": "Continuar todo",
      "copyExpressionValue": "Copiar valor de expresión",
      "couldNotRunTask": "No se pudo ejecutar la tarea «{0}».",
      "dataBreakpoint": "punto de interrupción de datos",
      "debugConfiguration": "Configuración de depuración",
      "debugRestricted": "La depuración está desactivada en el modo restringido.",
      "debugSessionInitializationFailed": "Error al inicializar la sesión de depuración. Consulte la consola para obtener más detalles.",
      "debugSessionTypeNotSupported": "El tipo de sesión de depuración «{0}» no es compatible.",
      "debugToolbarMenu": "Menú de la barra de herramientas de depuración",
      "debugVariableInput": "Establecer un valor par {0}",
      "disableSelectedBreakpoints": "Desactivar los puntos de interrupción seleccionados",
      "disabledBreakpoint": "{0} desactivado",
      "enableSelectedBreakpoints": "Habilitar puntos de interrupción seleccionados",
      "entry": "entrada",
      "errorStartingDebugSession": "Se ha producido un error al iniciar la sesión de depuración. Consulte los registros para obtener más detalles.",
      "exception": "excepción",
      "functionBreakpoint": "función punto de interrupción",
      "goto": "goto",
      "htiConditionalBreakpointsNotSupported": "Los puntos de interrupción condicionales no son compatibles con este tipo de depuración.",
      "instruction-breakpoint": "Punto de interrupción de instrucción",
      "instructionBreakpoint": "instrucción de punto de interrupción",
      "logpointsNotSupported": "Puntos de registro no compatibles con este tipo de depuración.",
      "missingConfiguration": "Configuración dinámica «{0}: {1}» no se encuentra o no es aplicable.",
      "pause": "pausa",
      "pauseAll": "Pausar todo",
      "reveal": "Revelar",
      "step": "paso",
      "taskTerminatedBySignal": "La tarea «{0}» ha finalizado por la señal {1}.",
      "taskTerminatedForUnknownReason": "La tarea «{0}» se ha cerrado por motivos desconocidos.",
      "taskTerminatedWithExitCode": "La tarea «{0}» finalizó con el código de salida {1}.",
      "threads": "Hilos",
      "toggleTracing": "Habilitar/deshabilitar el seguimiento de comunicaciones con adaptadores de depuración.",
      "unknownSession": "Sesión desconocida",
      "unverifiedBreakpoint": "Sin verificar {0}"
    },
    "dev-container": {
      "devcontainerFileNotFound": "No se ha encontrado el archivo Devcontainer en {0} en el espacio de trabajo",
      "failedToRebuild": "Error al reconstruir el contenedor: {0}",
      "noDevcontainerFileSpecified": "No se ha especificado ningún archivo devcontainer para el espacio de trabajo",
      "removingOldContainer": "Eliminando el contenedor antiguo..."
    },
    "editor": {
      "autoSaveWhenNoErrors": "Cuando está habilitado, limitará el guardado automático de los editores a los archivos que no presenten errores en el momento en que se active el guardado automático. Solo se aplica cuando está habilitada la opción «{0}».",
      "clearFormatterSetting": "Borrar configuración del formateador",
      "configuredIn": "Configurado en {0}",
      "configuredNotInstalled": "«{0}» configurado en {1} pero no instalado.",
      "configuredNotInstalledFallbackNamed": "«{0}» configurado en {1} no instalado, utilizando «{2}».",
      "currentFormatter": "(Actual)",
      "diffEditor.wordWrap2": "Las líneas se ajustarán según la configuración de `#editor.wordWrap#`.",
      "dirtyEncoding": "El archivo está sucio. Guárdelo primero antes de volver a abrirlo con otra codificación.",
      "editor.bracketPairColorization.enabled": "Controla si la coloración de pares de corchetes está habilitada o no. Utilice `#workbench.colorCustomizations#` para anular los colores de resaltado de corchetes.",
      "editor.codeActions.triggerOnFocusChange": "Habilite la activación de «#editor.codeActionsOnSave#» cuando «#files.autoSave#» esté configurado en «afterDelay». Las acciones de código deben estar configuradas en «always» para que se activen con los cambios de ventana y enfoque.",
      "editor.detectIndentation": "Controla si #editor.tabSize# y #editor.insertSpaces# se detectarán automáticamente al abrir un archivo en función del contenido del mismo.",
      "editor.inlayHints.enabled1": "Las sugerencias se muestran de forma predeterminada y se ocultan al mantener pulsadas las teclas Ctrl+Alt.",
      "editor.inlayHints.enabled2": "Las sugerencias de incrustación están ocultas de forma predeterminada y se muestran al mantener pulsadas las teclas Ctrl+Alt.",
      "editor.inlayHints.fontFamily": "Controla la familia de fuentes de las sugerencias de incrustación en el editor. Cuando se establece en vacío, se utiliza `#editor.fontFamily#`.",
      "editor.inlayHints.fontSize": "Controla el tamaño de la fuente de las sugerencias incrustadas en el editor. Por defecto, se utiliza `#editor.fontSize#` cuando el valor configurado es inferior a `5` o superior al tamaño de la fuente del editor.",
      "editor.inlineSuggest.edits.experimental.enabled": "Controla si se habilitan las ediciones experimentales en las sugerencias en línea.",
      "editor.inlineSuggest.edits.experimental.onlyShowWhenCloseToCursor": "Controla si solo se muestran sugerencias en línea cuando el cursor está cerca de la sugerencia.",
      "editor.inlineSuggest.edits.experimental.useInterleavedLinesDiff": "Controla si se habilita la diferencia experimental de líneas intercaladas en las sugerencias en línea.",
      "editor.inlineSuggest.edits.experimental.useMixedLinesDiff": "Controla si se habilitan las ediciones experimentales en las sugerencias en línea.",
      "editor.insertSpaces": "Insertar espacios al pulsar `Tab`. Esta configuración se anula en función del contenido del archivo cuando `#editor.detectIndentation#` está activado.",
      "editor.quickSuggestions": "Controla si las sugerencias deben aparecer automáticamente mientras se escribe. Esto se puede controlar para escribir comentarios, cadenas y otro código. La sugerencia rápida se puede configurar para que se muestre como texto fantasma o con el widget de sugerencias. Ten en cuenta también la configuración `#editor.suggestOnTriggerCharacters#`, que controla si las sugerencias se activan mediante caracteres especiales.",
      "editor.suggestFontSize": "Tamaño de fuente para el widget de sugerencias. Cuando se establece en «0», se utiliza el valor de «#editor.fontSize#».",
      "editor.suggestLineHeight": "Altura de línea para el widget de sugerencias. Cuando se establece en «0», se utiliza el valor de «#editor.lineHeight#». El valor mínimo es 8.",
      "editor.tabSize": "El número de espacios que equivale una tabulación. Esta configuración se anula en función del contenido del archivo cuando #editor.detectIndentation# está activado.",
      "formatOnSaveTimeout": "Tiempo de espera en milisegundos tras el cual se cancela el formateo que se ejecuta al guardar el archivo.",
      "formatter": "Formateador",
      "noDefaultConfiguredLabel": "No hay ningún formateador predeterminado configurado.",
      "noDefaultConfiguredTooltip": "No hay ningún formateador predeterminado configurado (hay disponibles formateadores {0}).",
      "noEditor": "No hay ningún editor activo.",
      "noFormatter": "Sin formateador",
      "noFormatterInstalled": "No hay ningún formateador instalado.",
      "noFormattersAvailable": "No hay formateadores disponibles para este idioma.",
      "noFormattersInstalledTooltip": "No hay formateadores instalados para este idioma.",
      "onlyAvailableFormatter": "Formateador solo disponible",
      "onlyFormatterInstalled": "{0} (solo formateador instalado)",
      "persistClosedEditors": "Controla si se mantiene el historial del editor cerrado para el espacio de trabajo al recargar la ventana.",
      "selectFormatter": "Seleccionar formateador predeterminado",
      "selectScope": "Seleccione dónde guardar la configuración.",
      "showAllEditors": "Mostrar todos los editores abiertos",
      "showFormatterInfo": "Mostrar información del formateador",
      "splitHorizontal": "Editor dividido horizontalmente",
      "splitVertical": "Editor dividido vertical",
      "toggleStickyScroll": "Alternar desplazamiento fijo",
      "userSettingsDetail": "Aplicar a todos los espacios de trabajo",
      "workspaceSettingsDetail": "Aplicar solo al espacio de trabajo actual."
    },
    "external-terminal": {
      "cwd": "Seleccionar el directorio de trabajo actual para el nuevo terminal externo."
    },
    "file-search": {
      "toggleExcludedFiles": " (Pulsa {0} para mostrar/ocultar los archivos excluidos)"
    },
    "fileDialog": {
      "showHidden": "Mostrar archivos ocultos"
    },
    "fileSystem": {
      "fileResource": {
        "overWriteBody": "¿Desea sobrescribir los cambios realizados en «{0}» en el sistema de archivos?"
      }
    },
    "filesystem": {
      "copiedToClipboard": "Se ha copiado el enlace de descarga al portapapeles.",
      "copyDownloadLink": "Copiar enlace de descarga",
      "dialog": {
        "initialLocation": "Ir a la ubicación inicial",
        "multipleItemMessage": "Solo se puede seleccionar un elemento.",
        "navigateBack": "Volver atrás",
        "navigateForward": "Navegar hacia adelante",
        "navigateUp": "Navegar un directorio hacia arriba"
      },
      "fileResource": {
        "binaryFileQuery": "Abrirlo puede tardar algún tiempo y puede hacer que el IDE deje de responder. ¿Desea abrir «{0}» de todos modos?",
        "binaryTitle": "El archivo es binario o utiliza una codificación de texto no compatible.",
        "largeFileTitle": "El archivo es demasiado grande ({0}).",
        "overwriteTitle": "El archivo «{0}» ha sido modificado en el sistema de archivos."
      },
      "filesExclude": "Configure patrones globales para excluir archivos y carpetas. Por ejemplo, el Explorador de archivos decide qué archivos y carpetas mostrar u ocultar en función de esta configuración.",
      "format": "Formato:",
      "maxConcurrentUploads": "Número máximo de archivos simultáneos que se pueden cargar al cargar varios archivos. 0 significa que todos los archivos se cargarán simultáneamente.",
      "maxFileSizeMB": "Controla el tamaño máximo de archivo en MB que se puede abrir.",
      "prepareDownload": "Preparando la descarga...",
      "prepareDownloadLink": "Preparando enlace de descarga...",
      "processedOutOf": "Procesado {0} de {1}",
      "replaceTitle": "Reemplazar archivo",
      "uploadFailed": "Se ha producido un error al cargar un archivo. {0}",
      "uploadFiles": "Carga de archivos",
      "uploadedOutOf": "Subido {0} de {1}"
    },
    "getting-started": {
      "ai": {
        "header": "¡Ya está disponible la compatibilidad con IA en {0}!",
        "openAIChatView": "¡Abre ahora la vista de chat con IA para aprender cómo empezar!"
      },
      "apiComparator": "{0} Compatibilidad con API",
      "newExtension": "Creación de una nueva extensión",
      "newPlugin": "Creación de un nuevo complemento",
      "startup-editor": {
        "welcomePage": "Abra la página de bienvenida, con contenido que le ayudará a empezar a utilizar {0} y las extensiones."
      },
      "telemetry": "Uso de datos y telemetría"
    },
    "keybinding-schema-updater": {
      "deprecation": "Utilice la cláusula «when» en su lugar."
    },
    "keymaps": {
      "addKeybindingTitle": "Añadir combinación de teclas para «{0}»",
      "editKeybinding": "Editar atajos de teclado...",
      "editKeybindingTitle": "Editar la asignación de teclas para {0}",
      "editWhenExpression": "Editar cuando la expresión...",
      "editWhenExpressionTitle": "Editar expresión para {0}",
      "keybinding": {
        "copy": "Copiar combinación de teclas",
        "copyCommandId": "Copiar ID del comando de combinación de teclas",
        "copyCommandTitle": "Copiar comando de combinación de teclas Título",
        "edit": "Editar atajos de teclado...",
        "editWhenExpression": "Editar combinación de teclas cuando la expresión..."
      },
      "keybindingCollidesValidation": "La combinación de teclas actualmente entra en conflicto.",
      "requiredKeybindingValidation": "Se requiere el valor de la combinación de teclas.",
      "resetKeybindingConfirmation": "¿De verdad quieres restablecer esta combinación de teclas a su valor predeterminado?",
      "resetKeybindingTitle": "Restablecer la asignación de teclas para {0}",
      "resetMultipleKeybindingsWarning": "Si existen varias combinaciones de teclas para este comando, todas ellas se restablecerán."
    },
    "localize": {
      "offlineTooltip": "No se puede conectar al backend."
    },
    "markers": {
      "clearAll": "Borrar todo",
      "copyAsText": "Copiar como texto",
      "export": "Exportar",
      "exportProblems": "Problemas de exportación",
      "exportSuccess": "Los problemas se han exportado correctamente.",
      "jsonFiles": "Archivos JSON",
      "noProblems": "Hasta ahora no se han detectado problemas en el espacio de trabajo.",
      "tabbarDecorationsEnabled": "Mostrar decoradores de problemas (marcadores de diagnóstico) en las barras de pestañas."
    },
    "memory-inspector": {
      "addressTooltip": "Ubicación de memoria para mostrar, una dirección o expresión que evalúa una dirección.",
      "ascii": "ASCII",
      "binary": "Binario",
      "byteSize": "Tamaño de byte",
      "bytesPerGroup": "Bytes por grupo",
      "closeSettings": "Cerrar configuración",
      "columns": "Columnas",
      "command": {
        "createNewMemory": "Crear nuevo inspector de memoria",
        "createNewRegisterView": "Crear nueva vista de registro",
        "followPointer": "Seguir puntero",
        "followPointerMemory": "Seguir el puntero en el inspector de memoria",
        "resetValue": "Restablecer valor",
        "showRegister": "Mostrar registro en el inspector de memoria",
        "viewVariable": "Mostrar variable en el inspector de memoria"
      },
      "data": "Datos",
      "decimal": "Decimal",
      "diff": {
        "label": "Diferencia: {0}"
      },
      "diff-widget": {
        "offset-label": "{0} Desplazamiento",
        "offset-title": "Bytes para compensar la memoria de {0}"
      },
      "editable": {
        "apply": "Aplicar cambios",
        "clear": "Borrar cambios"
      },
      "endianness": "Endianidad",
      "extraColumn": "Columna adicional",
      "groupsPerRow": "Grupos por fila",
      "hexadecimal": "Hexadecimal",
      "length": "Longitud",
      "lengthTooltip": "Número de bytes a recuperar, en decimal o hexadecimal.",
      "memory": {
        "addressField": {
          "memoryReadError": "Introduzca una dirección o expresión en el campo Ubicación."
        },
        "freeze": "Congelar vista de memoria",
        "hideSettings": "Ocultar panel de configuración",
        "readError": {
          "bounds": "Se han superado los límites de memoria, el resultado se truncará.",
          "noContents": "Actualmente no hay contenido de memoria disponible."
        },
        "readLength": {
          "memoryReadError": "Introduzca una longitud (número decimal o hexadecimal) en el campo Longitud."
        },
        "showSettings": "Mostrar panel de configuración",
        "unfreeze": "Descongelar vista de memoria",
        "userError": "Se ha producido un error al recuperar la memoria."
      },
      "memoryCategory": "Inspector de memoria",
      "memoryInspector": "Inspector de memoria",
      "memoryTitle": "Memoria",
      "octal": "Octal",
      "offset": "Desplazamiento",
      "offsetTooltip": "Desplazamiento que se añadirá a la ubicación actual de la memoria al navegar.",
      "provider": {
        "localsError": "No se pueden leer las variables locales. No hay ninguna sesión de depuración activa.",
        "readError": "No se puede leer la memoria. No hay ninguna sesión de depuración activa.",
        "writeError": "No se puede escribir en la memoria. No hay ninguna sesión de depuración activa."
      },
      "register": "Registrarse",
      "register-widget": {
        "filter-placeholder": "Filtro (comienza con)"
      },
      "registerReadError": "Se produjo un error al recuperar los registros.",
      "registers": "Registros",
      "toggleComparisonWidgetVisibility": "Alternar la visibilidad del widget de comparación",
      "utils": {
        "afterBytes": "Debe cargar memoria en ambos widgets que desee comparar. {0} no tiene memoria cargada.",
        "bytesMessage": "Debe cargar memoria en ambos widgets que desee comparar. {0} no tiene memoria cargada."
      }
    },
    "messages": {
      "notificationTimeout": "Las notificaciones informativas se ocultarán tras este tiempo de espera.",
      "toggleNotifications": "Alternar notificaciones"
    },
    "mini-browser": {
      "typeUrl": "Escriba una URL."
    },
    "monaco": {
      "noSymbolsMatching": "No hay símbolos que coincidan.",
      "typeToSearchForSymbols": "Escriba para buscar símbolos."
    },
    "navigator": {
      "autoReveal": "Revelación automática",
      "clipboardWarn": "Se deniega el acceso al portapapeles. Comprueba los permisos de tu navegador.",
      "clipboardWarnFirefox": "La API del portapapeles no está disponible. Se puede habilitar mediante la preferencia «{0}» (Permitir el uso del portapapeles) en la página «{1}» (Configuración de privacidad y seguridad). A continuación, vuelva a cargar Theia. Tenga en cuenta que esto permitirá a FireFox obtener acceso completo al portapapeles del sistema.",
      "nothingToPaste": "El portapapeles no contiene archivos del espacio de trabajo que se puedan pegar aquí.",
      "openWithSystemEditor": "Abrir con el editor del sistema",
      "refresh": "Actualizar en el Explorador",
      "reveal": "Revelar en el Explorador",
      "systemEditor": "Editor del sistema",
      "toggleHiddenFiles": "Alternar archivos ocultos"
    },
    "output": {
      "clearOutputChannel": "Borrar canal de salida...",
      "closeOutputChannel": "Cerrar canal de salida...",
      "hiddenChannels": "Canales ocultos",
      "hideOutputChannel": "Ocultar canal de salida...",
      "maxChannelHistory": "El número máximo de entradas en un canal de salida.",
      "outputChannels": "Canales de salida",
      "showOutputChannel": "Mostrar canal de salida..."
    },
    "plugin": {
      "blockNewTab": "Tu navegador ha impedido la apertura de una nueva pestaña."
    },
    "plugin-dev": {
      "alreadyRunning": "La instancia alojada ya se está ejecutando.",
      "debugInstance": "Instancia de depuración",
      "debugMode": "Uso de inspect o inspect-brk para la depuración de Node.js",
      "debugPorts": {
        "debugPort": "Puerto que se utilizará para la depuración de Node.js de este servidor.",
        "serverName": "El nombre del servidor host del complemento, por ejemplo, «hosted-plugin» como en «--hosted-plugin-inspect=» o «headless-hosted-plugin» como en «--headless-hosted-plugin-inspect=»."
      },
      "devHost": "Host de desarrollo",
      "failed": "No se pudo ejecutar la instancia del complemento alojado: {0}",
      "hostedPlugin": "Complemento alojado",
      "hostedPluginRunning": "Complemento alojado: en ejecución",
      "hostedPluginStarting": "Complemento alojado: Inicio",
      "hostedPluginStopped": "Complemento alojado: detenido",
      "hostedPluginWatching": "Complemento alojado: Observación",
      "instanceTerminated": "{0} ha sido terminado",
      "launchOutFiles": "Matriz de patrones globales para localizar archivos JavaScript generados (`${pluginPath}` se sustituirá por la ruta real del complemento).",
      "noValidPlugin": "La carpeta especificada no contiene un complemento válido.",
      "notRunning": "La instancia alojada no se está ejecutando.",
      "pluginFolder": "La carpeta del complemento está configurada en: {0}",
      "preventedNewTab": "Tu navegador ha impedido la apertura de una nueva pestaña.",
      "restartInstance": "Reiniciar instancia",
      "running": "La instancia alojada se está ejecutando en:",
      "selectPath": "Seleccionar ruta",
      "startInstance": "Iniciar instancia",
      "starting": "Iniciando el servidor de la instancia alojada...",
      "stopInstance": "Detener instancia",
      "unknownTerminated": "La instancia ha sido terminada.",
      "watchMode": "Ejecutar el observador en el complemento en desarrollo."
    },
    "plugin-ext": {
      "authentication-main": {
        "loginTitle": "Inicio de sesión",
        "signedOut": "Cierre de sesión correcto."
      },
      "extensionsRestrictedMode": "Algunas extensiones están desactivadas en el modo restringido",
      "supportNodeGlobalNavigator": "Si se habilita, el objeto global `navigator` en el host de la extensión se definirá tal y como lo proporciona Node.js. Las extensiones pueden utilizar la presencia del objeto `navigator` como indicio de que el código se está ejecutando en un navegador. Deshabilitar esta opción (el valor predeterminado) elimina la definición de `navigator` en el host de la extensión para mantener esta suposición.",
      "webviewTrace": "Controla el seguimiento de las comunicaciones con vistas web.",
      "webviewWarnIfUnsecure": "Advierte a los usuarios de que las vistas web se están implementando de forma insegura."
    },
    "preferences": {
      "ai-features": "Funciones de IA",
      "hostedPlugin": "Complemento alojado",
      "input": {
        "browse": "Explorar"
      },
      "sessionOverride": {
        "suffix": "Sobrescrito por la sesión",
        "suffixTooltip": "Esta preferencia tiene un valor de sesión establecido mediante --session-preference. Al editarla aquí, se borra la modificación de sesión para el resto de esta sesión."
      },
      "sessionPreferences": {
        "statusBar": "Preferencias de sesión ({0})",
        "tooltipBody": "Se han introducido mediante la opción --session-preference y solo residen en la memoria. Haz clic en el nombre de una configuración para ir directamente a ella en la vista «Configuración».",
        "tooltipChangeNote": "Al editar cualquiera de estos valores, se borra su configuración de sesión para esta ejecución. Para utilizar los valores guardados a partir del siguiente inicio, reinicia sin los argumentos --session-preference.",
        "tooltipHeader": "Estos ajustes se anulan para esta sesión",
        "valueOff": "desactivado",
        "valueOn": "es"
      },
      "toolbar": "Barra de herramientas"
    },
    "preview": {
      "openByDefault": "Abrir la vista previa en lugar del editor de forma predeterminada."
    },
    "property-view": {
      "lastModified": "Última modificación",
      "noProperties": "No hay propiedades disponibles.",
      "properties": "Propiedades",
      "symbolicLink": "Enlace simbólico"
    },
    "remote": {
      "dev-container": {
        "attach": "Conectar al contenedor en ejecución",
        "attachError": "No se ha podido conectar al contenedor: {0}",
        "attachWarning": "Al conectarse a un contenedor, se ejecutará el código que hay en su interior. Conéctese únicamente a contenedores cuyo origen le inspire confianza.",
        "attachWarningTitle": "Adjuntar al contenedor",
        "attaching": "Conectarse al contenedor",
        "cliAttachError": "No se ha podido conectar al contenedor: {0}",
        "cliContainerNotFound": "No se ha encontrado el contenedor «{0}» o no se está ejecutando.",
        "connect": "Reabrir en contenedor",
        "enterCustomPath": "Introduce una ruta personalizada...",
        "enterWorkspacePath": "Introduce la ruta del espacio de trabajo dentro del contenedor",
        "foundConfigMsg": "Se ha encontrado un archivo devcontainer.json en {0}. ¿Deseas aplicar su configuración posterior a la conexión (extensiones, reenvío de puertos, etc.)?",
        "foundConfigTitle": "Configuración del contenedor de desarrollo encontrada",
        "noDevcontainerFiles": "No se han encontrado archivos devcontainer.json en el espacio de trabajo. Asegúrese de que tiene un directorio .devcontainer con un archivo devcontainer.json.",
        "noRunningContainers": "No se han encontrado contenedores en ejecución.",
        "rebuild": "Reconstruir contenedor",
        "rebuilding": "Reconstrucción del contenedor de desarrollo",
        "reopenInContainer": "Reabrir en contenedor",
        "selectContainer": "Selecciona un contenedor en ejecución al que conectarte",
        "selectDevcontainer": "Seleccione un archivo devcontainer.json.",
        "selectWorkspacePath": "Selecciona una ruta de espacio de trabajo dentro del contenedor",
        "suggestion": "Este espacio de trabajo tiene una configuración de contenedor de desarrollo. ¿Deseas volver a abrirlo en un contenedor?"
      },
      "port-forwarding": {
        "focusPorts": "Puertos: Centrarse en la vista Puertos"
      },
      "ssh": {
        "connect": "Conectar la ventana actual al host...",
        "connectToConfigHost": "Conectar la ventana actual al host en el archivo de configuración...",
        "enterHost": "Introduzca el nombre del host SSH.",
        "enterUser": "Introduzca el nombre de usuario SSH.",
        "failure": "No se pudo abrir la conexión SSH con el equipo remoto.",
        "hostPlaceHolder": "Por ejemplo: hello@example.com",
        "needsHost": "Introduzca un nombre de host.",
        "needsUser": "Introduzca un nombre de usuario.",
        "userPlaceHolder": "Por ejemplo: hola."
      },
      "sshNoConfigPath": "No se ha encontrado la ruta de configuración SSH.",
      "wsl": {
        "connectToWsl": "Conectarse a WSL",
        "connectToWslUsingDistro": "Conectarse a WSL utilizando Distro...",
        "noWslDistroFound": "No se han encontrado distribuciones WSL. Instale primero una distribución WSL.",
        "reopenInWsl": "Reabrir carpeta en WSL",
        "selectWSLDistro": "Seleccionar una distribución WSL"
      }
    },
    "scm": {
      "1HourAgo": "Hace 1 hora",
      "1MinuteAgo": "Hace 1 minuto",
      "amend": "Modificar",
      "amendHeadCommit": "HEAD Commit",
      "amendLastCommit": "Modificar la última confirmación",
      "changeRepository": "Cambiar repositorio...",
      "dirtyDiff": {
        "close": "Cerrar Cambiar Vista previa"
      },
      "justNow": "hace un momento",
      "mergeEditor": {
        "resetConfirmationTitle": "¿De verdad quieres restablecer el resultado de la fusión en este editor?"
      },
      "noChanges": "No hay archivos modificados.",
      "noHistory": "No hay historial de control de código fuente disponible.",
      "noHistoryForError": "No hay historial disponible para {0}",
      "prepositionIn": "en",
      "unamend": "Sin modificar",
      "unamendCommit": "Confirmación sin modificaciones"
    },
    "search-in-workspace": {
      "includeIgnoredFiles": "Incluir archivos ignorados",
      "noFolderSpecified": "No ha abierto ni especificado ninguna carpeta. Actualmente solo se buscan los archivos abiertos.",
      "resultSubset": "Esto es solo un subconjunto de todos los resultados. Utilice un término de búsqueda más específico para reducir la lista de resultados.",
      "searchExclude": "Configure [patrones glob](https://aka.ms/vscode-glob-patterns) para excluir archivos y carpetas en las búsquedas de texto completo y en la búsqueda de archivos en la apertura rápida. Hereda todos los patrones glob de la configuración `#files.exclude#`.",
      "searchOnEditorModification": "Buscar en el editor activo cuando se modifique."
    },
    "secondary-window": {
      "extract-widget": "Mover vista a ventana secundaria"
    },
    "shell-area": {
      "secondary": "Ventana secundaria"
    },
    "task": {
      "attachTask": "Adjuntar tarea...",
      "circularReferenceDetected": "Referencia circular detectada: {0} --> {1}",
      "clearHistory": "Borrar historial",
      "errorKillingTask": "Error al eliminar la tarea «{0}»: {1}",
      "errorLaunchingTask": "Error al iniciar la tarea «{0}»: {1}",
      "invalidTaskConfigs": "Se han encontrado configuraciones de tareas no válidas. Abra tasks.json y busque los detalles en la vista Problemas.",
      "neverScanTaskOutput": "Nunca escanee el resultado de la tarea.",
      "noTaskToRun": "No se ha encontrado ninguna tarea para ejecutar. Configurar tareas...",
      "noTasksFound": "No se han encontrado tareas.",
      "notEnoughDataInDependsOn": "La información proporcionada en «dependsOn» no es suficiente para encontrar la tarea correcta.",
      "schema": {
        "commandOptions": {
          "cwd": "El directorio de trabajo actual del programa o script ejecutado. Si se omite, se utiliza la raíz del espacio de trabajo actual de Theia."
        },
        "presentation": {
          "panel": {
            "dedicated": "El terminal está dedicado a una tarea específica. Si esa tarea se ejecuta de nuevo, el terminal se reutiliza. Sin embargo, el resultado de una tarea diferente se presenta en un terminal diferente.",
            "new": "Cada ejecución de esa tarea utiliza un nuevo terminal limpio.",
            "shared": "El terminal es compartido y los resultados de otras tareas se añaden al mismo terminal."
          },
          "showReuseMessage": "Controla si se muestra el mensaje «El terminal será reutilizado por tareas»."
        },
        "problemMatcherObject": {
          "owner": "El propietario del problema dentro de Theia. Se puede omitir si se especifica la base. El valor predeterminado es «externo» si se omite y no se especifica la base."
        }
      },
      "taskAlreadyRunningInTerminal": "La tarea ya se está ejecutando en la terminal.",
      "taskExitedWithCode": "La tarea «{0}» ha finalizado con el código {1}.",
      "taskIdLabel": "#{0}",
      "taskRestricted": "La ejecución de tareas está desactivada en modo restringido.",
      "taskTerminatedBySignal": "La tarea «{0}» se ha terminado por la señal {1}.",
      "terminalWillBeReusedByTasks": "El terminal será reutilizado por las tareas."
    },
    "telemetry": {
      "filters": "Restringe los patrones de temas que se envían a cada receptor de telemetría. Las entradas que faltan permiten todos los intereses del receptor; los arreglos vacíos desactivan un receptor."
    },
    "terminal": {
      "defaultProfile": "El perfil predeterminado utilizado en {0}",
      "enableCommandHistory": "Realiza un seguimiento por separado de los comandos de terminal y su salida mediante la inyección de shell. Esto permite casos de uso como distinguir visualmente los comandos en la interfaz de usuario y proporcionar a los agentes de IA un acceso más estructurado a las terminales. Activar o desactivar esta configuración no afectará a las terminales que ya estén abiertas.\n\n&nbsp;\n\nActualmente, esta función solo es compatible con terminales de tareas y terminales de usuario que ejecuten bash o zsh.",
      "enableCommandSeparator": "Activa un separador visual entre los comandos ejecutados y su salida en el terminal. Los cambios solo se aplican a los comandos ejecutados después de modificar esta configuración. Solo funciona cuando está activada la opción «{0}».",
      "enableCopy": "Habilite Ctrl-C (Cmd-C en macOS) para copiar el texto seleccionado.",
      "enablePaste": "Habilite Ctrl-V (Cmd-V en macOS) para pegar desde el portapapeles.",
      "profileArgs": "Los argumentos del shell que utiliza este perfil.",
      "profileColor": "Un identificador de color de tema de terminal para asociar con el terminal.",
      "profileDefault": "Seleccionar perfil predeterminado...",
      "profileIcon": "Un ID de codicon para asociar con el icono del terminal.\nterminal-tmux:\"$(terminal-tmux)\"",
      "profileNew": "Nueva terminal (con perfil)...",
      "profilePath": "La ruta del shell que utiliza este perfil.",
      "profiles": "Los perfiles que se mostrarán al crear un nuevo terminal. Establezca la propiedad de ruta manualmente con argumentos opcionales.\nEstablezca un perfil existente en «null» para ocultar el perfil de la lista, por ejemplo: «{0}»: null.",
      "rendererType": "Controla cómo se representa el terminal.",
      "rendererTypeDeprecationMessage": "El tipo de renderizador ya no es compatible como opción.",
      "selectProfile": "Seleccione un perfil para el nuevo terminal.",
      "shell.deprecated": "Esto está obsoleto, la nueva forma recomendada de configurar su shell predeterminado es creando un perfil de terminal en «terminal.integrated.profiles.{0}» y estableciendo su nombre de perfil como predeterminado en «terminal.integrated.defaultProfile.{0}».",
      "shellArgsLinux": "Los argumentos de la línea de comandos que se deben utilizar en el terminal Linux.",
      "shellArgsOsx": "Los argumentos de la línea de comandos que se deben utilizar en el terminal de macOS.",
      "shellArgsWindows": "Los argumentos de la línea de comandos que se deben utilizar en el terminal de Windows.",
      "shellLinux": "La ruta del shell que utiliza el terminal en Linux (por defecto: «{0}»).",
      "shellOsx": "La ruta del shell que utiliza el terminal en macOS (por defecto: «{0}»).",
      "shellWindows": "La ruta del shell que utiliza el terminal en Windows. (por defecto: «{0}»)."
    },
    "terminal-manager": {
      "addTerminalToGroup": "Añadir terminal al grupo",
      "closeDialog": {
        "message": "Una vez cerrado el Administrador de terminales, no se puede restaurar su diseño. ¿Está seguro de que desea cerrar el Administrador de terminales?",
        "title": "¿Desea cerrar el administrador de terminales?"
      },
      "closeTerminalManager": "Cerrar el Administrador de terminales",
      "createNewTerminalGroup": "Crear nuevo grupo de terminales",
      "createNewTerminalPage": "Crear nueva página de terminal",
      "deleteGroup": "Eliminar grupo",
      "deletePage": "Eliminar página",
      "deleteTerminal": "Eliminar terminal",
      "label": "Terminales",
      "maximizeBottomPanel": "Maximizar el panel inferior",
      "minimizeBottomPanel": "Minimizar el panel inferior",
      "openTerminalManager": "Abrir el Administrador de terminales",
      "page": "Página",
      "rename": "Renombrar",
      "resetTerminalManagerLayout": "Restablecer el diseño del administrador de terminales",
      "tabsDisplay": "Controla cómo se muestran los terminales. «Árbol» muestra varios terminales en una sola vista con una vista en árbol para su gestión, «con pestañas» muestra cada terminal en su propia vista en una pestaña separada.",
      "toggleTreeView": "Alternar vista en árbol",
      "treeViewLocation": "La ubicación de la vista en árbol del administrador de terminales. Solo se aplica cuando «terminal.grouping.mode» está configurado en «tree»."
    },
    "test": {
      "cancelAllTestRuns": "Cancelar todas las ejecuciones de prueba",
      "showTestOutput": "Mostrar resultado de la prueba",
      "stackFrameAt": "at",
      "testRunDefaultName": "{0} ejecutar {1}",
      "testRuns": "Ejecuciones de prueba"
    },
    "toolbar": {
      "addCommand": "Añadir comando a la barra de herramientas",
      "addCommandPlaceholder": "Buscar un comando para añadir a la barra de herramientas.",
      "centerColumn": "Columna central",
      "failedUpdate": "No se ha podido actualizar el valor de «{0}» en «{1}».",
      "filterIcons": "Iconos de filtro",
      "iconSelectDialog": "Seleccionar un icono para «{0}»",
      "iconSet": "Conjunto de iconos",
      "insertGroupLeft": "Insertar separador de grupo (izquierda)",
      "insertGroupRight": "Insertar separador de grupo (derecha)",
      "jsonError": "Se ha producido un error al leer tu archivo toolbar.json. Comprueba si está dañado haciendo clic con el botón derecho del ratón en la barra de herramientas y seleccionando «Personalizar barra de herramientas». También puedes restablecer los valores predeterminados seleccionando «Restaurar valores predeterminados de la barra de herramientas».",
      "leftColumn": "Columna izquierda",
      "openJSON": "Personalizar barra de herramientas (Abrir JSON)",
      "removeCommand": "Eliminar comando de la barra de herramientas",
      "restoreDefaults": "Restaurar los valores predeterminados de la barra de herramientas",
      "rightColumn": "Columna derecha",
      "selectIcon": "Seleccionar icono",
      "toggleToolbar": "Alternar barra de herramientas",
      "toolbarLocationPlaceholder": "¿Dónde desea que se añada el comando?",
      "useDefaultIcon": "Usar icono predeterminado"
    },
    "typehierarchy": {
      "subtypeHierarchy": "Jerarquía de subtipos",
      "supertypeHierarchy": "Jerarquía de supertipos"
    },
    "variableResolver": {
      "listAllVariables": "Variable: Mostrar todo"
    },
    "vsx-registry": {
      "confirmDialogMessage": "La extensión «{0}» no está verificada y podría suponer un riesgo para la seguridad.",
      "confirmDialogTitle": "¿Está seguro de que desea continuar con la instalación?",
      "downloadCount": "Recuento de descargas: {0}",
      "duplicateVSIX": "No se ha podido instalar {0} desde VSIX. La extensión ya está instalada. Desinstala la extensión existente antes de instalar una nueva versión desde VSIX.",
      "errorFetching": "Error al obtener las extensiones.",
      "errorFetchingConfigurationHint": "Esto podría deberse a problemas de configuración de la red.",
      "failedInstallingVSIX": "No se ha podido instalar {0} desde VSIX.",
      "filter": {
        "showBuiltin": "Mostrar integrado",
        "showInstalled": "Mostrar instalados",
        "showRecommended": "Mostrar recomendados"
      },
      "invalidVSIX": "El archivo seleccionado no es un complemento «*.vsix» válido.",
      "license": "Licencia: {0}",
      "onlyShowVerifiedExtensionsDescription": "Esto permite que {0} solo muestre extensiones verificadas.",
      "onlyShowVerifiedExtensionsTitle": "Mostrar solo extensiones verificadas",
      "recommendedExtensions": "Lista de los nombres de las extensiones recomendadas para su uso en este espacio de trabajo.",
      "restrictedModeInstallWarning": "La extensión «{0}» puede estar desactivada si no es compatible con el modo restringido. Confía en este espacio de trabajo para garantizar que la extensión funcione según lo esperado.",
      "searchPlaceholder": "Buscar en el Registro de VSX abierto",
      "showInstalled": "Mostrar extensiones instaladas",
      "showRecommendedExtensions": "Controla si se muestran notificaciones para las recomendaciones de extensiones.",
      "vsx-extensions-contribution": {
        "no-other-versions": "No hay otras versiones disponibles.",
        "update-version-uninstall-error": "Error al eliminar la extensión: {0}.",
        "update-version-version-error": "No se ha podido instalar la versión {0} de {1}."
      }
    },
    "webview": {
      "goToReadme": "Ir a README",
      "messageWarning": "            El patrón de host del punto final {0} se ha cambiado a «{1}»; cambiar el patrón puede dar lugar a vulnerabilidades de seguridad. Para obtener más información, consulte «{2}»."
    },
    "workspace": {
      "bothAreDirectories": "Ambos recursos son directorios.",
      "compareWithEachOther": "Comparar entre sí",
      "confirmDeletePermanently.description": "No se ha podido eliminar «{0}» mediante la Papelera. ¿Desea eliminarlo de forma permanente?",
      "confirmDeletePermanently.solution": "Puede desactivar el uso de la Papelera en las preferencias.",
      "confirmDeletePermanently.title": "Error al eliminar el archivo",
      "confirmMessage.delete": "¿De verdad quieres eliminar los siguientes archivos?",
      "confirmMessage.dirtyMultiple": "¿De verdad desea eliminar los archivos {0} con cambios sin guardar?",
      "confirmMessage.dirtySingle": "¿De verdad quieres eliminar {0} con cambios sin guardar?",
      "confirmMessage.uriMultiple": "¿De verdad quieres eliminar todos los archivos seleccionados {0}?",
      "confirmMessage.uriSingle": "¿De verdad quieres eliminar «{0}»?",
      "directoriesCannotBeCompared": "Los directorios no se pueden comparar. {0}",
      "duplicate": "Duplicado",
      "failSaveAs": "No se puede ejecutar «{0}» para el widget actual.",
      "isDirectory": "«{0}» es un directorio.",
      "manageTrustPlaceholder": "Seleccionar estado de confianza para este espacio de trabajo",
      "newFilePlaceholder": "Nombre del archivo",
      "newFolderPlaceholder": "Nombre de la carpeta",
      "noErasure": "Nota: No se borrará nada del disco.",
      "notWorkspaceFile": "Archivo de espacio de trabajo no válido: {0}",
      "openRecentPlaceholder": "Escriba el nombre del espacio de trabajo que desea abrir.",
      "openRecentWorkspace": "Abrir espacio de trabajo reciente...",
      "preserveWindow": "Habilitar la apertura de espacios de trabajo en la ventana actual.",
      "removeFolder": "¿Está seguro de que desea eliminar la siguiente carpeta del espacio de trabajo?",
      "removeFolders": "¿Está seguro de que desea eliminar las siguientes carpetas del espacio de trabajo?",
      "restrictedModeDescription": "Algunas funciones están deshabilitadas porque este espacio de trabajo no es de confianza.",
      "restrictedModeFeatures": "Funciones como la ejecución de tareas, la depuración, las extensiones y la IA están desactivadas para proteger contra código potencialmente dañino.",
      "schema": {
        "folders": {
          "description": "Carpetas raíz en el espacio de trabajo"
        },
        "title": "Archivo del espacio de trabajo"
      },
      "trashTitle": "Mover «{0}» a la papelera",
      "trustDialogMessage": "Si confías en los autores, el código de esta carpeta puede ejecutarse, incluyendo tareas, configuraciones de depuración, extensiones y funciones de IA.",
      "trustDialogRestricted": "Si no confías en los autores, el espacio de trabajo se abrirá en modo restringido, lo que desactiva estas funciones para protegerte contra código potencialmente dañino.",
      "trustEmptyWindow": "Controla si el espacio de trabajo vacío es confiable de forma predeterminada.",
      "trustEnabled": "Controla si la confianza del espacio de trabajo está habilitada o no. Si está deshabilitada, todos los espacios de trabajo son confiables.",
      "trustLearnMore": "Más información sobre Workspace Trust de Theia",
      "trustTrustedFolders": "Lista de URI de carpetas que son de confianza sin necesidad de preguntar.",
      "untitled-cleanup": "Parece que hay muchos archivos de espacio de trabajo sin título. Comprueba {0} y elimina los archivos que no se utilicen.",
      "variables": {
        "cwd": {
          "description": "El directorio de trabajo actual del ejecutor de tareas al inicio."
        },
        "file": {
          "description": "La ruta del archivo actualmente abierto."
        },
        "fileBasename": {
          "description": "El nombre base del archivo actualmente abierto."
        },
        "fileBasenameNoExtension": {
          "description": "El nombre del archivo actualmente abierto sin extensión."
        },
        "fileDirname": {
          "description": "El nombre del directorio del archivo actualmente abierto."
        },
        "fileExtname": {
          "description": "La extensión del archivo actualmente abierto."
        },
        "relativeFile": {
          "description": "La ruta del archivo actualmente abierto en relación con la raíz del espacio de trabajo."
        },
        "relativeFileDirname": {
          "description": "El nombre del directorio del archivo abierto actualmente en relación con ${workspaceFolder}."
        },
        "workspaceFolder": {
          "description": "La ruta de la carpeta raíz del espacio de trabajo."
        },
        "workspaceFolderBasename": {
          "description": "El nombre de la carpeta raíz del espacio de trabajo."
        },
        "workspaceRoot": {
          "description": "La ruta de la carpeta raíz del espacio de trabajo."
        },
        "workspaceRootFolderName": {
          "description": "El nombre de la carpeta raíz del espacio de trabajo."
        }
      },
      "workspaceFolderAdded": "Se ha creado un espacio de trabajo con varias raíces. ¿Desea guardar la configuración de su espacio de trabajo como un archivo?",
      "workspaceFolderAddedTitle": "Carpeta añadida al espacio de trabajo"
    }
  },
  "vsx.disabling": "Desactivar",
  "vsx.disabling.extensions": "Desactivar {0}...",
  "vsx.enabling": "Habilitar",
  "vsx.enabling.extension": "Habilitando {0}..."
}
