<?php
return array(
    'LolaCore – AI Admin Agent' => 'LolaCore – Agente de administración IA',
    'https://lolacore.com' => 'https://lolacore.com',
    'An AI agent in wp-admin that remembers your site. 75 abilities for WordPress, WooCommerce, and custom builders — through chat.' => 'Un agente de IA en tu wp-admin que recuerda tu sitio. 75 habilidades para WordPress, WooCommerce y builders personalizados — desde el chat.',
    'Fran Barbero' => 'Fran Barbero',
    'https://profiles.wordpress.org/vanguardhive/' => 'https://profiles.wordpress.org/vanguardhive/',
    'LolaCore needs WordPress 7.0 or later to run. Update WordPress in Dashboard → Updates and Lola will be ready to go.' => 'LolaCore necesita WordPress 7.0 o superior para funcionar. Actualiza WordPress en Escritorio → Actualizaciones y Lola estará lista.',
    'Addons' => 'Addons',
    'LolaCore' => 'LolaCore',
    'AI assistant abilities for site management, memory, and diagnostics.' => 'Habilidades del asistente IA para gestión del sitio, memoria y diagnósticos.',
    'Get Site Info' => 'Obtener información del sitio',
    'Get the complete state of the site.' => 'Obtiene el estado completo del sitio.',
    'Get Memory Context' => 'Obtener contexto de memoria',
    'Retrieve relevant memory context given a prompt.' => 'Recupera el contexto de memoria relevante para un mensaje.',
    'Add Memory Fact' => 'Añadir hecho a la memoria',
    'Add an explicit fact to memory.' => 'Añade un hecho explícito a la memoria.',
    'Add Skill' => 'Añadir skill',
    'Stores a new behavioral skill in inactive state so the user can review the source before activating it.' => 'Guarda una nueva skill de comportamiento en estado inactivo para que puedas revisar el código antes de activarla.',
    'Get Action History' => 'Obtener historial de acciones',
    'History of actions executed by Lola.' => 'Historial de acciones ejecutadas por Lola.',
    'Get Scan Data' => 'Obtener datos del análisis',
    'Data from the last algorithmic scan.' => 'Datos del último análisis algorítmico.',
    'Chat with Lola' => 'Chatear con Lola',
    'Send a message to Lola and receive a response with context.' => 'Envía un mensaje a Lola y recibe una respuesta con contexto.',
    'Execute Action' => 'Ejecutar acción',
    'Dispatcher: execute any registered action of Lola.' => 'Dispatcher: ejecuta cualquier acción registrada de Lola.',
    'Both content and fact_type are required.' => 'Los campos content y fact_type son obligatorios.',
    'Fact saved to memory.' => 'Hecho guardado en memoria.',
    'Failed to save fact.' => 'No se pudo guardar el hecho.',
    'No scan has been performed yet.' => 'Todavía no se ha realizado ningún análisis.',
    'Chat with Lola requires the admin UI (SSE streaming). For programmatic access, use the lolacore/execute-action ability to run specific actions, or lolacore/get-memory-context to query Lola\'s knowledge.' => 'Chatear con Lola requiere la interfaz de administración (streaming SSE). Para acceso programático, usa la habilidad lolacore/execute-action para ejecutar acciones concretas, o lolacore/get-memory-context para consultar lo que Lola sabe.',
    'LolaCore requires PHP version 8.0.0 or higher. You are running %s' => 'LolaCore necesita PHP 8.0.0 o superior. Tienes la versión %s',
    'LolaCore requires WordPress version 7.0 or higher. You are running %s' => 'LolaCore necesita WordPress 7.0 o superior. Tienes la versión %s',
    'You do not have sufficient permissions to access this page.' => 'No tienes permisos suficientes para acceder a esta página.',
    'Lola' => 'Lola',
    'Settings template not found.' => 'Plantilla de ajustes no encontrada.',
    'Addons template not found.' => 'Plantilla de Addons no encontrada.',
    'MCP Settings template not found.' => 'No encuentro la plantilla de ajustes de MCP.',
    'Site Diagnostics & Security' => 'Diagnóstico y seguridad del sitio',
    'Plugin Management' => 'Gestión de plugins',
    'Plugin Builder' => 'Plugin Builder',
    'Content & Metadata' => 'Contenido y metadatos',
    'User Management' => 'Gestión de usuarios',
    'Database & Cache' => 'Base de datos y caché',
    'Taxonomies & Media' => 'Taxonomías y multimedia',
    'WooCommerce Operations' => 'Operaciones WooCommerce',
    'Themes & Settings' => 'Temas y ajustes',
    'Only .md files are accepted.' => 'Solo se aceptan archivos .md.',
    'File exceeds 100 KB limit.' => 'El archivo supera el límite de 100 KB.',
    'Failed to read uploaded file.' => 'No se pudo leer el archivo subido.',
    'Skill content cannot be empty.' => 'El contenido de la skill no puede estar vacío.',
    'Thinking…' => 'Pensando…',
    'Looking into it…' => 'Lo estoy mirando…',
    'Let me check a few things…' => 'Déjame comprobar unas cosas…',
    'Going through the details…' => 'Revisando los detalles…',
    'Processing your request…' => 'Procesando tu solicitud…',
    'Connecting a few pieces…' => 'Conectando algunas piezas…',
    'Give me a second on this one…' => 'Dame un segundo con esto…',
    'On it…' => 'En ello…',
    'Hmm, trickier than I thought…' => 'Hmm, más complicado de lo que pensaba…',
    'Hold on — I want to get this right.' => 'Espera, quiero hacerlo bien.',
    'OK, I see what\'s going on here…' => 'Vale, veo lo que está pasando aquí…',
    'Don\'t rush me.' => 'No me metas prisa.',
    'This deserves a proper answer…' => 'Esto merece una respuesta como es debida…',
    'I have opinions about this. One sec.' => 'Tengo opiniones sobre esto. Un segundo.',
    'Let me approach this differently…' => 'Déjame enfocarlo de otra manera…',
    'OK let me focus a bit harder…' => 'Vale, voy a concentrarme un poco más…',
    'Still working — this one needs extra attention.' => 'Sigo en ello, esto necesita atención especial.',
    'Taking a bit longer than usual…' => 'Está tardando un poco más de lo habitual…',
    'Bear with me, almost cracked it…' => 'Aguanta, casi lo tengo…',
    'ONLINE' => 'EN LÍNEA',
    'Minimize' => 'Minimizar',
    'New session' => 'Nueva sesión',
    'Analyzing your site…' => 'Analizando tu sitio…',
    'Reviewing plugins and security…' => 'Revisando plugins y seguridad…',
    'Building your site profile…' => 'Construyendo tu perfil de sitio…',
    'Write to Lola...' => 'Escríbele a Lola...',
    'Lola is thinking…' => 'Lola está pensando…',
    'Lola is an AI and can make mistakes. Please review actions before confirming.' => 'Lola es una IA y puede cometer errores. Revisa las acciones antes de confirmar.',
    'Hello. I\'m ready. What shall we look into today?' => 'Hola. Estoy lista. ¿En qué nos ponemos hoy?',
    'Shall we continue or start something new?' => '¿Seguimos donde lo dejamos o empezamos algo nuevo?',
    'Last session summary:' => 'Resumen de la última sesión:',
    'I\'ve reviewed your site and the report is ready. To get started, I need you to connect an AI provider in Settings → Connectors. You\'ll need an account with the provider and an API key — about 5 minutes, and the Connectors screen links you to the right place for each one.' => 'Ya he revisado tu sitio y tengo el informe. Para que empecemos, necesito que conectes un proveedor de IA en Ajustes → Conectores. Tendrás que crear cuenta en el proveedor y generar una clave de API. Son unos 5 minutos, y la pantalla de Conectores te enlaza al sitio exacto de cada proveedor.',
    'Still waiting on that AI provider so we can get started. The button below takes you there — about 5 minutes.' => 'Sigo esperando el proveedor de IA para que podamos empezar. El botón de abajo te lleva, son unos 5 minutos.',
    'Connect an AI provider to chat with me' => 'Conecta un proveedor de IA para hablar conmigo',
    'Now I can see your site. I went over the initial report — ask me anything, or tell me to walk you through what I found.' => 'Ya te veo. He repasado el informe inicial. Pregúntame lo que quieras o dime que te cuente lo que he encontrado.',
    'Configure AI Connectors' => 'Configurar conectores de IA',
    'I\'ve completed the initial scan of your site.' => 'He completado el análisis inicial de tu sitio.',
    'I\'ve completed the initial scan of your site. Here\'s your summary:' => 'He completado el análisis inicial de tu sitio. Aquí tienes el resumen:',
    'Initial System Report' => 'Informe inicial del sistema',
    'Status:' => 'Estado:',
    'Healthy' => 'Sin problemas',
    'Needs Attention' => 'Requiere atención',
    'WordPress:' => 'WordPress:',
    'PHP:' => 'PHP:',
    'Active Theme:' => 'Tema activo:',
    'Plugins:' => 'Plugins:',
    'Content:' => 'Contenido:',
    'Database:' => 'Base de datos:',
    'active' => 'activo',
    'installed' => 'instalado',
    'posts' => 'entradas',
    'pages' => 'páginas',
    'I couldn\'t get a response. This is usually a temporary connection issue — try sending your message again. If it keeps happening, check that your AI provider is still connected in Settings → Connectors.' => 'No he podido obtener respuesta. Suele ser un problema de conexión temporal. Intenta enviar tu mensaje de nuevo. Si sigue pasando, comprueba que tu proveedor de IA sigue conectado en Ajustes → Conectores.',
    'I ran into a database problem on your site before my reply could load in the chat. Refresh the page and try again. If it keeps happening, update LolaCore — it is usually a missing plugin table, not your hosting.' => 'He tenido un problema con la base de datos de tu sitio antes de que mi respuesta llegara al chat. Recarga la página e inténtalo de nuevo. Si sigue pasando, actualiza LolaCore: suele ser una tabla del plugin que falta, no tu hosting.',
    'Your hosting security layer blocked this request before it reached WordPress. Ask your host to allow admin-ajax.php for logged-in administrators, or try again from another network.' => 'La capa de seguridad de tu hosting bloqueó esta petición antes de que llegara a WordPress. Pide a tu hosting que permita admin-ajax.php para administradores con sesión iniciada, o inténtalo desde otra red.',
    'The server took too long to answer and the connection dropped. Try again in a moment, or ask a simpler question first.' => 'El servidor tardó demasiado en responder y se cortó la conexión. Vuelve a intentarlo en un momento, o haz una pregunta más corta primero.',
    'WordPress returned an empty response — the request may have been interrupted. Refresh the page and try again.' => 'WordPress devolvió una respuesta vacía; puede que la petición se interrumpiera. Recarga la página e inténtalo de nuevo.',
    'I got a garbled response from the server — not your hosting blocking the message, but something broke the reply format. Refresh and try again; if it persists, update LolaCore.' => 'He recibido una respuesta corrupta del servidor: no es tu hosting bloqueando el mensaje, sino que algo rompió el formato de la respuesta. Recarga e inténtalo; si persiste, actualiza LolaCore.',
    'I need your approval to proceed:' => 'Necesito tu aprobación para continuar:',
    'Preview failed' => 'Error en la vista previa',
    'Approval required' => 'Se requiere aprobación',
    'Action' => 'Acción',
    'Approve and execute' => 'Aprobar y ejecutar',
    'Fix the preview error before executing.' => 'Corrige el error de la vista previa antes de ejecutar.',
    'Dismiss' => 'Descartar',
    'Executing…' => 'Ejecutando…',
    'Cancelling…' => 'Cancelando…',
    'Executed' => 'Ejecutado',
    'Cancelled' => 'Cancelado',
    'Error' => 'Error',
    'The engineering team is drafting the plugin…' => 'El equipo de desarrollo está redactando el plugin…',
    'Starting job...' => 'Empezando…',
    'Working...' => 'Trabajando…',
    'Building in background...' => 'Construyendo en segundo plano…',
    'Your starter plugin is ready for review.' => 'Tu plugin inicial está listo para revisar.',
    'Built plugin' => 'Plugin construido',
    'Technical details' => 'Detalles técnicos',
    'Try again' => 'Reintentar',
    'Couldn\'t finish this build' => 'No he podido terminar esta construcción',
    'I couldn\'t start the build again. Refresh the page and try once more.' => 'No he podido volver a empezar la construcción. Recarga la página e inténtalo una vez más.',
    'Open in Playground again' => 'Abrir en Playground otra vez',
    'Copy link' => 'Copiar enlace',
    'Copied' => 'Copiado',
    'Done.' => 'Hecho.',
    'Save to library' => 'Guardar en la biblioteca',
    'Not yet' => 'Todavía no',
    'Your update is ready. Save it when you\'re happy to continue.' => 'Tu actualización está lista. Guárdala cuando estés conforme para continuar.',
    'Your starter plugin is ready. It should activate and show the settings you asked for — save it, try it in Playground, and tell me what to refine.' => 'Tu plugin inicial está listo. Debería activarse y mostrar los ajustes que pediste — guárdalo, pruébalo en Playground y dime qué pulir.',
    'Your update is ready to test' => 'Tu actualización está lista para probar',
    'Your starter plugin is ready' => 'Tu plugin inicial está listo',
    'Your block is saved to the library.' => 'He guardado el bloque en la biblioteca.',
    'Your block has been updated.' => 'He actualizado el bloque.',
    'Your block is ready to test in Playground.' => 'Tu bloque está listo para probar en Playground.',
    'Your plugin is saved to the library.' => 'He guardado el plugin en la biblioteca.',
    'Your plugin has been updated.' => 'He actualizado el plugin.',
    'Your plugin is ready to test in Playground.' => 'Tu plugin está listo para probar en Playground.',
    'Action completed.' => 'Hecho.',
    'The plugin was generated, but I couldn\'t render the review card. Open the Built Plugins library to find it.' => 'He generado el plugin, pero no he podido mostrar la tarjeta de revisión. Ábrelo en la biblioteca de Plugins construidos.',
    'I didn\'t get a usable reply from the model — the response came back empty. Please send your message again. If this keeps happening with DeepSeek V4 Flash on large plugin requests, switch to DeepSeek V4 Pro in Settings or try a shorter prompt first.' => 'No he recibido una respuesta útil del modelo — llegó vacía. Envíame tu mensaje otra vez. Si te sigue pasando con DeepSeek V4 Flash en peticiones de plugin grandes, cambia a DeepSeek V4 Pro en Ajustes o prueba antes con un prompt más corto.',
    'Done — your changes were applied successfully. I had trouble generating a detailed summary, but everything went through. Ask me to verify if you want to double-check.' => 'Hecho — tus cambios se aplicaron. Me costó generar un resumen detallado, pero todo salió bien. Pídeme que lo verifique si quieres asegurarte.',
    'The plugin preview expired before it could be saved. Ask me to build it again and it\'ll be ready in a moment.' => 'La vista previa del plugin caducó antes de poder guardarla. Pídeme que lo construya otra vez y estará listo en un momento.',
    'I can\'t install this version on your site yet. Open it in Playground first, check the settings page and the front end, then tap Install on my site when it does what you asked for.' => 'Todavía no puedo instalar esta versión en tu sitio. Ábrela primero en Playground, revisa la página de ajustes y la parte pública, y luego toca Instalar en mi sitio cuando haga lo que pediste.',
    'Your session has expired. Refresh the page to continue — your conversation history is saved.' => 'Tu sesión ha expirado. Recarga la página para continuar, tu historial de conversación está guardado.',
    'I can\'t verify your login session. This usually happens if you\'ve been logged out of WordPress in another tab. Log back in and refresh this page.' => 'No puedo verificar tu sesión de WordPress. Suele pasar si has cerrado sesión en otra pestaña. Vuelve a iniciar sesión y recarga esta página.',
    'I lost track of this conversation. Refresh the page to start a new session — I\'ll still remember everything from our previous sessions.' => 'He perdido el hilo de esta conversación. Recarga la página para empezar una nueva sesión, seguiré recordando todo de nuestras sesiones anteriores.',
    'That confirmation has expired. For safety, pending actions are only valid for a few minutes. Tell me what you need again and I\'ll set it up.' => 'Esa confirmación ha caducado. Por seguridad, las acciones pendientes solo son válidas unos minutos. Dime de nuevo lo que necesitas y lo preparo.',
    'That confirmation link is no longer valid. Go back to Settings and try the operation again.' => 'Ese enlace de confirmación ya no es válido. Vuelve a Ajustes e intenta la operación de nuevo.',
    'I need an AI provider to work. Go to Settings → Connectors and connect one — OpenAI, Anthropic, or any provider available in your WordPress. It takes about 2 minutes.' => 'Necesito un proveedor de IA para funcionar. Ve a Ajustes → Conectores y conecta uno: OpenAI, Anthropic o cualquier proveedor disponible en tu WordPress. Son unos 2 minutos.',
    ' Wait about %d seconds, then try again.' => ' Espera unos %d segundos e inténtalo de nuevo.',
    'I\'ve hit your AI provider\'s usage limit for now.' => 'He alcanzado el límite de uso de tu proveedor de IA por ahora.',
    'On Google\'s free tier, Gemini Flash models allow about 20 requests per minute. Each message may use more than one request when I route tools or continue after an action. Check your usage at ai.google.dev, enable billing for higher limits, or switch to another provider in Settings → Connectors.' => 'En el nivel gratuito de Google, los modelos Gemini Flash permiten unas 20 solicitudes por minuto. Cada mensaje puede usar más de una solicitud cuando enruto herramientas o continúo tras una acción. Comprueba tu uso en ai.google.dev, activa la facturación para límites más altos, o cambia a otro proveedor en Ajustes → Conectores.',
    'I couldn\'t connect to your AI provider. The model you selected isn\'t responding. Check that your API key is valid and that you haven\'t hit your provider\'s usage limits.

Details: %s' => 'No pude conectar con tu proveedor de IA. El modelo que has seleccionado no responde. Comprueba que tu clave de API es válida y que no has alcanzado los límites de uso de tu proveedor.

Detalles: %s',
    'Your AI provider returned an error. This is usually temporary — wait a minute and try again. If it persists, check your provider\'s dashboard for billing or usage issues.

Details: %s' => 'Tu proveedor de IA ha devuelto un error. Suele ser temporal: espera un minuto e inténtalo de nuevo. Si persiste, revisa el panel de tu proveedor por temas de facturación o uso.

Detalles: %s',
    'Your AI provider isn\'t responding, and my fallback attempt also failed. This typically means the provider is down or your API key has an issue. Check your provider\'s status page or try switching to a different provider in Settings → Connectors.

Details: %s' => 'Tu proveedor de IA no responde y mi intento de respaldo también ha fallado. Suele significar que el proveedor está caído o que hay un problema con tu clave de API. Revisa la página de estado de tu proveedor o cambia a otro proveedor en Ajustes → Conectores.

Detalles: %s',
    'I\'m having trouble processing your request — a required AI component couldn\'t load. This is usually a temporary provider issue. Try again in a moment.

Details: %s' => 'Tengo problemas para procesar tu solicitud: no pude cargar un componente de IA necesario. Suele ser un problema temporal del proveedor. Inténtalo de nuevo en un momento.

Detalles: %s',
    'I ran into an issue while trying to expand my toolset for your request. Try rephrasing what you need, or try again in a moment.

Details: %s' => 'He tenido un problema al ampliar mi conjunto de herramientas para tu solicitud. Reformula lo que necesitas o inténtalo de nuevo en un momento.

Detalles: %s',
    'The site scan didn\'t complete. This can happen if your server timed out during a large scan. Try again — if it keeps failing, your hosting may need a higher PHP execution time limit.

Details: %s' => 'El análisis del sitio no se completó. Puede ocurrir si el servidor agotó el tiempo durante un análisis grande. Inténtalo de nuevo; si sigue fallando, tu hosting puede necesitar un límite de tiempo de ejecución de PHP más alto.

Detalles: %s',
    'The memory cleanup didn\'t complete. This is usually a temporary database issue. Try again — if it persists, check that your database user has permission to optimize tables.

Details: %s' => 'La limpieza de memoria no se completó. Suele ser un problema temporal de la base de datos. Inténtalo de nuevo; si persiste, comprueba que tu usuario de base de datos tiene permiso para optimizar tablas.

Detalles: %s',
    'The memory import didn\'t complete. This can happen if the file is corrupted or incompatible. Try exporting a fresh copy and importing again.

Details: %s' => 'La importación de memoria no se completó. Puede ocurrir si el archivo está corrupto o es incompatible. Exporta una copia nueva e impórtala de nuevo.

Detalles: %s',
    'The memory wipe didn\'t complete. This is usually a temporary database issue. Try again in a moment.

Details: %s' => 'El borrado de memoria no se completó. Suele ser un problema temporal de la base de datos. Inténtalo de nuevo en un momento.

Detalles: %s',
    'That file doesn\'t contain valid data. Make sure you\'re uploading an export file generated by LolaCore (.json format).' => 'Ese archivo no contiene datos válidos. Asegúrate de subir un archivo de exportación generado por LolaCore (formato .json).',
    'This file doesn\'t look like a LolaCore memory export — it\'s missing the expected data structure. Use a file exported from LolaCore\'s Settings → Maintenance → Export.' => 'Este archivo no parece una exportación de memoria de LolaCore: le falta la estructura de datos esperada. Usa un archivo exportado desde Ajustes → Mantenimiento → Exportar en LolaCore.',
    'This memory export came from a different WordPress site. Importing memories from another site could cause Lola to reference plugins, settings, or content that don\'t exist here. If you\'re migrating, export from this site\'s current state instead.' => 'Esta exportación de memoria es de otro sitio WordPress. Importar memorias de otro sitio podría hacer que Lola referencie plugins, ajustes o contenido que no existe aquí. Si estás migrando, exporta desde el estado actual de este sitio.',
    'I couldn\'t read that file. Make sure it\'s a .json file and that it\'s not empty or corrupted. Try downloading a fresh export and uploading again.' => 'No pude leer ese archivo. Asegúrate de que es un archivo .json y de que no está vacío ni corrupto. Descarga una exportación nueva e intenta subirlo de nuevo.',
    'No file was received. Select a .json export file and try again.' => 'No se ha recibido ningún archivo. Selecciona un archivo de exportación .json e inténtalo de nuevo.',
    'That upload doesn\'t look right. Make sure you\'re selecting a valid file and try again.' => 'Esa subida no parece correcta. Asegúrate de seleccionar un archivo válido e inténtalo de nuevo.',
    'This feature is temporarily unavailable while we upgrade the underlying system. It will be back soon.' => 'Esta función no está disponible temporalmente mientras actualizamos el sistema. Volverá pronto.',
    'Built-in and addon skills cannot be toggled here. They are controlled by the plugin or addon.' => 'Las skills integradas y de addons no se pueden activar aquí. Las controla el plugin o el addon.',
    'Only user-created or Lola-generated skills can be deleted from here.' => 'Solo se pueden eliminar desde aquí las skills creadas por el usuario o generadas por Lola.',
    'Skill not found.' => 'Skill no encontrada.',
    'I need a license key to activate this addon. Paste it above and try again.' => 'Necesito una clave de licencia para activar este addon. Pégala arriba e inténtalo de nuevo.',
    'I couldn\'t reach the license server. Check your connection and try again.' => 'No pude contactar con el servidor de licencias. Comprueba tu conexión e inténtalo de nuevo.',
    'This license has reached its activation limit. Deactivate it from the other site first.' => 'Esta licencia ha alcanzado su límite de activaciones. Desactívala en el otro sitio primero.',
    'I couldn\'t activate this license. Double-check the key and try again.' => 'No pude activar esta licencia. Comprueba la clave e inténtalo de nuevo.',
    'This license key doesn\'t match this addon. Double-check the key and try again.' => 'Esta clave de licencia no corresponde a este addon. Comprueba la clave e inténtalo de nuevo.',
    'I couldn\'t deactivate this license right now. Try again in a few minutes.' => 'No pude desactivar esta licencia ahora mismo. Inténtalo de nuevo en unos minutos.',
    'Something went wrong on my end and I couldn\'t process that request. Try refreshing the page. If it keeps happening, your hosting provider\'s error log will have the details.' => 'Algo ha fallado de mi lado y no pude procesar la solicitud. Intenta recargar la página. Si sigue pasando, el registro de errores de tu hosting tendrá los detalles.',
    'Something went wrong on my end. Here\'s what the server reported: "%s". If this doesn\'t make sense, try refreshing the page — if the problem persists, check your AI provider settings or hosting error log.' => 'Algo ha fallado de mi lado. Esto es lo que ha informado el servidor: "%s". Si no tiene sentido, intenta recargar la página. Si el problema persiste, revisa los ajustes de tu proveedor de IA o el registro de errores del hosting.',
    'Settings saved.' => 'Ajustes guardados.',
    'Could not save settings. Try again.' => 'No se pudieron guardar los ajustes. Inténtalo de nuevo.',
    'Domains updated.' => 'Dominios actualizados.',
    'Safety settings saved.' => 'Ajustes de seguridad guardados.',
    'Confirm Action' => 'Confirmar acción',
    'Are you sure?' => '¿Estás seguro?',
    'Wipe All Memory' => 'Borrar toda la memoria',
    'Are you sure you want to wipe ALL of Lola\'s memory? This cannot be undone.' => '¿Seguro que quieres borrar TODA la memoria de Lola? Esta acción no se puede deshacer.',
    'Type WIPE to confirm:' => 'Escribe WIPE para confirmar:',
    'WIPE' => 'WIPE',
    'Wipe Memory' => 'Borrar memoria',
    'Unsaved changes' => 'Cambios sin guardar',
    'Defaults restored.' => 'Valores por defecto restaurados.',
    'Confirmations were re-enabled because no backup plugin is active. Install a backup solution before disabling confirmations.' => 'Las confirmaciones se han reactivado porque no hay ningún plugin de copia de seguridad activo. Instala una solución de backup antes de desactivar las confirmaciones.',
    'Site re-scan complete.' => 'Re-análisis del sitio completado.',
    'Imported %1$d facts (%2$d skipped).' => 'Importados %1$d hechos (%2$d omitidos).',
    'Compacted memory. Removed %1$d facts, %2$d remaining.' => 'Memoria compactada. Eliminados %1$d hechos, quedan %2$d.',
    'Memory wiped. Lola will rebuild her facts as you interact with her.' => 'Memoria borrada. Lola reconstruirá sus datos a medida que interactúes con ella.',
    'I\'ve scanned your site and have the report ready. To start working together, connect an AI provider in Settings → Connectors. You\'ll need an API key from OpenAI, Anthropic, or any provider supported by WordPress.' => 'He analizado tu sitio y tengo el informe listo. Para que empecemos a trabajar, conecta un proveedor de IA en Ajustes → Conectores. Necesitarás una clave de API de OpenAI, Anthropic o cualquier proveedor compatible con WordPress.',
    'Skill "%s" enabled.' => 'Skill "%s" activada.',
    'Skill "%s" disabled.' => 'Skill "%s" desactivada.',
    'Skill "%s" deleted.' => 'Skill "%s" eliminada.',
    'Skills reloaded. %d skills found.' => 'Skills recargadas. %d skills encontradas.',
    'Skill "%s" imported as draft. Review and activate when ready.' => 'Skill "%s" importada como borrador. Revísala y actívala cuando estés listo.',
    'Skill "%s" updated.' => 'Skill "%s" actualizada.',
    'Skill "%s" activated.' => 'Skill "%s" activada.',
    'Skill parameters saved.' => 'Parámetros de skill guardados.',
    'Skill parameters restored to defaults.' => 'Parámetros de skill restaurados a sus valores por defecto.',
    'Skills system enabled. Built-in skills are now active.' => 'Sistema de skills activado. Las skills integradas están ahora activas.',
    'Skills system disabled. Lola will not load any skill until you re-enable it.' => 'Sistema de skills desactivado. Lola no cargará ninguna skill hasta que lo reactives.',
    'License activated.' => 'Licencia activada.',
    'License deactivated.' => 'Licencia desactivada.',
    'Text generation with Claude.' => 'Generación de texto con Claude.',
    'Text generation with DeepSeek.' => 'Generación de texto con DeepSeek.',
    'Text generation with OpenAI.' => 'Generación de texto con OpenAI.',
    'Lola runs your store operations: orders, refunds, customers, and analytics.' => 'Lola lleva las operaciones de tu tienda: pedidos, reembolsos, clientes y análisis.',
    'Lola writes, tests, and manages code snippets on your site.' => 'Lola escribe, prueba y gestiona snippets de código en tu sitio.',
    'Lola reads your support tickets, spots the patterns, and drafts the replies.' => 'Lola lee tus tickets de soporte, detecta los patrones y redacta las respuestas.',
    'Lola manages your contacts, lists, and email campaigns.' => 'Lola gestiona tus contactos, tus listas y tus campañas de email.',
    'Lola builds and edits your Elementor pages: layouts, widgets, templates, and global styles.' => 'Lola construye y edita tus páginas de Elementor: estructuras, widgets, plantillas y estilos globales.',
    'Lola builds and fills your custom fields: field groups, fields, post types, and values.' => 'Lola crea y rellena tus campos personalizados: grupos de campos, campos, tipos de contenido y valores.',
    'Lola writes and audits your SEO: titles, meta descriptions, keyphrases, redirects, and site-wide fixes.' => 'Lola redacta y audita tu SEO: títulos, meta descripciones, frases clave, redirecciones y correcciones en todo el sitio.',
    'Ask Lola how your site is doing: visits, sources, content, and unusual patterns worth a look.' => 'Pregúntale a Lola cómo va tu sitio: visitas, fuentes, contenido y patrones raros que conviene mirar.',
    'Lola learns by addon. Each one adds a domain: store operations, code, support tickets, email marketing. Install what your site needs and skip what it doesn\'t.' => 'Lola aprende por addons. Cada uno añade un oficio: operaciones de tienda, código, tickets de soporte, email marketing. Instala lo que tu sitio necesita y olvídate del resto.',
    'One memory, every domain' => 'Una memoria, todos los dominios',
    'Each addon teaches Lola one domain. Active together, they stop being separate jobs: Lola\'s memory is shared, so the store, the code, the tickets, and the campaigns become one picture — causes and effects included.' => 'Cada addon le enseña a Lola un dominio. Activos a la vez, dejan de ser trabajos separados: la memoria de Lola es compartida, así que la tienda, el código, los tickets y las campañas se convierten en una sola imagen, con sus causas y sus efectos.',
    'memory · store · code' => 'memoria · tienda · código',
    'Answer from history' => 'Responder desde el historial',
    'In January you ask how the holiday sale went. Lola answers with revenue, coupon usage, and how many Black Friday customers came back — and notes she reused that campaign\'s banner snippet. She didn\'t re-scan anything. She remembered.' => 'En enero preguntas qué tal fue la campaña navideña. Lola responde con la facturación, el uso del cupón y cuántos clientes del Black Friday repitieron, y de paso apunta que reutilizó el snippet del banner de aquella campaña. No volvió a escanear nada. Lo recordaba.',
    'tickets · store · campaigns' => 'tickets · tienda · campañas',
    'Turn tickets into sales' => 'Convertir tickets en ventas',
    'Five tickets in one week ask how to do something your premium product already handles. Lola spots the pattern, checks what each customer bought, and drafts a personal reply with the upgrade they\'re missing. The support queue starts paying for itself.' => 'Cinco tickets en una semana preguntan cómo hacer algo que tu producto premium ya resuelve. Lola detecta el patrón, comprueba qué compró cada cliente y redacta una respuesta personal con la mejora que les falta. La cola de soporte empieza a pagarse sola.',
    'code · store · tickets · campaigns' => 'código · tienda · tickets · campañas',
    'Trace the cause' => 'Rastrear la causa',
    'A snippet breaks the checkout overnight and tickets start coming in. Lola traces them to the broken line, fixes it, drafts the replies, refunds the failed order, and excludes the affected customers from today\'s email sequence. One conversation.' => 'Un snippet rompe el checkout de madrugada y empiezan a llegar tickets. Lola los rastrea hasta la línea rota, la corrige, redacta las respuestas, reembolsa el pedido fallido y excluye a los clientes afectados de la secuencia de email de hoy. Una sola conversación.',
    'Nothing to configure. Addons share Lola\'s memory automatically while they\'re active — each one you add widens what she can connect.' => 'No hay nada que configurar. Los addons comparten la memoria de Lola automáticamente mientras están activos; cada uno que añades amplía lo que puede conectar.',
    'How cross-domain intelligence works →' => 'Cómo funciona la inteligencia cross-domain →',
    'Installed' => 'Instalado',
    'PREMIUM ADDON' => 'PREMIUM ADDON',
    'FREE ADDON' => 'ADDON GRATUITO',
    'Works with your site' => 'Compatible con tu sitio',
    '%s abilities' => '%s habilidades',
    'Manage license →' => 'Gestionar licencia →',
    'Learn more →' => 'Más información →',
    'Download free →' => 'Descárgalo gratis →',
    'Install from WordPress.org →' => 'Instalar desde WordPress.org →',
    'View on WordPress.org →' => 'Ver en WordPress.org →',
    'Never' => 'Nunca',
    'Lola Avatar' => 'Avatar de Lola',
    'Lola Configuration' => 'Configuración de Lola',
    'Your AI admin agent. Configure once and forget — Lola remembers the rest.' => 'Tu agente de administración IA. Configúralo una vez y olvídate, Lola recuerda el resto.',
    'MEMORY ACTIVE' => 'MEMORIA ACTIVA',
    'NO MEMORY' => 'SIN MEMORIA',
    'PLUGINS' => 'PLUGINS',
    'UPDATES' => 'ACTUALIZACIONES',
    'Lola\'s Brain (AI Model)' => 'El cerebro de Lola (modelo IA)',
    'Lola uses the AI model configured in your WordPress installation. You can add or change providers in %s.' => 'Lola usa el modelo IA configurado en tu instalación de WordPress. Puedes añadir o cambiar proveedores en %s.',
    'Settings › Connectors' => 'Ajustes › Conectores',
    'Preferred model for Lola:' => 'Modelo preferido para Lola:',
    'Automatic (use WordPress default)' => 'Automático (usar el predeterminado de WordPress)',
    'No AI providers connected yet.' => 'Todavía no hay proveedores de IA conectados.',
    'Connect one now →' => 'Conecta uno ahora →',
    'Select which model Lola will use. "Automatic" uses the first available text generation model.' => 'Selecciona qué modelo usará Lola. "Automático" usa el primer modelo de generación de texto disponible.',
    'Communication Style' => 'Estilo de comunicación',
    'How do you prefer Lola to talk to you?' => '¿Cómo prefieres que Lola te hable?',
    'Technical' => 'Técnico',
    'Development terminology, shows code, doesn\'t explain basics.' => 'Terminología de desarrollo, muestra código, no explica lo básico.',
    'Professional' => 'Profesional',
    'Clear language, explains technical decisions without jargon.' => 'Lenguaje claro, explica decisiones técnicas sin jerga.',
    'Direct' => 'Directo',
    'Minimal explanations, maximum action.' => 'Mínimas explicaciones, máxima acción.',
    'Lola\'s Avatar' => 'Avatar de Lola',
    'Change Avatar' => 'Cambiar avatar',
    'Restore Default' => 'Restaurar por defecto',
    'Formats: JPG, PNG, WebP. Recommended: 128×128px.' => 'Formatos: JPG, PNG, WebP. Recomendado: 128×128px.',
    'Memory Settings' => 'Ajustes de memoria',
    'Configure how Lola stores and forgets information about your site.' => 'Configura cómo Lola almacena y olvida información sobre tu sitio.',
    'Decay Rate' => 'Tasa de decaimiento',
    'How fast old facts are forgotten. Default 0.02.' => 'Velocidad a la que se olvidan los hechos antiguos. Por defecto 0.02.',
    'Archive Threshold' => 'Umbral de archivo',
    'Score below which a fact is archived. Default 0.10.' => 'Puntuación por debajo de la cual se archiva un hecho. Por defecto 0.10.',
    'Max Context Entries' => 'Máximo de entradas de contexto',
    'Maximum memory facts injected into the system prompt. Default 20.' => 'Número máximo de hechos de memoria inyectados en el system prompt. Por defecto 20.',
    'Log Retention Days' => 'Días de retención de logs',
    'How long to keep action logs. Default 90.' => 'Tiempo de conservación de los registros de acciones. Por defecto 90.',
    'Restore Memory Defaults' => 'Restaurar valores de memoria por defecto',
    '%1$s facts in memory. Last maintenance: %2$s.' => '%1$s hechos en memoria. Último mantenimiento: %2$s.',
    'What Lola Can Do' => 'Qué puede hacer Lola',
    '%1$s abilities across %2$s domains. Enable or disable categories based on your needs.' => '%1$s habilidades en %2$s dominios. Activa o desactiva categorías según tus necesidades.',
    'Configure →' => 'Configurar →',
    'View all %s abilities ↓' => 'Ver todas las %s habilidades ↓',
    'Expansions' => 'Expansiones',
    'Addons that teach Lola new domains. Each one is built for a specific plugin on your site.' => 'Addons que le enseñan a Lola nuevos oficios. Cada uno está hecho para un plugin concreto de tu sitio.',
    'Safety & Confirmations' => 'Seguridad y confirmaciones',
    'Configure when Lola requires your explicit approval to act.' => 'Configura cuándo Lola necesita tu aprobación explícita para actuar.',
    'Confirm before every write action' => 'Confirmar antes de cada acción de escritura',
    'Recommended. If disabled, Lola will execute actions without asking.' => 'Recomendado. Si lo desactivas, Lola ejecutará las acciones sin preguntar.',
    'Disclaimer: Lola is an AI and can make mistakes.' => 'Aviso: Lola es una IA y puede cometer errores.',
    'Block destructive actions without verified backup' => 'Bloquear acciones destructivas sin copia de seguridad verificada',
    'Lola checks for a recent backup before deleting content.' => 'Lola comprueba que haya una copia de seguridad reciente antes de eliminar contenido.',
    'Learning mode' => 'Modo aprendizaje',
    'Lola explains what she\'s about to do before showing the preview, so you understand each action.' => 'Lola explica lo que va a hacer antes de mostrar la vista previa, para que entiendas cada acción.',
    'Save Safety Settings' => 'Guardar ajustes de seguridad',
    'Maintenance' => 'Mantenimiento',
    'Manual controls for database and memory health.' => 'Controles manuales para la salud de la base de datos y la memoria.',
    'Re-scan site' => 'Re-analizar sitio',
    'Export memory' => 'Exportar memoria',
    'Import memory' => 'Importar memoria',
    'Compact memory' => 'Compactar memoria',
    'Wipe all memory' => 'Borrar toda la memoria',
    'OK' => 'OK',
    'Last maintenance: %s' => 'Último mantenimiento: %s',
    'Skills' => 'Skills',
    'Behavioral overlays loaded into Lola\'s system prompt. Skills shape how Lola responds based on context.' => 'Capas de comportamiento cargadas en el system prompt de Lola. Las skills definen cómo responde Lola según el contexto.',
    'Discard' => 'Descartar',
    'Save Changes' => 'Guardar cambios',
    '⚠️ Wipe All Memory' => '⚠️ Borrar toda la memoria',
    'Send message' => 'Enviar mensaje',
    'Retrieves general status of the WordPress site (versions, SSL, active theme, active plugins count, DB size).' => 'Obtiene el estado general del sitio WordPress: versiones, SSL, tema activo, número de plugins activos y tamaño de la BD.',
    'Retrieves a list of all installed plugins, their active status, and if they have updates available.' => 'Obtiene la lista de todos los plugins instalados, su estado de activación y si tienen actualizaciones disponibles.',
    'Retrieves database metrics like size, number of revisions, and transients.' => 'Obtiene métricas de la base de datos: tamaño, número de revisiones y transients.',
    'Retrieves specific non-sensitive WordPress options by key.' => 'Obtiene opciones de WordPress no sensibles por clave.',
    'Retrieves posts, pages, or custom post types with full body content (HTML), excerpt, slug, and dates. Use post_type parameter to target specific types.' => 'Obtiene entradas, páginas o tipos de post personalizados con el contenido completo (HTML), extracto, slug y fechas. Usa el parámetro post_type para especificar el tipo.',
    'Performs a comprehensive SEO audit: missing meta descriptions, images without alt text, permalink structure, search engine visibility. Returns findings by severity (critical, warning, info).' => 'Realiza una auditoría SEO completa: meta descripciones ausentes, imágenes sin texto alternativo, estructura de permalinks y visibilidad en buscadores. Devuelve los hallazgos por severidad (critical, warning, info).',
    'Performs a security audit: exposed debug.log, WP_DEBUG status, weak admin usernames, XML-RPC, file editor access, WP version exposure. Returns findings with severity and recommendations.' => 'Realiza una auditoría de seguridad: debug.log expuesto, estado de WP_DEBUG, usuarios administrador débiles, XML-RPC, acceso al editor de archivos y exposición de la versión de WP. Devuelve los hallazgos con severidad y recomendaciones.',
    'Searches the WordPress.org plugin repository by keyword. Returns top results with name, slug, version, active installs, rating, and compatibility. Use this to find plugins before installing.' => 'Busca en el repositorio de plugins de WordPress.org por palabra clave. Devuelve los mejores resultados con nombre, slug, versión, instalaciones activas, valoración y compatibilidad. Úsala para encontrar plugins antes de instalarlos.',
    'Reads meta values for a specific post, page, or product. Can return all meta or specific keys. Useful for reading plugin data like Yoast SEO fields, WooCommerce product data, ACF custom fields, etc.' => 'Lee los valores meta de una entrada, página o producto específico. Puede devolver todos los meta o claves concretas. Útil para leer datos de plugins como campos de Yoast SEO, datos de productos WooCommerce, campos personalizados de ACF, etc.',
    'Lists all abilities registered in the WordPress Abilities API, including those from other plugins. Shows what Lola and other AI agents can do on this site.' => 'Lista todas las habilidades registradas en la API de habilidades de WordPress, incluidas las de otros plugins. Muestra lo que Lola y otros agentes IA pueden hacer en este sitio.',
    'Retrieves a list of WordPress users with their roles and IDs.' => 'Obtiene la lista de usuarios de WordPress con sus roles e IDs.',
    'Lists all WordPress roles with their display names, user count, and capabilities. Use this to understand what permissions each role has before creating or modifying roles.' => 'Lista todos los roles de WordPress con sus nombres, número de usuarios y capacidades. Úsala para entender qué permisos tiene cada rol antes de crearlos o modificarlos.',
    'Lists categories, tags, or custom taxonomies with their terms and hierarchy.' => 'Lista categorías, etiquetas o taxonomías personalizadas con sus términos y jerarquía.',
    'Lists WordPress comments. Can filter by status (approve, hold, spam, trash).' => 'Lista los comentarios de WordPress. Puede filtrar por estado (approve, hold, spam, trash).',
    'Lists files in the WordPress Media Library (images, PDFs, videos).' => 'Lista los archivos de la Biblioteca de medios de WordPress (imágenes, PDFs, vídeos).',
    'Lists all registered WordPress navigation menus and their items (links, pages, categories). Shows menu locations and item hierarchy.' => 'Lista todos los menús de navegación registrados en WordPress y sus elementos (enlaces, páginas, categorías). Muestra las ubicaciones de los menús y la jerarquía de elementos.',
    'Retrieves grouped WordPress site settings in a structured payload: General (blogname, description, timezone, language, date/time format), Reading (posts_per_page, show_on_front, page_on_front), Discussion (comments, moderation), and Permalinks.' => 'Obtiene los ajustes del sitio WordPress agrupados: General (blogname, description, timezone, language, date/time format), Lectura (posts_per_page, show_on_front, page_on_front), Comentarios (comments, moderation) y Permalinks.',
    'Gets info about the active WordPress theme and lists all installed themes with name, version, update availability, and parent/child relationships.' => 'Obtiene información sobre el tema activo de WordPress y lista todos los temas instalados con nombre, versión, disponibilidad de actualización y relaciones padre/hijo.',
    'Searches themes on the WordPress.org repository by keyword. Returns name, slug, version, author, description, rating, downloads, and PHP/WP requirements for up to 10 themes. Use the returned slug with installTheme.' => 'Busca temas en el repositorio de WordPress.org por palabra clave. Devuelve nombre, slug, versión, autor, descripción, valoración, descargas y requisitos PHP/WP para hasta 10 temas. Usa el slug devuelto con installTheme.',
    'Generates a WordPress WXR (XML) export of posts, pages, or a specific custom post type. Returns a temporary download URL valid for 1 hour.' => 'Genera una exportación WordPress WXR (XML) de entradas, páginas o un tipo de post personalizado específico. Devuelve una URL de descarga temporal válida durante 1 hora.',
    'Lists WooCommerce products with name, price, stock status, and type. Only available if WooCommerce is active.' => 'Lista los productos de WooCommerce con nombre, precio, estado de stock y tipo. Solo disponible si WooCommerce está activo.',
    'Gets detailed info for a single WooCommerce product: price, stock, SKU, categories, attributes, dimensions, weight, images, and sales data.' => 'Obtiene información detallada de un producto WooCommerce: precio, stock, SKU, categorías, atributos, dimensiones, peso, imágenes y datos de ventas.',
    'Lists WooCommerce orders with status, total, customer, and date. Only available if WooCommerce is active.' => 'Lista los pedidos de WooCommerce con estado, total, cliente y fecha. Solo disponible si WooCommerce está activo.',
    'Gets full details of a single WooCommerce order: line items, shipping, billing address, payment method, totals, and notes.' => 'Obtiene los detalles completos de un pedido WooCommerce: líneas de pedido, envío, dirección de facturación, método de pago, totales y notas.',
    'Lists WooCommerce customers with name, email, order count, and total spent. Only available if WooCommerce is active.' => 'Lista los clientes de WooCommerce con nombre, email, número de pedidos y total gastado. Solo disponible si WooCommerce está activo.',
    'Lists WooCommerce product categories with name, slug, hierarchy, and product count. Only available if WooCommerce is active.' => 'Lista las categorías de productos de WooCommerce con nombre, slug, jerarquía y número de productos. Solo disponible si WooCommerce está activo.',
    'Lists WooCommerce discount coupons with code, type, amount, usage count, usage limit, and expiry date. Only available if WooCommerce is active.' => 'Lista los cupones de descuento de WooCommerce con código, tipo, importe, usos realizados, límite de uso y fecha de caducidad. Solo disponible si WooCommerce está activo.',
    'Returns a sales performance summary: total sales, net revenue, order count, items sold, and top-selling products. Only available if WooCommerce is active.' => 'Devuelve un resumen del rendimiento de ventas: total de ventas, ingresos netos, número de pedidos, artículos vendidos y productos más vendidos. Solo disponible si WooCommerce está activo.',
    'ESCALATION ONLY — call when a needed tool is clearly absent from your current set and you have evidence it should exist. Reloads with all tools. Max once per conversation.' => 'SOLO PARA ESCALACIÓN — úsala cuando claramente falta una herramienta necesaria en tu conjunto actual y tienes evidencia de que debería existir. Recarga todas las herramientas. Máximo una vez por conversación.',
    'Saves a fact to Lola\'s persistent memory (survives across sessions). Call when user asks to remember something, or when a significant decision/preference/config happens. Classify accurately.' => 'Guarda un hecho en la memoria persistente de Lola (se mantiene entre sesiones). Úsala cuando el usuario pida recordar algo o cuando ocurra una decisión, preferencia o configuración significativa. Clasifica con precisión.',
    'Lists plugins generated by Plugin Builder and stored in the LolaCore library (lolacore_plugin CPT). Returns post_id, name, slug, version, confidence score, and last modified date. Call this before updating, testing, installing, or deleting a built plugin so you use real post IDs.' => 'Lista los plugins generados por Plugin Builder y guardados en la biblioteca de LolaCore (CPT lolacore_plugin). Devuelve post_id, name, slug, version, puntuación de confianza y fecha de última modificación. Llámalo antes de actualizar, probar, instalar o borrar un plugin construido para usar IDs de post reales.',
    'Returns a WordPress Playground URL to test a built plugin in an isolated environment. Use only when the user explicitly asks to regenerate a Playground link outside the saved plugin card. After createPlugin or updatePluginCode, the chat card handles Playground automatically — do not call this tool.' => 'Devuelve una URL de WordPress Playground para probar un plugin construido en un entorno aislado. Úsalo solo cuando el usuario pida explícitamente regenerar un enlace de Playground fuera de la tarjeta del plugin guardado. Tras createPlugin o updatePluginCode, la tarjeta del chat gestiona Playground automáticamente — no llames a esta herramienta.',
    'Generates a new three-file WordPress plugin (PHP, JS, CSS) from a natural-language description, runs an AI security review, and saves it in the Plugin Builder library. Call this when the user asks to create, build, or generate a custom plugin. Returns post_id, confidence score, and suggestions. Best practice: first call getSiteRenderContext, co-design a short PRD with the user, get their approval, and pass it as the prd parameter so the plugin is built to fit this exact site from the first version.' => 'Genera un nuevo plugin de WordPress de tres archivos (PHP, JS, CSS) a partir de una descripción en lenguaje natural, pasa una revisión de seguridad con IA y lo guarda en la biblioteca del Plugin Builder. Llámalo cuando el usuario pida crear, construir o generar un plugin a medida. Devuelve post_id, puntuación de confianza y sugerencias. Buena práctica: primero llama a getSiteRenderContext, co-diseña un PRD breve con el usuario, consigue su aprobación y pásalo en el parámetro prd para que el plugin encaje con este sitio exacto desde la primera versión.',
    'Iterates on an existing built plugin: loads its saved code, applies the user change request via AI, re-reviews security, saves a new revision, and increments the version counter. Requires post_id from listBuiltPlugins.' => 'Itera sobre un plugin construido existente: carga su código guardado, aplica el cambio que pide el usuario con IA, vuelve a revisar la seguridad, guarda una nueva revisión e incrementa el contador de versión. Requiere post_id de listBuiltPlugins.',
    'Installs a built plugin from the library into wp-content/plugins on THIS site without activating it. Only available after the user attested Playground testing for the current version. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Instala un plugin construido desde la biblioteca en wp-content/plugins en ESTE sitio sin activarlo. Solo disponible después de que el usuario haya atestado la prueba en Playground de la versión actual. DEBES llamar a esta herramienta para ejecutar esta acción. El sistema se detendrá automáticamente y pedirá permiso al usuario.',
    'Moves a built plugin library entry to trash. Does not uninstall a plugin already copied to wp-content/plugins. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Manda a la papelera una entrada de plugin construido de la biblioteca. No desinstala un plugin que ya se haya copiado en wp-content/plugins. DEBES llamar a esta herramienta para ejecutar esta acción. El sistema se detendrá automáticamente y pedirá permiso al usuario.',
    'Updates a WordPress plugin to its latest version. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission. Always warn the user about backup before updating.' => 'Actualiza un plugin de WordPress a su última versión. Esta acción requiere tu confirmación. Avisa siempre de hacer una copia de seguridad antes de actualizar.',
    'Cleans up the WordPress database by removing post revisions, spam comments, orphaned postmeta, and expired transients. Processes in safe batches of 1000 rows to prevent timeouts on large databases. Returns actual space recovered. If interrupted by time limits, reports partial progress — the user can run it again to continue. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission. This is destructive and irreversible.' => 'Limpia la base de datos de WordPress eliminando revisiones de posts, comentarios spam, postmeta huérfanos y transients caducados. Procesa en lotes seguros de 1000 filas para evitar timeouts en bases de datos grandes. Devuelve el espacio recuperado. Si se interrumpe por límites de tiempo, informa del progreso parcial y puedes ejecutarla de nuevo para continuar. Esta acción requiere tu confirmación y es destructiva e irreversible.',
    'Creates a new post or page in WordPress. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Crea una nueva entrada o página en WordPress. Esta acción requiere tu confirmación.',
    'Purges all cache from detected caching plugins (WP Rocket, W3 Total Cache, etc). YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Vacía toda la caché de los plugins de caché detectados (WP Rocket, W3 Total Cache, etc.). Esta acción requiere tu confirmación.',
    'Activates or deactivates a WordPress plugin. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Activa o desactiva un plugin de WordPress. Esta acción requiere tu confirmación.',
    'Installs a plugin from the WordPress.org repository. Optionally activates it after installation. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Instala un plugin desde el repositorio de WordPress.org. Opcionalmente lo activa tras la instalación. Esta acción requiere tu confirmación.',
    'Updates multiple plugins at once. If no slugs provided, updates ALL plugins with pending updates. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Actualiza varios plugins a la vez. Si no se indican slugs, actualiza TODOS los plugins con actualizaciones pendientes. Esta acción requiere tu confirmación.',
    'Edits an existing post or page. Only modifies the fields explicitly provided. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Edita una entrada o página existente. Solo modifica los campos proporcionados explícitamente. Esta acción requiere tu confirmación.',
    'Moves posts/pages to trash or deletes permanently. Default is trash (recoverable). If permanent=true, warn user about backup. Max 50 posts per call. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Mueve entradas o páginas a la papelera o las elimina de forma permanente. Por defecto va a la papelera (recuperable). Si permanent=true, avisa del backup. Máximo 50 posts por llamada. Esta acción requiere tu confirmación.',
    'Creates a new user, updates a user role, or deletes a user. For delete, reassign_to is mandatory to prevent content loss. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Crea un nuevo usuario, actualiza su rol o lo elimina. Para eliminar, reassign_to es obligatorio para evitar pérdida de contenido. Esta acción requiere tu confirmación.',
    'Creates, deletes, or modifies WordPress roles and capabilities. Use getRoles first to inspect existing roles. IMPORTANT: Built-in roles (administrator, editor, author, contributor, subscriber) cannot be deleted. The administrator role\'s manage_options capability cannot be removed. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Crea, elimina o modifica roles y capacidades de WordPress. Usa getRoles primero para ver los roles existentes. IMPORTANTE: Los roles integrados (administrator, editor, author, contributor, subscriber) no se pueden eliminar. La capacidad manage_options del rol administrator no se puede quitar. Esta acción requiere tu confirmación.',
    'Audits or cleans up WordPress cron jobs. "audit" lists all cron jobs and identifies orphaned ones. "clean_orphaned" removes cron hooks with no registered callback (leftover from uninstalled plugins). REQUIRES USER CONFIRMATION for clean_orphaned.' => 'Audita o limpia los cron jobs de WordPress. "audit" lista todos los cron jobs e identifica los huérfanos. "clean_orphaned" elimina los hooks de cron sin callback registrado (residuos de plugins desinstalados). Requiere tu confirmación para clean_orphaned.',
    'Updates a meta value on a specific post, page, or product. Use this to configure plugin settings per-post: Yoast SEO meta descriptions (_yoast_wpseo_metadesc), WooCommerce prices (_price, _regular_price), ACF fields, etc. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Actualiza un valor meta en una entrada, página o producto específico. Úsala para configurar ajustes de plugins por post: meta descripciones de Yoast SEO (_yoast_wpseo_metadesc), precios de WooCommerce (_price, _regular_price), campos ACF, etc. Esta acción requiere tu confirmación.',
    'Creates, updates, or deletes taxonomy terms (categories, tags). YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Crea, actualiza o elimina términos de taxonomía (categorías, etiquetas). Esta acción requiere tu confirmación.',
    'Updates the status of comments (approve, spam, trash) or deletes them permanently. Can operate on multiple comments at once. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Actualiza el estado de los comentarios (approve, spam, trash) o los elimina de forma permanente. Puede operar sobre varios comentarios a la vez. Esta acción requiere tu confirmación.',
    'Uploads (sideloads) a media file from an external URL into the WordPress Media Library. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Sube (sideload) un archivo multimedia desde una URL externa a la Biblioteca de medios de WordPress. Esta acción requiere tu confirmación.',
    'Permanently deletes an attachment from the WordPress Media Library, removing the physical file from the server. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Elimina permanentemente un archivo adjunto de la Biblioteca de medios de WordPress, borrando el archivo físico del servidor. Esta acción requiere tu confirmación.',
    'Creates a new navigation menu, adds items to an existing menu, or removes items. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Crea un nuevo menú de navegación, añade elementos a uno existente o los elimina. Esta acción requiere tu confirmación.',
    'Changes the active WordPress theme. WARNING: Switching themes may cause loss of theme-specific widgets, menus, and customizer settings. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Cambia el tema activo de WordPress. AVISO: cambiar de tema puede suponer la pérdida de widgets, menús y ajustes del personalizador del tema anterior. Esta acción requiere tu confirmación.',
    'Installs a theme from the WordPress.org repository. The theme is installed but NOT activated automatically — use switchTheme to activate it. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Instala un tema desde el repositorio de WordPress.org. El tema se instala pero NO se activa automáticamente; usa switchTheme para activarlo. Esta acción requiere tu confirmación.',
    'Updates a single installed theme to its latest version from WordPress.org. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Actualiza un tema instalado a su última versión desde WordPress.org. Esta acción requiere tu confirmación.',
    'Updates multiple themes at once. Pass an array of stylesheet names. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Actualiza varios temas a la vez. Pasa un array con los nombres de stylesheet. Esta acción requiere tu confirmación.',
    'Permanently deletes an installed theme from the site. The active theme and the parent of an active child theme cannot be deleted. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Elimina permanentemente un tema instalado del sitio. No se puede eliminar el tema activo ni el tema padre de un tema hijo activo. Esta acción requiere tu confirmación.',
    'Updates a WooCommerce product: price, stock, name, description, status, SKU, categories, etc. Only fields provided will be changed. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Actualiza un producto de WooCommerce: precio, stock, nombre, descripción, estado, SKU, categorías, etc. Solo se modificarán los campos proporcionados. Esta acción requiere tu confirmación.',
    'Changes the status of a WooCommerce order (e.g., processing → completed). Optionally adds an order note. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Cambia el estado de un pedido WooCommerce (p. ej., processing → completed). Opcionalmente añade una nota al pedido. Esta acción requiere tu confirmación.',
    'Creates a new WooCommerce product (simple). Sets name, prices, stock, SKU, description, and status. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Crea un nuevo producto WooCommerce simple. Establece nombre, precios, stock, SKU, descripción y estado. Esta acción requiere tu confirmación.',
    'Creates, updates, or deletes WooCommerce product categories. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Crea, actualiza o elimina categorías de productos de WooCommerce. Esta acción requiere tu confirmación.',
    'Creates, updates, or deletes WooCommerce discount coupons. YOU MUST call this tool to execute this action. The system will automatically pause and ask the user for permission.' => 'Crea, actualiza o elimina cupones de descuento de WooCommerce. Esta acción requiere tu confirmación.',
    'Settings' => 'Ajustes',
    'MCP Settings — Lola' => 'Ajustes MCP — Lola',
    'MCP Settings' => 'Ajustes MCP',
    'Core' => 'Core',
    'Manage your IDE connections for Cursor, Claude Desktop, and Antigravity. Abilities exposed via MCP are managed from the main Settings page — they mirror the chat agent.' => 'Gestiona tus conexiones de IDE para Cursor, Claude Desktop y Antigravity. Las abilities expuestas por MCP se gestionan desde la página principal de Ajustes; son un espejo del agente del chat.',
    'Copy JSON' => 'Copiar JSON',
    'Connect Your AI Client' => 'Conecta tu cliente de IA',
    'Create an Application Password to let your MCP client authenticate safely.' => 'Crea una contraseña de aplicación para que tu cliente MCP se autentique de forma segura.',
    'Manage Application Passwords &rarr;' => 'Gestionar contraseñas de aplicación &rarr;',
    'Username' => 'Nombre de usuario',
    'Application Password' => 'Contraseña de aplicación',
    'Generate Configs' => 'Generar configuraciones',
    'MCP Endpoints' => 'Endpoints MCP',
    'These are the REST API endpoints exposed for the active LolaCore modules.' => 'Estos son los endpoints de la API REST expuestos para los módulos activos de LolaCore.',
    'Copy' => 'Copiar',
    'Action Required: Install MCP Adapter' => 'Acción necesaria: instala el MCP Adapter',
    'To connect external AI clients (Cursor, Claude Desktop), you must install the WordPress MCP Adapter:' => 'Para conectar clientes de IA externos (Cursor, Claude Desktop) tienes que instalar el MCP Adapter de WordPress:',
    'Download the latest release from %s' => 'Descarga la última versión desde %s',
    'Upload the ZIP via Plugins > Add New > Upload Plugin.' => 'Sube el ZIP desde Plugins > Añadir nuevo > Subir plugin.',
    'Activate the MCP Adapter plugin and refresh this page.' => 'Activa el plugin MCP Adapter y recarga esta página.',
    'Copy Your Config' => 'Copia tu configuración',
    'My Built Plugins' => 'Mis plugins creados',
    'Built Plugin' => 'Plugin creado',
    'Add New' => 'Añadir nuevo',
    'Add New Plugin' => 'Añadir nuevo plugin',
    'Edit Plugin' => 'Editar plugin',
    'New Plugin' => 'Nuevo plugin',
    'View Plugin' => 'Ver plugin',
    'Search Plugins' => 'Buscar plugins',
    'No built plugins found.' => 'No hay plugins creados.',
    'No built plugins found in Trash.' => 'No hay plugins creados en la papelera.',
    'Working…' => 'Trabajando…',
    'Confirm' => 'Confirmar',
    'Cancel' => 'Cancelar',
    'Close' => 'Cerrar',
    'Install on this site' => 'Instalar en este sitio',
    'I will copy the generated files into wp-content/plugins. The plugin will stay inactive until you activate it.' => 'Copiaré los archivos generados en wp-content/plugins. El plugin quedará inactivo hasta que tú lo actives.',
    'Overwrite installed copy' => 'Sobrescribir la copia instalada',
    'A version is already on this site. I will replace those files. Any active copy will be deactivated first.' => 'Ya hay una versión en este sitio. Reemplazaré esos archivos. Si hay una copia activa, primero se desactivará.',
    'Plugin installed' => 'Plugin instalado',
    'Activate now' => 'Activar ahora',
    'Open Plugins screen' => 'Abrir la pantalla de Plugins',
    'Install' => 'Instalar',
    'Overwrite' => 'Sobrescribir',
    'Installation failed' => 'La instalación ha fallado',
    'Activation failed' => 'La activación ha fallado',
    'Plugin activated' => 'Plugin activado',
    'Check your plugin in Playground' => 'Comprueba tu plugin en Playground',
    'Check the settings page and the front end. When it looks right, install it on your site.' => 'Revisa la página de ajustes y la parte pública. Cuando lo veas bien, instálalo en tu sitio.',
    'Install on my site' => 'Instalar en mi sitio',
    'Something\'s not right' => 'Algo no cuadra',
    'Version' => 'Versión',
    'Status' => 'Estado',
    'Try in Playground' => 'Probar en Playground',
    'Test in Playground first, then confirm it works before installing.' => 'Pruébalo primero en Playground y confirma que funciona antes de instalarlo.',
    'Saved only' => 'Solo guardado',
    'Installed (active)' => 'Instalado (activo)',
    'Installed (inactive)' => 'Instalado (inactivo)',
    'Invalid plugin ID.' => 'ID de plugin no válido.',
    'Invalid attestation outcome.' => 'Resultado de verificación no válido.',
    'Built plugin not found.' => 'Plugin creado no encontrado.',
    'Generated files' => 'Archivos generados',
    'This plugin has incomplete generated files.' => 'Este plugin tiene archivos generados incompletos.',
    'Slug' => 'Slug',
    'Load test' => 'Prueba de carga',
    'Code review' => 'Revisión de código',
    'Review note' => 'Nota de revisión',
    'Description' => 'Descripción',
    'Suggestions' => 'Sugerencias',
    'Generated source files' => 'Archivos fuente generados',
    'PHP' => 'PHP',
    'JS' => 'JS',
    'CSS' => 'CSS',
    'No file content stored for this tab.' => 'No hay contenido de archivo guardado para esta pestaña.',
    'Passed' => 'Superada',
    'Failed' => 'Fallida',
    'Skipped' => 'Omitida',
    'Code review: %d%%' => 'Revisión de código: %d%%',
    'Built-in' => 'Integrado',
    'Addon-registered' => 'Registrado por addon',
    'User filesystem' => 'Sistema de archivos del usuario',
    'User / Lola-generated' => 'Usuario / generado por Lola',
    'Active' => 'Activa',
    'Inactive' => 'Inactiva',
    'No triggers — add rules to activate' => 'Sin disparadores — añade reglas para activarla',
    'Requires newer LolaCore' => 'Requiere un LolaCore más reciente',
    'Missing dependencies' => 'Faltan dependencias',
    'Enable the Skills system' => 'Activa el sistema de Skills',
    'Activates the entire Skills layer. When on, all built-in skills load together.' => 'Activa la capa de Skills al completo. Cuando está encendida, todas las skills integradas se cargan a la vez.',
    'Beta' => 'Beta',
    'This section noticeably improves Lola\'s performance, but it\'s currently under development and ships as an opt-in beta. You can turn it on or off at any time.' => 'Esta sección mejora notablemente el rendimiento de Lola, pero todavía está en desarrollo y se ofrece como beta opcional. Puedes encenderla o apagarla cuando quieras.',
    '%1$s / %2$s active' => '%1$s / %2$s activas',
    'Import skill' => 'Importar skill',
    'Reload skills' => 'Recargar skills',
    'Want a new skill written for you? Ask Lola directly in the chat — she\'ll guide you through it.' => '¿Quieres una skill nueva hecha a medida? Pídesela a Lola directamente en el chat; ella te irá guiando.',
    '— managed by the master toggle' => '— gestionado por el interruptor general',
    'priority:' => 'prioridad:',
    'View source' => 'Ver código',
    'Delete' => 'Eliminar',
    'Read-only source. To modify this skill, ask Lola in the chat — e.g. "improve the skill %s so that…".' => 'Código de solo lectura. Para modificar esta skill, pídeselo a Lola en el chat — p. ej. "mejora la skill %s para que…".',
    'Broken skills (%d)' => 'Skills rotas (%d)',
    'Parse Error' => 'Error de análisis',
    'Import Skill' => 'Importar skill',
    'Paste markdown' => 'Pegar markdown',
    'Upload .md file' => 'Subir archivo .md',
    'Paste skill markdown here...' => 'Pega aquí el markdown de la skill...',
    'Choose .md file (max 100 KB)' => 'Elige un archivo .md (máx. 100 KB)',
    'No file selected' => 'Ningún archivo seleccionado',
    'Import' => 'Importar',
    'Advanced parameters ▼' => 'Parámetros avanzados ▼',
    'Warning:' => 'Atención:',
    'These parameters fine-tune how Lola loads and applies skills. Setting them outside the recommended range can lead to:' => 'Estos parámetros afinan cómo Lola carga y aplica las skills. Configurarlos fuera del rango recomendado puede provocar:',
    'slower responses (added latency on every turn)' => 'respuestas más lentas (latencia añadida en cada turno)',
    'unpredictable or inconsistent behavior' => 'comportamiento impredecible o incoherente',
    'instability if limits are pushed too high' => 'inestabilidad si los límites se suben demasiado',
    'higher token consumption per request' => 'mayor consumo de tokens por petición',
    'The "Skill character budget" is a token approximation based on characters (≈ chars/3, conservative estimate). Actual consumption may vary ±20% depending on the LLM provider (Anthropic, OpenAI, DeepSeek tokenize differently). Default values are calibrated for 95% of use cases.' => 'El "Presupuesto de caracteres por skill" es una aproximación a tokens basada en caracteres (≈ caracteres/3, estimación conservadora). El consumo real puede variar ±20% según el proveedor LLM (Anthropic, OpenAI y DeepSeek tokenizan de forma distinta). Los valores por defecto están calibrados para el 95% de los casos.',
    'Max active skills (5–100)' => 'Máximo de skills activas (5–100)',
    'Max skills per prompt (1–15)' => 'Máximo de skills por prompt (1–15)',
    'Skill character budget (1500–15000)' => 'Presupuesto de caracteres por skill (1500–15000)',
    'Skill registry cache (5–1440 min)' => 'Caché del registro de skills (5–1440 min)',
    'Require manual approval for Lola-generated skills' => 'Requerir aprobación manual para las skills generadas por Lola',
    'Save' => 'Guardar',
    'Restore defaults' => 'Restaurar valores por defecto',
    'Guides Lola when building WordPress Playground blueprint JSON to test a plugin in a safe disposable environment.' => 'Guía a Lola al construir el JSON de blueprint de WordPress Playground para probar un plugin en un entorno desechable y seguro.',
    'Enforces WordPress data conventions when manipulating slugs, meta keys, options, taxonomies, and post statuses.' => 'Aplica las convenciones de datos de WordPress al manipular slugs, claves meta, opciones, taxonomías y estados de entrada.',
    'Enables Lola to create, enrich, and refine LolaCore skill files.' => 'Permite a Lola crear, enriquecer y refinar archivos de skill de LolaCore.',
    'Non-negotiable security rules when generating or reviewing plugin code that handles input, output, forms, AJAX, or the database.' => 'Reglas de seguridad innegociables al generar o revisar código de plugin que maneja entrada, salida, formularios, AJAX o la base de datos.',
    'Methodology for auditing any existing plugin\'s functional and runtime correctness before iterating, catching behavior bugs the linter and reviewer miss.' => 'Metodología para auditar la corrección funcional y de ejecución de cualquier plugin existente antes de seguir trabajándolo, cazando errores de comportamiento que el linter y el revisor pasan por alto.',
    'Guides Lola when creating or iterating 3-file mini-plugins (PHP, JS, CSS) with correct structure and lifecycle.' => 'Guía a Lola al crear o evolucionar mini-plugins de 3 archivos (PHP, JS, CSS) con la estructura y el ciclo de vida correctos.',
    'Guides Lola to update, archive, or consolidate existing memory facts instead of accumulating contradictions.' => 'Guía a Lola para actualizar, archivar o consolidar hechos de memoria existentes en vez de acumular contradicciones.',
    'Gives Lola a coherent structured response when users ask about LolaCore as a product.' => 'Da a Lola una respuesta coherente y estructurada cuando el usuario pregunta por LolaCore como producto.',
    'Enforces a 4-step protocol before executing any destructive bulk operation on WordPress data.' => 'Impone un protocolo de 4 pasos antes de ejecutar cualquier operación masiva destructiva sobre datos de WordPress.',
    'Applies CRO analytical lenses to commercial copy review and generation.' => 'Aplica lentes analíticas de CRO a la revisión y generación de copy comercial.',
    'Defines anti-AI prose discipline for content generated to be published on the user\'s site.' => 'Define la disciplina de prosa anti-IA para el contenido generado que se publicará en el sitio del usuario.',
    'Structures every code delivery with context, placement location, risks, and a minimal test.' => 'Estructura cada entrega de código con contexto, ubicación, riesgos y una prueba mínima.',
    'Ensures post_content is written in Gutenberg block format, not raw HTML.' => 'Garantiza que post_content se escribe en formato de bloques de Gutenberg, no en HTML crudo.',
    'Structures action log presentation by domain and offers revert when a snapshot exists.' => 'Estructura la presentación del registro de acciones por dominio y ofrece revertir cuando existe una instantánea.',
    'Playbooks — Lola' => 'Playbooks — Lola',
    'Playbooks' => 'Playbooks',
    'Playbooks template not found.' => 'No se encontró la plantilla de Playbooks.',
    'Curated domain manuals Lola consults when working in a specific area. Playbooks hold knowledge — not memory facts or behavioral skills.' => 'Manuales de dominio curados que Lola consulta al trabajar en un área concreta. Los playbooks guardan conocimiento, no hechos de memoria ni skills de comportamiento.',
    'Distilling document…' => 'Destilando documento…',
    'New playbook' => 'Nuevo playbook',
    'Edit playbook: %s' => 'Editar playbook: %s',
    'Full markdown with YAML frontmatter. The name: field in frontmatter is the canonical slug. See the built-in playbook-format manual for the contract.' => 'Markdown completo con frontmatter YAML. El campo name: en el frontmatter es el slug canónico. Consulta el manual integrado playbook-format para el contrato.',
    'Slug (from frontmatter name)' => 'Slug (del name del frontmatter)',
    'Content' => 'Contenido',
    'Save playbook' => 'Guardar playbook',
    'Back to list' => 'Volver al listado',
    'Review distilled playbook' => 'Revisar playbook destilado',
    'Edit the draft below, then save it to your database playbooks (inactive until you activate it). Distillation uses your configured AI provider.' => 'Edita el borrador y guárdalo en tus playbooks de base de datos (inactivo hasta que lo actives). La destilación usa tu proveedor de IA configurado.',
    'Draft content' => 'Contenido del borrador',
    'Regeneration instructions (optional)' => 'Instrucciones de regeneración (opcional)',
    'e.g. Shorten the body, add more examples, use domain woocommerce…' => 'p. ej. Acorta el cuerpo, añade más ejemplos, usa el dominio woocommerce…',
    'Regenerate' => 'Regenerar',
    'Upload playbook' => 'Subir playbook',
    'Reload playbooks' => 'Recargar playbooks',
    'Accepted formats: TXT, MD, DOCX, HTML. After extraction, the document must be %1$s characters or less (roughly 10–15 pages of dense text). Lola will distill it into a playbook you can review before saving. For longer manuals, upload one section at a time or ask Lola in the chat.' => 'Formatos aceptados: TXT, MD, DOCX, HTML. Tras la extracción, el documento debe tener %1$s caracteres o menos (unas 10–15 páginas de texto denso). Lola lo destilará en un playbook que podrás revisar antes de guardar. Para manuales más largos, sube una sección cada vez o pídeselo a Lola en el chat.',
    '%d playbook' => '%d playbook',
    '%d playbooks' => '%d playbooks',
    'Broken playbooks (%d)' => 'Playbooks rotos (%d)',
    'Only database playbooks can be toggled here. Built-in, addon, and filesystem playbooks are read-only.' => 'Solo los playbooks de base de datos se pueden activar o desactivar aquí. Los integrados, de addon y del sistema de archivos son de solo lectura.',
    'Only user-created or Lola-generated playbooks can be deleted from here.' => 'Solo los playbooks creados por el usuario o por Lola se pueden eliminar desde aquí.',
    'Only database playbooks can be edited from here.' => 'Solo los playbooks de base de datos se pueden editar desde aquí.',
    'Playbook not found.' => 'Playbook no encontrado.',
    'Playbook "%s" activated.' => 'Playbook «%s» activado.',
    'Playbook "%s" deactivated.' => 'Playbook «%s» desactivado.',
    'Playbook "%s" deleted.' => 'Playbook «%s» eliminado.',
    'Playbook "%s" saved.' => 'Playbook «%s» guardado.',
    'Playbook "%s" created (inactive). Activate it when you are ready.' => 'Playbook «%s» creado (inactivo). Actívalo cuando estés listo.',
    'Playbooks reloaded. %d playbooks found.' => 'Playbooks recargados. %d playbooks encontrados.',
    'Read-only preview. Use Edit to change database playbooks, or ask Lola in the chat.' => 'Vista previa de solo lectura. Usa Editar para cambiar playbooks de base de datos, o pídeselo a Lola en el chat.',
    'Read-only — shipped with the plugin, an addon, or your filesystem folder.' => 'Solo lectura — incluido con el plugin, un addon o tu carpeta del sistema de archivos.',
    'Upload a document or provide source text for regeneration.' => 'Sube un documento o indica el texto fuente para regenerar.',
    'View' => 'Ver',
    'Edit' => 'Editar',
    'Archived' => 'Archivado',
    'Skills — Lola' => 'Skills — Lola',
    'Skills template not found.' => 'No se encontró la plantilla de Skills.',
    'Document too long' => 'Documento demasiado largo',
    'Your document has %s characters of extracted text.' => 'Tu documento tiene %s caracteres de texto extraído.',
    'The maximum is %s characters.' => 'El máximo es %s caracteres.',
    ' (about %s over the limit).' => ' (unos %s por encima del límite).',
    'Upload a shorter section (for example one chapter), or ask Lola in the chat to help you build a playbook from the parts you need.' => 'Sube una sección más corta (por ejemplo un capítulo), o pídele a Lola en el chat que te ayude a montar un playbook con las partes que necesites.',
    'Delete playbook' => 'Eliminar playbook',
    'Delete playbook "%s"? This cannot be undone.' => '¿Eliminar el playbook «%s»? No se puede deshacer.',
    'Server error while toggling playbook.' => 'Error del servidor al cambiar el estado del playbook.',
    'Server error while deleting playbook.' => 'Error del servidor al eliminar el playbook.',
    'Server error while reloading playbooks.' => 'Error del servidor al recargar los playbooks.',
    'Server error while saving playbook.' => 'Error del servidor al guardar el playbook.',
    'Distillation returned an empty draft.' => 'La destilación devolvió un borrador vacío.',
    'Distillation failed.' => 'La destilación ha fallado.',
    'Distillation failed' => 'La destilación ha fallado',
    'You can fix the draft in the editor below, or use Regenerate with instructions.' => 'Puedes corregir el borrador en el editor o usar Regenerar con instrucciones.',
    'Dismiss' => 'Cerrar',
    'Original source text is unavailable. Upload the document again.' => 'El texto fuente original ya no está disponible. Vuelve a subir el documento.',
    'Playbook content cannot be empty.' => 'El contenido del playbook no puede estar vacío.',
    'Add a name: field in the YAML frontmatter.' => 'Añade un campo name: en el frontmatter YAML.',
    'Add a name: field in the YAML frontmatter (or fill in the slug).' => 'Añade un campo name: en el frontmatter YAML (o rellena el slug).',
    'Saving…' => 'Guardando…',
    'Save failed.' => 'No se pudo guardar.',
    'Toggle failed.' => 'No se pudo cambiar el estado.',
    'Delete failed.' => 'No se pudo eliminar.',
    'Reload failed.' => 'No se pudo recargar.',
    'Reloading…' => 'Recargando…',
    'playbooks guide' => 'guía de playbooks',
    'Read the %s for frontmatter fields, upload vs chat, and common save errors.' => 'Consulta la %s para los campos de frontmatter, las vías de subida frente al chat y los errores habituales al guardar.',
    'Frontmatter reference and save-error fixes: %s.' => 'Referencia de frontmatter y solución de errores al guardar: %s.',
    'Build forms and check submissions by talking to Lola — no drag-and-drop builder required.' => 'Crea formularios y revisa envíos hablando con Lola — no hace falta un constructor drag-and-drop.',
    'Notice' => 'Aviso',
    'Got it' => 'Entendido',
    'Creates a built plugin in the Plugin Builder library. Two modes. (1) In the wp-admin chat: provide a natural-language description and Lola generates a three-file plugin (PHP, JS, CSS) via the site AI, runs a security review, and saves it; pass an optional prd so it fits this exact site. (2) From a programmatic client over MCP (a code editor): provide the exact plugin source in php (and optionally js/css) and it is stored VERBATIM with NO AI generation, after the same deterministic static safety check — because the external agent already wrote the code, the server must not re-derive it. The literal-code mode is honored ONLY for MCP/REST calls; in the chat the code fields are ignored and a description is required. After saving (either mode) the plugin must still be tested in Playground and attested before installPluginLocal.' => 'Crea un plugin construido en la biblioteca del Plugin Builder. Dos modos. (1) En el chat de wp-admin: describe en lenguaje natural y Lola genera un plugin de tres archivos (PHP, JS, CSS) con la IA del sitio, pasa la revisión de seguridad y lo guarda; puedes pasar un PRD opcional para que encaje con este sitio. (2) Desde un cliente programático por MCP (un editor de código): envía el código exacto en php (y opcionalmente js/css) y se guarda TAL CUAL sin generación por IA, tras la misma comprobación estática de seguridad — el agente externo ya escribió el código y el servidor no debe rehacerlo. El modo código literal solo aplica en llamadas MCP/REST; en el chat se ignoran los campos de código y hace falta una descripción. Tras guardar (en cualquier modo) el plugin debe probarse en Playground y attestarse antes de installPluginLocal.',
    'Iterates on an existing built plugin (post_id from listBuiltPlugins), saving a new revision and incrementing the version. Two modes. (1) In the wp-admin chat: provide an instruction and Lola applies it to the saved code via the site AI and re-reviews security. (2) From a programmatic client over MCP: provide the exact new source in php (and optionally js/css) and it is stored VERBATIM with NO AI; the instruction is kept as the revision note. The literal-code mode is honored ONLY for MCP/REST calls; in the chat the code fields are ignored.' => 'Itera sobre un plugin construido existente (post_id de listBuiltPlugins), guarda una nueva revisión e incrementa la versión. Dos modos. (1) En el chat de wp-admin: da una instrucción y Lola la aplica al código guardado con la IA del sitio y vuelve a revisar la seguridad. (2) Desde un cliente programático por MCP: envía el código nuevo exacto en php (y opcionalmente js/css) y se guarda TAL CUAL sin IA; la instrucción queda como nota de revisión. El modo código literal solo aplica en llamadas MCP/REST; en el chat se ignoran los campos de código.',
    'block.json' => 'block.json',
    'edit.js' => 'edit.js',
    'edit.asset.php' => 'edit.asset.php',
    'style.css' => 'style.css',
    'render.php' => 'render.php',
    'Block Builder' => 'Block Builder',
    'Built Block' => 'Bloque construido',
    'Add New Block' => 'Añadir bloque',
    'Edit Block' => 'Editar bloque',
    'New Block' => 'Nuevo bloque',
    'View Block' => 'Ver bloque',
    'Search Blocks' => 'Buscar bloques',
    'No built blocks found.' => 'No hay bloques construidos.',
    'No built blocks found in Trash.' => 'No hay bloques construidos en la papelera.',
    'Block name' => 'Nombre del bloque',
    'Install folder' => 'Carpeta de instalación',
    'I will copy the block files into wp-content/lolacore-blocks. The block will appear in the inserter right away.' => 'Voy a copiar los archivos del bloque en wp-content/lolacore-blocks. El bloque aparecerá en el insertador enseguida.',
    'A version is already on this site. I will replace those files.' => 'Ya hay una versión en este sitio. Voy a reemplazar esos archivos.',
    'Block installed' => 'Bloque instalado',
    'Uninstall from this site' => 'Desinstalar de este sitio',
    'I will remove the block files from wp-content/lolacore-blocks. The block will disappear from the inserter. The library entry stays in the catalog.' => 'Voy a quitar los archivos del bloque de wp-content/lolacore-blocks. El bloque desaparecerá del insertador. La entrada de la biblioteca se queda en el catálogo.',
    'Block uninstalled' => 'Bloque desinstalado',
    'Uninstall' => 'Desinstalar',
    'Check your block in Playground' => 'Revisa tu bloque en Playground',
    'Insert the block in the editor and check the front end. When it looks right, install it on your site.' => 'Inserta el bloque en el editor y revisa la parte pública. Cuando esté bien, instálalo en tu sitio.',
    'This block has incomplete generated files. Try updating it from chat or create a new version.' => 'Este bloque tiene archivos generados incompletos. Prueba a actualizarlo desde el chat o crea una versión nueva.',
    'Invalid block ID.' => 'ID de bloque no válido.',
    'This block is not installed on the site yet.' => 'Este bloque todavía no está instalado en el sitio.',
    'Built block not found.' => 'No encuentro el bloque construido.',
    'Built block install slug is missing.' => 'Falta el slug de instalación del bloque construido.',
    'Built block files are missing from the library.' => 'Faltan los archivos del bloque construido en la biblioteca.',
    'spec is required: provide a structured block specification for the scaffolder.' => 'spec es obligatorio: proporciona una especificación de bloque estructurada para el generador.',
    'post_id is required.' => 'post_id es obligatorio.',
    'spec is required: provide the updated block specification.' => 'spec es obligatorio: proporciona la especificación de bloque actualizada.',
    'files is required: provide the literal block file map (block.json, edit.js, …). From an external client Lola stores your exact files — it does not run the scaffolder. Use the wp-admin chat with spec if you want deterministic scaffolding.' => 'files es obligatorio: proporciona el mapa literal de archivos del bloque (block.json, edit.js, …). Desde un cliente externo, Lola guarda tus archivos tal cual — no ejecuta el generador. Usa el chat de wp-admin con spec si quieres un generado determinista.',
    'block.json must be valid JSON.' => 'block.json debe ser JSON válido.',
    'Will save the block as a new revision in the library.' => 'Guardaré el bloque como una nueva revisión en la biblioteca.',
    'Will save the block as a new library entry.' => 'Guardaré el bloque como una nueva entrada en la biblioteca.',
    'This block is not installed on the site yet. Install it to make it live.' => 'Este bloque todavía no está instalado en el sitio. Instálalo para que esté activo.',
    'A version is already installed. This will overwrite the existing block files on this site.' => 'Ya hay una versión instalada. Esto sobrescribirá los archivos del bloque en este sitio.',
    'Will install this built block on this site. It will appear in the block inserter.' => 'Instalaré este bloque construido en este sitio. Aparecerá en el insertador de bloques.',
    'Will remove this block from wp-content/lolacore-blocks on this site and unregister it from the block inserter. The library entry stays in the catalog.' => 'Quitaré este bloque de wp-content/lolacore-blocks en este sitio y lo desregistraré del insertador. La entrada de la biblioteca se queda en el catálogo.',
    'This block is not installed on the site — nothing to remove from disk.' => 'Este bloque no está instalado en el sitio — no hay nada que quitar del disco.',
    'Could not move the built block to trash.' => 'No he podido mover el bloque construido a la papelera.',
    'You do not have permission to manage built blocks.' => 'No tienes permiso para gestionar bloques construidos.',
    'Direct installation is not available on multisite.' => 'La instalación directa no está disponible en multisitio.',
    'A version is already installed. Overwrite it?' => 'Ya hay una versión instalada. ¿La sobrescribo?',
    'I updated the block on this site. It is available in the block inserter.' => 'He actualizado el bloque en este sitio. Ya está disponible en el insertador de bloques.',
    'I installed the block on this site. It is available in the block inserter.' => 'He instalado el bloque en este sitio. Ya está disponible en el insertador de bloques.',
    'Direct uninstall is not available on multisite.' => 'La desinstalación directa no está disponible en multisitio.',
    'Could not remove the installed block files from this site.' => 'No he podido quitar los archivos del bloque instalado de este sitio.',
    'I removed the block from this site. It is no longer in the block inserter.' => 'He quitado el bloque de este sitio. Ya no está en el insertador de bloques.',
    'Could not initialize the WordPress filesystem.' => 'No he podido inicializar el sistema de archivos de WordPress.',
    'Could not build the hosted Playground blueprint URL.' => 'No he podido construir la URL del blueprint de Playground alojado.',
    'Built block payload is incomplete.' => 'Los datos del bloque construido están incompletos.',
    'Built block file map is empty.' => 'El mapa de archivos del bloque construido está vacío.',
    'Built block slug metadata is missing.' => 'Falta el metadato del slug del bloque construido.',
    'title is required in the block spec.' => 'title es obligatorio en la especificación del bloque.',
    'slug is required and must start with a letter and contain only lowercase letters, digits, and hyphens.' => 'slug es obligatorio y debe empezar por una letra y contener solo minúsculas, dígitos y guiones.',
    'block.json is required in the file map.' => 'block.json es obligatorio en el mapa de archivos.',
    'viewScriptModule is not supported in Route 1 blocks.' => 'viewScriptModule no es compatible con los bloques de Ruta 1.',
    'block.json name is required.' => 'El nombre en block.json es obligatorio.',
    'block.json name must match namespace/slug (lowercase letters, digits, hyphens).' => 'El nombre en block.json debe coincidir con namespace/slug (minúsculas, dígitos, guiones).',
    'File map entries must be string paths mapped to string contents.' => 'Las entradas del mapa de archivos deben ser rutas de texto asociadas a contenidos de texto.',
    'File paths must not be empty.' => 'Las rutas de archivo no pueden estar vacías.',
    'Could not encode the Playground blueprint.' => 'No he podido codificar el blueprint de Playground.',
    'This plugin is too large to test via URL.' => 'Este plugin es demasiado grande para probarlo por URL.',
    'This PHP file runs code at load time but is missing a direct-access guard. Add: if ( ! defined( \'ABSPATH\' ) ) { exit; }' => 'Este archivo PHP ejecuta código al cargar pero le falta una protección de acceso directo. Añade: if ( ! defined( \'ABSPATH\' ) ) { exit; }',
    'A file-scope return/exit after class_exists("WooCommerce") prevents the plugin from registering hooks when WooCommerce is inactive. Move dependency checks into an init hook instead of exiting at file scope.' => 'Un return/exit a nivel de archivo tras class_exists("WooCommerce") impide que el plugin registre sus hooks cuando WooCommerce está inactivo. Mueve las comprobaciones de dependencias a un hook de init en vez de salir a nivel de archivo.',
    'Load test:' => 'Prueba de carga:',
    'Code review:' => 'Revisión de código:',
    '1 improvement we can make next' => '1 mejora que podemos hacer después',
    '%d improvements we can make next' => '%d mejoras que podemos hacer después',
    'Here\'s the next iteration of your plugin. Test the changes in Playground before installing on your live site.' => 'Aquí tienes la siguiente versión de tu plugin. Prueba los cambios en Playground antes de instalarlo en tu sitio real.',
    'Save when you\'re happy, then tell me what still needs to change.' => 'Guárdalo cuando estés conforme y dime qué falta por cambiar.',
    'This is your working first version — it should activate cleanly and include the settings and features you described. Fine-tuning how it behaves on your store is the normal next step in plugin development.' => 'Esta es tu primera versión funcional — debería activarse sin problemas e incluir los ajustes y funciones que describiste. Afinar cómo se comporta en tu tienda es el siguiente paso normal al desarrollar un plugin.',
    'Save it to your library, test it in Playground, then tell me what to adjust. You set the direction; I\'ll read the code and your site and we\'ll refine it together.' => 'Guárdalo en tu biblioteca, pruébalo en Playground y dime qué ajustar. Tú marcas la dirección; yo leo el código y tu sitio y lo pulimos juntos.',
    'How plugin building works' => 'Cómo funciona construir un plugin',
    'Most plugins start as a working base, then improve with each round of testing and feedback. You\'re the architect — you decide what the plugin should do. I\'m your engineer on this site: I review the code, spot gaps, and help you iterate until it fits how you run your store. Behind the scenes, our development team turns that plan into PHP, JavaScript, and CSS.' => 'La mayoría de los plugins empiezan como una base funcional y mejoran con cada ronda de pruebas y comentarios. Tú eres el arquitecto — decides qué debe hacer el plugin. Yo soy tu ingeniera en este sitio: reviso el código, detecto huecos y te ayudo a iterar hasta que encaje con cómo llevas tu tienda. Entre bastidores, nuestro equipo de desarrollo convierte ese plan en PHP, JavaScript y CSS.',
    'Build complete' => 'Construcción completada',
    'Ready for review.' => 'Listo para revisar.',
    'I couldn\'t finish this build. Try again or simplify what you\'re asking for.' => 'No he podido terminar esta construcción. Reinténtalo o simplifica lo que pides.',
    'Still working on it' => 'Sigo con ello',
    'This is taking longer than expected. It may still finish in the background — check the library shortly.' => 'Está tardando más de lo normal. Puede que termine en segundo plano — echa un vistazo a la biblioteca dentro de un rato.',
    'Trying again...' => 'Reintentando…',
    'I\'ve tried this a few times already. Let\'s try a smaller request, or switch to a stronger model in Settings.' => 'Ya lo he intentado varias veces. Probemos con una petición más pequeña, o cambia a un modelo más potente en Ajustes.',
    'Built block' => 'Bloque construido',
    'I tested "%s" in Playground and something\'s not right: ' => 'He probado "%s" en Playground y algo no va bien: ',
    'I could not install the block. Try again from Built Blocks.' => 'No he podido instalar el bloque. Reinténtalo desde Bloques construidos.',
    'I could not install the block. Check your connection and try again.' => 'No he podido instalar el bloque. Revisa tu conexión y reinténtalo.',
    'I installed the block files on this site.' => 'He instalado los archivos del bloque en este sitio.',
    'I could not install the plugin. Try again from Built Plugins.' => 'No he podido instalar el plugin. Reinténtalo desde Plugins construidos.',
    'I could not install the plugin. Check your connection and try again.' => 'No he podido instalar el plugin. Revisa tu conexión y reinténtalo.',
    'I installed the plugin files on this site.' => 'He instalado los archivos del plugin en este sitio.',
    'A copy is already installed. Overwrite it with this library version?' => 'Ya hay una copia instalada. ¿La sobrescribo con esta versión de la biblioteca?',
    'Open Plugins' => 'Abrir Plugins',
    'Want me to activate it now?' => '¿Quieres que lo active ahora?',
    'I could not activate the plugin. Open Plugins and try from there.' => 'No he podido activar el plugin. Abre Plugins e inténtalo desde ahí.',
    'Done. The plugin is active on this site.' => 'Hecho. El plugin está activo en este sitio.',
    'I could not save your Playground check. Try again.' => 'No he podido guardar tu revisión en Playground. Reinténtalo.',
    'Something did not look right last time. Open Playground again, or tell me what you saw.' => 'La última vez algo no iba bien. Abre Playground otra vez, o dime qué viste.',
    'You already checked this in Playground. Install it on your live site when you are ready.' => 'Ya lo revisaste en Playground. Instálalo en tu sitio real cuando quieras.',
    'Test in Playground before installing on your live site.' => 'Pruébalo en Playground antes de instalarlo en tu sitio real.',
    'Open in Playground' => 'Abrir en Playground',
    'Copy this link:' => 'Copia este enlace:',
    'Preparing Playground…' => 'Preparando Playground…',
    'Could not generate Playground link.' => 'No he podido generar el enlace de Playground.',
    'Could not generate Playground link. Check your connection and try again.' => 'No he podido generar el enlace de Playground. Revisa tu conexión y reinténtalo.',
    'Ready to test in Playground' => 'Listo para probar en Playground',
    'Unknown' => 'Desconocido',
    'Something went wrong and I couldn\'t process that. Try refreshing the page.' => 'Algo ha ido mal y no he podido procesarlo. Prueba a recargar la página.',
    'Built plugin slug is missing.' => 'Falta el slug del plugin construido.',
    'Your update is ready to test. Save it when you\'re happy, then tell me what still needs to change.' => 'Tu actualización está lista para probar. Guárdala cuando estés conforme y dime qué falta por cambiar.',
    'Job not found or expired.' => 'No encuentro el trabajo o ha caducado.',
    'Only a failed build can be retried.' => 'Solo se puede reintentar una construcción fallida.',
    'This build has already been retried the maximum number of times.' => 'Esta construcción ya se ha reintentado el máximo de veces.',
    'I could not start the build again right now.' => 'No he podido volver a empezar la construcción ahora mismo.',
    'Cannot review an incomplete plugin (PHP, JS, and CSS are required).' => 'No puedo revisar un plugin incompleto (hacen falta PHP, JS y CSS).',
    'The plugin preview expired or is no longer available. Ask Lola to run the action again.' => 'La vista previa del plugin ha caducado o ya no está disponible. Pídeme que ejecute la acción otra vez.',
    'The cached preview does not match this action.' => 'La vista previa en caché no coincide con esta acción.',
    'The cached preview no longer matches the requested parameters.' => 'La vista previa en caché ya no coincide con los parámetros pedidos.',
    'A plugin description is required.' => 'Hace falta una descripción del plugin.',
    'A repair prompt is required.' => 'Hace falta un prompt de reparación.',
    'Plugin Builder prompts file is missing.' => 'Falta el archivo de prompts del Plugin Builder.',
    'Plugin Builder prompts file is invalid.' => 'El archivo de prompts del Plugin Builder no es válido.',
    'Developer prompts are misconfigured.' => 'Los prompts de desarrollo están mal configurados.',
    'Reviewer prompts are misconfigured.' => 'Los prompts del revisor están mal configurados.',
    'Plugin code review returned empty JSON.' => 'La revisión de código del plugin devolvió un JSON vacío.',
    'Plugin code review returned invalid JSON.' => 'La revisión de código del plugin devolvió un JSON no válido.',
    'description is required.' => 'description es obligatorio.',
    'Will generate and save a new built plugin in the library.' => 'Generaré y guardaré un nuevo plugin construido en la biblioteca.',
    'instruction is required.' => 'instruction es obligatorio.',
    'Will update the built plugin and create a new revision.' => 'Actualizaré el plugin construido y crearé una nueva revisión.',
    'php is required: provide the literal plugin source code. From an external client Lola stores your exact code — it does not run the server LLM. Use the wp-admin chat if you want Lola to generate the code from a description.' => 'php es obligatorio: proporciona el código fuente literal del plugin. Desde un cliente externo, Lola guarda tu código tal cual — no ejecuta el LLM del servidor. Usa el chat de wp-admin si quieres que Lola genere el código a partir de una descripción.',
    'Will save the provided code as a new revision of this built plugin.' => 'Guardaré el código proporcionado como una nueva revisión de este plugin construido.',
    'Will save the provided code as a new built plugin in the library.' => 'Guardaré el código proporcionado como un nuevo plugin construido en la biblioteca.',
    'This plugin is not installed on the site yet. Install it to make it live.' => 'Este plugin todavía no está instalado en el sitio. Instálalo para que esté activo.',
    'The installed plugin matches the latest library version.' => 'El plugin instalado coincide con la última versión de la biblioteca.',
    'The installed plugin differs from the latest library version (v%1$d). Out-of-date files: %2$s. Reinstall to make the latest version live.' => 'El plugin instalado difiere de la última versión de la biblioteca (v%1$d). Archivos desactualizados: %2$s. Reinstálalo para activar la última versión.',
    'A version is already installed. This will overwrite the existing plugin files. You can activate it afterward from Plugins.' => 'Ya hay una versión instalada. Esto sobrescribirá los archivos del plugin. Después puedes activarlo desde Plugins.',
    'Will install this built plugin on this site without activating it. You can activate it afterward from Plugins.' => 'Instalaré este plugin construido en este sitio sin activarlo. Después puedes activarlo desde Plugins.',
    'Could not move the built plugin to trash.' => 'No he podido mover el plugin construido a la papelera.',
    'Built plugin moved to trash.' => 'Plugin construido movido a la papelera.',
    'Insufficient permissions to manage built plugins.' => 'No tienes permisos suficientes para gestionar plugins construidos.',
    'I updated the plugin files on this site. Activate it from Plugins when you are ready.' => 'He actualizado los archivos del plugin en este sitio. Actívalo desde Plugins cuando quieras.',
    'I installed the plugin files on this site. Activate it from Plugins when you are ready.' => 'He instalado los archivos del plugin en este sitio. Actívalo desde Plugins cuando quieras.',
    'Direct activation is not available on multisite.' => 'La activación directa no está disponible en multisitio.',
    'Install the plugin on this site before activating it.' => 'Instala el plugin en este sitio antes de activarlo.',
    'The plugin main file is missing. Try installing again.' => 'Falta el archivo principal del plugin. Prueba a instalarlo otra vez.',
    'This plugin is already active.' => 'Este plugin ya está activo.',
    'The plugin is now active.' => 'El plugin ya está activo.',
    'WooCommerce must be active before I can activate this plugin.' => 'WooCommerce tiene que estar activo antes de que yo pueda activar este plugin.',
    'Built plugin PHP is missing.' => 'Falta el PHP del plugin construido.',
    'Lists blocks generated by Block Builder and stored in the LolaCore library (lolacore_block CPT). Returns post_id, name, block_name, version, and last modified date.' => 'Lista los bloques generados por Block Builder y guardados en la biblioteca de LolaCore (CPT lolacore_block). Devuelve post_id, name, block_name, version y fecha de última modificación.',
    'Loads the saved block file map (block.json, edit.js, style.css, render.php) for one built block. Read-only. Requires post_id from listBuiltBlocks.' => 'Carga el mapa de archivos guardado (block.json, edit.js, style.css, render.php) de un bloque construido. Solo lectura. Requiere post_id de listBuiltBlocks.',
    'Reads the block actually installed in wp-content/lolacore-blocks on this site and compares it to the latest library version. Read-only.' => 'Lee el bloque realmente instalado en wp-content/lolacore-blocks en este sitio y lo compara con la última versión de la biblioteca. Solo lectura.',
    'Returns a WordPress Playground URL to test a built block in isolation.' => 'Devuelve una URL de WordPress Playground para probar un bloque construido de forma aislada.',
    'Creates a built block in the Block Builder library. Chat mode: provide a structured spec (title, slug, attributes, dynamic, inner_blocks, supports) and the deterministic scaffolder emits block.json + Route 1 assets. MCP mode: provide a literal files map and it is stored verbatim after safety checks.' => 'Crea un bloque construido en la biblioteca del Block Builder. Modo chat: proporciona una spec estructurada (title, slug, attributes, dynamic, inner_blocks, supports) y el generador determinista emite block.json + los archivos de Ruta 1. Modo MCP: proporciona un mapa literal de archivos y se guarda tal cual tras las comprobaciones de seguridad.',
    'Iterates on a built block (post_id from listBuiltBlocks), saving a new revision. Chat: new spec. MCP: literal files map.' => 'Itera sobre un bloque construido (post_id de listBuiltBlocks) y guarda una nueva revisión. Chat: nueva spec. MCP: mapa literal de archivos.',
    'Installs a built block into wp-content/lolacore-blocks on this site. LolaCore registers it in the block inserter — no separate plugin entry. Requires Playground attestation for the current library version.' => 'Instala un bloque construido en wp-content/lolacore-blocks en este sitio. LolaCore lo registra en el insertador de bloques — sin una entrada de plugin aparte. Requiere la atestación en Playground de la versión actual de la biblioteca.',
    'Removes an installed block from wp-content/lolacore-blocks on this site and unregisters it from the block inserter. Does not delete the library entry — use deleteBuiltBlock to trash the catalog copy.' => 'Quita un bloque instalado de wp-content/lolacore-blocks en este sitio y lo desregistra del insertador de bloques. No borra la entrada de la biblioteca — usa deleteBuiltBlock para mandar a la papelera la copia del catálogo.',
    'Moves a built block library entry to trash. Does not remove files from wp-content/lolacore-blocks — use uninstallBlock for that.' => 'Manda a la papelera una entrada de bloque construido de la biblioteca. No quita los archivos de wp-content/lolacore-blocks — usa uninstallBlock para eso.',
    'Action not recognized or not registered.' => 'Acción no reconocida o no registrada.',
    'Action preview generated.' => 'Vista previa de la acción generada.',
    'Action executed successfully.' => 'Acción ejecutada correctamente.',
    'Action implementation not found.' => 'No encuentro la implementación de esta acción.',
    'Action blocked due to internal exception.' => 'Acción bloqueada por una excepción interna.',
    'comment_ids array is required.' => 'El array comment_ids es obligatorio.',
    'Invalid action. Use \'approve\', \'hold\', \'spam\', \'trash\', or \'delete\'.' => 'Acción no válida. Usa \'approve\', \'hold\', \'spam\', \'trash\' o \'delete\'.',
    'Maximum 50 comments per operation.' => 'Máximo 50 comentarios por operación.',
    'Successfully %1$sed %2$d comment(s). Failed: %3$d.' => 'He procesado %2$d comentario(s) con la acción «%1$s». Fallidos: %3$d.',
    'A valid post_id is required.' => 'Hace falta un post_id válido.',
    'Post with ID %d not found.' => 'No encuentro la entrada con ID %d.',
    'No fields to update. Provide at least one of: title, content, status, excerpt, slug, categories, tags, or featured_image.' => 'No hay campos que actualizar. Indica al menos uno de: title, content, status, excerpt, slug, categories, tags o featured_image.',
    'Update failed: %s' => 'La actualización ha fallado: %s',
    'An array of post_ids is required.' => 'El array post_ids es obligatorio.',
    'Maximum 50 posts per operation. Received %d.' => 'Máximo 50 entradas por operación. Recibidas %d.',
    '%d post(s) permanently deleted.' => '%d entrada(s) eliminada(s) permanentemente.',
    '%d post(s) moved to trash.' => '%d entrada(s) movida(s) a la papelera.',
    'No %s found matching the criteria.' => 'No he encontrado %s que coincidan con los criterios.',
    'Failed to write export file. Check upload directory permissions.' => 'No he podido escribir el archivo de exportación. Revisa los permisos del directorio de subidas.',
    'Exported %1$d %2$s(s). Download link valid for 1 hour.' => 'He exportado %1$d %2$s. El enlace de descarga es válido durante 1 hora.',
    'A valid URL is required.' => 'Hace falta una URL válida.',
    'Upload failed: %s' => 'La subida ha fallado: %s',
    'attachment_ids array is required.' => 'El array attachment_ids es obligatorio.',
    'Maximum 50 attachments per operation.' => 'Máximo 50 archivos adjuntos por operación.',
    '%1$d media file(s) permanently deleted. Failed: %2$d.' => '%1$d archivo(s) multimedia eliminado(s) permanentemente. Fallidos: %2$d.',
    'Invalid fact_type. Use: %s' => 'fact_type no válido. Usa: %s',
    'meta_key is required.' => 'meta_key es obligatorio.',
    'Updating meta key \'%s\' is blocked for security.' => 'Actualizar la meta key «%s» está bloqueado por seguridad.',
    'Meta \'%1$s\' updated on post ID %2$d.' => 'Meta «%1$s» actualizada en la entrada ID %2$d.',
    'Menu with ID %d not found.' => 'No encuentro el menú con ID %d.',
    'Invalid action. Use \'create_menu\', \'add_item\', or \'remove_item\'.' => 'Acción no válida. Usa \'create_menu\', \'add_item\' o \'remove_item\'.',
    'menu_name is required to create a menu.' => 'menu_name es obligatorio para crear un menú.',
    'Menu \'%s\' created.' => 'Menú «%s» creado.',
    'menu_id is required to add items.' => 'menu_id es obligatorio para añadir elementos.',
    'item_title is required.' => 'item_title es obligatorio.',
    'Item \'%s\' added to menu.' => 'Elemento «%s» añadido al menú.',
    'item_id is required to remove a menu item.' => 'item_id es obligatorio para quitar un elemento del menú.',
    'Menu item ID %d not found.' => 'No encuentro el elemento de menú con ID %d.',
    'Menu item ID %d removed.' => 'Elemento de menú con ID %d eliminado.',
    'Failed to remove menu item.' => 'No he podido quitar el elemento del menú.',
    'stylesheet (theme directory name) is required.' => 'stylesheet (nombre del directorio del tema) es obligatorio.',
    'Theme \'%s\' is not installed.' => 'El tema «%s» no está instalado.',
    'Theme \'%s\' is already active.' => 'El tema «%s» ya está activo.',
    'Theme switched to \'%s\'.' => 'He cambiado el tema a «%s».',
    'Theme switch failed.' => 'No he podido cambiar el tema.',
    'Insufficient permissions to create playbooks.' => 'No tienes permisos suficientes para crear playbooks.',
    'playbook_slug is required and must resolve to a valid kebab-case identifier.' => 'playbook_slug es obligatorio y debe ser un identificador kebab-case válido.',
    'content is required.' => 'content es obligatorio.',
    'Playbook "%s" saved (inactive). Ask me to activate it when you are ready.' => 'He guardado el playbook «%s» (inactivo). Pídeme que lo active cuando quieras.',
    'Insufficient permissions to list playbooks.' => 'No tienes permisos suficientes para listar playbooks.',
    'Insufficient permissions to read playbooks.' => 'No tienes permisos suficientes para leer playbooks.',
    'playbook_slug is required.' => 'playbook_slug es obligatorio.',
    'No playbook found with slug "%s".' => 'No encuentro ningún playbook con el slug «%s».',
    'Insufficient permissions to update playbooks.' => 'No tienes permisos suficientes para actualizar playbooks.',
    'Playbook "%s" is archived and cannot be updated. Restore it first.' => 'El playbook «%s» está archivado y no se puede actualizar. Restáuralo primero.',
    'Will replace the source of playbook "%1$s" (currently %2$s). The status will be preserved.' => 'Voy a sustituir el código del playbook «%1$s» (actualmente %2$s). El estado se conservará.',
    'Playbook "%s" updated.' => 'He actualizado el playbook «%s».',
    'Insufficient permissions to delete playbooks.' => 'No tienes permisos suficientes para eliminar playbooks.',
    'Will permanently delete playbook "%1$s" (currently %2$s). This cannot be undone.' => 'Voy a eliminar permanentemente el playbook «%1$s» (actualmente %2$s). No se puede deshacer.',
    'Insufficient permissions to activate playbooks.' => 'No tienes permisos suficientes para activar playbooks.',
    'Playbook "%s" is already active.' => 'El playbook «%s» ya está activo.',
    'Playbook "%s" is archived and cannot be activated. Restore it from the admin panel first.' => 'El playbook «%s» está archivado y no se puede activar. Restáuralo primero desde el panel de administración.',
    'Will activate playbook "%1$s" (currently %2$s). After activation it will be delivered when matching abilities run or trigger keywords match.' => 'Voy a activar el playbook «%1$s» (actualmente %2$s). Tras la activación se aplicará cuando coincidan habilidades o palabras clave de activación.',
    'Insufficient permissions to deactivate playbooks.' => 'No tienes permisos suficientes para desactivar playbooks.',
    'Playbook "%1$s" is not active (current status: %2$s). Nothing to deactivate.' => 'El playbook «%1$s» no está activo (estado actual: %2$s). No hay nada que desactivar.',
    'Will move playbook "%s" from active to inactive. It will stop being delivered but stay in the panel; you can reactivate it later.' => 'Voy a pasar el playbook «%s» de activo a inactivo. Dejará de aplicarse pero seguirá en el panel; puedes reactivarlo después.',
    'Playbook "%s" deactivated. Now inactive.' => 'He desactivado el playbook «%s». Ahora está inactivo.',
    'No database playbook found with slug "%s". Built-in, addon, and filesystem playbooks cannot be changed from chat.' => 'No encuentro ningún playbook en base de datos con el slug «%s». Los playbooks integrados, de addon y del sistema de archivos no se pueden cambiar desde el chat.',
    'Invalid action. Use \'activate\', \'deactivate\', or \'delete\'.' => 'Acción no válida. Usa \'activate\', \'deactivate\' o \'delete\'.',
    'Plugin slug is required.' => 'El slug del plugin es obligatorio.',
    'Plugin with slug \'%s\' not found.' => 'No encuentro ningún plugin con el slug «%s».',
    'Plugin \'%s\' activated.' => 'He activado el plugin «%s».',
    'Plugin \'%s\' deactivated.' => 'He desactivado el plugin «%s».',
    'Cannot delete an active plugin. Deactivate it first.' => 'No puedo eliminar un plugin activo. Desactívalo primero.',
    'Plugin \'%s\' deleted.' => 'He eliminado el plugin «%s».',
    'Plugin \'%s\' is already up to date. No update available.' => 'El plugin «%s» ya está actualizado. No hay actualización disponible.',
    'Update failed for unknown reason. Check file permissions and ensure the filesystem is accessible.' => 'La actualización ha fallado por un motivo desconocido. Revisa los permisos de archivos y que el sistema de archivos sea accesible.',
    'Update appeared to succeed but the plugin version did not change (still %s). Check file permissions and disk space.' => 'La actualización pareció funcionar pero la versión del plugin no cambió (sigue en %s). Revisa permisos de archivos y espacio en disco.',
    'Plugin \'%1$s\' updated from %2$s to %3$s.' => 'He actualizado el plugin «%1$s» de %2$s a %3$s.',
    'A search keyword is required.' => 'Hace falta una palabra clave de búsqueda.',
    'WordPress.org API error: %s' => 'Error de la API de WordPress.org: %s',
    'Plugin slug is required for installation.' => 'El slug del plugin es obligatorio para la instalación.',
    'Failed to retrieve plugin information: %s' => 'No he podido obtener la información del plugin: %s',
    'Installation failed: %s' => 'La instalación ha fallado: %s',
    'Installation failed for unknown reason. Check file permissions and ensure the filesystem is accessible.' => 'La instalación ha fallado por un motivo desconocido. Revisa los permisos de archivos y que el sistema de archivos sea accesible.',
    'Plugin \'%s\' installed successfully. It is currently inactive. You can activate it using toggle_plugin.' => 'He instalado el plugin «%s» correctamente. Está inactivo. Puedes activarlo con toggle_plugin.',
    'An array of plugin slugs is required.' => 'El array de slugs de plugin es obligatorio.',
    'None of the provided slugs matched installed plugins.' => 'Ninguno de los slugs indicados coincide con plugins instalados.',
    'Bulk update failed: check filesystem permissions.' => 'La actualización masiva ha fallado: revisa los permisos del sistema de archivos.',
    '%d plugin(s) updated.' => 'He actualizado %d plugin(s).',
    'Insufficient permissions to create skills.' => 'No tienes permisos suficientes para crear skills.',
    'skill_name is required and must resolve to a valid kebab-case identifier.' => 'skill_name es obligatorio y debe ser un identificador kebab-case válido.',
    'Skill "%s" saved (inactive). Ask me to activate it when you are ready.' => 'He guardado la skill «%s» (inactiva). Pídeme que la active cuando quieras.',
    'Insufficient permissions to activate skills.' => 'No tienes permisos suficientes para activar skills.',
    'skill_name is required.' => 'skill_name es obligatorio.',
    'No skill found with name "%s".' => 'No encuentro ninguna skill con el nombre «%s».',
    'Skill "%s" is already active.' => 'La skill «%s» ya está activa.',
    'Skill "%s" is archived and cannot be activated. Restore it from the admin panel first.' => 'La skill «%s» está archivada y no se puede activar. Restáurala primero desde el panel de administración.',
    'Will activate skill "%1$s" (currently %2$s). After activation it will start influencing every reply matching its rules.' => 'Voy a activar la skill «%1$s» (actualmente %2$s). Tras la activación empezará a influir en cada respuesta que coincida con sus reglas.',
    'Insufficient permissions to update skills.' => 'No tienes permisos suficientes para actualizar skills.',
    'Skill "%s" is archived and cannot be updated. Restore it first.' => 'La skill «%s» está archivada y no se puede actualizar. Restáurala primero.',
    'Will replace the source of skill "%1$s" (currently %2$s). The status will be preserved.' => 'Voy a sustituir el código de la skill «%1$s» (actualmente %2$s). El estado se conservará.',
    'Insufficient permissions to list skills.' => 'No tienes permisos suficientes para listar skills.',
    'Insufficient permissions to delete skills.' => 'No tienes permisos suficientes para eliminar skills.',
    'No skill found with name "%s". (Bundled skills cannot be deleted from chat — only user/Lola-generated ones.)' => 'No encuentro ninguna skill con el nombre «%s». (Las skills integradas no se pueden eliminar desde el chat — solo las generadas por ti o por Lola.)',
    'Will permanently delete skill "%1$s" (currently %2$s). This cannot be undone.' => 'Voy a eliminar permanentemente la skill «%1$s» (actualmente %2$s). No se puede deshacer.',
    'Insufficient permissions to deactivate skills.' => 'No tienes permisos suficientes para desactivar skills.',
    'Skill "%1$s" is not active (current status: %2$s). Nothing to deactivate.' => 'La skill «%1$s» no está activa (estado actual: %2$s). No hay nada que desactivar.',
    'Will move skill "%s" from active to inactive. It will stop firing but stay in the panel; you can reactivate it later.' => 'Voy a pasar la skill «%s» de activa a inactiva. Dejará de aplicarse pero seguirá en el panel; puedes reactivarla después.',
    'Skill "%s" deactivated. Now inactive.' => 'He desactivado la skill «%s». Ahora está inactiva.',
    'Time limit approaching — stopped safely after %d revisions. Run again to continue.' => 'Me acerco al límite de tiempo — me he detenido de forma segura tras %d revisiones. Vuelve a ejecutarlo para continuar.',
    'Revision batch error: %s' => 'Error en el lote de revisiones: %s',
    'Time limit approaching during orphaned meta cleanup. Run again to continue.' => 'Me acerco al límite de tiempo durante la limpieza de meta huérfana. Vuelve a ejecutarlo para continuar.',
    'Orphaned meta error: %s' => 'Error de meta huérfana: %s',
    'Time limit approaching — stopped safely after %d spam comments. Run again to continue.' => 'Me acerco al límite de tiempo — me he detenido de forma segura tras %d comentarios spam. Vuelve a ejecutarlo para continuar.',
    'Spam batch error: %s' => 'Error en el lote de spam: %s',
    'Time limit approaching during transient cleanup. Run again to continue.' => 'Me acerco al límite de tiempo durante la limpieza de transients. Vuelve a ejecutarlo para continuar.',
    '\'%s\' is a PHP constant defined in wp-config.php, not a WordPress option. update_option() cannot change it. The site owner must edit wp-config.php manually via FTP, cPanel File Manager, or SSH.' => '«%s» es una constante PHP definida en wp-config.php, no una opción de WordPress. update_option() no puede cambiarla. Tienes que editar wp-config.php manualmente por FTP, el administrador de archivos de cPanel o SSH.',
    'Updating option \'%s\' is blocked for security reasons.' => 'Actualizar la opción «%s» está bloqueado por razones de seguridad.',
    'No recognized caching plugin detected.' => 'No he detectado ningún plugin de caché reconocido.',
    'Cache purged successfully.' => 'He vaciado la caché correctamente.',
    'No orphaned cron jobs found.' => 'No he encontrado tareas cron huérfanas.',
    'Will remove orphaned cron hooks' => 'Voy a eliminar los hooks cron huérfanos',
    '%d orphaned cron job(s) removed.' => 'He eliminado %d tarea(s) cron huérfana(s).',
    'Invalid action. Use \'create\', \'update\', or \'delete\'.' => 'Acción no válida. Usa \'create\', \'update\' o \'delete\'.',
    'Taxonomy \'%s\' does not exist.' => 'La taxonomía «%s» no existe.',
    'Term name is required for create.' => 'El nombre del término es obligatorio para crear.',
    'Term \'%1$s\' created in %2$s.' => 'Término «%1$s» creado en %2$s.',
    'term_id is required for update.' => 'term_id es obligatorio para actualizar.',
    'Term ID %1$d not found in %2$s.' => 'No encuentro el término con ID %1$d en %2$s.',
    'Nothing to update.' => 'No hay nada que actualizar.',
    'Term ID %d updated.' => 'Término con ID %d actualizado.',
    'term_id is required for delete.' => 'term_id es obligatorio para eliminar.',
    'Term ID %d deleted.' => 'Término con ID %d eliminado.',
    'Theme slug is required for installation.' => 'El slug del tema es obligatorio para la instalación.',
    'Failed to retrieve theme information: %s' => 'No he podido obtener la información del tema: %s',
    'Theme \'%s\' installed successfully. It is currently inactive. You can activate it using switch_theme.' => 'He instalado el tema «%s» correctamente. Está inactivo. Puedes activarlo con switch_theme.',
    'Theme \'%s\' is already up to date. No update available.' => 'El tema «%s» ya está actualizado. No hay actualización disponible.',
    'Update appeared to succeed but the theme version did not change (still %s). Check file permissions and disk space.' => 'La actualización pareció funcionar pero la versión del tema no cambió (sigue en %s). Revisa permisos de archivos y espacio en disco.',
    'Theme \'%1$s\' updated from %2$s to %3$s.' => 'He actualizado el tema «%1$s» de %2$s a %3$s.',
    'An array of theme stylesheets is required.' => 'El array de stylesheets de tema es obligatorio.',
    'None of the provided stylesheets matched installed themes.' => 'Ninguno de los stylesheets indicados coincide con temas instalados.',
    '%d theme(s) updated.' => 'He actualizado %d tema(s).',
    'Cannot delete the currently active theme. Switch to another theme first using switch_theme.' => 'No puedo eliminar el tema activo. Cambia a otro tema primero con switch_theme.',
    'Cannot delete \'%s\' — it is the parent theme of the active child theme. Switch to another theme first.' => 'No puedo eliminar «%s» — es el tema padre del tema hijo activo. Cambia a otro tema primero.',
    'Delete failed: %s' => 'La eliminación ha fallado: %s',
    'Delete failed. Check filesystem permissions.' => 'La eliminación ha fallado. Revisa los permisos del sistema de archivos.',
    'Theme \'%s\' deleted.' => 'He eliminado el tema «%s».',
    'Role \'%s\' does not exist.' => 'El rol «%s» no existe.',
    'Invalid action. Use \'create\', \'update_role\', or \'delete\'.' => 'Acción no válida. Usa \'create\', \'update_role\' o \'delete\'.',
    'Username and email are required to create a user.' => 'El nombre de usuario y el email son obligatorios para crear un usuario.',
    'User creation failed: %s' => 'No he podido crear el usuario: %s',
    'user_id and role are required.' => 'user_id y role son obligatorios.',
    'User with ID %d not found.' => 'No encuentro el usuario con ID %d.',
    'Cannot change role of the only administrator.' => 'No puedo cambiar el rol del único administrador.',
    'user_id is required for delete.' => 'user_id es obligatorio para eliminar.',
    'reassign_to is mandatory. Content must be reassigned to prevent data loss.' => 'reassign_to es obligatorio. Hay que reasignar el contenido para evitar pérdida de datos.',
    'Cannot delete the currently logged-in user.' => 'No puedo eliminar el usuario con la sesión iniciada.',
    'Cannot delete the only administrator.' => 'No puedo eliminar al único administrador.',
    'User \'%1$s\' deleted. Content reassigned to user ID %2$d.' => 'He eliminado al usuario «%1$s». Contenido reasignado al usuario ID %2$d.',
    'User deletion failed.' => 'No he podido eliminar al usuario.',
    'Invalid action. Use \'create\', \'delete\', \'add_caps\', or \'remove_caps\'.' => 'Acción no válida. Usa \'create\', \'delete\', \'add_caps\' o \'remove_caps\'.',
    'role_slug is required.' => 'role_slug es obligatorio.',
    'display_name is required when creating a role.' => 'display_name es obligatorio al crear un rol.',
    'Role \'%s\' already exists.' => 'El rol «%s» ya existe.',
    'Cannot clone from \'%s\': role does not exist.' => 'No puedo clonar desde «%s»: el rol no existe.',
    'Failed to create role. The role may already exist or the slug is invalid.' => 'No he podido crear el rol. Puede que ya exista o que el slug no sea válido.',
    'Role \'%1$s\' (%2$s) created successfully.' => 'He creado el rol «%1$s» (%2$s) correctamente.',
    'Cannot delete built-in role \'%s\'. Only custom roles can be deleted.' => 'No puedo eliminar el rol integrado «%s». Solo se pueden eliminar roles personalizados.',
    'Cannot delete role \'%1$s\': %2$d user(s) still assigned to it. Reassign them first.' => 'No puedo eliminar el rol «%1$s»: %2$d usuario(s) siguen asignados. Reasígnalos primero.',
    'Role \'%s\' has been deleted.' => 'He eliminado el rol «%s».',
    'capabilities array is required for add_caps/remove_caps.' => 'El array capabilities es obligatorio para add_caps/remove_caps.',
    'Maximum 50 capabilities per operation.' => 'Máximo 50 capacidades por operación.',
    'Cannot remove manage_options from the administrator role. This would lock everyone out of site administration.' => 'No puedo quitar manage_options del rol administrador. Eso dejaría a todo el mundo fuera de la administración del sitio.',
    'added to' => 'añadidas al',
    'removed from' => 'eliminadas del',
    '%1$d capability(ies) %2$s role \'%3$s\'.' => '%1$d capacidad(es) %2$s rol «%3$s».',
    'WooCommerce is not installed or activated.' => 'WooCommerce no está instalado o activado.',
    'A valid product_id is required.' => 'Hace falta un product_id válido.',
    'Product not found.' => 'No encuentro el producto.',
    'A valid order_id is required.' => 'Hace falta un order_id válido.',
    'Order not found.' => 'No encuentro el pedido.',
    'Stock quantity cannot be negative.' => 'La cantidad de stock no puede ser negativa.',
    'Product updated successfully.' => 'He actualizado el producto correctamente.',
    'Invalid order status provided.' => 'Estado de pedido no válido.',
    'Order status updated.' => 'He actualizado el estado del pedido.',
    'Product name and regular_price are required.' => 'El nombre del producto y regular_price son obligatorios.',
    'Product \'%1$s\' created with ID %2$d.' => 'He creado el producto «%1$s» con ID %2$d.',
    'Category name is required for create.' => 'El nombre de la categoría es obligatorio para crear.',
    'Product category \'%s\' created.' => 'He creado la categoría de producto «%s».',
    'Product category ID %d not found.' => 'No encuentro la categoría de producto con ID %d.',
    'Product category updated.' => 'He actualizado la categoría de producto.',
    'Product category deleted.' => 'He eliminado la categoría de producto.',
    'Invalid action. Use \'create\', \'update\', \'delete\', \'list\', or \'get\'.' => 'Acción no válida. Usa \'create\', \'update\', \'delete\', \'list\' o \'get\'.',
    'coupon_id is required for get.' => 'coupon_id es obligatorio para get.',
    'Coupon ID %d not found.' => 'No encuentro el cupón con ID %d.',
    'Coupon code is required for create.' => 'El código del cupón es obligatorio para crear.',
    'Coupon \'%s\' created.' => 'He creado el cupón «%s».',
    'coupon_id is required for update.' => 'coupon_id es obligatorio para actualizar.',
    'Coupon updated.' => 'He actualizado el cupón.',
    'coupon_id is required for delete.' => 'coupon_id es obligatorio para eliminar.',
    'Coupon deleted.' => 'He eliminado el cupón.',
    'Failed to delete coupon.' => 'No he podido eliminar el cupón.',
    'BlockBuilderHandler: unknown action \'%s\'.' => 'BlockBuilderHandler: acción desconocida «%s».',
    'Could not update the built block: %s' => 'No he podido actualizar el bloque construido: %s',
    'Could not save the built block: %s' => 'No he podido guardar el bloque construido: %s',
    'Will move built block to trash (library only — installed copy on disk is not removed)' => 'Voy a mover el bloque construido a la papelera (solo biblioteca — la copia instalada en disco no se elimina)',
    'I couldn\'t save this block safely. Fix these issues and try again:' => 'No he podido guardar este bloque de forma segura. Corrige estos problemas y reinténtalo:',
    'Block passed deterministic static safety checks.' => 'El bloque ha pasado las comprobaciones estáticas de seguridad deterministas.',
    'Block saved with non-blocking safety warnings.' => 'He guardado el bloque con advertencias de seguridad no bloqueantes.',
    'File map exceeds the inline audit budget; partial content returned.' => 'El mapa de archivos supera el presupuesto de auditoría inline; he devuelto contenido parcial.',
    'Playground URL generated for %1$s (v%2$d).' => 'He generado la URL de Playground para %1$s (v%2$d).',
    'Block "%1$s" saved (v%2$d).' => 'He guardado el bloque «%1$s» (v%2$d).',
    'Could not write the block PHP file.' => 'No he podido escribir el archivo PHP del bloque.',
    'Could not write the block JavaScript file.' => 'No he podido escribir el archivo JavaScript del bloque.',
    'Could not write the block CSS file.' => 'No he podido escribir el archivo CSS del bloque.',
    'Could not write block.json.' => 'No he podido escribir block.json.',
    'Could not create the block directory.' => 'No he podido crear el directorio del bloque.',
    'Could not write %s.' => 'No he podido escribir %s.',
    'PHP syntax validation failed.' => 'La validación de sintaxis PHP ha fallado.',
    ' Error near line %d.' => ' Error cerca de la línea %d.',
    'Could not create directory %s.' => 'No he podido crear el directorio %s.',
    'apiVersion %d is not supported. Use 2 or 3.' => 'apiVersion %d no es compatible. Usa 2 o 3.',
    'block.json name must use the reserved namespace "%s".' => 'El nombre en block.json debe usar el namespace reservado «%s».',
    'Block "%s" is already registered on this site.' => 'El bloque «%s» ya está registrado en este sitio.',
    'block.json references missing file "%1$s" (%2$s).' => 'block.json hace referencia al archivo faltante «%1$s» (%2$s).',
    'File "%1$s" exceeds the %2$d byte limit.' => 'El archivo «%1$s» supera el límite de %2$d bytes.',
    'The file tree exceeds the %d byte total limit.' => 'El árbol de archivos supera el límite total de %d bytes.',
    'File path "%s" contains control characters.' => 'La ruta de archivo «%s» contiene caracteres de control.',
    'File path "%s" must use forward slashes only.' => 'La ruta de archivo «%s» solo puede usar barras inclinadas (/).',
    'File path "%s" must be relative.' => 'La ruta de archivo «%s» debe ser relativa.',
    'File path "%s" contains a traversal or empty segment.' => 'La ruta de archivo «%s» contiene un segmento de traversing o vacío.',
    'File path "%s" has no file name.' => 'La ruta de archivo «%s» no tiene nombre de archivo.',
    'File path "%s" has a disallowed extension.' => 'La ruta de archivo «%s» tiene una extensión no permitida.',
    'The plugin failed to load.' => 'El plugin no ha podido cargarse.',
    'This plugin triggers a fatal error when WordPress loads it%1$s: %2$s Ask me to fix it before testing or installing.' => 'Este plugin provoca un error fatal al cargar WordPress%1$s: %2$s Pídeme que lo corrija antes de probarlo o instalarlo.',
    ' (line %d)' => ' (línea %d)',
    'eval() executes arbitrary PHP and is not allowed in generated plugins.' => 'eval() ejecuta PHP arbitrario y no está permitido en plugins generados.',
    'exec() runs shell commands and is not allowed in generated plugins.' => 'exec() ejecuta comandos shell y no está permitido en plugins generados.',
    'shell_exec() runs shell commands and is not allowed in generated plugins.' => 'shell_exec() ejecuta comandos shell y no está permitido en plugins generados.',
    'passthru() runs shell commands and is not allowed in generated plugins.' => 'passthru() ejecuta comandos shell y no está permitido en plugins generados.',
    'system() runs shell commands and is not allowed in generated plugins.' => 'system() ejecuta comandos shell y no está permitido en plugins generados.',
    'proc_open() runs shell commands and is not allowed in generated plugins.' => 'proc_open() ejecuta comandos shell y no está permitido en plugins generados.',
    'popen() runs shell commands and is not allowed in generated plugins.' => 'popen() ejecuta comandos shell y no está permitido en plugins generados.',
    'create_function() is deprecated and is not allowed in generated plugins.' => 'create_function() está obsoleto y no está permitido en plugins generados.',
    'assert() with string arguments can execute code and is not allowed in generated plugins.' => 'assert() con argumentos de tipo string puede ejecutar código y no está permitido en plugins generados.',
    'This function is not allowed in generated plugins.' => 'Esta función no está permitida en plugins generados.',
    'The class reference "%s" is missing its namespace backslashes, so it points to a class that does not exist. Use the fully-qualified name with a leading and separating backslash, e.g. \\Automattic\\WooCommerce\\Utilities\\FeaturesUtil::declare_compatibility(...).' => 'La referencia de clase «%s» no tiene las barras invertidas del namespace, así que apunta a una clase que no existe. Usa el nombre totalmente cualificado con barra invertida inicial y separadora, p. ej. \\Automattic\\WooCommerce\\Utilities\\FeaturesUtil::declare_compatibility(...).',
    'Class "%1$s" %2$s "%3$s", which is not available when this file loads. Wrap the declaration in a hook callback, guard it with class_exists(), or require the parent class before use.' => 'La clase «%1$s» %2$s «%3$s», que no está disponible cuando se carga este archivo. Envuelve la declaración en un callback de hook, protégela con class_exists() o requiere la clase padre antes de usarla.',
    'The user denied execution of this action.' => 'Has denegado la ejecución de esta acción.',
    'Execution failed: %s' => 'La ejecución ha fallado: %s',
    'Escalation already used in this session. Work with the tools you have, or ask the user for help.' => 'Ya he usado la escalada en esta sesión. Trabaja con las herramientas que tienes, o pídele ayuda al usuario.',
    'Escalation granted. Re-processing your request with the full toolset.' => 'Escalada concedida. Vuelvo a procesar tu petición con el conjunto completo de herramientas.',
    'Error executing tool: %s' => 'Error al ejecutar la herramienta: %s',
    'Generation started asynchronously. Job ID: %s' => 'Generación iniciada de forma asíncrona. ID del trabajo: %s',
    '**Preview (%s):**' => '**Vista previa (%s):**',
    '**Preview failed:** %s' => '**Vista previa fallida:** %s',
    '**Preview error:** %s' => '**Error de vista previa:** %s',
    'All pending updates' => 'Todas las actualizaciones pendientes',
    'Lola requests permission to execute: %s' => 'Lola pide permiso para ejecutar: %s',
    'Lola requests permission to execute %d actions' => 'Lola pide permiso para ejecutar %d acciones',
    '%d actions' => '%d acciones',
    'Action limit reached.' => 'Límite de acciones alcanzado.',
    'Action denied.' => 'Acción denegada.',
    'Generated plugin is incomplete. Missing code blocks: %s.' => 'El plugin generado está incompleto. Faltan bloques de código: %s.',
    'The model returned an empty response. Check your model in LolaCore Settings and ensure the plugin code is in the main response text.' => 'El modelo ha devuelto una respuesta vacía. Revisa tu modelo en Ajustes de LolaCore y asegúrate de que el código del plugin está en el texto principal de la respuesta.',
    'The response may have been truncated before all three files were finished.' => 'La respuesta puede haberse truncado antes de terminar los tres archivos.',
    'The model replied with prose instead of the required fenced code blocks.' => 'El modelo ha respondido con prosa en lugar de los bloques de código delimitados requeridos.',
    'Ensure the model returns ```php, ```js, and ```css fenced blocks. For large WooCommerce plugins, try DeepSeek V4 Pro or run the request again.' => 'Asegúrate de que el modelo devuelve bloques delimitados ```php, ```js y ```css. Para plugins grandes de WooCommerce, prueba DeepSeek V4 Pro o vuelve a lanzar la petición.',
    'I couldn\'t deliver this plugin safely. Simplify the description or split it into smaller steps, then try again.' => 'No he podido entregar este plugin de forma segura. Simplifica la descripción o divídela en pasos más pequeños y reinténtalo.',
    'I hit the same safety issue twice and could not fix it automatically. Try a simpler description, or split the plugin into smaller steps.' => 'He encontrado el mismo problema de seguridad dos veces y no he podido corregirlo automáticamente. Prueba con una descripción más simple o divide el plugin en pasos más pequeños.',
    'PluginBuilderHandler: unknown action \'%s\'.' => 'PluginBuilderHandler: acción desconocida «%s».',
    'This build needs more work before saving. Review the suggestions carefully before approving.' => 'Esta construcción necesita más trabajo antes de guardar. Revisa las sugerencias con atención antes de aprobar.',
    'Could not save the built plugin: %s' => 'No he podido guardar el plugin construido: %s',
    'Could not update the built plugin: %s' => 'No he podido actualizar el plugin construido: %s',
    'Saved verbatim from author-provided source code (no AI generation).' => 'Guardado tal cual desde el código fuente proporcionado por el autor (sin generación por IA).',
    'Author-provided code stored verbatim; passed deterministic static safety checks (no AI code review ran).' => 'Código del autor guardado tal cual; ha pasado las comprobaciones estáticas de seguridad deterministas (no se ejecutó revisión de código por IA).',
    'Author-provided code stored verbatim; deterministic static safety checks raised non-blocking warnings (no AI code review ran).' => 'Código del autor guardado tal cual; las comprobaciones estáticas de seguridad deterministas han generado advertencias no bloqueantes (no se ejecutó revisión de código por IA).',
    'I couldn\'t save this code: it did not pass the static safety checks. Fix these issues and save it again:' => 'No he podido guardar este código: no ha pasado las comprobaciones estáticas de seguridad. Corrige estos problemas y guárdalo otra vez:',
    '
... [truncated: %d chars omitted]' => '
... [truncado: %d caracteres omitidos]',
    'Code exceeds the inline audit budget (%1$d chars). Truncated to fit: %2$s. This audit reflects partial code — say so if it affects your assessment.' => 'El código supera el presupuesto de auditoría inline (%1$d caracteres). Truncado para encajar: %2$s. Esta auditoría refleja código parcial — dilo si afecta a tu valoración.',
    'Plugin "%1$s" saved (v%2$d).' => 'He guardado el plugin «%1$s» (v%2$d).',
    'A backup plugin is active on this site. Make sure you have a recent backup before installing. Your built plugin is reversible by Lola (each version is a saved revision); the backup is your safety net for everything else.' => 'Hay un plugin de copia de seguridad activo en este sitio. Asegúrate de tener una copia reciente antes de instalar. Tu plugin construido es reversible por Lola (cada versión es una revisión guardada); la copia de seguridad es tu red de seguridad para todo lo demás.',
    'No active backup plugin was detected on this site. Make a recent backup before installing on your live site — a host or staging snapshot also counts. Your built plugin is reversible by Lola (each version is a saved revision); a full-site backup protects everything else. Offer to install a backup plugin (e.g. UpdraftPlus) if the user has none, but do not install it without their go-ahead.' => 'No he detectado ningún plugin de copia de seguridad activo en este sitio. Haz una copia reciente antes de instalar en tu sitio real — una instantánea del hosting o del staging también vale. Tu plugin construido es reversible por Lola (cada versión es una revisión guardada); una copia de seguridad completa del sitio protege todo lo demás. Ofrece instalar un plugin de copia de seguridad (p. ej. UpdraftPlus) si el usuario no tiene ninguno, pero no lo instales sin su visto bueno.',
    'Will move built plugin to trash' => 'Voy a mover el plugin construido a la papelera',
    'I generated code, but it did not pass my internal quality checks. Try breaking your request into smaller steps or providing simpler instructions.' => 'He generado código, pero no ha pasado mis comprobaciones internas de calidad. Prueba a dividir tu petición en pasos más pequeños o a dar instrucciones más simples.',
    'I could not activate the plugin: %s' => 'No he podido activar el plugin: %s',
    'Could not write the plugin PHP file.' => 'No he podido escribir el archivo PHP del plugin.',
    'Could not write the plugin JavaScript file.' => 'No he podido escribir el archivo JavaScript del plugin.',
    'Could not write the plugin CSS file.' => 'No he podido escribir el archivo CSS del plugin.',
    'Could not create the plugin directory.' => 'No he podido crear el directorio del plugin.',
    ' Check that your model in LolaCore Settings returned plugin code in the main response (not only in a thinking block).' => ' Comprueba que tu modelo en Ajustes de LolaCore devolvió el código del plugin en la respuesta principal (no solo en un bloque de razonamiento).',
);
