Merge: UI/UX-Feature-Branch integrieren + Security-Patches re-applien
Integriert die Feature-Branch (Dark Mode, i18n DE/EN, mobile Admin-Layout, shared admin_nav, Toasts, Voucher-Templates, Bulk-Erstellung, konfigurierbare Defaults, Password-Reset, Audit-Log-UI + Audit-Logging) mit der bestehenden Security-/Updater-Arbeit. Konfliktauflösung (6 Dateien: index.php + admin/*): Feature-Version als Basis, darauf die Security-Patches re-appliziert: - display_errors=0 + log_errors in allen neuen/gemergten Entry-Points - Crypto::encrypt/decrypt an allen Site-Passwort-Pfaden (sites/index/vouchers/ dashboard-Sync, inkl. doCreateVoucher + Bulk) - CSRF-Prüfung für ALLE Voucher-Erstellungen (auch anonym/öffentlich), Token unbedingt im Formular; Session-Throttle gegen Spam - Updater-Maintenance-Hook am Anfang von index.php wiederhergestellt Auto-Merge verifiziert: Auth.php enthält Session-Timeout UND writeAuditLog; login.php behält display_errors=0 + OAuth-state. Updater-Link in shared admin_nav.php (i18n-Key nav_update DE/EN). Alle PHP-Dateien linten sauber.
This commit is contained in:
commit
526c43e8ee
20 changed files with 5328 additions and 5521 deletions
289
lang/de.php
Normal file
289
lang/de.php
Normal file
|
|
@ -0,0 +1,289 @@
|
|||
<?php
|
||||
return [
|
||||
// Navigation
|
||||
'nav_dashboard' => 'Dashboard',
|
||||
'nav_sites' => 'Sites verwalten',
|
||||
'nav_users' => 'Benutzer verwalten',
|
||||
'nav_vouchers' => 'Live Vouchers',
|
||||
'nav_templates' => 'Voucher-Profile',
|
||||
'nav_audit_log' => 'Audit-Log',
|
||||
'nav_settings' => 'Einstellungen',
|
||||
'nav_update' => 'System-Update',
|
||||
'nav_back' => 'Zurück zur Startseite',
|
||||
'nav_administration'=> 'Administration',
|
||||
|
||||
// Common buttons
|
||||
'btn_save' => 'Speichern',
|
||||
'btn_cancel' => 'Abbrechen',
|
||||
'btn_add' => 'Hinzufügen',
|
||||
'btn_edit' => 'Bearbeiten',
|
||||
'btn_delete' => 'Löschen',
|
||||
'btn_create' => 'Erstellen',
|
||||
'btn_close' => 'Schließen',
|
||||
'btn_back' => 'Zurück',
|
||||
'btn_login' => 'Anmelden',
|
||||
'btn_logout' => 'Abmelden',
|
||||
'btn_refresh' => 'Aktualisieren',
|
||||
'btn_export_csv' => 'CSV exportieren',
|
||||
'btn_print' => 'Ausdrucken',
|
||||
'btn_send' => 'Senden',
|
||||
'btn_test' => 'Testen',
|
||||
'btn_generate' => 'Generieren',
|
||||
'btn_copy' => 'Kopieren',
|
||||
'btn_new_code' => 'Weiteren Code erstellen',
|
||||
|
||||
// Common labels
|
||||
'label_name' => 'Name',
|
||||
'label_email' => 'E-Mail',
|
||||
'label_password' => 'Passwort',
|
||||
'label_status' => 'Status',
|
||||
'label_actions' => 'Aktionen',
|
||||
'label_created' => 'Erstellt',
|
||||
'label_site' => 'Standort',
|
||||
'label_sites' => 'Sites',
|
||||
'label_role' => 'Rolle',
|
||||
'label_code' => 'Code',
|
||||
'label_note' => 'Notiz',
|
||||
'label_usage' => 'Nutzung',
|
||||
'label_expires' => 'Gültigkeit',
|
||||
'label_devices' => 'Geräte',
|
||||
'label_duration' => 'Dauer',
|
||||
'label_description' => 'Beschreibung',
|
||||
'label_language' => 'Sprache',
|
||||
|
||||
// Status texts
|
||||
'status_active' => 'Aktiv',
|
||||
'status_inactive' => 'Inaktiv',
|
||||
'status_valid' => 'Gültig',
|
||||
'status_used' => 'Verwendet',
|
||||
'status_expired' => 'Abgelaufen',
|
||||
'status_admin' => 'Admin',
|
||||
'status_user' => 'Benutzer',
|
||||
'status_public' => 'Öffentlich',
|
||||
'status_all' => 'Alle',
|
||||
|
||||
// Dashboard
|
||||
'dashboard_title' => 'Dashboard',
|
||||
'dashboard_subtitle'=> 'Übersicht über Ihr UniFi Voucher System',
|
||||
'dashboard_active_sites' => 'Aktive Sites',
|
||||
'dashboard_users' => 'Benutzer',
|
||||
'dashboard_valid' => 'Gültige Vouchers',
|
||||
'dashboard_used' => 'Verwendet',
|
||||
'dashboard_expired' => 'Abgelaufen',
|
||||
'dashboard_total' => 'Gesamt',
|
||||
'dashboard_live_refresh' => 'Live aktualisieren',
|
||||
'dashboard_trend' => 'Voucher-Trend (Letzte 7 Tage)',
|
||||
'dashboard_top_users'=> 'Top 5 Benutzer (Letzte 30 Tage)',
|
||||
'dashboard_recent' => 'Letzte Vouchers (aus Datenbank)',
|
||||
'dashboard_creator' => 'Ersteller',
|
||||
'dashboard_public' => 'Öffentlich',
|
||||
'dashboard_vouchers_per_site' => 'Live: Vouchers pro Site',
|
||||
'dashboard_no_data' => 'Noch keine Daten verfügbar',
|
||||
'dashboard_no_vouchers' => 'Noch keine Vouchers erstellt',
|
||||
|
||||
// Voucher creation
|
||||
'voucher_name_label' => 'Voucher-Name *',
|
||||
'voucher_name_hint' => 'z.B. Besprechung UL, Vertretername Firma XY',
|
||||
'voucher_devices_label' => 'Wie viele Geräte dürfen sich einloggen? *',
|
||||
'voucher_site_label' => 'Standort *',
|
||||
'voucher_site_select' => 'Bitte wählen...',
|
||||
'voucher_email_send' => 'Code per E-Mail versenden',
|
||||
'voucher_email_label' => 'E-Mail-Adresse des Empfängers',
|
||||
'voucher_email_hint' => 'gast@example.com',
|
||||
'voucher_create_btn' => 'Voucher erstellen',
|
||||
'voucher_creating' => 'Erstelle Voucher...',
|
||||
'voucher_success_title' => '✓ Ihr Zugangs-Code',
|
||||
'voucher_validity' => 'Gültig für {minutes} Minuten ab Erstellung',
|
||||
'voucher_qr_label' => 'QR-Code scannen zum Verbinden',
|
||||
'voucher_print_btn' => 'Code ausdrucken',
|
||||
'voucher_no_sites' => 'Keine verfügbaren Sites gefunden.',
|
||||
'voucher_no_sites_admin'=> 'Klicken Sie hier, um Sites anzulegen',
|
||||
'voucher_no_sites_user' => 'Bitte kontaktieren Sie Ihren Administrator.',
|
||||
'voucher_template_select'=> '-- Kein Profil (manuell) --',
|
||||
'voucher_template_label'=> 'Schnellprofil (optional)',
|
||||
|
||||
// Bulk creation
|
||||
'bulk_tab' => 'Einzeln',
|
||||
'bulk_tab_bulk' => 'Mehrere auf einmal',
|
||||
'bulk_quantity' => 'Anzahl Vouchers',
|
||||
'bulk_quantity_hint'=> 'Wie viele Vouchers sollen erstellt werden?',
|
||||
'bulk_name_prefix' => 'Name / Präfix',
|
||||
'bulk_create_btn' => '{count} Vouchers erstellen',
|
||||
'bulk_creating' => 'Erstelle {count} Vouchers...',
|
||||
'bulk_success' => '{count} Vouchers erfolgreich erstellt!',
|
||||
'bulk_print_all' => 'Alle ausdrucken',
|
||||
'bulk_results' => 'Erstellte Vouchers ({count})',
|
||||
|
||||
// Templates
|
||||
'templates_title' => 'Voucher-Profile',
|
||||
'templates_subtitle'=> 'Vordefinierte Voucher-Konfigurationen',
|
||||
'templates_add' => 'Neues Profil',
|
||||
'templates_name' => 'Profilname',
|
||||
'templates_devices' => 'Max. Geräte',
|
||||
'templates_duration'=> 'Gültigkeit (Minuten)',
|
||||
'templates_desc' => 'Beschreibung (optional)',
|
||||
'templates_none' => 'Noch keine Profile vorhanden.',
|
||||
'templates_add_hint'=> 'Erstellen Sie Profile für häufig verwendete Voucher-Konfigurationen.',
|
||||
'templates_edit' => 'Profil bearbeiten',
|
||||
'templates_added' => 'Profil erfolgreich erstellt!',
|
||||
'templates_updated' => 'Profil erfolgreich aktualisiert!',
|
||||
'templates_deleted' => 'Profil erfolgreich gelöscht!',
|
||||
|
||||
// Users
|
||||
'users_title' => 'Benutzer verwalten',
|
||||
'users_add' => 'Neuer Benutzer',
|
||||
'users_all' => 'Alle Benutzer',
|
||||
'users_site_access' => 'Site-Zugriffe',
|
||||
'users_last_login' => 'Letzter Login',
|
||||
'users_never' => 'Noch nie',
|
||||
'users_you' => 'Sie',
|
||||
'users_all_sites' => 'Alle Sites',
|
||||
'users_none' => 'Keine',
|
||||
'users_add_title' => 'Neuen Benutzer anlegen',
|
||||
'users_edit_title' => 'Benutzer bearbeiten',
|
||||
'users_admin_check' => 'Administrator-Rechte',
|
||||
'users_admin_hint' => 'Admins haben Zugriff auf alle Sites und Einstellungen',
|
||||
'users_password_hint'=> 'Mindestens 8 Zeichen',
|
||||
'users_site_hint' => 'Wählen Sie die Sites, auf die dieser Benutzer Zugriff haben soll',
|
||||
'users_no_sites' => 'Keine Sites verfügbar. Bitte zuerst Sites anlegen.',
|
||||
'users_added' => 'Benutzer erfolgreich erstellt!',
|
||||
'users_updated' => 'Benutzer erfolgreich aktualisiert!',
|
||||
'users_deleted' => 'Benutzer erfolgreich gelöscht!',
|
||||
'users_notified' => ' Benachrichtigung wurde versendet.',
|
||||
'users_none_found' => 'Noch keine Benutzer vorhanden',
|
||||
'users_save' => 'Benutzer anlegen',
|
||||
'users_save_edit' => 'Änderungen speichern',
|
||||
'users_reset_pw' => 'Passwort-Reset-Link senden',
|
||||
|
||||
// Sites
|
||||
'sites_title' => 'Sites verwalten',
|
||||
'sites_add' => 'Neue Site hinzufügen',
|
||||
'sites_add_title' => 'Neue Site hinzufügen',
|
||||
'sites_edit_title' => 'Site bearbeiten',
|
||||
'sites_name' => 'Site-Name *',
|
||||
'sites_site_id' => 'UniFi Site ID *',
|
||||
'sites_controller' => 'Controller URL *',
|
||||
'sites_username' => 'Benutzername *',
|
||||
'sites_password' => 'Passwort *',
|
||||
'sites_password_edit'=> 'Neues Passwort',
|
||||
'sites_password_hint'=> 'Nur ausfüllen wenn Sie das Passwort ändern möchten',
|
||||
'sites_public' => 'Öffentlicher Zugriff (ohne Login nutzbar)',
|
||||
'sites_none' => 'Noch keine Sites konfiguriert. Fügen Sie Ihre erste Site hinzu!',
|
||||
'sites_added' => 'Site erfolgreich hinzugefügt!',
|
||||
'sites_updated' => 'Site erfolgreich aktualisiert!',
|
||||
'sites_deleted' => 'Site erfolgreich gelöscht!',
|
||||
'sites_testing' => 'Verbindung wird getestet...',
|
||||
'sites_deactivate' => 'Deaktivieren',
|
||||
'sites_activate' => 'Aktivieren',
|
||||
|
||||
// Voucher admin list
|
||||
'vouchers_title' => 'Live Voucher-Verwaltung',
|
||||
'vouchers_subtitle' => 'Vouchers werden direkt vom UniFi Controller abgerufen',
|
||||
'vouchers_select_site'=> 'Site auswählen',
|
||||
'vouchers_select_hint'=> '-- Site auswählen --',
|
||||
'vouchers_last_sync'=> 'Letzte Sync',
|
||||
'vouchers_no_sites' => 'Keine aktiven Sites vorhanden',
|
||||
'vouchers_search' => 'Suchen (Code, Name...)',
|
||||
'vouchers_filter_all'=> 'Alle',
|
||||
'vouchers_filter_valid'=> 'Gültig',
|
||||
'vouchers_filter_used'=> 'Verwendet',
|
||||
'vouchers_filter_expired'=> 'Abgelaufen',
|
||||
'vouchers_none' => 'Keine Vouchers gefunden.',
|
||||
'vouchers_per_page' => 'pro Seite',
|
||||
'vouchers_page_of' => 'Seite {current} von {total}',
|
||||
|
||||
// Audit Log
|
||||
'audit_title' => 'Audit-Log',
|
||||
'audit_subtitle' => 'Alle System-Aktionen im Überblick',
|
||||
'audit_action' => 'Aktion',
|
||||
'audit_user' => 'Benutzer',
|
||||
'audit_details' => 'Details',
|
||||
'audit_ip' => 'IP-Adresse',
|
||||
'audit_time' => 'Zeitpunkt',
|
||||
'audit_entity' => 'Objekt',
|
||||
'audit_filter_all' => 'Alle Aktionen',
|
||||
'audit_none' => 'Keine Einträge gefunden.',
|
||||
'audit_filter' => 'Filter',
|
||||
|
||||
// Settings
|
||||
'settings_title' => 'Einstellungen',
|
||||
'settings_subtitle' => 'System-Konfiguration und Personalisierung',
|
||||
'settings_tab_general' => 'Allgemein',
|
||||
'settings_tab_defaults' => 'Voucher-Standards',
|
||||
'settings_tab_cron' => 'Cron-Sync',
|
||||
'settings_tab_m365' => 'Microsoft 365',
|
||||
'settings_tab_smtp' => 'SMTP',
|
||||
'settings_tab_templates_email' => 'Templates',
|
||||
'settings_tab_system' => 'System',
|
||||
'settings_tab_password' => 'Passwort',
|
||||
'settings_saved' => 'Einstellungen erfolgreich gespeichert!',
|
||||
'settings_app_title' => 'Anwendungs-Titel *',
|
||||
'settings_logo_url' => 'Logo-URL',
|
||||
'settings_favicon_url' => 'Favicon-URL',
|
||||
'settings_favicon_hint' => 'Icon im Browser-Tab (.ico, .png, .svg)',
|
||||
'settings_instr_header' => 'Anleitung - Überschrift',
|
||||
'settings_instr_text' => 'Anleitung - Text',
|
||||
'settings_public_access'=> 'Öffentlicher Zugriff',
|
||||
'settings_default_expire' => 'Standard-Gültigkeit (Minuten)',
|
||||
'settings_default_expire_hint'=> 'Standard-Ablaufzeit für neue Vouchers (480 = 8 Stunden)',
|
||||
'settings_default_devices' => 'Standard-Geräteanzahl',
|
||||
'settings_default_devices_hint'=> 'Vorausgefüllter Wert im Voucher-Formular',
|
||||
'settings_max_devices' => 'Maximale Geräteanzahl',
|
||||
'settings_max_devices_hint' => 'Maximaler Wert, den ein Benutzer auswählen kann',
|
||||
'settings_pw_current' => 'Aktuelles Passwort',
|
||||
'settings_pw_new' => 'Neues Passwort',
|
||||
'settings_pw_confirm' => 'Passwort bestätigen',
|
||||
'settings_pw_changed' => 'Passwort erfolgreich geändert!',
|
||||
'settings_pw_minlength' => 'Mindestens 8 Zeichen',
|
||||
|
||||
// Login / Auth
|
||||
'login_title' => 'Anmelden',
|
||||
'login_subtitle' => 'Melden Sie sich an, um fortzufahren',
|
||||
'login_email' => 'E-Mail',
|
||||
'login_password' => 'Passwort',
|
||||
'login_btn' => 'Anmelden',
|
||||
'login_ms' => 'Mit Microsoft anmelden',
|
||||
'login_local' => 'Mit Benutzername und Passwort anmelden',
|
||||
'login_back' => '← Zurück zur Code-Erstellung',
|
||||
'login_forgot' => 'Passwort vergessen?',
|
||||
'login_error_empty' => 'Bitte E-Mail und Passwort eingeben',
|
||||
'login_error_rate' => 'Zu viele Fehlversuche. Bitte warten Sie 10 Minuten.',
|
||||
'login_error_creds' => 'Ungültige E-Mail oder Passwort',
|
||||
|
||||
// Password Reset
|
||||
'reset_title' => 'Passwort vergessen',
|
||||
'reset_subtitle' => 'Geben Sie Ihre E-Mail ein – wir senden Ihnen einen Reset-Link.',
|
||||
'reset_email_label' => 'E-Mail-Adresse',
|
||||
'reset_send_btn' => 'Reset-Link senden',
|
||||
'reset_success' => 'Falls ein Konto mit dieser E-Mail existiert, erhalten Sie in Kürze eine E-Mail.',
|
||||
'reset_back_login' => '← Zurück zum Login',
|
||||
'reset_new_pw' => 'Neues Passwort festlegen',
|
||||
'reset_new_pw_label'=> 'Neues Passwort',
|
||||
'reset_confirm_label'=> 'Passwort bestätigen',
|
||||
'reset_set_btn' => 'Passwort festlegen',
|
||||
'reset_invalid' => 'Ungültiger oder abgelaufener Reset-Link.',
|
||||
'reset_done' => 'Ihr Passwort wurde erfolgreich geändert.',
|
||||
|
||||
// Errors
|
||||
'error_csrf' => 'Ungültiges Sicherheits-Token',
|
||||
'error_login_req' => 'Sie müssen angemeldet sein',
|
||||
'error_no_permission'=> 'Keine Berechtigung für diese Aktion',
|
||||
'error_not_found' => 'Nicht gefunden',
|
||||
'error_name_req' => 'Bitte geben Sie einen Namen ein',
|
||||
'error_site_req' => 'Bitte wählen Sie einen Standort',
|
||||
'error_devices_range'=> 'Anzahl der Geräte muss zwischen 1 und {max} liegen',
|
||||
'error_email_invalid'=> 'Ungültige E-Mail-Adresse',
|
||||
'error_site_no_perm'=> 'Keine Berechtigung für diese Site',
|
||||
'error_site_not_found'=> 'Site nicht gefunden',
|
||||
'error_voucher_invalid'=> 'UniFi hat keinen gültigen Voucher zurückgegeben',
|
||||
'error_connection' => 'Verbindung zum UniFi Controller fehlgeschlagen',
|
||||
'error_fill_all' => 'Bitte füllen Sie alle Pflichtfelder aus',
|
||||
|
||||
// Hello / User
|
||||
'hello' => 'Hallo, {name}',
|
||||
'minutes_short' => 'Min.',
|
||||
'hours_short' => 'Std.',
|
||||
'never' => 'Noch nie',
|
||||
'unknown' => 'Unbekannt',
|
||||
'or' => 'oder',
|
||||
];
|
||||
Loading…
Add table
Add a link
Reference in a new issue