es:
password_policy:
hint: "Mínimo 8 caracteres, con al menos 3 entre: minúsculas, mayúsculas, números y símbolos."
activerecord:
attributes:
user:
password: Contraseña
admin_account:
password: Contraseña
errors:
models:
user:
attributes:
password:
too_short: "es demasiado corta (mínimo %{count} caracteres)"
too_long: "es demasiado larga (máximo %{count} caracteres)"
complexity: "debe incluir al menos 3 entre: minúsculas, mayúsculas, números y símbolos"
admin_account:
attributes:
password:
too_short: "es demasiado corta (mínimo %{count} caracteres)"
too_long: "es demasiado larga (máximo %{count} caracteres)"
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 cuenta de emisión por equipo, 1 directo"
plan_light: "Premium Light — 59 €/año"
plan_full: "Premium Full — 199 €/año"
plan_hint: "La tarjeta, la transferencia o la facturación mensual se eligen después, en Abono. El plan de pago se activa solo tras el pago."
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: Enviar invitación por email
share_hint: "Enlace también enviado por email (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:
principal_heading: Cuenta principal
principal_body_html: "La cuenta con la que se registró el club (%{email}) es la designada para este equipo: con ella entras en la app y arrancas el directo."
principal_score_hint_html: "Para el marcador desde otro teléfono, durante el directo comparte el enlace de control (no hace falta una segunda cuenta)."
extra_staff_heading: Otras cuentas que pueden transmitir
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
invite_form_heading: Invitar una cuenta a transmitir
invite_form_hint: "No es la plantilla (jugadores/staff en pista). Introduce el email: enviamos el enlace automáticamente; también puedes copiarlo y compartirlo."
invite_once_note: "Si hace falta, copia también el enlace abajo para un segundo envío (WhatsApp, SMS)."
copied: Copiado
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}."
prices:
yearly: "%{amount}/año"
monthly: "%{amount}/mes"
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: Directo
share_live: Compartir directo
share_action: Compartir
copy_link: Copiar enlace
copy_action: Copiar
copy_live: Copiar directo
copy_regia: Copiar control
links_nav: Acciones rápidas
regia_share_label: Control
stream_controls_label: Live
share_regia: Compartir enlace de control
preview_ended: Directo finalizado
preview_waiting: Vista previa a la espera de señal…
preview_hide: Ocultar vista previa
preview_show: Mostrar vista previa
preview_off_hint: Vista previa apagada · sin descarga de vídeo
pause: Pausar directo
resume: Reanudar directo
mute: Silenciar audio
unmute: Reactivar audio
stop: Finalizar directo
min_quality:
label: Calidad mínima de transmisión
summary: Calidad
hint: El encoder no baja de este nivel. Automática adapta el bitrate para reducir los cortes.
recommend: "Se recomienda Automática: se adapta a la red y al teléfono, sin forzar el máximo."
auto: Automática
telemetry:
label: Teléfono
waiting: Esperando al teléfono…
stale: El teléfono no responde
just_now: ahora
seconds_ago: "hace %{n}s"
publisher_on: RTMP ok
publisher_off: RTMP ausente
battery: Batería
network: Red
bitrate: Bitrate
bitrate_max: "máx %{n}"
bitrate_title: "%{current} Mbps actuales · máximo %{target} Mbps"
bitrate_tap: Toca para definir la calidad mínima
fps: FPS
thermal: Temp.
thermal_nominal: OK
thermal_fair: Caliente
thermal_serious: Muy caliente
thermal_critical: Crítica
modal:
set_won_title: Set ganado
confirm: Cerrar set
confirm_action: Confirmar
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"
muted: "Audio silenciado — YouTube no recibe el micrófono"
unmuted: "Audio del micrófono reactivado"
closed: Retransmisión finalizada
resume_error: Error al reanudar la retransmisión
pause_error: Error al pausar la retransmisión
mute_error: Error al silenciar el audio
close_error: Error al cerrar
close_confirm: "¿Cerrar definitivamente la retransmisión?"
pause_confirm_title: "¿Pausar el directo?"
pause_confirm_body: La portada seguirá en antena hasta que lo reanudes.
resume_confirm_title: "¿Reanudar el directo?"
resume_confirm_body: La cámara volverá a antena en lugar de la portada.
mute_confirm_title: "¿Silenciar el audio?"
mute_confirm_body: El micrófono no se enviará al stream hasta que lo reactives.
unmute_confirm_title: "¿Reactivar el audio?"
unmute_confirm_body: El micrófono volverá a estar activo en el stream.
advance_period_title: "¿Pasar al periodo siguiente?"
advance_period_body: El marcador pasará al siguiente periodo y se guardará el marcador del periodo actual.
stop_confirm_title: "¿Terminar el directo?"
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:"
min_quality_updated: Calidad mínima actualizada
min_quality_error: Error al actualizar la calidad mínima
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.
created_complete_subscription: Club creado. Completa la suscripción en esta página.
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)"
invite_email_sent: "Invitación enviada a %{email} (enlace válido 7 días)"
invite_email_failed: "Invitación creada, pero no se pudo enviar el email a %{email}. Copia y comparte el enlace de abajo."
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
unauthorized: No autorizado
invalid_token: Token no válido
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.
password_update_failed: No se pudo actualizar la contraseña
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}"