Files
fotospiel-app/resources/lang/de/admin.php
Codex Agent 8b4950c79d
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled
Refine ops health widget layout
2026-01-01 21:35:22 +01:00

626 lines
24 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
return [
'nav' => [
'platform' => 'Plattform',
'library' => 'Bibliothek',
'content' => 'Inhalte',
'daily_ops' => 'Täglicher Betrieb',
'weekly_ops' => 'Wöchentliche Aufgaben',
'rare_admin' => 'Selten / Admin',
'platform_management' => 'Plattformverwaltung',
'events' => 'Events',
'tenants' => 'Mandanten',
'curation' => 'Kuration',
'event_management' => 'Event-Management',
'tasks_emotions' => 'Aufgaben & Emotionen',
'content_library' => 'Content & Bibliothek',
'billing' => 'Billing & Finanzen',
'commercial' => 'Kommerziell',
'infrastructure' => 'Infrastruktur',
'storage' => 'Speicher',
'feedback_support' => 'Feedback & Support',
'branding' => 'Branding',
'security' => 'Sicherheit',
],
'common' => [
'key' => 'Schlüssel',
'value' => 'Wert',
'locale' => 'Sprache',
'german' => 'Deutsch',
'english' => 'Englisch',
'import' => 'Import',
'import_csv' => 'CSV importieren',
'download_csv_template' => 'CSVVorlage herunterladen',
'csv_file' => 'CSVDatei',
'close' => 'Schließen',
'hash' => '#',
'slug' => 'Slug',
'event' => 'Veranstaltung',
'tenant' => 'Mandant',
'uploads' => 'Uploads',
'uploads_today' => 'Uploads heute',
'thumb' => 'Vorschau',
'likes' => 'Gefällt mir',
'emotion' => 'Emotion',
'event_type' => 'Eventtyp',
'last_activity' => 'Letzte Aktivität',
'credits' => 'Credits',
'settings' => 'Einstellungen',
'join' => 'Beitreten',
'unnamed' => 'Ohne Namen',
'from' => 'Von',
'until' => 'Bis',
],
'photos' => [
'fields' => [
'event' => 'Veranstaltung',
'photo' => 'Foto',
'is_featured' => 'Hervorgehoben',
'metadata' => 'Metadaten',
'likes' => 'Gefällt mir',
],
'actions' => [
'feature' => 'Hervorheben',
'unfeature' => 'Hervorhebung entfernen',
'feature_selected' => 'Auswahl hervorheben',
'unfeature_selected' => 'Hervorhebung der Auswahl entfernen',
],
'table' => [
'photo' => 'Foto',
'event' => 'Veranstaltung',
'likes' => 'Gefällt mir',
],
],
'moderation' => [
'navigation' => [
'label' => 'Moderations-Queue',
],
'sections' => [
'photo' => 'Foto',
'moderation' => 'Moderation',
],
'fields' => [
'photo' => 'Foto',
'event' => 'Veranstaltung',
'tenant' => 'Mandant',
'uploader' => 'Uploader',
'uploaded_at' => 'Hochgeladen',
'ingest_source' => 'Quelle',
'status' => 'Status',
'moderation_notes' => 'Moderationsnotizen',
'moderated_by' => 'Moderiert von',
'moderated_at' => 'Moderiert am',
'security_scan_status' => 'Sicherheits-Scan',
'security_scan_message' => 'Sicherheits-Scan Nachricht',
'security_scanned_at' => 'Scan-Zeitpunkt',
],
'table' => [
'photo' => 'Foto',
'event' => 'Veranstaltung',
'tenant' => 'Mandant',
'uploader' => 'Uploader',
'status' => 'Status',
'security_scan' => 'Sicherheits-Scan',
'ingest_source' => 'Quelle',
'uploaded_at' => 'Hochgeladen',
'moderated_by' => 'Moderator',
'moderated_at' => 'Moderiert',
],
'filters' => [
'status' => 'Status',
'ingest_source' => 'Quelle',
'security_scan_status' => 'Sicherheits-Scan',
'uploaded_at' => 'Hochgeladen am',
],
'actions' => [
'approve' => 'Freigeben',
'reject' => 'Ablehnen',
'hide' => 'Verstecken',
'approve_selected' => 'Auswahl freigeben',
'reject_selected' => 'Auswahl ablehnen',
'hide_selected' => 'Auswahl verstecken',
],
'status' => [
'pending' => 'Ausstehend',
'approved' => 'Freigegeben',
'rejected' => 'Abgelehnt',
'hidden' => 'Versteckt',
],
'ingest_sources' => [
'guest_pwa' => 'Guest PWA',
'tenant_admin' => 'Tenant Admin',
'photobooth' => 'Photobooth',
'sparkbooth' => 'Sparkbooth',
'unknown' => 'Unbekannt',
],
'security_scan' => [
'pending' => 'Ausstehend',
'clean' => 'Sauber',
'infected' => 'Infiziert',
'skipped' => 'Übersprungen',
'stripped' => 'Entfernt',
'error' => 'Fehler',
],
],
'feedback' => [
'navigation' => [
'label' => 'Feedback-Queue',
],
'sections' => [
'moderation' => 'Moderation',
],
'fields' => [
'status' => 'Status',
'moderation_notes' => 'Moderationsnotizen',
'moderated_by' => 'Moderiert von',
'moderated_at' => 'Moderiert am',
],
'table' => [
'status' => 'Status',
'moderated_by' => 'Moderator',
'moderated_at' => 'Moderiert',
],
'filters' => [
'status' => 'Status',
],
'actions' => [
'resolve' => 'Erledigen',
'hide' => 'Verstecken',
'delete' => 'Löschen',
'resolve_selected' => 'Auswahl erledigen',
'hide_selected' => 'Auswahl verstecken',
'delete_selected' => 'Auswahl löschen',
],
'status' => [
'pending' => 'Ausstehend',
'resolved' => 'Erledigt',
'hidden' => 'Versteckt',
'deleted' => 'Gelöscht',
],
],
'guest_policy' => [
'navigation' => [
'label' => 'Gast-Richtlinien',
],
'sections' => [
'toggles' => 'Gast-Funktionen',
'rate_limits' => 'Rate-Limits',
'retention' => 'Retention-Defaults',
],
'fields' => [
'guest_downloads_enabled' => 'Gast-Downloads erlauben',
'guest_sharing_enabled' => 'Gast-Sharing erlauben',
'guest_upload_visibility' => 'Gast-Upload-Sichtbarkeit',
'upload_visibility_review' => 'Freigabe erforderlich',
'upload_visibility_immediate' => 'Sofort veröffentlichen',
'per_device_upload_limit' => 'Uploads pro Gerät (pro Event)',
'join_token_failure_limit' => 'Join-Token Fehlerlimit',
'join_token_failure_decay_minutes' => 'Join-Token Fehler-Decay (Minuten)',
'join_token_access_limit' => 'Join-Token Zugriffslimit',
'join_token_access_decay_minutes' => 'Join-Token Zugriff-Decay (Minuten)',
'join_token_download_limit' => 'Join-Token Downloadlimit',
'join_token_download_decay_minutes' => 'Join-Token Download-Decay (Minuten)',
'share_link_ttl_hours' => 'Share-Link TTL (Stunden)',
'guest_notification_ttl_hours' => 'Gast-Notification TTL (Stunden)',
],
'help' => [
'zero_disables' => '0 deaktiviert das Throttling.',
'notification_ttl' => 'Leer lassen, um Benachrichtigungen ohne Ablauf zu speichern.',
],
'actions' => [
'save' => 'Änderungen speichern',
],
'notifications' => [
'saved' => 'Gast-Richtlinien aktualisiert.',
],
],
'ops_health' => [
'navigation' => [
'label' => 'Ops-Health',
],
'heading' => 'Ops-Health',
'subheading' => 'Storage- und Queue-Snapshots für die Upload-Pipeline.',
'help' => 'Snapshots werden über die Scheduled Commands storage:monitor und storage:check-upload-queues erzeugt.',
'snapshot_age' => 'Aktualisiert :age',
'snapshot_missing' => 'Snapshot fehlt',
'pipeline' => [
'label' => 'Upload-Pipeline',
'total' => 'Assets gesamt',
'pending' => 'Ausstehende Assets',
'failed' => 'Fehlgeschlagene Assets',
'hot' => 'Hot-Assets',
'archived' => 'Archivierte Assets',
'alerts' => 'Alarme',
'hot_hint' => 'Hot: :count',
'archived_hint' => 'Archiviert: :count',
'no_snapshot' => 'Snapshot fehlt',
'no_snapshot_desc' => 'storage:monitor ausführen, um einen Snapshot zu erzeugen.',
],
'queue' => [
'heading' => 'Queue-Health',
'description' => 'Upload-Queues, fehlgeschlagene Jobs und hängende Assets.',
'connection' => 'Verbindung',
'snapshot' => 'Snapshot',
'stalled_assets' => 'Ausstehende Assets > :minutes Min',
'no_snapshot' => 'Kein Queue-Snapshot vorhanden. storage:check-upload-queues ausführen.',
'no_queues' => 'Keine Queues konfiguriert.',
'alerts_heading' => 'Alarme',
'alerts_empty' => 'Keine aktiven Alarme.',
'thresholds' => 'Grenzwerte',
'size' => 'Größe',
'failed' => 'Fehler',
'queue' => 'Queue',
'utilization' => 'Auslastung',
'utilization_of' => ':percent% von :label',
'utilization_na' => 'k.A.',
],
'alert_types' => [
'size' => 'Queue-Größe über Grenzwert (:size)',
'failed_jobs' => 'Fehlgeschlagene Jobs erkannt (:failed)',
'pending_assets' => ':count Assets seit mehr als :minutes Min in der Warteschlange',
],
'severity' => [
'ok' => 'OK',
'warning' => 'Warnung',
'critical' => 'Kritisch',
'unknown' => 'Unbekannt',
'error' => 'Fehler',
'unavailable' => 'Nicht verfügbar',
],
],
'events' => [
'fields' => [
'tenant' => 'Mandant',
'name' => 'Eventname',
'slug' => 'Slug',
'date' => 'Eventdatum',
'type' => 'Eventtyp',
'default_locale' => 'Standardsprache',
'is_active' => 'Aktiv',
'settings' => 'Einstellungen',
],
'table' => [
'tenant' => 'Mandant',
'join' => 'Beitreten',
'join_tokens_total' => 'Einladungen: :count',
'join_tokens_missing' => 'Noch keine Einladungen erstellt',
],
'actions' => [
'toggle_active' => 'Aktiv umschalten',
'join_link_qr' => 'Einladungslink & QR',
'download_photos' => 'Alle Fotos herunterladen',
],
'modal' => [
'join_link_heading' => 'Einladungslink der Veranstaltung',
],
'messages' => [
'join_link_copied' => 'Einladungslink kopiert',
],
'join_link' => [
'event_label' => 'Veranstaltung',
'deprecated_notice' => 'Der direkte Zugriff über den Event-Slug :slug wurde deaktiviert. Teile die Einladungslinks unten oder öffne in der Admin-App „QR & Einladungen“, um neue Codes zu verwalten.',
'open_admin' => 'Admin-App öffnen',
'link_label' => 'Einladungslink',
'copy_link' => 'Kopieren',
'no_tokens' => 'Noch keine Einladungen vorhanden. Erstelle im Admin-Bereich eine Einladung, um dein Event zu teilen.',
'token_default' => 'Einladung #:id',
'token_usage' => 'Nutzung: :usage / :limit',
'token_active' => 'Aktiv',
'token_inactive' => 'Deaktiviert',
'qr_code_label' => 'QRCode',
'note_html' => 'Hinweis: Der QRCode wird über einen externen QRService generiert. Für eine selbst gehostete Lösung können wir später eine interne QRGenerierung ergänzen.',
'layouts_heading' => 'Drucklayouts',
'layouts_fallback' => 'Layout-Übersicht öffnen',
'token_expiry' => 'Läuft ab am :date',
],
'analytics' => [
'success_total' => 'Erfolgreiche Zugriffe',
'failure_total' => 'Fehlgeschlagene Zugriffe',
'rate_limited_total' => 'Rate-Limit erreicht',
'recent_24h' => 'Aufrufe (24h)',
'last_seen_at' => 'Letzte Aktivität: :date',
],
],
'legal_pages' => [
'fields' => [
'slug' => 'Slug',
'title_localized' => 'Titel (de/en)',
'content_localization' => 'Inhaltslokalisierung',
'content_de' => 'Inhalt (Deutsch)',
'content_en' => 'Inhalt (Englisch)',
'is_published' => 'Veröffentlicht',
'effective_from' => 'Gültig ab',
'version' => 'Version',
],
],
'emotions' => [
'sections' => [
'content_localization' => 'Inhaltslokalisierung',
],
'fields' => [
'name_de' => 'Name (Deutsch)',
'description_de' => 'Beschreibung (Deutsch)',
'name_en' => 'Name (Englisch)',
'description_en' => 'Beschreibung (Englisch)',
'icon_emoji' => 'Icon/Emoji',
'color' => 'Farbe',
'sort_order' => 'Sortierreihenfolge',
'is_active' => 'Aktiv',
'event_types' => 'Eventtypen',
],
'table' => [
'name' => 'Name',
'icon' => 'Icon',
'color' => 'Farbe',
'is_active' => 'Aktiv',
'sort_order' => 'Sortierung',
],
'import' => [
'heading' => 'Emotionen importieren (CSV)',
],
],
'event_types' => [
'sections' => [
'name_localization' => 'Namenslokalisierung',
],
'fields' => [
'name_de' => 'Name (Deutsch)',
'name_en' => 'Name (Englisch)',
'slug' => 'Slug',
'icon' => 'Icon',
'settings' => 'Einstellungen',
'emotions' => 'Emotionen',
],
'table' => [
'name' => 'Name',
'slug' => 'Slug',
'icon' => 'Icon',
'created_at' => 'Erstellt',
],
],
'tasks' => [
'menu' => 'Aufgaben',
'fields' => [
'event_type_optional' => 'Eventtyp (optional)',
'content_localization' => 'Inhaltslokalisierung',
'title_de' => 'Titel (Deutsch)',
'description_de' => 'Beschreibung (Deutsch)',
'example_de' => 'Beispieltext (Deutsch)',
'title_en' => 'Titel (Englisch)',
'description_en' => 'Beschreibung (Englisch)',
'example_en' => 'Beispieltext (Englisch)',
'emotion' => 'Emotion',
'event_type' => 'Eventtyp',
'difficulty' => [
'label' => 'Schwierigkeit',
'easy' => 'Leicht',
'medium' => 'Mittel',
'hard' => 'Schwer',
],
],
'table' => [
'title' => 'Titel',
'is_active' => 'Aktiv',
'sort_order' => 'Sortierung',
],
'table' => [
'name' => 'Name',
'icon' => 'Icon',
'color' => 'Farbe',
'is_active' => 'Aktiv',
'sort_order' => 'Sortierung',
],
'import' => [
'heading' => 'Aufgaben importieren (CSV)',
],
],
'widgets' => [
'events_active_today' => [
'heading' => 'Heute aktive Events',
],
'recent_uploads' => [
'heading' => 'Neueste Uploads',
],
'top_tenants_by_uploads' => [
'heading' => 'TopMandanten nach Uploads',
],
'uploads_per_day' => [
'heading' => 'Uploads (14 Tage)',
],
'credit_alerts' => [
'low_balance_label' => 'Mandanten mit niedrigen Credits',
'low_balance_desc' => 'Benötigen Betreuung',
'monthly_revenue_label' => 'Umsatz (Monat)',
'monthly_revenue_desc' => 'Aktueller Monat (:month)',
'active_subscriptions_label' => 'Aktive Abos',
'active_subscriptions_desc' => 'Laufende Pakete',
],
'revenue_trend' => [
'heading' => 'Monatliche Einnahmen',
'series' => 'Umsatz (€)',
],
'top_tenants_by_revenue' => [
'heading' => 'TopMandanten nach Umsatz',
'total' => 'Gesamt (€)',
'count' => 'Käufe',
],
],
'notifications' => [
'file_not_found' => 'Datei nicht gefunden',
'imported_rows' => ':count Zeilen importiert',
'failed_count' => ':count fehlgeschlagen',
],
'tenants' => [
'fields' => [
'name' => 'Mandantenname',
'slug' => 'Slug',
'contact_email' => 'KontaktEMail',
'event_credits_balance' => 'EventCreditsKontostand',
'features' => 'Funktionen',
'total_revenue' => 'Gesamtumsatz',
'active_reseller_package' => 'Aktives Reseller-Paket',
'remaining_events' => 'Verbleibende Events',
'package_expires_at' => 'Ablaufdatum Paket',
'is_active' => 'Aktiv',
'is_suspended' => 'Suspendiert',
'pending_deletion_at' => 'Geplante Loeschung',
'deletion_warning_sent_at' => 'Loeschwarnung gesendet',
'anonymized_at' => 'Anonymisiert am',
'subscription_expires_at' => 'Ablaufdatum Abo',
'grace_period_ends_at' => 'GracePeriode endet',
'max_photos_per_event' => 'Max. Fotos pro Event',
'max_storage_mb' => 'Max. Speicher (MB)',
'storage_used_mb' => 'Speicher belegt',
'storage_remaining_mb' => 'Speicher verbleibend',
'storage_usage_percent' => 'Speicherauslastung',
'owner' => 'Eigentuemer',
'access_status' => 'Zugriffsstatus',
],
'sections' => [
'profile' => 'Profil',
'lifecycle' => 'Lebenszyklus',
'limits' => 'Limits',
'timeline' => 'Audit Timeline',
],
'actions' => [
'adjust_credits' => 'Credits anpassen',
'adjust_credits_delta' => 'Anzahl Credits (positiv/negativ)',
'adjust_credits_delta_hint' => 'Positive Werte fügen Credits hinzu, negative Werte ziehen ab.',
'adjust_credits_reason' => 'Interne Notiz',
'adjust_credits_success_title' => 'Credits aktualisiert',
'adjust_credits_success_body' => 'Die Credits wurden um :delta verändert. Neuer Kontostand: :balance.',
'lifecycle' => 'Lebenszyklus',
'activate' => 'Aktivieren',
'deactivate' => 'Deaktivieren',
'suspend' => 'Suspendieren',
'unsuspend' => 'Suspendierung aufheben',
'schedule_deletion' => 'Loeschung planen',
'schedule_deletion_success' => 'Loeschung geplant',
'cancel_deletion' => 'Loeschung abbrechen',
'cancel_deletion_success' => 'Loeschung abgebrochen',
'anonymize_now' => 'Jetzt anonymisieren',
'anonymize_success' => 'Anonymisierung gestartet',
'send_warning' => 'Warnung per E-Mail senden',
'send_warning_missing_title' => 'Keine Kontakt-E-Mail',
'send_warning_missing_body' => 'Es ist keine E-Mail-Adresse hinterlegt, daher konnte keine Warnung gesendet werden.',
'update_limits' => 'Limits aktualisieren',
'update_subscription_expires_at' => 'Abo-Ablauf aktualisieren',
'set_grace_period' => 'Grace-Periode setzen',
'clear_grace_period' => 'Grace-Periode entfernen',
'lifecycle_controls' => 'Lebenszyklus-Steuerung',
'note' => 'Interne Notiz',
],
'pages' => [
'overview' => 'Uebersicht',
'lifecycle' => 'Lebenszyklus',
'edit' => 'Bearbeiten',
],
'status' => [
'active' => 'Aktiv',
'inactive' => 'Inaktiv',
'suspended' => 'Suspendiert',
'expired' => 'Abgelaufen',
'grace' => 'Grace-Periode',
'anonymized' => 'Anonymisiert',
],
'limits' => [
'unlimited' => 'Unbegrenzt',
],
'timeline' => [
'title' => 'Ereignis',
'details' => 'Details',
'status' => 'Status',
'occurred_at' => 'Zeitpunkt',
'created' => 'Mandant angelegt',
'created_details' => 'Mandant wurde im System angelegt.',
'last_activity' => 'Letzte Aktivitaet',
'last_activity_details' => 'Zuletzt erfasste Mandantenaktivitaet.',
'deletion_warning' => 'Loeschwarnung gesendet',
'deletion_warning_details' => 'Aufbewahrungswarnung wurde gesendet.',
'deletion_scheduled' => 'Loeschung geplant',
'deletion_scheduled_details' => 'Loeschung ist geplant.',
'anonymized' => 'Mandant anonymisiert',
'anonymized_details' => 'Mandantendaten wurden anonymisiert.',
'notification_sent' => 'Benachrichtigung gesendet',
'notification_failed' => 'Benachrichtigung fehlgeschlagen',
'grace_period_until' => 'Grace bis :date',
'by' => 'Von :name',
'events' => [
'activated' => 'Mandant aktiviert',
'deactivated' => 'Mandant deaktiviert',
'suspended' => 'Mandant suspendiert',
'unsuspended' => 'Suspendierung aufgehoben',
'deletion_scheduled' => 'Loeschung geplant',
'deletion_cancelled' => 'Loeschung aufgehoben',
'anonymize_requested' => 'Anonymisierung angestoßen',
'grace_period_set' => 'Grace-Periode gesetzt',
'grace_period_cleared' => 'Grace-Periode entfernt',
'limits_updated' => 'Limits aktualisiert',
'subscription_expires_at_updated' => 'Abo-Ablauf aktualisiert',
],
'tone' => [
'success' => 'Erfolg',
'warning' => 'Warnung',
'danger' => 'Fehler',
'info' => 'Info',
'muted' => 'Neutral',
],
],
],
'purchase_history' => [
'fields' => [
'tenant' => 'Mandant',
'package' => 'Paket',
'credits' => 'Credits',
'price' => 'Preis',
'currency' => 'Währung',
'platform' => 'Plattform',
'transaction_id' => 'Transaktions-ID',
'purchased_at' => 'Kaufdatum',
],
'filters' => [
'purchased_at' => 'Zeitraum',
'platform' => 'Plattform',
'currency' => 'Währung',
'tenant' => 'Mandant',
],
'actions' => [
'export' => 'Exportieren',
],
'platforms' => [
'ios' => 'iOS',
'android' => 'Android',
'web' => 'Web',
'manual' => 'Manuell',
],
'export_success' => 'Export abgeschlossen. :count Einträge exportiert.',
],
'shell' => [
'tenant_admin_title' => 'TenantAdmin',
],
'errors' => [
'forbidden' => [
'title' => 'Kein Zugriff',
'message' => 'Du hast keine Berechtigung, diesen Bereich des Admin-Panels zu öffnen.',
'hint' => 'Bitte prüfe, ob dein Mandantenpaket aktiv ist oder wende dich an den Support, wenn du Hilfe benötigst.',
'cta' => 'Zur Startseite',
],
],
];