// Spanish (es).
export default {
  'brand': 'WebBrain',

  'sp.status.disconnected': 'Desconectado',
  'sp.status.connected': 'Conectado ({model})',
  'sp.status.error': 'Error: {msg}',
  'sp.status.failed': 'Falló la conexión',
  'sp.btn.verbose': 'Alternar registro detallado de herramientas',
  'sp.btn.language': 'Idioma',
  'sp.btn.settings': 'Ajustes',
  'sp.btn.clear': 'Nueva conversación (borrar historial)',
  'sp.btn.send': 'Enviar',
  'sp.btn.stop.title': 'Detener agente',
  'sp.btn.stop.label': 'Detener',

  'sp.inspection': 'WebBrain empezó a inspeccionar esta página',

  'sp.greeting.html': '¡Hola! Soy <strong>WebBrain</strong>. Puedo leer esta página, responder preguntas, hacer clic en botones, rellenar formularios y automatizar tareas de varios pasos.',
  'sp.greeting.hint': 'Prueba: «Resume esta página» o «Busca todos los enlaces sobre precios»',
  'sp.help_message': '¿Cómo puedo ayudarte con esta página?',
  'sp.cleared_message': 'Conversación borrada. ¿En qué puedo ayudarte?',

  'sp.mode.ask': 'Preguntar',
  'sp.mode.ask.title': 'Haz preguntas sobre la página — sin hacer cambios',
  'sp.mode.act': 'Actuar',
  'sp.mode.act.title': 'Deja que WebBrain haga clic, escriba y navegue por ti',
  'sp.mode.act.warning': 'Modo Actuar: WebBrain interactuará con las páginas en tu nombre. Úsalo bajo tu propia responsabilidad.',
  'sp.mode.act.confirm': 'El modo Actuar permite a WebBrain hacer clic, escribir, desplazar y navegar en tu nombre.\n\nSe ejecuta dentro de tu sesión autenticada del navegador, por lo que tiene el mismo acceso que tú en cada sitio en el que has iniciado sesión.\n\nObserva lo que hace y detenlo en cualquier momento con el botón ◼.\n\n¿Continuar?',

  'sp.input.ask_placeholder': 'Pregunta lo que quieras sobre esta página...',
  'sp.input.act_placeholder': 'Dime qué hacer en esta página...',

  'sp.activity.thinking': 'Pensando...',
  'sp.activity.thinking_step': 'Pensando (paso {step})...',
  'sp.activity.continuing': 'Continuando...',
  'sp.activity.stopping': 'Deteniendo...',

  'sp.copy': 'Copiar',
  'sp.copied': '¡Copiado!',
  'sp.copy.code.title': 'Copiar código',

  'sp.error_prefix': 'Error: {msg}',
  'sp.stopped_by_user': '[Detenido por el usuario]',
  'sp.stopped_by_user_html': '<em>Detenido por el usuario.</em>',

  'sp.continue_bar': 'Se alcanzó el límite de pasos ({steps} pasos). ¿Quieres que continúe?',
  'sp.continue_btn': 'Continuar',

  'sp.step.details': 'detalles',
  'sp.step.input_label': 'Entrada',
  'sp.step.result_label': 'Resultado',

  'sp.api.enabled_html': '🔓 <strong>Mutaciones de API habilitadas</strong> en esta conversación. El agente ahora puede usar POST/PUT/PATCH/DELETE mediante fetch_url y execute_js cuando considere que la API es más fiable que la interfaz para un paso. La interfaz sigue siendo la opción por defecto. Este indicador se desactiva al reiniciar la conversación.',
  'sp.api.badge_html': '<span>🔓 Mutaciones de API permitidas</span>',

  'tool.read_page': 'Leyendo página',
  'tool.get_interactive_elements': 'Escaneando elementos interactivos',
  'tool.click': 'Haciendo clic',
  'tool.type_text': 'Escribiendo',
  'tool.scroll': 'Desplazando',
  'tool.navigate': 'Navegando',
  'tool.extract_data': 'Extrayendo datos',
  'tool.wait_for_element': 'Esperando elemento',
  'tool.get_selection': 'Leyendo selección',
  'tool.execute_js': 'Ejecutando script',
  'tool.new_tab': 'Abriendo pestaña nueva',
  'tool.screenshot': 'Capturando pantalla',
  'tool.done': 'Finalizando',
  'tool.click.selector': 'Haciendo clic en «{selector}»',
  'tool.click.index': 'Haciendo clic en el elemento #{index}',
  'tool.type_text.text': 'Escribiendo «{text}»',
  'tool.navigate.url': 'Yendo a {url}',
  'tool.new_tab.url': 'Abriendo {url}',
  'tool.scroll.direction': 'Desplazando {direction}',
  'tool.extract_data.type': 'Extrayendo {type}',
  'tool.wait_for_element.selector': 'Esperando «{selector}»',

  'st.title': 'Ajustes de WebBrain',
  'st.subtitle': 'Configura tus proveedores de LLM y preferencias de visualización · v{version}',
  'st.tab.display': 'Visualización',
  'st.tab.providers': 'Proveedores',
  'st.tab.vision': 'Visión',
  'st.tab.profile': 'Perfil',
  'st.tab.account': 'Cuenta',

  'st.account.not_signed_in': 'Sesión no iniciada',
  'st.account.sign_in': 'Iniciar sesión / Registrarse',
  'st.account.sign_out': 'Cerrar sesión',
  'st.account.provider_name': 'WebBrain Cloud',

  'st.display.language.label': 'Idioma',
  'st.display.language.desc': 'Idioma de la interfaz del plugin WebBrain.',
  'st.display.verbose.label': 'Modo detallado',
  'st.display.verbose.desc': 'Muestra todos los detalles de las llamadas a herramientas, argumentos y resultados JSON sin procesar. Desactivado por defecto para una experiencia de chat más limpia.',
  'st.display.screenshot.label': 'Captura de pantalla como respaldo',
  'st.display.screenshot.desc': 'Captura una imagen de la página cuando la lectura del DOM falla o devuelve contenido insuficiente. Requiere un modelo con capacidad de visión.',
  'st.display.site_adapters.label': 'Adaptadores de sitio',
  'st.display.site_adapters.desc': 'Inyecta orientación breve y cuidada para sitios de alto tráfico conocidos (GitHub, Gmail, Stripe, AWS, etc.) en el primer mensaje del agente. Ayuda al agente a evitar callejones sin salida comunes. Añade un pequeño coste en tokens en el primer turno de las conversaciones en sitios coincidentes.',
  'st.display.auto_screenshot.label': 'Captura automática',
  'st.display.auto_screenshot.desc': 'Captura automáticamente una imagen de la ventana tras cada acción del agente, para que los modelos con visión vean qué ha cambiado. Consume más tokens. Se desactiva silenciosamente si el modelo activo no admite imágenes.',
  'st.display.auto_screenshot.off': 'Desactivada',
  'st.display.auto_screenshot.navigation': 'Al navegar',
  'st.display.auto_screenshot.state_change': 'Al cambiar de estado (por defecto)',
  'st.display.auto_screenshot.every_step': 'En cada paso',
  'st.display.tracing.label': 'Registrar trazas (para comparar modelos)',
  'st.display.tracing.desc_html': 'Guarda cada ejecución (peticiones al LLM, respuestas, llamadas a herramientas, capturas) en IndexedDB local para que puedas inspeccionar y comparar modelos lado a lado. Se abre en una pestaña de Trazas aparte. Desactivado por defecto porque añade escrituras en disco por paso. <a href="traces.html" target="_blank" style="color:var(--accent);">Abrir página de Trazas →</a>',
  'st.display.allow_local_network.label': 'Permitir al agente acceder a la red local',
  'st.display.allow_local_network.desc': 'Permite que la herramienta fetch_url del agente alcance direcciones loopback (127.0.0.1, localhost) y privadas/RFC1918 (10.x, 192.168.x, 172.16–31.x). Útil para servidores de desarrollo locales, herramientas de intranet o APIs auto-alojadas. Desactivado por defecto — cuando está desactivado, páginas con inyección de prompt no pueden dirigir al agente a sondear tu red local. Las direcciones de metadatos en la nube (169.254.169.254) y los nombres de host *.internal/*.local siguen bloqueados incluso cuando está activado.',
  'st.display.notify_sound.label': 'Sonido al terminar',
  'st.display.notify_sound.desc': 'Reproduce un tono corto en el panel lateral cuando el agente termina una tarea. No suena si cancelas la ejecución.',
  'st.display.max_steps.label': 'Pasos máximos del agente',
  'st.display.max_steps.desc': 'Número máximo de pasos con herramientas que el agente puede dar por mensaje. Valores más altos permiten tareas más complejas pero pueden consumir más tokens.',
  'st.display.traces_link.label': 'Trazas',
  'st.display.traces_link.desc': 'Inspecciona las ejecuciones grabadas lado a lado. Solo está disponible cuando el registro de trazas está activo.',
  'st.display.traces_link.open': 'Abrir Trazas →',

  'st.providers.info.html': '<strong>Primeros pasos con llama.cpp:</strong><br>Ejecuta <code>llama-server -m tu-modelo.gguf --port 8080</code> para iniciar un servidor local.<br>No se necesita clave de API — se ejecuta enteramente en tu máquina.',
  'st.providers.save': 'Guardar',
  'st.providers.test': 'Probar conexión',
  'st.providers.set_active': 'Establecer activo',
  'st.providers.active': 'ACTIVO',
  'st.providers.saved': '¡Guardado!',
  'st.providers.testing': 'Probando...',
  'st.providers.connected': '¡Conectado! Modelo: {model}',
  'st.providers.unknown_model': 'desconocido',
  'st.providers.failed': 'Falló: {error}',
  'st.providers.load_models': 'Cargar modelos',
  'st.providers.loading': 'Cargando…',
  'st.providers.models_loaded': '{count} modelos cargados',

  'st.provider.field.server_url': 'URL del servidor',
  'st.provider.field.api_base_url': 'URL base de la API',
  'st.provider.field.api_key': 'Clave de API',
  'st.provider.field.model': 'Modelo',
  'st.provider.field.model_optional': 'Modelo (opcional)',
  'st.provider.field.supports_vision': 'El modelo admite visión (multimodal)',
  'st.provider.field.compact_prompt': 'Prompt compacto (recomendado para modelos pequeños, activado por defecto)',
  'st.provider.field.model_loaded_hint': 'déjalo en blanco para usar el modelo cargado',

  'st.vision.desc': 'Si se define, las capturas de pantalla se envían a este modelo para leer la página, mientras el proveedor activo se encarga de la planificación y las llamadas a herramientas. Déjalo en blanco para usar también el proveedor activo para la visión. Solo endpoints compatibles con OpenAI.',
  'st.vision.save': 'Guardar',
  'st.vision.test': 'Probar conexión',
  'st.vision.clear': 'Limpiar',
  'st.vision.cleared': 'Limpiado.',
  'st.vision.saved': '¡Guardado!',
  'st.vision.testing': 'Probando...',
  'st.vision.connected': '¡Conectado! Modelo: {model}',
  'st.vision.failed': 'Falló: {error}',
  'st.vision.fill_required': 'Rellena primero la URL base y el modelo.',

  'st.profile.desc_html': 'Guarda una biografía breve que el agente puede usar para rellenar formularios de registro sin preguntar cada vez — tu nombre, correo de trabajo, empresa, y una contraseña <em>desechable</em> para registros poco importantes. Cuando está activado, el texto siguiente se añade al prompt del sistema del agente en cada conversación.',
  'st.profile.enabled.label': 'Activar autocompletado del perfil',
  'st.profile.enabled.desc': 'Inyecta el texto del perfil en el prompt del sistema del agente. Desactivado = el agente nunca ve este texto.',
  'st.profile.text.label': 'Texto del perfil',
  'st.profile.text.placeholder': 'Soy Jane Doe. Mi correo es jane@example.com. Trabajo en Acme Inc. Mi contraseña por defecto para registros poco importantes es SomePhrase-42!. Vivo en Berlín.',
  'st.profile.save': 'Guardar',
  'st.profile.clear': 'Limpiar',
  'st.profile.saved': 'Guardado.',
  'st.profile.cleared': 'Limpiado.',
  'st.profile.security_html': '<strong>Seguridad — léelo:</strong><br><ul style="margin:6px 0 0 18px;padding:0;line-height:1.55;"><li>El texto que introduces aquí se guarda <strong>en texto plano</strong> en el almacenamiento local del navegador. <strong>No</strong> se envía al proyecto WebBrain — pero <strong>sí</strong> se envía al proveedor de LLM que hayas configurado en cada turno, como parte del prompt del sistema.</li><li><strong>No pongas aquí contraseñas de cuentas importantes</strong> (Google, Apple, iCloud, banca, SSO de trabajo, correo principal). Esas cuentas deberían usar 2FA y no deberías entregárselas a un agente.</li><li>Una <strong>contraseña desechable</strong> que reutilizas para registros poco importantes (boletines, pruebas gratuitas, cuentas de foro) es el uso previsto.</li><li>Si este perfil del navegador alguna vez se ve comprometido, un atacante con acceso al disco podrá leer este texto. Mantenlo al mínimo.</li></ul>',

  'tr.title': 'Trazas de WebBrain',
  'tr.runs': '{n} ejecuciones',
  'tr.run': '{n} ejecución',
  'tr.btn.refresh': '↻ Actualizar',
  'tr.btn.refresh.title': 'Recargar la lista de ejecuciones',
  'tr.btn.compare': '⇔ Comparar',
  'tr.btn.compare.title': 'Entrar en modo comparar (elige 2 ejecuciones)',
  'tr.btn.compare.picking': '⇔ Comparar (elige 2)',
  'tr.btn.export': '⇩ Exportar JSON',
  'tr.btn.export.title': 'Exportar la ejecución seleccionada como JSON',
  'tr.btn.delete': '✕ Borrar',
  'tr.btn.delete.title': 'Borrar la ejecución seleccionada',
  'tr.btn.clear_all': 'Borrar todo',
  'tr.btn.clear_all.title': 'Borrar todas las ejecuciones guardadas',

  'tr.filter.placeholder': 'Filtrar por tarea / modelo / URL',
  'tr.filter.all_models': 'Todos los modelos',
  'tr.no_match': 'Ninguna ejecución coincide.',
  'tr.no_task': '(sin tarea)',

  'tr.conversation.label': 'Conversación',
  'tr.conversation.turn_of': 'turno {n} de {total}',
  'tr.conversation.tooltip': 'Forma parte de una conversación de {n} turnos ({id}). Abre la ejecución para saltar entre turnos.',

  'tr.cost.label': 'Coste:',
  'tr.cost.tooltip': 'Coste total del LLM informado por el proveedor (USD). Resaltado en naranja a partir de 0,50 $ sin respuesta final — probablemente una ejecución desperdiciada.',

  'tr.empty.title': 'Ninguna ejecución seleccionada.',
  'tr.empty.hint_html': 'Elige una ejecución a la izquierda para ver su línea de tiempo paso a paso. Pulsa <b>Comparar</b> para elegir dos ejecuciones y verlas lado a lado.',

  'tr.compare_mode.title': 'Modo comparar',
  'tr.compare_mode.picked': 'Elegidas {n}/2. Pulsa en otra ejecución para completar la comparación.',
  'tr.compare_mode.hint': 'Pulsa en dos ejecuciones de la lista para compararlas lado a lado.',

  'tr.status.label': 'estado',
  'tr.steps.label': 'pasos',
  'tr.step': '{n} paso',
  'tr.steps_plural': '{n} pasos',
  'tr.duration.label': 'duración',
  'tr.intokens.label': 'tokens-entrada',
  'tr.outtokens.label': 'tokens-salida',
  'tr.tokens_short': '{n} tok',
  'tr.unknown_model': 'desconocido',
  'tr.final_label': 'Final:',

  'tr.deleted': 'Borrada.',
  'tr.all_deleted': 'Todas las ejecuciones borradas.',
  'tr.select_first': 'Selecciona primero una ejecución.',
  'tr.confirm_delete': '¿Borrar esta ejecución?',
  'tr.confirm_delete_all': '¿Borrar TODAS las ejecuciones guardadas? Esta acción no se puede deshacer.',

  'tr.event.llm_request': '→ Petición al LLM',
  'tr.event.llm_response': '← Respuesta del LLM',
  'tr.event.vision_sub_call': '👁 subllamada de visión',
  'tr.event.error_kind': '⚠ error',
  'tr.event.messages_tools': '{m} mensajes, {t} herramientas · {model}',
  'tr.event.screenshot_caption': 'captura',
  'tr.event.screenshot_missing': '(falta el blob de la captura)',
  'tr.event.description_truncated': '... [truncado en la vista de comparación]',
  'tr.event.vision_failed': 'subllamada de visión fallida: {error}',
  'tr.event.description': 'descripción',
  'tr.event.args': 'argumentos',
  'tr.event.result': 'resultado',
  'tr.event.step': 'paso {step}',
};
