{
  "healthConsent": {
    "title": "Consentimiento para tus datos de salud",
    "body": "Tu recuperación (sueño, energía, estado de ánimo) y las mediciones corporales como el peso se consideran datos de salud. Solo los tratamos con tu consentimiento, para poder seguir tu carga, tu recuperación y tu desarrollo.",
    "point1": "Datos personales especiales (art. 9 RGPD). Solo para ti y los entrenadores con quienes los compartas.",
    "point2": "Los rellenas de forma voluntaria. Puedes dejar de hacerlo en cualquier momento.",
    "point3": "Siempre puedes eliminar tus datos.",
    "accept": "Doy mi consentimiento",
    "once": "Confirmas esto una sola vez. Se aplica a todos tus datos de salud en JudoLytics.",
    "readMore": "Lee nuestra política de privacidad"
  },
  "save": "Guardar",
  "cancel": "Cancelar",
  "delete": "Eliminar",
  "edit": "Editar",
  "back": "Atrás",
  "editedAgo": "Editado {{time}}",
  "lastUpdatedAgo": "Última actualización {{time}}",
  "more": "Más",
  "settings": "Ajustes",
  "signOut": "Cerrar sesión",
  "copy": {
    "button": "Copiar",
    "copied": "Copiado",
    "success": "Copiado al portapapeles",
    "failed": "No se pudo copiar"
  },
  "actions": {
    "save": "Guardar",
    "cancel": "Cancelar",
    "delete": "Eliminar",
    "edit": "Editar",
    "add": "Añadir",
    "close": "Cerrar",
    "confirm": "Confirmar",
    "back": "Atrás",
    "next": "Siguiente",
    "search": "Buscar",
    "filter": "Filtrar",
    "export": "Exportar",
    "import": "Importar",
    "retry": "Reintentar",
    "changeLanguage": "Cambiar idioma",
    "exportCsv": "Exportar CSV",
    "menu": "Acciones",
    "clearSearch": "Borrar búsqueda",
    "undo": "Deshacer"
  },
  "errors": {
    "generic": "Algo ha salido mal",
    "unauthorized": "Sin acceso"
  },
  "error": {
    "title": "Algo ha salido mal",
    "profileLoad": "No se ha podido cargar tu perfil. Inténtalo de nuevo.",
    "retry": "Reintentar"
  },
  "roles": {
    "coach": "Entrenador",
    "judoka": "Judoka",
    "beheerder": "Administrador"
  },
  "status": {
    "loading": "Cargando...",
    "saving": "Guardando...",
    "deleting": "Eliminando...",
    "noResults": "No se han encontrado resultados",
    "error": "Algo ha salido mal",
    "success": "Guardado correctamente",
    "unexpectedError": "Se ha producido un error inesperado",
    "errorRetry": "Se ha producido un error. Inténtalo de nuevo.",
    "noConnection": "Sin conexión a internet. Inténtalo de nuevo cuando vuelvas a estar en línea."
  },
  "nav": {
    "dashboard": "Panel",
    "home": "Inicio",
    "new": "Nuevo",
    "newAnalysis": "Añadir combate",
    "myMatches": "Mis combates",
    "matches": "Combates",
    "import": "Importar",
    "opponents": "Rivales",
    "tournaments": "Torneos",
    "stats": "Estadísticas",
    "training": "Entrenamientos",
    "loadMonitor": "Carga",
    "tracking": "Mediciones",
    "developmentPlan": "Plan de desarrollo",
    "myClubs": "Clubes",
    "referral": "Gana un mes gratis",
    "settings": "Ajustes",
    "settingsProfile": "Perfil",
    "settingsSecurity": "Seguridad",
    "settingsBilling": "Suscripción",
    "settingsNotifications": "Notificaciones",
    "settingsApp": "Preferencias de la app",
    "settingsModules": "Módulos",
    "settingsPrivacy": "Privacidad y compartición",
    "settingsData": "Mis datos",
    "dataIntegrity": "Control de datos",
    "adminCockpit": "Cockpit de administración",
    "usersAndSubs": "Usuarios y suscripciones",
    "tournamentsAdmin": "Gestión de torneos",
    "manageClubs": "Gestionar clubes",
    "feedback": "Comentarios",
    "analytics": "Analíticas de plataforma",
    "emailAdmin": "Gestión de correo",
    "stripeInsights": "Datos de Stripe",
    "helpOffline": "Ayuda — Modo sin conexión",
    "helpMfa": "Ayuda — Verificación en dos pasos",
    "systemHealth": "Estado del sistema",
    "badges": "Insignias",
    "pushNotifications": "Notificaciones push",
    "adminOnboarding": "Gestión de onboarding",
    "freePlan": "Gratis",
    "tierRequired": "Necesitas {{tier}} para {{feature}}",
    "personal": "Personal",
    "personalDesc": "Tu panel personal",
    "clubOverview": "Resumen",
    "clubMembers": "Miembros",
    "clubGroups": "Grupos",
    "clubStats": "Estadísticas",
    "clubPrivacy": "Privacidad",
    "coachCockpit": "Cockpit",
    "coachTeamSessions": "Resumen de entrenamientos",
    "coachPlanner": "Planificador semanal",
    "coachLoad": "Carga",
    "coachTracking": "Mediciones",
    "coachDevelopment": "Desarrollo",
    "clubSettings": "Ajustes",
    "clubSubscription": "Suscripción",
    "sections": {
      "matches": "Combates",
      "training": "Entrenamiento",
      "development": "Desarrollo",
      "insights": "Análisis",
      "more": "Más",
      "admin": "Gestión",
      "coach": "Entrenador",
      "personal": "Personal",
      "general": "General",
      "clubCore": "General",
      "clubs": "Mis clubes",
      "account": "Cuenta"
    },
    "searchPlaceholder": "Buscar en el menú...",
    "searchEmpty": "No se han encontrado páginas",
    "searchClear": "Borrar búsqueda",
    "tabs": {
      "personal": "Personal",
      "clubs": "Clubes",
      "admin": "Gestión"
    },
    "menu": {
      "title": "Menú",
      "a11yDescription": "Navegación a páginas, clubes y ajustes",
      "settings": "Ajustes",
      "notifications": "Notificaciones",
      "logout": "Cerrar sesión",
      "search": "Busca combates, rivales y más…",
      "sections": {
        "today": "Hoy"
      },
      "smartTile": {
        "recovery": "Recuperación",
        "trainingNow": "Entrenamiento · {{time}}",
        "matchTomorrow": "Combate mañana",
        "matchTomorrowSub": "{{name}}",
        "popDue": "Revisión del PDP",
        "reflection": "Reflexión"
      },
      "clubsub": {
        "core": "General",
        "coach": "Entrenador",
        "admin": "Gestión"
      }
    },
    "adminOpponents": "Rivales (administración)",
    "autoOptimization": "Auto-optimización"
  },
  "validation": {
    "required": "Este campo es obligatorio",
    "invalidEmail": "Correo electrónico no válido",
    "tooShort": "Debe tener al menos {{min}} caracteres",
    "tooLong": "No puede superar los {{max}} caracteres"
  },
  "confirm": {
    "deleteTitle": "¿Estás seguro?",
    "deleteMessage": "Esta acción no se puede deshacer.",
    "deleteConfirm": "Sí, eliminar",
    "deleteCancel": "Cancelar"
  },
  "select": {
    "placeholder": "Selecciona...",
    "searchPlaceholder": "Buscar...",
    "selectAll": "Seleccionar todo",
    "selected": "{{count}} seleccionados",
    "country": "Selecciona país...",
    "searchCountry": "Buscar país...",
    "noCountryFound": "No se ha encontrado ningún país.",
    "opponent": "Selecciona rival...",
    "searchOpponent": "Buscar rival...",
    "noOpponentFound": "No se ha encontrado ningún rival",
    "addNew": "Añadir nuevo",
    "addNewOpponent": "Añadir nuevo rival",
    "weightCategory": "Selecciona categoría de peso",
    "countryAIN": "Individual neutral (AIN)",
    "countryEOR": "Equipo de refugiados (EOR)"
  },
  "gender": {
    "male": "Hombre",
    "female": "Mujer",
    "prefer_not_to_say": "Prefiero no decirlo"
  },
  "weightClass": {
    "label": "Categoría de peso",
    "nonStandard": "Categoría no estándar",
    "otherCategories": "Otras categorías",
    "otherGender": "Otro género",
    "kg": "{{weight}} kg"
  },
  "command": {
    "searchPlaceholder": "Busca páginas, combates, rivales...",
    "navigation": "Navegación",
    "actions": "Acciones",
    "addNewMatch": "Añadir nuevo combate",
    "signOut": "Cerrar sesión",
    "admin": "Gestión",
    "adminCockpit": "Cockpit de administración",
    "adminUsers": "Usuarios y suscripciones",
    "adminTournaments": "Gestión de torneos",
    "adminFeedback": "Comentarios",
    "adminClubs": "Gestión de clubes",
    "adminAnalytics": "Analíticas",
    "adminEmail": "Gestión de correo",
    "adminSystemHealth": "Estado del sistema",
    "adminBadges": "Gestión de insignias",
    "searching": "Buscando...",
    "groups": {
      "matches": "Combates",
      "opponents": "Rivales",
      "trainings": "Entrenamientos",
      "goals": "Objetivos",
      "members": "Miembros del club",
      "recent": "Reciente"
    },
    "search": {
      "vs": "vs."
    },
    "removeRecentSearch": "Eliminar búsqueda reciente"
  },
  "withdrawalWaiver": {
    "title": "Acceso inmediato a JudoLytics",
    "description": "Solicitas la entrega inmediata de un servicio digital. Para ello necesitamos tu consentimiento expreso.",
    "checkboxLabel": "Acepto expresamente la entrega inmediata y confirmo que con ello renuncio a mi derecho legal de desistimiento de 14 días. Después podrás cancelar en cualquier momento al final del periodo en curso.",
    "termsLink": "Más información sobre el derecho de desistimiento en nuestros Términos y Condiciones",
    "confirm": "Continuar al pago"
  },
  "paywall": {
    "availableFrom": "Disponible a partir de {{tier}}",
    "upgrade": "Mejorar plan",
    "upgradeTo": "Mejora a {{tier}}",
    "availableIn": "Incluido en {{tier}}.",
    "from": "desde",
    "perMonth": "/mes",
    "changeTo": "Cambia a {{tier}}",
    "subscribeTo": "Suscríbete a {{tier}}",
    "loading": "Cargando...",
    "viewAllPlans": "Ver todos los planes",
    "monthly": "Mensual",
    "yearly": "Anual",
    "discount": "Descuento",
    "mostChosen": "El más elegido",
    "yourPlan": "Tu plan",
    "perYear": "/año facturado",
    "savePerYear": "Ahorra {{amount}} €/año",
    "yearlyBadge": "Más de 2 meses gratis",
    "tryFree": "Prueba {{plan}} gratis",
    "currentPlan": "Plan actual",
    "payAfterTrial": "No pagas hasta que termine tu prueba",
    "lessFeatures": "Menos funciones",
    "moreFeatures": "+ {{count}} funciones más",
    "subscriptionExpired": "Tu suscripción ha caducado. Renuévala para aplicar cambios.",
    "allOfPlanPlus": "Todo lo de {{plan}}, y además:",
    "bestValue": "Mejor relación calidad-precio",
    "compareAll": "Comparar todas las funciones",
    "hideComparison": "Ocultar comparación",
    "includedFeatures": "Funciones incluidas",
    "states": {
      "neverTrialedDescription": "{{days}} días de acceso completo. Sin tarjeta de crédito.",
      "postTrialDescription": "Tus datos se conservan. Elige un plan para continuar.",
      "paidLowerDescription": "Esta función pertenece a {{tier}}. Mejora tu plan cuando quieras."
    },
    "cta": {
      "viewPlans": "Ver planes",
      "comparePlans": "Comparar planes",
      "managePlan": "Gestionar suscripción"
    },
    "featurePreview": {
      "intro": "Lo que obtienes durante tu prueba:"
    },
    "dataSummary": {
      "matches_one": "combate",
      "matches_other": "combates",
      "opponents_one": "rival",
      "opponents_other": "rivales",
      "trainings_one": "entrenamiento",
      "trainings_other": "entrenamientos",
      "retention": "Todo se conserva. Mejora tu plan para volver a usarlo.",
      "matches_many": "combates",
      "opponents_many": "rivales",
      "trainings_many": "entrenamientos"
    }
  },
  "plans": {
    "basis": {
      "description": "Registra tus combates, sigue tu progreso y conoce a tus rivales"
    },
    "pro": {
      "description": "Descubre patrones en tu judo, evita el sobreentrenamiento y crece con foco como judoka"
    },
    "max": {
      "description": "Control total: paneles de entrenador, planes tácticos y, muy pronto, análisis con IA"
    }
  },
  "tierNames": {
    "free": "Gratis",
    "basis": "Starter",
    "pro": "Pro",
    "max": "Elite"
  },
  "featureGroups": {
    "basic": "Básico",
    "analysis": "Análisis y reflexión",
    "clubSocial": "Club y social",
    "advanced": "Avanzado",
    "limits": "Límites",
    "matches": "Combates y rivales",
    "stats": "Estadísticas y análisis",
    "training": "Entrenamiento y carga",
    "development": "Desarrollo y reflexión",
    "tracking": "Mediciones y club"
  },
  "featureNames": {
    "matches_add": "Registra cada combate",
    "matches_view": "Consulta tus resultados y tu progreso",
    "stats_basic": "Mira tu ratio de victorias/derrotas",
    "opponents_simple": "Conoce a tus rivales",
    "reflections": "Construye tu cuaderno personal de aprendizaje",
    "data_integrity": "Mantén tus datos en orden",
    "club_membership": "Entrena junto a tu club",
    "match_plans": "Plan + puntos de aprendizaje por rival",
    "grip_tracking": "Mejora tu kumi-kata",
    "tracking_basic": "Sigue tus mediciones corporales",
    "tracking_full": "Mira las tendencias de tus mediciones",
    "pop_basic": "Define tus objetivos de desarrollo",
    "pop_full": "Vincula objetivos a resultados",
    "pop_coach": "Guía a tus judokas con foco",
    "training_basic": "Registra tus entrenamientos",
    "training_load": "Evita el sobreentrenamiento",
    "training_coach": "Monitoriza a todos tus judokas",
    "stats_advanced": "Descubre patrones en tu judo",
    "stats_explorer": "Analiza todos tus datos a tu manera",
    "coach_cockpit": "Panel de resumen del equipo"
  },
  "featureDescriptions": {
    "matches_add": "Registra cada combate con la proyección, la puntuación y el rival",
    "matches_view": "Consulta tus resultados, porcentajes de victorias y progreso por torneo",
    "stats_basic": "Resumen de tu ratio de victorias/derrotas por torneo y periodo",
    "stats_advanced": "Descubre patrones en tus proyecciones, ne-waza y shidos a lo largo del tiempo",
    "stats_explorer": "Filtra, combina y analiza todos los datos de tus combates exactamente como quieras",
    "opponents_simple": "Anota los puntos fuertes, débiles y el estilo de tus rivales",
    "reflections": "Escribe puntos de aprendizaje tras cada combate y crea un cuaderno personal",
    "data_integrity": "Avisos automáticos cuando faltan datos de combate o son contradictorios",
    "club_membership": "Hazte miembro de un club de judo y comparte datos con tu equipo",
    "match_plans": "Escribe tu planteamiento antes del combate. Anota después tus puntos de aprendizaje. Puedes compartirlo con tu club o tus entrenadores.",
    "grip_tracking": "Registra y analiza tu kumi-kata por combate",
    "tracking_basic": "Lleva un registro de tu peso, altura y otras mediciones",
    "tracking_full": "Sigue las tendencias de tus mediciones con gráficos y comparativas",
    "pop_basic": "Define objetivos de desarrollo y avanza hacia ellos paso a paso",
    "pop_full": "Mira al instante cómo se relacionan tus objetivos con tus resultados de combate",
    "pop_coach": "Consulta el progreso y los objetivos de tus judokas en un único lugar",
    "training_basic": "Registra tus entrenamientos con duración, intensidad y tipo",
    "training_load": "Evita el sobreentrenamiento controlando carga vs. recuperación",
    "training_coach": "Consulta la carga de entrenamiento y el progreso de todos tus judokas",
    "coach_cockpit": "Un único panel con KPIs, alertas y monitorización de todos tus judokas"
  },
  "limitNames": {
    "max_clubs": "Membresías de club",
    "max_matches_per_month": "Máximo de combates al mes",
    "max_matches_total": "Máximo de combates en total",
    "max_opponents": "Máximo de rivales",
    "max_training_logs_per_month": "Máximo de entrenamientos al mes",
    "max_pop_goals": "Máximo de objetivos del PDP"
  },
  "limitValues": {
    "unlimited": "Ilimitado"
  },
  "comingSoon": {
    "badge": "Muy pronto",
    "statsExplorer": "Analiza todos tus datos a tu manera",
    "statsExplorerDescription": "Filtra, combina y analiza todos los datos de tus combates exactamente como quieras",
    "customReports": "Crea tus propios informes",
    "customReportsDescription": "Elige tus datos, periodo y tipo de gráfico, con total libertad para descubrir análisis",
    "aiInsights": "Análisis con IA",
    "aiInsightsDescription": "Deja que la IA descubra patrones que quizá tú no veas"
  },
  "limits": {
    "atLimitTitle": "Límite alcanzado",
    "atLimitDescription": "Has alcanzado el máximo de {{max}} para {{limit}} ({{current}}/{{max}}). Mejora tu suscripción para añadir más.",
    "approachingTitle": "Casi en tu límite",
    "approachingDescription": "Has usado {{current}} de {{max}} para {{limit}}. Aún puedes añadir {{remaining}}."
  },
  "freeLimit": {
    "freeTitle": "Prueba JudoLytics con {{max}} combates gratis",
    "freeDescription": "Introduce hasta {{max}} combates y descubre lo que JudoLytics puede hacer por ti.",
    "matchProgress": "{{current}} de {{max}} combates gratis",
    "matchesRemaining": "Te quedan {{remaining}} combates gratis",
    "limitReached": "Ya has introducido {{max}} combates gratis",
    "limitReachedDescription": "Inicia una prueba para introducir combates sin límite.",
    "addFirstMatch": "Introduce tu primer combate",
    "freeMatches": "{{max}} combates gratis · sin tarjeta de crédito",
    "continueMatches": "O introduce otro combate gratis (te quedan {{remaining}})"
  },
  "loading": "Cargando...",
  "feedback": {
    "toast": {
      "notLoggedIn": "No has iniciado sesión",
      "thankYou": "¡Gracias por tus comentarios!",
      "sendError": "No se han podido enviar los comentarios",
      "submitted": "Revisaremos tu aviso lo antes posible.",
      "tryAgainLater": "Inténtalo de nuevo más tarde."
    },
    "giveFeedback": "Dar tu opinión",
    "types": {
      "bug": "Error",
      "feature": "Idea",
      "other": "Otro"
    },
    "dialog": {
      "whatToReport": "¿Qué quieres comunicar?",
      "describeLabel": "Describe tu comentario",
      "placeholder": "Sé lo más específico posible. ¿Qué esperabas? ¿Qué ocurrió?",
      "minChars": "Mínimo {{min}} caracteres (faltan {{remaining}})",
      "autoInfo": "Enviamos automáticamente tu página, navegador e información de la cuenta",
      "screenshotLabel": "Captura de pantalla (opcional)",
      "dropzoneText": "Arrastra una imagen, pégala (Ctrl+V) o haz clic para subirla",
      "sending": "Enviando...",
      "submit": "Enviar comentarios",
      "helpImprove": "Ayúdanos a mejorar JudoLytics"
    }
  },
  "invitations": {
    "toast": {
      "sent": "Invitación enviada",
      "sendError": "No se ha podido enviar la invitación",
      "joined": "¡Ya eres miembro de {{club}}!",
      "acceptError": "No se ha podido aceptar la invitación",
      "revoked": "Invitación revocada",
      "revokeError": "No se ha podido revocar la invitación",
      "emailFailed": "No se ha enviado el correo",
      "emailFailedDescription": "La invitación se ha creado, pero no se ha podido enviar el correo. Comprueba la configuración de correo."
    },
    "status": {
      "pending": "Pendiente",
      "accepted": "Aceptada",
      "expired": "Caducada",
      "revoked": "Revocada"
    },
    "invalidEmail": "Introduce un correo electrónico válido",
    "emailPlaceholder": "nombre@ejemplo.es",
    "send": "Enviar",
    "sentInvitations": "Invitaciones enviadas",
    "revoke": "Revocar",
    "showMore": "Mostrar {{count}} más"
  },
  "layout": {
    "shortcutsTooltip": "Atajos de teclado (?)",
    "logout": "Cerrar sesión",
    "loggingOut": "Cerrando sesión...",
    "logoHome": "Ir al panel",
    "searchTrigger": {
      "placeholder": "Busca combates, rivales y más…",
      "ariaLabel": "Abrir buscador ({{shortcut}})"
    },
    "roleBadge": {
      "admin": "Administrador",
      "support": "Soporte"
    },
    "planLabel": "Plan {{tier}}",
    "menu": "Menú",
    "userMenu": {
      "trigger": "Menú de cuenta",
      "settings": "Ajustes",
      "language": "Idioma",
      "help": "Ayuda y explicaciones",
      "feedback": "Dar tu opinión",
      "logout": "Cerrar sesión",
      "loggingOut": "Cerrando sesión..."
    },
    "sidebar": {
      "collapse": "Contraer",
      "expand": "Expandir"
    },
    "shortcuts": {
      "label": "Atajos de teclado",
      "toggle": "Mostrar/ocultar atajos de teclado",
      "newMatch": "Nuevo combate",
      "goToDashboard": "Ir al panel",
      "goToMatches": "Ir a Combates",
      "goToStats": "Ir a Estadísticas",
      "goToOpponents": "Ir a Rivales",
      "search": "Buscar (si está disponible)",
      "closeDialog": "Cerrar diálogo",
      "pressToOpen": "Pulsa ? para abrir esta ventana"
    }
  },
  "quickCreate": {
    "trigger": "Añadir rápido",
    "title": "¿Qué quieres añadir?",
    "description": "Elige qué quieres registrar.",
    "match": "Combate",
    "matchDescription": "Analizar un nuevo combate",
    "training": "Entrenamiento",
    "trainingDescription": "Registrar una sesión de entrenamiento",
    "measurement": "Medición",
    "measurementDescription": "Medición corporal o test",
    "recovery": "Recuperación",
    "recoveryDescription": "Rellenar el control de recuperación",
    "coachSection": "Para tu grupo",
    "personalSection": "Para ti"
  },
  "notifications": {
    "toast": {
      "paymentFailed": "Pago fallido",
      "subscriptionCanceling": "La suscripción se está cancelando",
      "clubInvite": "Te han invitado como {{role}} al club {{name}}.",
      "freeAccount": "Cuenta gratuita"
    },
    "trialEnding": "La prueba termina en {{count}} día",
    "trialEnding_other": "La prueba termina en {{count}} días",
    "trialEndingDescription": "Cuando termine tu prueba se procesará tu primer pago.",
    "trialExpired": "Tu prueba ha caducado",
    "trialExpiredDescription": "Elige un plan para conservar las funciones premium.",
    "pastDueDescription": "Actualiza tus datos de pago para mantener el acceso.",
    "cancelPendingDescription": "Tu suscripción termina el {{date}}.",
    "planChangeScheduled": "Cambio de plan programado",
    "planChangeDescription": "Tu plan cambiará a {{plan}} el {{date}}.",
    "clubInviteTitle": "Invitación para {{name}}",
    "freeAccountDescription": "Mejora a un plan de pago para todas las funciones.",
    "title": "Notificaciones",
    "typeWarning": "Advertencia",
    "typeAction": "Acción",
    "typeInfo": "Información",
    "actionsRequired": "{{count}} acción requerida",
    "actionsRequired_other": "{{count}} acciones requeridas",
    "noActions": "No hay acciones pendientes",
    "empty": "No hay notificaciones",
    "emptyTitle": "Estás al día",
    "emptyDescription": "No hay notificaciones nuevas. Te avisaremos si surge algo.",
    "manageSettings": "Ajustes de notificaciones",
    "markAllRead": "Marcar todo como leído",
    "dismiss": "Eliminar",
    "timeJustNow": "Ahora mismo",
    "timeMinutes": "hace {{count}} min",
    "timeHours": "hace {{count}} h",
    "timeDays": "hace {{count}} día",
    "timeDays_other": "hace {{count}} días",
    "groupToday": "Hoy",
    "groupYesterday": "Ayer",
    "groupEarlier": "Antes",
    "orphanedPushHint": "Las notificaciones push están activadas, pero no hay ningún dispositivo conectado. Vuelve a activarlas"
  },
  "referral": {
    "extendedTrial": "Recibes {{days}} días de prueba gratis (normalmente 7 días)",
    "welcomeBanner": "¡{{name}} te ha invitado a JudoLytics!"
  },
  "trial": {
    "startButton": "Empieza tu prueba gratis ({{days}} días)",
    "startTitle": "Prueba JudoLytics Pro gratis",
    "startDescription": "{{days}} días de acceso gratis a todas las funciones Pro. Sin tarjeta de crédito.",
    "skipButton": "Decidir más tarde",
    "noCreditCard": "Sin tarjeta de crédito",
    "startedTitle": "¡Prueba iniciada!",
    "startedDescription": "Tienes {{days}} días de acceso Pro.",
    "errorNotLoggedIn": "Inicia sesión para empezar una prueba.",
    "features": {
      "matches": "Analizar combates",
      "opponents": "Seguir a tus rivales",
      "stats": "Estadísticas y análisis",
      "training": "Seguir tus entrenamientos"
    },
    "freeTitle": "Prueba todas las funciones",
    "freeDescription": "Empieza una prueba gratis y descubre lo que JudoLytics puede hacer por ti.",
    "postTrialTitle": "Tu prueba ha terminado",
    "postTrialDescription": "Tus datos se conservan. Elige un plan para continuar.",
    "upgradeButton": "Ver planes",
    "bannerDays": "A tu prueba aún le queda {{count}} día",
    "bannerDays_other": "A tu prueba aún le quedan {{count}} días",
    "bannerUrgent": "¡Tu prueba caduca en {{hours}} horas!",
    "subscribeNow": "Suscríbete ahora",
    "bannerPayAfter": "Suscríbete ahora, no pagas hasta que termine tu prueba",
    "waitlistBonusTitle": "Bono de lista de espera",
    "waitlistBonusDescription": "¡Has recibido días de prueba extra por haberte apuntado a través de la lista de espera!",
    "notNowExplore": "Ahora no, primero quiero explorar"
  },
  "subscriptionStatus": {
    "noSubscription": "Sin suscripción"
  },
  "not_found": {
    "message": "¡Vaya! Página no encontrada",
    "return_home": "Volver al inicio"
  },
  "errorPages": {
    "notFound": {
      "title": "Página no encontrada",
      "code": "404",
      "subtitle": "La página que buscas no existe o se ha movido.",
      "subtitleDashboard": "Esta página no existe. Comprueba la URL o vuelve atrás.",
      "goHome": "Ir al inicio",
      "goDashboard": "Ir al panel",
      "goBack": "Volver atrás",
      "viewMatches": "Ver combates",
      "viewOpponents": "Ver rivales"
    },
    "serverError": {
      "title": "Algo ha salido mal",
      "code": "500",
      "subtitle": "Se ha producido un error inesperado. Inténtalo de nuevo más tarde.",
      "reportProblem": "Informar de un problema",
      "retry": "Reintentar",
      "reloadPage": "Recargar página"
    },
    "accessDenied": {
      "title": "Sin acceso",
      "code": "403",
      "subtitle": "No tienes acceso a esta página.",
      "requiredRole": "Esta página solo está disponible para {{role}}.",
      "contactAdmin": "Ponte en contacto con el administrador de tu club",
      "upgradePlan": "Mejora tu suscripción",
      "goBack": "Volver atrás",
      "goDashboard": "Ir al panel"
    },
    "roleTimeout": {
      "title": "Conexión lenta",
      "subtitle": "No se ha podido verificar tu rol por una conexión lenta o ausente. Inténtalo de nuevo.",
      "retry": "Reintentar"
    },
    "maintenance": {
      "title": "Estamos haciendo una actualización",
      "subtitle": "JudoLytics no está disponible temporalmente por mantenimiento programado. Volveremos a estar en línea lo antes posible.",
      "estimatedReturn": "Vuelta estimada: {{time}}",
      "statusPage": "Ver página de estado",
      "contactUs": "Ponte en contacto"
    }
  },
  "externalLinks": {
    "viewMatchOnJudoTV": "Ver este combate en JudoTV",
    "viewVideosOnJudoTV": "Ver vídeos en JudoTV",
    "viewMatchDataOnJudobase": "Ver datos del combate en Judobase",
    "viewCompetitionOnIJF": "Ver competición en IJF.org",
    "opponentLabel": "Rival",
    "viewOpponentOnIJF": "Ver rival en IJF.org",
    "viewCompetitionOnJM": "Ver competición en JudoManager",
    "viewProfileOnJudobase": "Ver perfil en Judobase",
    "ijfProfileLabel": "Perfil IJF",
    "viewProfileOnIJF": "Ver perfil en IJF.org",
    "viewProfileOnJM": "Ver perfil en JudoManager",
    "viewAltProfileOnJM": "Ver perfil alternativo en JudoManager"
  },
  "offlineBanner": {
    "title": {
      "offline": "Estás sin conexión",
      "slow": "Conexión lenta"
    },
    "lastSynced": "Última sincronización {{relativeTime}}",
    "noCache": "No hay datos locales. Conéctate a internet para cargar.",
    "helpLink": "¿Qué significa esto?",
    "dataAge": {
      "updatedAt": "Datos actualizados por última vez a las {{time}}"
    }
  },
  "offline": {
    "prepare": {
      "button": "Preparado para usar sin conexión",
      "preparing": "Preparando...",
      "done": "Listo — {{n}} elementos guardados localmente",
      "partial": "Listo — {{n}} de {{total}} correctos",
      "skippedSlowConnection": "Omitido — conexión demasiado lenta para la precarga",
      "error": "La preparación ha fallado. Inténtalo de nuevo con una conexión mejor."
    },
    "storage": {
      "nearlyFull": "El almacenamiento local está casi lleno ({{usageMB}} / {{quotaMB}} MB). Se está limpiando la caché más antigua."
    },
    "queued": {
      "message": "Se enviará en cuanto vuelvas a tener conexión"
    },
    "permanentFail": {
      "description": "No se ha podido guardar el cambio: {{reason}}",
      "discard": "Eliminar"
    },
    "pending": {
      "badge": "{{count}} esperando conexión",
      "badgeOne": "1 cambio esperando conexión",
      "title": "Cambios sin enviar",
      "empty": "Todos los cambios están sincronizados",
      "retry": "Reintentar",
      "retrying": "Reenviando…",
      "remove": "Quitar de la cola",
      "statusPending": "Esperando conexión",
      "statusSyncing": "Enviando",
      "statusFailed": "Fallido",
      "statusConflict": "Conflicto"
    },
    "reloginRequired": {
      "title": "Sesión caducada",
      "description": "Tienes {{count}} cambios sin enviar. Vuelve a iniciar sesión para conservarlos.",
      "descriptionOne": "Tienes 1 cambio sin enviar. Vuelve a iniciar sesión para conservarlo.",
      "loginButton": "Volver a iniciar sesión",
      "later": "Más tarde"
    },
    "label": {
      "recoveryUpsert": "Control de recuperación {{date}}",
      "measurementInsert": "Medición {{metric}}",
      "measurementDelete": "Eliminar medición",
      "opponentNoteInsert": "Nota sobre el rival",
      "opponentNoteUpdate": "Actualizar nota",
      "opponentInsert": "Rival {{name}}",
      "tournamentInsert": "Torneo {{name}}",
      "matchInsert": "Guardar combate",
      "matchUpdate": "Actualizar combate",
      "matchDelete": "Eliminar combate",
      "matchFields": "Actualizar campos del combate",
      "matchPlanInsert": "Guardar plan de combate",
      "matchPlanUpdate": "Actualizar plan de combate",
      "matchPlanDelete": "Eliminar plan de combate",
      "matchReflectionUpsert": "Guardar reflexión del combate",
      "reflectionInsert": "Guardar reflexión",
      "reflectionUpdate": "Actualizar reflexión",
      "measurementSessionInsert": "Guardar sesión de mediciones",
      "measurementSessionUpdate": "Actualizar sesión de mediciones",
      "measurementSessionDelete": "Eliminar sesión de mediciones",
      "trainingSessionInsert": "Guardar entrenamiento",
      "trainingSessionUpdate": "Actualizar entrenamiento",
      "trainingSessionDelete": "Eliminar entrenamiento",
      "trainingSeriesDelete": "Eliminar serie de entrenamientos",
      "trainingSeriesTruncate": "Acortar serie de entrenamientos",
      "popIndicatorUpdate": "Actualizar indicador del PDP",
      "scoreInsert": "Añadir puntuación",
      "scoreDelete": "Eliminar puntuación"
    },
    "swUpdate": {
      "title": "Actualización de la app disponible",
      "description": "Tienes {{count}} cambios sin sincronizar. Toca para actualizar en cuanto se sincronicen.",
      "applyNow": "Actualizar ahora"
    },
    "help": {
      "title": "Trabajar sin conexión en JudoLytics",
      "intro": "JudoLytics también funciona sin internet. Práctico en dojos y pabellones de torneos donde el wifi suele ser malo. A continuación te explicamos cómo reconocer si estás sin conexión, qué funciona y cómo gestionar tus datos.",
      "statusIcons": {
        "heading": "¿Qué significan los iconos de estado?",
        "online": {
          "title": "En línea — todo se guarda al instante",
          "body": "No se ve ninguna banda. Los cambios van directos al servidor."
        },
        "offline": {
          "title": "Sin conexión — tus cambios esperan en una cola local",
          "body": "Aparece una banda amarilla en la parte superior. Puedes seguir introduciendo combates, registrando entrenamientos y añadiendo mediciones. Todo se envía automáticamente en cuanto vuelve la conexión."
        },
        "pending": {
          "title": "Cambios sin enviar",
          "body": "Una insignia en la cabecera muestra cuántos cambios esperan. Tócala para ver la lista y la opción de sincronizar manualmente."
        },
        "stale": {
          "title": "Cambios de más de 3-5 días",
          "body": "Aparece una advertencia roja si llevas más tiempo sin conexión del que permite iOS (3 días) o de nuestro margen de seguridad (5 días). Sincroniza lo antes posible para evitar perder datos."
        }
      },
      "worksOffline": {
        "heading": "¿Qué funciona sin conexión?",
        "items": [
          "Introducir combates con el asistente de combate (los 5 pasos)",
          "Registrar y editar entrenamientos",
          "Añadir o eliminar mediciones",
          "Rellenar el control de recuperación",
          "Crear rivales y añadir notas",
          "Escribir y editar planes de combate",
          "Actualizar indicadores del PDP y guardar reflexiones",
          "Consultar datos sincronizados anteriormente (listas, estadísticas, perfil)"
        ],
        "note": "No funciona sin conexión: pagos, invitaciones de club, ajustes de notificaciones push y otras acciones que deben comunicarse directamente con el servidor."
      },
      "faq": {
        "heading": "Preguntas frecuentes",
        "q1": {
          "question": "¿Cómo sé si mi entrenamiento se ha guardado?",
          "answer": "Un aviso verde confirma que el cambio se ha sincronizado. Sin conexión verás en su lugar un aviso de 'Se enviará en cuanto vuelvas a tener conexión' y el cambio aparecerá en la insignia de pendientes de la cabecera. En cuanto vuelve la conexión, JudoLytics sincroniza automáticamente y la insignia desaparece."
        },
        "q2": {
          "question": "¿Qué pasa si apago el teléfono mientras hay cambios esperando?",
          "answer": "Tus cambios quedan guardados de forma segura en el almacenamiento local de tu dispositivo. Cuando vuelvas a abrir JudoLytics, la app reanuda la sincronización en cuanto tengas internet. En iOS recomendamos no usar la PWA más de 3 días sin conexión. Safari puede borrar el almacenamiento por su cuenta."
        },
        "q3": {
          "question": "¿Y si por error cierro la PWA durante un torneo?",
          "answer": "Tranquilo. Tu último borrador del asistente de combate se conserva: si vuelves a abrir el asistente, volverás automáticamente al paso en el que estabas. Los combates ya introducidos que aún esperan sincronización también se conservan."
        },
        "q4": {
          "question": "Mi entrenador no ve mis cambios. ¿Qué hago?",
          "answer": "Mira la insignia de pendientes en tu cabecera. Si hay un número, tus cambios aún esperan conexión. Toca el icono del rayo para sincronizar manualmente. Si no funciona, comprueba que estés realmente en línea (¿ha desaparecido la banda?) y, si hace falta, cierra sesión y vuelve a entrar."
        },
        "q5": {
          "question": "¿Cuánto espacio usa JudoLytics en mi dispositivo?",
          "answer": "La PWA almacena en caché unos 7-10 MB para la app en sí, más tus propios datos. En iOS el máximo es de 50 MB para PWA. JudoLytics avisa automáticamente cuando el almacenamiento está casi lleno y limpia la caché más antigua."
        },
        "q6": {
          "question": "Una página se queda en blanco o muestra un indicador de carga mientras estoy sin conexión. ¿Por qué?",
          "answer": "Sin conexión solo podemos mostrar páginas que hayas abierto antes en línea. En una instalación nueva o en una página que nunca hayas visitado sin red, se quedará en blanco hasta que vuelva la conexión. Consejo: antes de un torneo o entrenamiento, abre todas las páginas que creas que vas a necesitar (combates, mediciones, rivales). Así seguirán disponibles en el pabellón."
        }
      },
      "clearData": {
        "heading": "Borrar datos locales",
        "body": "¿Quieres ceder tu dispositivo o empezar de cero? Borra entonces tu caché local sin conexión. Si aún tienes cambios sin sincronizar, te avisaremos antes de que desaparezcan.",
        "cta": "Abrir ajustes de privacidad"
      }
    },
    "stale": {
      "title": "Cambios sin sincronizar",
      "description": "Tienes {{count}} cambios con {{oldestAgeDays}} días de antigüedad. Conéctate a internet para conservarlos, o podrían perderse.",
      "syncNow": "Sincronizar ahora"
    },
    "clearData": {
      "trigger": "Borrar datos guardados localmente",
      "title": "¿Borrar datos locales?",
      "description": "Esto elimina la caché sin conexión y todas las páginas que se veían sin conexión.",
      "warningPending": "Tienes {{count}} cambios sin sincronizar que se perderán con esto. Sincroniza primero si quieres conservarlos.",
      "confirm": "Borrar",
      "cancel": "Cancelar",
      "success": "Datos locales borrados",
      "error": "No se han podido borrar los datos locales. Inténtalo de nuevo."
    },
    "fallback": {
      "title": "No hay datos locales para mostrar",
      "titleForPage": "Todavía no hay {{page}} guardados localmente",
      "bodyOffline": "Esta página no la has abierto antes en línea, así que no hay nada que mostrar sin conexión. Conéctate a internet para cargar el contenido. Una vez cargada, la página seguirá disponible también sin red.",
      "bodyOnline": "Todavía estamos obteniendo tus datos. A veces tarda un poco más con una conexión lenta.",
      "retry": "Reintentar",
      "learnMore": "¿Cómo funciona sin conexión?"
    },
    "audit": {
      "loading": "Cargando el registro de auditoría…",
      "heading": "Correcciones sobrescritas por otros",
      "intro": "Cuando alguien hace un cambio sin conexión en una fila que tú habías modificado entretanto en línea, esa persona puede elegir, mediante el resolutor de conflictos, sobrescribir tu versión. Aquí ves de qué correcciones se trata.",
      "rowDescription": "Fila {{rowId}}",
      "partOfBatch": "(parte de una elección en bloque)",
      "retentionNotice": "Los registros de auditoría se conservan 90 días y después se eliminan automáticamente.",
      "tables": {
        "matches": "Combate",
        "match_plans": "Plan de combate",
        "opponent_notes": "Nota de rival",
        "opponents": "Rival",
        "measurements": "Medición",
        "measurement_sessions": "Sesión de mediciones",
        "training_sessions": "Entrenamiento",
        "goal_check_ins": "Reflexión",
        "goal_indicators": "Indicador del PDP",
        "recovery_checkins": "Control de recuperación"
      }
    },
    "lww": {
      "title": "El cambio se ha revertido",
      "description": "Alguien ya había actualizado {{domain}} en línea. Ahora vuelve a verse la versión en línea.",
      "undo": "Mantener mi versión de todos modos",
      "undoApplied": "Se ha restaurado tu versión",
      "undoFailed": "No se ha podido restaurar. Inténtalo de nuevo.",
      "domain": {
        "recovery": "tu control de recuperación",
        "measurements": "esta medición",
        "measurementSessions": "esta sesión de mediciones",
        "opponentNotes": "esta nota de rival",
        "opponents": "este rival",
        "matches": "este combate",
        "matchPlans": "este plan de combate",
        "reflections": "esta reflexión",
        "training": "este entrenamiento",
        "pop": "este elemento del PDP"
      }
    },
    "conflict": {
      "title": "El cambio choca con otra actualización",
      "description_one": "Hay {{count}} conflicto por revisar",
      "description_other": "Hay {{count}} conflictos por revisar",
      "description": "Hay {{count}} conflictos por revisar",
      "empty": "Todos los conflictos resueltos",
      "queueProgress": "{{current}} de {{total}}",
      "resolve": "Revisar",
      "serverHeading": "Versión en línea:",
      "localHeading": "Tu versión:",
      "editedBy": "Modificado por {{name}}, hace {{time}}",
      "fields": {
        "local": "Mi cambio sin conexión",
        "server": "Versión en línea actual"
      },
      "fieldNotes": "nota",
      "fieldReflection": "reflexión",
      "matchPlanFields": {
        "strategy_notes": "Estrategia",
        "strengths_to_exploit": "Puntos fuertes",
        "risks_to_avoid": "Riesgos"
      },
      "reflectionFields": {
        "reflection_good": "¿Qué fue bien?",
        "reflection_improve": "¿Qué se puede mejorar?",
        "reflection_actions": "Acciones y aprendizajes"
      },
      "merge": {
        "fieldChooser": "¿Qué versión para {{field}}?"
      },
      "actions": {
        "keepLocal": "Mi versión",
        "keepLocalHint": "Creada hace {{time}} ({{device}})",
        "keepServer": "Versión en línea",
        "keepServerHint": "Modificada por {{name}}, hace {{time}}",
        "merge": "Combinar",
        "saveMerge": "Guardar versión combinada",
        "cancel": "Cancelar",
        "someoneElse": "otra persona"
      },
      "batch": {
        "heading": "{{count}} conflictos en la cola",
        "description": "Resuélvelos todos a la vez o trátalos uno a uno.",
        "keepAllLocal": "Mantener todos mis cambios ({{count}})",
        "keepAllServer": "Mantener todas las versiones en línea ({{count}})"
      },
      "resolveFailed": "No se ha podido guardar tu elección. El elemento queda en la cola como fallido. Inténtalo de nuevo más tarde.",
      "batchPartialFail": "{{resolved}} resueltos, {{failed}} fallidos. Los elementos fallidos quedan en la cola.",
      "resolveRetryLater": "Todavía no se ha podido guardar tu elección (problema de red). El conflicto sigue activo. Inténtalo de nuevo más tarde.",
      "unknownDomain": "Dominio desconocido: {{domain}}",
      "description_many": "Hay {{count}} conflictos por revisar"
    }
  },
  "voiceInput": {
    "startAriaLabel": "Iniciar dictado por voz",
    "stopAriaLabel": "Detener dictado por voz",
    "consentTitle": "¿Usar el dictado por voz?",
    "consentDescription": "Se activará tu micrófono y el audio lo procesará el reconocimiento de voz de tu navegador (Apple/Google). JudoLytics nunca ve el audio en bruto. ¿Continuar?",
    "consentAccept": "Activar",
    "consentCancel": "Cancelar",
    "interimPrefix": "Escuchando…",
    "errors": {
      "permissionDenied": "Acceso al micrófono denegado. Permítelo en los ajustes de tu navegador e inténtalo de nuevo.",
      "noMicrophone": "No se ha encontrado ningún micrófono en este dispositivo.",
      "network": "El reconocimiento de voz requiere conexión a internet.",
      "langUnsupported": "El dictado por voz aún no está disponible en tu idioma.",
      "unsupported": "Tu navegador no admite el dictado por voz. Prueba con Chrome o Safari.",
      "insecureContext": "El dictado por voz solo funciona con una conexión segura (HTTPS).",
      "startFailed": "No se ha podido iniciar el dictado por voz. Inténtalo de nuevo.",
      "generic": "El dictado por voz se ha detenido inesperadamente."
    }
  },
  "errorBoundary": {
    "networkTitle": "Problema de red",
    "networkDescription": "Hay un problema con la conexión de red. Comprueba tu conexión a internet e inténtalo de nuevo.",
    "autoRetried": "Reintentado automáticamente: {{count}}/{{max}}",
    "retry": "Reintentar",
    "updateTitle": "Actualización disponible",
    "updateDescription": "Hay una nueva versión de la aplicación disponible. Recarga la página para usar la última versión.",
    "reloadPage": "Recargar página",
    "generalTitle": "Algo ha salido mal",
    "generalDescription": "Se ha producido un error inesperado. Intenta recargar la página o ponte en contacto con soporte si el problema continúa.",
    "goToDashboard": "Ir al panel",
    "showDetails": "Mostrar detalles técnicos"
  },
  "videoPlayer": {
    "ijfLocked": "Vídeo de IJF (suscripción requerida)",
    "externalVideo": "Vídeo externo",
    "open": "Abrir"
  },
  "badges": {
    "title": "Insignias",
    "newBadgeEarned": "¡Nueva insignia conseguida!",
    "newBadgeEarned_one": "¡{{count}} nueva insignia conseguida!",
    "newBadgeEarned_other": "¡{{count}} insignias nuevas conseguidas!",
    "names": {
      "first_match": "Primer combate",
      "profile_complete": "Perfil completo",
      "first_club_join": "Miembro de club",
      "match_10": "10 combates",
      "match_50": "50 combates",
      "match_100": "100 combates",
      "match_250": "250 combates",
      "streak_7": "Racha de 7 días",
      "streak_30": "Racha de 30 días",
      "streak_100": "Racha de 100 días",
      "recovery_streak_7": "Racha de recuperación: 7 días",
      "recovery_streak_14": "Racha de recuperación: 14 días",
      "recovery_streak_30": "Racha de recuperación: 30 días",
      "recovery_streak_60": "Racha de recuperación: 60 días",
      "recovery_streak_100": "Racha de recuperación: 100 días",
      "technique_variety": "Maestro de la técnica",
      "opponent_variety": "Judoka versátil",
      "first_reflection": "Primer punto de aprendizaje",
      "reflection_10": "Te conoces bien",
      "team_player": "Jugador de equipo",
      "mentor": "Mentor",
      "growing_club": "Club en crecimiento",
      "thriving_club": "Club floreciente",
      "powerhouse": "Potencia",
      "recruiter": "Reclutador",
      "ambassador": "Embajador"
    },
    "descriptions": {
      "first_match": "Has registrado tu primer combate",
      "profile_complete": "Tu perfil está completo",
      "first_club_join": "Te has hecho miembro de tu primer club",
      "match_10": "10 combates registrados",
      "match_50": "50 combates registrados",
      "match_100": "100 combates registrados",
      "match_250": "250 combates registrados",
      "streak_7": "7 días seguidos registrando",
      "streak_30": "30 días seguidos registrando",
      "streak_100": "100 días seguidos registrando",
      "recovery_streak_7": "7 días seguidos rellenando tu control de recuperación",
      "recovery_streak_14": "14 días seguidos rellenando tu control de recuperación",
      "recovery_streak_30": "30 días seguidos rellenando tu control de recuperación",
      "recovery_streak_60": "60 días seguidos rellenando tu control de recuperación",
      "recovery_streak_100": "100 días seguidos rellenando tu control de recuperación",
      "technique_variety": "Has usado 10 proyecciones diferentes",
      "opponent_variety": "Has combatido contra 20 rivales diferentes",
      "first_reflection": "Has registrado tu primer punto de aprendizaje",
      "reflection_10": "10 puntos de aprendizaje registrados",
      "team_player": "Has contribuido activamente a tu club",
      "mentor": "Has compartido datos con tu equipo",
      "growing_club": "El club tiene más de 10 miembros",
      "thriving_club": "El club tiene más de 25 miembros",
      "powerhouse": "El club tiene más de 50 miembros",
      "recruiter": "5 recomendaciones con éxito",
      "ambassador": "10 recomendaciones con éxito"
    },
    "categories": {
      "onboarding": "Onboarding",
      "activity": "Actividad",
      "streak": "Rachas",
      "diversity": "Diversidad",
      "reflection": "Reflexión",
      "community": "Comunidad",
      "club": "Club",
      "referral": "Recomendaciones"
    },
    "progressLabel": "{{earned}} de {{total}} insignias conseguidas",
    "categoryProgressLabel": "Progreso de la insignia: {{current}} de {{target}}",
    "newBadgeEarned_many": "¡{{count}} insignias nuevas conseguidas!"
  },
  "streaks": {
    "title": "Rachas",
    "types": {
      "match_logging": "Registrar combates",
      "training_logging": "Registrar entrenamientos",
      "reflection": "Escribir puntos de aprendizaje",
      "recovery_checkin": "Hacer el control de recuperación"
    },
    "days": "días",
    "best": "Récord: {{count}} días"
  },
  "gamification": {
    "dashboardTitle": "Logros",
    "recentBadges": "Insignias recientes",
    "almostEarned": "Casi conseguidas",
    "viewAll": "Ver todas las insignias",
    "freshSealLabel": "NUEVA",
    "freshSealSublabel": "INSIGNIA",
    "overallProgressLabel": "Progreso total de insignias: {{pct}}%",
    "badgeProgressLabel": "Progreso hacia la insignia {{name}}"
  },
  "edgeErrors": {
    "RATE_LIMIT": "Demasiadas solicitudes. Inténtalo de nuevo más tarde.",
    "AUTH_FAILED": "Error de autenticación. Vuelve a iniciar sesión e inténtalo de nuevo.",
    "NOT_AUTHORIZED": "No tienes permisos para esta acción.",
    "INTERNAL_ERROR": "Se ha producido un error interno. Inténtalo de nuevo más tarde.",
    "ALREADY_SUBSCRIBED": "Ya tienes una suscripción activa. Usa el portal de cliente para modificar tu suscripción.",
    "INVALID_PRICE": "Precio no válido. Ponte en contacto con soporte.",
    "NO_SUBSCRIPTION": "Todavía no tienes ninguna suscripción. Empieza primero una suscripción desde la página de precios.",
    "NO_SCHEDULED_CHANGE": "No hay ningún cambio programado que cancelar.",
    "CANCEL_SCHEDULE_FAILED": "Error al cancelar el cambio programado. Inténtalo de nuevo.",
    "TRIAL_ALREADY_USED": "Ya has disfrutado de una prueba anteriormente.",
    "EMAIL_NOT_VERIFIED": "Confirma primero tu correo electrónico antes de empezar una prueba.",
    "EMAIL_ALREADY_VERIFIED": "Tu correo electrónico ya está verificado.",
    "VERIFICATION_TOKEN_INVALID": "Este enlace de verificación no es válido o ha caducado.",
    "TRIAL_START_FAILED": "No se ha podido iniciar la prueba. Inténtalo de nuevo.",
    "SUBSCRIPTION_UPDATE_FAILED": "No se ha podido actualizar la suscripción.",
    "SYNC_FAILED": "Error al sincronizar. Inténtalo de nuevo.",
    "UNKNOWN_STRIPE_PRODUCT": "Producto de Stripe desconocido.",
    "NO_STRIPE_PRODUCTS": "La suscripción de Stripe no tiene productos.",
    "FETCH_SUBSCRIPTION_FAILED": "Error al obtener la suscripción.",
    "CAPTCHA_REQUIRED": "Se requiere verificación CAPTCHA. Actualiza la página e inténtalo de nuevo.",
    "CAPTCHA_FAILED": "La verificación CAPTCHA ha fallado. Inténtalo de nuevo.",
    "EMAIL_ALREADY_REGISTERED": "Este correo electrónico ya está registrado.",
    "REGISTRATION_FAILED": "El registro ha fallado. Inténtalo de nuevo.",
    "PROFILE_CREATION_FAILED": "El registro ha fallado: no se ha podido crear el perfil.",
    "USER_CREATION_FAILED": "No se ha podido crear el usuario. Comprueba los datos e inténtalo de nuevo.",
    "CANNOT_INVITE_SELF": "No puedes invitarte a ti mismo.",
    "NO_INVITE_PERMISSION": "No tienes permisos para invitar miembros a este club.",
    "CLUB_NOT_FOUND": "Club no encontrado.",
    "ALREADY_CLUB_MEMBER": "Esta persona ya tiene una cuenta y ya es miembro de este club.",
    "ALREADY_HAS_ACCOUNT": "Esta persona ya tiene una cuenta de JudoLytics.",
    "INVITATION_CREATE_FAILED": "No se ha podido crear la invitación.",
    "INVITATION_NOT_FOUND": "Invitación no encontrada.",
    "INVITATION_NOT_FOR_YOU": "Esta invitación no es para tu cuenta.",
    "MAX_INVITATIONS_TODAY": "Has alcanzado el máximo de invitaciones por hoy. Inténtalo de nuevo mañana.",
    "PROFILE_UPDATE_FAILED": "No se ha podido actualizar el perfil.",
    "EMAIL_UPDATE_FAILED": "No se ha podido actualizar el correo electrónico.",
    "PASSWORD_UPDATE_FAILED": "No se ha podido actualizar la contraseña.",
    "ROLE_UPDATE_FAILED": "No se ha podido actualizar el rol.",
    "USER_DELETE_FAILED": "No se ha podido eliminar el usuario.",
    "SUBSCRIPTION_SETTING_FAILED": "No se ha podido actualizar la suscripción.",
    "FREE_ACCOUNT_FAILED": "No se ha podido configurar la cuenta gratuita.",
    "MAX_CLUBS_REACHED": "Ya eres miembro del número máximo de clubes de tu suscripción. Mejora tu suscripción o sal primero de un club.",
    "MEMBERSHIP_ACTIVATION_FAILED": "No se ha podido activar la membresía.",
    "MEMBERSHIP_CREATION_FAILED": "No se ha podido crear la membresía.",
    "INVITATION_UPDATE_FAILED": "No se ha podido actualizar la invitación.",
    "INVALID_OR_EXPIRED_LINK": "Enlace no válido o caducado.",
    "PREFERENCES_SAVE_FAILED": "No se han podido guardar las preferencias.",
    "PREFERENCES_FETCH_FAILED": "No se han podido obtener las preferencias.",
    "MISSING_REQUIRED_FIELDS": "No se han rellenado todos los campos obligatorios."
  },
  "reactivation": {
    "banner": "Tu cuenta se eliminará dentro de {{days}} días. Reactívala para evitarlo.",
    "banner_0": "Tu cuenta se eliminará hoy. Reactívala para evitarlo.",
    "reactivate": "Reactivar",
    "reactivating": "Reactivando...",
    "success": "¡Tu cuenta se ha reactivado correctamente!",
    "error": "La reactivación ha fallado. Inténtalo de nuevo."
  },
  "tosReconsent": {
    "title": "Hemos actualizado nuestras condiciones",
    "description": "Consulta las condiciones actualizadas",
    "tosLink": "Términos y Condiciones",
    "and": "y",
    "privacyLink": "Política de privacidad",
    "accept": "Aceptar",
    "accepting": "Procesando...",
    "accepted": "¡Gracias! Has aceptado las condiciones actualizadas.",
    "error": "No se han podido aceptar las condiciones. Inténtalo de nuevo."
  },
  "pushPrimer": {
    "title": "Mantente al día",
    "description": "Recibe notificaciones para no perderte nada del progreso de tu judo.",
    "benefitReminders": "Recordatorio para introducir tus combates después de un torneo",
    "benefitLoad": "Aviso cuando tu carga de entrenamiento se vuelve demasiado alta",
    "benefitMotivation": "Motivación con nuevos récords personales y rachas",
    "enable": "Activar notificaciones",
    "notNow": "Ahora no",
    "contextual": {
      "settings": {
        "title": "Los recordatorios de check-in funcionan con push",
        "description": "Activa las notificaciones push para recibir cada mañana un aviso de tu check-in, aunque la app esté cerrada."
      },
      "tournament": {
        "title": "¿Recordatorio después de tu torneo?",
        "description": "Recibe el día después del torneo una notificación para introducir tus combates, mientras todo está fresco."
      },
      "training": {
        "title": "¿Quieres saber cómo fue tu entrenamiento?",
        "description": "Recibe tras cada entrenamiento programado una breve notificación para registrar cómo fue."
      },
      "club": {
        "title": "Mantente al día de tu club",
        "description": "Recibe una notificación en cuanto se apruebe tu solicitud y cuando tu entrenador dé feedback."
      },
      "standalone": {
        "title": "Completa tu app",
        "description": "Activa las notificaciones para que los recordatorios y el feedback del entrenador te lleguen directamente a este dispositivo."
      }
    }
  },
  "pushBanner": {
    "title": "No te pierdas ningún recordatorio",
    "description": "Activa las notificaciones para recibir recordatorios y actualizaciones.",
    "benefitMatches": "Recordatorios de combates",
    "benefitLoad": "Recordatorios de entrenamiento",
    "enable": "Activar",
    "later": "Más tarde"
  },
  "progress": {
    "percentage": "{{value}}% de progreso"
  },
  "pwaInstall": {
    "bannerTitle": "Instala JudoLytics en tu dispositivo",
    "bannerDescription": "Añade JudoLytics a tu pantalla de inicio para la mejor experiencia.",
    "benefitFast": "Carga más rápida",
    "benefitNotifications": "Notificaciones push",
    "benefitOffline": "Funciona sin conexión",
    "benefitHomeScreen": "Icono de app propio",
    "installButton": "Instalar",
    "later": "Más tarde",
    "iosTitle": "Instala JudoLytics",
    "iosDescription": "Añade JudoLytics a tu pantalla de inicio en tres pasos. Funcionará como una app de verdad.",
    "iosStep1Title": "Toca el icono de Compartir",
    "iosStep1Desc": "El icono cuadrado con la flecha hacia arriba en la barra de la parte inferior de tu pantalla.",
    "iosStep2Title": "Elige 'Añadir a pantalla de inicio'",
    "iosStep2Desc": "Desplázate hacia abajo en el menú de compartir y toca 'Añadir a pantalla de inicio'.",
    "iosStep3Title": "Confirma con 'Añadir'",
    "iosStep3Desc": "Toca 'Añadir' arriba a la derecha. JudoLytics aparecerá ahora en tu pantalla de inicio.",
    "iosShareLabel": "Compartir",
    "iosAddLabel": "Añadir a pantalla de inicio",
    "iosDoneHint": "Tras la instalación, JudoLytics se abre como una app completa, con notificaciones push y acceso sin conexión.",
    "openInAppTitle": "La app de JudoLytics está instalada",
    "openInAppDescription": "Abre la app para la mejor experiencia, con notificaciones push y acceso sin conexión.",
    "openApp": "Abrir app"
  },
  "table": {
    "sortBy": "Ordenar por {{column}}",
    "sortedAscending": "Ordenado de forma ascendente",
    "sortedDescending": "Ordenado de forma descendente",
    "notSorted": "Sin ordenar"
  },
  "optionalFields": {
    "show_one": "+ Mostrar {{count}} campo",
    "show_other": "+ Mostrar {{count}} campos",
    "hide": "Mostrar menos",
    "seenInlineToast": "¿Quieres ver este campo más a menudo?",
    "seenInlineAction": "Mostrar siempre",
    "show_many": "+ Mostrar {{count}} campos"
  },
  "forms": {
    "draftRestored": {
      "text": "Borrador sin guardar recuperado.",
      "discard": "Vaciar"
    }
  },
  "sharing": {
    "title": "¿Quién puede ver esto?",
    "change": "cambiar",
    "changeAria": "Cambiar quién puede ver esto",
    "shareWithClubs": "Compartir con clubes",
    "privateOnlyHint": "Visible solo para ti",
    "saveAsDefault": "Hacer que sea mi opción predeterminada",
    "updateDefault": "Actualizar predeterminado",
    "saveAsDefaultHint": "Usa esta opción por defecto para los elementos nuevos",
    "saveDefaultSuccess": "Opción de compartición predeterminada guardada",
    "saveDefaultError": "No se ha guardado la opción de compartición predeterminada",
    "applyChange": "Aplicar",
    "defaultScopeHint": "Esta es tu opción predeterminada para este tipo. Cambiarla afecta a todos tus elementos de este tipo.",
    "advancedPerClub": "Configurar por club",
    "clearDefault": "Preguntar cada vez",
    "clearDefaultSuccess": "Opción de compartición predeterminada eliminada",
    "overrideLabel": "personalizado",
    "overrideTooltip": "Difiere de tu opción predeterminada",
    "scopes": {
      "private": {
        "label": "Solo yo",
        "description": "Solo tú ves esto. Los entrenadores y compañeros de club no lo ven."
      },
      "coaches": {
        "label": "Entrenadores",
        "description": "Los entrenadores de los clubes seleccionados ven esto. Los compañeros de club no."
      },
      "club": {
        "label": "Club",
        "description": "Los entrenadores y compañeros de los clubes seleccionados ven esto."
      }
    },
    "summary": {
      "private": "Visible solo para ti",
      "coachesWith": "Compartido con los entrenadores de {{clubs}}",
      "clubWith": "Compartido con {{clubs}}",
      "popCoaches": "Visible para tus entrenadores",
      "popClubMembers": "Visible para entrenadores y compañeros de club",
      "noClubs": "ningún club seleccionado",
      "clubsCount": "{{first}} +{{count}} más"
    },
    "pop": {
      "visibleToCoaches": "Entrenadores",
      "visibleToCoachesHint": "Tus entrenadores pueden leer tus objetivos y tu feedback.",
      "visibleToMembers": "Compañeros de club",
      "visibleToMembersHint": "Otros miembros del club pueden ver tus objetivos."
    },
    "measurements": {
      "all": "Todos los clubes",
      "none": "Solo yo",
      "allHint": "Las nuevas mediciones se comparten automáticamente con todos tus clubes activos.",
      "noneHint": "Las nuevas mediciones quedan privadas. Tus entrenadores no las ven.",
      "selectedHint": "Las nuevas mediciones se comparten solo con los clubes que elijas a continuación."
    },
    "settings": {
      "title": "Preferencias de compartición",
      "description": "Configura una sola vez cómo quieres compartir los elementos nuevos. Aún podrás ajustarlo por elemento.",
      "domains": {
        "matches": "Planes de combate",
        "opponents": "Notas de rivales",
        "pop": "Plan de desarrollo (PDP)",
        "measurements": "Mediciones"
      },
      "noClubs": "Hazte miembro de un club o crea uno para compartir elementos con entrenadores y compañeros de club.",
      "notSetYet": "Aún sin configurar. Se usa el valor predeterminado.",
      "resetButton": "Preguntar cada vez",
      "trackedSummary": "Ahora: {{summary}}"
    },
    "visibilityPrefix": "Visibilidad",
    "variesPerClub": "Difiere por club"
  },
  "subscription": {
    "source": {
      "personal": "Personal",
      "club": "A través de {{clubName}}",
      "adminGrant": "Concedido",
      "none": "—"
    },
    "lifecycle": {
      "active": "Activa",
      "trial": "Prueba",
      "pastDue": "Pendiente de pago",
      "canceledActive": "Termina el {{date}}",
      "expired": "Caducada",
      "none": "Inactiva"
    },
    "trial": {
      "daysLeft": "{{count}} d.",
      "hoursLeft": "{{count}} h.",
      "hoursLeftLastHour": "<1 h."
    },
    "paymentMode": {
      "stripe": "Stripe",
      "manual": "Manual"
    }
  },
  "wizard": {
    "progressAriaLabel": "Progreso del asistente"
  },
  "a11y": {
    "refresh": "Actualizar",
    "close": "Cerrar",
    "toggleSidebar": "Mostrar/ocultar barra de navegación",
    "breadcrumb": "Ruta de navegación"
  },
  "brand": {
    "logoAltText": "Inicio de JudoLytics"
  }
}
