<?php
return [
    'app.title' => 'Meine Anwendung',
    'app.welcome' => 'Willkommen',
    'app.copyright' => '© {year} {app}',
    'app.description' => 'Webanwendung mit Benutzerverwaltung',
    'nav.home' => 'Startseite',
    'nav.about' => 'Über',
    'nav.doc' => 'Dokumentation',
    'doc.title' => 'Dokumentation',
    'doc.cat_general_admin' => 'Allgemeine Verwaltung',
    'doc.cat_module_admin' => 'Modulverwaltung',
    'doc.cat_general_user' => 'Allgemeines Benutzerhandbuch',
    'doc.cat_module_user' => 'Modul-Benutzerhandbücher',
    'doc.empty' => 'Keine Dokumentation für Ihr Profil verfügbar.',
    'doc.back' => 'Zurück zur Dokumentation',
    'nav.login' => 'Anmelden',
    'nav.logout' => 'Abmelden',
    'nav.profile' => 'Mein Profil',
    'nav.admin' => 'Administration',
    'nav.settings' => 'Einstellungen',
    'nav.users' => 'Benutzer',
    'auth.username' => 'Benutzername',
    'auth.password' => 'Passwort',
    'auth.password_new' => 'Neues Passwort',
    'auth.password_conf' => 'Passwort bestätigen',
    'auth.password_keep' => 'Leer lassen, um aktuelles Passwort zu behalten',
    'auth.login' => 'Anmelden',
    'auth.logout' => 'Abmelden',
    'auth.remember' => 'Angemeldet bleiben',
    'auth.login_title' => 'Anmelden',
    'auth.login_error' => 'Ungültiger Benutzername oder Passwort.',
    'auth.too_many_attempts' => 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in einigen Minuten erneut.',
    'auth.login_inactive' => 'Dieses Konto ist deaktiviert.',
    'auth.logout_success' => 'Sie wurden abgemeldet.',
    'auth.no_access' => 'Zugriff verweigert. Unzureichende Berechtigungen.',
    'auth.method' => 'Authentifizierungsmethode',
    'auth.method_local' => 'Lokales Konto',
    'auth.method_oauth' => 'OAuth / SSO',
    'auth.method_ldap' => 'LDAP / Active Directory',
    'auth.or_use' => 'Oder anmelden mit:',
    'user.list' => 'Benutzerliste',
    'user.create' => 'Benutzer erstellen',
    'user.edit' => 'Bearbeiten',
    'user.delete' => 'Löschen',
    'user.confirm_delete' => 'Möchten Sie den Benutzer „{username}" wirklich löschen?',
    'user.profile' => 'Rolle',
    'user.roles' => 'Rollen',
    'user.roles_hint' => 'Wählen Sie eine oder mehrere Rollen. app_admin (System) gewährt alle Rechte auf allen Modulen.',
    'user.roles_system' => 'System',
    'user.role_self_locked' => 'gesperrt: eigene Admin-Rolle nicht entfernbar',
    'user.language' => 'Sprache',
    'user.theme' => 'Design',
    'user.postgresql_prefs' => 'PostgreSQL-Einstellungen',
    'user.postgresql_landing' => 'Startseite nach Auswahl einer Datenbank',
    'user.postgresql_landing_hint' => 'Seite, die nach Auswahl einer PostgreSQL-Datenbank angezeigt wird. Auch per Klick über die schwebende Schaltfläche auf den Berichtsseiten einstellbar.',
    'user.oracle_prefs' => 'Oracle-Einstellungen',
    'user.oracle_landing' => 'Startseite nach Auswahl einer Datenbank',
    'user.oracle_landing_hint' => 'Seite, die nach Auswahl einer Oracle-Datenbank angezeigt wird.',
    'user.oracle_report_format' => 'Format der Oracle-Berichte',
    'user.oracle_format_html' => 'Statisches HTML',
    'user.oracle_format_active' => 'Dynamisch (wenn verfügbar)',
    'user.oracle_format_hint' => 'Betrifft ASH und SQL Monitor. AWR hat kein dynamisches Format.',
    'user.active' => 'Aktiv',
    'user.inactive' => 'Inaktiv',
    'user.created_at' => 'Erstellt',
    'user.last_login' => 'Letzte Anmeldung',
    'user.email' => 'E-Mail',
    'user.password' => 'Passwort',
    'user.save' => 'Speichern',
    'user.cancel' => 'Abbrechen',
    'user.never' => 'Nie',
    'user.actions' => 'Aktionen',
    'role.app_admin' => 'Anwendungsadministrator',
    'role.oracle_admin' => 'Oracle-Administrator',
    'role.oracle_user' => 'Oracle-Benutzer',
    'role.cmdb_admin' => 'CMDB-Administrator',
    'role.cmdb_user' => 'CMDB-Benutzer',
    'role.cnp_admin' => 'CNP-Administrator',
    'role.cnp_user' => 'CNP-Benutzer',
    'theme.label' => 'Design',
    'theme.os' => 'Systemdesign',
    'theme.light' => 'Hell',
    'theme.dark' => 'Dunkel',
    'theme.colorblind' => 'Hoher Kontrast / Farbenblind',
    'theme.custom' => 'Benutzerdefiniert',
    'lang.label' => 'Sprache',
    'lang.fr' => 'Français',
    'lang.en' => 'English',
    'lang.pl' => 'Polski',
    'lang.it' => 'Italiano',
    'lang.es' => 'Español',
    'lang.ro' => 'Română',
    'lang.de' => 'Deutsch',
    'settings.title' => 'Anwendungseinstellungen',
    'settings.app_name' => 'Anwendungsname',
    'settings.app_logo' => 'Logo',
    'settings.app_logo_hint' => 'PNG, JPG, SVG, WebP — max. 2 MB',
    'settings.app_favicon' => 'Favicon',
    'settings.app_favicon_hint' => 'PNG, ICO, SVG — max. 512 KB. Empfohlen: 32×32 px',
    'settings.app_logo_del' => 'Logo entfernen',
    'settings.app_favicon_del' => 'Favicon entfernen',
    'settings.appearance' => 'Erscheinungsbild',
    'settings.default_theme' => 'Standarddesign',
    'settings.default_lang' => 'Standardsprache',
    'settings.auth_methods' => 'Authentifizierungsmethoden',
    'settings.smtp_title' => 'E-Mail (SMTP)',
    'settings.smtp_hint' => 'SMTP-Server-Konfiguration für den E-Mail-Versand (Benachrichtigungen, Alarme).',
    'settings.smtp_host' => 'SMTP-Server',
    'settings.smtp_port' => 'Port',
    'settings.smtp_encryption' => 'Verschlüsselung',
    'settings.smtp_enc_none' => 'Keine',
    'settings.smtp_auth_enabled' => 'SMTP-Authentifizierung',
    'settings.smtp_auth_hint' => 'Deaktivieren, wenn der Server ein internes Relay ist, das keine Anmeldedaten erfordert.',
    'settings.smtp_username' => 'Benutzername',
    'settings.smtp_password' => 'Passwort',
    'settings.smtp_from_address' => 'Absenderadresse',
    'settings.smtp_from_name' => 'Absendername',
    'settings.smtp_test' => 'Verbindung testen',
    'settings.smtp_test_send' => 'Test senden',
    'settings.smtp_test_ok' => 'SMTP-Verbindung erfolgreich.',
    'settings.smtp_test_sent' => 'Test-E-Mail gesendet. Prüfen Sie Ihren Posteingang.',
    'settings.smtp_test_rcpt_placeholder' => 'empfaenger@beispiel.de',
    'settings.smtp_test_rcpt_required' => 'Geben Sie eine Empfänger-E-Mail-Adresse für den Test ein.',
    'settings.smtp_test_subject' => 'SMTP-Konfiguration validiert',
    'settings.smtp_test_body' => 'Wenn Sie diese E-Mail erhalten, ist die SMTP-Konfiguration der Anwendung korrekt.',
    'settings.smtp_host_required' => 'SMTP-Server ist nicht konfiguriert.',
    'report_sub.title' => 'Berichtsabonnements',
    'report_sub.schedules_title' => 'Berichtsplanung',
    'report_sub.matrix_title' => 'Benutzerabonnements',
    'report_sub.save' => 'Speichern',
    'report_sub.saved' => 'Abonnements gespeichert.',
    'report_sub.col_user' => 'Benutzer',
    'report_sub.col_email' => 'E-Mail',
    'report_sub.no_users' => 'Keine aktiven Benutzer mit E-Mail-Adresse.',
    'report_sub.frequency_daily' => 'Täglich',
    'report_sub.frequency_weekly' => 'Wöchentlich',
    'report_sub.frequency_monthly' => 'Monatlich',
    'report_sub.day_of_month' => 'Tag des Monats',
    'report_sub.logical_day' => 'Logischer Tag',
    'report_sub.dow_1' => 'Montag',
    'report_sub.dow_2' => 'Dienstag',
    'report_sub.dow_3' => 'Mittwoch',
    'report_sub.dow_4' => 'Donnerstag',
    'report_sub.dow_5' => 'Freitag',
    'report_sub.dow_6' => 'Samstag',
    'report_sub.dow_7' => 'Sonntag',
    'report_sub.logical_first_monday' => 'Erster Montag',
    'report_sub.logical_first_tuesday' => 'Erster Dienstag',
    'report_sub.logical_first_wednesday' => 'Erster Mittwoch',
    'report_sub.logical_first_thursday' => 'Erster Donnerstag',
    'report_sub.logical_first_friday' => 'Erster Freitag',
    'report_sub.logical_last_monday' => 'Letzter Montag',
    'report_sub.logical_last_friday' => 'Letzter Freitag',
    'report_sub.logical_last_day' => 'Letzter Tag',
    'report_sub.report_cnp_ad_anomalies' => 'AD-Anomalien (CNP)',
    'report_sub.report_cmdb_db_inventory' => 'Datenbankbestand (CMDB)',
    'report_sub.report_cnp_cmdb_sync' => 'CMDB/Oracle-Abgleich (CNP)',
    'report_sub.subject_cnp_ad_anomalies' => 'Bericht: AD-Anomalien',
    'report_sub.subject_cmdb_db_inventory' => 'Bericht: Datenbankbestand',
    'report_sub.subject_cnp_cmdb_sync' => 'Bericht: CMDB-/Oracle-Abgleich',
    'report_sub.view_online' => 'Online ansehen',
    'report_sub.total_databases' => 'Datenbanken gesamt',
    'report_sub.log_title' => 'Letzte Versendungen',
    'report_sub.log_date' => 'Datum',
    'report_sub.log_report' => 'Bericht',
    'report_sub.log_recipients' => 'Empfänger',
    'report_sub.log_status' => 'Status',
    'report_sub.no_active_module' => 'Kein Bericht verfügbar: alle hängen von derzeit deaktivierten Modulen ab. Aktivieren Sie das betreffende Modul, um dessen Zeitplan und Empfänger zurückzubekommen — sie bleiben erhalten.',
    'settings.oauth_config' => 'OAuth-Konfiguration',
    'settings.ldap_config' => 'LDAP-Konfiguration',
    'settings.save' => 'Einstellungen speichern',
    'settings.debug_mode' => 'Debug-Modus',
    'settings.trace_mode' => 'Trace-Modus',
    'settings.session_section' => 'Sitzung',
    'settings.session_lifetime' => 'Sitzungsdauer',
    'settings.session_lifetime_unit' => 'Sekunden',
    'settings.session_lifetime_hint' => 'Zwischen 300 (5 Min.) und 86.400 (24 Std.). Standard: 3.600 (1 Std.).',
    'settings.enabled' => 'Aktiviert',
    'settings.disabled' => 'Deaktiviert',
    'settings.client_id' => 'Client-ID',
    'settings.client_secret' => 'Client-Secret',
    'settings.redirect_uri' => 'Weiterleitungs-URI',
    'settings.auth_url' => 'Autorisierungs-URL',
    'settings.token_url' => 'Token-URL',
    'settings.ldap_host' => 'LDAP-Host',
    'settings.ldap_port' => 'LDAP-Port',
    'settings.ldap_base_dn' => 'Basis-DN',
    'settings.ldap_bind_dn' => 'Bind-DN',
    'settings.ldap_bind_pass' => 'Bind-Passwort',
    'settings.ldap_user_dn_pattern' => 'Benutzer-DN-Muster',
    'settings.ldap_user_dn_pattern_hint' => 'Platzhalter: {user}, {base_dn}, {domain}. Z. B. OpenLDAP: uid={user},{base_dn} — AD UPN: {user}@{domain}',
    'settings.ldap_tls_insecure' => 'TLS-Zertifikatsprüfung überspringen (LDAPS)',
    'settings.ldap_tls_insecure_hint' => 'Nur zur Diagnose verwenden; in Produktion die CA im Trust Store des Webservers installieren.',
    'settings.ldap_test_section' => 'Konfigurationstest',
    'settings.ldap_test_btn' => 'Konfiguration testen',
    'settings.ldap_test_user' => 'Test-Benutzername',
    'settings.ldap_test_user_hint' => 'Optional — um eine echte Benutzeranmeldung zu testen',
    'settings.ldap_test_pass' => 'Test-Passwort',
    'settings.ldap_test_running' => 'Test läuft…',
    'settings.ldap_test_ok' => 'LDAP-Konfiguration gültig',
    'settings.ldap_test_ko' => 'LDAP-Test fehlgeschlagen',
    'settings.ldap_test_step_ext_ko' => 'PHP-ldap-Erweiterung fehlt — extension=ldap in php.ini aktivieren',
    'settings.ldap_test_step_ext_ok' => 'PHP-ldap-Erweiterung geladen',
    'settings.ldap_test_step_host_ko' => 'LDAP-Host nicht angegeben',
    'settings.ldap_test_step_connect_ko' => 'ldap_connect() fehlgeschlagen — ungültige Parameter',
    'settings.ldap_test_step_connect_ok' => 'Verbindung initialisiert (LDAPv3, 5 s Timeout)',
    'settings.ldap_test_step_svc_ok' => 'Service-Bind erfolgreich',
    'settings.ldap_test_step_svc_ko' => 'Service-Bind fehlgeschlagen',
    'settings.ldap_test_step_anon_ok' => 'Anonymer Bind erfolgreich',
    'settings.ldap_test_step_anon_warn' => 'Anonymer Bind abgelehnt (normal bei Active Directory)',
    'settings.ldap_test_step_user_ok' => 'Benutzer-Bind erfolgreich',
    'settings.ldap_test_step_user_ko' => 'Benutzer-Bind fehlgeschlagen',
    'settings.ldap_test_step_user_no_base' => 'Fehlende Base DN — Benutzer-DN kann nicht erstellt werden',
    'admin.title' => 'Administration',
    'admin.dashboard' => 'Dashboard',
    'admin.total_users' => 'Benutzer gesamt',
    'admin.active_users' => 'Aktive Benutzer',
    'admin.welcome' => 'Willkommen im Administrations-Panel.',
    'msg.save' => 'Speichern',
    'msg.cancel' => 'Abbrechen',
    'msg.saved' => 'Änderungen erfolgreich gespeichert.',
    'msg.error' => 'Ein Fehler ist aufgetreten.',
    'msg.warning' => 'Warnung',
    'msg.deleted' => 'Erfolgreich gelöscht.',
    'msg.access_denied' => 'Zugriff verweigert.',
    'msg.not_found' => 'Seite nicht gefunden.',
    'msg.server_error' => 'Interner Serverfehler.',
    'msg.required_fields' => 'Bitte füllen Sie alle Pflichtfelder aus.',
    'msg.passwords_mismatch' => 'Passwörter stimmen nicht überein.',
    'msg.password_changed' => 'Passwort erfolgreich geändert.',
    'msg.user_created' => 'Benutzer erfolgreich erstellt.',
    'msg.user_updated' => 'Benutzer erfolgreich aktualisiert.',
    'msg.user_deleted' => 'Benutzer gelöscht.',
    'msg.username_taken' => 'Dieser Benutzername ist bereits vergeben.',
    'msg.ldap_user_not_found' => 'Diese Kennung existiert nicht im LDAP-Verzeichnis.',
    'module.title' => 'Module',
    'module.list' => 'Modulliste',
    'module.manage' => 'Module verwalten',
    'module.name' => 'Modul',
    'module.status' => 'Status',
    'module.active' => 'Aktiv',
    'module.inactive' => 'Inaktiv',
    'module.active_count' => 'aktives Modul(e)',
    'module.enable' => 'Aktivieren',
    'module.enable_required' => '{module} und seine Abhängigkeiten aktivieren',
    'module.enable_required_confirm' => 'Modul „{module}" und alle Module aktivieren, von denen es abhängt?',
    'module.enable_required_summary' => '{n} Modul(e) aktiviert: {list}.',
    'module.enable_required_none' => 'Das Modul und seine Abhängigkeiten sind bereits aktiv.',
    'module.enable_required_failed' => '{n} Modul(e) konnte(n) nicht aktiviert werden:',
    'module.disable' => 'Deaktivieren',
    'module.open' => 'Öffnen',
    'module.roles' => 'Rollen',
    'module.depends_on' => 'Hängt ab von',
    'module.none_registered' => 'Keine Module registriert.',
    'module.confirm_disable' => 'Modul „{label}" deaktivieren?',
    'module.warn_users_linked' => '{n} aktiver Benutzer hat die Rolle „{role}". Sie verlieren den Zugriff auf das Modul.',
    'module.deps_missing' => 'Modul „{module}" kann nicht aktiviert werden: erforderliches Modul nicht aktiv — {deps}',
    'module.deps_dependents' => 'Modul „{module}" kann nicht deaktiviert werden: noch verwendet von {dependents}',
    'module.enable_failed' => 'Modulaktivierung fehlgeschlagen',
    'module.provision_summary' => '{created} Benutzer erstellt, {roles} Rolle(n) zugewiesen.',
    'module.add_title' => 'Modul hinzufügen oder aktualisieren',
    'module.add_hint' => 'Laden Sie ein ZIP-Archiv mit einem einzigen Modulordner hoch (mit module.php im Ordnerstamm). Existiert das Modul noch nicht, wird es deaktiviert hinzugefügt; existiert es bereits, wird es an Ort und Stelle aktualisiert — seine Rollen samt Benutzerzuweisungen, seine Konfiguration und seine Daten bleiben erhalten. Die bisherige Version wird vor dem Ersetzen gesichert.',
    'module.zip_label' => 'Modul-ZIP-Archiv',
    'module.add_apply' => 'Anwenden',
    'module.remove' => 'Entfernen',
    'module.confirm_delete' => 'Modul „{label}“ und alle seine Daten (Rollen, Konfiguration) löschen?',
    'module.cannot_delete_active' => 'Ein aktives Modul kann nicht entfernt werden. Deaktivieren Sie es zuerst.',
    'module.upload_error' => 'Fehler beim Datei-Upload.',
    'module.upload_invalid_zip' => 'Die Datei ist kein gültiges ZIP-Archiv.',
    'module.upload_bad_structure' => 'Das ZIP muss einen einzigen Modulordner im Stamm enthalten.',
    'module.upload_no_descriptor' => 'Das ZIP enthält keine module.php im Stamm des Modulordners.',
    'module.upload_exists' => 'Ein Modul „{name}“ existiert bereits.',
    'module.upload_extract_failed' => 'Modulextraktion fehlgeschlagen.',
    'module.upload_success' => 'Modul „{name}“ hinzugefügt (deaktiviert). Aktivieren Sie es zur Nutzung.',
    'module.update_success' => 'Modul „{name}“ aktualisiert (v{from} → v{to}). Rollen, Konfiguration und Daten blieben erhalten. Sicherung der bisherigen Version: {backup}',
    'module.update_failed' => 'Die Aktualisierung des Moduls „{name}“ ist fehlgeschlagen: Das vorhandene Verzeichnis konnte nicht beiseitegeschoben werden. Es wurde nichts geändert.',
    'module.update_backup_failed' => 'Die Sicherung der installierten Version ist fehlgeschlagen. Die Aktualisierung wurde abgebrochen, es wurde nichts geändert.',
    'module.update_rollback' => 'Die Aktualisierung des Moduls „{name}“ ist fehlgeschlagen; die bisherige Version wurde wiederhergestellt.',
    'module.update_rollback_failed' => 'Die Aktualisierung des Moduls „{name}“ ist fehlgeschlagen UND die bisherige Version konnte nicht wiederhergestellt werden. Die Anwendung bleibt im Wartungsmodus: Stellen Sie die Sicherung {backup} wieder her (hier hochladen) und beenden Sie dann den Wartungsmodus.',
    'module.update_name_mismatch' => 'Inkonsistentes Archiv: Der Ordner heißt „{name}“, der Deskriptor deklariert jedoch „{decl}“. Es wurde nichts geändert.',
    'module.update_on_enable_warn' => 'Modul „{name}“ aktualisiert, aber seine Initialisierung meldete einen Fehler: {error}',
    'module.delete_success' => 'Modul entfernt.',
    'module.delete_failed' => 'Das Modulverzeichnis „{name}“ konnte nicht vollständig entfernt werden.',
    'module.dev_php_env' => 'PHP-Umgebung',
    'module.dev_ini' => 'php.ini-Konfiguration',
    'module.dev_session' => 'Aktuelle Sitzung',
    'module.dev_extensions' => 'Geladene Erweiterungen',
    'module.dev_logs' => 'Letzte Protokolleinträge',
    'module.dev_no_logs' => 'Keine Protokolleinträge gefunden.',
    'module.dev_db_file' => 'Datenbank',
    'home.title' => 'Startseite',
    'home.logged_in' => 'Sie sind als <strong>{username}</strong> ({role}) angemeldet.',
    'home.visitor' => 'Sie surfen als Besucher. <a href="/login.php">Anmelden</a>, um mehr Funktionen zu nutzen.',
    'admin.maintenance' => 'Wartung',

    // ── Batches / Planung ─────────────────────────────────────────────────
    'batch.title' => 'Batches / Planung',
    'batch.card_desc' => 'Aufgabenplanung (crontab / Windows-Planer), Status und Protokolle.',
    'batch.manage' => 'Batches verwalten',
    'batch.schedule_title' => 'Vorgeschlagener Plan',
    'batch.schedule_intro' => 'Geplante Aufgaben der Anwendung und ihre Häufigkeit.',
    'batch.col_job' => 'Aufgabe',
    'batch.col_schedule' => 'Planung (cron)',
    'batch.col_command' => 'Befehl',
    'batch.col_state' => 'Status',
    'batch.state_active' => 'Aktiv',
    'batch.state_inactive' => 'Inaktiv',
    'batch.job_logrotate' => 'Log-Rotation',
    'batch.job_backup' => 'Sicherung',
    'batch.job_collect_ash' => 'ASH-Erfassung',
    'batch.job_collect_cmdb' => 'CMDB-Erfassung',
    'batch.job_collect_rman' => 'RMAN-Erfassung',
    'batch.job_collect_users' => 'Oracle-Benutzerinventar',
    'batch.job_schedule_reports' => 'Versand geplanter Berichte',
    'batch.job_remediate' => 'Oracle-Benutzer-Remediation',
    'batch.job_provision' => 'Oracle-Benutzer-Provisionierung',
    'batch.install' => 'Aktivieren (crontab installieren)',
    'batch.uninstall' => 'Deaktivieren (aus crontab entfernen)',
    'batch.confirm_install' => 'Die Aufgaben in der crontab des apache-Benutzers installieren?',
    'batch.confirm_uninstall' => 'Die Anwendungsaufgaben aus der crontab entfernen?',
    'batch.apache_note' => 'Wirkt auf die crontab des Webserver-Benutzers (apache).',
    'batch.crontab_title' => 'Aktuelle crontab',
    'batch.crontab_empty' => 'Keine crontab für den aktuellen Benutzer.',
    'batch.windows_title' => 'Windows (Aufgabenplanung)',
    'batch.windows_intro' => 'schtasks-Befehle, in einer Administrator-Eingabeaufforderung auszuführen (Windows-Host).',
    'batch.logs_title' => 'Letzte Ausführungen',
    'batch.logs_rman' => 'RMAN-Erfassung',
    'batch.logs_ash' => 'ASH-Erfassung',
    'batch.logs_backups' => 'Sicherungen',
    'batch.logs_applog' => 'Anwendungsprotokoll',
    'batch.logs_none' => 'Keine Daten.',
    'batch.col_when' => 'Am',
    'batch.col_result' => 'Ergebnis',
    'batch.col_source' => 'Quelle',
    'batch.col_day' => 'Tag',
    'batch.col_rows' => 'Zeilen',
    'batch.failed' => 'Fehlgeschlagen',
    'batch.shell_unavailable' => 'Shell-Ausführung nicht verfügbar (crontab nicht über das Web verwaltbar).',
    'batch.already_installed' => 'Alle Aufgaben sind bereits in der crontab vorhanden.',
    'batch.install_ok' => '{n} Aufgabe(n) zur crontab hinzugefügt.',
    'batch.uninstall_ok' => 'Anwendungsaufgaben aus der crontab entfernt.',
    'batch.crontab_error' => 'crontab konnte nicht aktualisiert werden.',
    'backup.title' => 'Sicherung & Wiederherstellung',
    'backup.overview' => 'Anwendungsmetadaten',
    'backup.overview_hint' => 'Inhalt des gesicherten Verzeichnisses: Datenbank, Verschlüsselungsschlüssel, Oracle-Cloud-Wallets.',
    'backup.files_count' => 'Dateien',
    'backup.total_size' => 'Gesamtgröße',
    'backup.create_title' => 'Sicherung erstellen',
    'backup.create_hint' => 'Erstellt ein ZIP-Archiv des gesamten gesicherten Verzeichnisses (ohne vorherige Sicherungen). Die Sicherung kann auf dem Server gespeichert oder heruntergeladen werden.',
    'backup.save_local' => 'Auf dem Server speichern',
    'backup.download' => 'Herunterladen',
    'backup.created_ok' => 'Sicherung „%s" erstellt (%d Dateien).',
    'backup.restore_title' => 'Sicherung wiederherstellen',
    'backup.restore_hint' => 'Laden Sie ein auf dieser Seite erstelltes ZIP-Archiv hoch, um Metadaten wiederherzustellen. Vor der Wiederherstellung wird automatisch eine Sicherung des aktuellen Zustands erstellt.',
    'backup.restore_label' => 'Sicherungs-ZIP-Archiv',
    'backup.restore_apply' => 'Wiederherstellen',
    'backup.restore_confirm' => 'Sind Sie sicher, dass Sie diese Sicherung wiederherstellen möchten? Der aktuelle Zustand wird zuvor gesichert.',
    'backup.restore_this' => 'Diese Sicherung wiederherstellen',
    'backup.restored_ok' => '%d Datei(en) wiederhergestellt. Sicherung vor Wiederherstellung: %s',
    'backup.local_list' => 'Lokale Sicherungen',
    'backup.no_backups' => 'Keine lokalen Sicherungen.',
    'backup.col_name' => 'Datei',
    'backup.col_size' => 'Größe',
    'backup.col_date' => 'Datum',
    'backup.delete_confirm' => 'Sicherung „%s" löschen?',
    'backup.deleted_ok' => 'Sicherung „%s" gelöscht.',
    'backup.invalid_file' => 'Ungültiger Dateiname.',
    'backup.securite_missing' => 'Das gesicherte Verzeichnis existiert nicht.',
    'backup.create_error' => 'ZIP-Archiv konnte nicht erstellt werden.',
    'update.title' => 'Anwendungsaktualisierung',
    'update.current_version' => 'Aktuelle Version',
    'update.upload_title' => 'Update hochladen',
    'update.upload_hint' => 'Wählen Sie ein ZIP-Archiv mit den Update-Dateien aus. Die Datenbank und der Verschlüsselungsschlüssel werden nicht überschrieben.',
    'update.zip_label' => 'Update-ZIP-Archiv',
    'update.apply' => 'Update anwenden',
    'update.confirm' => 'Möchten Sie dieses Update wirklich anwenden? Ein Backup wird automatisch erstellt.',
    'update.upload_error' => 'Fehler beim Hochladen der Datei.',
    'update.invalid_zip' => 'Die Datei ist kein gültiges ZIP-Archiv.',
    'update.zip_ext_missing' => 'Die PHP-Erweiterung ZipArchive ist auf diesem Server nicht verfügbar.',
    'update.empty_archive' => 'Das Archiv enthält keine extrahierbaren Dateien (alle Dateien sind geschützt oder das Archiv ist leer).',
    'update.success' => '%d Datei(en) erfolgreich aktualisiert.',
    'update.backup_created' => 'Backup erstellt: %s',
    'update.deleted' => '%d Element(e) der vorherigen Version entfernt.',
    'update.full_backup_created' => 'Vollständiges Backup: %s',
    'update.backup_failed' => 'Backup vor dem Update fehlgeschlagen — Update abgebrochen, keine Datei gelöscht.',
    'update.maintenance_failed' => 'Unvollständige Extraktion: die Anwendung bleibt im Wartungsmodus. Stellen Sie das Backup %s wieder her (Backup/Wiederherstellung) oder starten Sie das Update erneut.',
    'update.maintenance_active' => 'Die Anwendung befindet sich derzeit im Wartungsmodus (nur für Administratoren sichtbar).',
    'update.clear_maintenance' => 'Wartungsmodus beenden',
    'update.maintenance_cleared' => 'Wartungsmodus deaktiviert.',
    'update.danger_hint' => 'Das Update versetzt die App in den Wartungsmodus, sichert und LÖSCHT dann die vorherige Version (außer securite/ und log/) und extrahiert die neue.',
    'update.pruned' => '%d alte Sicherung(en) entfernt.',
    'update.restore_success' => 'Version wiederhergestellt aus %s:',
    'update.backup_deleted' => 'Sicherung gelöscht: %s',
    'update.backup_not_found' => 'Sicherung nicht gefunden oder ungültiger Name.',
    'update.delete_failed' => 'Löschen der Sicherung fehlgeschlagen.',
    'update.backups_title' => 'Vorherige Versionen (Sicherungen)',
    'update.backups_hint' => 'Die letzten 3 Versionen werden automatisch aufbewahrt. Sie können eine Version wiederherstellen oder löschen.',
    'update.backups_empty' => 'Keine Sicherung verfügbar.',
    'update.backup_latest' => 'neueste',
    'update.restore' => 'Wiederherstellen',
    'update.restore_confirm' => 'Das Wiederherstellen dieser Version ersetzt die aktuelle (Clean Replace). Fortfahren?',
    'update.delete_backup' => 'Löschen',
    'update.delete_backup_confirm' => 'Diese Sicherung endgültig löschen?',
    'update.protected_dirs' => 'Daten und Protokolle immer erhalten',
    'update.git_kept' => 'Git-Metadaten erhalten (Developer-Modul vorhanden)',
    'update.git_removed' => 'Git-Metadaten entfernt (paketierte Instanz)',
    'update.partial_errors' => '%d Datei(en) konnten nicht extrahiert werden:',
    'update.skipped_files' => '%d geschützte Datei(en) übersprungen:',
    'update.protected_title' => 'Geschützte Dateien',
    'update.protected_hint' => 'Die folgenden Dateien werden bei einem Update niemals überschrieben, auch wenn sie im Archiv enthalten sind:',
    'update.protected_db' => 'Anwendungsdatenbank',
    'update.protected_key' => 'Master-Verschlüsselungsschlüssel',
    'update.protected_wallets' => 'Oracle Cloud Wallets',
    'maintenance.title' => 'Wartung läuft',
    'maintenance.message' => 'Die Anwendung ist vorübergehend wegen Wartungsarbeiten nicht verfügbar. Bitte versuchen Sie es in Kürze erneut.',
    'about.title' => 'Über',
    'about.version' => 'Version',
    'about.libraries' => 'Drittanbieter-Bibliotheken',
    'about.lib_name' => 'Bibliothek',
    'about.lib_version' => 'Version',
    'about.lib_license' => 'Lizenz',
    'about.license_title' => 'Lizenz',
    'about.license_rights' => 'Alle Rechte vorbehalten.',
    'about.license_grant' => 'Diese Software wird unter einer proprietären, nicht-exklusiven und nicht übertragbaren Lizenz bereitgestellt. Der Autor gewährt dem Erwerber das Recht, die Software in ihrer ursprünglichen Form zu nutzen, ohne Eigentumsübertragung.',
    'about.license_conditions' => 'Vorbehaltlich der folgenden Bedingungen:',
    'about.license_cond_attribution' => '<strong>Namensnennung</strong> — Die Herkunft der Software und der Name des Autors müssen im Quellcode und in der technischen Dokumentation erhalten bleiben. Die den Endnutzern angezeigte Oberfläche darf hingegen angepasst werden (siehe „White-Label").',
    'about.license_cond_no_derivs' => '<strong>Keine Bearbeitungen</strong> — Der Code der Software darf ohne vorherige schriftliche Genehmigung des Autors nicht verändert, umgestaltet oder als Grundlage für abgeleitete Werke verwendet werden, mit Ausnahme der von der Anwendung vorgesehenen Anpassung der visuellen Identität (Titel, Logo, Favicon, Theme).',
    'about.license_cond_commercial' => '<strong>Keine Abtretung — White-Label erlaubt</strong> — Die Software darf als Produkt weder abgetreten, weiterverkauft noch unterlizenziert werden. Der Erwerber darf sie jedoch betreiben und seinen eigenen Kunden unter eigener Marke (White-Label) anbieten, ohne Übertragung des Lizenzeigentums.',
    'about.license_disclaimer' => 'DIE SOFTWARE WIRD „WIE BESEHEN" BEREITGESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL HAFTET DER AUTOR FÜR ANSPRÜCHE, SCHÄDEN ODER SONSTIGE HAFTUNG.',
    'about.license_compat' => 'Proprietäre, nicht übertragbare Lizenz: Die Software darf als White-Label betrieben, aber nicht abgetreten oder weiterverkauft werden.',
    'backup.include_key' => 'Verschlüsselungsschlüssel (master.key) einschließen — vollständige Wiederherstellung',
    'backup.include_key_warn' => '⚠ Ohne Schlüssel kann das Backup keine Geheimnisse entschlüsseln: master.key separat sichern. Mit Schlüssel die Datei schützen (enthält ALLE Geheimnisse).',
];
