Design-Tab (Administration → Einstellungen → Design): - Akzentfarbe für Hell- und Dark-Mode, Markenverlauf und Eckenradius - abgeleitete Töne (Hover, weiche Flächen, Fokusring) werden per color-mix aus der Grundfarbe berechnet – eine Farbe genügt - Live-Vorschau mit Button, Badge, Chip, Logo-Kachel und Link - Ausgabe als schlanker :root-Override über Ui::brandingStyle(), greift auf allen Seiten inklusive Login und Installer Uploads (includes/Upload.php): - Logo, Favicon, Login-Logo und Login-Hintergrund lassen sich jetzt hochladen; das URL-Feld bleibt als Alternative bestehen - Whitelist nach Endung, 3-MB-Grenze, getimagesize-Prüfung für Raster, SVGs werden von Skripten, Event-Handlern und externen Verweisen befreit - Zufällige Dateinamen in uploads/, dort sperrt eine .htaccess die Ausführung von PHP; beim Ersetzen wird die alte Datei gelöscht Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
347 lines
17 KiB
PHP
347 lines
17 KiB
PHP
<?php
|
||
return [
|
||
// Navigation
|
||
'nav_group_overview'=> 'Übersicht',
|
||
'nav_group_manage' => 'Verwaltung',
|
||
'nav_group_system' => 'System',
|
||
'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_reports' => 'Reporting',
|
||
'nav_import' => 'Voucher-Import',
|
||
'nav_settings' => 'Einstellungen',
|
||
'nav_api_keys' => 'API-Schlüssel',
|
||
'nav_security' => 'Sicherheit (2FA)',
|
||
'nav_integrations' => 'Integration & Wartung',
|
||
'nav_backup' => 'Backup & Restore',
|
||
'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' => 'Zugangs-Code erstellt',
|
||
'voucher_copy_hint' => 'Code antippen zum Kopieren',
|
||
'app_subtitle' => 'WLAN-Zugangscodes in Sekunden erstellen – für Gäste, Teams und Events.',
|
||
'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})',
|
||
'bulk_results_hint' => 'Alle Codes sind sofort gültig und können gedruckt oder kopiert werden.',
|
||
|
||
// 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_branding' => 'Design',
|
||
'settings_branding_intro' => 'Farben und Formen der gesamten Oberfläche – Frontend wie Administration.',
|
||
'settings_brand_accent' => 'Akzentfarbe (hell)',
|
||
'settings_brand_accent_hint' => 'Buttons, aktive Navigation, Links. Abgeleitete Töne werden automatisch berechnet.',
|
||
'settings_brand_accent_dark' => 'Akzentfarbe (Dark Mode)',
|
||
'settings_brand_accent_dark_hint' => 'Im Dark Mode meist eine hellere Variante der Grundfarbe.',
|
||
'settings_brand_gradient_from'=> 'Markenverlauf: Start',
|
||
'settings_brand_gradient_to' => 'Markenverlauf: Ende',
|
||
'settings_brand_gradient_hint'=> 'Für Logo-Kachel, Avatare und die Voucher-Karte.',
|
||
'settings_brand_radius' => 'Eckenradius',
|
||
'settings_brand_radius_sharp' => 'Kantig',
|
||
'settings_brand_radius_default'=> 'Standard',
|
||
'settings_brand_radius_round' => 'Rund',
|
||
'settings_brand_preview' => 'Vorschau',
|
||
'settings_brand_link' => 'Beispiel-Link',
|
||
'settings_image_url_placeholder' => 'https://… oder Datei hochladen',
|
||
'settings_image_remove' => 'Bild entfernen',
|
||
'settings_upload_hint' => 'PNG, JPG, WEBP, GIF oder SVG – maximal 3 MB.',
|
||
'upload_error_generic' => 'Die Datei konnte nicht hochgeladen werden.',
|
||
'upload_error_size' => 'Die Datei ist zu groß (maximal 3 MB).',
|
||
'upload_error_type' => 'Dieser Dateityp wird nicht unterstützt.',
|
||
'upload_error_dir' => 'Der Ordner uploads/ ist nicht beschreibbar.',
|
||
'settings_tab_login' => 'Login-Seite',
|
||
'settings_login_intro' => 'Aussehen und Texte der Anmeldeseite. Leere Felder verwenden die Standardwerte.',
|
||
'settings_login_panel' => 'Linke Bildspalte (Split-Screen) anzeigen',
|
||
'settings_login_brand' => 'Firmenname',
|
||
'settings_login_brand_hint' => 'Leer = Anwendungstitel wird verwendet.',
|
||
'settings_login_logo' => 'Logo (URL)',
|
||
'settings_login_logo_hint' => 'Leer = allgemeines Logo aus dem Tab „Allgemein".',
|
||
'settings_login_claim_title' => 'Überschrift',
|
||
'settings_login_claim_text' => 'Beschreibungstext',
|
||
'settings_login_features' => 'Stichpunkte',
|
||
'settings_login_features_hint'=> 'Ein Stichpunkt pro Zeile. Leer lassen, um keine Liste anzuzeigen.',
|
||
'settings_login_footer' => 'Fußzeile',
|
||
'settings_login_bg_image' => 'Hintergrundbild (URL)',
|
||
'settings_login_bg_image_hint'=> 'Optional. Wird formatfüllend angezeigt; ohne Bild gilt der Farbverlauf.',
|
||
'settings_login_bg_from' => 'Verlauf: Startfarbe',
|
||
'settings_login_bg_to' => 'Verlauf: Endfarbe',
|
||
'settings_login_overlay' => 'Abdunklung des Bildes (%)',
|
||
'settings_login_overlay_hint' => '0–90 %. Höhere Werte machen den Text auf hellen Bildern besser lesbar.',
|
||
'settings_login_preview' => 'Vorschau öffnen',
|
||
'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',
|
||
'settings_favicon_url' => 'Favicon',
|
||
'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',
|
||
'auth_claim_title' => 'WLAN-Gastzugänge, zentral verwaltet.',
|
||
'auth_claim_text' => 'Vouchers für alle UniFi-Sites erstellen, versenden und auswerten – aus einer Oberfläche.',
|
||
'auth_feature_1' => 'Voucher per E-Mail, SMS oder QR-Code',
|
||
'auth_feature_2' => 'Rollen, 2FA und vollständiges Audit-Log',
|
||
'auth_feature_3' => 'Live-Statistiken je Site und Benutzer',
|
||
'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',
|
||
];
|