Cattura periodica client-side (con consenso), storage ActiveStorage e overlay allineato all’immagine. Co-authored-by: Cursor <cursoragent@cursor.com>
543 lines
21 KiB
YAML
543 lines
21 KiB
YAML
de:
|
|
admin:
|
|
layout:
|
|
title: "Match Live TV — Admin"
|
|
nav:
|
|
dashboard: Dashboard
|
|
ops: Ops
|
|
announcements: Hinweise
|
|
clubs: Vereine & Teams
|
|
billing: Abrechnung
|
|
youtube: YouTube
|
|
sessions: Sitzungen
|
|
analytics: Analytics
|
|
stream_nodes: Stream-Knoten
|
|
password: Passwort
|
|
logout: Abmelden
|
|
flash:
|
|
login_required: Bitte melde dich an, um fortzufahren
|
|
login_success: Erfolgreich angemeldet
|
|
invalid_credentials: Ungültiger Benutzername oder Passwort
|
|
logout_success: Abgemeldet
|
|
password_current_incorrect: Das aktuelle Passwort ist falsch
|
|
password_too_short: Das neue Passwort muss mindestens 8 Zeichen lang sein
|
|
password_too_long: Das neue Passwort darf höchstens 72 Zeichen lang sein
|
|
password_too_weak: Das neue Passwort muss mindestens 3 aus Kleinbuchstaben, Großbuchstaben, Zahlen und Symbolen enthalten
|
|
password_same_as_current: Das neue Passwort muss sich vom aktuellen unterscheiden
|
|
password_mismatch: Die Passwörter stimmen nicht überein
|
|
password_updated: Passwort aktualisiert
|
|
ops_acknowledged: Vorfall übernommen
|
|
ops_resolved: Vorfall gelöst
|
|
ops_muted: Benachrichtigungen für 24 Stunden stummgeschaltet
|
|
stream_node_created: "Lab-Knoten %{slug} bereitgestellt."
|
|
stream_node_destroyed: "Knoten %{slug} entfernt."
|
|
stream_node_draining: "Knoten %{slug} im Drain-Modus."
|
|
autoscale_kill_on: "Autoscaler-Kill-Switch aktiv. Kein automatisches Scale-out."
|
|
autoscale_kill_off: "Autoscaler-Kill-Switch aus (STREAM_AUTOSCALE_ENABLED=1 weiterhin nötig)."
|
|
comped_granted: "Kostenloses Abonnement %{plan} für %{club} aktiviert."
|
|
comped_revoked: "Kostenloses Abonnement für %{club} widerrufen."
|
|
session_already_terminated: "Sitzung bereits beendet (%{status})."
|
|
session_stopped: Sitzung beendet.
|
|
session_stop_error: "Fehler beim Beenden: %{error}"
|
|
session_terminated_no_regia: "Sitzung beendet: Regie-Link kann nicht erzeugt werden."
|
|
session_regia_generated: Regie-Link erzeugt.
|
|
invoice_upload_hint: Lade das PDF aus der Liste „Zu berechnende Zahlungen“ hoch.
|
|
invoice_draft_created: Entwurf erstellt. Lade das PDF auf der Abrechnungsseite oder unten hoch.
|
|
invoice_issued: "Rechnung %{number} ausgestellt und an %{email} gesendet."
|
|
invoice_updated: "Rechnung %{number} aktualisiert."
|
|
invoice_uploaded: "Rechnung hochgeladen und an %{email} gesendet."
|
|
youtube_not_configured: Konfiguriere YOUTUBE_CLIENT_ID und YOUTUBE_CLIENT_SECRET in .env
|
|
announcement_created: Hinweis gespeichert
|
|
announcement_updated: Hinweis aktualisiert
|
|
announcement_destroyed: Hinweis gelöscht
|
|
common:
|
|
free_plan: Free
|
|
yes: "Ja"
|
|
no: "Nein"
|
|
dash: "—"
|
|
live_page: Live-Seite
|
|
auth:
|
|
new:
|
|
title: Admin-Anmeldung
|
|
username_label: Benutzername
|
|
password_label: Passwort
|
|
submit: Anmelden
|
|
initial_credentials_html: "Anfangs-Zugangsdaten: <code>admin</code> / <code>AdminPass123</code>. Ändere das Passwort nach der ersten Anmeldung."
|
|
passwords:
|
|
edit:
|
|
title: Passwort ändern
|
|
current_password_label: Aktuelles Passwort
|
|
new_password_label: "Neues Passwort (mind. 8, mindestens 3 Zeichenarten)"
|
|
confirm_password_label: Neues Passwort bestätigen
|
|
submit: Passwort speichern
|
|
cancel: Abbrechen
|
|
dashboard:
|
|
kpi:
|
|
active_sessions: Aktive Sitzungen
|
|
active_sessions_sub: gerade live
|
|
today: Heute übertragen
|
|
today_sub: "%{duration} Streaming"
|
|
month: Diesen Monat übertragen
|
|
month_sub: "%{duration} insgesamt"
|
|
teams: Teams
|
|
teams_sub: "%{count} Nutzer"
|
|
cpu: CPU
|
|
cpu_sub: "Last %{one} / %{five} / %{fifteen}"
|
|
ram: RAM
|
|
ram_sub: "%{used} / %{total}"
|
|
network: Bandbreite (gesamt)
|
|
network_sub: "↑ %{tx} · ↓ %{rx}"
|
|
recordings: Replays im Archiv
|
|
recordings_sub: "%{count} Aufnahmen"
|
|
charts:
|
|
cpu: CPU (%)
|
|
ram: RAM (%)
|
|
ops_panel:
|
|
title: Plattformstatus (Ops)
|
|
critical: "%{count} kritische(r) offene(r) Vorfall/Vorfälle"
|
|
view_dashboard: Ops-Dashboard ansehen
|
|
warnings: "%{count} Warnung(en)"
|
|
dashboard_link: Ops-Dashboard
|
|
none_html: "Keine offenen Vorfälle. %{link}"
|
|
disk:
|
|
system_title: Systemfestplatte
|
|
free_label: "Frei: %{free} (%{percent}% belegt)"
|
|
not_available: Festplattenmetriken nicht verfügbar
|
|
recordings_title: Aufnahmearchiv
|
|
recordings_content: "Inhalt der Aufnahmen: %{size}"
|
|
recordings_not_mounted: "Pfad %{path} nicht eingebunden"
|
|
sessions:
|
|
title: Aktive Sitzungen
|
|
table:
|
|
match: Spiel
|
|
status: Status
|
|
ingest: Ingest
|
|
start: Start
|
|
link: Link
|
|
none: Derzeit keine aktive Sitzung.
|
|
detail: Details
|
|
stop: Beenden
|
|
stop_confirm: Diese Sitzung beenden?
|
|
regia: Regie
|
|
teams:
|
|
title: Teams
|
|
matches_count: "%{count} Spiele"
|
|
view_all: "Vereine ansehen (%{count} Teams)"
|
|
stream_nodes:
|
|
title: Stream-Knoten
|
|
providers: "Cloud: %{cloud} · DNS: %{dns}"
|
|
actions_title: Aktionen
|
|
table_title: Registrierte Knoten
|
|
empty: Keine Knoten registriert.
|
|
free_slots:
|
|
one: "%{count} frei"
|
|
other: "%{count} frei"
|
|
kpi:
|
|
autoscaler: Autoscaler
|
|
kill_switch: KILL
|
|
kind: "Modus %{kind}"
|
|
free_slots: Freie Slots
|
|
soft_slots: "Soft-Schwelle ≤ %{soft}"
|
|
spare: Spare
|
|
warm_spare: Warm-Spares bereit
|
|
overflow: Overflow
|
|
overflow_nodes: Cloud/Lab-Knoten
|
|
budget: Geschätztes Budget
|
|
budget_of: "von €%{budget}/Monat (%{ok})"
|
|
autoscale: "Autoscaler %{enabled} · free_slots=%{free} (soft≤%{soft}) · spare=%{spare}/%{warm} · overflow=%{overflow}/%{max} · kind=%{kind}"
|
|
autoscale_budget: "Budget €%{eur}/€%{budget} (%{ok})"
|
|
kill_switch_active: "KILL-SWITCH AKTIV"
|
|
engage_kill_switch: "Kill-switch ON"
|
|
clear_kill_switch: "Kill-switch OFF"
|
|
kill_switch_confirm: "Autoscaler sofort blockieren?"
|
|
provision_lab: Lab bereitstellen
|
|
provision_cloud: Hetzner bereitstellen
|
|
provision_cloud_confirm: "Hetzner Cloud Server + DNS auf mltv-stream.net erstellen?"
|
|
hetzner_token_missing: "HCLOUD_TOKEN setzen, um Cloud-Provisioning zu aktivieren."
|
|
drain: Drain
|
|
destroy: Löschen
|
|
destroy_confirm: "Knoten %{slug} löschen?"
|
|
hosts_title: Lab-DNS (/etc/hosts)
|
|
col:
|
|
slug: Slug
|
|
role: Rolle
|
|
status: Status
|
|
slots: Slots
|
|
hostname: Hostname
|
|
provider: Provider
|
|
ops:
|
|
kpi:
|
|
critical: Kritisch offen
|
|
warning: Warnungen offen
|
|
total: Insgesamt offen
|
|
open:
|
|
title: Offene Vorfälle
|
|
table:
|
|
severity: Schweregrad
|
|
kind: Typ
|
|
title: Titel
|
|
occurrences: Anz.
|
|
last_seen: Zuletzt
|
|
none: Keine offenen Vorfälle. Die Plattform ist gesund.
|
|
actions:
|
|
acknowledge: Übernommen
|
|
resolve: Lösen
|
|
mute: Stumm 24h
|
|
resolved:
|
|
title: Gelöst (letzte 30 Tage)
|
|
table:
|
|
resolved_at: Gelöst
|
|
none: Kürzlich keine Vorfälle gelöst.
|
|
clubs:
|
|
index:
|
|
title: Vereine & Teams
|
|
subtitle_html: "Kostenlose Abonnements (Sponsoren / Aktionen) und YouTube-Status pro Team. Stripe-Zahlungen: %{billing_link}."
|
|
billing_link: Abrechnung
|
|
table:
|
|
club: Verein
|
|
plan: Plan
|
|
teams: Teams
|
|
comped: Kostenlos
|
|
stripe: Stripe
|
|
manage: Verwalten
|
|
invoices: Rechnungen
|
|
show:
|
|
back: "← Vereine & Teams"
|
|
sport_label: "Sportart: %{sport}"
|
|
recordings_archive: Replay-Archiv
|
|
billing_link: Zahlungen & Rechnungen
|
|
youtube_platform_link: Plattform-YouTube-Kanal
|
|
youtube_club_label: "Vereins-YouTube:"
|
|
youtube_connected: (verbunden)
|
|
youtube_premium_full_not_connected: Premium Full — Vereinskanal nicht verbunden (nutzt Match Live TV)
|
|
no_channel_hint_html: "Ohne verbundenen Kanal nutzt die App den Match-Live-TV-Kanal. %{link}."
|
|
link_channel: Kanal verbinden (Vereinsseite)
|
|
teams_title: Teams
|
|
no_teams: Keine Teams registriert.
|
|
table:
|
|
team: Team
|
|
sport: Sportart
|
|
matches_and_details: Spiele & Details
|
|
replay: Replays
|
|
comped:
|
|
title: Kostenloses Abonnement
|
|
description: "Sponsor oder Aktion: Vergib Premium Light/Full ohne Stripe-Zahlung. Jederzeit widerrufbar."
|
|
active_label: "Aktiv:"
|
|
since_label_html: "Seit %{date}"
|
|
by_admin: "· Admin %{username}"
|
|
stripe_note: "Hinweis: Es existiert auch ein verknüpftes Stripe-Abo; das kostenlose Abo hat Vorrang vor dem Plan."
|
|
revoke_button: Kostenloses Abo widerrufen (zurück zu Free oder Stripe wiederherstellen)
|
|
revoke_confirm: "Das kostenlose Abonnement für %{club} widerrufen?"
|
|
current_plan: "Aktueller Plan: %{plan}"
|
|
stripe_active: "· aktive Stripe-Zahlung"
|
|
plan_label: Plan
|
|
reason_label: "Grund (z. B. Sponsor 2026)"
|
|
reason_placeholder: "Sponsor, Aktion…"
|
|
grant_button: Kostenloses Abo gewähren
|
|
teams:
|
|
show:
|
|
back: "← %{club}"
|
|
sport_label: "Sportart: %{sport}"
|
|
club_label_html: "Verein: %{club} · %{replay_link} · %{billing_link}"
|
|
replay_link: Team-Replays
|
|
billing_link: Zahlungen & Rechnungen
|
|
youtube_label: "YouTube:"
|
|
youtube_platform_default_no_oauth: ", Standard ohne Vereins-OAuth"
|
|
youtube_platform_channel: "(Plattformkanal%{suffix})"
|
|
youtube_club_channel: (Vereinskanal)
|
|
youtube_not_ready: nicht bereit
|
|
no_channel_hint_html: "Ohne verbundenen Kanal nutzt die App den Match-Live-TV-Kanal. %{link}."
|
|
link_channel: Kanal verbinden (Vereinsseite)
|
|
matches_title: Spiele
|
|
sessions:
|
|
index:
|
|
title: Stream-Sitzungen
|
|
lead: Suche nach Verein, Team, Gegner oder Ort. Filtere nach Status, Plattform, Knoten und Zeitraum.
|
|
results: "%{shown} von %{total} angezeigt"
|
|
none: Keine Sitzungen für diese Filter.
|
|
filters:
|
|
q: Suche
|
|
q_placeholder: Verein, Team, Gegner…
|
|
status: Status
|
|
platform: Plattform
|
|
club: Verein
|
|
node: Ingest-Knoten
|
|
from: Von
|
|
to: Bis
|
|
any: Alle
|
|
apply: Filtern
|
|
reset: Zurücksetzen
|
|
table:
|
|
club: Verein
|
|
match: Spiel
|
|
status: Status
|
|
started: Start
|
|
ended: Ende
|
|
duration: Dauer
|
|
ingest: Ingest
|
|
disconnects: Verbindungsabbrüche
|
|
link: Link
|
|
detail: Details
|
|
regia: Regie
|
|
show:
|
|
title: "Sitzung %{id}"
|
|
heading: Sitzungsdetails
|
|
back: "← Zurück zu Sitzungen"
|
|
club_label: "Verein:"
|
|
summary_title: Übersicht
|
|
timing_title: Zeiten
|
|
ingest_title: Ingest & Medien
|
|
devices_title: Geräte
|
|
events_title: Ereignisse
|
|
events_none: Keine Ereignisse erfasst.
|
|
status_label: "Status:"
|
|
stop_button: Sitzung beenden
|
|
stop_confirm: "Übertragung beenden? Der RTMP-Pfad wird entfernt und der Status wechselt zu beendet."
|
|
match_label: "Spiel: %{team} gegen %{opponent}"
|
|
youtube_studio: YouTube Studio
|
|
broadcast: Übertragung
|
|
open_replays: Vereins-Replays öffnen
|
|
audio_muted: Audio stumm
|
|
audio_on: Audio an
|
|
ingest_node: "Ingest-Knoten:"
|
|
rtmp_ingest: "RTMP-Ingest:"
|
|
fields:
|
|
id: ID
|
|
club: Verein
|
|
team: Team
|
|
opponent: Gegner
|
|
operator: Operator
|
|
platform: Plattform
|
|
privacy: Privacy
|
|
quality: Qualität
|
|
min_quality: Min. Qualität
|
|
audio: Audio
|
|
created: Erstellt
|
|
started: Start
|
|
ended: Ende
|
|
duration: Dauer
|
|
disconnects: Abbrüche
|
|
scheduled: Geplantes Spiel
|
|
location: Ort
|
|
node: Knoten
|
|
rtmp: RTMP-Ingest
|
|
hls: HLS
|
|
recording: Replay
|
|
devices:
|
|
role: Rolle
|
|
network: Netz
|
|
battery: Akku
|
|
bitrate: Bitrate
|
|
fps: FPS
|
|
last_seen: Zuletzt gesehen
|
|
table:
|
|
type: Typ
|
|
when: Wann
|
|
meta: Details
|
|
links:
|
|
watch_title: Live-Link
|
|
none: Kein Video-Link für diese Sitzung verfügbar.
|
|
regia_title: Regie-Link
|
|
terminated: Sitzung beendet — Regie-Link nicht verfügbar.
|
|
regia_label: Regie
|
|
valid_until: "Gültig bis %{date}"
|
|
active_exists: Es existiert bereits ein aktiver Regie-Link (die URL kann nicht abgerufen werden). Erzeuge einen neuen, wenn du ihn erneut teilen musst.
|
|
none_active: Kein aktiver Regie-Link. Erzeuge einen Link zum Teilen mit der Person, die den Spielstand verwaltet.
|
|
generate_button: Regie-Link erzeugen
|
|
ingest:
|
|
none: "—"
|
|
role:
|
|
home: Home-lab
|
|
lab: Lab
|
|
cloud: Hetzner
|
|
|
|
analytics:
|
|
missing_path: Seite auswählen.
|
|
filters:
|
|
from: Von
|
|
to: Bis
|
|
device: Gerät
|
|
any: Alle
|
|
apply: Filtern
|
|
reset: Zurücksetzen
|
|
layer: Ebene
|
|
layer_move: Mausbewegungen
|
|
layer_click: Klicks
|
|
index:
|
|
title: Website-Analytics
|
|
lead: Aggregierte First-Party-Heatmaps (Bewegung/Klick) und Scrolltiefe, nur mit Statistik-Einwilligung. Keine personenbezogenen Daten.
|
|
none: Keine Daten im gewählten Zeitraum.
|
|
heatmap: Heatmap
|
|
table:
|
|
path: Seite
|
|
pageviews: Pageviews
|
|
moves: Bewegungen
|
|
clicks: Klicks
|
|
avg_scroll: Scroll Ø
|
|
max_scroll: Scroll max
|
|
show:
|
|
title: Seiten-Heatmap
|
|
back: "← Zurück zu Analytics"
|
|
summary: Übersicht
|
|
scroll_depth: Scrolltiefe
|
|
scroll_hint: "Durchschnitt %{avg}% · Maximum %{max}%"
|
|
heatmap_moves: Mausbewegungs-Karte
|
|
heatmap_clicks: Klickkarte
|
|
heatmap_hint: Farbiges Overlay auf dem Seiten-Screenshot. Grün = wenig, Rot = viel.
|
|
preview_title: Seiten-Screenshot
|
|
preview_unavailable: Vorschau für Pfade mit Platzhalter nicht verfügbar (z. B. /clubs/:id).
|
|
snapshot_missing: Noch kein Screenshot. Seite mit Analytics-Einwilligung (Desktop) besuchen und erneut versuchen.
|
|
snapshot_meta: "Screenshot %{device} · %{at}"
|
|
no_points: Keine aggregierten Punkte für diese Ebene im Zeitraum.
|
|
heatmap_title: Klickkarte
|
|
no_clicks: Keine aggregierten Klicks für diese Seite im Zeitraum.
|
|
|
|
billing:
|
|
index:
|
|
title: Zu berechnende Zahlungen
|
|
description: Bezahlte Stripe-Zahlungen ohne Rechnungs-PDF. Erstelle das PDF in deinen Systemen und lade es hier hoch — es wird der Zahlung zugeordnet und dem Kunden per E-Mail gesendet.
|
|
filter_label: "Vereine filtern:"
|
|
filter_all: Alle
|
|
incomplete_profile_warning: Rechnungsdaten unvollständig
|
|
no_billing_data: Keine Rechnungsdaten — der Kunde muss sein Profil vervollständigen.
|
|
pdf_label: Rechnungs-PDF
|
|
upload_button: PDF hochladen und an Kunden senden
|
|
none_pending: "Keine Zahlungen warten auf eine Rechnung%{club}."
|
|
none_pending_for_club: " für %{club}"
|
|
uploaded_title: Bereits hochgeladene Rechnungen
|
|
table:
|
|
date: Datum
|
|
club: Verein
|
|
description: Beschreibung
|
|
amount: Betrag
|
|
invoice: Rechnung
|
|
status: Status
|
|
back_dashboard: "← Dashboard"
|
|
billing_invoices:
|
|
index:
|
|
title: "Abrechnung — %{club}"
|
|
back_dashboard: "← Dashboard"
|
|
new_invoice: Neue Rechnung (ohne Zahlung)
|
|
payments_title: Zahlungen
|
|
table:
|
|
date: Datum
|
|
description: Beschreibung
|
|
amount: Betrag
|
|
invoice: Rechnung
|
|
pdf_suffix: " (PDF)"
|
|
edit_send_pdf: Bearbeiten / PDF senden
|
|
create_invoice: Rechnung erstellen
|
|
no_payments: Keine Zahlungen für diesen Verein erfasst.
|
|
all_invoices_title: Alle Rechnungen
|
|
table2:
|
|
number: Nummer
|
|
date: Datum
|
|
amount: Betrag
|
|
status: Status
|
|
payment: Zahlung
|
|
edit: Bearbeiten
|
|
no_invoices: Keine Rechnungen.
|
|
new:
|
|
title: "Neue Rechnung — %{club}"
|
|
linked_payment: "Verknüpft mit der Zahlung vom %{date} (%{amount})."
|
|
number_label: Rechnungsnummer
|
|
issued_on_label: Ausstellungsdatum
|
|
amount_label: "Betrag (€)"
|
|
notes_label: Interne Notizen (optional)
|
|
hint: Speichere den Entwurf, lade dann das PDF hoch und sende es dem Kunden vom nächsten Bildschirm aus.
|
|
submit: Rechnungsentwurf erstellen
|
|
back: "← Zahlungen & Rechnungen"
|
|
edit:
|
|
title: "Rechnung %{number} — %{club}"
|
|
status_label: "Status:"
|
|
sent_at: "· Gesendet am %{date}"
|
|
number_label: Rechnungsnummer
|
|
issued_on_label: Ausstellungsdatum
|
|
amount_label: "Betrag (€)"
|
|
payment_info: "Zahlung: %{description} — %{amount}"
|
|
pdf_label: Rechnungs-PDF
|
|
pdf_already: "PDF bereits hochgeladen: %{filename}"
|
|
notes_label: Interne Notizen
|
|
save_draft: Entwurf speichern
|
|
issue_send: Ausstellen und per E-Mail senden
|
|
issue_confirm: "Die Rechnung an %{email} senden?"
|
|
back: "← Zahlungen & Rechnungen"
|
|
youtube:
|
|
platform_token:
|
|
title: Token für den Match-Live-TV-Kanal
|
|
page_title: "YouTube-Token — Match Live TV"
|
|
channel_label: "Kanal: %{title}"
|
|
success: "Verbindung erfolgreich. Kopiere diese Zeile sofort:"
|
|
env_hint_html: "Füge zu <code>/opt/matchlivetv/infra/.env</code> hinzu:"
|
|
not_shown_again_html: "Wird nicht erneut angezeigt. Danach: <code>docker compose -f docker-compose.prod.yml restart rails sidekiq</code>"
|
|
no_refresh_token_html: "Google hat keinen Refresh-Token zurückgegeben. Widerrufe in deinem <a href=\"https://myaccount.google.com/permissions\" target=\"_blank\" rel=\"noopener\">Google-Konto → App-Zugriff</a> „Match Live TV“ und wiederhole den Vorgang ab <a href=\"/admin/youtube/platform\">/admin/youtube/platform</a>."
|
|
back_dashboard: "← Admin-Dashboard"
|
|
club_recordings:
|
|
index:
|
|
title: "Replays — %{club}"
|
|
announcements:
|
|
index:
|
|
title: Hinweise
|
|
lead: Meldungen für die Apps, die öffentliche Website und den Login-Bereich — Wartung, Updates oder Mitteilungen.
|
|
new: Neuer Hinweis
|
|
table_title: Hinweise
|
|
none: Noch keine Hinweise. Erstelle einen, um Apps und Website zu informieren.
|
|
new:
|
|
title: Neuer Hinweis
|
|
edit:
|
|
title: Hinweis bearbeiten
|
|
table:
|
|
status: Status
|
|
kind: Typ
|
|
title: Nachricht
|
|
channels: Ziele
|
|
window: Zeitraum
|
|
actions:
|
|
edit: Bearbeiten
|
|
delete: Löschen
|
|
delete_confirm: Diesen Hinweis löschen? Er erscheint nicht mehr an den gewählten Stellen.
|
|
kind:
|
|
info: Information
|
|
maintenance: Wartung
|
|
update: App-Update
|
|
severity:
|
|
info: Info
|
|
warning: Warnung
|
|
critical: Kritisch
|
|
status:
|
|
draft: Entwurf
|
|
published: Veröffentlicht
|
|
archived: Archiviert
|
|
channels:
|
|
android: Android-App
|
|
ios: iOS-App
|
|
web_public: Öffentliche Website
|
|
web_private: Login-Bereich
|
|
window:
|
|
always: Immer (solange veröffentlicht)
|
|
from: "Ab %{time}"
|
|
until: "Bis %{time}"
|
|
form:
|
|
kind: Typ
|
|
severity: Schwere
|
|
status: Status
|
|
channels: Wo anzeigen
|
|
channels_hint: "Eine oder mehrere Ziele wählen. Android und iOS sind unabhängig: bei unterschiedlichem Text zwei Hinweise anlegen. Der Login-Bereich ist nach der Anmeldung sichtbar (Verein, Teams, Konto)."
|
|
title: Titel
|
|
body: Text
|
|
starts_at: Sichtbar ab
|
|
ends_at: Sichtbar bis
|
|
window_hint: Leer lassen, um sofort und solange veröffentlicht anzuzeigen.
|
|
action_url: Link (optional)
|
|
action_url_hint: Bei Updates öffnet eine leere URL den Store der Plattform (Play Store auf Android, App Store auf iOS).
|
|
action_label: Button-Text
|
|
locales_legend: Text pro Sprache
|
|
locales_hint: Alle App-Sprachen ausfüllen (Italienisch, Englisch, Französisch, Deutsch, Spanisch). Italienisch ist Pflicht; fehlende Sprachen fallen auf Englisch, dann Italienisch zurück.
|
|
locale_required: Pflicht
|
|
dismissible: Nutzer können den Hinweis schließen
|
|
dismissible_hint: Haken entfernen für Wartungshinweise, die sichtbar bleiben sollen.
|
|
submit_create: Hinweis speichern
|
|
submit_update: Hinweis aktualisieren
|
|
cancel: Abbrechen
|
|
|