- Kontrast: gedämpfter Text war mit 3,1:1 unter WCAG AA, jetzt 4,9:1 (hell) bzw. 6,4:1 (dunkel) - Sprungmarke „Zum Inhalt springen" in Admin-Shell und Voucher-Seite - aria-label für alle reinen Icon-Schaltflächen (Theme, Menü, Abmelden, Zeilenaktionen), aria-current auf dem aktiven Navigationspunkt, role="group" für den Sprachumschalter - 194 dekorative Icons mit aria-hidden versehen, damit Screenreader sie nicht vorlesen - Toast-Container als aria-live-Bereich ausgezeichnet - prefers-reduced-motion schaltet Animationen und Übergänge ab Tabellen (Benutzer, Vouchers, Profile, Audit-Log, Dashboard, API-Keys) werden unter 720 px zu Karten: die Spaltenüberschrift steht per data-label vor dem Wert, statt horizontal zu scrollen. Datums- und Zeitformat in der Voucher-Liste folgen jetzt der gewählten Sprache statt fest de-DE. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
550 lines
31 KiB
PHP
550 lines
31 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',
|
||
'api_title' => 'API-Schlüssel',
|
||
'api_subtitle' => 'Zugänge für externe Systeme – mit Scope und Rate-Limit.',
|
||
'api_new_key' => 'Neuer Schlüssel',
|
||
'api_new_key_hint' => 'Kopieren Sie ihn jetzt – aus Sicherheitsgründen wird er nicht erneut angezeigt.',
|
||
'api_create_title' => 'Neuen API-Schlüssel erstellen',
|
||
'api_label_name' => 'Bezeichnung',
|
||
'api_name_placeholder' => 'z.B. Buchungssystem, Terminal Foyer',
|
||
'api_label_scope' => 'Berechtigung',
|
||
'api_scope_write' => 'Lesen + Erstellen',
|
||
'api_scope_read' => 'Nur Lesen',
|
||
'api_scope_write_short' => 'Lesen+Erstellen',
|
||
'api_scope_read_short' => 'nur Lesen',
|
||
'api_label_limit' => 'Limit (Anfr./min)',
|
||
'api_limit_title' => '0 = unbegrenzt',
|
||
'api_existing' => 'Vorhandene Schlüssel',
|
||
'api_none' => 'Noch keine API-Schlüssel angelegt.',
|
||
'api_col_prefix' => 'Präfix',
|
||
'api_col_scope' => 'Scope',
|
||
'api_col_limit' => 'Limit',
|
||
'api_col_last_used' => 'Zuletzt genutzt',
|
||
'api_col_created_by' => 'Erstellt von',
|
||
'api_state_active' => 'aktiv',
|
||
'api_state_blocked' => 'gesperrt',
|
||
'api_action_block' => 'Sperren',
|
||
'api_action_unblock' => 'Aktivieren',
|
||
'api_delete_confirm' => 'Schlüssel löschen?',
|
||
'api_usage' => 'Verwendung',
|
||
'api_usage_hint' => 'Authentifizierung per Header',
|
||
'api_openapi' => 'OpenAPI-Spezifikation (Import in Postman/Swagger):',
|
||
'api_created' => 'API-Schlüssel erstellt.',
|
||
'api_deleted' => 'API-Schlüssel gelöscht.',
|
||
'api_toggled' => 'Status geändert.',
|
||
'api_name_required' => 'Bitte eine Bezeichnung angeben.',
|
||
'api_created_once' => 'API-Schlüssel erstellt. Bitte JETZT kopieren – er wird nur einmal angezeigt!',
|
||
'api_status_updated' => 'Status aktualisiert.',
|
||
'int_title' => 'Integration & Wartung',
|
||
'int_subtitle' => 'SSO, Webhooks, SMS-Versand und Aufbewahrungsfristen.',
|
||
'int_security' => 'Sicherheitsrichtlinie',
|
||
'int_security_hint' => 'Erzwingt Zwei-Faktor-Authentifizierung für alle Administrator-Konten (lokale Accounts). Admins ohne 2FA werden bei der nächsten Aktion zur Einrichtung geleitet.',
|
||
'int_enforce_2fa' => '2FA für Administratoren verpflichtend',
|
||
'int_daily_limit' => 'Tageslimit Voucher pro Nicht-Admin-Benutzer (0 = unbegrenzt)',
|
||
'int_session_driver' => 'Session-Speicher',
|
||
'int_session_php' => 'PHP-Standard (Dateien)',
|
||
'int_session_db' => 'Datenbank (ermöglicht „überall abmelden")',
|
||
'int_captcha' => 'Captcha im öffentlichen Modus',
|
||
'int_captcha_off' => 'Aus',
|
||
'int_captcha_math' => 'Rechenaufgabe (ohne externen Dienst)',
|
||
'int_secret_set' => ' (gesetzt)',
|
||
'int_secret_placeholder' => '••••••• (leer = unverändert)',
|
||
'int_proxy' => 'Reverse-Proxy',
|
||
'int_proxy_hint' => 'IP-Adressen vertrauenswürdiger Proxies (kommasepariert). Nur dann wird die echte Client-IP aus',
|
||
'int_proxy_hint2' => 'für Rate-Limit & Audit verwendet.',
|
||
'int_webhook' => 'Webhook-Benachrichtigungen',
|
||
'int_webhook_hint' => 'Slack-, Microsoft-Teams- oder generische JSON-Webhook-URL. Wird bei Voucher-Erstellung ausgelöst.',
|
||
'int_webhook_active' => 'Webhook aktiv',
|
||
'int_webhook_url' => 'Webhook-URL',
|
||
'int_webhook_test' => 'Test senden',
|
||
'int_sms' => 'SMS-Versand (Twilio)',
|
||
'int_sms_hint' => 'Voucher-Codes optional per SMS versenden. Erfordert ein Twilio-Konto.',
|
||
'int_sms_active' => 'SMS-Versand aktiv',
|
||
'int_sms_from' => 'Absender (From)',
|
||
'int_sso' => 'Single Sign-On (OpenID Connect)',
|
||
'int_sso_hint' => 'Generischer OIDC-Provider (z.B. Keycloak, Authentik, Google, Auth0). Redirect-URI:',
|
||
'int_sso_active' => 'OIDC-Login aktiv',
|
||
'int_sso_button' => 'Button-Text',
|
||
'int_cleanup' => 'Datenhaltung & Cleanup (DSGVO)',
|
||
'int_cleanup_hint' => 'Aufbewahrungsfristen in Tagen (0 = deaktiviert). Ausführung per',
|
||
'int_cleanup_hint2' => '(täglich empfohlen).',
|
||
'int_cleanup_last' => 'Letzter Lauf:',
|
||
'int_cleanup_expired' => 'Abgelaufene Voucher',
|
||
'int_cleanup_audit' => 'Audit-Log',
|
||
'int_cleanup_logins' => 'Login-Versuche',
|
||
'int_saved' => 'Einstellungen gespeichert.',
|
||
'int_webhook_sent' => 'Test-Webhook gesendet.',
|
||
'int_webhook_failed' => 'Test-Webhook fehlgeschlagen.',
|
||
'int_webhook_test_sent' => 'Test-Benachrichtigung gesendet (sofern Webhook aktiv & URL gültig).',
|
||
'sec_token_invalid' => 'Ungültiges Sicherheits-Token',
|
||
'sec_setup_expired' => 'Setup abgelaufen, bitte erneut starten.',
|
||
'sec_code_invalid' => 'Code ungültig. Bitte erneut versuchen.',
|
||
'sec_enabled' => 'Zwei-Faktor-Authentifizierung wurde aktiviert. Bitte Recovery-Codes sicher speichern!',
|
||
'sec_sessions_closed' => 'Alle anderen Sitzungen wurden beendet.',
|
||
'sec_codes_new' => 'Neue Recovery-Codes erzeugt. Die alten sind jetzt ungültig.',
|
||
'sec_disabled' => 'Zwei-Faktor-Authentifizierung wurde deaktiviert.',
|
||
'backup_choose_file' => 'Bitte eine Backup-Datei auswählen.',
|
||
'backup_invalid_file' => 'Ungültige oder fremde Backup-Datei.',
|
||
'sec_title' => 'Zwei-Faktor-Authentifizierung',
|
||
'sec_account' => 'Konto:',
|
||
'sec_required_hint' => 'Aus Sicherheitsgründen ist 2FA für Administratoren verpflichtend. Bitte jetzt einrichten.',
|
||
'sec_recovery_codes' => 'Recovery-Codes',
|
||
'sec_recovery_hint' => 'Bewahren Sie diese sicher auf. Jeder Code funktioniert einmal, falls Sie keinen Zugriff auf Ihre App haben.',
|
||
'sec_unavailable' => 'Nicht verfügbar',
|
||
'sec_m365_hint' => 'Ihr Konto meldet sich über Microsoft 365 an. 2FA wird dort in Ihrem Microsoft-Konto verwaltet.',
|
||
'sec_active' => 'Aktiv',
|
||
'sec_inactive' => 'Inaktiv',
|
||
'sec_active_hint' => 'Bei jeder Anmeldung wird zusätzlich ein Code aus Ihrer Authenticator-App abgefragt.',
|
||
'sec_codes_left' => 'Verbleibende Recovery-Codes:',
|
||
'sec_regen_codes' => 'Recovery-Codes neu erzeugen',
|
||
'sec_disable_confirm' => '2FA wirklich deaktivieren?',
|
||
'sec_disable' => '2FA deaktivieren',
|
||
'sec_step_1' => 'Authenticator-App öffnen (Google Authenticator, Authy, Microsoft Authenticator …)',
|
||
'sec_step_2' => 'QR-Code scannen oder Secret manuell eingeben',
|
||
'sec_step_3' => 'Den angezeigten 6-stelligen Code unten eingeben',
|
||
'sec_code_label' => '6-stelliger Code',
|
||
'sec_enable' => '2FA aktivieren',
|
||
'sec_sessions' => 'Aktive Sitzungen:',
|
||
'sec_logout_others_confirm' => 'Alle anderen Sitzungen abmelden?',
|
||
'sec_logout_others' => 'Auf allen anderen Geräten abmelden',
|
||
'import_title' => 'Voucher-Import',
|
||
'import_subtitle' => 'Mehrere Vouchers auf einmal aus einer CSV-Liste erstellen.',
|
||
'import_card_title' => 'Mehrere Voucher erstellen',
|
||
'import_format_hint' => 'Eine Zeile pro Voucher:',
|
||
'import_format_hint2' => '– MaxGeräte und Minuten sind optional (Standardwerte greifen). Max. 200 Zeilen. Beispiel:',
|
||
'import_site' => 'Standort',
|
||
'import_file' => 'CSV-Datei (optional)',
|
||
'import_paste' => '… oder direkt einfügen',
|
||
'import_confirm' => 'Import jetzt starten?',
|
||
'import_submit' => 'Importieren',
|
||
'import_result' => 'Ergebnis',
|
||
'import_col_code' => 'Code / Fehler',
|
||
'import_created' => '{count} Voucher erstellt.',
|
||
'backup_title' => 'Backup & Restore',
|
||
'backup_subtitle' => 'Konfiguration und Daten sichern oder wiederherstellen.',
|
||
'backup_export' => 'Export',
|
||
'backup_export_hint' => 'Lädt Einstellungen, Sites und Voucher-Profile als JSON. Site-Passwörter bleiben mit dem',
|
||
'backup_export_hint2' => 'dieser Installation verschlüsselt – ein Restore auf einer Installation mit anderem APP_KEY kann sie nicht entschlüsseln.',
|
||
'backup_export_btn' => 'Konfiguration exportieren',
|
||
'backup_import' => 'Import / Restore',
|
||
'backup_import_hint' => 'Vorhandene Sites werden anhand von Name + Site-ID aktualisiert, neue hinzugefügt. Profile werden nur angelegt, wenn der Name noch nicht existiert. Der Cron-Token wird nie überschrieben.',
|
||
'backup_opt_settings' => 'Einstellungen',
|
||
'backup_opt_sites' => 'Sites',
|
||
'backup_opt_templates' => 'Voucher-Profile',
|
||
'backup_import_confirm' => 'Import jetzt durchführen?',
|
||
'backup_imported' => 'Import abgeschlossen: {settings} Einstellungen, {sites} Sites, {templates} Profile.',
|
||
'rep_title' => 'Reporting',
|
||
'rep_subtitle' => 'Auswertungen nach Zeitraum, Site und Benutzer.',
|
||
'rep_period' => 'Zeitraum',
|
||
'rep_days' => 'Tage',
|
||
'rep_csv_daily' => 'CSV (täglich)',
|
||
'rep_csv_site' => 'CSV (pro Site)',
|
||
'rep_csv_user' => 'CSV (pro Nutzer)',
|
||
'rep_print' => 'Drucken/PDF',
|
||
'rep_total' => 'Vouchers gesamt',
|
||
'rep_in_period' => 'In {days} Tagen erstellt',
|
||
'rep_chart_title' => 'Erstellte Voucher ({days} Tage)',
|
||
'rep_per_site' => 'Pro Site',
|
||
'rep_top_users' => 'Top-Nutzer',
|
||
'rep_col_created' => 'Voucher erstellt',
|
||
'rep_no_data' => 'Keine Daten',
|
||
'label_total' => 'Gesamt',
|
||
'label_user' => 'Benutzer',
|
||
'js_confirm_delete_voucher' => 'Voucher wirklich löschen?',
|
||
'js_confirm_delete_user' => 'Benutzer wirklich löschen?',
|
||
'js_confirm_delete_site' => 'Möchten Sie diese Site wirklich löschen?',
|
||
'js_confirm_delete_template' => 'Profil wirklich löschen?',
|
||
'js_confirm_delete_token' => 'Token wirklich löschen?',
|
||
'js_error' => 'Fehler',
|
||
'js_enter_email' => 'Bitte E-Mail eingeben.',
|
||
'js_running' => 'Läuft...',
|
||
'js_run_now' => 'Jetzt ausführen',
|
||
'js_copied' => 'Kopiert!',
|
||
'js_code_copied' => 'Code kopiert!',
|
||
'js_click_to_copy' => 'Klicken zum Kopieren',
|
||
'settings_defaults_hint' => 'Diese Werte werden als Vorgabe im Voucher-Formular verwendet.',
|
||
'settings_cron_what' => 'Was macht der Cron-Job?',
|
||
'settings_smtp_from_name' => 'Absender Name',
|
||
'settings_tpl_voucher_mail' => 'Voucher E-Mail',
|
||
'settings_tpl_user_notify' => 'Benutzer-Benachrichtigung',
|
||
'settings_editor_hint' => 'Der Editor (TinyMCE, GPL-Variante) wird lokal aus',
|
||
'settings_editor_hint2' => 'geladen – es werden keine externen Dienste aufgerufen.',
|
||
'settings_print_template' => 'HTML Template für Voucher-Druck',
|
||
'settings_leave_empty' => 'Leer = nicht ändern',
|
||
'sites_id_hint' => 'Zu finden in der UniFi Controller URL',
|
||
'sites_pw_unchanged' => 'Leer lassen = nicht ändern',
|
||
'templates_minutes_hint' => '480 = 8 Stunden',
|
||
'templates_desc_placeholder' => 'Kurze Beschreibung für Ihr Team',
|
||
'audit_all_users' => 'Alle Benutzer',
|
||
'label_expires_at' => 'Gültig bis:',
|
||
'label_site_colon' => 'Standort:',
|
||
'audit_action_voucher_created' => 'Voucher erstellt',
|
||
'audit_action_voucher_bulk' => 'Bulk Voucher',
|
||
'audit_action_user_login' => 'Login',
|
||
'audit_action_user_logout' => 'Logout',
|
||
'audit_action_user_created' => 'Benutzer erstellt',
|
||
'audit_action_user_updated' => 'Benutzer geändert',
|
||
'audit_action_user_deleted' => 'Benutzer gelöscht',
|
||
'audit_action_site_added' => 'Site hinzugefügt',
|
||
'audit_action_site_updated' => 'Site geändert',
|
||
'audit_action_site_deleted' => 'Site gelöscht',
|
||
'audit_action_settings_saved' => 'Einstellungen gespeichert',
|
||
'audit_action_password_reset' => 'Passwort-Reset',
|
||
'audit_action_template_created' => 'Profil erstellt',
|
||
'audit_action_template_updated' => 'Profil geändert',
|
||
'audit_action_template_deleted' => 'Profil gelöscht',
|
||
'audit_page_info' => 'Seite {page} von {pages} ({total} Einträge)',
|
||
'a11y_skip' => 'Zum Inhalt springen',
|
||
'a11y_theme' => 'Darstellung umschalten (hell/dunkel)',
|
||
'a11y_menu' => 'Navigation öffnen',
|
||
'a11y_language' => 'Sprache',
|
||
'a11y_notifications' => 'Benachrichtigungen',
|
||
'audit_system_anon' => 'System/Anonym',
|
||
'vouchers_resend' => 'Per E-Mail senden',
|
||
'label_minutes_short' => 'Min.',
|
||
'js_copy' => 'Kopieren',
|
||
'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',
|
||
];
|