Aggiunge i tornei con hub, pagina pubblica e tabellone per semifinali e finali.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-05 15:05:57 +02:00
co-authored by Cursor
parent d52434fb2e
commit a1f4c24a43
124 changed files with 6979 additions and 91 deletions
+1
View File
@@ -7,6 +7,7 @@ Sidekiq.configure_server do |config|
StreamPublisherSyncJob.ensure_chain
Ops::HealthMonitorJob.ensure_chain
Streams::AutoscalerJob.ensure_chain
Streams::NightCloudSweeperJob.ensure_chain
end
end
+8
View File
@@ -57,6 +57,13 @@ en:
edit_club: Edit club
subscription: Subscription
new_team: New team
tournaments: Tournaments
tournaments_full_badge: FULL
tournaments_locked_hint: Tournaments are available on Premium Full only.
new_tournament: New tournament
tournaments_heading: Tournaments
tournament_dates: Dates
tournament_status: Status
live_streams: Live streams
replay_archive: Replay archive
replay_heading: Replay
@@ -691,6 +698,7 @@ en:
invalid: Invalid invitation
wrong_email: "This invitation is for %{email}"
joined_team: You've joined the team!
joined_tournament: You're assigned to broadcast this tournament. Open the Match Live TV app to go live.
signup_to_accept: "Sign up with %{email} to accept the invitation"
registrations:
accept_terms_required: You must accept the privacy policy and terms of service to register.
+8
View File
@@ -57,6 +57,13 @@ it:
edit_club: Modifica società
subscription: Abbonamento
new_team: Nuova squadra
tournaments: Tornei
tournaments_full_badge: FULL
tournaments_locked_hint: I tornei sono disponibili solo con Premium Full.
new_tournament: Nuovo torneo
tournaments_heading: Tornei
tournament_dates: Date
tournament_status: Stato
live_streams: Dirette live
replay_archive: Archivio Replay
replay_heading: Replay
@@ -714,6 +721,7 @@ it:
invalid: Invito non valido
wrong_email: "Questo invito è per %{email}"
joined_team: Sei entrato nella squadra!
joined_tournament: Sei incaricato delle dirette del torneo. Apri lapp Match Live TV per andare in onda.
signup_to_accept: "Registrati con %{email} per accettare l'invito"
registrations:
accept_terms_required: Devi accettare l'informativa privacy e i termini di servizio per registrarti.
+11
View File
@@ -61,6 +61,17 @@ en:
expiry: "The link is valid until %{date}."
ignore: If you were not expecting this message, you can ignore it.
footer: "Match Live TV — %{email}"
tournament_invite:
subject: "Broadcast invite — %{tournament} (%{club})"
hello: Hi,
body_html: "<strong>%{inviter}</strong> invited you to broadcast matches at <strong>%{tournament}</strong> (%{club}) — %{assignment}."
body_text: "%{inviter} invited you to broadcast matches at %{tournament} (%{club}) — %{assignment}."
cta: Accept the invite
link_fallback: "If the button does not work, open this link:"
steps: "Sign in or register with this same email, accept the invite, then start streams from the Match Live TV app."
expiry: "The link is valid until %{date}."
ignore: If you were not expecting this message, you can ignore it.
footer: "Match Live TV — %{email}"
invoice:
subject: "Invoice %{number} — Match Live TV"
attachment_prefix: invoice
+11
View File
@@ -61,6 +61,17 @@ it:
expiry: "Il link è valido fino al %{date}."
ignore: Se non ti aspettavi questo messaggio, puoi ignorarlo.
footer: "Match Live TV — %{email}"
tournament_invite:
subject: "Invito a trasmettere — %{tournament} (%{club})"
hello: Ciao,
body_html: "<strong>%{inviter}</strong> ti ha invitato a trasmettere partite del torneo <strong>%{tournament}</strong> (%{club}) — %{assignment}."
body_text: "%{inviter} ti ha invitato a trasmettere partite del torneo %{tournament} (%{club}) — %{assignment}."
cta: Accetta linvito
link_fallback: "Se il pulsante non funziona, apri questo link:"
steps: "Accedi o registrati con questa stessa email, accetta linvito e avvia le dirette dallapp Match Live TV."
expiry: "Il link è valido fino al %{date}."
ignore: Se non ti aspettavi questo messaggio, puoi ignorarlo.
footer: "Match Live TV — %{email}"
invoice:
subject: "Fattura %{number} — Match Live TV"
attachment_prefix: fattura
+1
View File
@@ -133,6 +133,7 @@ de:
youtube_club: Vereinskanal
youtube_none: nein
cover_sponsor_html: "Anpassbares Titelbild <strong>mit Sponsoren</strong>"
tournaments_html: "Mehrtägige Turniere, Delegierung der Übertragungen und Tableau"
complete_billing: Rechnungsdaten vervollständigen
start_free: Kostenlos starten
register_with_price: "Registrieren — %{price}"
+1
View File
@@ -133,6 +133,7 @@ en:
youtube_club: club channel
youtube_none: "no"
cover_sponsor_html: "Customisable cover <strong>with sponsors</strong>"
tournaments_html: "Multi-day tournaments, delegated broadcasts and bracket"
complete_billing: Complete billing details
start_free: Start for free
register_with_price: "Register — %{price}"
+1
View File
@@ -133,6 +133,7 @@ es:
youtube_club: canal del club
youtube_none: "no"
cover_sponsor_html: "Portada personalizable <strong>con patrocinadores</strong>"
tournaments_html: "Torneos de varios días, delegación de directos y cuadro"
complete_billing: Completar datos de facturación
start_free: Empieza gratis
register_with_price: "Regístrate — %{price}"
+1
View File
@@ -133,6 +133,7 @@ fr:
youtube_club: chaîne du club
youtube_none: non
cover_sponsor_html: "Jaquette personnalisable <strong>avec sponsors</strong>"
tournaments_html: "Tournois multi-jours, délégation des directs et tableau"
complete_billing: Compléter les données de facturation
start_free: Commencer gratuitement
register_with_price: "S'inscrire — %{price}"
+1
View File
@@ -133,6 +133,7 @@ it:
youtube_club: canale società
youtube_none: "no"
cover_sponsor_html: "Copertina personalizzabile <strong>con sponsor</strong>"
tournaments_html: "Tornei multi-giorno, delega dirette e tabellone"
complete_billing: Completa dati di fatturazione
start_free: Inizia gratis
register_with_price: "Registrati — %{price}"
+245
View File
@@ -0,0 +1,245 @@
en:
tournaments:
tbd: TBD
index:
title: "Tournaments — %{name}"
heading: Tournaments
lead: Organize a multi-day tournament, delegate broadcasts, and publish groups, standings and a bracket.
new: New tournament
empty: No tournaments yet.
open: Manage
delete: Delete
col_name: Tournament
col_dates: Dates
col_status: Status
upgrade: Tournaments are available on Premium Full.
new:
title: "New tournament — %{name}"
heading: New tournament
submit: Create tournament
form:
name: Name
sport: Sport
venue: Venue
starts_on: Start
ends_on: End
format: Format
courts: Courts (one per line)
knockout_size: Knockout size
description: Description
logo: Tournament logo
logo_hint: PNG, JPEG or WebP. Shown on the public page and in the tournament list.
formats:
groups: Groups only
knockout: Knockout only
mixed: Groups + knockout
free: Open schedule
status:
draft: Draft
published: Published
live: Live
archived: Archived
hub:
title: "%{name} — Tournament"
back: "← Club"
public_page: Public page
publish: Publish
unpublish: Back to draft
archive: Archive
delete: Delete
delete_confirm: "Delete tournament “%{name}”? Teams, schedule, invites and related replays will be removed. This cannot be undone."
tabs:
squadre: Teams
struttura: Structure
calendario: Schedule
dirette: Streaming
tabellone: Bracket
overlap_warning: "Slot %{slot} has %{count} matches (plan limit: %{limit} concurrent streams)."
add_participant: Add team
participant_name: Team name
participant_group: Group
no_group: No group
link_club_team: Link a club team (optional)
add_group: Add group
generate_group_matches: Generate group matches
generate_hint: Builds the round-robin, then you can change times and courts on the schedule.
calendar_edit_hint: Edit date, time, court and teams on each row, then Save. Semis and the final can be set here or on the Bracket tab.
knockout_how_title: Semis and final
knockout_how_groups: Enter group results first. Standings decide 1st and 2nd.
knockout_how_seed: Use “Fill bracket” to put 1sts and 2nds into the semis, or pick the teams yourself.
knockout_how_advance: When you save a semi result, the final fills with the winners automatically.
knockout_round_empty: No matches in this round yet. Fill the bracket, or add a match from the schedule and pick this round.
winner_of: "Winner — %{match}"
winner_tbd: Winner to be decided
group_rank: "%{rank} %{group}"
group_rank_tbd: Qualified from group
schedule_another: Add another match
save_match: Save
logo: Logo
logo_file: Upload logo
logo_hint: Upload team logos here (PNG, JPEG or WebP). They appear on the schedule, overlay and public page.
tournament_logo_hint: Shown on the public page and in the tournament list.
squadre_edit_hint: On each row you can change name, group and logo. Upload a logo or edit the name, then press Save.
schedule_match: Schedule match
home: Home
away: Away
swap_sides: Swap home and away
streaming: Streaming
streaming_pending: pending
streaming_unassigned: Uncovered
streaming_invite: Invite
streaming_revoke: Revoke
streaming_revoke_confirm: "Revoke %{name} from this match?"
streaming_cancel: "Cancel the invite to %{email}?"
streaming_cancel_multi: "Cancel the invite to %{email}? It covers %{count} matches."
court: Court
datetime: Date and time
group: Group
round: Round
no_round:
invite_email: Operator email
stream_plan_title: Broadcast plan
stream_plan_hint: Who is streaming, and where each broadcast stands. Tick uncovered matches and invite an operator below.
stream_plan_invite_title: Invite an operator
stream_plan_invite_hint: Tick matches in the plan, or cover a whole court for a day. The email text is already below, fully editable.
stream_plan_live_col: Status
stream_plan_live:
live: Live
waiting_time: Waiting for kickoff
waiting_operator: Waiting for operator
ended: Ended
uncovered: Uncovered
stream_plan_live_count:
live:
one: "%{count} live"
other: "%{count} live"
waiting_time:
one: "%{count} waiting for kickoff"
other: "%{count} waiting for kickoff"
waiting_operator:
one: "%{count} waiting for operator"
other: "%{count} waiting for operator"
ended:
one: "%{count} ended"
other: "%{count} ended"
uncovered:
one: "%{count} uncovered"
other: "%{count} uncovered"
stream_plan_assigned:
one: "%{count} covered"
other: "%{count} covered"
stream_plan_pending:
one: "%{count} pending"
other: "%{count} pending"
stream_plan_open:
one: "%{count} uncovered"
other: "%{count} uncovered"
stream_plan_select_open: Select uncovered
stream_plan_select_match: Select this match
stream_plan_unscheduled: Unscheduled
stream_plan_match: Match
stream_plan_operator: Operator
stream_plan_invite_selected: Invite selected
stream_plan_court_day: Court and day
stream_plan_court_day_hint: If no matches are ticked, the invite covers every match on this court that day.
stream_plan_invite_court: Invite court and day
stream_plan_customize: Customize email
stream_plan_need_selection: Select at least one match, or invite a court and day.
invite_note: Note
invite_note_placeholder: E.g. Bring the tripod, arrive at 8:30
invite_match: This match
invite_court_day: Court and day
invite_submit: Send invite
invite_save: Save draft
invite_email_body: Email text
invite_email_hint: Pre-filled template, fully editable. Save a draft to come back later; when sending, {{link_invito}} becomes the real invite link. Drop an image into the editor or use the button; click the image and drag the bottom-right corner to resize.
invite_draft_hint: "Draft saved on %{time}. It stays here until you overwrite it."
invite_email_scope_generic: the matches assigned in this invite
invite_editor_toolbar: Formatting
invite_editor_bold: Bold
invite_editor_italic: Italic
invite_editor_underline: Underline
invite_editor_ul: Bulleted list
invite_editor_ol: Numbered list
invite_editor_link: Insert link
invite_editor_link_prompt: Link URL
invite_editor_image: Insert image
invite_image_invalid: Use a PNG, JPEG, WebP or GIF file.
invite_image_too_big: Image too large (max 2 MB).
invite_image_uploading: Uploading image…
invite_image_failed: Upload failed.
result: Result
save_result: Save
propose_knockout: Fill bracket
propose_hint: Fills the first knockout round with group 1sts/2nds. You can edit afterwards.
standings: Standings
played: P
won: W
lost: L
points: Pts
no_matches: No matches scheduled.
page:
title: "%{name} — %{club}"
draft_banner: Draft preview — this page is not public yet.
back_to_list: "← All tournaments"
tabs_label: Tournament sections
tabs:
risultati: Results
tabellone: Bracket
section_live: Live now
section_upcoming: Upcoming
section_board: Match board
board_hint: Every match in the tournament, with a live or replay link when available.
section_groups: Groups and standings
section_bracket: Bracket
bracket_empty: The bracket will appear once standings or knockout rounds are ready.
section_replays: Replays
watch: Watch
watch_live: Watch live
watch_replay: Watch replay
score: Score
no_media:
state:
live: Live
replay: Replay
scheduled: Scheduled
ended: Finished
waiting: Waiting
directory:
meta_title: Tournaments — Match Live TV
meta_description: Follow groups, brackets, live streams and replays of tournaments published on Match Live TV.
heading: Tournaments
hint: Boards, standings and links to live streams or replays. Open a tournament to follow it.
empty: No public tournaments right now.
follow: Follow the board →
section_on_live: Tournaments
live_hint: Groups, bracket and live streams on a page you can share.
all_link: All tournaments
flash:
tournaments:
created: Tournament created. Add teams and the schedule.
updated: Tournament updated.
published: Public page is live.
unpublished: Tournament moved back to draft.
archived: Tournament archived.
deleted: Tournament deleted.
delete_blocked_live: End live streams before deleting this tournament.
archived_locked: This tournament is archived.
group_matches_created: "Created %{count} group matches."
knockout_proposed: "Bracket updated (%{count} matches)."
participant_added: Team registered.
participant_updated: Team updated.
participant_removed: Team removed.
group_added: Group added.
group_removed: Group removed.
match_scheduled: Match added to the schedule.
match_updated: Match updated.
sides_swapped: Home and away swapped.
sides_swap_failed: Could not swap home and away.
match_deleted: Match deleted.
invite_email_sent: "Invite sent to %{email} (link valid 7 days)"
invite_email_failed: "Invite created, but the email to %{email} could not be sent. Copy and share the link."
invite_draft_saved: Email draft saved. You can send it later.
invite_canceled: Invite canceled.
assignment_revoked: Operator removed from this match.
result_saved: Result saved.
+245
View File
@@ -0,0 +1,245 @@
it:
tournaments:
tbd: Da definire
index:
title: "Tornei — %{name}"
heading: Tornei
lead: Organizza un torneo multi-giorno, delega le dirette e pubblica gironi, classifiche e tabellone.
new: Nuovo torneo
empty: Nessun torneo.
open: Gestisci
delete: Elimina
col_name: Torneo
col_dates: Date
col_status: Stato
upgrade: I tornei sono disponibili con Premium Full.
new:
title: "Nuovo torneo — %{name}"
heading: Nuovo torneo
submit: Crea torneo
form:
name: Nome
sport: Sport
venue: Sede
starts_on: Inizio
ends_on: Fine
format: Formula
courts: Campi (uno per riga)
knockout_size: Squadre in tabellone
description: Descrizione
logo: Logo del torneo
logo_hint: PNG, JPEG o WebP. Compare sulla pagina pubblica e nell'elenco tornei.
formats:
groups: Solo gironi
knockout: Solo eliminazione
mixed: Gironi + tabellone
free: Calendario libero
status:
draft: Bozza
published: Pubblicato
live: In corso
archived: Archiviato
hub:
title: "%{name} — Torneo"
back: "← Società"
public_page: Pagina pubblica
publish: Pubblica
unpublish: Torna in bozza
archive: Archivia
delete: Elimina
delete_confirm: "Eliminare il torneo «%{name}»? Squadre, calendario, inviti e replay associati verranno cancellati. Loperazione non è reversibile."
tabs:
squadre: Squadre
struttura: Struttura
calendario: Calendario
dirette: Dirette
tabellone: Tabellone
overlap_warning: "Nella fascia %{slot} hai %{count} gare (limite piano: %{limit} dirette)."
add_participant: Aggiungi squadra
participant_name: Nome squadra
participant_group: Girone
no_group: Nessun girone
link_club_team: Collega una squadra della società (facoltativo)
add_group: Aggiungi girone
generate_group_matches: Genera partite dei gironi
generate_hint: Crea il round-robin sui gironi, poi cambia orari e campi dal calendario.
calendar_edit_hint: Su ogni riga puoi cambiare data, ora, campo e squadre, poi Salva. Semifinali e finali si scelgono qui o dal tab Tabellone.
knockout_how_title: Semifinali e finali
knockout_how_groups: Chiudi i risultati dei gironi. La classifica decide chi è 1° e 2°.
knockout_how_seed: Usa «Compila tabellone» per mettere 1° e 2° in semifinale, oppure scegli tu le squadre dai menu.
knockout_how_advance: Quando salvi il risultato di una semifinale, la finale si riempie da sola con le vincenti.
knockout_round_empty: Nessuna gara in questa fase. Compila il tabellone oppure aggiungila dal calendario scegliendo la fase.
winner_of: "Vincente — %{match}"
winner_tbd: Vincente da definire
group_rank: "%{rank}° %{group}"
group_rank_tbd: Qualificata da girone
schedule_another: Aggiungi un'altra partita
save_match: Salva
logo: Logo
logo_file: Carica logo
logo_hint: I loghi delle squadre si caricano qui (PNG, JPEG o WebP). Compariranno in calendario, overlay e pagina pubblica.
tournament_logo_hint: Compare sulla pagina pubblica e nell'elenco tornei.
squadre_edit_hint: Su ogni riga puoi cambiare nome, girone e logo. Carica logo oppure modifica il nome e premi Salva.
schedule_match: Programma partita
home: Casa
away: Ospite
swap_sides: Inverti casa e ospite
streaming: Streaming
streaming_pending: in attesa
streaming_unassigned: Da coprire
streaming_invite: Invita
streaming_revoke: Revoca
streaming_revoke_confirm: "Revocare %{name} da questa partita?"
streaming_cancel: "Annullare l'invito a %{email}?"
streaming_cancel_multi: "Annullare l'invito a %{email}? Vale per %{count} partite."
court: Campo
datetime: Data e ora
group: Girone
round: Fase
no_round:
invite_email: Email operatore
stream_plan_title: Piano dirette
stream_plan_hint: Chi trasmette, e a che punto è ogni diretta. Spunta le gare da coprire e invita un operatore più sotto.
stream_plan_invite_title: Invita un operatore
stream_plan_invite_hint: Spunta le partite nel piano, oppure copri un campo intero per giornata. Il testo della mail è già qui sotto, modificabile.
stream_plan_live_col: Stato
stream_plan_live:
live: In diretta
waiting_time: "In attesa dell'orario"
waiting_operator: "In attesa dell'operatore"
ended: Terminata
uncovered: Da coprire
stream_plan_live_count:
live:
one: "%{count} in diretta"
other: "%{count} in diretta"
waiting_time:
one: "%{count} in attesa dell'orario"
other: "%{count} in attesa dell'orario"
waiting_operator:
one: "%{count} in attesa dell'operatore"
other: "%{count} in attesa dell'operatore"
ended:
one: "%{count} terminata"
other: "%{count} terminate"
uncovered:
one: "%{count} da coprire"
other: "%{count} da coprire"
stream_plan_assigned:
one: "%{count} coperta"
other: "%{count} coperte"
stream_plan_pending:
one: "%{count} in attesa"
other: "%{count} in attesa"
stream_plan_open:
one: "%{count} da coprire"
other: "%{count} da coprire"
stream_plan_select_open: Seleziona da coprire
stream_plan_select_match: Seleziona questa partita
stream_plan_unscheduled: Da programmare
stream_plan_match: Partita
stream_plan_operator: Operatore
stream_plan_invite_selected: Invita selezionate
stream_plan_court_day: Campo e giornata
stream_plan_court_day_hint: Se non spunti partite, linvito copre tutte le gare di questo campo in quella data.
stream_plan_invite_court: Invita campo e giornata
stream_plan_customize: Personalizza la mail
stream_plan_need_selection: Seleziona almeno una partita, oppure invita un campo e una giornata.
invite_note: Nota
invite_note_placeholder: Es. Porta il treppiede, arrivo alle 8:30
invite_match: Questa partita
invite_court_day: Campo e giornata
invite_submit: Invia invito
invite_save: Salva bozza
invite_email_body: Testo della mail
invite_email_hint: Modello già compilato, modificabile. Salva la bozza per riprenderla dopo; allinvio {{link_invito}} diventa il link reale. Trascina unimmagine nelleditor o usa il pulsante; per ridimensionarla cliccala e tira langolo in basso a destra.
invite_draft_hint: "Bozza salvata il %{time}. Resta qui finché non la sovrascrivi."
invite_email_scope_generic: le partite assegnate in questo invito
invite_editor_toolbar: Formattazione
invite_editor_bold: Grassetto
invite_editor_italic: Corsivo
invite_editor_underline: Sottolineato
invite_editor_ul: Elenco puntato
invite_editor_ol: Elenco numerato
invite_editor_link: Inserisci link
invite_editor_link_prompt: URL del link
invite_editor_image: Inserisci immagine
invite_image_invalid: Usa un file PNG, JPEG, WebP o GIF.
invite_image_too_big: Immagine troppo grande (max 2 MB).
invite_image_uploading: Caricamento immagine…
invite_image_failed: Caricamento non riuscito.
result: Risultato
save_result: Salva
propose_knockout: Compila tabellone
propose_hint: Compila la prima fase con 1°/2° dei gironi. Puoi spostare a mano.
standings: Classifica
played: G
won: V
lost: P
points: Pt
no_matches: Nessuna partita in calendario.
page:
title: "%{name} — %{club}"
draft_banner: Anteprima bozza — la pagina non è ancora pubblica.
back_to_list: "← Tutti i tornei"
tabs_label: Sezioni del torneo
tabs:
risultati: Risultati
tabellone: Tabellone
section_live: In onda ora
section_upcoming: Prossime gare
section_board: Cartellone
board_hint: Tutte le gare del torneo, con diretta o replay quando disponibili.
section_groups: Gironi e classifiche
section_bracket: Tabellone
bracket_empty: Il tabellone sarà visibile quando ci sono classifiche o fasi a eliminazione.
section_replays: Replay
watch: Guarda
watch_live: Guarda diretta
watch_replay: Guarda replay
score: Risultato
no_media:
state:
live: In diretta
replay: Replay
scheduled: In programma
ended: Terminata
waiting: In attesa
directory:
meta_title: Tornei in corso — Match Live TV
meta_description: Segui gironi, tabellone, dirette e replay dei tornei pubblicati su Match Live TV.
heading: Tornei
hint: Cartellone, classifiche e link alle dirette o ai replay. Scegli un torneo per seguire lo svolgimento.
empty: Nessun torneo pubblico al momento.
follow: Segui il cartellone →
section_on_live: Tornei
live_hint: Gironi, tabellone e dirette del torneo, in una pagina da condividere.
all_link: Tutti i tornei
flash:
tournaments:
created: Torneo creato. Aggiungi le squadre e il calendario.
updated: Torneo aggiornato.
published: Pagina pubblica attiva.
unpublished: Torneo riportato in bozza.
archived: Torneo archiviato.
deleted: Torneo eliminato.
delete_blocked_live: Chiudi le dirette in corso prima di eliminare il torneo.
archived_locked: Il torneo è archiviato.
group_matches_created: "Create %{count} partite dai gironi."
knockout_proposed: "Tabellone aggiornato (%{count} gare)."
participant_added: Squadra iscritta.
participant_updated: Squadra aggiornata.
participant_removed: Squadra rimossa.
group_added: Girone aggiunto.
group_removed: Girone rimosso.
match_scheduled: Partita inserita in calendario.
match_updated: Partita aggiornata.
sides_swapped: Casa e ospite invertiti.
sides_swap_failed: Impossibile invertire casa e ospite.
match_deleted: Partita eliminata.
invite_email_sent: "Invito inviato a %{email} (link valido 7 giorni)"
invite_email_failed: "Invito creato, ma lemail a %{email} non è partita. Copia e condividi il link."
invite_draft_saved: Bozza della mail salvata. Puoi inviarla quando vuoi.
invite_canceled: Invito annullato.
assignment_revoked: Operatore rimosso da questa partita.
result_saved: Risultato salvato.
+1
View File
@@ -12,6 +12,7 @@ de:
faq: FAQ
live: Live-Spiele
teams: Teams
tournaments: Turniere
my_club: Mein Verein
my_team: Mein Team
login: Anmelden
+1
View File
@@ -12,6 +12,7 @@ en:
faq: FAQ
live: Live matches
teams: Teams
tournaments: Tournaments
my_club: My club
my_team: My team
login: Log in
+1
View File
@@ -12,6 +12,7 @@ es:
faq: FAQ
live: Directos
teams: Equipos
tournaments: Torneos
my_club: Mi club
my_team: Mi equipo
login: Acceder
+1
View File
@@ -12,6 +12,7 @@ fr:
faq: FAQ
live: Directs
teams: Équipes
tournaments: Tournois
my_club: Mon club
my_team: Mon équipe
login: Connexion
+1
View File
@@ -12,6 +12,7 @@ it:
faq: FAQ
live: Dirette live
teams: Squadre
tournaments: Tornei
my_club: La mia società
my_team: La mia squadra
login: Accedi
+29
View File
@@ -158,6 +158,9 @@ Rails.application.routes.draw do
get "squadre", to: "public/team_pages#index", as: :public_team_pages
get "squadre/:slug", to: "public/team_pages#show", as: :public_team_page,
constraints: { slug: /[a-z0-9]+(?:-[a-z0-9]+)*/ }
get "tornei", to: "public/tournament_pages#index", as: :public_tournament_pages
get "tornei/:slug", to: "public/tournament_pages#show", as: :public_tournament_page,
constraints: { slug: /[a-z0-9]+(?:-[a-z0-9]+)*/ }
get "replay", to: "public/replay#index", as: :public_replay_index
get "replay/:id", to: "public/replay#show", as: :public_replay
get "replay/:id/stream", to: "public/replay#stream", as: :public_replay_stream
@@ -228,6 +231,32 @@ Rails.application.routes.draw do
get "teams/new", to: redirect("/clubs/new")
get "clubs/:club_id/teams/new", to: "teams#new", as: :new_club_team
post "clubs/:club_id/teams", to: "teams#create", as: :club_teams
get "clubs/:club_id/tournaments", to: "tournaments#index", as: :club_tournaments
get "clubs/:club_id/tournaments/new", to: "tournaments#new", as: :new_club_tournament
post "clubs/:club_id/tournaments", to: "tournaments#create"
get "tournaments/:id", to: "tournaments#show", as: :tournament
patch "tournaments/:id", to: "tournaments#update"
delete "tournaments/:id", to: "tournaments#destroy"
post "tournaments/:id/publish", to: "tournaments#publish", as: :publish_tournament
post "tournaments/:id/unpublish", to: "tournaments#unpublish", as: :unpublish_tournament
post "tournaments/:id/archive", to: "tournaments#archive", as: :archive_tournament
post "tournaments/:id/generate_group_matches", to: "tournaments#generate_group_matches", as: :generate_group_matches_tournament
post "tournaments/:id/propose_knockout", to: "tournaments#propose_knockout", as: :propose_knockout_tournament
post "tournaments/:id/participants", to: "tournament_participants#create", as: :tournament_participants
patch "tournaments/:id/participants/:participant_id", to: "tournament_participants#update", as: :tournament_participant
delete "tournaments/:id/participants/:participant_id", to: "tournament_participants#destroy"
post "tournaments/:id/groups", to: "tournament_groups#create", as: :tournament_groups
delete "tournaments/:id/groups/:group_id", to: "tournament_groups#destroy", as: :tournament_group
post "tournaments/:id/matches", to: "tournament_matches#create", as: :tournament_matches
patch "tournaments/:id/matches/:match_id", to: "tournament_matches#update", as: :tournament_match
post "tournaments/:id/matches/:match_id/swap", to: "tournament_matches#swap", as: :swap_tournament_match
delete "tournaments/:id/matches/:match_id", to: "tournament_matches#destroy"
post "tournaments/:id/matches/:match_id/result", to: "tournament_results#create", as: :tournament_match_result
post "tournaments/:id/invitations", to: "tournament_invitations#create", as: :tournament_invitations
post "tournaments/:id/invite_draft", to: "tournament_invitations#save_draft", as: :tournament_invite_draft
post "tournaments/:id/invite_images", to: "tournament_invitations#upload_image", as: :tournament_invite_images
delete "tournaments/:id/invitations/:invitation_id", to: "tournament_invitations#destroy", as: :tournament_invitation
delete "tournaments/:id/assignments/:assignment_id", to: "tournament_assignments#destroy", as: :tournament_assignment
get "teams/:id/dettagli", to: "teams#details", as: :team_details
get "teams/:id/dashboard", to: "teams#dashboard"
get "teams/:id/roster", to: "teams#roster"