es: password_policy: hint: "Mínimo 8 caracteres, con al menos 3 entre: minúsculas, mayúsculas, números y símbolos." activerecord: errors: models: user: attributes: password: too_short: "is too short (minimum is %{count} characters)" too_long: "is too long (maximum is %{count} characters)" complexity: "debe incluir al menos 3 entre: minúsculas, mayúsculas, números y símbolos" admin_account: attributes: password: too_short: "is too short (minimum is %{count} characters)" too_long: "is too long (maximum is %{count} characters)" complexity: "debe incluir al menos 3 entre: minúsculas, mayúsculas, números y símbolos" club: back_to_club: "← Club" sport_label: Deporte principal branding_legend: Logo y colores del club branding: legend: Identidad visual inherit_hint: Déjalo vacío para usar el logo y los colores del club. logo_file_label: Logo (imagen) logo_preview_alt: Vista previa del logo no_logo_placeholder: "Sin logo — elige un archivo para la vista previa" logo_url_label: Logo (URL alternativa) primary_color_label: Color principal secondary_color_label: Color secundario choose_color: Elegir color quick_colors: Colores rápidos header_preview_label: Vista previa del encabezado name_placeholder: Nombre del club / equipo dashboard: title: "%{name} — Club" plan_label: "Plan:" teams_count_label: "Equipos:" edit_club: Editar club subscription: Suscripción new_team: Nuevo equipo live_streams: Directos replay_archive: Archivo de repeticiones replay_heading: Repetición available: disponibles expiring_soon: "por caducar (7 días)" space_used: espacio usado views: visualizaciones teams_heading: Equipos team_col: Equipo branding_col: Imagen de marca branding_custom: Personalizado branding_inherited: Hereda del club public_page: Página pública details: Detalles matches: Partidos edit: Editar no_teams_html: "Aún no hay equipos. %{link}." add_first_team: Añade el primero footer_note: "Cada equipo tiene sus propios responsables de transmisión. El marcador desde otro teléfono usa el enlace de control (sin cuenta). La suscripción cubre todo el club." edit: title: "Editar club — %{name}" heading: Editar club name_label: Nombre del club save: Guardar new: title: "Registrar un club — Match Live TV" meta_description: Crea tu club deportivo y su primer equipo en Match Live TV. heading: Tu club lead: "Registra el club: podrás añadir más equipos (Sub-13, Sub-15, Serie C…)." section_club: Club name_label: Nombre del club name_placeholder: "ej. Crazy Volley Rozzano" section_first_team: Primer equipo default_first_team_name: Primer equipo first_team_name_label: Nombre del equipo first_team_name_placeholder: "ej. Sub-15" plan_label: "Plan inicial (para todo el club)" plan_free: "Free — 1 responsable de transmisión por equipo, 1 directo" plan_light: Premium Light plan_full: Premium Full interval_label: Facturación premium interval_yearly: "Anual — 40 €/año (Light) o 200 €/año (Full)" interval_monthly: "Mensual — 5 €/mes (Light) o 20 €/mes (Full)" submit: Crear club billing: title: "Suscripción — %{name}" comped: title: Suscripción de cortesía de Match Live TV plan_prefix: "— plan" no_payment_html: "No se requiere ningún pago. Para cambios o para pasar a un plan de pago, contacta con %{email_link}." youtube: heading: YouTube Live connected_notice: Canal de YouTube del club conectado correctamente. light_body_html: "Con el plan Premium Light, los directos de YouTube de todos los equipos se emiten en el canal oficial Match Live TV. No es necesario conectar un canal del club." light_ready: "Canal listo · selecciona «YouTube Live» en la app móvil." light_configuring: El canal de Match Live TV se está configurando en el servidor. Contacta con soporte si YouTube no aparece en la app. full_connected_html: "Canal conectado para todo el club: %{channel}" full_connected_hint: Todos los equipos pueden transmitir a este canal cuando eligen el canal del club en la app. disconnect: Desconectar canal disconnect_confirm: "¿Desconectar el canal de YouTube? Los directos usarán el canal de Match Live TV hasta que vuelvas a conectar el tuyo." full_not_connected_html: "Sin un canal conectado, los directos de YouTube desde la app se emiten en el canal oficial Match Live TV. Conecta aquí el canal de YouTube del club (aplica a todos los equipos)." ready_in_app: "YouTube listo en la app (canal de Match Live TV hasta que conectes el tuyo)." connect: Conectar el canal de YouTube del club oauth_not_configured: OAuth de YouTube aún no configurado en el servidor. requires_full: YouTube en el canal del club requiere el plan Premium Full. see_plans: Ver planes team: back_to_details: "← Detalles del equipo" sport_label: Deporte details: title: "Detalles — %{name}" meta_description: "Detalles del equipo %{name} en Match Live TV." nav_aria: Ruta de navegación del equipo edit_team: Editar equipo plan_label: "Plan:" plan_scope_club: (club) staff_label: "Responsables de transmisión:" active_matches_label: "Partidos activos:" unlimited: ilimitados no_description: Sin descripción todavía. add_description_link: Añádela desde editar equipo roster_count_label: en la plantilla no_photo: Foto del equipo aún no cargada add_photo_link: Añádela desde editar equipo public_page: Página pública streaming_managers: Responsables de transmisión schedule_matches: Programar partidos live_streams: Directos no_people_in_category: Nadie en esta categoría todavía. youtube_hint_html: "El canal de YouTube del club se configura desde la página %{club_link} (sección YouTube Live)." footer_note: Usa la app móvil con las mismas credenciales para iniciar partidos y directos. edit: title: "Editar equipo — %{name}" club_label: "Club:" name_label: Nombre del equipo description_label: Descripción del equipo description_placeholder: "Presentación del equipo, palmarés, objetivos de la temporada…" photo_label: "Foto del equipo (grupo o escudo)" photo_alt: Foto del equipo branding_legend: Imagen de marca del equipo (personalización) slug_label: Dirección de la página pública slug_hint_html: "Padres y aficionados encuentran el equipo en %{base_url}/squadre/%{slug}" slug_title: "Solo letras minúsculas, números y guiones" roster_public_label: Mostrar la plantilla en la página pública roster_public_hint: Si está activado, jugadores y staff son visibles para cualquiera con el enlace. Puedes dejarlo desactivado por privacidad. club_colors_label: "Colores del club:" submit: Guardar equipo new: title: "Nuevo equipo — %{name}" heading: Nuevo equipo club_label: "Club:" name_label: Nombre del equipo name_placeholder: "ej. Sub-13, Serie C" branding_legend: Personalización de imagen de marca (opcional) submit: Añadir equipo invite: title: "Staff de transmisión — %{name}" heading: Responsables de transmisión assigned_label: "Asignados:" per_team_note: (por equipo, renovación anual) info: "El responsable de transmisión inicia el directo desde la app (cámara en trípode). Para el marcador desde un segundo teléfono no hace falta cuenta: comparte el enlace de control desde la pantalla de transmisión (WhatsApp, correo, SMS, etc.)." self_assign_hint_html: "%{email} — puedes encargarte tú de la cámara y el marcador, o invitar a otros para la transmisión." self_assign_submit: Yo me encargo — responsable de transmisión invite_other_heading: Invitar a otro correo email_label: Correo del responsable de transmisión submit: Generar enlace de acceso share_hint: "Comparte (válido 7 días):" billing: title: "Suscripción — %{name}" team_label: "Equipo:" current_plan_label: "Plan actual:" staff_line: "Staff de transmisión: %{count} / año" matches_line: "Partidos: %{count} simultáneos" replay_line: "Repetición: %{value}" replay_days: "%{count} días" replay_none: "no" youtube_line: "YouTube: %{value}" youtube_mltv: Match Live TV youtube_club: canal del club youtube_none: "no" current_plan: Plan actual manage_club_subscription: Gestionar suscripción del club stripe_not_configured: Stripe no configurado contact_lead: "¿Necesidades diferentes?" contact_cta: Contáctanos contact_trailer: para una oferta a medida. club_payments_link: Pagos y facturas del club streaming_staff: self_account_heading: "Tu cuenta (%{email})" self_account_hint: "Puedes gestionar la transmisión desde la app. Para el marcador desde otro teléfono, comparte el enlace de control durante el directo (no hace falta una segunda cuenta)." self_assign_submit: Yo me encargo — responsable de transmisión staff_heading: Responsables de transmisión (app) col_name: Nombre col_email: Correo col_role: Rol role_transmission: Transmisión you_suffix: (tú) clear_self_staff: Quitar rol de staff clear_self_staff_confirm: "¿Quitar el rol de staff de tu cuenta?" revoke: Revocar revoke_confirm: "¿Revocar el acceso a %{name}?" no_staff: Aún no hay responsables de transmisión. invite_someone: Invitar a alguien pending_invitations_heading: Invitaciones pendientes col_email_short: Correo col_expires: Caduca cancel_invitation: Cancelar no_pending: No hay solicitudes pendientes. archive_heading: Archivo de repeticiones col_match: Partido col_date: Fecha col_duration: Duración col_expiry: Caducidad col_status: Estado watch: Ver manage_all_replays: Gestionar todas las repeticiones no_recordings: Aún no hay repeticiones. Las grabaciones aparecen aquí al terminar los directos Premium. matches: back_to_list: "← Lista de partidos" opponent_label: Rival opponent_placeholder: "ej. Volley Milano" location_label: "Lugar (opcional)" location_placeholder: "Pabellón, ciudad" datetime_label: Fecha y hora form_hint: "El directo no se inicia solo: aparecerá en la app y en el sitio web. Iniciarás la transmisión desde tu teléfono cuando estés en el lugar." edit: title: "Editar partido — %{name}" heading: Editar partido submit: Guardar cambios new: title: "Programar partido — %{name}" heading: Programar partido submit: Guardar en el calendario index: title: "Partidos — %{name}" heading: "Partidos — %{name}" lead: "Programa aquí desde el ordenador la fecha, el rival y el lugar. Cuando estés en el pabellón, abre la app Match Live TV, selecciona este equipo e inicia el directo del partido." schedule_match: Programar partido team_details: Detalles del equipo live_and_schedule: Directos y calendario col_opponent: Rival col_datetime: "Fecha y hora" col_location: Lugar col_status: Estado no_time: Sin horario no_location: "—" edit: Editar delete: Eliminar delete_confirm: "¿Eliminar este partido?" empty_html: "Aún no hay partidos programados. %{link}." schedule_first: Programa el primero club_new: title: "Programar partido — %{name}" back_link: "← Directos y partidos" heading: Programar partido admin_hint: "· Puedes elegir cualquier equipo del club" staff_hint: "· Solo los equipos donde eres responsable de transmisión" team_label: Equipo submit: Guardar en el calendario status: active: En curso / por reanudar scheduled: Programado ready: Listo no_time: Sin horario roster: back_to_details: "← Detalles del equipo" category: staff: Staff coach: Entrenadores manager: Directivos player: Jugadores role: coach: Entrenador manager: Directivo staff: Staff player: Jugador player_numbered: "Jugador n.º %{number}" errors: role_invalid: no es un rol válido para este deporte photo_invalid_type: debe ser PNG, JPEG o WebP role_select_blank: "— Selecciona un rol —" edit: title: "Editar — %{name}" member_form: edit_heading: Editar ficha new_heading: Añadir persona lead: Completa los campos y guarda para actualizar la plantilla. category_label: Grupo full_name_label: Nombre y apellidos full_name_placeholder: "ej. Mario Rossi" role_player_label: Posición en el campo role_other_label: "Rol (opcional)" role_other_placeholder: "ej. Entrenador principal, Presidente, Fisioterapeuta" jersey_label: Número de camiseta jersey_placeholder: "ej. 7" bio_label: Descripción breve bio_placeholder: "Breve presentación para la ficha…" photo_label: Foto photo_hint: Sin foto se mostrará un avatar con los colores del equipo. submit_edit: Guardar ficha submit_new: Añadir a la plantilla person_card: edit: Editar remove: Quitar remove_confirm: "¿Quitar a %{name} de la plantilla?" billing: heading: Suscripción entity_types: company: "Club / entidad con NIF/CIF" individual: Persona física nonprofit: Asociación sin ánimo de lucro profile_errors: entity_type: Tipo de titular legal_name: Razón social o nombre del titular email: Correo de facturación address: Dirección city: Ciudad province: "Provincia (código de 2 letras)" postal_code: Código postal country: "País (ISO)" vat_number: NIF/CIF fiscal_code: Código fiscal vat_or_fiscal: NIF/CIF o código fiscal sdi_or_pec: "Código destinatario SDI (7 caracteres) o correo certificado (PEC)" sdi_invalid: "Código destinatario SDI (7 caracteres)" actions: current_plan: Plan actual contact_for_free: "Para pasar al plan Free, contacta con soporte." stripe_not_configured: Stripe no configurado stripe_prices_not_configured: Precios de Stripe no configurados complete_billing_prefix: Completa tus datos de facturación antes de activar un plan premium. profile_incomplete_default: Completa tus datos de facturación antes de activar un plan premium. profile_missing: "Faltan: %{fields}." profile: title: "Datos de facturación — %{name}" heading: Datos de facturación lead: "Club: %{name}. Introduce los datos para el encabezado de las facturas y el envío por SDI o PEC." required_notice: Obligatorios para suscribirte a un plan premium. after_save_hint_html: "Después de guardar podrás proceder al pago de %{plan}." submit: Guardar datos de facturación back_to_billing: "← Suscripción" fields: legend: Datos de facturación legend_hint: "Todos los campos marcados son obligatorios para suscribirte a un plan premium y para emitir facturas. Los clubes necesitan NIF/CIF; las personas físicas, el código fiscal. Necesitas SDI o correo certificado (PEC). Los pagos siguen gestionados de forma segura por Stripe." entity_type_label: "Tipo de titular *" legal_name_label: "Razón social / nombre y apellidos *" legal_name_placeholder: "ej. ASD Tigers Volley" vat_number_label: "NIF/CIF * (club)" fiscal_code_label: "Código fiscal * (persona física)" fiscal_code_placeholder: RSSMRA80A01H501U email_label: "Correo de facturación *" email_placeholder: administracion@club.es phone_label: "Teléfono (opcional)" address_label: "Dirección *" address_placeholder: "Calle Roma 1" city_label: "Ciudad *" province_label: "Prov. *" province_placeholder: MI postal_code_label: "Código postal *" country_label: "País (ISO) *" recipient_code_label: "Código destinatario SDI (7 car.) *" recipient_code_placeholder: XXXXXXX pec_label: "PEC (alternativa a SDI) *" pec_placeholder: pec@club.es documents: heading: Pagos y facturas lead: Historial de los pagos del club y las facturas emitidas por Match Live TV. incomplete_title: Datos de facturación incompletos. incomplete_body: Completa razón social, dirección, NIF/CIF y SDI o PEC para recibir las facturas por correo. complete_now: Completar ahora holder_label: "Titular: %{summary}" edit_data: Editar datos table_heading: Pagos y facturas col_date: Fecha col_description: Descripción col_amount: Importe col_status: Estado del pago col_invoice: Factura download_pdf: Descargar PDF pdf_preparing: PDF en preparación no_payments: Aún no hay pagos registrados. Aparecerán aquí tras una suscripción premium. subscription_status: club_label: "Club: %{name}" current_plan_label: "Plan actual: %{plan}" comped_suffix: (cortesía de Match Live TV) valid_for_all_teams: (válido para todos los equipos) manage_subscription: Gestionar suscripción cancel_scheduled_html: "Suscripción válida hasta el %{date}, luego plan Free." change_pending_html: "Desde el %{date} pasarás a %{plan}%{interval}. Hasta entonces sigue activo %{current_plan}." end_of_period: fin del periodo next_renewal: próxima renovación next_renewal_label: "Próxima renovación: %{date}" plan_change_info: trigger_label: Información sobre cambio de plan y facturación title: Cambio de plan y facturación subscription_cancel: scheduled_title: Cancelación programada. scheduled_body_html: "El plan %{plan} sigue activo hasta el %{date}. A partir de ese día, el club pasará automáticamente al plan Free." scheduled_end_of_period: fin del periodo ya pagado scheduled_support_hint: Para restablecer la suscripción antes de su vencimiento, contacta con el soporte de Match Live TV. info: "Puedes cancelar en cualquier momento: la suscripción sigue siendo válida hasta el final del periodo ya pagado, luego pasas al plan Free sin cargos adicionales." cancel_button: Cancelar suscripción confirm_with_date: "¿Confirmas la cancelación? El plan %{plan} seguirá activo hasta el %{date}, luego pasarás a Free." confirm_default: "¿Confirmas la cancelación de la suscripción?" stripe_secure: compact_html: "Pagos premium procesados de forma segura mediante Stripe." full_html: "Los pagos de los planes premium se procesan de forma segura mediante Stripe (certificación PCI DSS). Match Live TV nunca almacena los números completos de la tarjeta." messages: upgrade_completed_with_amount: "Mejora a %{plan} (%{interval}) completada. Cargo inmediato: %{amount}." upgrade_completed_pending_charge: "Mejora a %{plan} (%{interval}) completada. El cargo de la diferencia se está procesando en la tarjeta guardada." next_renewal: la próxima renovación current_plan_generic: el plan actual downgrade_scheduled: "Cambio a %{plan} (%{interval}) programado: sigues en %{current_name} hasta el %{when}. Sin cargo adicional ahora; desde el próximo ciclo pagarás el nuevo precio." activate_button: "Activar %{plan} — %{price}" switch_button: "Cambiar a %{plan} — %{price}" upgrade_info_line: "Mejora (plan superior o cambio a facturación anual): la diferencia se cobra de inmediato en la tarjeta guardada en Stripe." downgrade_info_line: "Downgrade entre planes de pago (p. ej. Full → Light): el nuevo plan se activa desde la próxima renovación; hasta entonces se mantienen las funciones del plan actual, sin cargo adicional ahora." already_requested_line: "Ya has solicitado %{plan} desde el %{when}: hasta entonces sigue activo %{current_plan}." regia: meta_title_fallback: "Control — Match Live TV" title: "Control — %{home} vs %{away}" subtitle_prefix: "Control ·" status: ended: Finalizada paused: En pausa live: En directo waiting: En espera live_share_label: "Enlace del directo (espectadores)" share_live: Compartir directo copy_link: Copiar enlace regia_share_label: "Enlace de control (marcador)" share_regia: Compartir enlace de control preview_ended: Directo finalizado preview_waiting: Vista previa a la espera de señal… pause: Pausar directo resume: Reanudar directo stop: Finalizar directo modal: set_won_title: Set ganado confirm: Cerrar set cancel: Cancelar board: next_period: Siguiente cuarto next_half: Siguiente parte close_set: Cerrar set free_score: Marcador libre stopwatch: Cronómetro generic_score: Marcador start: Iniciar pause: Pausa reset: Reiniciar points_suffix: pts partials_prefix: "Parciales:" set_label: "Set %{number}" js: period_updated: Periodo actualizado now_in_period: "Ahora en %{period}" set_won_body: "%{winner} ha ganado el set. ¿Cerrar el set?" match_won_title: Partido ganado match_won_body: "%{winner} ha ganado el partido. ¿Cerrar la retransmisión?" close_set_confirm: "¿Confirmas el cierre del set actual?" score_update_error: Error al actualizar el marcador generic_error: Error sets_line: "Set %{current} · Sets ganados %{home}-%{away}" quarter_label: "C%{n}" half_label: "%{n}º tiempo" overtime_basket: "PR%{n}" overtime_other: Prórroga unknown_period: "—" resumed: Retransmisión reanudada paused_cover: "Retransmisión en pausa — cortinilla al aire" closed: Retransmisión finalizada resume_error: Error al reanudar la retransmisión pause_error: Error al pausar la retransmisión close_error: Error al cerrar close_confirm: "¿Cerrar definitivamente la retransmisión?" link_unavailable: Enlace no disponible link_copied: Enlace copiado copy_prompt: "Copia el enlace:" share_regia_text: "Abre este enlace para gestionar el marcador en directo:" share_live_text: "Mira la retransmisión en Match Live TV:" recordings: archive: back_prefix: "←" heading: Archivo de repeticiones admin_suffix: (admin) lead_html: "Gestiona grabaciones, visibilidad y descargas. Privado = enlace no indexado, no aparece en la página pública /replay. Al eliminar una repetición también se eliminan los archivos del servidor y el vídeo de YouTube vinculado." kpi_available: Repeticiones disponibles kpi_expiring: "Por caducar (7 días)" kpi_space: Espacio de archivo kpi_views: Visualizaciones totales team_label: Equipo team_all: Todos status_label: Estado status_all: Todos status_ready: Disponibles status_processing: En proceso status_expired: Caducados / error col_preview: Vista previa col_match: Partido col_team: Equipo col_details: Detalles col_status: Estado y visibilidad col_actions: Acciones watch_replay: Ver repetición processing_title: Procesamiento en curso not_available_title: Repetición no disponible views_suffix: vis. expires_prefix: Caduca el expires_days: "(%{count} días)" no_expiry: Sin caducidad new_expiry_title: Nueva fecha de caducidad save: Guardar extend_days: "+%{count} días" extend_title: "Ampliar la caducidad %{count} días" privacy_public: Público privacy_private: Privado privacy_hint_public: "Visible para todos — haz clic para hacerlo privado" privacy_hint_private: "Solo con enlace — haz clic para hacerlo público" download_mp4: MP4 download_mp4_title: Descargar MP4 publish_youtube: "YT" publish_youtube_title: Publicar en YouTube open_youtube_title: Abrir en YouTube delete_title: Eliminar repetición delete_confirm: Elige dónde eliminar la repetición. La operación es irreversible. no_recordings: No hay grabaciones para los filtros seleccionados. confirm: choice_title: "¿Qué quieres eliminar?" choice_message: Elige de dónde quitar la repetición. La operación es irreversible. choice_site_label: Solo del sitio choice_site_hint_with_youtube: El vídeo permanece en YouTube choice_site_hint_only: Elimina los archivos del sitio choice_youtube_label: Solo de YouTube choice_youtube_hint_with_site: Sigue disponible en el sitio choice_youtube_hint_only: Elimina solo el vídeo de YouTube choice_both_label: Del sitio y de YouTube choice_both_hint: Eliminación completa youtube_title: "¿Eliminar de YouTube?" youtube_message: El vídeo se eliminará de YouTube. La repetición seguirá disponible en el sitio. youtube_ok: Eliminar de YouTube site_title: "¿Eliminar del sitio?" site_message_with_youtube: La repetición se eliminará del sitio. El vídeo de YouTube seguirá en línea. site_message_only: Estás a punto de eliminar definitivamente esta repetición del sitio. La operación es irreversible. site_ok: Eliminar del sitio status: deleted: Eliminado expired: Caducado failed: Error processing: En proceso expiring_soon: Por caducar available: Disponible flash: web_base: login_required: Inicia sesión para continuar access_denied: Acceso no permitido clubs: already_registered: Ya has registrado un club created: Club y primer equipo creados. updated: Club actualizado. complete_billing_first: Completa tus datos de facturación antes de activar un plan premium. comped_change_denied: "Este plan es una suscripción de cortesía gestionada por Match Live TV. Para pasar a una suscripción de pago, contacta con soporte." stripe_not_configured: Pagos aún no configurados en el servidor already_on_plan: "Ya tienes el plan %{plan} (%{price})." change_already_scheduled: "El cambio a %{plan} ya está programado desde el %{date}." stripe_error: "Error de Stripe: %{message}" youtube_oauth_not_configured: OAuth de YouTube no configurado en el servidor youtube_disconnected: Canal de YouTube del club desconectado portal_not_configured: Portal de pagos no configurado checkout_success: "¡Pago completado! Plan activo: %{plan}." checkout_canceled: Pago cancelado. No se realizó ningún cargo. club_billing: profile_saved_proceed_payment: Datos guardados. Procede con el pago. profile_updated: Datos de facturación actualizados. stripe_not_configured: Stripe no configurado. subscription_canceled: "Suscripción cancelada. Sigue activa hasta el %{date}; a partir de ese día pasarás al plan Free." stripe_error: "Error de Stripe: %{message}" invoice_pdf_unavailable: PDF de la factura no disponible. club_recordings: not_authorized: No autorizado teams: added: "Equipo «%{name}» añadido." updated: Equipo actualizado. now_staff: Tu cuenta ahora es responsable de transmisión. staff_role_removed: Rol de staff eliminado de tu cuenta. invite_link_generated: "Enlace de invitación generado (válido 7 días)" access_revoked: Acceso revocado invitation_canceled: Invitación anulada youtube_disconnected: Canal de YouTube del club desconectado matches: scheduled: "Partido programado: %{opponent}. Inicia la transmisión desde la app cuando estés en el lugar." updated: Partido actualizado. close_live_before_delete: Cierra el directo antes de eliminar este partido. deleted: Partido eliminado. schedule_denied: Solo un responsable de transmisión o el titular del club pueden programar partidos. club_matches: invalid_team: Selecciona un equipo válido. scheduled: "Partido programado: %{team} vs %{opponent}." no_schedulable_teams: No tienes permisos para programar partidos en este club. team_roster_members: added: "%{name} añadido a la plantilla." updated: Ficha actualizada. removed: "%{name} eliminado de la plantilla." invitations: invalid_or_expired: Invitación no válida o caducada invalid: Invitación no válida wrong_email: "Esta invitación es para %{email}" joined_team: "¡Te has unido al equipo!" signup_to_accept: "Regístrate con %{email} para aceptar la invitación" registrations: accept_terms_required: Debes aceptar la política de privacidad y los términos de servicio para registrarte. welcome_to_team: "¡Bienvenido al equipo!" account_created: Cuenta creada. Ahora registra tu club. sessions: welcome_back: "¡Bienvenido de nuevo!" invalid_credentials: Correo o contraseña no válidos logged_out: Sesión cerrada password_resets: email_sent: Si el correo está registrado, recibirás en breve un enlace para restablecer la contraseña. invalid_or_expired_link: Enlace no válido o caducado. Solicita un nuevo restablecimiento de contraseña. password_min_length: La contraseña debe tener al menos 8 caracteres password_too_short: La contraseña debe tener al menos 8 caracteres password_too_long: La contraseña no puede superar los 72 caracteres password_too_weak: "La contraseña debe incluir al menos 3 entre: minúsculas, mayúsculas, números y símbolos" password_same_as_current: La nueva contraseña debe ser distinta de la actual password_mismatch: Las contraseñas no coinciden password_updated: Contraseña actualizada. Ya puedes iniciar sesión. accounts: name_required: El nombre es obligatorio profile_updated: Perfil actualizado. password_current_incorrect: La contraseña actual no es correcta password_too_short: La contraseña debe tener al menos 8 caracteres password_too_long: La contraseña no puede superar los 72 caracteres password_too_weak: "La contraseña debe incluir al menos 3 entre: minúsculas, mayúsculas, números y símbolos" password_same_as_current: La nueva contraseña debe ser distinta de la actual password_mismatch: Las contraseñas no coinciden password_updated: Contraseña actualizada. replay: download_unavailable: Descarga no disponible not_available: Repetición no disponible live: index: meta_title: "Partidos juveniles en directo ahora — Match Live TV" meta_description: "Mira los partidos juveniles en directo ahora mismo y los próximos partidos programados. Busca tu equipo y abre el enlace sin instalar ninguna app." club_back_link: "← %{name}" club_title: "Directos y partidos — %{name}" club_hint: "Solo los equipos de este club: directos en curso y partidos programados desde la app o el sitio web." club_replay_link: "Repeticiones de %{name}" default_title: "Directos y partidos programados" default_hint: "Busca por club, equipo, rival o lugar: encuentra los directos activos y los partidos programados." replay_archive_link: "Directos pasados — archivo de repeticiones" schedule_match_link: "Programar partido" search_placeholder_club: "Buscar club, equipo, rival o lugar…" search_placeholder_default: "Ej. Crazy Volley, Serie D, rival…" search_aria_label: "Buscar equipo" search_button: "Buscar" reset_link: "Restablecer" results_hint: "Resultados para «%{query}»%{club_suffix}: %{live_count} en directo · %{upcoming_count} programados" results_hint_club_suffix: " en %{name}" section_live_now: "En directo ahora" badge_on_air: "En emisión" badge_live: "Live" badge_paused: "En pausa" badge_reconnecting: "Reconectando" badge_starting: "Iniciando" badge_scheduled: "Programado" watch_link: "Ver directo →" section_upcoming: "Próximos partidos" upcoming_hint: "Programados desde la app o el sitio web: el directo comenzará cuando el staff inicie la transmisión." empty_soft_title: "Ningún directo en este momento." empty_soft_body: "Vuelve a la hora indicada: cuando el equipo inicie la transmisión, el partido aparecerá en «En directo ahora»." empty_club_title: "Ningún directo o partido programado para %{name}." empty_club_schedule_link: "Programar el primer partido" empty_club_schedule_suffix: " o desde la app Match Live TV." empty_club_ask_staff: "Pide al responsable del club o a un encargado de transmisión que programe un partido." empty_club_add_team_html: "Añade un equipo desde la %{club_link} y programa el primer partido." empty_club_page_link: "página del club" empty_club_back_link: "← Volver al club" empty_hero_title: "Ningún directo ahora — pero ya puedes organizarte" empty_hero_body: "Si tu equipo usa Match Live TV, el partido se puede programar desde el teléfono con fecha y hora. Padres y familiares encontrarán aquí el directo cuando se acerque el saque inicial." empty_hero_list_item1: "Programa el partido desde la app (sin iniciar el directo de inmediato)" empty_hero_list_item2: "El partido aparece en «Próximos partidos» con hora y cancha" empty_hero_list_item3: "La transmisión solo comienza cuando pulsas iniciar en el pabellón" empty_hero_cta_signup: "Registra tu equipo" empty_hero_cta_features: "Descubre cómo funciona" demo_aria_label: "Ejemplo de un directo activo" demo_label: "Ejemplo — así se ve un directo activo" demo_meta: "PalaTigers · Match Live TV" demo_sets: "Set 2 · Sets ganados 1-0" show: back_to_all: "← Todos los directos" title: "%{club_name} · %{team_name} vs %{opponent_name} — Directo" meta_description: "Sigue a %{club_name} en directo — %{team_name} vs %{opponent_name}%{location}. Míralo desde el navegador, sin instalar ninguna app." meta_description_location: " — %{location}" stream_ended_title: "Directo finalizado" stream_ended_body: "La transmisión de este partido ha sido cerrada." stream_ended_closed_at: "Cerrado el %{date}" stream_ended_hint: "El marcador es visible en el vídeo si el directo aún estaba en curso." stream_ended_reload_hint: "Recarga la página para ver el último estado registrado." all_live_link: "Todos los directos" youtube_title: "Directo en YouTube" youtube_available_body: "Este partido se transmite en el canal de YouTube de Match Live TV, no en el reproductor del sitio." youtube_watch_link: "Ver en YouTube" youtube_preparing_body: "Estamos preparando el directo en el canal de YouTube. Actualiza en unos segundos." youtube_hint: "Comparte el enlace de YouTube solo con aficionados y el club." play_hint: "▶ Iniciar el directo" offline_msg: "El directo aún no está disponible. Se actualiza automáticamente cuando vuelva a emitir." awaiting_msg: "Esperando la señal del teléfono — abre la cámara en la app y comprueba que el directo esté iniciado (no en pausa)." paused_msg: "Transmisión en pausa — el flujo continúa (portada de servidor)." js_reconnecting_awaiting: "Reconectando - esperando el vídeo del evento" overlays: badge_ended: "Finalizado" badge_waiting: "En espera" replay: index: meta_title: "Repetición — Match Live TV" meta_description: "Archivo de repeticiones de los directos deportivos en Match Live TV. Busca por club, equipo o rival." back_to_live: "← Directos en curso" title: "Directos pasados" hint: "Repeticiones públicas de los clubes deportivos — corresponde a partidos ya transmitidos." search_placeholder: "Ej. Tigers Volley, rival, club, lugar…" search_aria_label: "Buscar repetición" search_button: "Buscar" reset_link: "Restablecer" club_filter_label: "Club" club_filter_all: "Todos los clubes" results_hint: "Resultados para «%{query}»%{club_suffix}: %{count} repeticiones" results_hint_club_suffix: " · %{name}" empty_filtered_title: "No se encontraron repeticiones" empty_filtered_suffix: " con los filtros seleccionados." empty_filtered_show_all: "Mostrar todas las repeticiones públicas" empty_default_title: "No hay repeticiones públicas por el momento." empty_default_body: "Cuando un club haga pública una grabación, aparecerá aquí." empty_default_live_link: "Ir a los directos" show: title: "Repetición — %{title}" meta_description: "Repetición %{title} en Match Live TV." back_to_replays: "← Directos pasados" processing_title: "Repetición en procesamiento" processing_body: "La grabación se está preparando. Recibirás un correo cuando esté lista." badge_label: "REPLAY" meta_line_duration: "Duración %{value}" meta_line_until: "Hasta el %{date}" meta_line_public: "Público" meta_line_private: "Privado (enlace)" download_link: "Descargar MP4" youtube_link: "Abrir en YouTube" youtube_only_body: "Repetición en YouTube (no hay copia disponible en el servidor)." file_missing_title: "Archivo no disponible" file_missing_body: "El vídeo ya no está en el servidor (archivo eliminado o en migración)." file_missing_meta: "Duración grabada: %{duration} · %{size}" failed_title: "Repetición no disponible" failed_default_body: "Error al procesar la grabación." unavailable_title: "Repetición no disponible" unavailable_body: "Esta grabación ya no está accesible." team_pages: index: meta_title: "Equipos en Match Live TV — Directos y repeticiones de deporte juvenil" meta_description: "Descubre los equipos deportivos juveniles que transmiten en Match Live TV. Busca por nombre, filtra por deporte, encuentra directos en curso y archivos de repeticiones." heading: "Equipos en Match Live TV" hint: "Clubes y equipos con directos, repeticiones públicas o partidos programados. Busca tu equipo y abre la página para seguir el calendario y el archivo." search_placeholder: "Nombre del equipo, club, ciudad o pabellón…" search_aria_label: "Buscar equipo" search_button: "Buscar" sport_label: "Deporte" sport_all: "Todos los deportes" chips_label: "Mostrar" chip_live: "En directo" chip_replays: "Con repeticiones" reset_link: "Restablecer" results_found: "%{count} equipos encontrados" results_active: "%{count} equipos activos" results_query_suffix: " para «%{query}»" results_sport_suffix: " · %{sport}" badge_live: "En directo" badge_upcoming: "%{count} programados" badge_replay: "%{count} repeticiones" empty_filtered_title: "No se encontraron equipos" empty_filtered_suffix: " con los filtros seleccionados." empty_filtered_show_all: "Mostrar todos los equipos activos" empty_default_title: "No hay equipos activos por el momento." empty_default_body: "Cuando un club inicie directos o publique repeticiones, aparecerá aquí." empty_default_live_link: "Ir a los directos" footer_live_link: "Directos en curso" footer_replay_link: "Archivo de repeticiones" show: title: "%{team} — %{club} | Match Live TV" meta_description: "Sigue a %{team} (%{club}): directos, calendario de partidos y repeticiones en Match Live TV." breadcrumb_all_teams: "← Todos los equipos" live_now_label: "En directo ahora" watch_live_link: "Ver el directo" all_live_link: "Todos los directos" replay_archive_link: "Archivo de repeticiones" section_live_now: "En directo ahora" section_upcoming: "Próximos partidos" upcoming_hint: "Programados por el club: el directo comenzará cuando el staff inicie la transmisión." section_replays: "Repeticiones recientes" replays_more_link: "Ver todas las repeticiones de %{team} →" section_roster: "Plantilla" empty_title: "Ningún directo o repetición por el momento." empty_body: "Vuelve a comprobar antes de los próximos partidos: aquí aparecerán directos, calendario y el archivo del equipo." empty_link: "Ver todos los directos" score: timer_label: "Cronómetro" generic_label: "Marcador" sets_label: "Set %{set} · Sets ganados %{home}-%{away}" partial_entry: "Set %{set} %{home}-%{away}" partial_entry_no_number: "Set %{home}-%{away}" partials_prefix: "Parciales: %{value}" points_label: "%{team} %{home} - %{away} %{opponent}" fallback: "—" default_club_name: "Club" scheduled_date_format: "%d/%m/%Y a las %H:%M" scheduled_today: "Hoy a las %{time}" scheduled_tomorrow: "Mañana a las %{time}"