{
  "nav": {
    "home": "Inicio",
    "about": "Sobre mí",
    "tech": "Stack Tecnológico",
    "projects": "Proyectos",
    "services": "Servicios",
    "experience": "Experiencia",
    "skills": "Soft Skills",
    "contact": "Contacto",
    "blog": "Blog",
    "more": "Más",
    "login": "Acceder",
    "admin": "Admin",
    "dashboard": "Dashboard",
    "ai_tools": "IA & Herramientas",
    "testimonials": "Testimonios",
    "search": "Buscar",
    "open_menu": "Abrir menú",
    "back_to_top": "Volver arriba",
    "main_aria": "Navegación principal",
    "bottom_aria": "Navegación rápida"
  },
  "sidebar": {
    "collapse_menu": "Contraer el menú lateral",
    "expand_menu": "Expandir el menú lateral",
    "collapse_icons": "Contraer (iconos)",
    "expand_icons": "Expandir (iconos + texto)",
    "close_menu": "Cerrar menú",
    "brand_admin": "Admin",
    "brand_tools": "IA & Herramientas",
    "explore_lab": "Explorar el Lab",
    "items_available": "{{count}} herramientas disponibles",
    "lab": "Lab",
    "command_palette_placeholder": "Ir a...",
    "command_palette_aria": "Buscar e ir a una sección",
    "command_palette_no_results": "Sin resultados",
    "groups": {
      "overview": "Resumen",
      "content": "Contenido",
      "ai": "IA",
      "workspace": "Flujo de trabajo",
      "tools": "Herramientas",
      "account": "Cuenta"
    },
    "items": {
      "dashboard": "Dashboard",
      "projects": "Proyectos",
      "blog": "Blog",
      "experiences": "Experiencia",
      "about": "Sobre mí",
      "testimonials": "Testimonios",
      "newsletter": "Newsletter",
      "notes": "Notas",
      "pdf_search": "Buscar PDF",
      "library": "Biblioteca",
      "pdf_summary": "Resumen de PDF",
      "ai_formatter": "Formateador IA",
      "pdf_translate": "Traducción de PDF",
      "ai_ppt": "Generar Diapositivas",
      "workspace": "Workspace",
      "pdf_editor": "Organizar PDF",
      "viewer": "Visor de PDF",
      "editor": "Editor de Texto",
      "convert": "Convertidor de Archivos",
      "ocr": "Texto desde Imagen (OCR)",
      "scanner": "Escáner de Documentos",
      "my_files": "Mis archivos",
      "contacts": "Contactos",
      "users": "Usuarios",
      "ai_assistant": "Asistente IA",
      "live_chat": "Chat en vivo"
    }
  },
  "lang": {
    "label": "Idioma",
    "it": "Italiano",
    "en": "English",
    "sq": "Shqip",
    "es": "Español",
    "pt": "Português",
    "fr": "Français",
    "de": "Deutsch"
  },
  "search": {
    "trigger": "Buscar en el sitio",
    "dialog_label": "Búsqueda en el sitio",
    "placeholder": "Buscar artículos, proyectos...",
    "min_chars": "Escribe al menos {{count}} caracteres",
    "loading": "Buscando...",
    "tap_outside_close": "Toca fuera para cerrar",
    "no_results": "Sin resultados",
    "view_all": "Ver todos los resultados",
    "results_for": "Resultados para",
    "results_count": "resultados encontrados",
    "filters": {
      "all": "Todos",
      "post": "Blog",
      "project": "Proyectos",
      "page": "Secciones"
    }
  },
  "hero": {
    "role": "Desarrollador Senior Front-End & API",
    "tagline1": "Angular",
    "tagline2": "Aplicaciones Web",
    "tagline3": "UI/UX & Data Visualization 3D Web",
    "description": "Diseño y desarrollo aplicaciones e interfaces escalables con Angular, JavaScript y las principales bibliotecas frontend. Optimizo el rendimiento reduciendo la latencia y mejorando la capacidad de respuesta del sistema. Ofrezco soluciones fiables y estables listas para entornos enterprise de misión crítica. Trabajo como Angular Developer y TypeScript Developer para equipos enterprise.",
    "kpi_years": "Años de experiencia",
    "kpi_projects": "Proyectos completados",
    "kpi_companies": "Empresas enterprise",
    "kpi_latency": "Reducción de latencia (típica)",
    "scroll": "Desplazar"
  },
  "about": {
    "tag": "about",
    "title": "Sobre mí",
    "subtitle": "Desarrollador senior con más de 8 años en web enterprise",
    "bio1": "Soy un <strong>Desarrollador Senior Front-End & API</strong> con sólida experiencia en el desarrollo de aplicaciones enterprise basadas en Angular, TypeScript y arquitecturas modernas. A lo largo de mi carrera he colaborado con importantes organizaciones en los sectores aeroespacial, defensa, telecomunicaciones y banca, contextos donde la fiabilidad y la calidad son requisitos imprescindibles.",
    "bio2": "Me interesa todo el ecosistema del desarrollo de software: desde la arquitectura de aplicaciones hasta el diseño de las API, desde la optimización del rendimiento hasta la construcción de experiencias de usuario eficaces. Transformo procesos complejos y grandes cantidades de datos en soluciones simples, robustas y fáciles de usar.",
    "bio3": "Una parte importante de mi crecimiento está ligada a mi familia y a mis orígenes en Blinisht. Los años pasados allí, junto con mi experiencia con los Embajadores de la Paz (2000-2012), me enseñaron el valor del diálogo, la colaboración y la sensibilidad hacia las diferencias.",
    "bio4": "Creo que el verdadero valor de un profesional reside en la unión de competencia técnica y sensibilidad humana. Este enfoque guía cada proyecto que asumo, afrontando problemas con responsabilidad, visión y espíritu constructivo.",
    "bio5": "Hoy llevo conmigo todo lo que he aprendido: las raíces de mi tierra, los valores de la familia, las experiencias que me han formado y la continua curiosidad por la tecnología. De esta unión de competencia y sensibilidad nacen las soluciones más eficaces y duraderas.",
    "birth": "Nacido en Blinisht-Lezhe (Albania) el 25/04/1988",
    "vision": {
      "title": "Visión End-to-End",
      "desc": "Un enfoque arquitectónico completo, desde la planificación del sistema de diseño hasta la entrega en producción. Amplia experiencia traduciendo requisitos de negocio complejos en interfaces intuitivas."
    },
    "perf": {
      "title": "Rendimiento & Escalabilidad",
      "desc": "Enfoque constante en la optimización del rendimiento, lazy loading estratégico, detección de cambios optimizada y arquitecturas modulares para contextos de alto tráfico."
    },
    "lead": {
      "title": "Liderazgo & Mentoría",
      "desc": "Guía técnica de equipos front-end, definición de buenas prácticas, revisiones de código estructuradas y sesiones de mentoría para desarrolladores junior y mid-level."
    },
    "card_philosophy": "Arquitectura",
    "card_philosophy_desc": "Módulos escalables, SOLID, clean code y performance-first en cada proyecto enterprise.",
    "card_ecosystem": "Ecosistema Angular",
    "card_ecosystem_desc": "Desde el arranque de aplicaciones greenfield hasta la refactorización de legacy, domino el ciclo completo.",
    "card_data": "Data Visualization",
    "card_data_desc": "Cesium.js, Chart.js, Looker Embedded, Photo Sphere Viewer para interfaces ricas en datos."
  },
  "tech": {
    "tag": "tech-stack",
    "title": "Tecnologías",
    "subtitle": "Stack tecnológico usado en producción en proyectos enterprise",
    "frontend": "Frontend",
    "dataviz": "Data Visualization",
    "backend": "Backend & API",
    "devops": "DevOps & Tools"
  },
  "projects": {
    "tag": "projects",
    "title": "Proyectos",
    "subtitle": "Selección de proyectos enterprise entregados en producción",
    "features_label": "Características principales",
    "geo": {
      "title": "Visualización 3D Geoespacial",
      "desc": "Plataforma interactiva para visualización geoespacial 3D con datos en tiempo real sobre un globo interactivo.",
      "f1": "Globo 3D interactivo",
      "f2": "Streaming de datos en tiempo real",
      "f3": "Gestión avanzada de capas",
      "f4": "Rendimiento optimizado"
    },
    "vr": {
      "title": "Tour Virtual 360°",
      "desc": "Aplicación inmersiva para visitas virtuales con navegación fluida entre entornos 360°.",
      "f1": "Navegación inmersiva 360°",
      "f2": "Hotspots interactivos",
      "f3": "Multi-dispositivo responsive",
      "f4": "Transiciones suaves"
    },
    "dash": {
      "title": "Dashboard Analytics",
      "desc": "Suite de dashboards analíticos con Looker Embedded y visualizaciones personalizadas de alto rendimiento.",
      "f1": "Integración Looker Embedded",
      "f2": "KPIs en tiempo real",
      "f3": "Drill-down multinivel",
      "f4": "Visualizaciones personalizadas"
    },
    "lib": {
      "title": "Libraria",
      "desc": "Plataforma digital para la gestión completa de bibliotecas, catálogo y préstamos.",
      "f1": "Catálogo centralizado de libros",
      "f2": "Gestión de préstamos y plazos",
      "f3": "Búsqueda avanzada y filtros",
      "f4": "Dashboard en tiempo real"
    },
    "ins": {
      "title": "Plataforma de Seguros",
      "desc": "Solución web para el sector asegurador con gestión de pólizas, siniestros y flujos de aprobación.",
      "f1": "Gestión de pólizas end-to-end",
      "f2": "Flujo de siniestros digitalizado",
      "f3": "Integración de servicios externos",
      "f4": "Audit trail y seguridad"
    },
    "discover": "Descubrir más",
    "read_case_study": "Lee el caso de estudio",
    "filter_label": "Filtrar por tecnología",
    "filter_all": "Todos",
    "filter_empty": "Ningún proyecto con esta tecnología."
  },
  "experience": {
    "tag": "experience",
    "title": "Experiencia",
    "subtitle": "Trayectoria profesional en empresas tecnológicas italianas e internacionales"
  },
  "exp": {
    "1": {
      "title": "Arquitectura Angular & 3D Web Enterprise",
      "role": "Desarrollador Front-End Senior",
      "desc": "Liderazgo técnico en proyectos enterprise en los sectores aeroespacial y defensa. Arquitectura Angular avanzada, visualización 3D geoespacial con Cesium.js y dashboards analíticos de alto rendimiento."
    },
    "2": {
      "title": "Plataformas Digitales & Data Visualization",
      "role": "Desarrollador Front-End · Especialista Data Viz",
      "desc": "Desarrollo de plataformas digitales innovadoras en los sectores telco y media. Dashboards analíticos con Looker Embedded, tours virtuales inmersivos con Photo Sphere Viewer."
    },
    "3": {
      "title": "Consultoría Enterprise & Ecosistema Microsoft",
      "role": "Desarrollador Front-End · Consultor Angular",
      "desc": "Consultoría enterprise en proyectos basados en Microsoft para clientes bancarios. Desarrollo de portales web complejos, integración Azure y migración de arquitecturas legacy a Angular moderno."
    },
    "4": {
      "title": "Desarrollo Full-Stack & Arquitecturas de Software",
      "role": "Desarrollador Full-Stack",
      "desc": "Desarrollo full-stack con tecnologías .NET y Angular. Diseño de arquitecturas de software, APIs RESTful e interfaces para sectores financiero y asegurador."
    },
    "5": {
      "title": "Fundamentos de Software & Metodologías Ágiles",
      "role": "Desarrollador Junior",
      "desc": "Inicio de la carrera profesional. Primeras experiencias con .NET y Angular, formación en metodologías Ágiles y buenas prácticas de desarrollo de software."
    },
    "current": "Actual",
    "previous": "Anterior"
  },
  "skills": {
    "tag": "skills",
    "title": "Soft Skills",
    "subtitle": "Competencias transversales que marcan la diferencia en equipos enterprise",
    "leadership": "Liderazgo Técnico",
    "leadership_desc": "Guío equipos de desarrollo hacia arquitecturas escalables y buenas prácticas compartidas.",
    "mentoring": "Mentoría & Formación",
    "mentoring_desc": "Apoyo activo a juniors, revisiones de código constructivas y transferencia de conocimiento.",
    "problem": "Resolución de Problemas",
    "problem_desc": "Análisis rápido de problemas complejos, depuración metódica y soluciones pragmáticas.",
    "communication": "Comunicación",
    "communication_desc": "Interacción eficaz con partes interesadas técnicas y no técnicas, documentación clara."
  },
  "faq": {
    "tag": "faq",
    "title": "FAQ",
    "subtitle": "Preguntas frecuentes",
    "q1": "¿En qué trabajas principalmente?",
    "a1": "Trabajo en desarrollo web enterprise, interfaces Angular, APIs REST, visualización de datos y aplicaciones 3D web con Cesium.js y WebGL.",
    "q2": "¿También trabajas en backend?",
    "a2": "Sí, también tengo experiencia con .NET, Django, Python, NestJS e integración de servicios API REST y GraphQL.",
    "q4": "¿Cómo puedo contactarte?",
    "a4": "Puedes enviarme un correo electrónico, llamarme o contactarme en LinkedIn usando los datos de la sección de contacto indicada arriba."
  },
  "contact": {
    "tag": "contact",
    "title": "Contacto",
    "subtitle": "Preguntas, comentarios o simplemente un saludo",
    "card": {
      "email": {
        "title": "Email",
        "desc": "gentsallaku@gmail.com"
      },
      "phone": {
        "title": "Teléfono",
        "desc": "+39 389 235 2291"
      },
      "pec": {
        "title": "PEC",
        "desc": "gent.sallaku@pec.it"
      },
      "linkedin": {
        "title": "LinkedIn",
        "desc": "/in/gent-sallaku"
      },
      "github": {
        "title": "GitHub",
        "desc": "/gentsallaku"
      }
    },
    "form": {
      "title": "Enviar un mensaje",
      "name": "Nombre completo",
      "name_ph": "Juan García",
      "name_err": "El nombre es obligatorio",
      "email": "Email",
      "email_ph": "juan@ejemplo.com",
      "email_err": "Se requiere un email válido",
      "subject": "Asunto",
      "subject_ph": "Asunto del mensaje",
      "subject_err": "El asunto es obligatorio",
      "message": "Mensaje",
      "message_ph": "Hola, me gustaría hablar sobre…",
      "message_err": "El mensaje debe tener al menos 10 caracteres",
      "send": "Enviar mensaje",
      "sending": "Enviando…",
      "sent": "¡Mensaje enviado!",
      "name_placeholder": "Escribe tu nombre",
      "email_placeholder": "Escribe tu email para que pueda contactarte",
      "submit": "Enviar mensaje",
      "note": "El mensaje se envía directamente desde el sitio web, sin abrir aplicaciones externas.",
      "privacy_checkbox": "He leído y acepto la política de privacidad para el tratamiento de mis datos.",
      "privacy_link_text": "Política de Privacidad",
      "privacy_err": "Debes aceptar la política de privacidad para enviar el mensaje",
      "disabled_notice": "El formulario de contacto está desactivado temporalmente. Puedes escribirme por LinkedIn o por email."
    },
    "info": {
      "title": "Conectemos",
      "desc": "Escríbeme si tienes preguntas sobre los proyectos, el blog o las herramientas del sitio."
    },
    "form_name": "Tu nombre",
    "form_email": "Tu email",
    "form_message": "Tu mensaje",
    "form_send": "Enviar mensaje",
    "form_sent": "¡Mensaje enviado! Te responderé pronto.",
    "form_error": "No se puede enviar el mensaje ahora. Inténtalo de nuevo pronto.",
    "form_invalid": "Comprueba el nombre, email y mensaje. El mensaje debe tener al menos 10 caracteres.",
    "popup": {
      "title": "Mensaje enviado",
      "body": "La solicitud fue enviada correctamente al servidor. Si los correos aún no llegan, el siguiente paso es revisar los registros de correo del backend."
    },
    "form_name_req": "El nombre es obligatorio",
    "form_email_req": "Email no válido",
    "form_msg_req": "El mensaje es obligatorio (mín. 10 caracteres)"
  },
  "consent": {
    "title": "Preferencias de cookies",
    "desc": "Usamos cookies para la funcionalidad necesaria del sitio y análisis y marketing opcionales. Gestiona tus preferencias.",
    "accept_all": "Aceptar todo",
    "reject_all": "Rechazar todo",
    "manage_preferences": "Gestionar preferencias",
    "necessary": "Necesarias",
    "analytics": "Analytics",
    "marketing": "Marketing",
    "preferences": "Preferencias",
    "save": "Guardar preferencias",
    "settings_title": "Configuración de cookies",
    "settings_desc": "Activa o desactiva categorías. Las cookies necesarias siempre están activas.",
    "consent_saved": "Preferencias guardadas",
    "default_denied_note": "Predeterminado: solo cookies funcionales (se requiere consentimiento para analytics y marketing).",
    "necessary_desc": "Imprescindibles para el funcionamiento del sitio: seguridad, inicio de sesión y memorización de estas opciones.",
    "analytics_desc": "Nos ayudan a entender cómo se usa el sitio mediante estadísticas agregadas (Google Analytics).",
    "marketing_desc": "Sirven para medir las campañas publicitarias y mostrar anuncios relevantes (Google Ads).",
    "preferences_desc": "Recuerdan tus preferencias, como el idioma y la apariencia, para personalizar tu experiencia.",
    "always_active": "Siempre activas"
  },
  "skip": {
    "link": "Ir al contenido principal"
  },
  "footer": {
    "designed": "Diseñado & Desarrollado por",
    "rights": "Todos los derechos reservados.",
    "privacy_link": "Política de Privacidad",
    "cookie_link": "Política de Cookies",
    "manage_cookies": "Gestionar consentimiento de cookies",
    "legal": "Legal",
    "navigation": "Navegación del pie de página",
    "guide": "Guía"
  },
  "auth": {
    "login_title": "Acceder al Dashboard",
    "login_subtitle": "Accede a tu portfolio",
    "email": "Email",
    "password": "Contraseña",
    "login_btn": "Acceder",
    "logging_in": "Accediendo…",
    "no_account": "¿No tienes cuenta?",
    "create_one": "Crear una",
    "register_title": "Crear Cuenta",
    "register_subtitle": "Regístrate en el dashboard del portfolio",
    "name": "Nombre",
    "confirm_password": "Confirmar contraseña",
    "register_btn": "Registrarse",
    "registering": "Registrando…",
    "register_verify_sent": "¡Cuenta creada! Revisa tu email: te hemos enviado un código para confirmarlo.",
    "have_account": "¿Ya tienes cuenta?",
    "sign_in": "Acceder",
    "email_required": "Email válido requerido",
    "password_required": "La contraseña debe tener al menos 6 caracteres",
    "name_required": "El nombre es obligatorio",
    "passwords_mismatch": "Las contraseñas no coinciden",
    "login_with_otp": "Acceder con OTP (teléfono o email)",
    "login_with_email": "Acceder con email",
    "otp_subtitle": "Inicio de sesión sin contraseña por SMS o email",
    "phone": "Número de teléfono",
    "phone_required": "Introduce un teléfono válido en formato E.164, p.ej. +34XXXXXXXXX",
    "phone_or_email": "Teléfono o dirección de email",
    "phone_or_email_required": "Introduce un teléfono válido (p.ej. +34XXXXXXXXX) o una dirección de email",
    "send_otp": "Enviar código",
    "sending": "Enviando…",
    "otp_sent_to": "Código enviado por SMS a",
    "otp_sent_to_email": "Código enviado por email a",
    "otp_code": "Código de verificación",
    "otp_required": "Introduce el código de 6 dígitos",
    "otp_expires_in": "Expira en",
    "otp_expired": "Código expirado. Solicita uno nuevo.",
    "verify_otp": "Verificar",
    "verifying": "Verificando…",
    "resend_code": "Reenviar código",
    "resend_in": "Reenviar en",
    "change_identifier": "Cambiar teléfono / email",
    "change_phone": "Cambiar número",
    "otp_resent": "¡Nuevo código enviado!",
    "otp_send_failed": "Error al enviar el código. Inténtalo de nuevo.",
    "otp_invalid": "Código inválido o expirado.",
    "login_error": "Email o contraseña inválidos.",
    "login_with_email_password": "Acceder con email y contraseña",
    "or": "o",
    "show_password": "Mostrar contraseña",
    "hide_password": "Ocultar contraseña",
    "login_chip_admin": "Acceso Admin",
    "login_title_generic": "Iniciar sesión",
    "tab_password": "Contraseña",
    "tab_code": "Sin contraseña",
    "code_hint": "Te enviamos un código de 6 dígitos por email. Si es tu primer acceso, la cuenta se crea automáticamente.",
    "code_hint_sms": "Te enviamos un código de 6 dígitos por SMS. Si es tu primer acceso, la cuenta se crea automáticamente.",
    "code_channel_label": "Recibir el código por",
    "channel_email": "Email",
    "channel_sms": "Móvil",
    "mobile_number": "Número de móvil",
    "mobile_placeholder": "+34 612 345 678",
    "mobile_invalid": "Introduce un número de móvil válido, p.ej. +34 612 345 678",
    "mobile_hint": "Los números sin prefijo internacional se consideran italianos (+39).",
    "err_sms_unavailable": "El envío por SMS no está disponible en este momento. Usa el email.",
    "forgot_password": "¿Olvidaste tu contraseña?",
    "forgot_hint": "No pasa nada: recibe un código por email y entra sin contraseña.",
    "remember_email": "Recordar mi email",
    "caps_lock_on": "Bloq Mayús activado",
    "email_placeholder": "nombre@ejemplo.com",
    "identifier_placeholder": "nombre@ejemplo.com o +34…",
    "change": "Cambiar",
    "code_digits_label": "Código de 6 dígitos",
    "verify_and_login": "Verificar y entrar",
    "success_title": "Sesión iniciada",
    "success_hello": "¡Hola, {{name}}!",
    "success_redirect": "Un momento…",
    "verify_email_action": "Enviar código de confirmación",
    "err_email_not_verified": "Primero debes confirmar tu email.",
    "err_network": "Sin conexión. Revisa tu red e inténtalo de nuevo.",
    "err_too_many": "Demasiados intentos. Espera un minuto e inténtalo de nuevo.",
    "err_otp_wrong": "Código incorrecto. Intentos restantes: {{count}}.",
    "err_otp_locked": "Demasiados intentos fallidos. Solicita un código nuevo.",
    "err_server": "El servidor no responde. Inténtalo de nuevo en breve.",
    "registration_closed": "Los registros están cerrados temporalmente."
  },
  "admin": {
    "dashboard": "Dashboard",
    "welcome": "Bienvenido",
    "projects": "Proyectos",
    "experiences": "Experiencias",
    "blog_posts": "Artículos del Blog",
    "published": "Publicados",
    "drafts": "Borradores",
    "contacts": "Contactos",
    "users": "Usuarios",
    "visits": "Visitas",
    "visitors": "Visitantes",
    "manage_projects": "Gestionar Proyectos",
    "manage_experiences": "Gestionar Experiencias",
    "manage_blog": "Gestionar Blog",
    "manage_notes": "Moderar Notas",
    "edit_about": "Editar About",
    "logout": "Cerrar sesión",
    "loading": "Cargando…",
    "recent_activity": "Actividad reciente",
    "no_activity": "Sin actividad reciente",
    "recent_contacts_chart": "Gráfico de contactos recientes",
    "visits_chart": "Gráfico de visitas reales",
    "last_7_days": "Últimos 7 días",
    "content_mix": "Contenido publicado vs borrador",
    "content_status": "Estado editorial del contenido",
    "public_traffic": "Tráfico público registrado por el backend",
    "quick_actions": "Acciones rápidas",
    "mark_read": "Marcar como leído",
    "mark_unread": "Marcar como no leído",
    "status_read": "Leído",
    "status_unread": "No leído",
    "open_email": "Abrir email",
    "reply": "Responder",
    "reply_placeholder": "Escribe tu respuesta a este mensaje...",
    "reply_send": "Enviar respuesta",
    "reply_sent": "¡Respuesta enviada con éxito!",
    "reply_error": "Error al enviar la respuesta. Comprueba la configuración del correo.",
    "message_deleted": "Mensaje eliminado.",
    "messages_deleted": "Mensajes seleccionados eliminados.",
    "marked_read": "Mensaje marcado como leído.",
    "marked_unread": "Mensaje marcado como no leído.",
    "new_badge": "NUEVO",
    "select_all": "Seleccionar todo",
    "selected": "seleccionados",
    "delete_selected": "Eliminar seleccionados",
    "confirm_delete_title": "Confirmar eliminación",
    "confirm_delete_message": "¿Quieres eliminar permanentemente este mensaje? Esta acción no se puede deshacer.",
    "confirm_delete_bulk": "¿Quieres eliminar permanentemente {{count}} mensaje(s) seleccionado(s)? Esta acción no se puede deshacer.",
    "visitor_analytics": "Análisis de Visitantes",
    "visitor_overview": "Resumen de Visitantes",
    "visitor_overview_desc": "Hoy, total y visitantes únicos",
    "today_visitors": "Hoy",
    "traffic_sources": "Fuentes de Tráfico",
    "traffic_sources_desc": "Cómo encuentran tu sitio los visitantes",
    "device_breakdown": "Dispositivos",
    "device_breakdown_desc": "Distribución Desktop, Móvil, Tablet",
    "top_locations": "Ciudades y Regiones",
    "top_locations_desc": "Ubicaciones de visitantes resueltas desde IP pública y cabeceras proxy",
    "geo_ip_note": "Derivado de IP pública y cabeceras proxy",
    "top_countries": "Principales Países",
    "top_countries_desc": "Visitantes por país (geolocalización IP)",
    "browser_breakdown": "Navegadores",
    "browser_breakdown_desc": "Distribución por navegador",
    "os_breakdown": "Sistema Operativo",
    "os_breakdown_desc": "Distribución por sistema operativo",
    "monthly_vs_total_views": "Vistas mensuales vs totales",
    "monthly_views_desc": "Mes actual comparado con el total acumulado",
    "total_views_all_time": "Total (todo el tiempo)",
    "monthly_views_this_month": "Este mes",
    "last_reset": "Último reinicio",
    "reset_monthly_stats": "Reiniciar estadísticas mensuales",
    "confirm_reset_monthly_stats": "¿Reiniciar las vistas, ubicaciones y dispositivos mensuales? Esta acción no se puede deshacer.",
    "monthly_stats_reset": "Estadísticas mensuales reiniciadas.",
    "monthly_devices": "Dispositivos (este mes)",
    "monthly_devices_desc": "Distribución de dispositivos del mes actual",
    "total_devices": "Dispositivos (total)",
    "total_devices_desc": "Distribución acumulada de dispositivos",
    "monthly_locations": "Ubicaciones (este mes)",
    "monthly_locations_desc": "Distribución por país del mes actual",
    "total_locations": "Ubicaciones (total)",
    "total_locations_desc": "Distribución acumulada por país",
    "kpi_section": "KPIs de Rendimiento",
    "conversion_rate": "Tasa de Conversión",
    "conversion_rate_desc": "Contactos generados por vista total de página",
    "conversion_rate_label": "Conversión",
    "growth_velocity": "Crecimiento Mensual",
    "growth_velocity_desc": "Mes actual vs mes anterior",
    "growth_vs_prev_month": "vs mes ant.",
    "growth_no_history": "Sin historial aún",
    "system_health": "Estado del Sistema",
    "system_health_desc": "Estado y versión del backend",
    "system_status": "Estado",
    "system_version": "Versión",
    "system_env": "Entorno",
    "monthly_trend": "Tendencia de Vistas Mensuales",
    "monthly_trend_desc": "Vistas históricas por mes",
    "chatbot_stats": "Chatbot",
    "chatbot_stats_desc": "Conversaciones con el asistente AI",
    "chatbot_total_sessions": "Sesiones totales",
    "chatbot_total_messages": "Mensajes totales",
    "consent": {
      "title": "Resumen de Consentimiento",
      "desc": "Resumen del consentimiento de cookies recogido de los visitantes",
      "total": "Consentimientos totales"
    },
    "chatbot_today": "Hoy",
    "chatbot_this_month": "Este mes",
    "chatbot_fallback_today": "Fallback hoy",
    "chatbot_fallback_desc": "Respuestas de reserva usadas hoy porque la IA no respondió correctamente",
    "top_pages": "Páginas Principales",
    "top_pages_desc": "Páginas más visitadas por vistas totales",
    "seo_title": "SEO – Search Console",
    "seo_desc": "Últimos 28 días · Google Search Console",
    "seo_clicks": "Clics",
    "seo_impressions": "Impresiones",
    "seo_avg_position": "Posición media",
    "seo_avg_ctr": "CTR medio",
    "seo_not_configured": "Search Console no configurada. Añade GSC_CLIENT_EMAIL, GSC_PRIVATE_KEY y GSC_SITE_URL al .env del backend.",
    "utility_section": "Utilidades de admin",
    "utility_deployment": "Estado del despliegue",
    "utility_deployment_desc": "Información rápida sobre el backend y el lanzamiento actual",
    "utility_security": "Estado de seguridad",
    "utility_security_desc": "Comprobación rápida de mensajes, auditoría y sesión activa",
    "utility_content": "Estado del contenido",
    "utility_content_desc": "Resumen rápido de blog, páginas y tendencia",
    "utility_operations": "Operaciones rápidas",
    "utility_operations_desc": "Acciones de mantenimiento más comunes",
    "utility_ops_live": "Salud en vivo",
    "utility_ops_live_desc": "Indicadores rápidos para backend, correo y cron",
    "utility_uptime": "Uptime",
    "utility_memory": "Memoria RSS",
    "utility_node": "Node",
    "utility_mail": "Proveedor de correo",
    "utility_running": "Activo",
    "utility_stopped": "Detenido",
    "utility_not_scheduled": "No programado",
    "utility_started_at": "Iniciado el",
    "utility_admin_user": "Admin activo",
    "utility_admin_email": "Email del admin",
    "unread_contacts": "Contactos no leídos",
    "audit_log_section": "Actividad Admin",
    "audit_log": "Registro de Actividad",
    "audit_log_desc": "Últimas 10 operaciones de escritura admin",
    "audit_log_empty": "Ninguna acción admin registrada aún.",
    "chat_sessions_section": "Chat en Vivo",
    "chat_sessions_today": "Sesiones de Chat de Hoy",
    "chat_sessions_today_desc": "Conversaciones iniciadas hoy (TTL 24 h)",
    "chat_sessions_load": "Cargar sesiones",
    "chat_sessions_empty": "No hay sesiones de chat hoy, o aún no se han cargado.",
    "chat_messages_count": "mensajes",
    "top_posts_title": "Artículos más vistos",
    "top_posts_desc_card": "Posts ordenados por número total de vistas",
    "top_posts_empty": "Aún no se han registrado vistas.",
    "logout_desc": "Cerrar esta sesión admin y volver a la página de acceso.",
    "export_csv": "Exportar CSV",
    "no_chart_data": "Sin datos para este período.",
    "refresh_data": "Actualizar",
    "last_updated": "Actualizado",
    "tool_conversion": "Herramientas IA → Leads",
    "tool_conversion_desc": "Visitantes únicos por herramienta en los últimos 30 días y cuántos se convirtieron después en un contacto o chat en vivo",
    "tool_conversion_col_tool": "Herramienta",
    "tool_conversion_col_visitors": "Visitantes",
    "tool_conversion_col_leads": "Se convirtieron",
    "tool_conversion_col_rate": "Tasa",
    "overview_core": "Estadísticas principales",
    "overview_load_error": "No se pudo cargar el panel.",
    "overview_refresh_error": "La actualización falló: estás viendo los datos anteriores.",
    "overview_partial_error": "Algunos paneles no se pudieron actualizar:",
    "retry": "Reintentar"
  },
  "session": {
    "warning_title": "La sesión está a punto de expirar",
    "warning_body": "Por tu seguridad, tu sesión admin terminará pronto a menos que confirmes que sigues activo.",
    "seconds_remaining": "segundos restantes",
    "stay_logged_in": "Seguir conectado",
    "logout_now": "Cerrar sesión ahora",
    "eyebrow": "Tiempo de seguridad agotado",
    "warning_body_user": "Por seguridad, tu sesión terminará en breve si no confirmas que sigues activo."
  },
  "common": {
    "loading": "Cargando…",
    "error": "Error al cargar los datos.",
    "save": "Guardar",
    "cancel": "Cancelar",
    "delete": "Eliminar",
    "edit": "Editar",
    "create": "Crear",
    "back": "Atrás",
    "close": "Cerrar",
    "confirm": "Confirmar",
    "yes": "Sí",
    "no": "No",
    "unsaved_confirm": "Tienes cambios sin guardar. ¿Salir y perderlos?"
  },
  "services": {
    "tag": "services",
    "title": "Mis Servicios",
    "subtitle": "Lo que construyo y entrego — soluciones enterprise del concepto a la producción",
    "pdf": {
      "title": "Herramientas PDF e IA",
      "desc": "Suite gratuita de herramientas online: conversión de archivos, editor y visor de PDF, OCR, escáner de documentos, traducción de PDF con IA, generador de presentaciones y resúmenes automáticos.",
      "cta": "Probar gratis"
    },
    "frontend": {
      "title": "Desarrollo Front-End",
      "desc": "Aplicaciones Angular escalables con TypeScript, RxJS y arquitectura de buenas prácticas. Desde proyectos greenfield hasta migraciones legacy. El servicio ideal si buscas un Angular Developer o TypeScript Developer para tu equipo.",
      "cta": "Saber más"
    },
    "web3d": {
      "title": "Aplicaciones 3D Web",
      "desc": "Experiencias geoespaciales y 3D inmersivas con Cesium.js, WebGL y Three.js para los sectores aeroespacial, defensa y cartografía.",
      "cta": "Saber más"
    },
    "dataviz": {
      "title": "Data Visualization",
      "desc": "Dashboards interactivos y gráficos con Chart.js, Looker Embedded y D3 — transformando datos complejos en información accionable.",
      "cta": "Saber más"
    },
    "uiux": {
      "title": "Diseño UI/UX",
      "desc": "Interfaces pixel-perfect, accesibles y responsive alineadas con sistemas de diseño modernos y pruebas de usabilidad con usuarios reales.",
      "cta": "Saber más"
    },
    "perf": {
      "title": "Optimización de Rendimiento",
      "desc": "Lazy loading estratégico, detección de cambios optimizada, ajuste de Core Web Vitals y revisiones de arquitectura para sistemas de misión crítica.",
      "cta": "Saber más"
    },
    "api": {
      "title": "Integración de API",
      "desc": "Integraciones REST y GraphQL fluidas con NestJS, .NET y servicios de terceros, respaldadas por una sólida gestión de errores.",
      "cta": "Saber más"
    }
  },
  "blog": {
    "readMore": "Leer más",
    "loadMore": "Cargar más",
    "tags_more": "Mostrar todas las etiquetas (+{{count}})",
    "tags_less": "Mostrar menos etiquetas",
    "views_singular": "{{count}} visita",
    "views_plural": "{{count}} visitas",
    "empty": {
      "title": "No se encontraron artículos",
      "message": "Prueba con una palabra clave diferente o explora todos los artículos.",
      "reset": "Borrar filtros"
    },
    "share": {
      "title": "Comparte este artículo",
      "preview_alt": "Vista previa del artículo tal como aparece al compartirlo",
      "facebook": "Compartir en Facebook",
      "linkedin": "Compartir en LinkedIn",
      "twitter": "Compartir en X",
      "whatsapp": "Compartir en WhatsApp",
      "telegram": "Compartir en Telegram",
      "instagram": "Compartir en Instagram",
      "copyLink": "Copiar enlace",
      "linkCopied": "¡Enlace copiado!"
    },
    "reading_time": "{{count}} min de lectura",
    "toc_title": "En este artículo",
    "related_title": "Sigue leyendo",
    "related_subtitle": "Más artículos sobre los mismos temas",
    "copy_code": "Copiar",
    "copied": "¡Copiado!",
    "copy_failed": "No se pudo copiar",
    "copy_section_link": "Copiar enlace a la sección",
    "link_copied": "Enlace a la sección copiado",
    "eyebrow": "Artículos y guías",
    "lead": "Guías prácticas y análisis en profundidad sobre Angular, TypeScript, Node.js, rendimiento, SEO y desarrollo web moderno.",
    "stats": "{{posts}} artículos · {{topics}} temas",
    "search_placeholder": "Buscar artículos…",
    "clear_search": "Borrar búsqueda",
    "topics": "Temas",
    "all_topics": "Todos",
    "results": "Resultados: {{count}}",
    "latest": "Último artículo",
    "all_posts": "Todos los artículos",
    "not_found": "Artículo no encontrado",
    "back_to_blog": "Volver al blog"
  },
  "notes": {
    "title": "Notas de los lectores",
    "count_singular": "{{count}} nota",
    "count_plural": "{{count}} notas",
    "form": {
      "title": "Escribe una nota",
      "description": "Comparte tu opinión, una sugerencia o un cumplido",
      "name": "Nombre",
      "name_ph": "Tu nombre",
      "email": "Email",
      "email_ph": "Tu email",
      "content": "Nota",
      "content_ph": "Escribe tu mensaje...",
      "optional": "(opcional)",
      "submit": "Publicar nota",
      "submitting": "Enviando...",
      "success": "¡Tu nota se ha publicado correctamente!",
      "error_generic": "Se ha producido un error. Inténtalo de nuevo más tarde."
    },
    "errors": {
      "required": "Este campo es obligatorio",
      "minlength": "Mínimo {{count}} caracteres",
      "maxlength": "Máximo {{count}} caracteres",
      "email": "Email no válido",
      "invalid": "Campo no válido"
    },
    "list": {
      "title": "Últimas notas",
      "loading": "Cargando notas...",
      "empty": "Aún no hay notas. ¡Sé el primero en comentar!",
      "anonymous": "Anónimo"
    }
  },
  "notes_manage": {
    "title": "Moderar notas de los lectores",
    "status_pending": "Pendientes",
    "status_approved": "Aprobadas",
    "status_spam": "Spam",
    "status_all": "Todas",
    "empty": "No hay notas en esta categoría.",
    "load_error": "No se pudieron cargar las notas.",
    "action_error": "La acción ha fallado. Inténtalo de nuevo.",
    "approve": "Aprobar",
    "reject": "Rechazar",
    "mark_spam": "Marcar como spam",
    "approved": "Nota aprobada.",
    "rejected": "Nota rechazada.",
    "marked_spam": "Nota marcada como spam.",
    "deleted": "Nota eliminada.",
    "confirm_delete": "¿Eliminar definitivamente esta nota?",
    "spam_score": "Puntuación de spam",
    "spam_score_tooltip": "Puntuación automática de detección de spam (0-100, cuanto más alta más sospechosa)",
    "prev_page": "Anterior",
    "next_page": "Siguiente"
  },
  "testimonials": {
    "tag": "Testimonios",
    "title": "Lo que dicen de mí",
    "subtitle": "Experiencias reales de clientes y colaboradores sobre trabajar juntos: proyectos, resultados e historias contadas por ellos mismos.",
    "rating": "Valoración",
    "verified_badge": "Verificada",
    "verified_tooltip": "Identidad del autor verificada por el administrador",
    "view_linkedin": "Perfil de LinkedIn de {{name}}",
    "form": {
      "title": "Deja un testimonio",
      "author_name": "Nombre",
      "author_name_ph": "Tu nombre completo",
      "role": "Cargo / Empresa",
      "role_ph": "ej. CTO @ Acme (opcional)",
      "company_url": "Enlace de la empresa o proyecto",
      "company_url_ph": "ej. acme.com (opcional)",
      "email": "Email",
      "email_ph": "Tu email (opcional, nunca se publica)",
      "linkedin": "Perfil de LinkedIn (opcional)",
      "linkedin_ph": "linkedin.com/in/tu-nombre",
      "linkedin_hint": "Solo sirve para comprobar que eres el autor. El enlace aparece junto al testimonio únicamente si el administrador lo verifica.",
      "rating": "Valoración",
      "content": "Tu testimonio",
      "content_ph": "Cuéntanos tu experiencia trabajando conmigo...",
      "submit": "Enviar testimonio",
      "submitting": "Enviando...",
      "success": "¡Gracias! Tu testimonio está en revisión y aparecerá pronto.",
      "error_generic": "Se produjo un error. Inténtalo de nuevo más tarde."
    },
    "errors": {
      "required": "Este campo es obligatorio",
      "minlength": "Mínimo {{count}} caracteres",
      "maxlength": "Máximo {{count}} caracteres",
      "email": "Email no válido",
      "linkedin": "Introduce el enlace a tu perfil personal (linkedin.com/in/…)",
      "rating_required": "Selecciona una valoración de 1 a 5 estrellas",
      "invalid": "Campo no válido"
    },
    "list": {
      "loading": "Cargando testimonios...",
      "empty": "Aún no hay testimonios publicados."
    },
    "wall": {
      "tag": "Testimonios",
      "title": "Lo que dicen de mí",
      "cta": "Deja tu testimonio"
    }
  },
  "testimonials_manage": {
    "title": "Moderar testimonios",
    "status_pending": "Pendientes",
    "status_approved": "Aprobados",
    "status_spam": "Spam",
    "status_all": "Todos",
    "empty": "No hay testimonios en esta categoría.",
    "load_error": "No se pudieron cargar los testimonios.",
    "action_error": "La acción falló. Inténtalo de nuevo.",
    "approve": "Aprobar",
    "reject": "Rechazar",
    "mark_spam": "Marcar como spam",
    "toggle_featured": "Mostrar/ocultar en la portada",
    "verify": "Verificar identidad",
    "unverify": "Quitar verificación",
    "verify_tooltip": "Confirma que has comprobado que el autor es quien dice ser: en el sitio aparecen la insignia y el enlace de LinkedIn",
    "approved": "Testimonio aprobado.",
    "rejected": "Testimonio rechazado.",
    "marked_spam": "Testimonio marcado como spam.",
    "featured_on": "Destacado",
    "featured_off": "Eliminado de la portada.",
    "verified_on": "Testimonio verificado",
    "verified_off": "Verificación eliminada",
    "verified_badge": "Verificada",
    "linkedin_open": "Abrir el perfil de LinkedIn indicado por el autor",
    "deleted": "Testimonio eliminado.",
    "confirm_delete": "¿Eliminar este testimonio permanentemente?",
    "spam_score": "Puntuación de spam",
    "spam_score_tooltip": "Puntuación automática de detección de spam (0-100, más alto = más sospechoso)",
    "prev_page": "Anterior",
    "next_page": "Siguiente",
    "edit_content": "Editar texto",
    "content_updated": "Texto actualizado."
  },
  "newsletter": {
    "title": "No te pierdas los nuevos artículos",
    "subtitle": "Un email cuando publico algo nuevo en el blog. Sin spam.",
    "email_placeholder": "Tu email",
    "subscribe_btn": "Suscribirse",
    "subscribe_success": "Revisa tu email: te hemos enviado un enlace para confirmar la suscripción.",
    "subscribe_error": "La suscripción falló. Inténtalo de nuevo.",
    "confirm_loading": "Confirmando tu suscripción…",
    "confirm_success_title": "¡Suscripción confirmada!",
    "confirm_success_message": "Ahora recibirás un email cada vez que publique un nuevo artículo.",
    "confirm_error_title": "Enlace no válido",
    "confirm_error_message": "Este enlace de confirmación no es válido o ha caducado. Intenta suscribirte de nuevo.",
    "unsubscribe_loading": "Cancelando la suscripción…",
    "unsubscribe_success_title": "Suscripción cancelada",
    "unsubscribe_success_message": "Ya no recibirás emails de la newsletter. Puedes suscribirte de nuevo cuando quieras.",
    "unsubscribe_error_title": "Enlace no válido",
    "unsubscribe_error_message": "Este enlace no es válido o la suscripción ya no existe.",
    "back_to_blog": "Volver al blog"
  },
  "newsletter_manage": {
    "title": "Newsletter",
    "export_csv": "Exportar CSV",
    "status_all": "Todos",
    "status_pending": "Pendientes",
    "status_confirmed": "Confirmados",
    "status_unsubscribed": "Dados de baja",
    "empty": "No hay suscriptores en esta categoría.",
    "load_error": "No se pudieron cargar los suscriptores.",
    "confirm_delete": "¿Eliminar definitivamente {{email}}?",
    "deleted": "Suscriptor eliminado.",
    "delete_error": "No se pudo eliminar. Inténtalo de nuevo.",
    "export_error": "La exportación falló. Inténtalo de nuevo.",
    "prev_page": "Anterior",
    "next_page": "Siguiente"
  },
  "chatbot_ui": {
    "title": "Asistente de Gent",
    "online": "En línea",
    "typing": "Escribiendo…",
    "placeholder": "Escribe un mensaje…",
    "welcome_title": "¡Hola! 👋",
    "welcome_text": "Soy el asistente AI en el portfolio de <strong>Gent Sallaku</strong>. ¡Pregúntame sobre sus proyectos, habilidades o las herramientas del sitio! Si quieres hablar con él en directo, escríbeme un par de mensajes aquí: le llegará la solicitud (todavía no sabe quién eres, así que preséntate).",
    "info_banner": "Gent lee los mensajes enviados a través del chatbot. Si deseas una respuesta, utiliza la sección 'Enviar Email'.",
    "info_cta": "Ir a la sección de Email →",
    "close": "Cerrar chat",
    "open": "Abrir asistente AI",
    "clear": "Borrar conversación",
    "send": "Enviar mensaje",
    "back": "Volver al chat",
    "transcript_title": "Recibir transcripción",
    "transcript_desc": "Introduce tu email y te enviaremos la conversación completa.",
    "transcript_email_label": "Tu dirección de email",
    "transcript_send": "Enviar transcripción",
    "transcript_sending": "Enviando…",
    "transcript_success": "¡Transcripción enviada con éxito!",
    "transcript_error": "Error al enviar. Por favor, inténtalo más tarde.",
    "email_error": "Por favor, introduce una dirección de email válida.",
    "server_error": "No pude contactar el servidor ahora mismo. Por favor, inténtalo de nuevo en un momento.",
    "chip_who": "👋 ¿Quién es Gent?",
    "chip_skills": "🛠 ¿Cuáles son sus habilidades?",
    "chip_projects": "📁 Muéstrame sus proyectos",
    "chip_contact": "📬 ¿Cómo puedo contactarle?",
    "live_offer_cta": "Habla con Gent ahora",
    "unread_badge": "{{count}} mensajes no leídos",
    "new_messages": "Nuevos mensajes",
    "instant": "Responde al instante",
    "notice_short": "Para una respuesta personal, escribe a Gent.",
    "notice_cta": "Email →",
    "notice_dismiss": "Ocultar aviso",
    "welcome_heading": "¡Hola! ¿Qué quieres saber de Gent?",
    "card_who_title": "¿Quién es Gent?",
    "card_who_desc": "Trayectoria y experiencia",
    "card_who_ask": "¿Quién es Gent?",
    "card_skills_title": "Habilidades",
    "card_skills_desc": "Angular, APIs, Data Viz",
    "card_skills_ask": "¿Cuáles son sus habilidades?",
    "card_projects_title": "Proyectos",
    "card_projects_desc": "Lo que ha construido",
    "card_projects_ask": "Muéstrame sus proyectos",
    "card_contact_title": "Contacto",
    "card_contact_desc": "Email o chat en directo",
    "card_contact_ask": "¿Cómo puedo contactarlo?",
    "link_blog": "Artículo",
    "link_project": "Proyecto",
    "copy": "Copiar mensaje",
    "copied": "Copiado",
    "live_offer_desc": "Chat en directo: recibe una notificación",
    "input_hint": "Intro para enviar · Mayús+Intro para una nueva línea",
    "teaser_title": "¿Preguntas sobre Gent?",
    "teaser_text": "Pregunta sin problema: proyectos, habilidades, herramientas.",
    "teaser_close": "Cerrar invitación"
  },
  "live_handoff": {
    "prompt_title": "¿Quieres hablar directamente con Gent?",
    "accept": "Sí, contactarlo",
    "decline": "No, seguir con el asistente",
    "dismiss": "Cerrar",
    "pill_label": "Hablar con Gent",
    "waiting": "Esperando a Gent…",
    "agent_joining": "Gent se está uniendo…",
    "live_subtitle": "Estás hablando con Gent",
    "expired_notice": "Gent no está disponible en este momento, pero ha recibido tu solicitud. Mientras tanto, puedes seguir chateando con el asistente.",
    "admin_title": "Chat en vivo con el visitante",
    "admin_connecting": "Conectando…",
    "admin_joining": "Entrando en el chat…",
    "admin_live": "Chat en vivo activo",
    "admin_expired": "Esta solicitud ha caducado.",
    "admin_closed": "Esta sesión ha sido cerrada.",
    "admin_visitor_typing": "El visitante está escribiendo…",
    "admin_role_visitor": "Visitante",
    "admin_role_ai": "IA",
    "admin_error": "No se pudo conectar. Verifica que hayas iniciado sesión como administrador.",
    "admin_send_placeholder": "Escribe como Gent…",
    "admin_history_loading": "Cargando conversación…",
    "admin_back": "Volver al panel",
    "card_title": "Chat en vivo",
    "card_badge_active": "en curso",
    "card_badge_waiting": "en espera",
    "card_waiting": "Esperando respuesta",
    "card_open": "Entrar",
    "card_empty": "No hay solicitudes de chat en vivo en este momento.",
    "list_subtitle": "Solicitudes abiertas y chats de las últimas 24 horas: se eliminan pasado un día.",
    "list_refresh": "Actualizar",
    "list_load_error": "No se pudo actualizar la lista. Inténtalo de nuevo en breve.",
    "list_open": "Abiertas",
    "list_past": "Cerradas o caducadas",
    "list_past_empty": "No hay chats cerrados en las últimas 24 horas.",
    "list_status_expired": "Caducada sin respuesta",
    "list_status_closed": "Cerrada",
    "list_reopen": "Reabrir",
    "list_responded_in": "respondida en {{minutes}} min",
    "list_no_message": "Sin mensaje",
    "exit_ask_resolved_title": "¿Has resuelto tu problema?",
    "exit_ask_resolved_yes": "Sí",
    "exit_ask_resolved_no": "No, continuar",
    "exit_ask_close_title": "¿Quieres cerrar la sesión con Gent?",
    "exit_ask_close_yes": "Sí, cerrar",
    "exit_ask_close_no": "No, volver al chat",
    "exit_ask_leave_title": "¿Quieres cerrar el chat?",
    "closed_notice": "La conversación con Gent ha terminado. Puedes seguir chateando con el asistente.",
    "admin_close_chat": "Cerrar chat"
  },
  "ai_ppt": {
    "title": "Generador de Diapositivas",
    "badge": "Generador de Diapositivas IA",
    "hero_title_1": "Convierte Cualquier Idea en una",
    "hero_title_2": "Presentación Profesional",
    "hero_subtitle": "Ingresa un tema y nuestra IA construye al instante un deck completo — títulos, puntos, notas del orador y flujo lógico — listo para presentar.",
    "cta_primary": "Generar Diapositivas Gratis",
    "cta_demo": "Ver Demo →",
    "stat_max_slides": "Diap. Máx",
    "stat_style_themes": "Estilos",
    "stat_powered": "Con IA",
    "feature_ai_title": "Generado por IA",
    "feature_ai_desc": "Estructura completa de presentación creada desde un solo tema en segundos.",
    "feature_styles_title": "5 Temas de Estilo",
    "feature_styles_desc": "Estilos Business, Educación, Minimal, Moderno y Pitch Deck.",
    "feature_slides_title": "Hasta 20 Diapositivas",
    "feature_slides_desc": "Elige 5, 10, 15 o 20 diapositivas según tus necesidades.",
    "feature_export_title": "Listo para Exportar",
    "feature_export_desc": "Descarga tu deck como archivo de texto estructurado al instante.",
    "section_title": "Generador de Presentaciones IA",
    "section_subtitle": "Describe tu tema y configura tu deck a continuación",
    "label_topic": "Tema de la Presentación",
    "label_style": "Estilo de la Presentación",
    "label_slides_count": "Número de Diapositivas",
    "label_context": "Archivo de Contexto",
    "label_optional": "(opcional)",
    "context_hint": "Sube un PDF o TXT para dar a la IA contexto adicional de tu contenido",
    "drop_text": "Arrastra PDF/TXT o",
    "drop_browse": "examinar",
    "btn_sample": "💡 Ejemplo",
    "btn_generating": "Generando presentación…",
    "btn_generate": "Generar {{count}} Diapositivas",
    "loading_title": "La IA está construyendo tu presentación",
    "loading_sub": "Creando diapositivas, estructura y notas del orador…",
    "btn_carousel": "Carrusel",
    "btn_grid": "Cuadrícula",
    "btn_export": "Exportar",
    "btn_exporting": "Exportando…",
    "btn_new": "Nuevo",
    "btn_copy_slide": "Copiar Diapositiva",
    "btn_copied": "✓ Copiado",
    "btn_fullscreen": "Pantalla Completa",
    "btn_exit_fullscreen": "Salir",
    "notes_label": "Notas",
    "btn_generate_another": "↩ Generar Otra Presentación",
    "style_business_label": "Negocios",
    "style_business_desc": "Estilo corporativo profesional",
    "style_education_label": "Educación",
    "style_education_desc": "Enfoque académico y de aprendizaje",
    "style_minimal_label": "Minimal",
    "style_minimal_desc": "Diseño limpio y simple",
    "style_modern_label": "Moderno",
    "style_modern_desc": "Diseño contemporáneo y vibrante",
    "style_pitch_deck_label": "Pitch Deck",
    "style_pitch_deck_desc": "Deck listo para inversores startup",
    "workspace_send": "Enviar a Workspace",
    "workspace_sent": "Enviado ✓",
    "err_topic_short": "Introduce un tema de al menos 3 caracteres.",
    "err_file_type": "Solo se admiten archivos PDF, TXT o DOCX como contexto.",
    "err_file_too_large": "Archivo demasiado grande (máx {{max}}MB): {{name}}",
    "err_generic": "Se ha producido un error. Inténtalo de nuevo.",
    "err_truncated": "El contenido de algunas diapositivas se recortó por falta de espacio al exportar el PDF. Prueba a acortar el texto y regenerar.",
    "remove_context_file": "Eliminar archivo",
    "prev_slide": "Diapositiva anterior",
    "next_slide": "Diapositiva siguiente",
    "seo_title": "Generador de Presentaciones con IA — Crea Diapositivas con IA",
    "seo_description": "Genera una presentación profesional completa sobre cualquier tema en segundos. Hasta 20 diapositivas con títulos, viñetas, notas del orador y 5 estilos. Gratis online."
  },
  "ai_formatter": {
    "title": "Formateador IA",
    "badge": "Impulsado por IA",
    "hero_title_1": "Formatea Texto Simple en",
    "hero_title_2": "Documentos Refinados",
    "hero_subtitle": "Transforma notas en bruto, actas de reuniones o contenido de IA en documentos estructurados y profesionales en segundos.",
    "cta_primary": "✨ Empezar a Formatear Gratis",
    "cta_demo": "Ver Demo →",
    "stat_faster": "Más Rápido",
    "stat_doc_types": "Tipos Doc.",
    "stat_powered": "Con IA",
    "feature_instant_title": "Formato Instantáneo",
    "feature_instant_desc": "Transforma notas en bruto o contenido de IA en documentos estructurados en segundos.",
    "feature_smart_title": "Estructura Inteligente",
    "feature_smart_desc": "La IA detecta inteligentemente encabezados, puntos y párrafos del texto sin formato.",
    "feature_multiple_title": "Múltiples Tipos de Documento",
    "feature_multiple_desc": "Formatea propuestas, informes, actas, currículums y artículos con estilo contextual.",
    "feature_preview_title": "Vista Previa en Vivo",
    "feature_preview_desc": "Alterna entre una vista formateada y la salida Markdown en bruto al instante.",
    "section_title": "Formateador de Documentos IA",
    "section_subtitle": "Pega tu texto abajo y deja que la IA lo estructure al instante",
    "panel_input": "Entrada",
    "panel_output": "Salida",
    "drop_text": "Arrastra un archivo .txt o .md aquí",
    "drop_sub": "o haz clic para examinar",
    "btn_sample": "📝 Usar Ejemplo",
    "btn_clear": "✕ Limpiar",
    "btn_formatting": "Formateando…",
    "btn_format": "✨ Formatear Texto",
    "view_formatted": "Formateado",
    "view_markdown": "Markdown",
    "empty_title": "Tu documento formateado aparece aquí",
    "empty_sub": "Introduce texto a la izquierda y haz clic en \"Formatear Texto\"",
    "doctype_general": "General",
    "doctype_business_proposal": "Propuesta de Negocio",
    "doctype_report": "Informe",
    "doctype_meeting_notes": "Acta de Reunión",
    "doctype_resume": "Currículum",
    "doctype_article": "Artículo",
    "draft_restored": "Se ha restaurado tu borrador anterior",
    "workspace_banner_title": "Texto recibido de Workspace",
    "workspace_banner_use": "Usar este texto",
    "workspace_banner_dismiss": "Ignorar",
    "workspace_send": "Enviar a Workspace",
    "workspace_sent": "Enviado ✓",
    "truncated_warning": "Documento muy largo: solo se procesó la primera parte, el resto no está incluido.",
    "err_too_short": "Introduce al menos 10 caracteres de texto para formatear.",
    "err_generic": "Se ha producido un error. Inténtalo de nuevo.",
    "err_file_type": "Solo se admiten archivos .txt o .md para pegado rápido.",
    "dismiss_draft": "Descartar borrador",
    "textarea_placeholder": "Pega aquí el texto sin formato...\n\n✦ Notas de reunión, contenido en bruto, salida de IA, correos...\n✦ O haz clic en \"Usar ejemplo\" para ver una demo",
    "copied": "Copiado",
    "copy": "Copiar",
    "seo_title": "Formateador de Texto con IA — De Notas a Documento Profesional",
    "seo_description": "Convierte notas, texto sin formato o contenido de IA en documentos profesionales estructurados al instante. Informes, propuestas, CV, artículos y más. Formateador de IA gratuito online."
  },
  "pdf_summary": {
    "title": "AI Summarizer",
    "subtitle": "Sube un PDF, Word o TXT — la IA lo lee y genera un resumen en segundos",
    "lang_label": "Idioma",
    "drop_title": "Arrastra tu archivo aquí",
    "drop_sub": "o haz clic para seleccionarlo",
    "drop_formats": "PDF · Word (.docx/.doc) · TXT · HTML — máx. 20 MB",
    "mode_short": "Breve",
    "mode_detailed": "Detallado",
    "mode_bullets": "Puntos clave",
    "mode_insights": "Ideas clave",
    "btn_generate": "Generar resumen",
    "btn_analysing": "Analizando…",
    "section_short": "Resumen breve",
    "section_detailed": "Resumen detallado",
    "section_bullets": "Puntos clave",
    "section_insights": "Palabras clave",
    "btn_copy": "Copiar",
    "btn_copied": "¡Copiado!",
    "btn_download": "Descargar",
    "btn_regenerate": "Regenerar",
    "btn_new_file": "Nuevo archivo",
    "workspace_banner_title": "Archivo recibido de Workspace",
    "workspace_banner_use": "Usar este archivo",
    "workspace_banner_dismiss": "Ignorar",
    "btn_send_workspace": "Enviar a Workspace",
    "btn_sent": "Enviado ✓",
    "truncated_warning": "Documento muy largo: solo se procesó la primera parte, el resto no está incluido.",
    "err_file_type": "Formato no admitido. Se permiten PDF, Word (.docx/.doc), TXT y HTML.",
    "err_file_too_large": "Archivo demasiado grande (máx {{max}}MB): {{name}}",
    "err_generic": "Se ha producido un error al analizar el archivo.",
    "remove_file": "Quitar archivo",
    "seo_title": "Resumen de PDF con IA — Extrae los Puntos Clave de Cualquier Documento",
    "seo_description": "Sube un PDF, Word o TXT y obtén un resumen generado por IA al instante. Resumen breve, análisis detallado o puntos clave. Resumidor de documentos con IA gratuito online."
  },
  "workspace": {
    "badge": "Nuevo",
    "title": "Flujo de trabajo",
    "subtitle": "Envía el resultado de una herramienta directamente a la siguiente, sin descargar ni volver a subir archivos.",
    "empty_title": "Nada en tránsito todavía",
    "empty_hint": "Empieza por una de estas herramientas y luego envía aquí su resultado para continuar con otra.",
    "received_from": "Recibido de {{tool}}",
    "btn_clear": "Borrar",
    "btn_download": "Descargar",
    "next_steps": "Continuar con",
    "history_title": "Historial de la sesión",
    "kind_file": "Archivo",
    "kind_text": "Texto",
    "start_here": "Herramientas de inicio",
    "persistence_hint": "No guardado: se pierde si recargas o cierras esta pestaña.",
    "feedback_cleared": "Eliminado de Workspace",
    "feedback_downloaded": "Descarga iniciada",
    "seo_title": "Flujo de Trabajo — Encadena Herramientas de IA y PDF",
    "seo_description": "Envía un archivo o texto de una herramienta a la siguiente sin volver a subirlo. Escanea, extrae, traduce y resume en un flujo conectado."
  },
  "pdf_translate": {
    "title": "Traducción de PDF",
    "badge": "Traducción de PDF con IA",
    "hero_title_1": "Traduce Cualquier PDF",
    "hero_title_2": "Con Diseño Preservado",
    "hero_subtitle": "Traducción de IA de nivel empresarial que mantiene el número y formato de páginas de tu documento.",
    "cta_primary": "🌍 Traducir PDF Gratis",
    "stat_languages": "Idiomas",
    "stat_scanned": "PDF Escaneados",
    "stat_quality": "Calidad",
    "stat_max_size": "Tamaño Máx",
    "feature_layout_title": "Diseño Fiel a la Página",
    "feature_layout_desc": "Mantiene el mismo número de páginas y tamaño que el original, página por página — no las fuentes o imágenes originales.",
    "feature_ai_title": "Traducción Calidad IA",
    "feature_ai_desc": "Traducción con IA bloque a bloque con prompts conscientes de la estructura.",
    "feature_ocr_title": "OCR para PDF Escaneados",
    "feature_ocr_desc": "Detecta automáticamente PDFs basados en imágenes y los procesa mediante pipeline OCR.",
    "feature_langs_title": "12 Idiomas",
    "feature_langs_desc": "Inglés, Italiano, Albanés, Español, Alemán, Francés + 6 más.",
    "feature_fast_title": "Procesamiento Rápido",
    "feature_fast_desc": "Rendimiento de nivel empresarial con preservación del diseño.",
    "feature_enterprise_title": "Fiabilidad Empresarial",
    "feature_enterprise_desc": "Límite 50 MB, escalado inteligente de fuentes, protección contra desbordamiento, modo fallback.",
    "section_title": "Traductor de PDF",
    "section_subtitle": "Traducción de IA empresarial con preservación del diseño",
    "label_mode": "Modo de Traducción",
    "mode_high_fidelity": "Alta Fidelidad",
    "mode_high_fidelity_desc": "Mantiene el número y tamaño de página originales",
    "mode_standard": "Estándar",
    "mode_standard_desc": "Procesamiento más rápido, salida de texto limpio",
    "label_language": "Idioma de Destino",
    "drop_title": "Arrastra tu archivo aquí o",
    "drop_browse": "examinar",
    "drop_hint": "PDF, DOCX, TXT — máx 50 MB",
    "btn_translating": "Traduciendo…",
    "btn_translate_to": "Traducir a",
    "badge_high_fidelity": "Alta Fidelidad",
    "switch_language": "Cambiar idioma:",
    "pane_original": "Original",
    "pane_translated": "Traducido",
    "pill_layout_preserved": "Diseño Preservado",
    "pill_fallback": "Modo Fallback",
    "pill_scanned": "PDF Escaneado",
    "page": "página",
    "pages": "páginas",
    "download_title": "Descarga tu traducción",
    "dl_pdf_name": "PDF Traducido",
    "dl_pdf_sub_preserved": "Diseño preservado",
    "dl_pdf_sub_clean": "Diseño limpio",
    "dl_txt_name": "Texto Traducido",
    "dl_txt_sub": "Archivo .txt simple",
    "dl_copy_name": "Copiar Texto",
    "dl_copied_name": "¡Copiado!",
    "dl_copy_sub": "Al portapapeles",
    "btn_translate_another": "Traducir otro archivo",
    "step_extracting": "Extrayendo texto…",
    "step_translating": "Traduciendo…",
    "step_rebuilding": "Reconstruyendo el documento…",
    "workspace_banner_title": "Archivo recibido de Workspace",
    "workspace_banner_use": "Usar este archivo",
    "workspace_banner_dismiss": "Ignorar",
    "dl_send_workspace_name": "Enviar a Workspace",
    "dl_send_workspace_sub": "Pasa el resultado a otra herramienta",
    "dl_sent_name": "Enviado ✓",
    "guide_link": "Guía: cómo funciona la traducción de PDF con IA",
    "truncated_warning": "Documento muy largo: solo se procesó la primera parte, el resto no está incluido.",
    "pill_clean_layout": "Diseño limpio",
    "err_file_type": "Solo se admiten archivos PDF, DOCX o TXT.",
    "err_file_too_large": "Archivo demasiado grande (máx {{max}}MB): {{name}}",
    "err_no_file": "Selecciona un archivo.",
    "err_generic": "Error al traducir. Inténtalo de nuevo.",
    "upload_aria": "Subir un archivo PDF",
    "remove_file": "Quitar archivo",
    "seo_title": "Traductor de PDF con IA — Traducción Manteniendo las Páginas Originales",
    "seo_description": "Traduce cualquier PDF a 12 idiomas manteniendo el mismo número de páginas y formato. Traducción con IA de nivel empresarial. Gratis online, sin registro."
  },
  "pdf_search": {
    "title": "Buscar PDF",
    "badge": "Búsqueda de PDF de Dominio Público",
    "hero_title_1": "Encuentra Libros y Documentos",
    "hero_title_2": "En PDF, Legalmente",
    "hero_subtitle": "Busca entre millones de libros de dominio público y obras de acceso abierto en Internet Archive y Project Gutenberg. Sin problemas de derechos de autor.",
    "search_placeholder": "Busca un título, p. ej. \"El Principito\"…",
    "search_button": "Buscar",
    "searching": "Buscando…",
    "empty_title": "Busca un libro o documento",
    "empty_subtitle": "Los resultados provienen solo de archivos de dominio público y acceso abierto.",
    "no_results_title": "Sin resultados",
    "no_results_subtitle": "Prueba con otro título o autor.",
    "result_by": "de",
    "preview_close": "Cerrar",
    "preview_loading": "Cargando vista previa…",
    "btn_download": "Descargar PDF",
    "btn_source_page": "Ver página de origen",
    "legal_note": "Todos los resultados provienen de archivos de dominio público o con licencia abierta.",
    "feature_legal_title": "100% Legal",
    "feature_legal_desc": "Solo obras de dominio público y acceso abierto, nunca contenido pirata.",
    "feature_sources_title": "Fuentes Verificadas",
    "feature_sources_desc": "Internet Archive, Project Gutenberg, arXiv y PubMed Central: millones de libros y artículos catalogados.",
    "feature_preview_title": "Vista Previa Instantánea",
    "feature_preview_desc": "Consulta el PDF directamente en el navegador antes de descargarlo.",
    "preview_unavailable": "Vista previa no disponible para esta fuente. Descarga el PDF para leerlo.",
    "filter_all": "Todos",
    "filter_books": "Libros",
    "filter_papers": "Artículos",
    "filter_no_results": "Sin resultados para este filtro. Prueba \"Todos\".",
    "sort_label": "Ordenar por",
    "sort_relevance": "Relevancia",
    "sort_year_desc": "Año (más reciente)",
    "sort_year_asc": "Año (más antiguo)",
    "btn_send_workspace": "Enviar a Workspace",
    "workspace_sent": "Enviado",
    "recent_searches_title": "Búsquedas recientes",
    "recent_clear": "Borrar",
    "faq_title": "Preguntas frecuentes",
    "faq_q1": "¿Cómo funciona este motor de búsqueda de PDF?",
    "faq_a1": "Busca simultáneamente en Internet Archive, Project Gutenberg, arXiv y PubMed Central y muestra solo los resultados con un PDF realmente disponible, con vista previa directa en el navegador antes de descargar.",
    "faq_q2": "¿Es legal descargar estos PDF?",
    "faq_a2": "Sí. Cada fuente indexada publica solo material de dominio público o de acceso abierto: libros con derechos vencidos, artículos científicos y trabajos con licencia de distribución libre. Ningún contenido pirata.",
    "faq_q3": "¿Qué fuentes cubre esta búsqueda de PDF sin copyright?",
    "faq_a3": "Internet Archive y Project Gutenberg para libros y clásicos de dominio público, arXiv y PubMed Central para artículos científicos y académicos de acceso abierto.",
    "faq_q4": "¿Puedo buscar libros PDF de dominio público en español?",
    "faq_a4": "Sí, Internet Archive incluye muchos libros de dominio público escaneados en decenas de idiomas, además del catálogo mayormente en inglés de Project Gutenberg.",
    "faq_q5": "¿Por qué algunos resultados no tienen vista previa?",
    "faq_a5": "Algunas fuentes (p. ej. PubMed Central) impiden incrustar la página directamente por motivos técnicos de su servidor; en ese caso, la descarga sigue disponible.",
    "faq_q6": "¿El motor de búsqueda de PDF es gratuito?",
    "faq_a6": "Sí, totalmente gratis, sin registro ni límites de uso, salvo un límite técnico antiabuso de 20 búsquedas por minuto.",
    "quality_hd": "Alta resolución",
    "quality_low": "Baja resolución",
    "group_similar_label": "Agrupar ediciones similares",
    "duplicate_count": "+{{count}} ediciones más",
    "favorites_title": "Tus favoritos",
    "btn_favorite_add": "Añadir a favoritos",
    "btn_favorite_remove": "Quitar de favoritos",
    "btn_save_library": "Guardar en la biblioteca",
    "library_saved": "En la biblioteca",
    "preview_timeout": "La vista previa está tardando demasiado en cargar. Descarga el PDF para leerlo.",
    "err_search": "La búsqueda ha fallado. Inténtalo de nuevo.",
    "err_workspace_send": "Error al enviar a Workspace. Inténtalo de nuevo.",
    "err_library_save": "Error al guardar en la Biblioteca. Inténtalo de nuevo.",
    "preview_prev_page": "Página anterior",
    "preview_next_page": "Página siguiente",
    "seo_title": "Buscador de PDF de Dominio Público — Libros sin Copyright",
    "seo_description": "Busca y descarga libros de dominio público, artículos científicos y publicaciones de acceso abierto, sin problemas de derechos de autor. Busca en Internet Archive, Project Gutenberg, arXiv y PubMed Central con vista previa antes de descargar."
  },
  "convert": {
    "title": "Convertidor",
    "subtitle": "conversiones disponibles",
    "search_placeholder": "Buscar por formato o tipo…",
    "favorites": "Favoritos",
    "favorites_desc": "Conversiones fijadas",
    "no_results": "Sin resultados para \"{{ query }}\"",
    "show_all": "Mostrar todo",
    "group_docs": "Documentos",
    "group_docs_desc": "PDF, DOCX, TXT, HTML, Markdown",
    "group_sheets": "Hoja de cálculo",
    "group_sheets_desc": "CSV, Excel, JSON",
    "group_images": "Imágenes",
    "group_images_desc": "PNG, JPG, WebP, PDF",
    "group_structured": "Estructurado",
    "group_structured_desc": "PDF, JSON, CSV",
    "group_base64": "Base64",
    "group_base64_desc": "Codificar y decodificar Base64",
    "group_utils": "Utilidades",
    "group_utils_desc": "Fusionar y herramientas avanzadas",
    "remove_fav": "Eliminar de favoritos",
    "add_fav": "Añadir a favoritos",
    "step": "Paso",
    "step_of": "de",
    "step1_label": "Subir archivo",
    "step2_label": "Convertir",
    "close": "Cerrar",
    "drop_prompt": "Haz clic o arrastra el archivo aquí",
    "accepted_formats": "Formatos aceptados",
    "change_file": "Haz clic para cambiar",
    "meta_name": "Nombre",
    "meta_size": "Tamaño",
    "meta_type": "Tipo",
    "meta_pages": "Páginas",
    "preview_title": "Vista previa",
    "preview_unavailable": "Vista previa no disponible para este tipo de archivo.",
    "cancel": "Cancelar",
    "continue_btn": "Continuar",
    "selected_file": "Archivo seleccionado",
    "conversion_label": "Conversión",
    "format_warning": "El archivo no coincide con el formato esperado ({{ accept }}).",
    "in_progress": "Procesando…",
    "back": "Atrás",
    "converting": "Convirtiendo…",
    "convert_now": "Convertir ahora",
    "close_confirm": "¿Cerrar el convertidor? El archivo aún no ha sido convertido.",
    "hint_invoice": "💡 Parece una factura. Recomendado: PDF → JSON estructurado.",
    "hint_contract": "💡 Parece un contrato. Recomendado: PDF → DOCX.",
    "hint_pdf": "💡 PDF detectado. Recomendado: PDF → DOCX o PDF → JSON.",
    "hint_image": "💡 Imagen detectada. Recomendado: convertir a WebP para la web.",
    "hint_csv": "💡 Datos tabulares detectados. Recomendado: CSV → informe PDF.",
    "hint_json": "💡 JSON detectado. Recomendado: JSON → informe PDF.",
    "err_unauthorized": "No autorizado.",
    "err_too_large": "Archivo demasiado grande: el límite es {{max}}MB.",
    "err_unsupported": "Formato de archivo no compatible.",
    "err_invalid": "Solicitud no válida. Comprueba el archivo.",
    "err_failed": "Conversión fallida. Inténtalo de nuevo.",
    "success": "✅ Conversión completada. Descarga iniciada.",
    "no_file": "Ningún archivo seleccionado.",
    "payload_not_downloadable": "Conversión completada pero el resultado no es descargable.",
    "type_pdf_to_docx": "PDF → Word (DOCX)",
    "type_docx_to_pdf": "Word → PDF",
    "type_pdf_to_txt": "PDF → Texto",
    "type_pdf_to_html": "PDF → HTML",
    "type_html_to_pdf": "HTML → PDF",
    "type_html_to_docx": "HTML → Word",
    "type_docx_to_txt": "Word → Texto",
    "type_docx_to_html": "Word → HTML",
    "type_txt_to_pdf": "Texto → PDF",
    "type_txt_to_docx": "Texto → Word",
    "type_md_to_html": "Markdown → HTML",
    "type_md_to_pdf": "Markdown → PDF",
    "type_csv_to_excel": "CSV → Excel",
    "type_excel_to_csv": "Excel → CSV",
    "type_excel_to_json": "Excel → JSON",
    "type_excel_to_html": "Excel → HTML",
    "type_excel_to_pdf": "Excel → PDF",
    "type_csv_to_pdf": "CSV → PDF",
    "type_csv_to_json": "CSV → JSON",
    "type_json_to_csv": "JSON → CSV",
    "type_jpg_to_png": "JPG → PNG",
    "type_png_to_jpg": "PNG → JPG",
    "type_png_to_webp": "PNG/JPG → WebP",
    "type_webp_to_png": "WebP → PNG",
    "type_image_to_pdf": "Imágenes → PDF",
    "type_pdf_to_images": "PDF → Páginas (ZIP)",
    "type_pdf_to_json": "PDF → JSON estructurado",
    "type_json_to_pdf": "JSON → PDF",
    "type_pdf_to_csv": "PDF → CSV",
    "type_b64_to_png": "Base64 → PNG",
    "type_b64_to_jpg": "Base64 → JPG",
    "type_b64_to_pdf": "Base64 → PDF",
    "type_file_to_b64": "Archivo → Base64",
    "type_merge_pdf": "Fusionar PDFs",
    "drop_prompt_multi": "Haz clic o arrastra los archivos aquí",
    "remove_file": "Eliminar archivo",
    "files_selected_count": "{{count}} archivos seleccionados",
    "merge_min_files": "Selecciona al menos 2 archivos PDF para combinar.",
    "selected_files": "Archivos seleccionados",
    "batch_combine_note": "Estos archivos se combinarán en un único resultado.",
    "batch_pending": "En cola",
    "batch_done": "Incluido",
    "batch_error": "Fallido",
    "workspace_banner_title": "Archivo recibido de Workspace",
    "workspace_banner_use": "Usar este archivo",
    "workspace_banner_dismiss": "Ignorar",
    "workspace_send": "Enviar a Workspace",
    "workspace_sent": "Enviado ✓",
    "blog_link": "Guía: cómo convertir PDF a Word sin perder el formato",
    "seo_title": "Convertidor de Archivos Gratuito — PDF, Word, Excel, Imágenes",
    "seo_description": "Convierte entre PDF, DOCX, TXT, HTML, XLSX, CSV, JSON, PNG, JPG y más — {{count}} tipos de conversión, gratis, en tu navegador. Sin registro."
  },
  "ocr": {
    "title": "OCR — Reconocimiento de texto",
    "subtitle": "Extrae texto de imágenes y PDF escaneados",
    "drop_prompt": "Arrastra el archivo aquí o haz clic para seleccionarlo",
    "accepted": "PNG, JPG, WEBP, BMP, TIFF, PDF",
    "change_file": "Haz clic para cambiar el archivo",
    "lang_label": "Idioma del documento",
    "clear": "Limpiar",
    "start": "Iniciar OCR",
    "processing": "Procesando…",
    "preparing": "Preparando página",
    "recognizing": "Reconociendo texto…",
    "results_title": "Resultado",
    "copy": "Copiar",
    "copied": "¡Copiado!",
    "download_txt": "Descargar .txt",
    "no_text": "No se detectó texto",
    "page": "Página",
    "text_layer": "capa de texto del PDF",
    "success": "Texto extraído correctamente",
    "err_failed": "Error en el procesamiento OCR",
    "err_rate_limit": "Demasiadas solicitudes, espera un momento e inténtalo de nuevo",
    "err_too_large": "Archivo demasiado grande",
    "pages_truncated": "Solo se procesaron las primeras {{max}} páginas",
    "files_selected": "{{count}} archivo(s) seleccionado(s)",
    "add_more": "Haz clic para añadir más archivos",
    "remove_file": "Eliminar archivo",
    "err_too_many_files": "Demasiados archivos seleccionados (máx. {{max}})",
    "err_file_too_large": "Archivo demasiado grande (máx. {{max}}MB): {{names}}",
    "err_too_many_pages": "Demasiadas páginas requieren OCR ({{count}}, máx. {{max}}). Elimina algunos archivos e inténtalo de nuevo.",
    "low_confidence_hint": "Confianza baja: considera volver a escanear esta página o usar una imagen de mayor calidad",
    "workspace_banner_title": "Archivo recibido de Workspace",
    "workspace_banner_use": "Usar este archivo",
    "workspace_banner_dismiss": "Ignorar",
    "send_workspace": "Enviar a Workspace",
    "sent": "Enviado ✓",
    "save_library": "Guardar en la biblioteca",
    "saved_library": "Guardado en la biblioteca",
    "seo_title": "OCR Online Gratuito — Extrae Texto de Imágenes y PDF Escaneados",
    "seo_description": "Extrae texto de fotos, documentos escaneados y PDF en 7 idiomas. OCR online gratuito, sin registro."
  },
  "tools": {
    "badge": "AI & PDF Tools",
    "heading": "Tu Suite de Productividad",
    "subtitle": "Herramientas documentales con IA y utilidades PDF, todo en un solo lugar.",
    "section_ai": "Herramientas IA",
    "section_tools": "Herramientas PDF",
    "pdf_summary_title": "Resumen de PDF",
    "pdf_summary_desc": "Sube un PDF, Word o TXT y obtén un resumen generado por IA en segundos.",
    "ai_formatter_title": "AI Formatter",
    "ai_formatter_desc": "Transforma notas sin formato en documentos pulidos.",
    "pdf_translate_title": "Traducir PDF",
    "pdf_translate_desc": "Traduce cualquier PDF o documento a 12 idiomas con calidad IA.",
    "ai_slides_title": "AI Slides",
    "ai_slides_desc": "Convierte cualquier tema en una presentación completa con notas del orador.",
    "pdf_editor_title": "Editor de PDF",
    "pdf_editor_desc": "Combina, divide, rota y elimina páginas, añade marcas de agua a cualquier PDF.",
    "viewer_title": "Visor",
    "viewer_desc": "Visualiza, navega y busca en documentos PDF desde el navegador.",
    "editor_title": "Editor",
    "editor_desc": "Editor de texto enriquecido con exportación a PDF y DOCX.",
    "convert_title": "Convertir",
    "convert_desc": "Convierte entre PDF, Word, Excel, imágenes y más.",
    "ocr_title": "OCR",
    "ocr_desc": "Extrae texto de PDF e imágenes escaneadas con OCR.",
    "scanner_title": "Escáner",
    "scanner_desc": "Escanea documentos físicos con tu cámara y conviértelos en PDF.",
    "pdf_search_title": "Buscar PDF",
    "pdf_search_desc": "Busca libros y documentos en PDF de dominio público, con vista previa antes de descargar.",
    "library_title": "Mi biblioteca",
    "library_desc": "Guarda los PDF en el navegador, busca en su contenido, anótalos y haz preguntas a tus documentos.",
    "my_files_title": "Mis archivos",
    "my_files_desc": "Encuentra los resultados que has guardado de las herramientas de IA",
    "seo_title": "Herramientas PDF e IA Gratuitas — Traducción, Resumen, Presentaciones",
    "seo_description": "Herramientas online gratuitas con IA: traductor de PDF, generador de presentaciones, formateador de texto y resumidor de PDF. Herramientas profesionales para documentos. Sin registro."
  },
  "about_manage": {
    "title": "Sección About",
    "saving": "Guardando…",
    "headline_label": "Titular",
    "headline_placeholder": "Full-Stack Developer & Open Source Enthusiast",
    "bio_label": "Biografía",
    "location_label": "Ubicación",
    "location_placeholder": "Remoto / Nueva York",
    "avatar_label": "URL del avatar",
    "resume_label": "URL del currículum",
    "skills_label": "Habilidades (pulsa Enter)",
    "social_links_title": "Redes sociales",
    "github_label": "URL de GitHub",
    "linkedin_label": "URL de LinkedIn",
    "twitter_label": "URL de Twitter",
    "email_label": "Email de contacto",
    "update_success": "¡Sección About actualizada!",
    "update_error": "Error al actualizar."
  },
  "experiences_manage": {
    "title": "Experiencias",
    "new": "Nueva Experiencia",
    "entity": "Experiencia",
    "required": "Obligatorio",
    "company_label": "Empresa",
    "role_label": "Puesto",
    "start_date_label": "Fecha de inicio (ej. 2022-01)",
    "end_date_label": "Fecha de fin",
    "current_label": "Trabajo aquí actualmente",
    "description_label": "Descripción",
    "location_label": "Ubicación",
    "location_placeholder": "Remoto",
    "order_label": "Orden",
    "tech_label": "Tecnologías (pulsa Enter)",
    "empty": "Todavía no hay experiencias.",
    "present": "Presente",
    "saved": "¡Experiencia guardada!",
    "save_error": "Error al guardar.",
    "confirm_delete": "¿Eliminar esta experiencia?",
    "deleted": "Eliminada."
  },
  "projects_manage": {
    "title": "Proyectos",
    "new": "Nuevo Proyecto",
    "entity": "Proyecto",
    "required": "Obligatorio",
    "title_label": "Título",
    "order_label": "Orden",
    "description_label": "Descripción",
    "live_url_label": "URL en vivo",
    "repo_url_label": "URL del repositorio",
    "tech_label": "Tecnologías (pulsa Enter)",
    "images_label": "URLs de imágenes (pulsa Enter)",
    "featured_label": "Proyecto destacado",
    "save_project": "Guardar Proyecto",
    "empty": "Todavía no hay proyectos. ¡Crea el primero!",
    "featured_badge": "Destacado",
    "saved": "¡Proyecto guardado!",
    "save_error": "Error al guardar el proyecto.",
    "confirm_delete": "¿Eliminar este proyecto?",
    "deleted": "Proyecto eliminado.",
    "case_study": "Caso de estudio",
    "case_study_hint": "Si rellenas al menos un campo, el proyecto obtiene su propia página /projects/<slug>.",
    "problem_label": "Problema del cliente",
    "solution_label": "Solución realizada",
    "results_label": "Resultados (medibles)",
    "reorder_hint": "Arrastra las filas o usa las flechas para cambiar el orden: se guarda al instante.",
    "move_up": "Subir",
    "move_down": "Bajar",
    "reorder_error": "Orden no guardado, se restauró el anterior."
  },
  "editor": {
    "title": "Editor de Documentos",
    "subtitle": "Escribe y formatea documentos en tu navegador, exporta a PDF, DOCX o HTML",
    "doc_name_placeholder": "Nombre del documento",
    "import": "Importar",
    "exporting": "Exportando…",
    "style": "Estilo",
    "paragraph": "Párrafo",
    "code": "Código",
    "link": "Enlace",
    "words": "palabras",
    "placeholder": "Empieza a escribir…",
    "link_prompt": "Introduce la URL del enlace",
    "bold": "Negrita",
    "italic": "Cursiva",
    "underline": "Subrayado",
    "strike": "Tachado",
    "ul": "Lista con viñetas",
    "ol": "Lista numerada",
    "quote": "Cita",
    "align_left": "Alinear a la izquierda",
    "align_center": "Centrar",
    "align_right": "Alinear a la derecha",
    "undo": "Deshacer",
    "redo": "Rehacer",
    "clear_format": "Borrar formato",
    "err_format": "Formato de archivo no compatible",
    "err_import": "Error al importar",
    "err_empty": "El documento está vacío",
    "err_export": "Error al exportar",
    "err_timeout": "Esto está tardando demasiado. Prueba con un archivo más pequeño o revisa tu conexión.",
    "success": "Documento exportado correctamente",
    "workspace_banner_title": "Texto recibido de Workspace",
    "workspace_banner_use": "Usar este texto",
    "workspace_banner_dismiss": "Ignorar",
    "workspace_send": "Enviar a Workspace",
    "workspace_sent": "Enviado ✓",
    "err_file_too_large": "Archivo demasiado grande (máx {{max}}MB): {{name}}",
    "seo_title": "Editor de Documentos Online Gratuito — Exporta a PDF y DOCX",
    "seo_description": "Escribe y da formato a documentos en tu navegador, importa archivos Word y exporta a PDF, DOCX o HTML. Gratis, sin registro."
  },
  "pdf_editor": {
    "title": "Editor de PDF",
    "subtitle": "Combina, divide, rota y elimina páginas, añade marcas de agua",
    "drop_prompt": "Arrastra los PDF aquí o haz clic para seleccionarlos",
    "drop_hint": "Puedes seleccionar varios archivos para combinarlos",
    "add_more": "Añadir más PDF",
    "pages_title": "Páginas",
    "pages_hint": "Arrastra para reordenar, rotar o eliminar páginas individuales",
    "watermark_label": "Marca de agua",
    "watermark_placeholder": "Texto de la marca de agua (opcional)",
    "range_label": "Rango de páginas",
    "range_placeholder": "ej. 1-3,5",
    "clear": "Limpiar",
    "exporting": "Exportando…",
    "export": "Exportar PDF",
    "err_range": "Rango de páginas no válido",
    "success": "PDF exportado correctamente",
    "err_failed": "Error al exportar",
    "err_open": "No se pudo abrir el PDF",
    "workspace_banner_title": "Archivo recibido de Workspace",
    "workspace_banner_use": "Usar este archivo",
    "workspace_banner_dismiss": "Ignorar",
    "workspace_send": "Enviar a Workspace",
    "workspace_sent": "Enviado ✓",
    "page_moved": "Página movida a la posición {{position}}",
    "err_no_valid_pdf": "No se ha encontrado ningún PDF válido entre los archivos soltados.",
    "drag_to_reorder": "Arrastra para reordenar",
    "rotate": "Girar",
    "move_left": "Mover a la izquierda",
    "move_right": "Mover a la derecha",
    "delete": "Eliminar",
    "persistence_hint": "Los cambios no se guardan: se pierden al recargar o cerrar esta pestaña.",
    "seo_title": "Editor de PDF Gratuito — Une, Divide, Rota y Añade Marca de Agua",
    "seo_description": "Une PDF, divide y extrae páginas, rota o elimina páginas y añade marcas de agua — todo en el navegador, los archivos nunca salen de tu dispositivo."
  },
  "viewer": {
    "title": "Visor de PDF",
    "subtitle": "Visualiza, navega y busca en documentos PDF",
    "drop_prompt": "Arrastra tu PDF aquí o haz clic para seleccionarlo",
    "fit_width": "Ajustar al ancho",
    "search_placeholder": "Buscar en el documento…",
    "no_matches": "Sin resultados",
    "close_file": "Cerrar archivo",
    "err_open": "No se pudo abrir el PDF",
    "ocr_hint": "Este documento no parece contener texto extraíble: podría ser un PDF escaneado.",
    "ocr_hint_cta": "Probar OCR",
    "trust_badge": "Los archivos se procesan íntegramente en tu navegador — nunca se suben",
    "annotations_title": "Anotaciones",
    "annotate_on": "Resaltar",
    "annotate_off": "Terminar de resaltar",
    "annotate_hint": "Arrastra sobre la página para resaltar.",
    "annotations_empty": "Aún no hay anotaciones. Activa Resaltar y arrastra sobre el texto.",
    "note_placeholder": "Añade una nota…",
    "delete_annotation": "Eliminar anotación",
    "export_annotations": "Exportar notas",
    "from_library": "De la biblioteca",
    "err_load_doc": "No se ha podido abrir el documento de tu biblioteca.",
    "save_to_library": "Guardar en la biblioteca",
    "workspace_banner_title": "Archivo recibido de Workspace",
    "workspace_banner_use": "Usar este archivo",
    "workspace_banner_dismiss": "Ignorar",
    "opening": "Abriendo el documento…",
    "prev_page": "Página anterior",
    "next_page": "Página siguiente",
    "zoom_out": "Reducir zoom",
    "zoom_in": "Aumentar zoom",
    "prev_match": "Resultado anterior",
    "next_match": "Resultado siguiente",
    "seo_title": "Visor de PDF Online Gratuito — Zoom, Búsqueda y Miniaturas",
    "seo_description": "Visualiza documentos PDF en tu navegador: navegación de páginas, zoom, búsqueda de texto completo y vista de miniaturas. Gratis, privado, sin subir archivos."
  },
  "scanner": {
    "title": "Escáner de Documentos",
    "subtitle": "Escanea documentos con tu cámara y conviértelos en PDF",
    "capture": "Capturar",
    "start_camera": "Iniciar cámara",
    "stop_camera": "Detener cámara",
    "upload_image": "Subir imagen",
    "placeholder": "Inicia la cámara o sube una imagen para empezar",
    "drop_hint": "Arrastra una imagen aquí, o usa la cámara o sube un archivo",
    "limits_hint": "PNG, JPG, WEBP · máx. {{size}}MB por imagen · hasta {{max}} páginas",
    "filter": "Filtro",
    "filter_none": "Ninguno",
    "filter_grayscale": "Escala de grises",
    "filter_bw": "Blanco y negro",
    "filter_enhance": "Mejorar",
    "rotate": "Rotar",
    "reset_crop": "Restablecer recorte",
    "cancel": "Cancelar",
    "add_page": "Añadir página",
    "crop_hint": "Arrastra sobre la imagen para recortar",
    "edit_canvas_label": "Área de recorte. Arrastra para seleccionar, o usa el teclado: Intro para seleccionar, flechas para mover, Mayús+flechas para redimensionar, Esc para cancelar.",
    "pages_title": "Páginas capturadas",
    "clear": "Limpiar",
    "confirm_clear": "¿Eliminar las {{count}} páginas capturadas? No se puede deshacer.",
    "confirm_delete_page": "¿Eliminar la página {{n}}?",
    "exporting": "Exportando…",
    "uploading": "Subiendo… {{pct}}%",
    "processing_pdf": "Generando PDF…",
    "export_pdf": "Exportar PDF",
    "err_camera": "No se pudo acceder a la cámara",
    "err_camera_denied": "Permiso de cámara denegado. Actívalo en la configuración del navegador e inténtalo de nuevo.",
    "err_camera_notfound": "No se encontró ninguna cámara en este dispositivo.",
    "err_camera_inuse": "La cámara ya está siendo usada por otra aplicación.",
    "success": "PDF exportado correctamente",
    "err_failed": "La operación falló",
    "err_file_type": "Formato no compatible: {{name}}",
    "err_file_too_large": "Archivo demasiado grande (máx. {{max}}MB): {{name}}",
    "err_offline": "Estás sin conexión. Comprueba tu conexión e inténtalo de nuevo.",
    "err_too_many_pages": "Puedes tener como máximo {{max}} páginas: algunos archivos no se añadieron.",
    "run_ocr": "Ejecutar OCR",
    "ocr_results_title": "Texto extraído (OCR)",
    "trust_badge": "Captura, recorte y filtros permanecen en tu navegador — solo el OCR y la exportación a PDF se envían al servidor",
    "workspace_send_pdf": "Enviar PDF a Workspace",
    "workspace_send_text": "Enviar texto a Workspace",
    "workspace_sent": "Enviado ✓",
    "move_left": "Mover a la izquierda",
    "move_right": "Mover a la derecha",
    "delete": "Eliminar",
    "page_alt": "página {{n}}",
    "err_camera_unsupported": "Cámara no disponible en este navegador o conexión no segura (se requiere HTTPS). Aun así puedes subir una imagen.",
    "persistence_hint": "Las páginas capturadas no se guardan: se pierden al recargar o cerrar esta pestaña.",
    "seo_title": "Escáner de Documentos Gratuito — De la Cámara al PDF Online",
    "seo_description": "Escanea documentos con la webcam o la cámara del teléfono, recórtalos y mejóralos, expórtalos como PDF. Gratis, sin registro."
  },
  "library": {
    "badge": "Nuevo",
    "title": "Mi biblioteca",
    "subtitle": "Los PDF que guardas se quedan en tu navegador: busca en su contenido, anótalos y haz preguntas a tus documentos.",
    "search_placeholder": "Busca dentro de tus documentos…",
    "search_clear": "Borrar la búsqueda",
    "search_btn": "Buscar",
    "searching": "Buscando…",
    "chat_all": "Pregunta a la biblioteca",
    "hint_index_first": "Indexa al menos un documento para buscar en su contenido o hacer preguntas.",
    "hits_title": "{{count}} resultados en el contenido",
    "hits_empty": "Ninguna página contiene esos términos.",
    "page_n": "pág. {{n}}",
    "pages_n": "{{n}} páginas",
    "stat_docs": "{{count}} documentos",
    "stat_indexed": "{{count}} indexados",
    "index_all": "Indexar los {{count}} pendientes",
    "import": "Subir PDF",
    "importing": "Subiendo…",
    "sort": "Ordenar por",
    "sort_recent": "Más recientes",
    "sort_title": "Título",
    "sort_size": "Tamaño",
    "tag_all": "Todos",
    "tag_placeholder": "etiquetas separadas por comas",
    "empty_title": "Tu biblioteca está vacía",
    "empty_hint": "Guarda aquí los PDF que encuentres con la Búsqueda de PDF, o sube los tuyos.",
    "empty_cta_search": "Buscar un PDF",
    "indexing": "Indexando {{pct}}%",
    "not_indexed": "Sin indexar",
    "indexed": "Indexado",
    "scanned": "Escaneo",
    "scanned_hint": "Este PDF no tiene texto seleccionable: mándalo al OCR para poder buscarlo.",
    "open": "Abrir",
    "chat_doc": "Preguntar a este documento",
    "send_to": "Enviar a",
    "edit_tags": "Editar etiquetas",
    "download": "Descargar",
    "remove": "Eliminar",
    "source_upload": "Subido",
    "err_import": "La subida ha fallado. Inténtalo de nuevo.",
    "err_index": "No se ha podido extraer el texto.",
    "chat_title": "Pregunta a tus documentos",
    "chat_scope_all": "Toda la biblioteca",
    "chat_close": "Cerrar",
    "chat_intro": "Haz una pregunta: busco los pasajes pertinentes en tus documentos y respondo citando las páginas.",
    "chat_privacy": "Tus documentos se quedan en tu navegador. Al servidor solo llegan los pocos pasajes pertinentes a la pregunta.",
    "chat_ungrounded": "Respuesta no encontrada en tus documentos.",
    "chat_sources": "Fuentes:",
    "chat_clear": "Vaciar la conversación",
    "chat_placeholder": "Haz una pregunta…",
    "chat_send": "Enviar",
    "chat_no_context": "No he encontrado nada pertinente en los documentos indexados.",
    "chat_error": "La respuesta ha fallado. Inténtalo de nuevo.",
    "import_skipped": "{{count}} archivo(s) omitido(s): solo se pueden importar PDF a la Biblioteca.",
    "seo_title": "Mi Biblioteca PDF — Archivo Personal con Búsqueda y Chat IA",
    "seo_description": "Guarda los PDF que encuentres, búscalos página por página, anótalos y haz preguntas sobre tus documentos. Todo permanece en tu navegador, nada se sube al servidor."
  },
  "blog_manage": {
    "title": "Artículos del blog",
    "new_post": "Nuevo artículo",
    "form_title_edit": "Editar artículo",
    "form_title_new": "Nuevo artículo",
    "helper_copy": "El contenido en italiano es obligatorio. Las traducciones son opcionales — usa el botón Traducir para completarlas automáticamente.",
    "autosave_saving": "Guardando borrador…",
    "autosave_saved": "Guardado",
    "autosave_error": "Fallo en el guardado automático",
    "hide_preview": "Ocultar vista previa",
    "show_preview": "Mostrar vista previa",
    "pdf_import_label": "Importar desde PDF",
    "pdf_import_hint": "Extrae el texto, revísalo y luego tradúcelo",
    "upload_pdf": "Subir PDF",
    "extracting_text": "Extrayendo texto…",
    "remove_pdf_preview": "Eliminar vista previa del PDF",
    "pages_words": "{{pages}} páginas · {{words}} palabras",
    "use_as_italian": "Usar como contenido en italiano",
    "translating": "Traduciendo…",
    "translate_all": "Traducir IT → TODAS",
    "title_label": "Título",
    "title_placeholder": "Título del artículo…",
    "title_required_error": "El título es obligatorio (mín. 3 caracteres)",
    "toolbar_aria_label": "Opciones de formato",
    "toolbar_bold": "Negrita",
    "toolbar_italic": "Cursiva",
    "toolbar_h2": "Encabezado 2",
    "toolbar_h3": "Encabezado 3",
    "toolbar_bullet_list": "Lista con viñetas",
    "toolbar_numbered_list": "Lista numerada",
    "toolbar_inline_code": "Código en línea",
    "toolbar_code_block": "Bloque de código",
    "toolbar_blockquote": "Cita",
    "toolbar_link": "Enlace",
    "toolbar_divider": "Separador",
    "content_label": "Contenido",
    "content_placeholder": "<p>Empieza a escribir…</p>",
    "content_required_error": "El contenido es obligatorio (mín. 10 caracteres)",
    "content_hint": "Contenido HTML — usa la barra superior para el formato",
    "preview_label": "Vista previa",
    "close_preview": "Cerrar vista previa",
    "cover_image_alt": "Imagen de portada",
    "excerpt_label": "Extracto",
    "excerpt_placeholder": "Se genera automáticamente a partir del contenido si se deja vacío",
    "advanced_options": "Opciones avanzadas",
    "advanced_hint": "opcionales, se rellenan automáticamente si están vacías",
    "tags_label": "Etiquetas",
    "tags_placeholder": "p. ej. typescript, nestjs… (Intro o coma)",
    "tags_hint": "Pulsa Intro o coma para añadir una etiqueta",
    "cover_image_label": "URL de la imagen de portada",
    "cover_image_placeholder": "https://ejemplo.com/portada.jpg",
    "subtitle_label": "Subtítulo",
    "subtitle_placeholder": "Subtítulo opcional",
    "slug_label": "Slug de la URL",
    "slug_placeholder": "generado-automaticamente-desde-el-titulo",
    "slug_hint": "Generado automáticamente a partir del título",
    "meta_title_label": "Meta Title (SEO)",
    "meta_title_placeholder": "Por defecto: título del artículo",
    "meta_description_label": "Meta Description (SEO)",
    "meta_description_placeholder": "Por defecto: extracto",
    "image_suggestion_label": "Sugerencia de imagen:",
    "saving": "Guardando…",
    "save_draft": "Guardar borrador",
    "publishing": "Publicando…",
    "publish": "Publicar",
    "empty": "Aún no hay artículos. ¡Escribe el primero!",
    "published": "Publicado",
    "draft": "Borrador",
    "action_preview": "Vista previa",
    "err_it_required": "El título y el contenido en italiano son obligatorios.",
    "err_fields_too_long": "Extracto/subtítulo/campos meta demasiado largos (máx. {{max}} caracteres para el extracto).",
    "published_msg": "¡Artículo publicado!",
    "draft_saved_msg": "¡Borrador guardado!",
    "confirm_delete": "¿Eliminar este artículo?",
    "deleted_msg": "Artículo eliminado.",
    "draft_generated": "Borrador generado a partir del PDF.",
    "generate_failed_default": "Error al procesar el PDF.",
    "only_pdf_allowed": "Solo se permiten archivos PDF.",
    "pdf_too_large": "El PDF debe ser menor de 10 MB.",
    "extract_failed_default": "No se pudo extraer el texto de este PDF.",
    "content_applied": "Contenido aplicado. Revísalo y tradúcelo cuando estés listo.",
    "add_it_title_first": "Añade primero el título en italiano.",
    "translated_success": "Traducido a EN, SQ, PT, ES, FR, DE. Revísalo antes de publicar.",
    "translation_failed": "Fallo en la traducción. Comprueba tu conexión e inténtalo de nuevo.",
    "cover_data_url_unsupported": "Usa una URL de imagen para la portada. La carga directa de archivos no es compatible.",
    "err_payload_too_large": "Contenido demasiado grande. Elimina las imágenes incrustadas y usa URLs de imagen.",
    "err_session_expired": "Sesión caducada. Vuelve a iniciar sesión.",
    "err_save_failed_default": "Error al guardar. Comprueba título, contenido y slug.",
    "action_unpublish": "Pasar a borrador",
    "unpublished_msg": "Artículo devuelto a borrador (visitas conservadas)",
    "filter_label": "Filtrar por estado",
    "filter_all": "Todos",
    "empty_drafts": "No hay borradores.",
    "empty_published": "No hay artículos publicados.",
    "schedule_label": "Publicación programada",
    "schedule_hint": "A la hora indicada el artículo se publica solo (se comprueba cada minuto). Vacío = sin programar.",
    "schedule_btn": "Programar",
    "schedule_clear": "Quitar programación",
    "notify_label": "Cuando salga, enviar una newsletter a los suscriptores",
    "scheduled_badge": "Programado",
    "scheduled_msg": "Artículo programado.",
    "schedule_past": "Elige una fecha y hora en el futuro."
  },
  "privacy": {
    "title": "Política de Privacidad",
    "meta_description": "Información sobre privacidad y tratamiento de datos personales de gentsallaku.it.",
    "updated_label": "Última actualización",
    "updated_date": "23/08/2026",
    "intro": "Este aviso describe cómo se tratan los datos personales de los usuarios de gentsallaku.it, de conformidad con el Reglamento (UE) 2016/679 (RGPD).",
    "see_cookie_policy": "Ir a la Política de Cookies →",
    "s1_title": "Responsable del tratamiento",
    "s1_body": "El responsable del tratamiento de los datos recopilados a través de este sitio web es Gent Sallaku, contactable en gentsallaku@gmail.com. Al no estar este sitio vinculado a una actividad empresarial registrada, no se indican datos fiscales ni domicilio social.",
    "s2_title": "Datos recogidos a través del formulario de contacto",
    "s2_body": "Si utilizas el formulario \"Contacto\", recopilamos tu nombre, dirección de correo electrónico, asunto y el texto del mensaje. Estos datos se tratan exclusivamente para responder a tu solicitud y no se utilizan con fines de marketing sin tu consentimiento explícito. El envío del formulario está protegido por Cloudflare Turnstile, un servicio antispam que analiza automáticamente la interacción con la página.",
    "s3_title": "Chatbot y asistente de inteligencia artificial",
    "s3_body": "Los mensajes que envías al chatbot del sitio son procesados por un modelo de inteligencia artificial proporcionado por Google (API Gemini) con el único fin de generar una respuesta pertinente. El texto del mensaje se transmite por tanto a los servidores de Google, que actúa como encargado del tratamiento para esta finalidad específica. Te recomendamos no compartir en el chat datos sensibles o innecesarios.",
    "s4_title": "Chat en vivo con el operador",
    "s4_body": "Si solicitas una conversación en vivo, tu dirección de correo electrónico (si la proporcionas) y los mensajes intercambiados se guardan en nuestra base de datos para permitir la continuación de la conversación y con fines de soporte. Estos datos no se ceden a terceros.",
    "s5_title": "Cookies y tecnologías similares",
    "s5_body": "El sitio utiliza cookies técnicas necesarias para su funcionamiento y, previo consentimiento, cookies de analítica. Para el listado completo de las cookies utilizadas, su finalidad y duración, consulta nuestra Cookie Policy.",
    "s6_title": "Google Analytics",
    "s6_body": "Si consientes la categoría \"analítica\" en el banner de cookies, el sitio carga Google Analytics 4 para recopilar estadísticas agregadas y anónimas de navegación (páginas visitadas, origen del tráfico, dispositivo). Este servicio es proporcionado por Google Ireland Limited/Google LLC y los datos pueden transferirse a servidores en Estados Unidos, dentro de las garantías previstas por las cláusulas contractuales tipo de la Comisión Europea. Puedes revocar el consentimiento en cualquier momento.",
    "s7_title": "Herramientas \"Lab\" (PDF, traducción, OCR y otras herramientas basadas en IA)",
    "s7_body": "Las herramientas disponibles en la sección \"Lab\" procesan los archivos que subes (PDF, imágenes, texto) exclusivamente para proporcionarte el resultado solicitado (p. ej. resumen, traducción, conversión). Los archivos se procesan en nuestros servidores y/o se envían a proveedores de IA de terceros (Google Gemini) para su procesamiento, y no se conservan más allá del tiempo necesario para completar la operación, salvo que decidas guardarlos voluntariamente en un área personal del sitio.",
    "s8_title": "Destinatarios y transferencia de datos",
    "s8_body": "Los datos recopilados pueden ser tratados por los siguientes proveedores externos, en calidad de encargados del tratamiento: Railway (alojamiento de backend y base de datos, infraestructura en la nube), Google LLC (Gemini AI, Analytics, envío de correo mediante Gmail SMTP), Cloudflare Inc. (protección antispam Turnstile). Algunos de estos proveedores pueden tratar datos fuera del Espacio Económico Europeo; en tal caso, la transferencia se basa en cláusulas contractuales tipo u otras garantías adecuadas previstas por la normativa.",
    "s9_title": "Plazo de conservación",
    "s9_body": "Los datos del formulario de contacto y de las conversaciones en chat en vivo se conservan durante el tiempo necesario para gestionar tu solicitud y, en cualquier caso, no más de 24 meses, salvo que la ley exija un plazo distinto. Las preferencias de cookies se conservan hasta que el usuario las revoque.",
    "s10_title": "Tus derechos",
    "s10_body": "Como interesado, tienes derecho de acceso, rectificación, supresión, limitación del tratamiento, portabilidad y oposición, conforme a los artículos 15-22 del Reglamento (UE) 2016/679 (RGPD). Puedes ejercer estos derechos escribiendo a gentsallaku@gmail.com. También tienes derecho a presentar una reclamación ante la autoridad de protección de datos competente.",
    "s11_title": "Seguridad de los datos",
    "s11_body": "Adoptamos medidas técnicas y organizativas adecuadas (conexiones cifradas HTTPS, autenticación, acceso restringido a los datos) para proteger tus datos frente a accesos no autorizados, pérdida o divulgación.",
    "s12_title": "Cambios en esta información",
    "s12_body": "Esta información puede actualizarse con el tiempo para reflejar cambios normativos o del sitio. La fecha de la última actualización se indica en la parte superior de la página."
  },
  "cookie_policy": {
    "title": "Política de Cookies",
    "meta_description": "Lista de las cookies utilizadas por gentsallaku.it, su finalidad y cómo gestionar tus preferencias.",
    "updated_label": "Última actualización",
    "updated_date": "23/08/2026",
    "intro": "Esta página describe las cookies y tecnologías similares utilizadas por gentsallaku.it, de conformidad con el Reglamento (UE) 2016/679 (RGPD) y las directrices aplicables sobre cookies.",
    "what_title": "Qué son las cookies",
    "what_body": "Las cookies son pequeños archivos de texto que los sitios visitados envían a tu dispositivo, donde se almacenan para ser reenviados a esos mismos sitios en tu próxima visita.",
    "categories_title": "Categorías de cookies utilizadas",
    "necessary_title": "Cookies necesarias",
    "necessary_body": "Esenciales para el funcionamiento del sitio (p. ej. memorizar el idioma elegido, el estado de la barra lateral, la sesión de autenticación en el área reservada y tu elección de consentimiento de cookies). No requieren consentimiento y no se pueden desactivar.",
    "analytics_title": "Cookies de analítica",
    "analytics_body": "Utilizadas, solo previo consentimiento, por Google Analytics 4 (_ga, _ga_*) para recopilar estadísticas agregadas y anónimas de navegación. Duración: hasta 13 meses. Se cargan solo después de que aceptes esta categoría en el banner.",
    "marketing_title": "Cookies de marketing",
    "marketing_body": "Actualmente no utilizamos cookies de marketing/publicidad: Google Tag Manager y Google AdSense están presentes en el código pero desactivados. Si se activaran en el futuro, se solicitará un nuevo consentimiento específico.",
    "preferences_title": "Cookies de preferencias",
    "preferences_body": "Utilizadas para recordar algunas de tus preferencias de visualización (p. ej. tema claro/oscuro), previo consentimiento.",
    "third_party_title": "Servicios de terceros",
    "third_party_body": "Cloudflare Turnstile se carga en los formularios del sitio para prevenir spam automatizado y se considera técnicamente necesario para la seguridad del servicio; Cloudflare puede establecer sus propias cookies técnicas según su política.",
    "manage_title": "Cómo gestionar tus preferencias",
    "manage_body": "Puedes cambiar o revocar tu consentimiento en cualquier momento a través del enlace \"Gestionar consentimiento de cookies\" en el pie de página del sitio, o eliminando las cookies desde tu navegador.",
    "browser_title": "Configuración del navegador",
    "browser_body": "También puedes gestionar o eliminar las cookies directamente desde la configuración de tu navegador (Chrome, Firefox, Safari, Edge)."
  },
  "saved_results": {
    "save_cta": "Guardar en tu cuenta",
    "save_cta_short": "Guardar",
    "saving_cta": "Guardando...",
    "saved_cta": "Guardado ✓",
    "save_sub": "Encuéntralo luego en \"Mis archivos\"",
    "save_error": "No se pudo guardar. Inténtalo de nuevo.",
    "login_prompt_title": "Inicia sesión para guardar tus resultados",
    "login_prompt_body": "Crea una cuenta gratuita para encontrar tus archivos generados cuando quieras.",
    "page_title": "Mis archivos",
    "page_subtitle": "Resultados que has guardado de las herramientas de IA",
    "empty_title": "Aún no hay archivos guardados",
    "empty_body": "Los resultados que guardes desde las herramientas de IA aparecerán aquí.",
    "login_required_title": "Inicia sesión para ver tus archivos",
    "login_required_body": "Los archivos que guardas quedan vinculados a tu cuenta.",
    "login_button": "Iniciar sesión",
    "open": "Abrir",
    "delete": "Eliminar",
    "confirm_delete": "¿Eliminar este archivo guardado?",
    "seo_title": "Mis Archivos — Resultados Guardados de las Herramientas de IA",
    "seo_description": "Encuentra los archivos y resultados que has guardado de las herramientas de IA de gentsallaku.it."
  },
  "account_modal": {
    "badge_admin": "Admin",
    "status_label": "Estado",
    "status_active": "Sesión activa",
    "role_label": "Rol",
    "role_admin": "Administrador",
    "role_user": "Usuario"
  },
  "ai_assistant": {
    "clear_chat": "Borrar conversación",
    "messages_log": "Mensajes",
    "suggested_prompts": "Preguntas sugeridas",
    "copy": "Copiar",
    "copied": "¡Copiado!",
    "copy_message": "Copiar mensaje",
    "typing": "La IA está escribiendo",
    "message_input": "Campo de mensaje",
    "send_message": "Enviar mensaje"
  },
  "request": {
    "uploading": "Subiendo el archivo…",
    "processing": "Procesando…",
    "cancel": "Cancelar",
    "retry": "Reintentar",
    "cancelled": "Operación cancelada."
  },
  "project_detail": {
    "not_found": "Proyecto no encontrado",
    "load_error": "No se pudo cargar el proyecto.",
    "back": "Todos los proyectos",
    "stack": "Tecnologías utilizadas",
    "live": "Ver en línea",
    "repo": "Código fuente",
    "problem": "El problema",
    "solution": "La solución",
    "results": "Los resultados",
    "related_title": "Otros casos de estudio"
  },
  "translations_editor": {
    "title": "Traducciones",
    "hint": "Los campos vacíos muestran el texto italiano en el sitio.",
    "auto": "Traducir los campos vacíos del italiano",
    "translating": "Traduciendo…",
    "error": "La traducción automática falló: reinténtalo o rellénalo a mano."
  },
  "contacts_inbox": {
    "title": "Mensajes de contacto",
    "total": "{{count}} mensajes",
    "search_placeholder": "Buscar por nombre, email, asunto o texto…",
    "filter_label": "Filtrar mensajes",
    "filter_all": "Todos",
    "load_error": "No se pudieron cargar los mensajes.",
    "empty": "No se han recibido mensajes.",
    "empty_filtered": "Ningún mensaje coincide con los filtros.",
    "select_all": "Seleccionar todos en la página",
    "select": "Seleccionar",
    "pagination": "Paginación",
    "replied_at": "Respondido el {{date}}",
    "action_error": "La operación falló, inténtalo de nuevo.",
    "filter_status": "Estado",
    "filter_followups": "Seguimientos pendientes",
    "lead_box": "Gestión del lead",
    "status_label": "Estado",
    "followup_label": "Recordármelo el",
    "note_label": "Nota interna",
    "note_placeholder": "Solo para ti: presupuesto, próximos pasos…",
    "save_lead": "Guardar",
    "lead_saved": "Lead actualizado."
  },
  "users_manage": {
    "title": "Usuarios registrados",
    "total": "{{count}} usuarios",
    "search_placeholder": "Buscar por nombre, email o teléfono…",
    "role_filter": "Filtrar por rol",
    "all_roles": "Todos los roles",
    "load_error": "No se pudieron cargar los usuarios.",
    "empty": "No se encontraron usuarios.",
    "col_name": "Nombre",
    "col_contact": "Email / teléfono",
    "col_role": "Rol",
    "col_created": "Registrado el",
    "col_actions": "Acciones",
    "you": "tú",
    "verified": "Email verificado",
    "confirm_role": "¿Cambiar el rol de {{name}} a \"{{role}}\"?",
    "confirm_delete": "¿Eliminar definitivamente al usuario {{name}}?",
    "action_error": "La operación falló.",
    "new": "Nuevo usuario",
    "edit_title": "Editar usuario",
    "phone": "Teléfono (opcional)",
    "password_optional": "Contraseña (opcional)",
    "password_hint": "Al menos 8 caracteres con mayúscula, minúscula, número y símbolo. Sin contraseña el usuario accede con un código por email.",
    "save": "Guardar",
    "created": "Usuario creado.",
    "updated": "Usuario actualizado.",
    "password_title": "Nueva contraseña para {{name}}",
    "password_effect": "El usuario se desconectará de todos los dispositivos.",
    "new_password": "Nueva contraseña",
    "set_password": "Establecer contraseña",
    "password_short": "Contraseña",
    "password_set": "Contraseña de {{name}} actualizada.",
    "revoke": "Desconectar",
    "confirm_revoke": "¿Desconectar a {{name}} de todos los dispositivos?",
    "sessions_revoked": "{{name}} ha sido desconectado.",
    "err_name": "El nombre es obligatorio.",
    "err_email": "Introduce un email válido.",
    "err_phone": "Teléfono en formato internacional, p. ej. +393331234567.",
    "err_password": "La contraseña no cumple los requisitos."
  },
  "notifications": {
    "label": "Notificaciones",
    "recent": "Eventos recientes",
    "empty": "Nada pendiente.",
    "offline": "Actualizaciones en tiempo real no disponibles: los recuentos se actualizan al abrir.",
    "live_waiting": "Chats en vivo en espera",
    "contacts_unread": "Mensajes sin leer",
    "testimonials_pending": "Testimonios por moderar",
    "notes_pending": "Notas por moderar",
    "type_contact": "Nuevo mensaje",
    "type_testimonial": "Nuevo testimonio",
    "type_note": "Nueva nota",
    "type_live_handoff": "Chat en vivo solicitado",
    "followups_due": "Seguimientos pendientes"
  },
  "newsletter_campaigns": {
    "title": "Campañas",
    "new": "Nueva campaña",
    "subject": "Asunto",
    "body": "Contenido (HTML)",
    "body_placeholder": "<h1>Título</h1><p>Texto…</p>",
    "body_hint": "Los scripts y formularios se eliminan. El enlace de baja se añade automáticamente.",
    "preview": "Vista previa",
    "save_draft": "Guardar borrador",
    "saved": "Borrador guardado.",
    "err_incomplete": "Se requieren un asunto (mín. 3 caracteres) y un contenido (mín. 10).",
    "err_schedule_past": "Elige una fecha futura para programar.",
    "send_test": "Enviar prueba",
    "test_email": "Email de prueba",
    "test_sent": "Prueba enviada a {{email}}.",
    "test_failed": "El envío de prueba falló: revisa la configuración de email.",
    "test_done": "prueba enviada",
    "send_now": "Enviar ahora",
    "schedule": "Programar",
    "schedule_at": "Fecha y hora de envío",
    "confirm_send": "¿Enviar ahora \"{{subject}}\" a todos los suscriptores confirmados?",
    "confirm_schedule": "¿Programar \"{{subject}}\" para todos los suscriptores confirmados?",
    "confirm_cancel": "¿Cancelar la campaña \"{{subject}}\"? Los emails ya enviados no se pueden retirar.",
    "confirm_delete": "¿Eliminar el borrador \"{{subject}}\"?",
    "queued": "Campaña en cola para {{count}} suscriptores.",
    "cancelled": "Campaña cancelada.",
    "cancel": "Cancelar envío",
    "load_error": "No se pudieron cargar las campañas.",
    "empty": "Aún no hay campañas. Crea una para escribir a los suscriptores.",
    "action_error": "La operación falló.",
    "progress": "Progreso del envío",
    "stats": "{{sent}} enviados, {{failed}} fallidos de {{total}}",
    "scheduled_for": "Programada para el {{date}}",
    "sent_at": "Enviada el {{date}}",
    "status_draft": "Borrador",
    "status_scheduled": "Programada",
    "status_sending": "Enviando",
    "status_sent": "Enviada",
    "status_cancelled": "Cancelada"
  },
  "palette": {
    "placeholder": "Buscar páginas, artículos, acciones…",
    "section_actions": "Acciones",
    "section_pages": "Páginas",
    "section_content": "Contenido",
    "section_admin": "Panel",
    "action_theme": "Cambiar tema claro/oscuro",
    "action_contact": "Escríbeme",
    "action_lab": "Abrir el Lab (herramientas IA y PDF)",
    "action_new_post": "Nuevo artículo",
    "action_new_project": "Nuevo proyecto",
    "action_inbox": "Abrir mensajes de contacto",
    "action_logout": "Cerrar sesión",
    "footer_hint": "↑↓ para elegir · Intro para abrir · Ctrl+K o / para abrir",
    "action_copy_link": "Copiar el enlace de esta página",
    "action_install": "Instalar el sitio como app",
    "action_language": "Idioma: {{lang}}",
    "action_language_detail": "Cambiar idioma · language",
    "link_copied": "Enlace copiado",
    "copy_failed": "No se pudo copiar"
  },
  "theme": {
    "name_light": "tema claro",
    "name_dark": "tema oscuro",
    "name_system": "tema del sistema",
    "current_light": "Tema claro activo. Cambiar a {{next}}",
    "current_dark": "Tema oscuro activo. Cambiar a {{next}}",
    "current_system": "Tema del sistema activo. Cambiar a {{next}}"
  },
  "onboarding": {
    "progress": "{{current}} de {{total}}",
    "next": "Siguiente",
    "back": "Atrás",
    "skip": "Saltar tutorial",
    "done": "Terminar",
    "steps": {
      "welcome": {
        "title": "¡Bienvenido!",
        "body": "En pocos pasos te muestro cómo moverte por el sitio: menú, contenidos y asistente. Puedes saltar la guía en cualquier momento."
      },
      "navigation": {
        "title": "Navegación",
        "body": "Desde este menú llegas a las secciones del sitio y a todas las herramientas gratuitas del Lab."
      },
      "group_ai": {
        "title": "Herramientas de IA",
        "body": "Búsqueda de PDF, Biblioteca, Resumen, Formateador, Traducción y Generador de diapositivas: la inteligencia artificial trabaja con tus documentos."
      },
      "group_workspace": {
        "title": "Workspace",
        "body": "Pasa el resultado de una herramienta directamente a la siguiente, sin descargar y volver a subir archivos."
      },
      "group_account": {
        "title": "Mis archivos",
        "body": "Aquí encuentras los resultados que guardaste desde las herramientas, vinculados a tu cuenta."
      },
      "group_tools": {
        "title": "Herramientas PDF y documentos",
        "body": "Organiza y visualiza PDF, escribe en el editor, convierte formatos, extrae texto con OCR y escanea documentos con la cámara."
      },
      "main": {
        "title": "Contenido principal",
        "body": "En el centro ves el contenido de la página en la que estás: proyectos, servicios y artículos en la home; el área de trabajo de la herramienta elegida en el Lab."
      },
      "chatbot": {
        "title": "Asistente virtual",
        "body": "¿Tienes una pregunta? Toca aquí para chatear con el asistente sobre servicios, proyectos y herramientas. Si lo necesitas, puedes pedir hablar directamente con Gent."
      },
      "finish": {
        "title": "¡Todo listo!",
        "body": "Puedes volver a ver esta guía cuando quieras desde el enlace «Guía» al pie de la página."
      }
    }
  },
  "offline": {
    "banner": "Estás sin conexión. Los artículos que ya leíste siguen disponibles.",
    "see_articles": "Ver artículos",
    "back_online": "Conexión restablecida",
    "tool_needs_connection": "Esta herramienta procesa los archivos en el servidor, por lo que necesita conexión. Inténtalo de nuevo cuando vuelvas a estar en línea.",
    "list_unavailable": "Estás sin conexión: la lista de artículos no está disponible",
    "load_error": "No se pudieron cargar los artículos",
    "recent_title": "Ya leíste estos y puedes abrirlos sin conexión:",
    "no_recent": "Los artículos que abres se guardan para leerlos sin conexión.",
    "retry": "Reintentar"
  },
  "install": {
    "title": "Instala el Lab como app",
    "text": "Abre las herramientas de PDF e IA con un toque, a pantalla completa y sin conexión en las páginas ya visitadas.",
    "ios_text_before": "Toca",
    "ios_share": "Compartir",
    "ios_text_after": "y luego «Añadir a pantalla de inicio».",
    "cta": "Instalar",
    "later": "Ahora no"
  },
  "lab_next": {
    "ready": "«{{name}}» está listo.",
    "continue_with": "Continúa con:",
    "close": "Cerrar sugerencias",
    "resume_title": "Continúa donde lo dejaste",
    "pending": "Tienes «{{name}}» listo en el workspace. Ábrelo en:"
  },
  "lab_drop": {
    "hint": "Arrastra un archivo a cualquier parte de la página y te sugiero las herramientas adecuadas. Se queda en tu navegador.",
    "pick": "Elegir archivo",
    "release": "Suelta el archivo para ver qué puedes hacer con él",
    "only_first": "Solo se usa el primer archivo ({{count}} ignorados)."
  },
  "feature_flags": {
    "title": "Funciones del sitio",
    "desc": "Activa y desactiva partes del sitio sin deploy",
    "maintenanceMode": "Modo mantenimiento",
    "maintenanceMode_desc": "Los visitantes ven un aviso a pantalla completa; tú sigues viendo el sitio.",
    "aiEnabled": "Herramientas de IA",
    "aiEnabled_desc": "Las herramientas de IA del Lab. Desactivadas, el chatbot responde con los mensajes predefinidos.",
    "chatbotEnabled": "Chatbot",
    "chatbotEnabled_desc": "La burbuja del chat abajo a la derecha.",
    "liveHandoffEnabled": "Chat en vivo",
    "liveHandoffEnabled_desc": "La propuesta \"¿Quieres hablar con Gent?\" dentro del chatbot.",
    "contactFormEnabled": "Formulario de contacto",
    "contactFormEnabled_desc": "Útil durante una oleada de spam.",
    "newsletterSignupEnabled": "Suscripciones a la newsletter",
    "newsletterSignupEnabled_desc": "El formulario de suscripción al final del blog.",
    "registrationEnabled": "Registro de usuarios",
    "registrationEnabled_desc": "Creación de cuentas nuevas desde la página de registro.",
    "maintenance_message": "Mensaje de mantenimiento",
    "save_message": "Guardar mensaje",
    "save_error": "No se pudo guardar, inténtalo de nuevo."
  },
  "maintenance": {
    "title": "Sitio en mantenimiento",
    "default_message": "Estoy haciendo algunos trabajos en el sitio. ¡Vuelve en un rato!",
    "admin_login": "Acceso de administrador",
    "admin_notice": "Mantenimiento activo: los visitantes ven el aviso"
  },
  "ops_health": {
    "section": "Salud operativa"
  },
  "ai_usage": {
    "title": "Consumo de IA",
    "desc": "Hoy (UTC) y últimos 7 días",
    "switch_on": "Herramientas de IA activas",
    "switch_off": "Herramientas de IA apagadas (interruptor de emergencia)",
    "tokens_today": "Tokens usados hoy",
    "calls_today": "Solicitudes a las herramientas",
    "chatbot_tokens": "Tokens del chatbot",
    "rejected_ip": "Bloqueadas por IP (más de {{cap}} al día)",
    "rejected_budget": "Bloqueadas, presupuesto agotado",
    "capped_ips": "{{n}} IP distintas alcanzaron el límite hoy.",
    "last_7_days": "Tokens, últimos 7 días",
    "by_tool": "Solicitudes por herramienta",
    "no_calls": "Ninguna solicitud hoy."
  },
  "server_errors": {
    "title": "Errores del servidor",
    "desc": "Errores 5xx agrupados, últimos 30 días",
    "open": "Grupos abiertos",
    "today": "Ocurrencias hoy",
    "week": "Últimos 7 días",
    "total": "Ocurrencias totales",
    "last_seen": "Última vez:",
    "today_count": "{{n}} hoy",
    "show_stack": "Mostrar stack",
    "hide_stack": "Ocultar stack",
    "resolve": "Marcar como resuelto",
    "resolve_all": "Marcar todos como resueltos",
    "none": "Ningún error abierto. Un error resuelto vuelve aquí si se repite."
  },
  "server_health": {
    "title": "Servidor y copias de seguridad",
    "desc": "Dumps de MongoDB, recursos del servidor, comprobaciones externas",
    "all_ok": "Todo en orden.",
    "warn_backup_stale": "El último dump de la base de datos tiene más de 26 horas (o falta): revisa el cron de las 03:30.",
    "warn_memory_low": "RAM casi agotada: el servidor no tiene swap, un proceso podría terminarse.",
    "warn_disk_low": "Espacio en disco por debajo del 10%.",
    "warn_offsite_backup_failed": "La última copia externa cifrada (GitHub Actions) ha fallado.",
    "warn_uptime_failed": "La última comprobación externa de uptime ha fallado.",
    "backup_age": "Antigüedad del último dump ({{size}})",
    "backup_none": "No se encontró ningún dump",
    "backup_not_configured": "Falta la carpeta de copias (normal en desarrollo)",
    "ram_free": "RAM disponible de {{total}} MB",
    "disk_free": "Disco libre (usado {{pct}}%)",
    "mongo_ram": "RAM de MongoDB",
    "ram_used": "RAM usada",
    "external": "Comprobaciones externas (GitHub Actions)",
    "offsite_backup": "Copia externa cifrada",
    "running": "en curso",
    "uptime": "Uptime",
    "uptime_checks": "en {{n}} comprobaciones (unas 25 horas)",
    "github_unavailable": "GitHub no está accesible en este momento.",
    "load": "Carga media (1, 5, 15 min)"
  },
  "translation_health": {
    "title": "Traducciones del blog",
    "desc": "Los 6 idiomas comparados con el italiano",
    "missing": "Faltan",
    "stale": "Desactualizadas",
    "structure": "Estructura distinta",
    "legend": "✕ falta · ⟳ traducida antes del último cambio al texto italiano · ≠ bloques (títulos, código, tablas, listas) o longitud distintos del italiano. Pasa el cursor sobre una etiqueta para ver los detalles.",
    "all_ok": "Los {{n}} artículos están traducidos y alineados con el italiano."
  },
  "content_health": {
    "section": "Contenidos"
  },
  "scheduled_posts": {
    "title": "Publicaciones programadas",
    "desc": "Artículos que salen solos a la hora indicada",
    "none": "Ningún artículo programado.",
    "notify": "+ newsletter",
    "new_post": "Programar un artículo"
  },
  "leads": {
    "title": "Leads",
    "desc": "Los mensajes de contacto como oportunidades",
    "status_new": "Nuevo",
    "status_in_progress": "En negociación",
    "status_won": "Cerrado, ganado",
    "status_lost": "Cerrado, perdido",
    "avg_response": "Primera respuesta, de media",
    "avg_response_hint": "Últimos 90 días",
    "no_replies": "Ninguna respuesta en los últimos 90 días",
    "win_rate": "Tasa de cierre ganado",
    "followups_due": "Seguimientos pendientes",
    "followups_none": "Ningún seguimiento pendiente.",
    "overdue": "atrasado",
    "due_today": "hoy",
    "open_followups": "Ver todos los seguimientos"
  },
  "not_found": {
    "title": "Enlaces rotos (404)",
    "desc": "Páginas y artículos inexistentes vistos por los visitantes, últimos 90 días",
    "open": "Rutas por corregir",
    "kind_route": "página",
    "kind_blog": "artículo",
    "kind_project": "proyecto",
    "from": "desde",
    "dismiss": "Ignorar",
    "none": "No hay enlaces rotos registrados."
  },
  "security_panel": {
    "title": "Seguridad y sesiones",
    "desc": "Accesos fallidos, reutilización de tokens y quién está conectado ahora",
    "failed_logins": "Accesos fallidos (24 h)",
    "otp_failed": "Códigos OTP erróneos (24 h)",
    "token_reuse": "Tokens reutilizados (3 d)",
    "active_sessions": "Sesiones activas",
    "suspicious_ips": "IP sospechosas",
    "suspicious_hint": "5 o más intentos fallidos en las últimas 24 horas",
    "reuse_hint": "Se presentó de nuevo un token ya usado: puede indicar el robo de una sesión.",
    "sessions": "Sesiones activas",
    "events": "Últimos eventos",
    "no_sessions": "No hay sesiones activas.",
    "no_events": "No hay eventos registrados.",
    "events_retention": "El historial se borra automáticamente a los {{days}} días.",
    "you": "Tú",
    "started": "iniciada",
    "last_active": "última actividad",
    "close_session": "Cerrar sesión",
    "this_device": "Este dispositivo",
    "close_confirm": "¿Cerrar la sesión de {{name}}? Tendrá que iniciar sesión de nuevo (en 15 minutos).",
    "close_error": "No se pudo cerrar la sesión.",
    "ev_login_success": "Acceso",
    "ev_login_failed": "Acceso fallido",
    "ev_otp_failed": "Código OTP erróneo",
    "ev_refresh_reuse": "Token reutilizado",
    "ev_session_revoked": "Sesión cerrada"
  }
}
