Spielerpositionen, Statistiken, Fahrgemeinschaften, Spielfeld-Visualisierung

- PlayerPosition Enum (7 Handball-Positionen) mit Label/ShortLabel
- Spielerstatistik pro Spiel (Tore, Würfe, TW-Paraden, Bemerkung)
- Position-Dropdown in Spieler-Editor und Event-Stats-Formular
- Statistik-Seite: TW zuerst, Trennlinie, Feldspieler, Position-Badges
- Spielfeld-SVG mit Ampel-Performance (grün/gelb/rot)
- Anklickbare Spieler im Spielfeld öffnen Detail-Modal
- Fahrgemeinschaften (Anbieten, Zuordnen, Zurückziehen)
- Übersetzungen in allen 6 Sprachen (de, en, pl, ru, ar, tr)
- .gitignore für Laravel hinzugefügt
- Demo-Daten mit Positionen und Statistiken

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Rhino
2026-03-02 11:47:34 +01:00
parent 2e24a40d68
commit ad60e7a9f9
46 changed files with 2041 additions and 86 deletions

View File

@@ -338,6 +338,10 @@ return [
'log_participant_changed' => 'Teilnahme-Status für ":event" geändert auf :status',
'log_catering_changed' => 'Catering-Status für ":event" geändert auf :status',
'log_timekeeper_changed' => 'Zeitnehmer-Status für ":event" geändert auf :status',
'log_carpool_offer' => 'Fahrt für ":event" angeboten (:seats Plätze)',
'log_carpool_withdrawn' => 'Fahrt für ":event" zurückgezogen (:passengers Mitfahrer entfernt)',
'log_carpool_joined' => ':player fährt bei :driver mit (Event: ":event")',
'log_carpool_left' => ':player wurde von Fahrt bei :driver entfernt (Event: ":event")',
'log_comment_created' => 'Kommentar zu ":event" hinzugefügt',
'log_comment_deleted' => 'Kommentar zu ":event" gelöscht',
'log_file_uploaded' => 'Datei ":name" hochgeladen',
@@ -389,6 +393,15 @@ return [
'favicon_uploaded' => 'Favicon wurde aktualisiert.',
'favicon_removed' => 'Favicon wurde entfernt.',
// Logos
'logo_login_label' => 'Login-Logo',
'logo_login_desc' => 'Wird auf der Anmeldeseite oberhalb des App-Namens angezeigt.',
'logo_app_label' => 'App-Logo (Navigation)',
'logo_app_desc' => 'Wird in der Navigationsleiste neben dem App-Namen angezeigt.',
'logo_current' => 'Aktuelles Logo',
'logo_remove' => 'Logo entfernen',
'logo_hint' => 'PNG, SVG, JPG, GIF, WebP (max. 1 MB)',
// Undo / Revert
'log_revert' => 'Rückgängig',
'log_revert_confirm' => 'Möchtest du diese Aktion wirklich rückgängig machen?',
@@ -566,7 +579,7 @@ return [
// E-Mail Tab
'settings_tab_mail' => 'E-Mail',
'mail_config_title' => 'E-Mail-Konfiguration',
'mail_config_hint' => 'SMTP-Einstellungen fuer den E-Mail-Versand (z.B. Passwort-Reset, Benachrichtigungen).',
'mail_config_hint' => 'SMTP-Einstellungen für den E-Mail-Versand (z.B. Passwort-Reset, Benachrichtigungen).',
'mail_mailer_label' => 'Versandmethode',
'mail_log_mode' => 'Kein Versand (Log)',
'mail_host_label' => 'SMTP-Host',
@@ -575,11 +588,28 @@ return [
'mail_password_label' => 'Passwort',
'mail_from_address_label' => 'Absender-Adresse',
'mail_from_name_label' => 'Absender-Name',
'mail_encryption_label' => 'Verschluesselung',
'mail_encryption_label' => 'Verschlüsselung',
'mail_encryption_none' => 'Keine',
'mail_save' => 'Mail-Einstellungen speichern',
'mail_saved' => 'Mail-Einstellungen wurden gespeichert.',
'mail_test_button' => 'Verbindung testen',
'mail_testing' => 'Teste Verbindung...',
'mail_test_success' => 'SMTP-Verbindung erfolgreich!',
// Spielerstatistik
'stats_player_detail' => 'Spielerdetails',
'stats_total_goals' => 'Gesamttore',
'stats_total_shots' => 'Gesamtwürfe',
'stats_gk_appearances' => 'TW-Einsätze',
'stats_total_saves' => 'Gesamtparaden',
'stats_close' => 'Schließen',
'player_goals' => 'Tore',
// Positionen & Spielfeld
'position' => 'Position',
'court_visualization' => 'Spielfeld-Aufstellung',
'court_no_data' => 'Keine Daten',
'performance_good' => 'Gut',
'performance_average' => 'Mittel',
'performance_below' => 'Unterdurchschnittlich',
];

View File

@@ -40,6 +40,24 @@ return [
'no_timekeeper_yet' => 'Noch kein Zeitnehmer eingetragen.',
'timekeeper_updated' => 'Zeitnehmer-Status aktualisiert.',
// Fahrgemeinschaften
'carpool' => 'Fahrgemeinschaften',
'carpool_offer' => 'Fahrt anbieten',
'carpool_update' => 'Fahrt aktualisieren',
'carpool_seats' => 'Freie Plätze',
'carpool_seats_count' => ':free von :total Plätzen frei',
'carpool_seats_too_few' => 'Es sind bereits mehr Mitfahrer zugeordnet als die neue Sitzplatzanzahl.',
'carpool_note_placeholder' => 'z.B. Treffpunkt, Abfahrtszeit...',
'carpool_withdraw' => 'Fahrt zurückziehen',
'carpool_withdraw_confirm' => 'Fahrt wirklich zurückziehen? Alle Mitfahrer werden entfernt.',
'carpool_join' => 'Zuordnen',
'carpool_leave' => 'Entfernen',
'carpool_full' => 'Alle Plätze belegt',
'no_carpool_yet' => 'Noch keine Fahrgemeinschaften angeboten.',
'carpool_my_offer' => 'Meine Fahrt',
'carpool_driver' => 'Fahrer/in',
'carpool_passengers' => 'Mitfahrer',
// Kommentare
'comments' => 'Kommentare',
'comment_placeholder' => 'Kommentar schreiben...',
@@ -71,6 +89,22 @@ return [
'score_away' => 'Gast',
'vs' => 'vs.',
// Spielerstatistik
'stats' => 'Spielerstatistik',
'stats_save' => 'Statistik speichern',
'stats_saved' => 'Statistik gespeichert.',
'stats_goalkeeper' => 'TW',
'stats_goalkeeper_long' => 'Torwart',
'stats_saves' => 'Gehalten',
'stats_shots_on_goal' => 'Würfe aufs Tor',
'stats_goals' => 'Tore',
'stats_shots' => 'Torwürfe',
'stats_note' => 'Bemerkung',
'stats_hit_rate' => 'Trefferquote',
'stats_save_rate' => 'Fangquote',
'stats_no_data' => 'Keine Statistikdaten.',
'stats_position' => 'Position',
// Staff-Sichtbarkeit
'signed_up' => 'zugesagt',
'withdrawn' => 'abgemeldet',

View File

@@ -97,6 +97,24 @@ return [
'parent_rep' => 'Elternvertretung',
'user' => 'Elternteil',
],
'player_position' => [
'torwart' => 'Torwart',
'links_aussen' => 'Linksaußen',
'rechts_aussen' => 'Rechtsaußen',
'rueckraum_links' => 'Rückraum Links',
'rueckraum_mitte' => 'Rückraum Mitte',
'rueckraum_rechts' => 'Rückraum Rechts',
'kreislaeufer' => 'Kreisläufer',
],
'player_position_short' => [
'torwart' => 'TW',
'links_aussen' => 'LA',
'rechts_aussen' => 'RA',
'rueckraum_links' => 'RL',
'rueckraum_mitte' => 'RM',
'rueckraum_rechts' => 'RR',
'kreislaeufer' => 'KL',
],
],
// Sprachen