diff --git a/internal/locales/de.json b/internal/locales/de.json index 2895811..4f30e0f 100644 --- a/internal/locales/de.json +++ b/internal/locales/de.json @@ -1,414 +1,415 @@ { - "page.title": "Fail2ban UI Dashboard", - "nav.dashboard": "Dashboard", - "nav.filter_debug": "Filter-Debug", - "nav.settings": "Einstellungen", - "restart_banner.message": "Fail2ban Konfiguration geändert. Um Änderungen zu übernehmen bitte ", - "restart_banner.button": "Service neu starten", - "restart_banner.restart_success": "Fail2ban-Dienst wurde neu gestartet und der Healthcheck war erfolgreich", - "restart_banner.reload_success": "Fail2ban-Konfiguration wurde erfolgreich neu geladen (kein Systemd neustart)", - "dashboard.title": "Dashboard", - "dashboard.overview": "Aktive Jails und Blocks Übersicht", - "dashboard.overview_hint": "Verwende die Suche, um gesperrte IPs zu filtern, und klicke auf ein Jail, um dessen Konfiguration zu bearbeiten.", - "dashboard.search_label": "Suche gesperrte IPs", - "dashboard.search_placeholder": "Geben Sie eine IP-Adresse zum Suchen ein", - "dashboard.external_ip": "Deine ext. IP:", - "dashboard.manage_servers": "Server verwalten", - "dashboard.no_servers_title": "Keine Fail2ban-Server konfiguriert", - "dashboard.no_servers_body": "Füge einen Server hinzu, um Fail2ban-Instanzen zu überwachen und zu steuern.", - "dashboard.loading_summary": "Zusammenfassung wird geladen…", - "dashboard.no_enabled_servers_title": "Keine aktiven Verbindungen", - "dashboard.no_enabled_servers_body": "Aktiviere den lokalen Connector oder registriere einen entfernten Fail2ban-Server, um Live-Daten zu sehen.", - "dashboard.jail_local_warning_title": "Das jail.local auf diesem Server wird nicht von Fail2ban-UI verwaltet", - "dashboard.jail_local_warning_body": "Die Datei /etc/fail2ban/jail.local auf dem ausgewählten Server existiert, wird aber nicht von Fail2ban-UI verwaltet. Die Callback-Aktion (ui-custom-action) fehlt, weshalb Ban-/Unban-Ereignisse nicht aufgezeichnet und keine E-Mail-Benachrichtigungen gesendet werden. Um dies zu beheben, verschiebe andernfalls selbst erstellte oder vorhandene Jail-Definitionen aus jail.local in eine eigene Datei unter /etc/fail2ban/jail.d/ (verwende jeweils jailname.conf für eine Standard-Konfiguration oder jailname.local um eine bestehende .conf zu überschreiben). Lösche danach jail.local, damit Fail2ban-UI die verwaltete Version erstellen kann (Zum erstellen, einmal in den Einstellungen auf speichern klichen). Stelle zudem sicher, dass Fail2ban-UI Schreibrechte auf /etc/fail2ban/ hat -> siehe Dokumentation.", - "dashboard.errors.summary_failed": "Zusammenfassung konnte nicht vom Server geladen werden.", - "dashboard.cards.active_jails": "Aktive Jails", - "dashboard.cards.total_banned": "Gesamt gesperrte IPs", - "dashboard.cards.new_last_hour": "Neue in der letzten Stunde", - "dashboard.cards.total_logged": "Gespeicherte Sperr-Ereignisse", - "dashboard.cards.recurring_week": "Wiederkehrende IPs (7 Tage)", - "dashboard.cards.recurring_hint": "Behalte wiederholte Angreifer der letzten 7 Tage im Auge.", - "dashboard.table.jail_name": "Jail-Name", - "dashboard.table.total_banned": "Insgesamt gesperrt", - "dashboard.table.new_last_hour": "Neu in letzter Stunde", - "dashboard.table.banned_ips": "Gesperrte IPs (Entsperren)", - "dashboard.no_jails": "Keine Jails gefunden.", - "dashboard.overview_detail": "Die Listen üssen nicht ausgeklappt werden, um eine IP zu suchen.", - "dashboard.table.time": "Zeit", - "dashboard.table.jail": "Jail", - "dashboard.table.ip": "IP", - "dashboard.table.log_line": "Logzeile", - "dashboard.no_banned_ips": "Keine gesperrten IPs", - "dashboard.unban": "Entsperren", - "dashboard.manual_block.title": "Manuelle IP-Sperre", - "dashboard.manual_block.subtitle": "Manuell eine IP-Adresse in einem bestimmten Jail sperren.", - "dashboard.manual_block.expand_hint": "Klicken Sie, um zu erweitern und eine IP-Adresse zu sperren", - "dashboard.manual_block.jail_label": "Jail auswählen", - "dashboard.manual_block.jail_placeholder": "Jail auswählen...", - "dashboard.manual_block.ip_label": "IP-Adresse", - "dashboard.manual_block.ip_placeholder": "z.B. 88.76.21.123", - "dashboard.manual_block.button": "IP sperren", - "dashboard.manual_block.confirm": "IP {ip} im Jail {jail} sperren?", - "dashboard.manual_block.success": "IP erfolgreich gesperrt", - "dashboard.manual_block.error": "Fehler beim Sperren der IP", - "dashboard.manual_block.jail_required": "Bitte wählen Sie ein Jail aus", - "dashboard.manual_block.ip_required": "Bitte geben Sie eine IP-Adresse ein", - "dashboard.manual_block.invalid_ip": "Bitte geben Sie eine gültige IP-Adresse ein", - "dashboard.banned.show_more": "Mehr anzeigen", - "dashboard.banned.show_less": "Weniger anzeigen", - "logs.overview.title": "Interne Log-Übersicht", - "logs.overview.subtitle": "Von Fail2ban-UI gespeicherte Ereignisse über alle Connectoren.", - "logs.overview.refresh": "Daten aktualisieren", - "logs.overview.total_events": "Gespeicherte Ereignisse gesamt", - "logs.overview.per_server": "Ereignisse pro Server", - "logs.overview.recent_events_title": "Letzte gespeicherte Ereignisse", - "logs.overview.recent_empty": "Keine gespeicherten Ereignisse gefunden.", - "logs.overview.empty": "Es wurden noch keine Sperr-Ereignisse protokolliert.", - "logs.overview.open_insights": "Insights öffnen", - "logs.overview.total_today": "Heute", - "logs.overview.total_week": "Letzte 7 Tage", - "logs.overview.per_server_empty": "Noch keine Serverdaten verfügbar.", - "logs.overview.recent_filtered_empty": "Keine gespeicherten Ereignisse passen zu den Filtern.", - "logs.overview.recent_count_label": "Angezeigte Ereignisse", - "logs.overview.load_more": "Mehr laden", - "logs.overview.country_unknown": "Unbekannt", - "logs.overview.last_seen": "Zuletzt gesehen", - "logs.table.server": "Server", - "logs.table.count": "Anzahl", - "logs.table.jail": "Jail", - "logs.table.ip": "IP", - "logs.table.time": "Zeit", - "logs.table.country": "Land", - "logs.table.actions": "Aktionen", - "logs.actions.whois": "Whois", - "logs.actions.logs": "Logs", - "logs.search.label": "Ereignisse suchen", - "logs.search.placeholder": "Nach IP, Jail oder Server suchen", - "logs.search.country_label": "Land", - "logs.search.country_all": "Alle Länder", - "logs.search.country_unknown": "Unbekannt", - "logs.badge.recurring": "Wiederkehrend", - "logs.modal.whois_title": "Whois-Informationen", - "logs.modal.logs_title": "Logs", - "logs.modal.jail": "Jail", - "logs.modal.insights_title": "Ban-Insights", - "logs.modal.insights_description": "Verteilung nach Ländern und wiederholte Angreifer.", - "logs.modal.insights_countries": "Sperren nach Land", - "logs.modal.insights_countries_empty": "Für diesen Zeitraum wurden keine Sperren erfasst.", - "logs.modal.insights_countries_hint": "Top-Herkünfte im ausgewählten Zeitraum.", - "logs.modal.insights_recurring_hint": "IP-Adressen, die Fail2ban wiederholt auslösen.", - "logs.modal.total_overall_note": "Lebenslang erfasste Sperren", - "logs.modal.total_today_note": "Letzte 24 Stunden", - "logs.modal.total_week_note": "Aktivität der letzten Woche", - "logs.modal.insights_recurring": "Wiederkehrende IPs", - "logs.modal.insights_recurring_empty": "Keine wiederkehrenden IPs erkannt.", - "filter_debug.title": "Filter-Debug", - "filter_debug.select_filter": "Wählen Sie einen Filter", - "filter_debug.filter_content": "Filter-Inhalt", - "filter_debug.filter_content_hint": "Bearbeiten Sie den Filter-Regex zum Testen. Änderungen sind temporär und werden nicht gespeichert.", - "filter_debug.filter_content_hint_readonly": "Filter-Inhalt wird schreibgeschützt angezeigt. Klicken Sie auf 'Bearbeiten', um diesen für Tests zu ändern. Änderungen sind temporär und werden nicht gespeichert.", - "filter_debug.edit_filter": "Bearbeiten", - "filter_debug.cancel_edit": "Abbrechen", - "filter_debug.log_lines": "Logzeilen", - "filter_debug.log_lines_placeholder": "Geben Sie die Logzeilen hier ein...", - "filter_debug.test_filter": "Filter testen", - "filter_debug.test_results_title": "Testergebnisse", - "filter_debug.no_matches": "Keine Übereinstimmungen gefunden.", - "settings.title": "Einstellungen", - "settings.general": "Allgemeine Einstellungen", - "settings.language": "Sprache", - "settings.server_port": "Server-Port", - "settings.server_port_placeholder": "z.B. 8080", - "settings.port_env_set": "Port wird über die PORT-Umgebungsvariable gesetzt:", - "settings.port_env_hint": "Um den Port über die Weboberfläche zu ändern, entfernen Sie die PORT-Umgebungsvariable und starten Sie den Container neu.", - "settings.port_restart_hint": "⚠️ Port-Änderungen erfordern einen Neustart des Containers, um wirksam zu werden.", - "settings.enable_debug": "Debug-Protokoll aktivieren", - "settings.enable_console": "Konsolenausgabe aktivieren", - "settings.console.title": "Konsolenausgabe", - "settings.console.clear": "Löschen", - "settings.console.save_hint": "Bitte speichern Sie zuerst Ihre Einstellungen, bevor hier Logs angezeigt werden.", - "settings.alert": "Alarm-Einstellungen", - "settings.callback_url": "Fail2ban Callback-URL", - "settings.callback_url_placeholder": "http://127.0.0.1:8080", - "settings.callback_url_hint": "Diese URL wird von allen Fail2Ban-Instanzen verwendet, um die Ban-Payloads an Fail2Ban UI zu senden. Für lokale Installationen verwenden Sie denselben Port wie Fail2Ban UI (z.B. http://127.0.0.1:8080). Für Reverse-Proxy-Setups verwenden Sie falls möglich den TLS-verschlüsselten Endpunkt (z.B. https://fail2ban.example.com).", - "settings.callback_secret": "Fail2ban Callback-URL Secret", - "settings.callback_secret_placeholder": "Automatisch generiertes 42-Zeichen-Secret", - "settings.callback_secret.description": "Dieses Secret dient der Authentifizierung von Ban-API-Anfragen. Es wird automatisch in die Fail2ban-Action-Konfiguration eingefügt.", - "settings.destination_email": "Ziel-E-Mail (Alarmempfänger)", - "settings.destination_email_placeholder": "alerts@swissmakers.ch", - "settings.alert_countries": "Alarm-Länder", - "settings.alert_countries_description": "Wählen Sie die Länder aus, für die E-Mail-Alarme ausgelöst werden sollen, wenn eine Sperrung erfolgt.", - "settings.email_alerts": "E-Mail-Benachrichtigungseinstellungen", - "settings.email_alerts_for_bans": "E-Mail-Benachrichtigungen für Sperrungen aktivieren", - "settings.email_alerts_for_unbans": "E-Mail-Benachrichtigungen für Entsperrungen aktivieren", - "settings.smtp": "SMTP-Konfiguration", - "settings.smtp_host": "SMTP-Host", - "settings.smtp_host_placeholder": "z.B. smtp.gmail.com", - "settings.smtp_port": "SMTP-Port", - "settings.smtp_port_placeholder": "587", - "settings.smtp_port_hint": "Häufige Ports: 25 (unverschlüsselt), 587 (STARTTLS), 465 (SMTPS), 2525 (alternatives STARTTLS)", - "settings.smtp_auth_method": "Authentifizierungsmethode", - "settings.smtp_auth_method_auto": "Auto (LOGIN bevorzugt)", - "settings.smtp_auth_method_login": "LOGIN", - "settings.smtp_auth_method_plain": "PLAIN", - "settings.smtp_auth_method_cram_md5": "CRAM-MD5", - "settings.smtp_auth_method_hint": "LOGIN wird für Office365/Gmail empfohlen. PLAIN ist die Standard-SMTP-Authentifizierung. CRAM-MD5 ist challenge-response-basiert.", - "settings.smtp_insecure_skip_verify": "TLS-Zertifikatsüberprüfung überspringen", - "settings.smtp_insecure_skip_verify_warning": "⚠️ Nicht für Produktion empfohlen", - "settings.smtp_username": "SMTP-Benutzername", - "settings.smtp_username_placeholder": "z.B. user@example.com", - "settings.smtp_password": "SMTP-Passwort", - "settings.smtp_password_placeholder": "Geben Sie das SMTP-Passwort ein", - "settings.smtp_sender": "Absender-E-Mail", - "settings.smtp_sender_placeholder": "noreply@swissmakers.ch", - "settings.smtp_tls": "TLS verwenden (empfohlen)", - "settings.send_test_email": "Test-E-Mail senden", - "settings.send_test_email_hint": "⚠️ Bitte speichern Sie zuerst Ihre SMTP-Einstellungen, bevor Sie eine Test-E-Mail senden.", - "settings.fail2ban": "Globale Standard-Fail2Ban-Konfigurationen", - "settings.fail2ban.description": "Diese Einstellungen werden auf allen aktivierten Fail2Ban-Servern angewendet und in deren jail.local [DEFAULT]-Abschnitt gespeichert.", - "settings.enable_bantime_increment": "Bantime-Inkrement aktivieren", - "settings.enable_bantime_increment.description": "Wenn auf true gesetzt, wird die Bantime nach der Formel: bantime = findtime * (Anzahl der Fehler / maxretry) * (1 + bantime.rndtime) berechnet.", - "settings.default_jail_enable": "Jails standardmässig aktivieren", - "settings.default_jail_enable.description": "Wenn aktiviert, werden alle Jails standardmässig aktiviert. Wenn deaktiviert, müssen Jails explizit aktiviert werden.", - "settings.default_bantime": "Standard-Bantime", - "settings.default_bantime.description": "Die Anzahl der Sekunden, für die ein Host gesperrt wird. Zeitformat: 1m = 1 Minute, 1h = 1 Stunde, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monat, 1y = 1 Jahr.", - "settings.default_bantime_placeholder": "z.B. 48h", - "settings.bantime_rndtime": "Bantime Rndtime", - "settings.bantime_rndtime.description": "Optional. Maximale Zufallssekunden in der Bantime-Inkrement-Formel (z.B. 2048). Leer lassen für Fail2ban-Standard.", - "settings.bantime_rndtime_placeholder": "z.B. 2048", - "settings.default_chain": "Standard-Chain", - "settings.default_chain.description": "iptables/nftables-Chain für Bans (z.B. INPUT für Host, DOCKER-USER für Docker-Container).", - "settings.chain_help_title": "Standard-Chain", - "settings.chain_docker_user": "DOCKER-USER", - "settings.chain_help_docker_user": "Für Anwendungen in Docker. Bans gelten für alle Container auf dem Host.", - "settings.chain_input": "INPUT", - "settings.chain_help_input": "Für Anwendungen auf dem Host. Bans gelten nur für das Host-Netzwerk, nicht für Docker-Netze.", - "settings.chain_forward": "FORWARD", - "settings.chain_help_forward": "Nur bei älteren Docker-Setups, in denen DOCKER-USER nicht verfügbar ist.", - "settings.banaction": "Banaction", - "settings.banaction.description": "Standard-Sperraktion (z.B. nftables-multiport, nftables-allports, firewallcmd-rich-rules, etc). Wird verwendet, um action_* Variablen zu definieren.", - "settings.banaction_allports": "Banaction Allports", - "settings.banaction_allports.description": "Sperraktion für alle Ports (z.B. nftables-allports, firewallcmd-allports, etc). Wird verwendet, wenn ein Jail alle Ports statt spezifischer Ports sperren muss.", - "settings.default_findtime": "Standard-Findtime", - "settings.default_findtime.description": "Ein Host wird gesperrt, wenn er in den letzten 'findtime' Sekunden 'maxretry' Fehler generiert hat. Zeitformat: 1m = 1 Minute, 1h = 1 Stunde, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monat, 1y = 1 Jahr.", - "settings.default_findtime_placeholder": "z.B. 30m", - "settings.default_max_retry": "Standard-Maximalversuche", - "settings.default_max_retry.description": "Anzahl der Fehler, bevor ein Host gesperrt wird.", - "settings.default_max_retry_placeholder": "Geben Sie die maximale Anzahl der Versuche ein", - "settings.geoip_provider": "GeoIP-Anbieter", - "settings.geoip_provider.description": "Wählen Sie den GeoIP-Lookup-Anbieter. MaxMind erfordert eine lokale Datenbankdatei, während Built-in eine kostenlose Online-API verwendet.", - "settings.geoip_provider.maxmind": "MaxMind (Lokale Datenbank)", - "settings.geoip_provider.builtin": "Built-in (ip-api.com)", - "settings.geoip_database_path": "GeoIP-Datenbankpfad", - "settings.geoip_database_path.description": "Pfad zur MaxMind GeoLite2-Country-Datenbankdatei.", - "settings.max_log_lines": "Maximale Log-Zeilen", - "settings.max_log_lines.description": "Maximale Anzahl von Log-Zeilen, die in Ban-Benachrichtigungen enthalten sein sollen. Die relevantesten Zeilen werden automatisch ausgewählt.", - "settings.ignore_ips": "IP-Adressen ignorieren", - "settings.ignore_ips.description": "Durch Leerzeichen getrennte Liste von IP-Adressen, CIDR-Masken oder DNS-Hosts. Fail2ban wird keinen Host sperren, der mit einer Adresse in dieser Liste übereinstimmt.", - "settings.ignore_ips_placeholder": "IP-Adressen, getrennt durch Leerzeichen", - "settings.advanced.title": "Erweiterte Aktionen für Wiederholungstäter", - "settings.advanced.description": "Synchronisiere wiederholte Angreifer automatisch mit einer externen Firewall oder Blockliste.", - "settings.advanced.refresh_log": "Protokoll aktualisieren", - "settings.advanced.test_button": "Manuell sperren / Test", - "settings.advanced.enable": "Automatische permanente Sperre aktivieren", - "settings.advanced.threshold": "Schwelle vor permanenter Sperre", - "settings.advanced.threshold_hint": "Sobald eine IP diesen Wert erreicht, wird sie an die Integration übergeben.", - "settings.advanced.integration": "Integration", - "settings.advanced.integration_none": "Integration auswählen", - "settings.advanced.integration_hint": "Wähle die Firewall oder Appliance, in der permanente Sperren erstellt werden sollen.", - "settings.advanced.mikrotik.note": "SSH-Zugang zum Mikrotik-Router und die Address-Liste angeben, in die IPs eingetragen werden.", - "settings.advanced.mikrotik.host": "Host", - "settings.advanced.mikrotik.port": "Port", - "settings.advanced.mikrotik.username": "SSH-Benutzername", - "settings.advanced.mikrotik.password": "SSH-Passwort", - "settings.advanced.mikrotik.key": "SSH-Key-Pfad (optional)", - "settings.advanced.mikrotik.list": "Address-Listenname", - "settings.advanced.pfsense.note": "Benötigt das pfSense REST API-Paket. Gib den API-Schlüssel und den Alias-Namen ein.", - "settings.advanced.pfsense.install_link": "REST API-Paket installieren", - "settings.advanced.pfsense.api_key_setup": "API-Schlüssel einrichten", - "settings.advanced.pfsense.base_url": "Basis-URL", - "settings.advanced.pfsense.token": "API-Schlüssel", - "settings.advanced.pfsense.token_hint": "Erstellen in System > REST API > Keys im pfSense webConfigurator", - "settings.advanced.pfsense.alias": "Alias-Name", - "settings.advanced.pfsense.skip_tls": "TLS-Validierung überspringen (Self-Signed)", - "settings.advanced.opnsense.note": "Gib die OPNsense API-Anmeldedaten und den Alias-Namen ein.", - "settings.advanced.opnsense.api_docs": "API-Dokumentation", - "settings.advanced.opnsense.api_key_setup": "API-Schlüssel einrichten", - "settings.advanced.opnsense.base_url": "Basis-URL", - "settings.advanced.opnsense.key": "API-Schlüssel", - "settings.advanced.opnsense.key_hint": "Erstellen in System > Zugriff > Benutzer > API-Schlüssel", - "settings.advanced.opnsense.secret": "API-Geheimnis", - "settings.advanced.opnsense.secret_hint": "Zusammen mit dem API-Schlüssel erstellen", - "settings.advanced.opnsense.alias": "Alias-Name", - "settings.advanced.opnsense.skip_tls": "TLS-Validierung überspringen (Self-Signed)", - "settings.advanced.log_title": "Log der permanenten Sperren", - "settings.advanced.log_empty": "Noch keine permanenten Sperren vorhanden.", - "settings.advanced.log_ip": "IP", - "settings.advanced.log_integration": "Integration", - "settings.advanced.log_status": "Status", - "settings.advanced.log_message": "Nachricht", - "settings.advanced.log_server": "Server", - "settings.advanced.log_updated": "Aktualisiert", - "settings.advanced.log_actions": "Aktionen", - "settings.advanced.unblock_btn": "Entfernen", - "settings.advanced.test_title": "Manuell sperren / Test", - "settings.advanced.test_ip": "IP-Adresse", - "settings.advanced.test_server": "Optionaler Server", - "settings.advanced.test_server_none": "Globale Integration verwenden", - "settings.advanced.test_block": "IP sperren", - "settings.advanced.test_unblock": "IP entfernen", - "settings.save": "Speichern", - "modal.filter_config": "Filter / Jail-Konfiguration:", - "modal.filter_config_edit": "Filter / Jail bearbeiten", - "modal.filter_config_label": "Filter-Konfiguration", - "modal.filter_config_hint": "Wenn leer gelassen, wird eine leere Filterdatei erstellt.", - "modal.filter_name": "Filter-Name", - "modal.filter_name_hint": "Nur alphanumerische Zeichen, Bindestriche und Unterstriche sind erlaubt.", - "modal.jail_config": "Jail-Konfiguration", - "modal.jail_config_hint": "Die Jail-Konfiguration wird automatisch ausgefüllt, wenn Sie einen Filter auswählen.", - "modal.jail_config_label": "Jail-Konfiguration", - "modal.jail_filter": "Filter (optional)", - "modal.jail_filter_hint": "Die Auswahl eines Filters füllt die Jail-Konfiguration automatisch aus.", - "modal.jail_name": "Jail-Name", - "modal.jail_name_hint": "Nur alphanumerische Zeichen, Bindestriche und Unterstriche sind erlaubt.", - "modal.test_logpath": "Logpfad testen", - "modal.local_server_logpath_note": "ℹ️ Hinweis:", - "modal.local_server_logpath_text_prefix": "Für einen lokalen Fail2ban-Server (z.B. installiert auf dem Host-System oder in einem Container auf demselben Host), müssen Logdateien auch im fail2ban-ui Container gemountet werden (z.B.", - "modal.local_server_logpath_text_suffix": "), damit fail2ban-ui Logpfad-Variablen oder -Pfade überprüfen kann, wenn Jails aktualisiert werden.", - "modal.create": "Erstellen", - "modal.create_filter": "Neuen Filter erstellen", - "modal.create_filter_title": "Neuen Filter erstellen", - "modal.create_jail": "Neues Jail erstellen", - "modal.create_jail_title": "Neues Jail erstellen", - "modal.cancel": "Abbrechen", - "modal.save": "Speichern", - "modal.close": "Schließen", - "loading": "Lade...", - "dashboard.manage_jails": "Jails verwalten", - "modal.manage_jails_title": "Jails verwalten", - "servers.selector.label": "Aktiver Server", - "servers.selector.empty": "Keine Server konfiguriert", - "servers.selector.none": "Kein Server konfiguriert. Bitte füge einen Fail2ban-Server hinzu.", - "servers.modal.title": "Fail2ban-Server verwalten", - "servers.modal.description": "Registriere entfernte Fail2ban-Instanzen und wähle, wie das UI sich verbindet.", - "servers.modal.list_title": "Registrierte Server", - "servers.modal.list_empty": "Keine Server konfiguriert. Füge rechts deinen ersten Fail2ban-Server hinzu.", - "servers.modal.form_title": "Server hinzufügen oder bearbeiten", - "servers.form.name": "Anzeigename", - "servers.form.name_placeholder": "Mein Fail2ban-Server", - "servers.form.type": "Verbindungstyp", - "servers.type.local": "Lokal (gleicher Host)", - "servers.type.ssh": "SSH", - "servers.type.agent": "API-Agent", - "servers.form.host": "Hostname / IP", - "servers.form.host_placeholder": "fail2ban.beispiel.de", - "servers.form.port": "Port", - "servers.form.port_placeholder": "22", - "servers.form.socket_path": "Fail2ban-Socket-Pfad", - "servers.form.socket_path_placeholder": "/var/run/fail2ban/fail2ban.sock", - "servers.form.log_path": "Fail2ban-Logpfad", - "servers.form.log_path_placeholder": "/var/log/fail2ban.log", - "servers.form.hostname": "Server-Hostname", - "servers.form.hostname_placeholder": "optional", - "servers.form.ssh_user": "SSH-Benutzer", - "servers.form.ssh_user_placeholder": "sa_fail2ban", - "servers.form.ssh_key": "Pfad zum SSH-Schlüssel", - "servers.form.ssh_key_placeholder": "/config/.ssh/id_rsa", - "servers.form.ssh_key_help": "Platzieren Sie Ihren SSH-Private-Key im Verzeichnis /config/.ssh/ (gemountetes Config-Volume). Die Schlüsseldatei muss die Berechtigungen 600 haben (chmod 600). Beispiel: /config/.ssh/id_rsa", - "servers.form.agent_url": "Agent-URL", - "servers.form.agent_url_placeholder": "https://host:9443", - "servers.form.agent_secret": "Agent-Secret", - "servers.form.agent_secret_placeholder": "gemeinsames Geheimnis", - "servers.form.tags": "Tags", - "servers.form.tags_placeholder": "kommagetrennte Tags", - "servers.form.set_default": "Als Standardserver setzen", - "servers.form.enabled": "Connector aktivieren", - "servers.form.submit": "Server speichern", - "servers.form.reset": "Zurücksetzen", - "servers.form.new_server": "Neuer Server", - "servers.form.success": "Server erfolgreich gespeichert.", - "servers.badge.default": "Standard", - "servers.badge.enabled": "Aktiv", - "servers.badge.disabled": "Deaktiviert", - "servers.badge.restart_needed": "Neustart erforderlich", - "servers.actions.edit": "Bearbeiten", - "servers.actions.set_default": "Als Standard setzen", - "servers.actions.enable": "Aktivieren", - "servers.actions.disable": "Deaktivieren", - "servers.actions.test": "Verbindung testen", - "servers.actions.test_success": "Verbindung erfolgreich", - "servers.actions.test_failure": "Verbindung fehlgeschlagen", - "servers.jail_local_warning": "Warnung: jail.local wird nicht von Fail2ban-UI verwaltet. Verschiebe jeden Jail in eine eigene Datei unter jail.d/ und lösche jail.local, damit Fail2ban-UI sie neu erstellen kann (einmal auf der Einstellungen-Seite speichern, um die Datei zu schreiben). Siehe Dokumentation für Berechtigungen.", - "servers.actions.restart": "Fail2ban neu starten", - "servers.actions.reload": "Fail2ban neu laden", - "servers.actions.reload_tooltip": "Für lokale Connectors ist nur ein Neuladen der Konfiguration über die Socket-Verbindung möglich. Der Container kann den Fail2ban-Dienst nicht mit systemctl neu starten. Für einen vollständigen Neustart führen Sie 'systemctl restart fail2ban' direkt auf dem Host-System aus.", - "servers.actions.delete": "Löschen", - "servers.actions.delete_confirm": "Diesen Servereintrag löschen?", - "servers.form.select_key": "Privaten Schlüssel auswählen", - "servers.form.select_key_placeholder": "Manuelle Eingabe", - "servers.form.no_keys": "Keine SSH-Schlüssel gefunden; Pfad manuell eingeben", - "filter_debug.not_available": "Filter-Debug ist nur verfügbar, wenn mindestens ein registrierter Fail2ban-Server aktiviert ist.", - "filter_debug.local_missing": "Das lokale Fail2ban-Filterverzeichnis wurde auf diesem Host nicht gefunden.", - "email.ban.title": "Achtung: Fail2Ban hat eine neue IP-Adresse blockiert", - "email.ban.intro": "Fail2Ban-UI hat eine fehlerhafte Anfrage oder wiederholte Authentifizierungsfehler erkannt und die Quell-IP automatisch blockiert. Überprüfen Sie die Metadaten und Log-Auszüge unten.", - "email.ban.subject.banned": "Gesperrt", - "email.ban.subject.from": "von", - "email.ban.details.banned_ip": "Gesperrte IP", - "email.ban.details.jail": "Jail", - "email.ban.details.hostname": "Hostname", - "email.ban.details.failed_attempts": "Fehlgeschlagene Versuche", - "email.ban.details.country": "Land", - "email.ban.details.timestamp": "Zeitstempel", - "email.ban.whois_title": "WHOIS-Auszug", - "email.ban.logs_title": "Relevante Logs", - "email.test.title": "E-Mail-Zustellungstest", - "email.test.intro": "Diese Nachricht bestätigt, dass Ihre SMTP-Konfiguration korrekt funktioniert und HTML-formatierte E-Mails zustellen kann.", - "email.test.subject": "Test-E-Mail von Fail2Ban UI", - "email.test.details.recipient": "Empfänger", - "email.test.details.smtp_host": "SMTP-Host", - "email.test.details.triggered_at": "Ausgelöst um", - "email.test.whois_no_data": "Für Test-E-Mails wird keine WHOIS-Abfrage durchgeführt.", - "email.test.sample_logs": "2025-01-01T12:00:00Z Beispiel-Log-Eintrag von Fail2ban-UI.", - "email.whois.no_data": "WHOIS-Daten wurden für dieses Ereignis nicht erfasst.", - "email.logs.no_data": "Für diesen Block wurden keine Log-Einträge erfasst.", - "email.footer.text": "Diese Nachricht wurde automatisch von Fail2Ban-UI generiert", - "email.unban.title": "IP-Adresse entsperrt", - "email.unban.intro": "IP-Adresse aus Fail2Ban-Jail entsperrt.", - "email.unban.subject.unbanned": "Entsperrt", - "email.unban.subject.from": "von", - "email.unban.details.unbanned_ip": "Entsperrte IP", - "email.unban.details.jail": "Jail", - "email.unban.details.hostname": "Hostname", - "email.unban.details.country": "Land", - "email.unban.details.timestamp": "Zeitstempel", - "lotr.email.title": "Ein dunkler Diener wurde verbannt", - "lotr.email.intro": "Die Wächter von Mittelerde haben eine Bedrohung erkannt und aus dem Reich verbannt.", - "lotr.email.you_shall_not_pass": "DU KANNST NICHT VORBEI", - "lotr.email.footer": "Mögen die Server geschützt sein. Ein Bann, um sie alle zu beherrschen.", - "lotr.email.details.dark_servant_location": "Die Position des dunklen Dieners", - "lotr.email.details.realm_protection": "Das Reich des Schutzes", - "lotr.email.details.origins": "Herkunft aus den", - "lotr.email.details.banished_at": "Verbannt zur", - "lotr.email.unban.title": "Der festgehaltene wird wider freigelassen", - "lotr.email.unban.intro": "Die Wächter von Mittelerde haben den Zugang wiederhergestellt.", - "lotr.email.unban.details.restored_ip": "Wiederhergestellte IP", - "lotr.banished": "Aus dem Reich verbannt", - "lotr.realms_protected": "Geschützte Reiche", - "lotr.threats_banished": "Verbannte Bedrohungen", - "toast.ban.title": "Neue Blockierung aufgetreten", - "toast.ban.action": "gesperrt in", - "toast.unban.title": "IP entsperrt", - "toast.unban.action": "entsperrt von", - "auth.login_title": "Bei Fail2ban UI anmelden", - "auth.login_description": "Bitte authentifizieren Sie sich, um auf die Verwaltungsoberfläche zuzugreifen", - "auth.login_button": "Mit OIDC anmelden", - "auth.logging_in": "Weiterleitung zur Anmeldung...", - "auth.logout": "Abmelden", - "auth.user_info": "Benutzerinformationen", - "auth.session_expired": "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.", - "auth.login_required": "Authentifizierung erforderlich", - "footer.version": "Fail2ban-UI v{version}", - "footer.latest": "Aktuell", - "footer.update_available": "Update verfügbar: v{version}" - } - \ No newline at end of file + "page.title": "Fail2ban UI Dashboard", + "nav.dashboard": "Dashboard", + "nav.filter_debug": "Filter-Debug", + "nav.settings": "Einstellungen", + "restart_banner.message": "Fail2ban Konfiguration geändert. Um Änderungen zu übernehmen bitte ", + "restart_banner.button": "Service neu starten", + "restart_banner.restart_success": "Fail2ban-Dienst wurde neu gestartet und der Healthcheck war erfolgreich", + "restart_banner.reload_success": "Fail2ban-Konfiguration wurde erfolgreich neu geladen (kein Systemd neustart)", + "dashboard.title": "Dashboard", + "dashboard.overview": "Aktive Jails und Blocks Übersicht", + "dashboard.overview_hint": "Verwende die Suche, um gesperrte IPs zu filtern, und klicke auf ein Jail, um dessen Konfiguration zu bearbeiten.", + "dashboard.search_label": "Suche gesperrte IPs", + "dashboard.search_placeholder": "Geben Sie eine IP-Adresse zum Suchen ein", + "dashboard.external_ip": "Deine ext. IP:", + "dashboard.manage_servers": "Server verwalten", + "dashboard.no_servers_title": "Keine Fail2ban-Server konfiguriert", + "dashboard.no_servers_body": "Füge einen Server hinzu, um Fail2ban-Instanzen zu überwachen und zu steuern.", + "dashboard.loading_summary": "Zusammenfassung wird geladen…", + "dashboard.no_enabled_servers_title": "Keine aktiven Verbindungen", + "dashboard.no_enabled_servers_body": "Aktiviere den lokalen Connector oder registriere einen entfernten Fail2ban-Server, um Live-Daten zu sehen.", + "dashboard.jail_local_warning_title": "Das jail.local auf diesem Server wird nicht von Fail2ban-UI verwaltet", + "dashboard.jail_local_warning_body": "Die Datei /etc/fail2ban/jail.local auf dem ausgewählten Server existiert, wird aber nicht von Fail2ban-UI verwaltet. Die Callback-Aktion (ui-custom-action) fehlt, weshalb Ban-/Unban-Ereignisse nicht aufgezeichnet und keine E-Mail-Benachrichtigungen gesendet werden. Um dies zu beheben, verschiebe andernfalls selbst erstellte oder vorhandene Jail-Definitionen aus jail.local in eine eigene Datei unter /etc/fail2ban/jail.d/ (verwende jeweils jailname.conf für eine Standard-Konfiguration oder jailname.local um eine bestehende .conf zu überschreiben). Lösche danach jail.local, damit Fail2ban-UI die verwaltete Version erstellen kann (Zum erstellen, einmal in den Einstellungen auf speichern klichen). Stelle zudem sicher, dass Fail2ban-UI Schreibrechte auf /etc/fail2ban/ hat -> siehe Dokumentation.", + "dashboard.errors.summary_failed": "Zusammenfassung konnte nicht vom Server geladen werden.", + "dashboard.cards.active_jails": "Aktive Jails", + "dashboard.cards.total_banned": "Gesamt gesperrte IPs", + "dashboard.cards.new_last_hour": "Neue in der letzten Stunde", + "dashboard.cards.total_logged": "Gespeicherte Sperr-Ereignisse", + "dashboard.cards.recurring_week": "Wiederkehrende IPs (7 Tage)", + "dashboard.cards.recurring_hint": "Behalte wiederholte Angreifer der letzten 7 Tage im Auge.", + "dashboard.table.jail_name": "Jail-Name", + "dashboard.table.total_banned": "Insgesamt gesperrt", + "dashboard.table.new_last_hour": "Neu in letzter Stunde", + "dashboard.table.banned_ips": "Gesperrte IPs (Entsperren)", + "dashboard.no_jails": "Keine Jails gefunden.", + "dashboard.overview_detail": "Die Listen üssen nicht ausgeklappt werden, um eine IP zu suchen.", + "dashboard.table.time": "Zeit", + "dashboard.table.jail": "Jail", + "dashboard.table.ip": "IP", + "dashboard.table.log_line": "Logzeile", + "dashboard.no_banned_ips": "Keine gesperrten IPs", + "dashboard.unban": "Entsperren", + "dashboard.manual_block.title": "Manuelle IP-Sperre", + "dashboard.manual_block.subtitle": "Manuell eine IP-Adresse in einem bestimmten Jail sperren.", + "dashboard.manual_block.expand_hint": "Klicken Sie, um zu erweitern und eine IP-Adresse zu sperren", + "dashboard.manual_block.jail_label": "Jail auswählen", + "dashboard.manual_block.jail_placeholder": "Jail auswählen...", + "dashboard.manual_block.ip_label": "IP-Adresse", + "dashboard.manual_block.ip_placeholder": "z.B. 88.76.21.123", + "dashboard.manual_block.button": "IP sperren", + "dashboard.manual_block.confirm": "IP {ip} im Jail {jail} sperren?", + "dashboard.manual_block.success": "IP erfolgreich gesperrt", + "dashboard.manual_block.error": "Fehler beim Sperren der IP", + "dashboard.manual_block.jail_required": "Bitte wählen Sie ein Jail aus", + "dashboard.manual_block.ip_required": "Bitte geben Sie eine IP-Adresse ein", + "dashboard.manual_block.invalid_ip": "Bitte geben Sie eine gültige IP-Adresse ein", + "dashboard.banned.show_more": "Mehr anzeigen", + "dashboard.banned.show_less": "Weniger anzeigen", + "logs.overview.title": "Interne Log-Übersicht", + "logs.overview.subtitle": "Von Fail2ban-UI gespeicherte Ereignisse über alle Connectoren.", + "logs.overview.refresh": "Daten aktualisieren", + "logs.overview.total_events": "Gespeicherte Ereignisse gesamt", + "logs.overview.per_server": "Ereignisse pro Server", + "logs.overview.recent_events_title": "Letzte gespeicherte Ereignisse", + "logs.overview.recent_empty": "Keine gespeicherten Ereignisse gefunden.", + "logs.overview.empty": "Es wurden noch keine Sperr-Ereignisse protokolliert.", + "logs.overview.open_insights": "Insights öffnen", + "logs.overview.total_today": "Heute", + "logs.overview.total_week": "Letzte 7 Tage", + "logs.overview.per_server_empty": "Noch keine Serverdaten verfügbar.", + "logs.overview.recent_filtered_empty": "Keine gespeicherten Ereignisse passen zu den Filtern.", + "logs.overview.recent_count_label": "Angezeigte Ereignisse", + "logs.overview.load_more": "Mehr laden", + "logs.overview.country_unknown": "Unbekannt", + "logs.overview.last_seen": "Zuletzt gesehen", + "logs.table.server": "Server", + "logs.table.count": "Anzahl", + "logs.table.jail": "Jail", + "logs.table.ip": "IP", + "logs.table.time": "Zeit", + "logs.table.country": "Land", + "logs.table.actions": "Aktionen", + "logs.actions.whois": "Whois", + "logs.actions.logs": "Logs", + "logs.search.label": "Ereignisse suchen", + "logs.search.placeholder": "Nach IP, Jail oder Server suchen", + "logs.search.country_label": "Land", + "logs.search.country_all": "Alle Länder", + "logs.search.country_unknown": "Unbekannt", + "logs.badge.recurring": "Wiederkehrend", + "logs.modal.whois_title": "Whois-Informationen", + "logs.modal.logs_title": "Logs", + "logs.modal.jail": "Jail", + "logs.modal.insights_title": "Ban-Insights", + "logs.modal.insights_description": "Verteilung nach Ländern und wiederholte Angreifer.", + "logs.modal.insights_countries": "Sperren nach Land", + "logs.modal.insights_countries_empty": "Für diesen Zeitraum wurden keine Sperren erfasst.", + "logs.modal.insights_countries_hint": "Top-Herkünfte im ausgewählten Zeitraum.", + "logs.modal.insights_recurring_hint": "IP-Adressen, die Fail2ban wiederholt auslösen.", + "logs.modal.total_overall_note": "Lebenslang erfasste Sperren", + "logs.modal.total_today_note": "Letzte 24 Stunden", + "logs.modal.total_week_note": "Aktivität der letzten Woche", + "logs.modal.insights_recurring": "Wiederkehrende IPs", + "logs.modal.insights_recurring_empty": "Keine wiederkehrenden IPs erkannt.", + "filter_debug.title": "Filter-Debug", + "filter_debug.select_filter": "Wählen Sie einen Filter", + "filter_debug.filter_content": "Filter-Inhalt", + "filter_debug.filter_content_hint": "Bearbeiten Sie den Filter-Regex zum Testen. Änderungen sind temporär und werden nicht gespeichert.", + "filter_debug.filter_content_hint_readonly": "Filter-Inhalt wird schreibgeschützt angezeigt. Klicken Sie auf 'Bearbeiten', um diesen für Tests zu ändern. Änderungen sind temporär und werden nicht gespeichert.", + "filter_debug.edit_filter": "Bearbeiten", + "filter_debug.cancel_edit": "Abbrechen", + "filter_debug.log_lines": "Logzeilen", + "filter_debug.log_lines_placeholder": "Geben Sie die Logzeilen hier ein...", + "filter_debug.test_filter": "Filter testen", + "filter_debug.test_results_title": "Testergebnisse", + "filter_debug.no_matches": "Keine Übereinstimmungen gefunden.", + "settings.title": "Einstellungen", + "settings.general": "Allgemeine Einstellungen", + "settings.language": "Sprache", + "settings.server_port": "Server-Port", + "settings.server_port_placeholder": "z.B. 8080", + "settings.port_env_set": "Port wird über die PORT-Umgebungsvariable gesetzt:", + "settings.port_env_hint": "Um den Port über die Weboberfläche zu ändern, entfernen Sie die PORT-Umgebungsvariable und starten Sie den Container neu.", + "settings.port_restart_hint": "⚠️ Port-Änderungen erfordern einen Neustart des Containers, um wirksam zu werden.", + "settings.enable_debug": "Debug-Protokoll aktivieren", + "settings.enable_console": "Konsolenausgabe aktivieren", + "settings.console.title": "Konsolenausgabe", + "settings.console.clear": "Löschen", + "settings.console.save_hint": "Bitte speichern Sie zuerst Ihre Einstellungen, bevor hier Logs angezeigt werden.", + "settings.alert": "Alarm-Einstellungen", + "settings.callback_url": "Fail2ban Callback-URL", + "settings.callback_url_placeholder": "http://127.0.0.1:8080", + "settings.callback_url_hint": "Diese URL wird von allen Fail2Ban-Instanzen verwendet, um die Ban-Payloads an Fail2Ban UI zu senden. Für lokale Installationen verwenden Sie denselben Port wie Fail2Ban UI (z.B. http://127.0.0.1:8080). Für Reverse-Proxy-Setups verwenden Sie falls möglich den TLS-verschlüsselten Endpunkt (z.B. https://fail2ban.example.com).", + "settings.callback_url_env_set": "Callback-URL wird über die CALLBACK_URL-Umgebungsvariable gesetzt:", + "settings.callback_url_env_hint": "Um die Callback-URL über die Weboberfläche zu ändern, entfernen Sie die CALLBACK_URL-Umgebungsvariable und starten Sie den Container neu.", + "settings.callback_secret": "Fail2ban Callback-URL Secret", + "settings.callback_secret_placeholder": "Automatisch generiertes 42-Zeichen-Secret", + "settings.callback_secret.description": "Dieses Secret dient der Authentifizierung von Ban-API-Anfragen. Es wird automatisch in die Fail2ban-Action-Konfiguration eingefügt.", + "settings.destination_email": "Ziel-E-Mail (Alarmempfänger)", + "settings.destination_email_placeholder": "alerts@swissmakers.ch", + "settings.alert_countries": "Alarm-Länder", + "settings.alert_countries_description": "Wählen Sie die Länder aus, für die E-Mail-Alarme ausgelöst werden sollen, wenn eine Sperrung erfolgt.", + "settings.email_alerts": "E-Mail-Benachrichtigungseinstellungen", + "settings.email_alerts_for_bans": "E-Mail-Benachrichtigungen für Sperrungen aktivieren", + "settings.email_alerts_for_unbans": "E-Mail-Benachrichtigungen für Entsperrungen aktivieren", + "settings.smtp": "SMTP-Konfiguration", + "settings.smtp_host": "SMTP-Host", + "settings.smtp_host_placeholder": "z.B. smtp.gmail.com", + "settings.smtp_port": "SMTP-Port", + "settings.smtp_port_placeholder": "587", + "settings.smtp_port_hint": "Häufige Ports: 25 (unverschlüsselt), 587 (STARTTLS), 465 (SMTPS), 2525 (alternatives STARTTLS)", + "settings.smtp_auth_method": "Authentifizierungsmethode", + "settings.smtp_auth_method_auto": "Auto (LOGIN bevorzugt)", + "settings.smtp_auth_method_login": "LOGIN", + "settings.smtp_auth_method_plain": "PLAIN", + "settings.smtp_auth_method_cram_md5": "CRAM-MD5", + "settings.smtp_auth_method_hint": "LOGIN wird für Office365/Gmail empfohlen. PLAIN ist die Standard-SMTP-Authentifizierung. CRAM-MD5 ist challenge-response-basiert.", + "settings.smtp_insecure_skip_verify": "TLS-Zertifikatsüberprüfung überspringen", + "settings.smtp_insecure_skip_verify_warning": "⚠️ Nicht für Produktion empfohlen", + "settings.smtp_username": "SMTP-Benutzername", + "settings.smtp_username_placeholder": "z.B. user@example.com", + "settings.smtp_password": "SMTP-Passwort", + "settings.smtp_password_placeholder": "Geben Sie das SMTP-Passwort ein", + "settings.smtp_sender": "Absender-E-Mail", + "settings.smtp_sender_placeholder": "noreply@swissmakers.ch", + "settings.smtp_tls": "TLS verwenden (empfohlen)", + "settings.send_test_email": "Test-E-Mail senden", + "settings.send_test_email_hint": "⚠️ Bitte speichern Sie zuerst Ihre SMTP-Einstellungen, bevor Sie eine Test-E-Mail senden.", + "settings.fail2ban": "Globale Standard-Fail2Ban-Konfigurationen", + "settings.fail2ban.description": "Diese Einstellungen werden auf allen aktivierten Fail2Ban-Servern angewendet und in deren jail.local [DEFAULT]-Abschnitt gespeichert.", + "settings.enable_bantime_increment": "Bantime-Inkrement aktivieren", + "settings.enable_bantime_increment.description": "Wenn auf true gesetzt, wird die Bantime nach der Formel: bantime = findtime * (Anzahl der Fehler / maxretry) * (1 + bantime.rndtime) berechnet.", + "settings.default_jail_enable": "Jails standardmässig aktivieren", + "settings.default_jail_enable.description": "Wenn aktiviert, werden alle Jails standardmässig aktiviert. Wenn deaktiviert, müssen Jails explizit aktiviert werden.", + "settings.default_bantime": "Standard-Bantime", + "settings.default_bantime.description": "Die Anzahl der Sekunden, für die ein Host gesperrt wird. Zeitformat: 1m = 1 Minute, 1h = 1 Stunde, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monat, 1y = 1 Jahr.", + "settings.default_bantime_placeholder": "z.B. 48h", + "settings.bantime_rndtime": "Bantime Rndtime", + "settings.bantime_rndtime.description": "Optional. Maximale Zufallssekunden in der Bantime-Inkrement-Formel (z.B. 2048). Leer lassen für Fail2ban-Standard.", + "settings.bantime_rndtime_placeholder": "z.B. 2048", + "settings.default_chain": "Standard-Chain", + "settings.default_chain.description": "iptables/nftables-Chain für Bans (z.B. INPUT für Host, DOCKER-USER für Docker-Container).", + "settings.chain_help_title": "Standard-Chain", + "settings.chain_docker_user": "DOCKER-USER", + "settings.chain_help_docker_user": "Für Anwendungen in Docker. Bans gelten für alle Container auf dem Host.", + "settings.chain_input": "INPUT", + "settings.chain_help_input": "Für Anwendungen auf dem Host. Bans gelten nur für das Host-Netzwerk, nicht für Docker-Netze.", + "settings.chain_forward": "FORWARD", + "settings.chain_help_forward": "Nur bei älteren Docker-Setups, in denen DOCKER-USER nicht verfügbar ist.", + "settings.banaction": "Banaction", + "settings.banaction.description": "Standard-Sperraktion (z.B. nftables-multiport, nftables-allports, firewallcmd-rich-rules, etc). Wird verwendet, um action_* Variablen zu definieren.", + "settings.banaction_allports": "Banaction Allports", + "settings.banaction_allports.description": "Sperraktion für alle Ports (z.B. nftables-allports, firewallcmd-allports, etc). Wird verwendet, wenn ein Jail alle Ports statt spezifischer Ports sperren muss.", + "settings.default_findtime": "Standard-Findtime", + "settings.default_findtime.description": "Ein Host wird gesperrt, wenn er in den letzten 'findtime' Sekunden 'maxretry' Fehler generiert hat. Zeitformat: 1m = 1 Minute, 1h = 1 Stunde, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monat, 1y = 1 Jahr.", + "settings.default_findtime_placeholder": "z.B. 30m", + "settings.default_max_retry": "Standard-Maximalversuche", + "settings.default_max_retry.description": "Anzahl der Fehler, bevor ein Host gesperrt wird.", + "settings.default_max_retry_placeholder": "Geben Sie die maximale Anzahl der Versuche ein", + "settings.geoip_provider": "GeoIP-Anbieter", + "settings.geoip_provider.description": "Wählen Sie den GeoIP-Lookup-Anbieter. MaxMind erfordert eine lokale Datenbankdatei, während Built-in eine kostenlose Online-API verwendet.", + "settings.geoip_provider.maxmind": "MaxMind (Lokale Datenbank)", + "settings.geoip_provider.builtin": "Built-in (ip-api.com)", + "settings.geoip_database_path": "GeoIP-Datenbankpfad", + "settings.geoip_database_path.description": "Pfad zur MaxMind GeoLite2-Country-Datenbankdatei.", + "settings.max_log_lines": "Maximale Log-Zeilen", + "settings.max_log_lines.description": "Maximale Anzahl von Log-Zeilen, die in Ban-Benachrichtigungen enthalten sein sollen. Die relevantesten Zeilen werden automatisch ausgewählt.", + "settings.ignore_ips": "IP-Adressen ignorieren", + "settings.ignore_ips.description": "Durch Leerzeichen getrennte Liste von IP-Adressen, CIDR-Masken oder DNS-Hosts. Fail2ban wird keinen Host sperren, der mit einer Adresse in dieser Liste übereinstimmt.", + "settings.ignore_ips_placeholder": "IP-Adressen, getrennt durch Leerzeichen", + "settings.advanced.title": "Erweiterte Aktionen für Wiederholungstäter", + "settings.advanced.description": "Synchronisiere wiederholte Angreifer automatisch mit einer externen Firewall oder Blockliste.", + "settings.advanced.refresh_log": "Protokoll aktualisieren", + "settings.advanced.test_button": "Manuell sperren / Test", + "settings.advanced.enable": "Automatische permanente Sperre aktivieren", + "settings.advanced.threshold": "Schwelle vor permanenter Sperre", + "settings.advanced.threshold_hint": "Sobald eine IP diesen Wert erreicht, wird sie an die Integration übergeben.", + "settings.advanced.integration": "Integration", + "settings.advanced.integration_none": "Integration auswählen", + "settings.advanced.integration_hint": "Wähle die Firewall oder Appliance, in der permanente Sperren erstellt werden sollen.", + "settings.advanced.mikrotik.note": "SSH-Zugang zum Mikrotik-Router und die Address-Liste angeben, in die IPs eingetragen werden.", + "settings.advanced.mikrotik.host": "Host", + "settings.advanced.mikrotik.port": "Port", + "settings.advanced.mikrotik.username": "SSH-Benutzername", + "settings.advanced.mikrotik.password": "SSH-Passwort", + "settings.advanced.mikrotik.key": "SSH-Key-Pfad (optional)", + "settings.advanced.mikrotik.list": "Address-Listenname", + "settings.advanced.pfsense.note": "Benötigt das pfSense REST API-Paket. Gib den API-Schlüssel und den Alias-Namen ein.", + "settings.advanced.pfsense.install_link": "REST API-Paket installieren", + "settings.advanced.pfsense.api_key_setup": "API-Schlüssel einrichten", + "settings.advanced.pfsense.base_url": "Basis-URL", + "settings.advanced.pfsense.token": "API-Schlüssel", + "settings.advanced.pfsense.token_hint": "Erstellen in System > REST API > Keys im pfSense webConfigurator", + "settings.advanced.pfsense.alias": "Alias-Name", + "settings.advanced.pfsense.skip_tls": "TLS-Validierung überspringen (Self-Signed)", + "settings.advanced.opnsense.note": "Gib die OPNsense API-Anmeldedaten und den Alias-Namen ein.", + "settings.advanced.opnsense.api_docs": "API-Dokumentation", + "settings.advanced.opnsense.api_key_setup": "API-Schlüssel einrichten", + "settings.advanced.opnsense.base_url": "Basis-URL", + "settings.advanced.opnsense.key": "API-Schlüssel", + "settings.advanced.opnsense.key_hint": "Erstellen in System > Zugriff > Benutzer > API-Schlüssel", + "settings.advanced.opnsense.secret": "API-Geheimnis", + "settings.advanced.opnsense.secret_hint": "Zusammen mit dem API-Schlüssel erstellen", + "settings.advanced.opnsense.alias": "Alias-Name", + "settings.advanced.opnsense.skip_tls": "TLS-Validierung überspringen (Self-Signed)", + "settings.advanced.log_title": "Log der permanenten Sperren", + "settings.advanced.log_empty": "Noch keine permanenten Sperren vorhanden.", + "settings.advanced.log_ip": "IP", + "settings.advanced.log_integration": "Integration", + "settings.advanced.log_status": "Status", + "settings.advanced.log_message": "Nachricht", + "settings.advanced.log_server": "Server", + "settings.advanced.log_updated": "Aktualisiert", + "settings.advanced.log_actions": "Aktionen", + "settings.advanced.unblock_btn": "Entfernen", + "settings.advanced.test_title": "Manuell sperren / Test", + "settings.advanced.test_ip": "IP-Adresse", + "settings.advanced.test_server": "Optionaler Server", + "settings.advanced.test_server_none": "Globale Integration verwenden", + "settings.advanced.test_block": "IP sperren", + "settings.advanced.test_unblock": "IP entfernen", + "settings.save": "Speichern", + "modal.filter_config": "Filter / Jail-Konfiguration:", + "modal.filter_config_edit": "Filter / Jail bearbeiten", + "modal.filter_config_label": "Filter-Konfiguration", + "modal.filter_config_hint": "Wenn leer gelassen, wird eine leere Filterdatei erstellt.", + "modal.filter_name": "Filter-Name", + "modal.filter_name_hint": "Nur alphanumerische Zeichen, Bindestriche und Unterstriche sind erlaubt.", + "modal.jail_config": "Jail-Konfiguration", + "modal.jail_config_hint": "Die Jail-Konfiguration wird automatisch ausgefüllt, wenn Sie einen Filter auswählen.", + "modal.jail_config_label": "Jail-Konfiguration", + "modal.jail_filter": "Filter (optional)", + "modal.jail_filter_hint": "Die Auswahl eines Filters füllt die Jail-Konfiguration automatisch aus.", + "modal.jail_name": "Jail-Name", + "modal.jail_name_hint": "Nur alphanumerische Zeichen, Bindestriche und Unterstriche sind erlaubt.", + "modal.test_logpath": "Logpfad testen", + "modal.local_server_logpath_note": "ℹ️ Hinweis:", + "modal.local_server_logpath_text_prefix": "Für einen lokalen Fail2ban-Server (z.B. installiert auf dem Host-System oder in einem Container auf demselben Host), müssen Logdateien auch im fail2ban-ui Container gemountet werden (z.B.", + "modal.local_server_logpath_text_suffix": "), damit fail2ban-ui Logpfad-Variablen oder -Pfade überprüfen kann, wenn Jails aktualisiert werden.", + "modal.create": "Erstellen", + "modal.create_filter": "Neuen Filter erstellen", + "modal.create_filter_title": "Neuen Filter erstellen", + "modal.create_jail": "Neues Jail erstellen", + "modal.create_jail_title": "Neues Jail erstellen", + "modal.cancel": "Abbrechen", + "modal.save": "Speichern", + "modal.close": "Schließen", + "loading": "Lade...", + "dashboard.manage_jails": "Jails verwalten", + "modal.manage_jails_title": "Jails verwalten", + "servers.selector.label": "Aktiver Server", + "servers.selector.empty": "Keine Server konfiguriert", + "servers.selector.none": "Kein Server konfiguriert. Bitte füge einen Fail2ban-Server hinzu.", + "servers.modal.title": "Fail2ban-Server verwalten", + "servers.modal.description": "Registriere entfernte Fail2ban-Instanzen und wähle, wie das UI sich verbindet.", + "servers.modal.list_title": "Registrierte Server", + "servers.modal.list_empty": "Keine Server konfiguriert. Füge rechts deinen ersten Fail2ban-Server hinzu.", + "servers.modal.form_title": "Server hinzufügen oder bearbeiten", + "servers.form.name": "Anzeigename", + "servers.form.name_placeholder": "Mein Fail2ban-Server", + "servers.form.type": "Verbindungstyp", + "servers.type.local": "Lokal (gleicher Host)", + "servers.type.ssh": "SSH", + "servers.type.agent": "API-Agent", + "servers.form.host": "Hostname / IP", + "servers.form.host_placeholder": "fail2ban.beispiel.de", + "servers.form.port": "Port", + "servers.form.port_placeholder": "22", + "servers.form.socket_path": "Fail2ban-Socket-Pfad", + "servers.form.socket_path_placeholder": "/var/run/fail2ban/fail2ban.sock", + "servers.form.log_path": "Fail2ban-Logpfad", + "servers.form.log_path_placeholder": "/var/log/fail2ban.log", + "servers.form.hostname": "Server-Hostname", + "servers.form.hostname_placeholder": "optional", + "servers.form.ssh_user": "SSH-Benutzer", + "servers.form.ssh_user_placeholder": "sa_fail2ban", + "servers.form.ssh_key": "Pfad zum SSH-Schlüssel", + "servers.form.ssh_key_placeholder": "/config/.ssh/id_rsa", + "servers.form.ssh_key_help": "Platzieren Sie Ihren SSH-Private-Key im Verzeichnis /config/.ssh/ (gemountetes Config-Volume). Die Schlüsseldatei muss die Berechtigungen 600 haben (chmod 600). Beispiel: /config/.ssh/id_rsa", + "servers.form.agent_url": "Agent-URL", + "servers.form.agent_url_placeholder": "https://host:9443", + "servers.form.agent_secret": "Agent-Secret", + "servers.form.agent_secret_placeholder": "gemeinsames Geheimnis", + "servers.form.tags": "Tags", + "servers.form.tags_placeholder": "kommagetrennte Tags", + "servers.form.set_default": "Als Standardserver setzen", + "servers.form.enabled": "Connector aktivieren", + "servers.form.submit": "Server speichern", + "servers.form.reset": "Zurücksetzen", + "servers.form.new_server": "Neuer Server", + "servers.form.success": "Server erfolgreich gespeichert.", + "servers.badge.default": "Standard", + "servers.badge.enabled": "Aktiv", + "servers.badge.disabled": "Deaktiviert", + "servers.badge.restart_needed": "Neustart erforderlich", + "servers.actions.edit": "Bearbeiten", + "servers.actions.set_default": "Als Standard setzen", + "servers.actions.enable": "Aktivieren", + "servers.actions.disable": "Deaktivieren", + "servers.actions.test": "Verbindung testen", + "servers.actions.test_success": "Verbindung erfolgreich", + "servers.actions.test_failure": "Verbindung fehlgeschlagen", + "servers.jail_local_warning": "Warnung: jail.local wird nicht von Fail2ban-UI verwaltet. Verschiebe jeden Jail in eine eigene Datei unter jail.d/ und lösche jail.local, damit Fail2ban-UI sie neu erstellen kann (einmal auf der Einstellungen-Seite speichern, um die Datei zu schreiben). Siehe Dokumentation für Berechtigungen.", + "servers.actions.restart": "Fail2ban neu starten", + "servers.actions.reload": "Fail2ban neu laden", + "servers.actions.reload_tooltip": "Für lokale Connectors ist nur ein Neuladen der Konfiguration über die Socket-Verbindung möglich. Der Container kann den Fail2ban-Dienst nicht mit systemctl neu starten. Für einen vollständigen Neustart führen Sie 'systemctl restart fail2ban' direkt auf dem Host-System aus.", + "servers.actions.delete": "Löschen", + "servers.actions.delete_confirm": "Diesen Servereintrag löschen?", + "servers.form.select_key": "Privaten Schlüssel auswählen", + "servers.form.select_key_placeholder": "Manuelle Eingabe", + "servers.form.no_keys": "Keine SSH-Schlüssel gefunden; Pfad manuell eingeben", + "filter_debug.not_available": "Filter-Debug ist nur verfügbar, wenn mindestens ein registrierter Fail2ban-Server aktiviert ist.", + "filter_debug.local_missing": "Das lokale Fail2ban-Filterverzeichnis wurde auf diesem Host nicht gefunden.", + "email.ban.title": "Achtung: Fail2Ban hat eine neue IP-Adresse blockiert", + "email.ban.intro": "Fail2Ban-UI hat eine fehlerhafte Anfrage oder wiederholte Authentifizierungsfehler erkannt und die Quell-IP automatisch blockiert. Überprüfen Sie die Metadaten und Log-Auszüge unten.", + "email.ban.subject.banned": "Gesperrt", + "email.ban.subject.from": "von", + "email.ban.details.banned_ip": "Gesperrte IP", + "email.ban.details.jail": "Jail", + "email.ban.details.hostname": "Hostname", + "email.ban.details.failed_attempts": "Fehlgeschlagene Versuche", + "email.ban.details.country": "Land", + "email.ban.details.timestamp": "Zeitstempel", + "email.ban.whois_title": "WHOIS-Auszug", + "email.ban.logs_title": "Relevante Logs", + "email.test.title": "E-Mail-Zustellungstest", + "email.test.intro": "Diese Nachricht bestätigt, dass Ihre SMTP-Konfiguration korrekt funktioniert und HTML-formatierte E-Mails zustellen kann.", + "email.test.subject": "Test-E-Mail von Fail2Ban UI", + "email.test.details.recipient": "Empfänger", + "email.test.details.smtp_host": "SMTP-Host", + "email.test.details.triggered_at": "Ausgelöst um", + "email.test.whois_no_data": "Für Test-E-Mails wird keine WHOIS-Abfrage durchgeführt.", + "email.test.sample_logs": "2025-01-01T12:00:00Z Beispiel-Log-Eintrag von Fail2ban-UI.", + "email.whois.no_data": "WHOIS-Daten wurden für dieses Ereignis nicht erfasst.", + "email.logs.no_data": "Für diesen Block wurden keine Log-Einträge erfasst.", + "email.footer.text": "Diese Nachricht wurde automatisch von Fail2Ban-UI generiert", + "email.unban.title": "IP-Adresse entsperrt", + "email.unban.intro": "IP-Adresse aus Fail2Ban-Jail entsperrt.", + "email.unban.subject.unbanned": "Entsperrt", + "email.unban.subject.from": "von", + "email.unban.details.unbanned_ip": "Entsperrte IP", + "email.unban.details.jail": "Jail", + "email.unban.details.hostname": "Hostname", + "email.unban.details.country": "Land", + "email.unban.details.timestamp": "Zeitstempel", + "lotr.email.title": "Ein dunkler Diener wurde verbannt", + "lotr.email.intro": "Die Wächter von Mittelerde haben eine Bedrohung erkannt und aus dem Reich verbannt.", + "lotr.email.you_shall_not_pass": "DU KANNST NICHT VORBEI", + "lotr.email.footer": "Mögen die Server geschützt sein. Ein Bann, um sie alle zu beherrschen.", + "lotr.email.details.dark_servant_location": "Die Position des dunklen Dieners", + "lotr.email.details.realm_protection": "Das Reich des Schutzes", + "lotr.email.details.origins": "Herkunft aus den", + "lotr.email.details.banished_at": "Verbannt zur", + "lotr.email.unban.title": "Der festgehaltene wird wider freigelassen", + "lotr.email.unban.intro": "Die Wächter von Mittelerde haben den Zugang wiederhergestellt.", + "lotr.email.unban.details.restored_ip": "Wiederhergestellte IP", + "lotr.banished": "Aus dem Reich verbannt", + "lotr.realms_protected": "Geschützte Reiche", + "lotr.threats_banished": "Verbannte Bedrohungen", + "toast.ban.title": "Neue Blockierung aufgetreten", + "toast.ban.action": "gesperrt in", + "toast.unban.title": "IP entsperrt", + "toast.unban.action": "entsperrt von", + "auth.login_title": "Bei Fail2ban UI anmelden", + "auth.login_description": "Bitte authentifizieren Sie sich, um auf die Verwaltungsoberfläche zuzugreifen", + "auth.login_button": "Mit OIDC anmelden", + "auth.logging_in": "Weiterleitung zur Anmeldung...", + "auth.logout": "Abmelden", + "auth.user_info": "Benutzerinformationen", + "auth.session_expired": "Ihre Sitzung ist abgelaufen. Bitte melden Sie sich erneut an.", + "auth.login_required": "Authentifizierung erforderlich", + "footer.version": "Fail2ban-UI v{version}", + "footer.latest": "Aktuell", + "footer.update_available": "Update verfügbar: v{version}" +} diff --git a/internal/locales/de_ch.json b/internal/locales/de_ch.json index 299753b..92f8bef 100644 --- a/internal/locales/de_ch.json +++ b/internal/locales/de_ch.json @@ -1,414 +1,415 @@ { - "page.title": "Fail2ban UI Dashboard", - "nav.dashboard": "Dashboard", - "nav.filter_debug": "Filter Debug", - "nav.settings": "Istellige", - "restart_banner.message": "Fail2ban Konfiguration gänderet! Für z'übernehä, bitte: ", - "restart_banner.button": "Service neu starte", - "restart_banner.restart_success": "Fail2ban-Dienst isch neu gestartet worde und dr Healthcheck het klappet", - "restart_banner.reload_success": "Fail2ban-Konfiguration isch erfolgreich neu gelade worde (Systemd neustart müglech)", - "dashboard.title": "Dashboard", - "dashboard.overview": "Übersicht vo de aktive Jails und Blocks", - "dashboard.overview_hint": "Bruch d Suechi zum g'sperrti IPs filtere und klick ufneä Jail, zum Filter bearbeite.", - "dashboard.search_label": "Suech nachere g'sperrte IP", - "dashboard.search_placeholder": "Gib d'IP i, wo suechsch", - "dashboard.external_ip": "Dini ext. IP:", - "dashboard.manage_servers": "Server verwalte", - "dashboard.no_servers_title": "Ke Fail2ban-Server konfiguriert", - "dashboard.no_servers_body": "Füeg ä witere Server hinzue um ou die Fail2ban-Instanz z'überwache und z'steuerä.", - "dashboard.loading_summary": "Laded Zämmefassig…", - "dashboard.no_enabled_servers_title": "Ke aktivi Verbindige", - "dashboard.no_enabled_servers_body": "Aktivier dr lokal Connector oder registrier ä entfernte Fail2ban-Server.", - "dashboard.jail_local_warning_title": "Das jail.local uf däm Server wird nid vom Fail2ban-UI verwaltet", - "dashboard.jail_local_warning_body": "D Datei /etc/fail2ban/jail.local ufem usgwählte Server existiert, wird aber nid vom Fail2ban-UI verwaltet. D Callback-Aktion (ui-custom-action) fähut, drum wärde Ban-/Unban-Ereignis nid ufzeichnet und kei E-Mail-Benachrichtigunge verschickt. Zum behebe: Verschieb jedi Jail-Definition us jail.local i ä eigeni Datei unger /etc/fail2ban/jail.d/ (nimm jailname.conf für ä Standard-Konfig oder jailname.local zumnä bestehendi .conf z überschriibe). Lösch denn jail.local, damit Fail2ban-UI ä eigeni verwalteti Version cha ersteue. Steu o sicher dass z Fail2ban-UI Schriibrächt uf /etc/fail2ban/ het -> siehe Doku.", - "dashboard.errors.summary_failed": "Zämmefassig het nid chönne glade wärde.", - "dashboard.cards.active_jails": "Aktivi Jails", - "dashboard.cards.total_banned": "Total g'sperrti IPs", - "dashboard.cards.new_last_hour": "Neu i dr letschte Stund", - "dashboard.cards.total_logged": "Gspichereti Sperr-Ereigniss", - "dashboard.cards.recurring_week": "Widerkehrendi IPs (7 Täg)", - "dashboard.cards.recurring_hint": "Wiederholendi Täterschaft us de letschte 7 Täg.", - "dashboard.table.jail_name": "Jail-Name", - "dashboard.table.total_banned": "Insgsamt g'sperrt", - "dashboard.table.new_last_hour": "Neu ir letschte Stund", - "dashboard.table.banned_ips": "G'sperrti IPs (Entsperrä)", - "dashboard.no_jails": "Kei Jails gfunde.", - "dashboard.overview_detail": "Aui Listä usklappe isch um IPs z suche nid nötig.", - "dashboard.table.time": "Zyt", - "dashboard.table.jail": "Jail", - "dashboard.table.ip": "IP", - "dashboard.table.log_line": "Log-Zile", - "dashboard.no_banned_ips": "Ke g'sperrti IPs", - "dashboard.unban": "Entsperre", - "dashboard.manual_block.title": "Manuelli IP-Sperri", - "dashboard.manual_block.subtitle": "Manuell e IP-Adrässe inme bestimmte Jail sperre.", - "dashboard.manual_block.expand_hint": "Klick zum Ufklappe und e IP-Adrässe z sperre", - "dashboard.manual_block.jail_label": "Jail uswähle", - "dashboard.manual_block.jail_placeholder": "Jail uswähle...", - "dashboard.manual_block.ip_label": "IP-Adrässe", - "dashboard.manual_block.ip_placeholder": "z.B. 88.76.21.123", - "dashboard.manual_block.button": "IP sperre", - "dashboard.manual_block.confirm": "IP {ip} im Jail {jail} sperre?", - "dashboard.manual_block.success": "IP erfolgriich g'sperrt", - "dashboard.manual_block.error": "Fehler bim Sperre vo dr IP", - "dashboard.manual_block.jail_required": "Bitte wähl es Jail us", - "dashboard.manual_block.ip_required": "Bitte gib e IP-Adrässe ii", - "dashboard.manual_block.invalid_ip": "Bitte gib e gültigi IP-Adrässe ii", - "dashboard.banned.show_more": "Meh azeige", - "dashboard.banned.show_less": "Weniger azeige", - "logs.overview.title": "Generelli Log-Übersicht", - "logs.overview.subtitle": "Vom Fail2ban-UI gspeichereti Ereigniss über alli Connectorä.", - "logs.overview.refresh": "Date aktualisiere", - "logs.overview.total_events": "Total gspeichereti Ereigniss", - "logs.overview.per_server": "Ereigniss pro Server", - "logs.overview.recent_events_title": "Letschti gspeichereti Ereigniss", - "logs.overview.recent_empty": "No keni gspeichereti Ereigniss gfunde.", - "logs.overview.empty": "No keni Sperr-Ereigniss protokolliert.", - "logs.overview.open_insights": "Insights azeige", - "logs.overview.total_today": "Hüt", - "logs.overview.total_week": "Letschti 7 Täg", - "logs.overview.per_server_empty": "No keni Serverdate verfügbar.", - "logs.overview.recent_filtered_empty": "Kei Ereigniss erfülle d Filter.", - "logs.overview.recent_count_label": "Aazeigti Ereigniss", - "logs.overview.load_more": "Mehr lade", - "logs.overview.country_unknown": "Unbekannt", - "logs.overview.last_seen": "Zletscht gseh", - "logs.table.server": "Server", - "logs.table.count": "Aazahl", - "logs.table.jail": "Jail", - "logs.table.ip": "IP", - "logs.table.time": "Zyt", - "logs.table.country": "Land", - "logs.table.actions": "Aktione", - "logs.actions.whois": "Whois", - "logs.actions.logs": "Logs", - "logs.search.label": "Ereigniss sueche", - "logs.search.placeholder": "IP, Jail oder Server sueche", - "logs.search.country_label": "Land", - "logs.search.country_all": "Alli Länder", - "logs.search.country_unknown": "Unbekannt", - "logs.badge.recurring": "Widerkehrend", - "logs.modal.whois_title": "Whois-Informatione", - "logs.modal.logs_title": "Logs", - "logs.modal.jail": "Jail", - "logs.modal.insights_title": "Ban-Insights", - "logs.modal.insights_description": "Verteilig nach Länder und wiederholti Angreifer.", - "logs.modal.insights_countries": "Ahzau Sperrige nach Land", - "logs.modal.insights_countries_empty": "Aktuell no ke sperrig mit geo-date.", - "logs.modal.insights_countries_hint": "Härkunft sortiert nach der gröste Ahzau Sperrige.", - "logs.modal.insights_recurring_hint": "IP-Adrässe, wo dür Fail2ban mehfach si gsperrt worde.", - "logs.modal.total_overall_note": "Gsamti Sperre bis jetzt", - "logs.modal.total_today_note": "Letschti 24 Stund", - "logs.modal.total_week_note": "Aktivität vor letschte Wuche", - "logs.modal.insights_recurring": "Wiederkehrendi IPs", - "logs.modal.insights_recurring_empty": "Ke wiederkehrendi IPs erkannt.", - "filter_debug.title": "Filter Debug", - "filter_debug.select_filter": "Wähl ä Filter us", - "filter_debug.filter_content": "Filter-Inhalt", - "filter_debug.filter_content_hint": "Bearbeit dr Fiuter-Regex unge zum Testä. Änderigä si temporär und wärde nid gspeichert.", - "filter_debug.filter_content_hint_readonly": "Fiuter-Inhalt wird schribgschützt azeigt. Klick uf 'Bearbeitä', zum abändärä. Änderigä si temporär und wärde nid gspeichert.", - "filter_debug.edit_filter": "Bearbeitä", - "filter_debug.cancel_edit": "Abbrächä", - "filter_debug.log_lines": "Log-Zile", - "filter_debug.log_lines_placeholder": "Füeg ä Log-Zile ii...", - "filter_debug.test_filter": "Filter teste", - "filter_debug.test_results_title": "Testergebnis", - "filter_debug.no_matches": "Ke Übereinstimmige gfunde.", - "settings.title": "Istellige", - "settings.general": "Allgemeini Istellige", - "settings.language": "Sprach", - "settings.server_port": "Server-Port", - "settings.server_port_placeholder": "z.B. 8080", - "settings.port_env_set": "Port wird über d PORT-Umgebigsvariable gsetzt:", - "settings.port_env_hint": "Um de Port über d Weboberflächi z ändere, entferne d PORT-Umgebigsvariable und start de Container neu.", - "settings.port_restart_hint": "⚠️ Port-Änderige erfordere ä Neustart vom Container, zum wirksam z werde.", - "settings.enable_debug": "Debug-Modus aktivierä", - "settings.enable_console": "Konsolenusgab aktivierä", - "settings.console.title": "Konsolenusgab", - "settings.console.clear": "Löschä", - "settings.console.save_hint": "Bitte speichere zerscht dini Istellige, bevor hiä Logs azeigt wärde.", - "settings.alert": "Alarm-Istellige", - "settings.callback_url": "Fail2ban Callback-URL", - "settings.callback_url_placeholder": "http://127.0.0.1:8080", - "settings.callback_url_hint": "Diä URL wird vo aune Fail2Ban-Instanze brucht, zum Ban-Payloads a Fail2Ban UI z sende. Für lokali Installatione bruchts de gliich Port wie z Fail2Ban UI (z.B. http://127.0.0.1:8080). Für Reverse-Proxy-Setups sött dr TLS-verschlüssleti Endpunkt wenn müglech brücht wärde (auso z.B. https://fail2ban.example.com).", - "settings.callback_secret": "Fail2ban Callback-URL Secret", - "settings.callback_secret_placeholder": "Automatisch generierts 42-Zeiche-Secret", - "settings.callback_secret.description": "Zur Authentifizierig vo Ban-Benachrichtigungsafroge. Es wird outomatisch id Fail2ban-Action-Konfiguration inkludiert.", - "settings.destination_email": "Ziiu-Email (Alarmempfänger)", - "settings.destination_email_placeholder": "alerts@swissmakers.ch", - "settings.alert_countries": "Alarm-Länder", - "settings.alert_countries_description": "Wähl d'Länder us, für weli du per Email ä Alarm becho wetsch, wenn e Sperrig erfolgt.", - "settings.email_alerts": "Email-Benachrichtigungsiistellige", - "settings.email_alerts_for_bans": "Email-Benachrichtigunge für Sperrige aktiviere", - "settings.email_alerts_for_unbans": "Email-Benachrichtigunge für Entsperrige aktiviere", - "settings.smtp": "SMTP-Konfiguration", - "settings.smtp_host": "SMTP-Host", - "settings.smtp_host_placeholder": "z.B. smtp.gmail.com", - "settings.smtp_port": "SMTP-Port", - "settings.smtp_port_placeholder": "587", - "settings.smtp_port_hint": "Hüfigi Ports: 25 (unverschlüsselt), 587 (STARTTLS), 465 (SMTPS), 2525 (alternativs STARTTLS)", - "settings.smtp_auth_method": "Authentifizierungsmethode", - "settings.smtp_auth_method_auto": "Auto (LOGIN bevorzugt)", - "settings.smtp_auth_method_login": "LOGIN", - "settings.smtp_auth_method_plain": "PLAIN", - "settings.smtp_auth_method_cram_md5": "CRAM-MD5", - "settings.smtp_auth_method_hint": "LOGIN wird für Office365/Gmail empfohle. PLAIN isch d Standard-SMTP-Authentifizierung. CRAM-MD5 isch challenge-response-basiert.", - "settings.smtp_insecure_skip_verify": "TLS-Zertifikatsüberprüfig überspringe", - "settings.smtp_insecure_skip_verify_warning": "⚠️ Nid fürd Produktion empfohle", - "settings.smtp_username": "SMTP-Benutzername", - "settings.smtp_username_placeholder": "z.B. user@example.com", - "settings.smtp_password": "SMTP-Passwort", - "settings.smtp_password_placeholder": "Gib s'SMTP-Passwort ii", - "settings.smtp_sender": "Absänder-Email", - "settings.smtp_sender_placeholder": "noreply@swissmakers.ch", - "settings.smtp_tls": "TLS bruuche (empfohlen)", - "settings.send_test_email": "Test-Email schicke", - "settings.send_test_email_hint": "⚠️ Bitte speichere zersch dini SMTP-Iistellige, bevor du e Test-Email schicksch.", - "settings.fail2ban": "Globale Standard-Fail2Ban-Konfiguratione", - "settings.fail2ban.description": "Die Einstellige werde uf alli aktivierte Fail2Ban-Server aagwändet und i däre jail.local [DEFAULT]-Abschnitt gspeicheret.", - "settings.enable_bantime_increment": "Bantime-Inkrement aktivierä", - "settings.enable_bantime_increment.description": "Wenn uf true gsetzt, wird d Bantime nach dr Formle: bantime = findtime * (Aazahl vo de Fähler / maxretry) * (1 + bantime.rndtime) berechnet.", - "settings.default_jail_enable": "Jails standardmässig aktivieren", - "settings.default_jail_enable.description": "Wenn aktiviert, werde alli Jails standardmässig aktiviert. Wenn deaktiviert, mues jedes Jails explizit aktiviert werde.", - "settings.default_bantime": "Standard-Bantime", - "settings.default_bantime.description": "D Aazahl vo de Sekunde, wo ä Host gsperrt wird. Zytformat: 1m = 1 Minute, 1h = 1 Stund, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monet, 1y = 1 Jahr.", - "settings.default_bantime_placeholder": "z.B. 48h", - "settings.bantime_rndtime": "Bantime Rndtime", - "settings.bantime_rndtime.description": "Optionau. Maximali Zufallssekunde i dr Bantime-Inkrement-Formle (z.B. 2048). Läär la füre Fail2ban-Standard.", - "settings.bantime_rndtime_placeholder": "z.B. 2048", - "settings.default_chain": "Standard-Chain", - "settings.default_chain.description": "iptables/nftables-Chain für Bans (z.B. INPUT für Host, DOCKER-USER für Docker-Container).", - "settings.chain_help_title": "Standard-Chain", - "settings.chain_docker_user": "DOCKER-USER", - "settings.chain_help_docker_user": "Für Aawändige i Docker. Bans gäute für alli Container uf em Host.", - "settings.chain_input": "INPUT", - "settings.chain_help_input": "Für Aawändige uf em Host. Bans gäute nur für s Host-Netz, nid für Docker-Netz.", - "settings.chain_forward": "FORWARD", - "settings.chain_help_forward": "Nur bi äutere Docker-Setups, wo DOCKER-USER nid verfüegbar isch.", - "settings.banaction": "Banaction", - "settings.banaction.description": "Standard-Sperraktione (z.B. nftables-multiport, nftables-allports, firewallcmd-rich-rules, etc). Wird brucht, zum action_* Variablen z definiere.", - "settings.banaction_allports": "Banaction Allports", - "settings.banaction_allports.description": "Sperraktione für alli Ports (z.B. nftables-allports, firewallcmd-allports, etc). Wird brucht, wänn ä Jail alli Ports statt spezifischi Ports sperre muess.", - "settings.default_findtime": "Standard-Findtime", - "settings.default_findtime.description": "Ä Host wird gsperrt, wenn er i de letschte 'findtime' Sekunde 'maxretry' Fähler generiert het. Zytformat: 1m = 1 Minute, 1h = 1 Stund, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monet, 1y = 1 Jahr.", - "settings.default_findtime_placeholder": "z.B. 30m", - "settings.default_max_retry": "Standard-Maximalversüech", - "settings.default_max_retry.description": "Aazahl vo de Fähler, bevor ä Host gsperrt wird.", - "settings.default_max_retry_placeholder": "Gib d'maximal Versüech ii", - "settings.geoip_provider": "GeoIP-Aabieter", - "settings.geoip_provider.description": "Wähl di GeoIP-Aabieter. MaxMind brucht e lokali Datenbankdatei, während Built-in e gratis Online-API verwendet.", - "settings.geoip_provider.maxmind": "MaxMind (Lokali Datenbank)", - "settings.geoip_provider.builtin": "Built-in (ip-api.com)", - "settings.geoip_database_path": "GeoIP-Datenbankpfad", - "settings.geoip_database_path.description": "Pfad zur MaxMind GeoLite2-Country-Datebank.", - "settings.max_log_lines": "Maximali Log-Zeile", - "settings.max_log_lines.description": "Maximali Aazahl vo Log-Zeile, wo i Ban-Benachrichtigunge enthalte si söll. Di relevanteschte Zeile werdet automatisch usgwählt.", - "settings.ignore_ips": "IPs ignorierä", - "settings.ignore_ips.description": "Dur Leerzeichä trennti Lischte vo IP-Adrässe, CIDR-Maske oder DNS-Hosts. Fail2ban wird kei Host sperre, wo mit ere Adrässe i dere Lischte übereistimmt.", - "settings.ignore_ips_placeholder": "IPs, getrennt dur e Leerzeichä", - "settings.advanced.title": "Erwieterti Aktione für Wiederholungstäter", - "settings.advanced.description": "Synchronisier d wiederholigstäter automatisch mit dr externe Firewall resp. Sperrlischte.", - "settings.advanced.refresh_log": "Log aktualisiere", - "settings.advanced.test_button": "Manuell sperre / Test", - "settings.advanced.enable": "Automatischi permanenti Sperrig aktiviere", - "settings.advanced.threshold": "Schweue für die permanenti Sperrig", - "settings.advanced.threshold_hint": "Sobald e IP die Zahu erreitcht, wird sie via Integration gsperrt.", - "settings.advanced.integration": "Integration", - "settings.advanced.integration_none": "Integration uswähle", - "settings.advanced.integration_hint": "Wähl d Firewall oder Appliance, wo diä permanenti Sperreg sött dürefüehre.", - "settings.advanced.mikrotik.note": "Gib dr SSH-Zuegriff uf di Mikrotik-Router a und d Address-Lischte, wo d'Sperrige ihtreit wärde.", - "settings.advanced.mikrotik.host": "Host", - "settings.advanced.mikrotik.port": "Port", - "settings.advanced.mikrotik.username": "SSH-Benutzername", - "settings.advanced.mikrotik.password": "SSH-Passwort", - "settings.advanced.mikrotik.key": "SSH-Key-Pfad (optional)", - "settings.advanced.mikrotik.list": "Adress-Lischtename", - "settings.advanced.pfsense.note": "Bruucht s pfSense REST API-Päckli. Gib dr API-Schlüssu und dr Alias-Name i.", - "settings.advanced.pfsense.install_link": "REST API-Päckli installiere", - "settings.advanced.pfsense.api_key_setup": "API-Schlüssu iirichte", - "settings.advanced.pfsense.base_url": "Basis-URL", - "settings.advanced.pfsense.token": "API-Schlüssu", - "settings.advanced.pfsense.token_hint": "Erstelle i System > REST API > Keys im pfSense webConfigurator", - "settings.advanced.pfsense.alias": "Alias-Name", - "settings.advanced.pfsense.skip_tls": "TLS-Prüfig überspringe (Self-Signed)", - "settings.advanced.opnsense.note": "Gib d OPNsense API-Ameldedate und dr Alias-Name i.", - "settings.advanced.opnsense.api_docs": "API-Dokumentation", - "settings.advanced.opnsense.api_key_setup": "API-Schlüssu iirichte", - "settings.advanced.opnsense.base_url": "Basis-URL", - "settings.advanced.opnsense.key": "API-Schlüssu", - "settings.advanced.opnsense.key_hint": "Erstelle i System > Zuegriff > Benutzer > API-Schlüssu", - "settings.advanced.opnsense.secret": "API-Geheimnis", - "settings.advanced.opnsense.secret_hint": "Zämme mit em API-Schlüssu erstelle", - "settings.advanced.opnsense.alias": "Alias-Name", - "settings.advanced.opnsense.skip_tls": "TLS-Prüfig überspringe (Self-Signed)", - "settings.advanced.log_title": "Permanent gsperrti IPs", - "settings.advanced.log_empty": "No ke permanenti Sperrig erfasst.", - "settings.advanced.log_ip": "IP", - "settings.advanced.log_integration": "Integration", - "settings.advanced.log_status": "Status", - "settings.advanced.log_message": "Meldig", - "settings.advanced.log_server": "Server", - "settings.advanced.log_updated": "Aktualisiert", - "settings.advanced.log_actions": "Aktione", - "settings.advanced.unblock_btn": "Entferne", - "settings.advanced.test_title": "Manuell sperre / Test", - "settings.advanced.test_ip": "IP-Adrässe", - "settings.advanced.test_server": "Optionale Server", - "settings.advanced.test_server_none": "Globali Integration bruuchä", - "settings.advanced.test_block": "IP sperre", - "settings.advanced.test_unblock": "IP freigäh", - "settings.save": "Speicherä", - "modal.filter_config": "Filter / Jail-Konfiguration:", - "modal.filter_config_edit": "Filter / Jail bearbeite", - "modal.filter_config_label": "Filter-Konfiguration", - "modal.filter_config_hint": "Wenn leer glah, wird e leeri Filterdatei erstellt.", - "modal.filter_name": "Filter-Name", - "modal.filter_name_hint": "Nur alphanumerischi Zeiche, Bindestrich und Unterstriche si erlaubt.", - "modal.jail_config": "Jail-Konfiguration", - "modal.jail_config_hint": "D Jail-Konfiguration wird automatisch usgfüllt, wenn Sie ä Filter uswähle.", - "modal.jail_config_label": "Jail-Konfiguration", - "modal.jail_filter": "Filter (optional)", - "modal.jail_filter_hint": "D Uswahl von ne Filter füllt d Jail-Konfiguration automatisch us.", - "modal.jail_name": "Jail-Name", - "modal.jail_name_hint": "Nur alphanumerischi Zeiche, Bindestrich und Unterstriche si erlaubt.", - "modal.test_logpath": "Logpfad teste", - "modal.local_server_logpath_note": "ℹ️ Hinweis:", - "modal.local_server_logpath_text_prefix": "Für lokali Fail2ban-Server (z.B. installiert auf em Host-System oder ime Container ufem gliche Host), müesse Logdateie ou im fail2ban-ui Container gmountet wärde (z.B.", - "modal.local_server_logpath_text_suffix": "), dass fail2ban-ui Log-Variable oder Pfäd überprüefe cha, wenn Jails aktualisiert wärde.", - "modal.create": "Ersteue", - "modal.create_filter": "Neue Filter ersteue", - "modal.create_filter_title": "Neue Filter ersteue", - "modal.create_jail": "Neus Jail ersteue", - "modal.create_jail_title": "Neus Jail ersteue", - "modal.cancel": "Abbräche", - "modal.save": "Speicherä", - "modal.close": "Wider Schliesse", - "loading": "Lade...", - "dashboard.manage_jails": "Jails ala oder absteue", - "modal.manage_jails_title": "Jails ala oder absteue", - "servers.selector.label": "Aktiver Server", - "servers.selector.empty": "Kei Server konfiguriert", - "servers.selector.none": "Kei Server konfiguriert. Bitte füeg ä Fail2ban-Server dezue.", - "servers.modal.title": "Fail2ban-Server verwalte", - "servers.modal.description": "Registrier entfernti Fail2ban-Instanze und wähl, wie s UI sich verbindet.", - "servers.modal.list_title": "Registrierti Server", - "servers.modal.list_empty": "Kei Server konfiguriert. Füeg rechts din erschte Fail2ban-Server dezue.", - "servers.modal.form_title": "Server hinzuefüege oder bearbeite", - "servers.form.name": "Aazeigname", - "servers.form.name_placeholder": "Mi Fail2ban-Server", - "servers.form.type": "Verbindigstyp", - "servers.type.local": "Lokal (gliiche Host)", - "servers.type.ssh": "SSH", - "servers.type.agent": "API-Agent", - "servers.form.host": "Hostname / IP", - "servers.form.host_placeholder": "fail2ban.beispiel.ch", - "servers.form.port": "Port", - "servers.form.port_placeholder": "22", - "servers.form.socket_path": "Fail2ban-Socket-Pfad", - "servers.form.socket_path_placeholder": "/var/run/fail2ban/fail2ban.sock", - "servers.form.log_path": "Fail2ban-Logpfad", - "servers.form.log_path_placeholder": "/var/log/fail2ban.log", - "servers.form.hostname": "Server-Hostname", - "servers.form.hostname_placeholder": "optional", - "servers.form.ssh_user": "SSH-Benutzer", - "servers.form.ssh_user_placeholder": "sa_fail2ban", - "servers.form.ssh_key": "Pfad zum SSH-Schlüssel", - "servers.form.ssh_key_placeholder": "/config/.ssh/id_rsa", - "servers.form.ssh_key_help": "Platzieren Sie Ihren SSH-Private-Key im Verzeichnis /config/.ssh/ (gemountetes Config-Volume). Die Schlüsseldatei muss die Berechtigungen 600 haben (chmod 600). Beispiel: /config/.ssh/id_rsa", - "servers.form.agent_url": "Agent-URL", - "servers.form.agent_url_placeholder": "https://host:9443", - "servers.form.agent_secret": "Agent-Secret", - "servers.form.agent_secret_placeholder": "teilts Geheimnis", - "servers.form.tags": "Tags", - "servers.form.tags_placeholder": "Komma-trennte Tags", - "servers.form.set_default": "Als Standard-Server setze", - "servers.form.enabled": "Connector aktivierä", - "servers.form.submit": "Server speichere", - "servers.form.reset": "Zruggsetze", - "servers.form.new_server": "Neue Server", - "servers.form.success": "Server erfolgriich gspeicheret.", - "servers.badge.default": "Standard", - "servers.badge.enabled": "Aktiv", - "servers.badge.disabled": "Deaktiviert", - "servers.badge.restart_needed": "Brucht ä Neustart", - "servers.actions.edit": "Bearbeite", - "servers.actions.set_default": "Als Standard setze", - "servers.actions.enable": "Aktivierä", - "servers.actions.disable": "Deaktivierä", - "servers.actions.test": "Verbindig teste", - "servers.actions.test_success": "Verbindig erfolgriich", - "servers.actions.test_failure": "Verbindig nöd möglich", - "servers.jail_local_warning": "Achtung: z jail.local wird nid vom Fail2ban-UI verwaltet. Verschieb jede Jail in ä eigeni Datei under jail.d/ und lösch z jail.local, damit Fail2ban-UI z file neu cha erstelle. Lueg d Doku a betreffend Berechtigunge.", - "servers.actions.restart": "Fail2ban neu starte", - "servers.actions.reload": "Fail2ban neu lade", - "servers.actions.reload_tooltip": "Für lokali Connectors isch nur es Neulade vo de Konfiguration über d Socket-Verbindig möglich. Dr Container cha dr Fail2ban-Dienst nid mit systemctl neu starte. Für en vollständige Neustart füehre Sie 'systemctl restart fail2ban' direkt uf em Host-System us.", - "servers.actions.delete": "Lösche", - "servers.actions.delete_confirm": "Dä Servereintrag lösche?", - "servers.form.select_key": "Priväte Schlissel ufwähle", - "servers.form.select_key_placeholder": "Manuäll igäh", - "servers.form.no_keys": "Kei SSH-Schlüssel gfunde; Pfad selber igäh", - "filter_debug.not_available": "Filter-Debug funktioniert nur, we mindestens ei registrierte Fail2ban-Server aktiviert isch.", - "filter_debug.local_missing": "S lokale Fail2ban-Filterverzeichnis isch uf däm Host nid gfunde worde.", - "email.ban.title": "Achtung: Fail2Ban het e nöi IP-Adrässe blockiert", - "email.ban.intro": "Fail2Ban-UI het e fehlerhafti Aafrag oder widerholti Authentifizierigsfähler erkennt und d Quell-IP automatisch blockiert. Überprüef d Metadate und Log-Uuszüg unge.", - "email.ban.subject.banned": "G'sperrt", - "email.ban.subject.from": "vo", - "email.ban.details.banned_ip": "G'sperrti IP", - "email.ban.details.jail": "Jail", - "email.ban.details.hostname": "Hostname", - "email.ban.details.failed_attempts": "Fehlgschlageni Versüech", - "email.ban.details.country": "Land", - "email.ban.details.timestamp": "Zytstämpfel", - "email.ban.whois_title": "WHOIS-Uszuug", - "email.ban.logs_title": "Relevanti Logs", - "email.test.title": "E-Mail-Zustelligstest", - "email.test.intro": "Diä Nachricht bestätigt, dass dini SMTP-Konfiguration korrekt funktioniert und HTML-formatierti E-Mails zuegstellt chöi wärde.", - "email.test.subject": "Test-E-Mail vom Fail2Ban UI", - "email.test.details.recipient": "Empfänger", - "email.test.details.smtp_host": "SMTP-Host", - "email.test.details.triggered_at": "Usglöst um", - "email.test.whois_no_data": "Für Test-E-Mails wird keni WHOIS-Abfrag düregfühert.", - "email.test.sample_logs": "2025-01-01T12:00:00Z Bispil-Log-Itrag vom Fail2ban-UI.", - "email.whois.no_data": "WHOIS-Date si für das Ereignis nid erfasst worde.", - "email.logs.no_data": "Für de Block sind keni Log-Iiträg erfasst worde.", - "email.footer.text": "Diä Nachricht isch automatisch vom Fail2Ban-UI generiert worde", - "email.unban.title": "IP-Adrässä entsperrt", - "email.unban.intro": "E IP-Adrässä isch usem Fail2Ban-Jail entsperrt worde.", - "email.unban.subject.unbanned": "Entsperrt", - "email.unban.subject.from": "vo", - "email.unban.details.unbanned_ip": "Entsperrti IP", - "email.unban.details.jail": "Jail", - "email.unban.details.hostname": "Hostname", - "email.unban.details.country": "Land", - "email.unban.details.timestamp": "Ziitstämpfel", - "lotr.email.title": "E dunkle Diener isch verbannt worde", - "lotr.email.intro": "D Wächter vo Mittelerde hei e Bedrohig erkannt und us dim Riich verbannt.", - "lotr.email.you_shall_not_pass": "DU DARFSCH NID VERBII", - "lotr.email.footer": "Möge d Server gschützt si. E Bann, um si alli z beherrsche.", - "lotr.email.details.dark_servant_location": "Dr Ort vom garstige Ork", - "lotr.email.details.realm_protection": "S Riich vom Schutz", - "lotr.email.details.origins": "Herkunft us de", - "lotr.email.details.banished_at": "Verbannt zur", - "lotr.email.unban.title": "Dr festghautnig wird wider freiglah", - "lotr.email.unban.intro": "D Wächter vo Mittelerde hei dr Zugang wiederhergstellt.", - "lotr.email.unban.details.restored_ip": "Widerhergstellti IP", - "lotr.banished": "Us em Riich verbannt", - "lotr.realms_protected": "Gschützti Riich", - "lotr.threats_banished": "Verbannti Bedrohige", - "toast.ban.title": "Neui Blockierig ufträte", - "toast.ban.action": "gsperrt i", - "toast.unban.title": "IP entsperrt", - "toast.unban.action": "entsperrt vo", - "auth.login_title": "Bi Fail2ban UI amäudä", - "auth.login_description": "Bitte log di ih, zum uf d Verwaltigsoberflächi zuezgriifä", - "auth.login_button": "Mit OIDC amäudä", - "auth.logging_in": "Wiiterleitig zur Amäudig...", - "auth.logout": "Abmäudä", - "auth.user_info": "Benutzerinformationä", - "auth.session_expired": "Ihri Sitzig isch abglaufä. Bitte mäudä di erneut a.", - "auth.login_required": "Authentifizierig erforderlich", - "footer.version": "Fail2ban-UI v{version}", - "footer.latest": "Aktuell", - "footer.update_available": "Update verfüegbar: v{version}" - } - \ No newline at end of file + "page.title": "Fail2ban UI Dashboard", + "nav.dashboard": "Dashboard", + "nav.filter_debug": "Filter Debug", + "nav.settings": "Istellige", + "restart_banner.message": "Fail2ban Konfiguration gänderet! Für z'übernehä, bitte: ", + "restart_banner.button": "Service neu starte", + "restart_banner.restart_success": "Fail2ban-Dienst isch neu gestartet worde und dr Healthcheck het klappet", + "restart_banner.reload_success": "Fail2ban-Konfiguration isch erfolgreich neu gelade worde (Systemd neustart müglech)", + "dashboard.title": "Dashboard", + "dashboard.overview": "Übersicht vo de aktive Jails und Blocks", + "dashboard.overview_hint": "Bruch d Suechi zum g'sperrti IPs filtere und klick ufneä Jail, zum Filter bearbeite.", + "dashboard.search_label": "Suech nachere g'sperrte IP", + "dashboard.search_placeholder": "Gib d'IP i, wo suechsch", + "dashboard.external_ip": "Dini ext. IP:", + "dashboard.manage_servers": "Server verwalte", + "dashboard.no_servers_title": "Ke Fail2ban-Server konfiguriert", + "dashboard.no_servers_body": "Füeg ä witere Server hinzue um ou die Fail2ban-Instanz z'überwache und z'steuerä.", + "dashboard.loading_summary": "Laded Zämmefassig…", + "dashboard.no_enabled_servers_title": "Ke aktivi Verbindige", + "dashboard.no_enabled_servers_body": "Aktivier dr lokal Connector oder registrier ä entfernte Fail2ban-Server.", + "dashboard.jail_local_warning_title": "Das jail.local uf däm Server wird nid vom Fail2ban-UI verwaltet", + "dashboard.jail_local_warning_body": "D Datei /etc/fail2ban/jail.local ufem usgwählte Server existiert, wird aber nid vom Fail2ban-UI verwaltet. D Callback-Aktion (ui-custom-action) fähut, drum wärde Ban-/Unban-Ereignis nid ufzeichnet und kei E-Mail-Benachrichtigunge verschickt. Zum behebe: Verschieb jedi Jail-Definition us jail.local i ä eigeni Datei unger /etc/fail2ban/jail.d/ (nimm jailname.conf für ä Standard-Konfig oder jailname.local zumnä bestehendi .conf z überschriibe). Lösch denn jail.local, damit Fail2ban-UI ä eigeni verwalteti Version cha ersteue. Steu o sicher dass z Fail2ban-UI Schriibrächt uf /etc/fail2ban/ het -> siehe Doku.", + "dashboard.errors.summary_failed": "Zämmefassig het nid chönne glade wärde.", + "dashboard.cards.active_jails": "Aktivi Jails", + "dashboard.cards.total_banned": "Total g'sperrti IPs", + "dashboard.cards.new_last_hour": "Neu i dr letschte Stund", + "dashboard.cards.total_logged": "Gspichereti Sperr-Ereigniss", + "dashboard.cards.recurring_week": "Widerkehrendi IPs (7 Täg)", + "dashboard.cards.recurring_hint": "Wiederholendi Täterschaft us de letschte 7 Täg.", + "dashboard.table.jail_name": "Jail-Name", + "dashboard.table.total_banned": "Insgsamt g'sperrt", + "dashboard.table.new_last_hour": "Neu ir letschte Stund", + "dashboard.table.banned_ips": "G'sperrti IPs (Entsperrä)", + "dashboard.no_jails": "Kei Jails gfunde.", + "dashboard.overview_detail": "Aui Listä usklappe isch um IPs z suche nid nötig.", + "dashboard.table.time": "Zyt", + "dashboard.table.jail": "Jail", + "dashboard.table.ip": "IP", + "dashboard.table.log_line": "Log-Zile", + "dashboard.no_banned_ips": "Ke g'sperrti IPs", + "dashboard.unban": "Entsperre", + "dashboard.manual_block.title": "Manuelli IP-Sperri", + "dashboard.manual_block.subtitle": "Manuell e IP-Adrässe inme bestimmte Jail sperre.", + "dashboard.manual_block.expand_hint": "Klick zum Ufklappe und e IP-Adrässe z sperre", + "dashboard.manual_block.jail_label": "Jail uswähle", + "dashboard.manual_block.jail_placeholder": "Jail uswähle...", + "dashboard.manual_block.ip_label": "IP-Adrässe", + "dashboard.manual_block.ip_placeholder": "z.B. 88.76.21.123", + "dashboard.manual_block.button": "IP sperre", + "dashboard.manual_block.confirm": "IP {ip} im Jail {jail} sperre?", + "dashboard.manual_block.success": "IP erfolgriich g'sperrt", + "dashboard.manual_block.error": "Fehler bim Sperre vo dr IP", + "dashboard.manual_block.jail_required": "Bitte wähl es Jail us", + "dashboard.manual_block.ip_required": "Bitte gib e IP-Adrässe ii", + "dashboard.manual_block.invalid_ip": "Bitte gib e gültigi IP-Adrässe ii", + "dashboard.banned.show_more": "Meh azeige", + "dashboard.banned.show_less": "Weniger azeige", + "logs.overview.title": "Generelli Log-Übersicht", + "logs.overview.subtitle": "Vom Fail2ban-UI gspeichereti Ereigniss über alli Connectorä.", + "logs.overview.refresh": "Date aktualisiere", + "logs.overview.total_events": "Total gspeichereti Ereigniss", + "logs.overview.per_server": "Ereigniss pro Server", + "logs.overview.recent_events_title": "Letschti gspeichereti Ereigniss", + "logs.overview.recent_empty": "No keni gspeichereti Ereigniss gfunde.", + "logs.overview.empty": "No keni Sperr-Ereigniss protokolliert.", + "logs.overview.open_insights": "Insights azeige", + "logs.overview.total_today": "Hüt", + "logs.overview.total_week": "Letschti 7 Täg", + "logs.overview.per_server_empty": "No keni Serverdate verfügbar.", + "logs.overview.recent_filtered_empty": "Kei Ereigniss erfülle d Filter.", + "logs.overview.recent_count_label": "Aazeigti Ereigniss", + "logs.overview.load_more": "Mehr lade", + "logs.overview.country_unknown": "Unbekannt", + "logs.overview.last_seen": "Zletscht gseh", + "logs.table.server": "Server", + "logs.table.count": "Aazahl", + "logs.table.jail": "Jail", + "logs.table.ip": "IP", + "logs.table.time": "Zyt", + "logs.table.country": "Land", + "logs.table.actions": "Aktione", + "logs.actions.whois": "Whois", + "logs.actions.logs": "Logs", + "logs.search.label": "Ereigniss sueche", + "logs.search.placeholder": "IP, Jail oder Server sueche", + "logs.search.country_label": "Land", + "logs.search.country_all": "Alli Länder", + "logs.search.country_unknown": "Unbekannt", + "logs.badge.recurring": "Widerkehrend", + "logs.modal.whois_title": "Whois-Informatione", + "logs.modal.logs_title": "Logs", + "logs.modal.jail": "Jail", + "logs.modal.insights_title": "Ban-Insights", + "logs.modal.insights_description": "Verteilig nach Länder und wiederholti Angreifer.", + "logs.modal.insights_countries": "Ahzau Sperrige nach Land", + "logs.modal.insights_countries_empty": "Aktuell no ke sperrig mit geo-date.", + "logs.modal.insights_countries_hint": "Härkunft sortiert nach der gröste Ahzau Sperrige.", + "logs.modal.insights_recurring_hint": "IP-Adrässe, wo dür Fail2ban mehfach si gsperrt worde.", + "logs.modal.total_overall_note": "Gsamti Sperre bis jetzt", + "logs.modal.total_today_note": "Letschti 24 Stund", + "logs.modal.total_week_note": "Aktivität vor letschte Wuche", + "logs.modal.insights_recurring": "Wiederkehrendi IPs", + "logs.modal.insights_recurring_empty": "Ke wiederkehrendi IPs erkannt.", + "filter_debug.title": "Filter Debug", + "filter_debug.select_filter": "Wähl ä Filter us", + "filter_debug.filter_content": "Filter-Inhalt", + "filter_debug.filter_content_hint": "Bearbeit dr Fiuter-Regex unge zum Testä. Änderigä si temporär und wärde nid gspeichert.", + "filter_debug.filter_content_hint_readonly": "Fiuter-Inhalt wird schribgschützt azeigt. Klick uf 'Bearbeitä', zum abändärä. Änderigä si temporär und wärde nid gspeichert.", + "filter_debug.edit_filter": "Bearbeitä", + "filter_debug.cancel_edit": "Abbrächä", + "filter_debug.log_lines": "Log-Zile", + "filter_debug.log_lines_placeholder": "Füeg ä Log-Zile ii...", + "filter_debug.test_filter": "Filter teste", + "filter_debug.test_results_title": "Testergebnis", + "filter_debug.no_matches": "Ke Übereinstimmige gfunde.", + "settings.title": "Istellige", + "settings.general": "Allgemeini Istellige", + "settings.language": "Sprach", + "settings.server_port": "Server-Port", + "settings.server_port_placeholder": "z.B. 8080", + "settings.port_env_set": "Port wird über d PORT-Umgebigsvariable gsetzt:", + "settings.port_env_hint": "Um de Port über d Weboberflächi z ändere, entferne d PORT-Umgebigsvariable und start de Container neu.", + "settings.port_restart_hint": "⚠️ Port-Änderige erfordere ä Neustart vom Container, zum wirksam z werde.", + "settings.enable_debug": "Debug-Modus aktivierä", + "settings.enable_console": "Konsolenusgab aktivierä", + "settings.console.title": "Konsolenusgab", + "settings.console.clear": "Löschä", + "settings.console.save_hint": "Bitte speichere zerscht dini Istellige, bevor hiä Logs azeigt wärde.", + "settings.alert": "Alarm-Istellige", + "settings.callback_url": "Fail2ban Callback-URL", + "settings.callback_url_placeholder": "http://127.0.0.1:8080", + "settings.callback_url_hint": "Diä URL wird vo aune Fail2Ban-Instanze brucht, zum Ban-Payloads a Fail2Ban UI z sende. Für lokali Installatione bruchts dr gliich Port wie z Fail2Ban UI (z.B. http://127.0.0.1:8080). Für Reverse-Proxy-Setups sött dr TLS-verschlüssleti Endpunkt wenn müglech brücht wärde (auso z.B. https://fail2ban.example.com).", + "settings.callback_url_env_set": "Callback-URL wird über d CALLBACK_URL-Umgebigsvariable gsetzt:", + "settings.callback_url_env_hint": "Um d Callback-URL über d Weboberflächi z ändere, entfern d CALLBACK_URL-Umgebigsvariable und start dr Container neu.", + "settings.callback_secret": "Fail2ban Callback-URL Secret", + "settings.callback_secret_placeholder": "Automatisch generierts 42-Zeiche-Secret", + "settings.callback_secret.description": "Zur Authentifizierig vo Ban-Benachrichtigungsafroge. Es wird outomatisch id Fail2ban-Action-Konfiguration inkludiert.", + "settings.destination_email": "Ziiu-Email (Alarmempfänger)", + "settings.destination_email_placeholder": "alerts@swissmakers.ch", + "settings.alert_countries": "Alarm-Länder", + "settings.alert_countries_description": "Wähl d'Länder us, für weli du per Email ä Alarm becho wetsch, wenn e Sperrig erfolgt.", + "settings.email_alerts": "Email-Benachrichtigungsiistellige", + "settings.email_alerts_for_bans": "Email-Benachrichtigunge für Sperrige aktiviere", + "settings.email_alerts_for_unbans": "Email-Benachrichtigunge für Entsperrige aktiviere", + "settings.smtp": "SMTP-Konfiguration", + "settings.smtp_host": "SMTP-Host", + "settings.smtp_host_placeholder": "z.B. smtp.gmail.com", + "settings.smtp_port": "SMTP-Port", + "settings.smtp_port_placeholder": "587", + "settings.smtp_port_hint": "Hüfigi Ports: 25 (unverschlüsselt), 587 (STARTTLS), 465 (SMTPS), 2525 (alternativs STARTTLS)", + "settings.smtp_auth_method": "Authentifizierungsmethode", + "settings.smtp_auth_method_auto": "Auto (LOGIN bevorzugt)", + "settings.smtp_auth_method_login": "LOGIN", + "settings.smtp_auth_method_plain": "PLAIN", + "settings.smtp_auth_method_cram_md5": "CRAM-MD5", + "settings.smtp_auth_method_hint": "LOGIN wird für Office365/Gmail empfohle. PLAIN isch d Standard-SMTP-Authentifizierung. CRAM-MD5 isch challenge-response-basiert.", + "settings.smtp_insecure_skip_verify": "TLS-Zertifikatsüberprüfig überspringe", + "settings.smtp_insecure_skip_verify_warning": "⚠️ Nid fürd Produktion empfohle", + "settings.smtp_username": "SMTP-Benutzername", + "settings.smtp_username_placeholder": "z.B. user@example.com", + "settings.smtp_password": "SMTP-Passwort", + "settings.smtp_password_placeholder": "Gib s'SMTP-Passwort ii", + "settings.smtp_sender": "Absänder-Email", + "settings.smtp_sender_placeholder": "noreply@swissmakers.ch", + "settings.smtp_tls": "TLS bruuche (empfohlen)", + "settings.send_test_email": "Test-Email schicke", + "settings.send_test_email_hint": "⚠️ Bitte speichere zersch dini SMTP-Iistellige, bevor du e Test-Email schicksch.", + "settings.fail2ban": "Globale Standard-Fail2Ban-Konfiguratione", + "settings.fail2ban.description": "Die Einstellige werde uf alli aktivierte Fail2Ban-Server aagwändet und i däre jail.local [DEFAULT]-Abschnitt gspeicheret.", + "settings.enable_bantime_increment": "Bantime-Inkrement aktivierä", + "settings.enable_bantime_increment.description": "Wenn uf true gsetzt, wird d Bantime nach dr Formle: bantime = findtime * (Aazahl vo de Fähler / maxretry) * (1 + bantime.rndtime) berechnet.", + "settings.default_jail_enable": "Jails standardmässig aktivieren", + "settings.default_jail_enable.description": "Wenn aktiviert, werde alli Jails standardmässig aktiviert. Wenn deaktiviert, mues jedes Jails explizit aktiviert werde.", + "settings.default_bantime": "Standard-Bantime", + "settings.default_bantime.description": "D Aazahl vo de Sekunde, wo ä Host gsperrt wird. Zytformat: 1m = 1 Minute, 1h = 1 Stund, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monet, 1y = 1 Jahr.", + "settings.default_bantime_placeholder": "z.B. 48h", + "settings.bantime_rndtime": "Bantime Rndtime", + "settings.bantime_rndtime.description": "Optionau. Maximali Zufallssekunde i dr Bantime-Inkrement-Formle (z.B. 2048). Läär la füre Fail2ban-Standard.", + "settings.bantime_rndtime_placeholder": "z.B. 2048", + "settings.default_chain": "Standard-Chain", + "settings.default_chain.description": "iptables/nftables-Chain für Bans (z.B. INPUT für Host, DOCKER-USER für Docker-Container).", + "settings.chain_help_title": "Standard-Chain", + "settings.chain_docker_user": "DOCKER-USER", + "settings.chain_help_docker_user": "Für Aawändige i Docker. Bans gäute für alli Container uf em Host.", + "settings.chain_input": "INPUT", + "settings.chain_help_input": "Für Aawändige uf em Host. Bans gäute nur für s Host-Netz, nid für Docker-Netz.", + "settings.chain_forward": "FORWARD", + "settings.chain_help_forward": "Nur bi äutere Docker-Setups, wo DOCKER-USER nid verfüegbar isch.", + "settings.banaction": "Banaction", + "settings.banaction.description": "Standard-Sperraktione (z.B. nftables-multiport, nftables-allports, firewallcmd-rich-rules, etc). Wird brucht, zum action_* Variablen z definiere.", + "settings.banaction_allports": "Banaction Allports", + "settings.banaction_allports.description": "Sperraktione für alli Ports (z.B. nftables-allports, firewallcmd-allports, etc). Wird brucht, wänn ä Jail alli Ports statt spezifischi Ports sperre muess.", + "settings.default_findtime": "Standard-Findtime", + "settings.default_findtime.description": "Ä Host wird gsperrt, wenn er i de letschte 'findtime' Sekunde 'maxretry' Fähler generiert het. Zytformat: 1m = 1 Minute, 1h = 1 Stund, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monet, 1y = 1 Jahr.", + "settings.default_findtime_placeholder": "z.B. 30m", + "settings.default_max_retry": "Standard-Maximalversüech", + "settings.default_max_retry.description": "Aazahl vo de Fähler, bevor ä Host gsperrt wird.", + "settings.default_max_retry_placeholder": "Gib d'maximal Versüech ii", + "settings.geoip_provider": "GeoIP-Aabieter", + "settings.geoip_provider.description": "Wähl di GeoIP-Aabieter. MaxMind brucht e lokali Datenbankdatei, während Built-in e gratis Online-API verwendet.", + "settings.geoip_provider.maxmind": "MaxMind (Lokali Datenbank)", + "settings.geoip_provider.builtin": "Built-in (ip-api.com)", + "settings.geoip_database_path": "GeoIP-Datenbankpfad", + "settings.geoip_database_path.description": "Pfad zur MaxMind GeoLite2-Country-Datebank.", + "settings.max_log_lines": "Maximali Log-Zeile", + "settings.max_log_lines.description": "Maximali Aazahl vo Log-Zeile, wo i Ban-Benachrichtigunge enthalte si söll. Di relevanteschte Zeile werdet automatisch usgwählt.", + "settings.ignore_ips": "IPs ignorierä", + "settings.ignore_ips.description": "Dur Leerzeichä trennti Lischte vo IP-Adrässe, CIDR-Maske oder DNS-Hosts. Fail2ban wird kei Host sperre, wo mit ere Adrässe i dere Lischte übereistimmt.", + "settings.ignore_ips_placeholder": "IPs, getrennt dur e Leerzeichä", + "settings.advanced.title": "Erwieterti Aktione für Wiederholungstäter", + "settings.advanced.description": "Synchronisier d wiederholigstäter automatisch mit dr externe Firewall resp. Sperrlischte.", + "settings.advanced.refresh_log": "Log aktualisiere", + "settings.advanced.test_button": "Manuell sperre / Test", + "settings.advanced.enable": "Automatischi permanenti Sperrig aktiviere", + "settings.advanced.threshold": "Schweue für die permanenti Sperrig", + "settings.advanced.threshold_hint": "Sobald e IP die Zahu erreitcht, wird sie via Integration gsperrt.", + "settings.advanced.integration": "Integration", + "settings.advanced.integration_none": "Integration uswähle", + "settings.advanced.integration_hint": "Wähl d Firewall oder Appliance, wo diä permanenti Sperreg sött dürefüehre.", + "settings.advanced.mikrotik.note": "Gib dr SSH-Zuegriff uf di Mikrotik-Router a und d Address-Lischte, wo d'Sperrige ihtreit wärde.", + "settings.advanced.mikrotik.host": "Host", + "settings.advanced.mikrotik.port": "Port", + "settings.advanced.mikrotik.username": "SSH-Benutzername", + "settings.advanced.mikrotik.password": "SSH-Passwort", + "settings.advanced.mikrotik.key": "SSH-Key-Pfad (optional)", + "settings.advanced.mikrotik.list": "Adress-Lischtename", + "settings.advanced.pfsense.note": "Bruucht s pfSense REST API-Päckli. Gib dr API-Schlüssu und dr Alias-Name i.", + "settings.advanced.pfsense.install_link": "REST API-Päckli installiere", + "settings.advanced.pfsense.api_key_setup": "API-Schlüssu iirichte", + "settings.advanced.pfsense.base_url": "Basis-URL", + "settings.advanced.pfsense.token": "API-Schlüssu", + "settings.advanced.pfsense.token_hint": "Erstelle i System > REST API > Keys im pfSense webConfigurator", + "settings.advanced.pfsense.alias": "Alias-Name", + "settings.advanced.pfsense.skip_tls": "TLS-Prüfig überspringe (Self-Signed)", + "settings.advanced.opnsense.note": "Gib d OPNsense API-Ameldedate und dr Alias-Name i.", + "settings.advanced.opnsense.api_docs": "API-Dokumentation", + "settings.advanced.opnsense.api_key_setup": "API-Schlüssu iirichte", + "settings.advanced.opnsense.base_url": "Basis-URL", + "settings.advanced.opnsense.key": "API-Schlüssu", + "settings.advanced.opnsense.key_hint": "Erstelle i System > Zuegriff > Benutzer > API-Schlüssu", + "settings.advanced.opnsense.secret": "API-Geheimnis", + "settings.advanced.opnsense.secret_hint": "Zämme mit em API-Schlüssu erstelle", + "settings.advanced.opnsense.alias": "Alias-Name", + "settings.advanced.opnsense.skip_tls": "TLS-Prüfig überspringe (Self-Signed)", + "settings.advanced.log_title": "Permanent gsperrti IPs", + "settings.advanced.log_empty": "No ke permanenti Sperrig erfasst.", + "settings.advanced.log_ip": "IP", + "settings.advanced.log_integration": "Integration", + "settings.advanced.log_status": "Status", + "settings.advanced.log_message": "Meldig", + "settings.advanced.log_server": "Server", + "settings.advanced.log_updated": "Aktualisiert", + "settings.advanced.log_actions": "Aktione", + "settings.advanced.unblock_btn": "Entferne", + "settings.advanced.test_title": "Manuell sperre / Test", + "settings.advanced.test_ip": "IP-Adrässe", + "settings.advanced.test_server": "Optionale Server", + "settings.advanced.test_server_none": "Globali Integration bruuchä", + "settings.advanced.test_block": "IP sperre", + "settings.advanced.test_unblock": "IP freigäh", + "settings.save": "Speicherä", + "modal.filter_config": "Filter / Jail-Konfiguration:", + "modal.filter_config_edit": "Filter / Jail bearbeite", + "modal.filter_config_label": "Filter-Konfiguration", + "modal.filter_config_hint": "Wenn leer glah, wird e leeri Filterdatei erstellt.", + "modal.filter_name": "Filter-Name", + "modal.filter_name_hint": "Nur alphanumerischi Zeiche, Bindestrich und Unterstriche si erlaubt.", + "modal.jail_config": "Jail-Konfiguration", + "modal.jail_config_hint": "D Jail-Konfiguration wird automatisch usgfüllt, wenn Sie ä Filter uswähle.", + "modal.jail_config_label": "Jail-Konfiguration", + "modal.jail_filter": "Filter (optional)", + "modal.jail_filter_hint": "D Uswahl von ne Filter füllt d Jail-Konfiguration automatisch us.", + "modal.jail_name": "Jail-Name", + "modal.jail_name_hint": "Nur alphanumerischi Zeiche, Bindestrich und Unterstriche si erlaubt.", + "modal.test_logpath": "Logpfad teste", + "modal.local_server_logpath_note": "ℹ️ Hinweis:", + "modal.local_server_logpath_text_prefix": "Für lokali Fail2ban-Server (z.B. installiert auf em Host-System oder ime Container ufem gliche Host), müesse Logdateie ou im fail2ban-ui Container gmountet wärde (z.B.", + "modal.local_server_logpath_text_suffix": "), dass fail2ban-ui Log-Variable oder Pfäd überprüefe cha, wenn Jails aktualisiert wärde.", + "modal.create": "Ersteue", + "modal.create_filter": "Neue Filter ersteue", + "modal.create_filter_title": "Neue Filter ersteue", + "modal.create_jail": "Neus Jail ersteue", + "modal.create_jail_title": "Neus Jail ersteue", + "modal.cancel": "Abbräche", + "modal.save": "Speicherä", + "modal.close": "Wider Schliesse", + "loading": "Lade...", + "dashboard.manage_jails": "Jails ala oder absteue", + "modal.manage_jails_title": "Jails ala oder absteue", + "servers.selector.label": "Aktiver Server", + "servers.selector.empty": "Kei Server konfiguriert", + "servers.selector.none": "Kei Server konfiguriert. Bitte füeg ä Fail2ban-Server dezue.", + "servers.modal.title": "Fail2ban-Server verwalte", + "servers.modal.description": "Registrier entfernti Fail2ban-Instanze und wähl, wie s UI sich verbindet.", + "servers.modal.list_title": "Registrierti Server", + "servers.modal.list_empty": "Kei Server konfiguriert. Füeg rechts din erschte Fail2ban-Server dezue.", + "servers.modal.form_title": "Server hinzuefüege oder bearbeite", + "servers.form.name": "Aazeigname", + "servers.form.name_placeholder": "Mi Fail2ban-Server", + "servers.form.type": "Verbindigstyp", + "servers.type.local": "Lokal (gliiche Host)", + "servers.type.ssh": "SSH", + "servers.type.agent": "API-Agent", + "servers.form.host": "Hostname / IP", + "servers.form.host_placeholder": "fail2ban.beispiel.ch", + "servers.form.port": "Port", + "servers.form.port_placeholder": "22", + "servers.form.socket_path": "Fail2ban-Socket-Pfad", + "servers.form.socket_path_placeholder": "/var/run/fail2ban/fail2ban.sock", + "servers.form.log_path": "Fail2ban-Logpfad", + "servers.form.log_path_placeholder": "/var/log/fail2ban.log", + "servers.form.hostname": "Server-Hostname", + "servers.form.hostname_placeholder": "optional", + "servers.form.ssh_user": "SSH-Benutzer", + "servers.form.ssh_user_placeholder": "sa_fail2ban", + "servers.form.ssh_key": "Pfad zum SSH-Schlüssel", + "servers.form.ssh_key_placeholder": "/config/.ssh/id_rsa", + "servers.form.ssh_key_help": "Platzieren Sie Ihren SSH-Private-Key im Verzeichnis /config/.ssh/ (gemountetes Config-Volume). Die Schlüsseldatei muss die Berechtigungen 600 haben (chmod 600). Beispiel: /config/.ssh/id_rsa", + "servers.form.agent_url": "Agent-URL", + "servers.form.agent_url_placeholder": "https://host:9443", + "servers.form.agent_secret": "Agent-Secret", + "servers.form.agent_secret_placeholder": "teilts Geheimnis", + "servers.form.tags": "Tags", + "servers.form.tags_placeholder": "Komma-trennte Tags", + "servers.form.set_default": "Als Standard-Server setze", + "servers.form.enabled": "Connector aktivierä", + "servers.form.submit": "Server speichere", + "servers.form.reset": "Zruggsetze", + "servers.form.new_server": "Neue Server", + "servers.form.success": "Server erfolgriich gspeicheret.", + "servers.badge.default": "Standard", + "servers.badge.enabled": "Aktiv", + "servers.badge.disabled": "Deaktiviert", + "servers.badge.restart_needed": "Brucht ä Neustart", + "servers.actions.edit": "Bearbeite", + "servers.actions.set_default": "Als Standard setze", + "servers.actions.enable": "Aktivierä", + "servers.actions.disable": "Deaktivierä", + "servers.actions.test": "Verbindig teste", + "servers.actions.test_success": "Verbindig erfolgriich", + "servers.actions.test_failure": "Verbindig nöd möglich", + "servers.jail_local_warning": "Achtung: z jail.local wird nid vom Fail2ban-UI verwaltet. Verschieb jede Jail in ä eigeni Datei under jail.d/ und lösch z jail.local, damit Fail2ban-UI z file neu cha erstelle. Lueg d Doku a betreffend Berechtigunge.", + "servers.actions.restart": "Fail2ban neu starte", + "servers.actions.reload": "Fail2ban neu lade", + "servers.actions.reload_tooltip": "Für lokali Connectors isch nur es Neulade vo de Konfiguration über d Socket-Verbindig möglich. Dr Container cha dr Fail2ban-Dienst nid mit systemctl neu starte. Für en vollständige Neustart füehre Sie 'systemctl restart fail2ban' direkt uf em Host-System us.", + "servers.actions.delete": "Lösche", + "servers.actions.delete_confirm": "Dä Servereintrag lösche?", + "servers.form.select_key": "Priväte Schlissel ufwähle", + "servers.form.select_key_placeholder": "Manuäll igäh", + "servers.form.no_keys": "Kei SSH-Schlüssel gfunde; Pfad selber igäh", + "filter_debug.not_available": "Filter-Debug funktioniert nur, we mindestens ei registrierte Fail2ban-Server aktiviert isch.", + "filter_debug.local_missing": "S lokale Fail2ban-Filterverzeichnis isch uf däm Host nid gfunde worde.", + "email.ban.title": "Achtung: Fail2Ban het e nöi IP-Adrässe blockiert", + "email.ban.intro": "Fail2Ban-UI het e fehlerhafti Aafrag oder widerholti Authentifizierigsfähler erkennt und d Quell-IP automatisch blockiert. Überprüef d Metadate und Log-Uuszüg unge.", + "email.ban.subject.banned": "G'sperrt", + "email.ban.subject.from": "vo", + "email.ban.details.banned_ip": "G'sperrti IP", + "email.ban.details.jail": "Jail", + "email.ban.details.hostname": "Hostname", + "email.ban.details.failed_attempts": "Fehlgschlageni Versüech", + "email.ban.details.country": "Land", + "email.ban.details.timestamp": "Zytstämpfel", + "email.ban.whois_title": "WHOIS-Uszuug", + "email.ban.logs_title": "Relevanti Logs", + "email.test.title": "E-Mail-Zustelligstest", + "email.test.intro": "Diä Nachricht bestätigt, dass dini SMTP-Konfiguration korrekt funktioniert und HTML-formatierti E-Mails zuegstellt chöi wärde.", + "email.test.subject": "Test-E-Mail vom Fail2Ban UI", + "email.test.details.recipient": "Empfänger", + "email.test.details.smtp_host": "SMTP-Host", + "email.test.details.triggered_at": "Usglöst um", + "email.test.whois_no_data": "Für Test-E-Mails wird keni WHOIS-Abfrag düregfühert.", + "email.test.sample_logs": "2025-01-01T12:00:00Z Bispil-Log-Itrag vom Fail2ban-UI.", + "email.whois.no_data": "WHOIS-Date si für das Ereignis nid erfasst worde.", + "email.logs.no_data": "Für de Block sind keni Log-Iiträg erfasst worde.", + "email.footer.text": "Diä Nachricht isch automatisch vom Fail2Ban-UI generiert worde", + "email.unban.title": "IP-Adrässä entsperrt", + "email.unban.intro": "E IP-Adrässä isch usem Fail2Ban-Jail entsperrt worde.", + "email.unban.subject.unbanned": "Entsperrt", + "email.unban.subject.from": "vo", + "email.unban.details.unbanned_ip": "Entsperrti IP", + "email.unban.details.jail": "Jail", + "email.unban.details.hostname": "Hostname", + "email.unban.details.country": "Land", + "email.unban.details.timestamp": "Ziitstämpfel", + "lotr.email.title": "E dunkle Diener isch verbannt worde", + "lotr.email.intro": "D Wächter vo Mittelerde hei e Bedrohig erkannt und us dim Riich verbannt.", + "lotr.email.you_shall_not_pass": "DU DARFSCH NID VERBII", + "lotr.email.footer": "Möge d Server gschützt si. E Bann, um si alli z beherrsche.", + "lotr.email.details.dark_servant_location": "Dr Ort vom garstige Ork", + "lotr.email.details.realm_protection": "S Riich vom Schutz", + "lotr.email.details.origins": "Herkunft us de", + "lotr.email.details.banished_at": "Verbannt zur", + "lotr.email.unban.title": "Dr festghautnig wird wider freiglah", + "lotr.email.unban.intro": "D Wächter vo Mittelerde hei dr Zugang wiederhergstellt.", + "lotr.email.unban.details.restored_ip": "Widerhergstellti IP", + "lotr.banished": "Us em Riich verbannt", + "lotr.realms_protected": "Gschützti Riich", + "lotr.threats_banished": "Verbannti Bedrohige", + "toast.ban.title": "Neui Blockierig ufträte", + "toast.ban.action": "gsperrt i", + "toast.unban.title": "IP entsperrt", + "toast.unban.action": "entsperrt vo", + "auth.login_title": "Bi Fail2ban UI amäudä", + "auth.login_description": "Bitte log di ih, zum uf d Verwaltigsoberflächi zuezgriifä", + "auth.login_button": "Mit OIDC amäudä", + "auth.logging_in": "Wiiterleitig zur Amäudig...", + "auth.logout": "Abmäudä", + "auth.user_info": "Benutzerinformationä", + "auth.session_expired": "Ihri Sitzig isch abglaufä. Bitte mäudä di erneut a.", + "auth.login_required": "Authentifizierig erforderlich", + "footer.version": "Fail2ban-UI v{version}", + "footer.latest": "Aktuell", + "footer.update_available": "Update verfüegbar: v{version}" +} diff --git a/internal/locales/en.json b/internal/locales/en.json index f244557..cfae0db 100644 --- a/internal/locales/en.json +++ b/internal/locales/en.json @@ -1,414 +1,415 @@ { - "page.title": "Fail2ban UI Dashboard", - "nav.dashboard": "Dashboard", - "nav.filter_debug": "Filter Debug", - "nav.settings": "Settings", - "restart_banner.message": "Fail2ban configuration changed. To apply the changes, please ", - "restart_banner.button": "Restart Service", - "restart_banner.restart_success": "Fail2ban service restarted and passed health check", - "restart_banner.reload_success": "Fail2ban configuration reloaded successfully (no systemd service restart)", - "dashboard.title": "Dashboard", - "dashboard.overview": "Overview active Jails and Blocks", - "dashboard.overview_hint": "Use the search to filter banned IPs and click a jail to edit its configuration.", - "dashboard.search_label": "Search Banned IPs", - "dashboard.search_placeholder": "Enter IP address to search", - "dashboard.external_ip": "Your ext. IP:", - "dashboard.manage_servers": "Manage Servers", - "dashboard.no_servers_title": "No Fail2ban servers configured", - "dashboard.no_servers_body": "Add a server to start monitoring and controlling Fail2ban instances.", - "dashboard.loading_summary": "Loading summary data…", - "dashboard.errors.summary_failed": "Failed to load summary from server.", - "dashboard.no_enabled_servers_title": "No active connectors", - "dashboard.no_enabled_servers_body": "Enable the local connector or register a remote Fail2ban server to see live data.", - "dashboard.jail_local_warning_title": "The jail.local on this server is not managed by Fail2ban-UI", - "dashboard.jail_local_warning_body": "The file /etc/fail2ban/jail.local on the selected server exists but is not managed by Fail2ban-UI. The callback action (ui-custom-action) is missing, which means ban/unban events will not be recorded and no email alerts will be sent. To fix this, move each jail section from your jail.local into its own file under /etc/fail2ban/jail.d/ (use jailname.conf to keep a default or jailname.local to override an existing .conf). Then delete jail.local so Fail2ban-UI can create its own managed version (hit once save on the settings page to write the file). Ensure also Fail2ban-UI has write permissions to /etc/fail2ban/ -> see the documentation for details.", - "dashboard.cards.active_jails": "Active Jails", - "dashboard.cards.total_banned": "Total Banned IPs", - "dashboard.cards.new_last_hour": "New Last Hour", - "dashboard.cards.total_logged": "Stored Ban Events", - "dashboard.cards.recurring_week": "Recurring IPs (7 days)", - "dashboard.cards.recurring_hint": "Watch repeated offenders detected in the last seven days.", - "dashboard.table.jail_name": "Jail Name", - "dashboard.table.total_banned": "Total Banned", - "dashboard.table.new_last_hour": "New Last Hour", - "dashboard.table.banned_ips": "Banned IPs (Unban)", - "dashboard.no_jails": "No jails found.", - "dashboard.overview_detail": "The lists must not expanded to search for an IP.", - "dashboard.table.time": "Time", - "dashboard.table.jail": "Jail", - "dashboard.table.ip": "IP", - "dashboard.table.log_line": "Log Line", - "dashboard.no_banned_ips": "No banned IPs", - "dashboard.unban": "Unban", - "dashboard.manual_block.title": "Manual Block IP", - "dashboard.manual_block.subtitle": "Manually block an IP address in a specific jail.", - "dashboard.manual_block.expand_hint": "Click to expand and block an IP address", - "dashboard.manual_block.jail_label": "Select Jail", - "dashboard.manual_block.jail_placeholder": "Choose a jail...", - "dashboard.manual_block.ip_label": "IP Address", - "dashboard.manual_block.ip_placeholder": "e.g., 88.76.21.123", - "dashboard.manual_block.button": "Block IP", - "dashboard.manual_block.confirm": "Block IP {ip} in jail {jail}?", - "dashboard.manual_block.success": "IP blocked successfully", - "dashboard.manual_block.error": "Error blocking IP", - "dashboard.manual_block.jail_required": "Please select a jail", - "dashboard.manual_block.ip_required": "Please enter an IP address", - "dashboard.manual_block.invalid_ip": "Please enter a valid IP address", - "dashboard.banned.show_more": "Show more", - "dashboard.banned.show_less": "Hide extra", - "logs.overview.title": "Internal Log Overview", - "logs.overview.subtitle": "Events stored by Fail2ban-UI across all connectors.", - "logs.overview.refresh": "Refresh data", - "logs.overview.total_events": "Total stored events", - "logs.overview.per_server": "Events per server", - "logs.overview.recent_events_title": "Recent stored events", - "logs.overview.recent_empty": "No stored events found.", - "logs.overview.empty": "No ban events recorded yet.", - "logs.overview.open_insights": "Open insights", - "logs.overview.total_today": "Today", - "logs.overview.total_week": "Last 7 days", - "logs.overview.per_server_empty": "No per-server data available yet.", - "logs.overview.recent_filtered_empty": "No stored events match the current filters.", - "logs.overview.recent_count_label": "Events shown", - "logs.overview.load_more": "Load more", - "logs.overview.country_unknown": "Unknown", - "logs.overview.last_seen": "Last seen", - "logs.table.server": "Server", - "logs.table.count": "Count", - "logs.table.jail": "Jail", - "logs.table.ip": "IP", - "logs.table.time": "Time", - "logs.table.country": "Country", - "logs.table.actions": "Actions", - "logs.actions.whois": "Whois", - "logs.actions.logs": "Logs", - "logs.search.label": "Search events", - "logs.search.placeholder": "Search IP, jail or server", - "logs.search.country_label": "Country", - "logs.search.country_all": "All countries", - "logs.search.country_unknown": "Unknown", - "logs.badge.recurring": "Recurring", - "logs.modal.whois_title": "Whois Information", - "logs.modal.logs_title": "Logs", - "logs.modal.jail": "Jail", - "logs.modal.insights_title": "Ban Insights", - "logs.modal.insights_description": "Country distribution and recurring offenders.", - "logs.modal.insights_countries": "Bans by country", - "logs.modal.insights_countries_empty": "No bans recorded for this period.", - "logs.modal.insights_countries_hint": "Top origins for the selected time range.", - "logs.modal.insights_recurring_hint": "IP addresses repeatedly triggering Fail2ban.", - "logs.modal.total_overall_note": "Lifetime bans recorded", - "logs.modal.total_today_note": "Last 24 hours", - "logs.modal.total_week_note": "Weekly activity", - "logs.modal.insights_recurring": "Recurring IPs", - "logs.modal.insights_recurring_empty": "No recurring IPs detected.", - "filter_debug.title": "Filter Debug", - "filter_debug.select_filter": "Select a Filter", - "filter_debug.filter_content": "Filter Content", - "filter_debug.filter_content_hint": "Edit the filter regex below for testing. Changes are temporary and not saved.", - "filter_debug.filter_content_hint_readonly": "Filter content is shown read-only. Click 'Edit' to modify for testing. Changes are temporary and not saved.", - "filter_debug.edit_filter": "Edit", - "filter_debug.cancel_edit": "Cancel", - "filter_debug.log_lines": "Log Lines", - "filter_debug.log_lines_placeholder": "Enter log lines here...", - "filter_debug.test_filter": "Test Filter", - "filter_debug.test_results_title": "Test Results", - "filter_debug.no_matches": "No matches found.", - "settings.title": "Settings", - "settings.general": "General Settings", - "settings.language": "Language", - "settings.server_port": "Server Port", - "settings.server_port_placeholder": "e.g., 8080", - "settings.port_env_set": "Port is set via PORT environment variable:", - "settings.port_env_hint": "To change the port via Web UI, remove the PORT environment variable and restart the container.", - "settings.port_restart_hint": "⚠️ Port changes require a container restart to take effect.", - "settings.enable_debug": "Enable Debug Log", - "settings.enable_console": "Enable Console Output", - "settings.console.title": "Console Output", - "settings.console.clear": "Clear", - "settings.console.save_hint": "Please save your settings first before logs will be displayed here.", - "settings.alert": "Alert Settings", - "settings.callback_url": "Fail2ban Callback URL", - "settings.callback_url_placeholder": "http://127.0.0.1:8080", - "settings.callback_url_hint": "This URL is used by all Fail2Ban instances to send ban alerts back to Fail2Ban UI. For local deployments, use the same port as Fail2Ban UI (e.g., http://127.0.0.1:8080). For reverse proxy setups, use your TLS-encrypted endpoint (e.g., https://fail2ban.example.com).", - "settings.callback_secret": "Fail2ban Callback URL Secret", - "settings.callback_secret_placeholder": "Auto-generated 42-character secret", - "settings.callback_secret.description": "This secret is used to authenticate ban API requests. It is automatically included to the fail2ban action configuration.", - "settings.destination_email": "Destination Email (Alerts Receiver)", - "settings.destination_email_placeholder": "alerts@swissmakers.ch", - "settings.alert_countries": "Alert Countries", - "settings.alert_countries_description": "Choose the countries for which you want to receive email alerts when a block is triggered.", - "settings.email_alerts": "Email Alert Preferences", - "settings.email_alerts_for_bans": "Enable email alerts for bans", - "settings.email_alerts_for_unbans": "Enable email alerts for unbans", - "settings.smtp": "SMTP Configuration", - "settings.smtp_host": "SMTP Host", - "settings.smtp_host_placeholder": "e.g., smtp.gmail.com", - "settings.smtp_port": "SMTP Port", - "settings.smtp_port_placeholder": "587", - "settings.smtp_port_hint": "Common ports: 25 (plain), 587 (STARTTLS), 465 (SMTPS), 2525 (alternative STARTTLS)", - "settings.smtp_auth_method": "Authentication Method", - "settings.smtp_auth_method_auto": "Auto (LOGIN preferred)", - "settings.smtp_auth_method_login": "LOGIN", - "settings.smtp_auth_method_plain": "PLAIN", - "settings.smtp_auth_method_cram_md5": "CRAM-MD5", - "settings.smtp_auth_method_hint": "LOGIN is recommended for Office365/Gmail. PLAIN is standard SMTP auth. CRAM-MD5 is challenge-response based.", - "settings.smtp_insecure_skip_verify": "Skip TLS Certificate Verification", - "settings.smtp_insecure_skip_verify_warning": "⚠️ Not recommended for production", - "settings.smtp_username": "SMTP Username", - "settings.smtp_username_placeholder": "e.g., user@example.com", - "settings.smtp_password": "SMTP Password", - "settings.smtp_password_placeholder": "Enter SMTP Password", - "settings.smtp_sender": "Sender Email", - "settings.smtp_sender_placeholder": "noreply@swissmakers.ch", - "settings.smtp_tls": "Use TLS (Recommended)", - "settings.send_test_email": "Send Test Email", - "settings.send_test_email_hint": "⚠️ Please save your SMTP settings first before sending a test email.", - "settings.fail2ban": "Global Default Fail2Ban Configurations", - "settings.fail2ban.description": "These settings will be applied to all enabled Fail2Ban servers and stored in their jail.local [DEFAULT] section.", - "settings.enable_bantime_increment": "Enable Bantime Increment", - "settings.enable_bantime_increment.description": "If set to true, the bantime will be calculated using the formula: bantime = findtime * (number of failures / maxretry) * (1 + bantime.rndtime).", - "settings.default_jail_enable": "Enable Jails by Default", - "settings.default_jail_enable.description": "If enabled, all jails will be enabled by default. When disabled, jails must be explicitly enabled.", - "settings.default_bantime": "Default Bantime", - "settings.default_bantime.description": "The number of seconds that a host is banned. Time format: 1m = 1 minutes, 1h = 1 hour, 1d = 1 day, 1w = 1 week, 1mo = 1 month, 1y = 1 year.", - "settings.default_bantime_placeholder": "e.g., 48h", - "settings.bantime_rndtime": "Bantime Rndtime", - "settings.bantime_rndtime.description": "Optional. Max random seconds added in bantime increment formula (e.g. 2048). Leave empty to use Fail2ban default.", - "settings.bantime_rndtime_placeholder": "e.g., 2048", - "settings.default_chain": "Default Chain", - "settings.default_chain.description": "iptables/nftables chain used for banning (e.g. INPUT for host, DOCKER-USER for Docker containers).", - "settings.chain_help_title": "Default chain", - "settings.chain_docker_user": "DOCKER-USER", - "settings.chain_help_docker_user": "Use for apps running in Docker. Bans apply to all containers on the host.", - "settings.chain_input": "INPUT", - "settings.chain_help_input": "Use for apps on the host. Bans apply to the host network only, not Docker networks.", - "settings.chain_forward": "FORWARD", - "settings.chain_help_forward": "Only for older Docker setups where DOCKER-USER is not available.", - "settings.banaction": "Banaction", - "settings.banaction.description": "Default banning action (e.g. nftables-multiport, nftables-allports, firewallcmd-rich-rules, etc). It is used to define action_* variables.", - "settings.banaction_allports": "Banaction Allports", - "settings.banaction_allports.description": "Banning action for all ports (e.g. nftables-allports, firewallcmd-allports, etc). Used when a jail needs to ban all ports instead of specific ones.", - "settings.default_findtime": "Default Findtime", - "settings.default_findtime.description": "A host is banned if it has generated 'maxretry' failures during the last 'findtime' seconds. Time format: 1m = 1 minutes, 1h = 1 hours, 1d = 1 days, 1w = 1 week, 1mo = 1 month, 1y = 1 year.", - "settings.default_findtime_placeholder": "e.g., 30m", - "settings.default_max_retry": "Default Max Retry", - "settings.default_max_retry.description": "Number of failures before a host gets banned.", - "settings.default_max_retry_placeholder": "Enter maximum retries", - "settings.geoip_provider": "GeoIP Provider", - "settings.geoip_provider.description": "Choose the GeoIP lookup provider. MaxMind requires a local database file, while Built-in uses a free online API.", - "settings.geoip_provider.maxmind": "MaxMind (Local Database)", - "settings.geoip_provider.builtin": "Built-in (ip-api.com)", - "settings.geoip_database_path": "GeoIP Database Path", - "settings.geoip_database_path.description": "Path to the MaxMind GeoLite2-Country database file.", - "settings.max_log_lines": "Maximum Log Lines", - "settings.max_log_lines.description": "Maximum number of log lines to include in ban notifications. Most relevant lines are selected automatically.", - "settings.ignore_ips": "Ignore IPs", - "settings.ignore_ips.description": "Space separated list of IP addresses, CIDR masks or DNS hosts. Fail2ban will not ban a host which matches an address in this list.", - "settings.ignore_ips_placeholder": "IPs to ignore, separated by spaces", - "settings.advanced.title": "Advanced Actions for Recurring Offenders", - "settings.advanced.description": "Automatically synchronize recurring offenders to an external firewall or blocklist.", - "settings.advanced.refresh_log": "Refresh Log", - "settings.advanced.test_button": "Manually Block / Test", - "settings.advanced.enable": "Enable automatic permanent blocking", - "settings.advanced.threshold": "Threshold before permanent block", - "settings.advanced.threshold_hint": "Once an IP reaches this number of bans it will be forwarded to the integration.", - "settings.advanced.integration": "Integration", - "settings.advanced.integration_none": "Select integration", - "settings.advanced.integration_hint": "Choose the firewall or appliance where permanent bans should be created.", - "settings.advanced.mikrotik.note": "Provide SSH access to your Mikrotik router and the address list that should contain blocked IPs.", - "settings.advanced.mikrotik.host": "Host", - "settings.advanced.mikrotik.port": "Port", - "settings.advanced.mikrotik.username": "SSH Username", - "settings.advanced.mikrotik.password": "SSH Password", - "settings.advanced.mikrotik.key": "SSH Key Path (optional)", - "settings.advanced.mikrotik.list": "Address List Name", - "settings.advanced.pfsense.note": "Requires the pfSense REST API package. Enter the API key and alias to manage.", - "settings.advanced.pfsense.install_link": "Install REST API Package", - "settings.advanced.pfsense.api_key_setup": "Setup API Key", - "settings.advanced.pfsense.base_url": "Base URL", - "settings.advanced.pfsense.token": "API Key", - "settings.advanced.pfsense.token_hint": "Generate in System > REST API > Keys in pfSense webConfigurator", - "settings.advanced.pfsense.alias": "Alias Name", - "settings.advanced.pfsense.skip_tls": "Skip TLS verification (self-signed)", - "settings.advanced.opnsense.note": "Enter the OPNsense API credentials and alias to manage.", - "settings.advanced.opnsense.api_docs": "API Documentation", - "settings.advanced.opnsense.api_key_setup": "Setup API Key", - "settings.advanced.opnsense.base_url": "Base URL", - "settings.advanced.opnsense.key": "API Key", - "settings.advanced.opnsense.key_hint": "Generate in System > Access > Users > API Keys", - "settings.advanced.opnsense.secret": "API Secret", - "settings.advanced.opnsense.secret_hint": "Generate together with API key", - "settings.advanced.opnsense.alias": "Alias Name", - "settings.advanced.opnsense.skip_tls": "Skip TLS verification (self-signed)", - "settings.advanced.log_title": "Permanent Block Log", - "settings.advanced.log_empty": "No permanent blocks recorded yet.", - "settings.advanced.log_ip": "IP", - "settings.advanced.log_integration": "Integration", - "settings.advanced.log_status": "Status", - "settings.advanced.log_message": "Message", - "settings.advanced.log_server": "Server", - "settings.advanced.log_updated": "Updated", - "settings.advanced.log_actions": "Actions", - "settings.advanced.unblock_btn": "Remove", - "settings.advanced.test_title": "Manually Block / Test", - "settings.advanced.test_ip": "IP address", - "settings.advanced.test_server": "Optional server", - "settings.advanced.test_server_none": "Use global integration settings", - "settings.advanced.test_block": "Block IP", - "settings.advanced.test_unblock": "Remove IP", - "settings.save": "Save", - "modal.filter_config": "Filter / Jail Configuration:", - "modal.filter_config_edit": "Edit Filter / Jail", - "modal.filter_config_label": "Filter Configuration", - "modal.filter_config_hint": "If left empty, an empty filter file will be created.", - "modal.filter_name": "Filter Name", - "modal.filter_name_hint": "Only alphanumeric characters, dashes, and underscores are allowed.", - "modal.jail_config": "Jail Configuration", - "modal.jail_config_hint": "Jail configuration will be auto-populated when you select a filter.", - "modal.jail_config_label": "Jail Configuration", - "modal.jail_filter": "Filter (optional)", - "modal.jail_filter_hint": "Selecting a filter will auto-populate the jail configuration.", - "modal.jail_name": "Jail Name", - "modal.jail_name_hint": "Only alphanumeric characters, dashes, and underscores are allowed.", - "modal.test_logpath": "Test Logpath", - "modal.local_server_logpath_note": "ℹ️ Note:", - "modal.local_server_logpath_text_prefix": "For a local fail2ban server (e.g. installed on container host system or in a container on same host), log files must also be mounted to the fail2ban-ui container (e.g.,", - "modal.local_server_logpath_text_suffix": ") this is required so that the fail2ban-ui can verify logpath variables or paths when updating jails.", - "modal.create": "Create", - "modal.create_filter": "Create New Filter", - "modal.create_filter_title": "Create New Filter", - "modal.create_jail": "Create New Jail", - "modal.create_jail_title": "Create New Jail", - "modal.cancel": "Cancel", - "modal.save": "Save", - "modal.close": "Close", - "loading": "Loading...", - "dashboard.manage_jails": "Manage Jails", - "modal.manage_jails_title": "Manage Jails", - "servers.selector.label": "Active Server", - "servers.selector.empty": "No servers configured", - "servers.selector.none": "No server configured. Please add a Fail2ban server.", - "servers.modal.title": "Manage Fail2ban Servers", - "servers.modal.description": "Register remote Fail2ban instances and choose how the UI connects to them.", - "servers.modal.list_title": "Registered Servers", - "servers.modal.list_empty": "No servers configured yet. Add your first Fail2ban server using the form on the right.", - "servers.modal.form_title": "Add or Update Server", - "servers.form.name": "Display Name", - "servers.form.name_placeholder": "My Fail2ban server", - "servers.form.type": "Connection Type", - "servers.type.local": "Local (same host)", - "servers.type.ssh": "SSH", - "servers.type.agent": "API Agent", - "servers.form.host": "Hostname / IP", - "servers.form.host_placeholder": "fail2ban.example.com", - "servers.form.port": "Port", - "servers.form.port_placeholder": "22", - "servers.form.socket_path": "Fail2ban Socket Path", - "servers.form.socket_path_placeholder": "/var/run/fail2ban/fail2ban.sock", - "servers.form.log_path": "Fail2ban Log Path", - "servers.form.log_path_placeholder": "/var/log/fail2ban.log", - "servers.form.hostname": "Server Hostname", - "servers.form.hostname_placeholder": "optional", - "servers.form.ssh_user": "SSH User", - "servers.form.ssh_user_placeholder": "sa_fail2ban", - "servers.form.ssh_key": "SSH Private Key Path", - "servers.form.ssh_key_placeholder": "/config/.ssh/id_rsa", - "servers.form.ssh_key_help": "Place your SSH private key in the /config/.ssh/ directory (mounted config volume). The key file must have permissions 600 (chmod 600). Example: /config/.ssh/id_rsa", - "servers.form.agent_url": "Agent URL", - "servers.form.agent_url_placeholder": "https://host:9443", - "servers.form.agent_secret": "Agent Secret", - "servers.form.agent_secret_placeholder": "shared secret token", - "servers.form.tags": "Tags", - "servers.form.tags_placeholder": "comma,separated,tags", - "servers.form.set_default": "Set as default server", - "servers.form.enabled": "Enable connector", - "servers.form.submit": "Save Server", - "servers.form.reset": "Reset", - "servers.form.new_server": "New Server", - "servers.form.success": "Server saved successfully.", - "servers.badge.default": "Default", - "servers.badge.enabled": "Enabled", - "servers.badge.disabled": "Disabled", - "servers.badge.restart_needed": "Restart required", - "servers.actions.edit": "Edit", - "servers.actions.set_default": "Set default", - "servers.actions.enable": "Enable", - "servers.actions.disable": "Disable", - "servers.actions.test": "Test connection", - "servers.actions.test_success": "Connection successful", - "servers.actions.test_failure": "Connection failed", - "servers.jail_local_warning": "Warning: jail.local is not managed by Fail2ban-UI. Move each jail into its own file under jail.d/ and delete jail.local so Fail2ban-UI can recreate it (hit once save on the settings page to write the file). See docs for permissions.", - "servers.actions.restart": "Restart Fail2ban", - "servers.actions.reload": "Reload Fail2ban", - "servers.actions.reload_tooltip": "For local connectors, only a configuration reload is possible via the socket connection. The container cannot restart the Fail2ban service using systemctl. To perform a full restart, run 'systemctl restart fail2ban' directly on the host system.", - "servers.actions.delete": "Delete", - "servers.actions.delete_confirm": "Delete this server entry?", - "servers.form.select_key": "Select Private Key", - "servers.form.select_key_placeholder": "Manual entry", - "servers.form.no_keys": "No SSH keys found; enter path manually", - "filter_debug.not_available": "Filter debug is only available when at least one registered Fail2ban server is enabled.", - "filter_debug.local_missing": "The local Fail2ban filter directory was not found on this host.", - "email.ban.title": "Security alert: Fail2Ban blocked a new IP-address", - "email.ban.intro": "Fail2Ban-UI detected a bad request or repeated authentication failures and automatically blocked the source-IP. Review the metadata and log excerpts below.", - "email.ban.subject.banned": "Banned", - "email.ban.subject.from": "from", - "email.ban.details.banned_ip": "Banned IP", - "email.ban.details.jail": "Jail", - "email.ban.details.hostname": "Hostname", - "email.ban.details.failed_attempts": "Failed attempts", - "email.ban.details.country": "Country", - "email.ban.details.timestamp": "Timestamp", - "email.ban.whois_title": "WHOIS footprint", - "email.ban.logs_title": "Relevant log excerpts", - "email.test.title": "Email delivery test", - "email.test.intro": "This message confirms that your SMTP configuration is working correctly and can deliver HTML formatted emails.", - "email.test.subject": "Test Email from Fail2Ban UI", - "email.test.details.recipient": "Recipient", - "email.test.details.smtp_host": "SMTP host", - "email.test.details.triggered_at": "Triggered at", - "email.test.whois_no_data": "No WHOIS lookup is executed for test emails.", - "email.test.sample_logs": "2025-01-01T12:00:00Z Sample log entry of Fail2ban-UI.", - "email.whois.no_data": "WHOIS data was not captured for this event.", - "email.logs.no_data": "No log entries were captured for this block.", - "email.footer.text": "This message was generated automatically by Fail2Ban-UI", - "email.unban.title": "IP Address Unbanned", - "email.unban.intro": "An IP address has been unbanned from a Fail2Ban jail.", - "email.unban.subject.unbanned": "Unbanned", - "email.unban.subject.from": "from", - "email.unban.details.unbanned_ip": "Unbanned IP", - "email.unban.details.jail": "Jail", - "email.unban.details.hostname": "Hostname", - "email.unban.details.country": "Country", - "email.unban.details.timestamp": "Timestamp", - "lotr.email.title": "A Dark Servant Has Been Banished", - "lotr.email.intro": "The guardians of Middle-earth have detected a threat and banished it from the realm.", - "lotr.email.you_shall_not_pass": "YOU SHALL NOT PASS", - "lotr.email.footer": "May the servers be protected. One ban to rule them all.", - "lotr.email.details.dark_servant_location": "The Dark Servant's Location", - "lotr.email.details.realm_protection": "The Realm of Protection", - "lotr.email.details.origins": "Origins from the", - "lotr.email.details.banished_at": "Banished at the", - "lotr.email.unban.title": "The held prisoner has been released", - "lotr.email.unban.intro": "The guardians of Middle-earth have restored access to the realm.", - "lotr.email.unban.details.restored_ip": "Restored IP", - "lotr.banished": "Banished from the realm", - "lotr.realms_protected": "Realms Protected", - "lotr.threats_banished": "Threats Banished", - "toast.ban.title": "New block occurred", - "toast.ban.action": "banned in", - "toast.unban.title": "IP unblocked", - "toast.unban.action": "unblocked from", - "auth.login_title": "Sign in to Fail2ban UI", - "auth.login_description": "Please authenticate to access the management interface", - "auth.login_button": "Sign in with OIDC", - "auth.logging_in": "Redirecting to login...", - "auth.logout": "Logout", - "auth.user_info": "User Information", - "auth.session_expired": "Your session has expired. Please log in again.", - "auth.login_required": "Authentication required", - "footer.version": "Fail2ban-UI v{version}", - "footer.latest": "Latest", - "footer.update_available": "Update available: v{version}" - } - \ No newline at end of file + "page.title": "Fail2ban UI Dashboard", + "nav.dashboard": "Dashboard", + "nav.filter_debug": "Filter Debug", + "nav.settings": "Settings", + "restart_banner.message": "Fail2ban configuration changed. To apply the changes, please ", + "restart_banner.button": "Restart Service", + "restart_banner.restart_success": "Fail2ban service restarted and passed health check", + "restart_banner.reload_success": "Fail2ban configuration reloaded successfully (no systemd service restart)", + "dashboard.title": "Dashboard", + "dashboard.overview": "Overview active Jails and Blocks", + "dashboard.overview_hint": "Use the search to filter banned IPs and click a jail to edit its configuration.", + "dashboard.search_label": "Search Banned IPs", + "dashboard.search_placeholder": "Enter IP address to search", + "dashboard.external_ip": "Your ext. IP:", + "dashboard.manage_servers": "Manage Servers", + "dashboard.no_servers_title": "No Fail2ban servers configured", + "dashboard.no_servers_body": "Add a server to start monitoring and controlling Fail2ban instances.", + "dashboard.loading_summary": "Loading summary data…", + "dashboard.errors.summary_failed": "Failed to load summary from server.", + "dashboard.no_enabled_servers_title": "No active connectors", + "dashboard.no_enabled_servers_body": "Enable the local connector or register a remote Fail2ban server to see live data.", + "dashboard.jail_local_warning_title": "The jail.local on this server is not managed by Fail2ban-UI", + "dashboard.jail_local_warning_body": "The file /etc/fail2ban/jail.local on the selected server exists but is not managed by Fail2ban-UI. The callback action (ui-custom-action) is missing, which means ban/unban events will not be recorded and no email alerts will be sent. To fix this, move each jail section from your jail.local into its own file under /etc/fail2ban/jail.d/ (use jailname.conf to keep a default or jailname.local to override an existing .conf). Then delete jail.local so Fail2ban-UI can create its own managed version (hit once save on the settings page to write the file). Ensure also Fail2ban-UI has write permissions to /etc/fail2ban/ -> see the documentation for details.", + "dashboard.cards.active_jails": "Active Jails", + "dashboard.cards.total_banned": "Total Banned IPs", + "dashboard.cards.new_last_hour": "New Last Hour", + "dashboard.cards.total_logged": "Stored Ban Events", + "dashboard.cards.recurring_week": "Recurring IPs (7 days)", + "dashboard.cards.recurring_hint": "Watch repeated offenders detected in the last seven days.", + "dashboard.table.jail_name": "Jail Name", + "dashboard.table.total_banned": "Total Banned", + "dashboard.table.new_last_hour": "New Last Hour", + "dashboard.table.banned_ips": "Banned IPs (Unban)", + "dashboard.no_jails": "No jails found.", + "dashboard.overview_detail": "The lists must not expanded to search for an IP.", + "dashboard.table.time": "Time", + "dashboard.table.jail": "Jail", + "dashboard.table.ip": "IP", + "dashboard.table.log_line": "Log Line", + "dashboard.no_banned_ips": "No banned IPs", + "dashboard.unban": "Unban", + "dashboard.manual_block.title": "Manual Block IP", + "dashboard.manual_block.subtitle": "Manually block an IP address in a specific jail.", + "dashboard.manual_block.expand_hint": "Click to expand and block an IP address", + "dashboard.manual_block.jail_label": "Select Jail", + "dashboard.manual_block.jail_placeholder": "Choose a jail...", + "dashboard.manual_block.ip_label": "IP Address", + "dashboard.manual_block.ip_placeholder": "e.g., 88.76.21.123", + "dashboard.manual_block.button": "Block IP", + "dashboard.manual_block.confirm": "Block IP {ip} in jail {jail}?", + "dashboard.manual_block.success": "IP blocked successfully", + "dashboard.manual_block.error": "Error blocking IP", + "dashboard.manual_block.jail_required": "Please select a jail", + "dashboard.manual_block.ip_required": "Please enter an IP address", + "dashboard.manual_block.invalid_ip": "Please enter a valid IP address", + "dashboard.banned.show_more": "Show more", + "dashboard.banned.show_less": "Hide extra", + "logs.overview.title": "Internal Log Overview", + "logs.overview.subtitle": "Events stored by Fail2ban-UI across all connectors.", + "logs.overview.refresh": "Refresh data", + "logs.overview.total_events": "Total stored events", + "logs.overview.per_server": "Events per server", + "logs.overview.recent_events_title": "Recent stored events", + "logs.overview.recent_empty": "No stored events found.", + "logs.overview.empty": "No ban events recorded yet.", + "logs.overview.open_insights": "Open insights", + "logs.overview.total_today": "Today", + "logs.overview.total_week": "Last 7 days", + "logs.overview.per_server_empty": "No per-server data available yet.", + "logs.overview.recent_filtered_empty": "No stored events match the current filters.", + "logs.overview.recent_count_label": "Events shown", + "logs.overview.load_more": "Load more", + "logs.overview.country_unknown": "Unknown", + "logs.overview.last_seen": "Last seen", + "logs.table.server": "Server", + "logs.table.count": "Count", + "logs.table.jail": "Jail", + "logs.table.ip": "IP", + "logs.table.time": "Time", + "logs.table.country": "Country", + "logs.table.actions": "Actions", + "logs.actions.whois": "Whois", + "logs.actions.logs": "Logs", + "logs.search.label": "Search events", + "logs.search.placeholder": "Search IP, jail or server", + "logs.search.country_label": "Country", + "logs.search.country_all": "All countries", + "logs.search.country_unknown": "Unknown", + "logs.badge.recurring": "Recurring", + "logs.modal.whois_title": "Whois Information", + "logs.modal.logs_title": "Logs", + "logs.modal.jail": "Jail", + "logs.modal.insights_title": "Ban Insights", + "logs.modal.insights_description": "Country distribution and recurring offenders.", + "logs.modal.insights_countries": "Bans by country", + "logs.modal.insights_countries_empty": "No bans recorded for this period.", + "logs.modal.insights_countries_hint": "Top origins for the selected time range.", + "logs.modal.insights_recurring_hint": "IP addresses repeatedly triggering Fail2ban.", + "logs.modal.total_overall_note": "Lifetime bans recorded", + "logs.modal.total_today_note": "Last 24 hours", + "logs.modal.total_week_note": "Weekly activity", + "logs.modal.insights_recurring": "Recurring IPs", + "logs.modal.insights_recurring_empty": "No recurring IPs detected.", + "filter_debug.title": "Filter Debug", + "filter_debug.select_filter": "Select a Filter", + "filter_debug.filter_content": "Filter Content", + "filter_debug.filter_content_hint": "Edit the filter regex below for testing. Changes are temporary and not saved.", + "filter_debug.filter_content_hint_readonly": "Filter content is shown read-only. Click 'Edit' to modify for testing. Changes are temporary and not saved.", + "filter_debug.edit_filter": "Edit", + "filter_debug.cancel_edit": "Cancel", + "filter_debug.log_lines": "Log Lines", + "filter_debug.log_lines_placeholder": "Enter log lines here...", + "filter_debug.test_filter": "Test Filter", + "filter_debug.test_results_title": "Test Results", + "filter_debug.no_matches": "No matches found.", + "settings.title": "Settings", + "settings.general": "General Settings", + "settings.language": "Language", + "settings.server_port": "Server Port", + "settings.server_port_placeholder": "e.g., 8080", + "settings.port_env_set": "Port is set via PORT environment variable:", + "settings.port_env_hint": "To change the port via Web UI, remove the PORT environment variable and restart the container.", + "settings.port_restart_hint": "⚠️ Port changes require a container restart to take effect.", + "settings.enable_debug": "Enable Debug Log", + "settings.enable_console": "Enable Console Output", + "settings.console.title": "Console Output", + "settings.console.clear": "Clear", + "settings.console.save_hint": "Please save your settings first before logs will be displayed here.", + "settings.alert": "Alert Settings", + "settings.callback_url": "Fail2ban Callback URL", + "settings.callback_url_placeholder": "http://127.0.0.1:8080", + "settings.callback_url_hint": "This URL is used by all Fail2Ban instances to send ban alerts back to Fail2Ban UI. For local deployments, use the same port as Fail2Ban UI (e.g., http://127.0.0.1:8080). For reverse proxy setups, use your TLS-encrypted endpoint (e.g., https://fail2ban.example.com).", + "settings.callback_url_env_set": "Callback URL is set via CALLBACK_URL environment variable:", + "settings.callback_url_env_hint": "To change the callback URL via Web UI, remove the CALLBACK_URL environment variable and restart the container.", + "settings.callback_secret": "Fail2ban Callback URL Secret", + "settings.callback_secret_placeholder": "Auto-generated 42-character secret", + "settings.callback_secret.description": "This secret is used to authenticate ban API requests. It is automatically included to the fail2ban action configuration.", + "settings.destination_email": "Destination Email (Alerts Receiver)", + "settings.destination_email_placeholder": "alerts@swissmakers.ch", + "settings.alert_countries": "Alert Countries", + "settings.alert_countries_description": "Choose the countries for which you want to receive email alerts when a block is triggered.", + "settings.email_alerts": "Email Alert Preferences", + "settings.email_alerts_for_bans": "Enable email alerts for bans", + "settings.email_alerts_for_unbans": "Enable email alerts for unbans", + "settings.smtp": "SMTP Configuration", + "settings.smtp_host": "SMTP Host", + "settings.smtp_host_placeholder": "e.g., smtp.gmail.com", + "settings.smtp_port": "SMTP Port", + "settings.smtp_port_placeholder": "587", + "settings.smtp_port_hint": "Common ports: 25 (plain), 587 (STARTTLS), 465 (SMTPS), 2525 (alternative STARTTLS)", + "settings.smtp_auth_method": "Authentication Method", + "settings.smtp_auth_method_auto": "Auto (LOGIN preferred)", + "settings.smtp_auth_method_login": "LOGIN", + "settings.smtp_auth_method_plain": "PLAIN", + "settings.smtp_auth_method_cram_md5": "CRAM-MD5", + "settings.smtp_auth_method_hint": "LOGIN is recommended for Office365/Gmail. PLAIN is standard SMTP auth. CRAM-MD5 is challenge-response based.", + "settings.smtp_insecure_skip_verify": "Skip TLS Certificate Verification", + "settings.smtp_insecure_skip_verify_warning": "⚠️ Not recommended for production", + "settings.smtp_username": "SMTP Username", + "settings.smtp_username_placeholder": "e.g., user@example.com", + "settings.smtp_password": "SMTP Password", + "settings.smtp_password_placeholder": "Enter SMTP Password", + "settings.smtp_sender": "Sender Email", + "settings.smtp_sender_placeholder": "noreply@swissmakers.ch", + "settings.smtp_tls": "Use TLS (Recommended)", + "settings.send_test_email": "Send Test Email", + "settings.send_test_email_hint": "⚠️ Please save your SMTP settings first before sending a test email.", + "settings.fail2ban": "Global Default Fail2Ban Configurations", + "settings.fail2ban.description": "These settings will be applied to all enabled Fail2Ban servers and stored in their jail.local [DEFAULT] section.", + "settings.enable_bantime_increment": "Enable Bantime Increment", + "settings.enable_bantime_increment.description": "If set to true, the bantime will be calculated using the formula: bantime = findtime * (number of failures / maxretry) * (1 + bantime.rndtime).", + "settings.default_jail_enable": "Enable Jails by Default", + "settings.default_jail_enable.description": "If enabled, all jails will be enabled by default. When disabled, jails must be explicitly enabled.", + "settings.default_bantime": "Default Bantime", + "settings.default_bantime.description": "The number of seconds that a host is banned. Time format: 1m = 1 minutes, 1h = 1 hour, 1d = 1 day, 1w = 1 week, 1mo = 1 month, 1y = 1 year.", + "settings.default_bantime_placeholder": "e.g., 48h", + "settings.bantime_rndtime": "Bantime Rndtime", + "settings.bantime_rndtime.description": "Optional. Max random seconds added in bantime increment formula (e.g. 2048). Leave empty to use Fail2ban default.", + "settings.bantime_rndtime_placeholder": "e.g., 2048", + "settings.default_chain": "Default Chain", + "settings.default_chain.description": "iptables/nftables chain used for banning (e.g. INPUT for host, DOCKER-USER for Docker containers).", + "settings.chain_help_title": "Default chain", + "settings.chain_docker_user": "DOCKER-USER", + "settings.chain_help_docker_user": "Use for apps running in Docker. Bans apply to all containers on the host.", + "settings.chain_input": "INPUT", + "settings.chain_help_input": "Use for apps on the host. Bans apply to the host network only, not Docker networks.", + "settings.chain_forward": "FORWARD", + "settings.chain_help_forward": "Only for older Docker setups where DOCKER-USER is not available.", + "settings.banaction": "Banaction", + "settings.banaction.description": "Default banning action (e.g. nftables-multiport, nftables-allports, firewallcmd-rich-rules, etc). It is used to define action_* variables.", + "settings.banaction_allports": "Banaction Allports", + "settings.banaction_allports.description": "Banning action for all ports (e.g. nftables-allports, firewallcmd-allports, etc). Used when a jail needs to ban all ports instead of specific ones.", + "settings.default_findtime": "Default Findtime", + "settings.default_findtime.description": "A host is banned if it has generated 'maxretry' failures during the last 'findtime' seconds. Time format: 1m = 1 minutes, 1h = 1 hours, 1d = 1 days, 1w = 1 week, 1mo = 1 month, 1y = 1 year.", + "settings.default_findtime_placeholder": "e.g., 30m", + "settings.default_max_retry": "Default Max Retry", + "settings.default_max_retry.description": "Number of failures before a host gets banned.", + "settings.default_max_retry_placeholder": "Enter maximum retries", + "settings.geoip_provider": "GeoIP Provider", + "settings.geoip_provider.description": "Choose the GeoIP lookup provider. MaxMind requires a local database file, while Built-in uses a free online API.", + "settings.geoip_provider.maxmind": "MaxMind (Local Database)", + "settings.geoip_provider.builtin": "Built-in (ip-api.com)", + "settings.geoip_database_path": "GeoIP Database Path", + "settings.geoip_database_path.description": "Path to the MaxMind GeoLite2-Country database file.", + "settings.max_log_lines": "Maximum Log Lines", + "settings.max_log_lines.description": "Maximum number of log lines to include in ban notifications. Most relevant lines are selected automatically.", + "settings.ignore_ips": "Ignore IPs", + "settings.ignore_ips.description": "Space separated list of IP addresses, CIDR masks or DNS hosts. Fail2ban will not ban a host which matches an address in this list.", + "settings.ignore_ips_placeholder": "IPs to ignore, separated by spaces", + "settings.advanced.title": "Advanced Actions for Recurring Offenders", + "settings.advanced.description": "Automatically synchronize recurring offenders to an external firewall or blocklist.", + "settings.advanced.refresh_log": "Refresh Log", + "settings.advanced.test_button": "Manually Block / Test", + "settings.advanced.enable": "Enable automatic permanent blocking", + "settings.advanced.threshold": "Threshold before permanent block", + "settings.advanced.threshold_hint": "Once an IP reaches this number of bans it will be forwarded to the integration.", + "settings.advanced.integration": "Integration", + "settings.advanced.integration_none": "Select integration", + "settings.advanced.integration_hint": "Choose the firewall or appliance where permanent bans should be created.", + "settings.advanced.mikrotik.note": "Provide SSH access to your Mikrotik router and the address list that should contain blocked IPs.", + "settings.advanced.mikrotik.host": "Host", + "settings.advanced.mikrotik.port": "Port", + "settings.advanced.mikrotik.username": "SSH Username", + "settings.advanced.mikrotik.password": "SSH Password", + "settings.advanced.mikrotik.key": "SSH Key Path (optional)", + "settings.advanced.mikrotik.list": "Address List Name", + "settings.advanced.pfsense.note": "Requires the pfSense REST API package. Enter the API key and alias to manage.", + "settings.advanced.pfsense.install_link": "Install REST API Package", + "settings.advanced.pfsense.api_key_setup": "Setup API Key", + "settings.advanced.pfsense.base_url": "Base URL", + "settings.advanced.pfsense.token": "API Key", + "settings.advanced.pfsense.token_hint": "Generate in System > REST API > Keys in pfSense webConfigurator", + "settings.advanced.pfsense.alias": "Alias Name", + "settings.advanced.pfsense.skip_tls": "Skip TLS verification (self-signed)", + "settings.advanced.opnsense.note": "Enter the OPNsense API credentials and alias to manage.", + "settings.advanced.opnsense.api_docs": "API Documentation", + "settings.advanced.opnsense.api_key_setup": "Setup API Key", + "settings.advanced.opnsense.base_url": "Base URL", + "settings.advanced.opnsense.key": "API Key", + "settings.advanced.opnsense.key_hint": "Generate in System > Access > Users > API Keys", + "settings.advanced.opnsense.secret": "API Secret", + "settings.advanced.opnsense.secret_hint": "Generate together with API key", + "settings.advanced.opnsense.alias": "Alias Name", + "settings.advanced.opnsense.skip_tls": "Skip TLS verification (self-signed)", + "settings.advanced.log_title": "Permanent Block Log", + "settings.advanced.log_empty": "No permanent blocks recorded yet.", + "settings.advanced.log_ip": "IP", + "settings.advanced.log_integration": "Integration", + "settings.advanced.log_status": "Status", + "settings.advanced.log_message": "Message", + "settings.advanced.log_server": "Server", + "settings.advanced.log_updated": "Updated", + "settings.advanced.log_actions": "Actions", + "settings.advanced.unblock_btn": "Remove", + "settings.advanced.test_title": "Manually Block / Test", + "settings.advanced.test_ip": "IP address", + "settings.advanced.test_server": "Optional server", + "settings.advanced.test_server_none": "Use global integration settings", + "settings.advanced.test_block": "Block IP", + "settings.advanced.test_unblock": "Remove IP", + "settings.save": "Save", + "modal.filter_config": "Filter / Jail Configuration:", + "modal.filter_config_edit": "Edit Filter / Jail", + "modal.filter_config_label": "Filter Configuration", + "modal.filter_config_hint": "If left empty, an empty filter file will be created.", + "modal.filter_name": "Filter Name", + "modal.filter_name_hint": "Only alphanumeric characters, dashes, and underscores are allowed.", + "modal.jail_config": "Jail Configuration", + "modal.jail_config_hint": "Jail configuration will be auto-populated when you select a filter.", + "modal.jail_config_label": "Jail Configuration", + "modal.jail_filter": "Filter (optional)", + "modal.jail_filter_hint": "Selecting a filter will auto-populate the jail configuration.", + "modal.jail_name": "Jail Name", + "modal.jail_name_hint": "Only alphanumeric characters, dashes, and underscores are allowed.", + "modal.test_logpath": "Test Logpath", + "modal.local_server_logpath_note": "ℹ️ Note:", + "modal.local_server_logpath_text_prefix": "For a local fail2ban server (e.g. installed on container host system or in a container on same host), log files must also be mounted to the fail2ban-ui container (e.g.,", + "modal.local_server_logpath_text_suffix": ") this is required so that the fail2ban-ui can verify logpath variables or paths when updating jails.", + "modal.create": "Create", + "modal.create_filter": "Create New Filter", + "modal.create_filter_title": "Create New Filter", + "modal.create_jail": "Create New Jail", + "modal.create_jail_title": "Create New Jail", + "modal.cancel": "Cancel", + "modal.save": "Save", + "modal.close": "Close", + "loading": "Loading...", + "dashboard.manage_jails": "Manage Jails", + "modal.manage_jails_title": "Manage Jails", + "servers.selector.label": "Active Server", + "servers.selector.empty": "No servers configured", + "servers.selector.none": "No server configured. Please add a Fail2ban server.", + "servers.modal.title": "Manage Fail2ban Servers", + "servers.modal.description": "Register remote Fail2ban instances and choose how the UI connects to them.", + "servers.modal.list_title": "Registered Servers", + "servers.modal.list_empty": "No servers configured yet. Add your first Fail2ban server using the form on the right.", + "servers.modal.form_title": "Add or Update Server", + "servers.form.name": "Display Name", + "servers.form.name_placeholder": "My Fail2ban server", + "servers.form.type": "Connection Type", + "servers.type.local": "Local (same host)", + "servers.type.ssh": "SSH", + "servers.type.agent": "API Agent", + "servers.form.host": "Hostname / IP", + "servers.form.host_placeholder": "fail2ban.example.com", + "servers.form.port": "Port", + "servers.form.port_placeholder": "22", + "servers.form.socket_path": "Fail2ban Socket Path", + "servers.form.socket_path_placeholder": "/var/run/fail2ban/fail2ban.sock", + "servers.form.log_path": "Fail2ban Log Path", + "servers.form.log_path_placeholder": "/var/log/fail2ban.log", + "servers.form.hostname": "Server Hostname", + "servers.form.hostname_placeholder": "optional", + "servers.form.ssh_user": "SSH User", + "servers.form.ssh_user_placeholder": "sa_fail2ban", + "servers.form.ssh_key": "SSH Private Key Path", + "servers.form.ssh_key_placeholder": "/config/.ssh/id_rsa", + "servers.form.ssh_key_help": "Place your SSH private key in the /config/.ssh/ directory (mounted config volume). The key file must have permissions 600 (chmod 600). Example: /config/.ssh/id_rsa", + "servers.form.agent_url": "Agent URL", + "servers.form.agent_url_placeholder": "https://host:9443", + "servers.form.agent_secret": "Agent Secret", + "servers.form.agent_secret_placeholder": "shared secret token", + "servers.form.tags": "Tags", + "servers.form.tags_placeholder": "comma,separated,tags", + "servers.form.set_default": "Set as default server", + "servers.form.enabled": "Enable connector", + "servers.form.submit": "Save Server", + "servers.form.reset": "Reset", + "servers.form.new_server": "New Server", + "servers.form.success": "Server saved successfully.", + "servers.badge.default": "Default", + "servers.badge.enabled": "Enabled", + "servers.badge.disabled": "Disabled", + "servers.badge.restart_needed": "Restart required", + "servers.actions.edit": "Edit", + "servers.actions.set_default": "Set default", + "servers.actions.enable": "Enable", + "servers.actions.disable": "Disable", + "servers.actions.test": "Test connection", + "servers.actions.test_success": "Connection successful", + "servers.actions.test_failure": "Connection failed", + "servers.jail_local_warning": "Warning: jail.local is not managed by Fail2ban-UI. Move each jail into its own file under jail.d/ and delete jail.local so Fail2ban-UI can recreate it (hit once save on the settings page to write the file). See docs for permissions.", + "servers.actions.restart": "Restart Fail2ban", + "servers.actions.reload": "Reload Fail2ban", + "servers.actions.reload_tooltip": "For local connectors, only a configuration reload is possible via the socket connection. The container cannot restart the Fail2ban service using systemctl. To perform a full restart, run 'systemctl restart fail2ban' directly on the host system.", + "servers.actions.delete": "Delete", + "servers.actions.delete_confirm": "Delete this server entry?", + "servers.form.select_key": "Select Private Key", + "servers.form.select_key_placeholder": "Manual entry", + "servers.form.no_keys": "No SSH keys found; enter path manually", + "filter_debug.not_available": "Filter debug is only available when at least one registered Fail2ban server is enabled.", + "filter_debug.local_missing": "The local Fail2ban filter directory was not found on this host.", + "email.ban.title": "Security alert: Fail2Ban blocked a new IP-address", + "email.ban.intro": "Fail2Ban-UI detected a bad request or repeated authentication failures and automatically blocked the source-IP. Review the metadata and log excerpts below.", + "email.ban.subject.banned": "Banned", + "email.ban.subject.from": "from", + "email.ban.details.banned_ip": "Banned IP", + "email.ban.details.jail": "Jail", + "email.ban.details.hostname": "Hostname", + "email.ban.details.failed_attempts": "Failed attempts", + "email.ban.details.country": "Country", + "email.ban.details.timestamp": "Timestamp", + "email.ban.whois_title": "WHOIS footprint", + "email.ban.logs_title": "Relevant log excerpts", + "email.test.title": "Email delivery test", + "email.test.intro": "This message confirms that your SMTP configuration is working correctly and can deliver HTML formatted emails.", + "email.test.subject": "Test Email from Fail2Ban UI", + "email.test.details.recipient": "Recipient", + "email.test.details.smtp_host": "SMTP host", + "email.test.details.triggered_at": "Triggered at", + "email.test.whois_no_data": "No WHOIS lookup is executed for test emails.", + "email.test.sample_logs": "2025-01-01T12:00:00Z Sample log entry of Fail2ban-UI.", + "email.whois.no_data": "WHOIS data was not captured for this event.", + "email.logs.no_data": "No log entries were captured for this block.", + "email.footer.text": "This message was generated automatically by Fail2Ban-UI", + "email.unban.title": "IP Address Unbanned", + "email.unban.intro": "An IP address has been unbanned from a Fail2Ban jail.", + "email.unban.subject.unbanned": "Unbanned", + "email.unban.subject.from": "from", + "email.unban.details.unbanned_ip": "Unbanned IP", + "email.unban.details.jail": "Jail", + "email.unban.details.hostname": "Hostname", + "email.unban.details.country": "Country", + "email.unban.details.timestamp": "Timestamp", + "lotr.email.title": "A Dark Servant Has Been Banished", + "lotr.email.intro": "The guardians of Middle-earth have detected a threat and banished it from the realm.", + "lotr.email.you_shall_not_pass": "YOU SHALL NOT PASS", + "lotr.email.footer": "May the servers be protected. One ban to rule them all.", + "lotr.email.details.dark_servant_location": "The Dark Servant's Location", + "lotr.email.details.realm_protection": "The Realm of Protection", + "lotr.email.details.origins": "Origins from the", + "lotr.email.details.banished_at": "Banished at the", + "lotr.email.unban.title": "The held prisoner has been released", + "lotr.email.unban.intro": "The guardians of Middle-earth have restored access to the realm.", + "lotr.email.unban.details.restored_ip": "Restored IP", + "lotr.banished": "Banished from the realm", + "lotr.realms_protected": "Realms Protected", + "lotr.threats_banished": "Threats Banished", + "toast.ban.title": "New block occurred", + "toast.ban.action": "banned in", + "toast.unban.title": "IP unblocked", + "toast.unban.action": "unblocked from", + "auth.login_title": "Sign in to Fail2ban UI", + "auth.login_description": "Please authenticate to access the management interface", + "auth.login_button": "Sign in with OIDC", + "auth.logging_in": "Redirecting to login...", + "auth.logout": "Logout", + "auth.user_info": "User Information", + "auth.session_expired": "Your session has expired. Please log in again.", + "auth.login_required": "Authentication required", + "footer.version": "Fail2ban-UI v{version}", + "footer.latest": "Latest", + "footer.update_available": "Update available: v{version}" +} diff --git a/internal/locales/es.json b/internal/locales/es.json index 286349c..d3f1acb 100644 --- a/internal/locales/es.json +++ b/internal/locales/es.json @@ -77,31 +77,31 @@ "logs.table.count": "Cantidad", "logs.table.jail": "Jail", "logs.table.ip": "IP", - "logs.table.time": "Hora", - "logs.table.country": "País", - "logs.table.actions": "Acciones", - "logs.actions.whois": "Whois", - "logs.actions.logs": "Registros", - "logs.search.label": "Buscar eventos", - "logs.search.placeholder": "Busca IP, jail o servidor", - "logs.search.country_label": "País", - "logs.search.country_all": "Todos los países", - "logs.search.country_unknown": "Desconocido", - "logs.badge.recurring": "Recurrente", - "logs.modal.whois_title": "Información Whois", - "logs.modal.logs_title": "Registros", - "logs.modal.jail": "Jail", - "logs.modal.insights_title": "Información de bloqueos", - "logs.modal.insights_description": "Distribución por país y atacantes recurrentes.", - "logs.modal.insights_countries": "Bloqueos por país", - "logs.modal.insights_countries_empty": "No se registraron bloqueos en este periodo.", + "logs.table.time": "Hora", + "logs.table.country": "País", + "logs.table.actions": "Acciones", + "logs.actions.whois": "Whois", + "logs.actions.logs": "Registros", + "logs.search.label": "Buscar eventos", + "logs.search.placeholder": "Busca IP, jail o servidor", + "logs.search.country_label": "País", + "logs.search.country_all": "Todos los países", + "logs.search.country_unknown": "Desconocido", + "logs.badge.recurring": "Recurrente", + "logs.modal.whois_title": "Información Whois", + "logs.modal.logs_title": "Registros", + "logs.modal.jail": "Jail", + "logs.modal.insights_title": "Información de bloqueos", + "logs.modal.insights_description": "Distribución por país y atacantes recurrentes.", + "logs.modal.insights_countries": "Bloqueos por país", + "logs.modal.insights_countries_empty": "No se registraron bloqueos en este periodo.", "logs.modal.insights_countries_hint": "Principales orígenes en el período seleccionado.", "logs.modal.insights_recurring_hint": "IPs que activan Fail2ban de forma recurrente.", "logs.modal.total_overall_note": "Bloqueos acumulados", "logs.modal.total_today_note": "Últimas 24 horas", "logs.modal.total_week_note": "Actividad semanal", - "logs.modal.insights_recurring": "IPs recurrentes", - "logs.modal.insights_recurring_empty": "No se detectaron IPs recurrentes.", + "logs.modal.insights_recurring": "IPs recurrentes", + "logs.modal.insights_recurring_empty": "No se detectaron IPs recurrentes.", "filter_debug.title": "Depuración de filtros", "filter_debug.select_filter": "Selecciona un filtro", "filter_debug.filter_content": "Contenido del filtro", @@ -131,6 +131,8 @@ "settings.callback_url": "URL de retorno de Fail2ban", "settings.callback_url_placeholder": "http://127.0.0.1:8080", "settings.callback_url_hint": "Esta URL es utilizada por todas las instancias de Fail2Ban para enviar alertas de bloqueo a Fail2Ban UI. Para implementaciones locales, use el mismo puerto que Fail2Ban UI (ej. http://127.0.0.1:8080). Para configuraciones de proxy inverso, use su endpoint cifrado TLS (ej. https://fail2ban.example.com).", + "settings.callback_url_env_set": "La URL de callback está configurada mediante la variable de entorno CALLBACK_URL:", + "settings.callback_url_env_hint": "Para cambiar la URL de callback mediante la interfaz web, elimine la variable de entorno CALLBACK_URL y reinicie el contenedor.", "settings.callback_secret": "Secret de URL de Callback de Fail2ban", "settings.callback_secret_placeholder": "Secret de 42 caracteres generado automáticamente", "settings.callback_secret.description": "Este secret se genera automáticamente y se utiliza para autenticar las solicitudes de notificación de bloqueo. Está incluido en la configuración de acción de fail2ban.", @@ -347,67 +349,67 @@ "servers.form.select_key": "Seleccionar clave privada", "servers.form.select_key_placeholder": "Entrada manual", "servers.form.no_keys": "No se encontraron claves SSH; introduzca la ruta manualmente", - "filter_debug.not_available": "La depuración de filtros solo está disponible cuando al menos un servidor Fail2ban registrado está activado.", - "filter_debug.local_missing": "No se encontró el directorio de filtros local de Fail2ban en este host.", - "email.ban.title": "Alerta de seguridad: Fail2Ban bloqueó una nueva dirección IP", - "email.ban.intro": "Fail2Ban-UI detectó una solicitud incorrecta o fallos de autenticación repetidos y bloqueó automáticamente la IP de origen. Revise los metadatos y extractos de registro a continuación.", - "email.ban.subject.banned": "Bloqueado", - "email.ban.subject.from": "desde", - "email.ban.details.banned_ip": "IP bloqueada", - "email.ban.details.jail": "Jail", - "email.ban.details.hostname": "Nombre de host", - "email.ban.details.failed_attempts": "Intentos fallidos", - "email.ban.details.country": "País", - "email.ban.details.timestamp": "Marca de tiempo", - "email.ban.whois_title": "Huella WHOIS", - "email.ban.logs_title": "Extractos de registro relevantes", - "email.test.title": "Prueba de entrega de correo electrónico", - "email.test.intro": "Este mensaje confirma que su configuración SMTP funciona correctamente y puede entregar correos electrónicos con formato HTML.", - "email.test.subject": "Correo de prueba de Fail2Ban UI", - "email.test.details.recipient": "Destinatario", - "email.test.details.smtp_host": "Host SMTP", - "email.test.details.triggered_at": "Activado en", - "email.test.whois_no_data": "No se ejecuta búsqueda WHOIS para correos de prueba.", - "email.test.sample_logs": "2025-01-01T12:00:00Z Entrada de registro de ejemplo de Fail2ban-UI.", - "email.whois.no_data": "No se capturaron datos WHOIS para este evento.", - "email.logs.no_data": "No se capturaron entradas de registro para este bloqueo.", - "email.footer.text": "Este mensaje fue generado automáticamente por Fail2Ban-UI", - "email.unban.title": "Dirección IP desbloqueada", - "email.unban.intro": "Una dirección IP ha sido desbloqueada de una prisión Fail2Ban.", - "email.unban.subject.unbanned": "Desbloqueado", - "email.unban.subject.from": "de", - "email.unban.details.unbanned_ip": "IP desbloqueada", - "email.unban.details.jail": "Prisión", - "email.unban.details.hostname": "Nombre de host", - "email.unban.details.country": "País", - "email.unban.details.timestamp": "Marca de tiempo", - "lotr.email.title": "Un siervo oscuro ha sido desterrado", - "lotr.email.intro": "Los guardianes de la Tierra Media han detectado una amenaza y la han desterrado del reino.", - "lotr.email.you_shall_not_pass": "NO PASARÁS", - "lotr.email.footer": "Que los servidores estén protegidos. Un ban para gobernarlos a todos.", - "lotr.email.details.dark_servant_location": "La ubicación del siervo oscuro", - "lotr.email.details.realm_protection": "El reino de la protección", - "lotr.email.details.origins": "Orígenes de las", - "lotr.email.details.banished_at": "Desterrado a las", - "lotr.email.unban.title": "El prisionero detenido ha sido liberado", - "lotr.email.unban.intro": "Los guardianes de la Tierra Media han restaurado el acceso al reino.", - "lotr.email.unban.details.restored_ip": "IP restaurada", - "lotr.banished": "Desterrado del reino", - "lotr.realms_protected": "Reinos protegidos", - "lotr.threats_banished": "Amenazas desterradas", - "toast.ban.title": "Nuevo bloqueo ocurrido", - "toast.ban.action": "bloqueado en", - "toast.unban.title": "IP desbloqueada", - "toast.unban.action": "desbloqueada de", - "auth.login_title": "Iniciar sesión en Fail2ban UI", - "auth.login_description": "Por favor, autentíquese para acceder a la interfaz de gestión", - "auth.login_button": "Iniciar sesión con OIDC", - "auth.logging_in": "Redirigiendo al inicio de sesión...", - "auth.logout": "Cerrar sesión", - "auth.user_info": "Información del usuario", - "auth.session_expired": "Su sesión ha expirado. Por favor, inicie sesión nuevamente.", - "auth.login_required": "Autenticación requerida", - "footer.version": "Fail2ban-UI v{version}", - "footer.latest": "Actual", - "footer.update_available": "Actualización disponible: v{version}" - } + "filter_debug.not_available": "La depuración de filtros solo está disponible cuando al menos un servidor Fail2ban registrado está activado.", + "filter_debug.local_missing": "No se encontró el directorio de filtros local de Fail2ban en este host.", + "email.ban.title": "Alerta de seguridad: Fail2Ban bloqueó una nueva dirección IP", + "email.ban.intro": "Fail2Ban-UI detectó una solicitud incorrecta o fallos de autenticación repetidos y bloqueó automáticamente la IP de origen. Revise los metadatos y extractos de registro a continuación.", + "email.ban.subject.banned": "Bloqueado", + "email.ban.subject.from": "desde", + "email.ban.details.banned_ip": "IP bloqueada", + "email.ban.details.jail": "Jail", + "email.ban.details.hostname": "Nombre de host", + "email.ban.details.failed_attempts": "Intentos fallidos", + "email.ban.details.country": "País", + "email.ban.details.timestamp": "Marca de tiempo", + "email.ban.whois_title": "Huella WHOIS", + "email.ban.logs_title": "Extractos de registro relevantes", + "email.test.title": "Prueba de entrega de correo electrónico", + "email.test.intro": "Este mensaje confirma que su configuración SMTP funciona correctamente y puede entregar correos electrónicos con formato HTML.", + "email.test.subject": "Correo de prueba de Fail2Ban UI", + "email.test.details.recipient": "Destinatario", + "email.test.details.smtp_host": "Host SMTP", + "email.test.details.triggered_at": "Activado en", + "email.test.whois_no_data": "No se ejecuta búsqueda WHOIS para correos de prueba.", + "email.test.sample_logs": "2025-01-01T12:00:00Z Entrada de registro de ejemplo de Fail2ban-UI.", + "email.whois.no_data": "No se capturaron datos WHOIS para este evento.", + "email.logs.no_data": "No se capturaron entradas de registro para este bloqueo.", + "email.footer.text": "Este mensaje fue generado automáticamente por Fail2Ban-UI", + "email.unban.title": "Dirección IP desbloqueada", + "email.unban.intro": "Una dirección IP ha sido desbloqueada de una prisión Fail2Ban.", + "email.unban.subject.unbanned": "Desbloqueado", + "email.unban.subject.from": "de", + "email.unban.details.unbanned_ip": "IP desbloqueada", + "email.unban.details.jail": "Prisión", + "email.unban.details.hostname": "Nombre de host", + "email.unban.details.country": "País", + "email.unban.details.timestamp": "Marca de tiempo", + "lotr.email.title": "Un siervo oscuro ha sido desterrado", + "lotr.email.intro": "Los guardianes de la Tierra Media han detectado una amenaza y la han desterrado del reino.", + "lotr.email.you_shall_not_pass": "NO PASARÁS", + "lotr.email.footer": "Que los servidores estén protegidos. Un ban para gobernarlos a todos.", + "lotr.email.details.dark_servant_location": "La ubicación del siervo oscuro", + "lotr.email.details.realm_protection": "El reino de la protección", + "lotr.email.details.origins": "Orígenes de las", + "lotr.email.details.banished_at": "Desterrado a las", + "lotr.email.unban.title": "El prisionero detenido ha sido liberado", + "lotr.email.unban.intro": "Los guardianes de la Tierra Media han restaurado el acceso al reino.", + "lotr.email.unban.details.restored_ip": "IP restaurada", + "lotr.banished": "Desterrado del reino", + "lotr.realms_protected": "Reinos protegidos", + "lotr.threats_banished": "Amenazas desterradas", + "toast.ban.title": "Nuevo bloqueo ocurrido", + "toast.ban.action": "bloqueado en", + "toast.unban.title": "IP desbloqueada", + "toast.unban.action": "desbloqueada de", + "auth.login_title": "Iniciar sesión en Fail2ban UI", + "auth.login_description": "Por favor, autentíquese para acceder a la interfaz de gestión", + "auth.login_button": "Iniciar sesión con OIDC", + "auth.logging_in": "Redirigiendo al inicio de sesión...", + "auth.logout": "Cerrar sesión", + "auth.user_info": "Información del usuario", + "auth.session_expired": "Su sesión ha expirado. Por favor, inicie sesión nuevamente.", + "auth.login_required": "Autenticación requerida", + "footer.version": "Fail2ban-UI v{version}", + "footer.latest": "Actual", + "footer.update_available": "Actualización disponible: v{version}" +} diff --git a/internal/locales/fr.json b/internal/locales/fr.json index 8dd2612..700319e 100644 --- a/internal/locales/fr.json +++ b/internal/locales/fr.json @@ -77,31 +77,31 @@ "logs.table.count": "Nombre", "logs.table.jail": "Jail", "logs.table.ip": "IP", - "logs.table.time": "Heure", - "logs.table.country": "Pays", - "logs.table.actions": "Actions", - "logs.actions.whois": "Whois", - "logs.actions.logs": "Journaux", - "logs.search.label": "Rechercher des événements", - "logs.search.placeholder": "Rechercher IP, jail ou serveur", - "logs.search.country_label": "Pays", - "logs.search.country_all": "Tous les pays", - "logs.search.country_unknown": "Inconnu", - "logs.badge.recurring": "Récurrent", - "logs.modal.whois_title": "Informations Whois", - "logs.modal.logs_title": "Journaux", - "logs.modal.jail": "Jail", - "logs.modal.insights_title": "Aperçu des blocages", - "logs.modal.insights_description": "Répartition par pays et IP récurrentes.", - "logs.modal.insights_countries": "Blocages par pays", - "logs.modal.insights_countries_empty": "Aucun blocage enregistré pour cette période.", + "logs.table.time": "Heure", + "logs.table.country": "Pays", + "logs.table.actions": "Actions", + "logs.actions.whois": "Whois", + "logs.actions.logs": "Journaux", + "logs.search.label": "Rechercher des événements", + "logs.search.placeholder": "Rechercher IP, jail ou serveur", + "logs.search.country_label": "Pays", + "logs.search.country_all": "Tous les pays", + "logs.search.country_unknown": "Inconnu", + "logs.badge.recurring": "Récurrent", + "logs.modal.whois_title": "Informations Whois", + "logs.modal.logs_title": "Journaux", + "logs.modal.jail": "Jail", + "logs.modal.insights_title": "Aperçu des blocages", + "logs.modal.insights_description": "Répartition par pays et IP récurrentes.", + "logs.modal.insights_countries": "Blocages par pays", + "logs.modal.insights_countries_empty": "Aucun blocage enregistré pour cette période.", "logs.modal.insights_countries_hint": "Principales origines pour la période sélectionnée.", "logs.modal.insights_recurring_hint": "Adresses IP déclenchant Fail2ban à répétition.", "logs.modal.total_overall_note": "Blocages enregistrés depuis l'origine", "logs.modal.total_today_note": "Dernières 24 heures", "logs.modal.total_week_note": "Activité hebdomadaire", - "logs.modal.insights_recurring": "IPs récurrentes", - "logs.modal.insights_recurring_empty": "Aucune IP récurrente détectée.", + "logs.modal.insights_recurring": "IPs récurrentes", + "logs.modal.insights_recurring_empty": "Aucune IP récurrente détectée.", "filter_debug.title": "Débogage des filtres", "filter_debug.select_filter": "Sélectionnez un filtre", "filter_debug.filter_content": "Contenu du filtre", @@ -131,6 +131,8 @@ "settings.callback_url": "URL de rappel Fail2ban", "settings.callback_url_placeholder": "http://127.0.0.1:8080", "settings.callback_url_hint": "Cette URL est utilisée par toutes les instances Fail2Ban pour envoyer les alertes de bannissement à Fail2Ban UI. Pour les déploiements locaux, utilisez le même port que Fail2Ban UI (p. ex. http://127.0.0.1:8080). Pour les configurations de reverse proxy, utilisez votre point de terminaison chiffré TLS (p. ex. https://fail2ban.example.com).", + "settings.callback_url_env_set": "L'URL de callback est définie via la variable d'environnement CALLBACK_URL :", + "settings.callback_url_env_hint": "Pour modifier l'URL de callback via l'interface Web, supprimez la variable d'environnement CALLBACK_URL et redémarrez le conteneur.", "settings.callback_secret": "Secret d'URL de Callback Fail2ban", "settings.callback_secret_placeholder": "Secret de 42 caractères généré automatiquement", "settings.callback_secret.description": "Ce secret est généré automatiquement et utilisé pour authentifier les demandes de notification de bannissement. Il est inclus dans la configuration d'action de fail2ban.", @@ -347,28 +349,28 @@ "servers.form.select_key": "Sélectionner la clé privée", "servers.form.select_key_placeholder": "Saisie manuelle", "servers.form.no_keys": "Aucune clé SSH trouvée ; saisissez le chemin manuellement", - "filter_debug.not_available": "Le débogage des filtres n'est disponible que lorsqu'au moins un serveur Fail2ban enregistré est activé.", - "filter_debug.local_missing": "Le répertoire de filtres Fail2ban local est introuvable sur cet hôte.", - "email.ban.title": "Alerte de sécurité : Fail2Ban a bloqué une nouvelle adresse IP", - "email.ban.intro": "Fail2Ban-UI a détecté une requête suspecte ou des échecs d'authentification répétés et a automatiquement bloqué l'IP source. Consultez les métadonnées et extraits de journaux ci-dessous.", - "email.ban.subject.banned": "Bloqué", - "email.ban.subject.from": "depuis", - "email.ban.details.banned_ip": "IP bloquée", - "email.ban.details.jail": "Jail", - "email.ban.details.hostname": "Nom d'hôte", - "email.ban.details.failed_attempts": "Tentatives échouées", - "email.ban.details.country": "Pays", - "email.ban.details.timestamp": "Horodatage", - "email.ban.whois_title": "Empreinte WHOIS", - "email.ban.logs_title": "Extraits de journaux pertinents", - "email.test.title": "Test de livraison d'email", - "email.test.intro": "Ce message confirme que votre configuration SMTP fonctionne correctement et peut livrer des emails formatés en HTML.", - "email.test.subject": "Email de test de Fail2Ban UI", - "email.test.details.recipient": "Destinataire", - "email.test.details.smtp_host": "Hôte SMTP", - "email.test.details.triggered_at": "Déclenché à", - "email.test.whois_no_data": "Aucune recherche WHOIS n'est exécutée pour les emails de test.", - "email.test.sample_logs": "2025-01-01T12:00:00Z Entrée de journal d'exemple de Fail2ban-UI.", + "filter_debug.not_available": "Le débogage des filtres n'est disponible que lorsqu'au moins un serveur Fail2ban enregistré est activé.", + "filter_debug.local_missing": "Le répertoire de filtres Fail2ban local est introuvable sur cet hôte.", + "email.ban.title": "Alerte de sécurité : Fail2Ban a bloqué une nouvelle adresse IP", + "email.ban.intro": "Fail2Ban-UI a détecté une requête suspecte ou des échecs d'authentification répétés et a automatiquement bloqué l'IP source. Consultez les métadonnées et extraits de journaux ci-dessous.", + "email.ban.subject.banned": "Bloqué", + "email.ban.subject.from": "depuis", + "email.ban.details.banned_ip": "IP bloquée", + "email.ban.details.jail": "Jail", + "email.ban.details.hostname": "Nom d'hôte", + "email.ban.details.failed_attempts": "Tentatives échouées", + "email.ban.details.country": "Pays", + "email.ban.details.timestamp": "Horodatage", + "email.ban.whois_title": "Empreinte WHOIS", + "email.ban.logs_title": "Extraits de journaux pertinents", + "email.test.title": "Test de livraison d'email", + "email.test.intro": "Ce message confirme que votre configuration SMTP fonctionne correctement et peut livrer des emails formatés en HTML.", + "email.test.subject": "Email de test de Fail2Ban UI", + "email.test.details.recipient": "Destinataire", + "email.test.details.smtp_host": "Hôte SMTP", + "email.test.details.triggered_at": "Déclenché à", + "email.test.whois_no_data": "Aucune recherche WHOIS n'est exécutée pour les emails de test.", + "email.test.sample_logs": "2025-01-01T12:00:00Z Entrée de journal d'exemple de Fail2ban-UI.", "email.whois.no_data": "Les données WHOIS n'ont pas été capturées pour cet événement.", "email.logs.no_data": "Aucune entrée de journal n'a été capturée pour ce blocage.", "email.footer.text": "Ce message a été généré automatiquement par Fail2Ban-UI", diff --git a/internal/locales/it.json b/internal/locales/it.json index 48cc444..ba59e95 100644 --- a/internal/locales/it.json +++ b/internal/locales/it.json @@ -77,31 +77,31 @@ "logs.table.count": "Conteggio", "logs.table.jail": "Jail", "logs.table.ip": "IP", - "logs.table.time": "Ora", - "logs.table.country": "Paese", - "logs.table.actions": "Azioni", - "logs.actions.whois": "Whois", - "logs.actions.logs": "Log", - "logs.search.label": "Cerca eventi", - "logs.search.placeholder": "Cerca IP, jail o server", - "logs.search.country_label": "Paese", - "logs.search.country_all": "Tutti i paesi", - "logs.search.country_unknown": "Sconosciuto", - "logs.badge.recurring": "Ricorrente", - "logs.modal.whois_title": "Informazioni Whois", - "logs.modal.logs_title": "Log", - "logs.modal.jail": "Jail", - "logs.modal.insights_title": "Statistiche blocchi", - "logs.modal.insights_description": "Distribuzione per paese e IP ricorrenti.", - "logs.modal.insights_countries": "Blocchi per paese", - "logs.modal.insights_countries_empty": "Nessun blocco registrato per questo periodo.", + "logs.table.time": "Ora", + "logs.table.country": "Paese", + "logs.table.actions": "Azioni", + "logs.actions.whois": "Whois", + "logs.actions.logs": "Log", + "logs.search.label": "Cerca eventi", + "logs.search.placeholder": "Cerca IP, jail o server", + "logs.search.country_label": "Paese", + "logs.search.country_all": "Tutti i paesi", + "logs.search.country_unknown": "Sconosciuto", + "logs.badge.recurring": "Ricorrente", + "logs.modal.whois_title": "Informazioni Whois", + "logs.modal.logs_title": "Log", + "logs.modal.jail": "Jail", + "logs.modal.insights_title": "Statistiche blocchi", + "logs.modal.insights_description": "Distribuzione per paese e IP ricorrenti.", + "logs.modal.insights_countries": "Blocchi per paese", + "logs.modal.insights_countries_empty": "Nessun blocco registrato per questo periodo.", "logs.modal.insights_countries_hint": "Origini principali per l'intervallo selezionato.", "logs.modal.insights_recurring_hint": "IP che attivano ripetutamente Fail2ban.", "logs.modal.total_overall_note": "Blocchi totali registrati", "logs.modal.total_today_note": "Ultime 24 ore", "logs.modal.total_week_note": "Attività settimanale", - "logs.modal.insights_recurring": "IP ricorrenti", - "logs.modal.insights_recurring_empty": "Nessun IP ricorrente rilevato.", + "logs.modal.insights_recurring": "IP ricorrenti", + "logs.modal.insights_recurring_empty": "Nessun IP ricorrente rilevato.", "filter_debug.title": "Debug Filtro", "filter_debug.select_filter": "Seleziona un filtro", "filter_debug.filter_content": "Contenuto del filtro", @@ -131,6 +131,8 @@ "settings.callback_url": "URL di callback Fail2ban", "settings.callback_url_placeholder": "http://127.0.0.1:8080", "settings.callback_url_hint": "Questo URL viene utilizzato da tutte le istanze Fail2Ban per inviare gli avvisi di ban a Fail2Ban UI. Per le distribuzioni locali, utilizzare la stessa porta di Fail2Ban UI (es. http://127.0.0.1:8080). Per le configurazioni di reverse proxy, utilizzare il proprio endpoint crittografato TLS (es. https://fail2ban.example.com).", + "settings.callback_url_env_set": "L'URL di callback è impostato tramite la variabile d'ambiente CALLBACK_URL:", + "settings.callback_url_env_hint": "Per modificare l'URL di callback tramite l'interfaccia Web, rimuovere la variabile d'ambiente CALLBACK_URL e riavviare il contenitore.", "settings.callback_secret": "Secret URL di Callback Fail2ban", "settings.callback_secret_placeholder": "Secret di 42 caratteri generato automaticamente", "settings.callback_secret.description": "Questo secret viene generato automaticamente e utilizzato per autenticare le richieste di notifica di ban. È incluso nella configurazione dell'azione di fail2ban.", @@ -347,28 +349,28 @@ "servers.form.select_key": "Seleziona chiave privata", "servers.form.select_key_placeholder": "Inserimento manuale", "servers.form.no_keys": "Nessuna chiave SSH trovata; inserire il percorso manualmente", - "filter_debug.not_available": "Il debug dei filtri è disponibile solo quando almeno un server Fail2ban registrato è attivato.", - "filter_debug.local_missing": "La directory dei filtri Fail2ban locale non è stata trovata su questo host.", - "email.ban.title": "Allerta di sicurezza: Fail2Ban ha bloccato un nuovo indirizzo IP", - "email.ban.intro": "Fail2Ban-UI ha rilevato una richiesta sospetta o ripetuti fallimenti di autenticazione e ha automaticamente bloccato l'IP sorgente. Rivedere i metadati e gli estratti di log di seguito.", - "email.ban.subject.banned": "Bloccato", - "email.ban.subject.from": "da", - "email.ban.details.banned_ip": "IP bloccato", - "email.ban.details.jail": "Jail", - "email.ban.details.hostname": "Nome host", - "email.ban.details.failed_attempts": "Tentativi falliti", - "email.ban.details.country": "Paese", - "email.ban.details.timestamp": "Timestamp", - "email.ban.whois_title": "Impronta WHOIS", - "email.ban.logs_title": "Estratti di log rilevanti", - "email.test.title": "Test di consegna email", - "email.test.intro": "Questo messaggio conferma che la configurazione SMTP funziona correttamente e può consegnare email formattate in HTML.", - "email.test.subject": "Email di test da Fail2Ban UI", - "email.test.details.recipient": "Destinatario", - "email.test.details.smtp_host": "Host SMTP", - "email.test.details.triggered_at": "Attivato alle", - "email.test.whois_no_data": "Nessuna ricerca WHOIS viene eseguita per le email di test.", - "email.test.sample_logs": "2025-01-01T12:00:00Z Voce di log di esempio di Fail2ban-UI.", + "filter_debug.not_available": "Il debug dei filtri è disponibile solo quando almeno un server Fail2ban registrato è attivato.", + "filter_debug.local_missing": "La directory dei filtri Fail2ban locale non è stata trovata su questo host.", + "email.ban.title": "Allerta di sicurezza: Fail2Ban ha bloccato un nuovo indirizzo IP", + "email.ban.intro": "Fail2Ban-UI ha rilevato una richiesta sospetta o ripetuti fallimenti di autenticazione e ha automaticamente bloccato l'IP sorgente. Rivedere i metadati e gli estratti di log di seguito.", + "email.ban.subject.banned": "Bloccato", + "email.ban.subject.from": "da", + "email.ban.details.banned_ip": "IP bloccato", + "email.ban.details.jail": "Jail", + "email.ban.details.hostname": "Nome host", + "email.ban.details.failed_attempts": "Tentativi falliti", + "email.ban.details.country": "Paese", + "email.ban.details.timestamp": "Timestamp", + "email.ban.whois_title": "Impronta WHOIS", + "email.ban.logs_title": "Estratti di log rilevanti", + "email.test.title": "Test di consegna email", + "email.test.intro": "Questo messaggio conferma che la configurazione SMTP funziona correttamente e può consegnare email formattate in HTML.", + "email.test.subject": "Email di test da Fail2Ban UI", + "email.test.details.recipient": "Destinatario", + "email.test.details.smtp_host": "Host SMTP", + "email.test.details.triggered_at": "Attivato alle", + "email.test.whois_no_data": "Nessuna ricerca WHOIS viene eseguita per le email di test.", + "email.test.sample_logs": "2025-01-01T12:00:00Z Voce di log di esempio di Fail2ban-UI.", "email.whois.no_data": "I dati WHOIS non sono stati acquisiti per questo evento.", "email.logs.no_data": "Nessuna voce di log è stata acquisita per questo blocco.", "email.footer.text": "Questo messaggio è stato generato automaticamente da Fail2Ban-UI",