chore: clean .gitignore cache

This commit is contained in:
GitHub Actions
2026-01-26 19:21:33 +00:00
parent 1b1b3a70b1
commit e5f0fec5db
1483 changed files with 0 additions and 472793 deletions
-989
View File
@@ -1,989 +0,0 @@
{
"common": {
"save": "Speichern",
"cancel": "Abbrechen",
"delete": "Löschen",
"edit": "Bearbeiten",
"add": "Hinzufügen",
"create": "Erstellen",
"update": "Aktualisieren",
"close": "Schließen",
"confirm": "Bestätigen",
"back": "Zurück",
"next": "Weiter",
"loading": "Laden...",
"error": "Fehler",
"success": "Erfolg",
"warning": "Warnung",
"info": "Information",
"yes": "Ja",
"no": "Nein",
"enabled": "Aktiviert",
"disabled": "Deaktiviert",
"name": "Name",
"description": "Beschreibung",
"actions": "Aktionen",
"status": "Status",
"search": "Suchen",
"filter": "Filtern",
"settings": "Einstellungen",
"language": "Sprache",
"configure": "Konfigurieren",
"test": "Testen",
"docs": "Dokumentation",
"upload": "Hochladen",
"active": "Aktiv",
"type": "Typ",
"rules": "Regeln",
"allow": "Erlauben",
"deny": "Ablehnen",
"saveConfiguration": "Konfiguration speichern",
"enabledCount": "{{count}} aktiviert",
"validCount": "{{count}} gültig",
"activeCount": "{{count}} aktiv",
"noHistoryAvailable": "Kein Verlauf verfügbar",
"autoRefreshing": "Automatische Aktualisierung alle {{seconds}}s",
"score": "Bewertung"
},
"navigation": {
"dashboard": "Dashboard",
"proxyHosts": "Proxy-Hosts",
"remoteServers": "Remote-Server",
"domains": "Domänen",
"certificates": "Zertifikate",
"dns": "DNS",
"dnsProviders": "DNS-Anbieter",
"plugins": "Plugins",
"security": "Sicherheit",
"accessLists": "Zugriffslisten",
"crowdsec": "CrowdSec",
"rateLimiting": "Ratenbegrenzung",
"waf": "WAF",
"uptime": "Verfügbarkeit",
"notifications": "Benachrichtigungen",
"users": "Benutzer",
"tasks": "Aufgaben",
"settings": "Einstellungen",
"system": "System",
"email": "E-Mail (SMTP)",
"adminAccount": "Admin-Konto",
"accountManagement": "Kontoverwaltung",
"import": "Importieren",
"caddyfile": "Caddyfile",
"backups": "Sicherungen",
"logs": "Protokolle",
"securityHeaders": "Sicherheits-Header",
"expandSidebar": "Seitenleiste erweitern",
"collapseSidebar": "Seitenleiste einklappen"
},
"dashboard": {
"title": "Dashboard",
"description": "Übersicht Ihres Charon-Reverse-Proxys",
"proxyHosts": "Proxy-Hosts",
"remoteServers": "Remote-Server",
"certificates": "Zertifikate",
"accessLists": "Zugriffslisten",
"systemStatus": "Systemstatus",
"healthy": "Gesund",
"unhealthy": "Ungesund",
"pendingCertificates": "Ausstehende Zertifikate",
"allCertificatesValid": "Alle Zertifikate gültig",
"activeHosts": "{{count}} aktiv",
"activeServers": "{{count}} aktiv",
"activeLists": "{{count}} aktiv",
"validCerts": "{{count}} gültig"
},
"settings": {
"title": "Einstellungen",
"description": "Konfigurieren Sie Ihre Charon-Instanz",
"system": "System",
"smtp": "E-Mail (SMTP)",
"account": "Konto",
"language": "Sprache",
"languageDescription": "Wählen Sie Ihre bevorzugte Sprache",
"theme": "Design",
"themeDescription": "Wählen Sie helles oder dunkles Design"
},
"proxyHosts": {
"title": "Proxy-Hosts",
"description": "Verwalten Sie Ihre Reverse-Proxy-Konfigurationen",
"addHost": "Proxy-Host hinzufügen",
"editHost": "Proxy-Host bearbeiten",
"deleteHost": "Proxy-Host löschen",
"domainNames": "Domänennamen",
"forwardHost": "Weiterleitungs-Host",
"forwardPort": "Weiterleitungs-Port",
"sslEnabled": "SSL aktiviert",
"sslForced": "SSL erzwingen",
"columnName": "Name",
"columnDomain": "Domäne",
"columnForwardTo": "Weiterleiten an",
"columnSSL": "SSL",
"columnFeatures": "Funktionen",
"columnStatus": "Status",
"columnActions": "Aktionen",
"unnamed": "Unbenannt",
"staging": "Staging",
"websocket": "WS",
"acl": "ACL",
"noHosts": "Keine Proxy-Hosts",
"noHostsDescription": "Erstellen Sie Ihren ersten Proxy-Host, um den Datenverkehr zu Ihren Diensten weiterzuleiten.",
"selectedCount": "{{count}} Host(s) ausgewählt",
"selectedCountAll": "(alle)",
"bulkApply": "Massenanwendung",
"manageACL": "ACL verwalten",
"deleteConfirmTitle": "Proxy-Host löschen?",
"deleteConfirmMessage": "Sind Sie sicher, dass Sie <strong>{{name}}</strong> löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"bulkApplyTitle": "Einstellungen massenhaft anwenden",
"bulkApplyDescription": "Einstellungen auf <strong>{{count}}</strong> ausgewählte(n) Host(s) anwenden",
"applyACLTitle": "Zugriffsliste anwenden",
"applyACLDescription": "Anwendung auf <strong>{{count}}</strong> ausgewählte(n) Host(s). Jeder Proxy-Host kann eine einzelne Zugriffskontrollliste haben.",
"applyACL": "ACL anwenden",
"removeACL": "ACL entfernen",
"selectedACLCount": "{{selected}} von {{total}} ausgewählt",
"selectAll": "Alle auswählen",
"clear": "Löschen",
"noEnabledACLs": "Keine aktivierten Zugriffslisten verfügbar",
"removeACLWarning": "Dies entfernt die Zugriffsliste von allen {{count}} ausgewählten Host(s).",
"publicAccessWarning": "Die Hosts werden öffentlich zugänglich.",
"applyingACLs": "ACLs werden angewendet... ({{current}}/{{total}})",
"bulkDeleteTitle": "{{count}} Proxy-Host(s) löschen?",
"bulkDeleteDescription": "Diese Aktion kann nicht rückgängig gemacht werden. Vor dem Löschen wird automatisch eine Sicherung erstellt.",
"hostsToDelete": "Zu löschende Hosts:",
"backupInfo": "Vor dem Löschen wird automatisch eine Sicherung erstellt. Sie können bei Bedarf von der Sicherungsseite wiederherstellen.",
"creatingBackup": "Sicherung wird erstellt...",
"deletePermanently": "Dauerhaft löschen",
"ferryingNewHost": "Neuen Host übersetzen...",
"ferryingNewHostSub": "Charon überquert den Styx",
"guidingChanges": "Änderungen führen...",
"guidingChangesSub": "Konfiguration unterwegs",
"returningToShore": "Zum Ufer zurückkehren...",
"returningToShoreSub": "Host-Abfahrt läuft",
"ferryingSouls": "{{count}} Seelen übersetzen...",
"ferryingSoulsSub": "Massenoperation überquert den Fluss",
"ferryingConfig": "Konfiguration übersetzen...",
"sslForce": "SSL erzwingen",
"http2Support": "HTTP/2-Unterstützung",
"hstsEnabled": "HSTS aktiviert",
"hstsSubdomains": "HSTS-Subdomains",
"blockExploits": "Exploits blockieren",
"websocketSupport": "WebSocket-Unterstützung",
"apply": "Anwenden",
"applyCount": "Anwenden ({{count}})",
"bulkApplySecurityHeaders": "Sicherheitsheader-Profil",
"bulkApplySecurityHeadersHelp": "Ein Sicherheitsheader-Profil auf alle ausgewählten Hosts anwenden",
"noSecurityProfile": "Keine (Profil entfernen)",
"removeSecurityHeadersWarning": "Dies entfernt das Sicherheitsheader-Profil von allen ausgewählten Hosts und kann deren Sicherheitslage verringern."
},
"certificates": {
"title": "SSL-Zertifikate",
"description": "SSL/TLS-Zertifikate für Ihre Proxy-Hosts verwalten",
"addCertificate": "Zertifikat hinzufügen",
"uploadCertificate": "Zertifikat hochladen",
"domain": "Domäne",
"status": "Status",
"expiresAt": "Läuft ab am",
"valid": "Gültig",
"pending": "Ausstehend",
"expired": "Abgelaufen",
"friendlyName": "Anzeigename",
"certificatePem": "Zertifikat (PEM)",
"privateKeyPem": "Privater Schlüssel (PEM)",
"uploadSuccess": "Zertifikat erfolgreich hochgeladen",
"uploadFailed": "Fehler beim Hochladen des Zertifikats",
"note": "Hinweis",
"noteText": "Sie können benutzerdefinierte Zertifikate und Staging-Zertifikate löschen. Produktions-Let's-Encrypt-Zertifikate werden automatisch erneuert und sollten nur beim Umgebungswechsel gelöscht werden."
},
"auth": {
"login": "Anmelden",
"logout": "Abmelden",
"email": "E-Mail",
"password": "Passwort",
"username": "Benutzername",
"signIn": "Anmelden",
"signOut": "Abmelden",
"forgotPassword": "Passwort vergessen?",
"rememberMe": "Angemeldet bleiben",
"checkingSetup": "Setup-Status wird überprüft...",
"loggingIn": "Zahle den Fährmann...",
"loggingInSub": "Dein Obolus gewährt Durchgang",
"loginSuccess": "Erfolgreich angemeldet",
"loginFailed": "Anmeldung fehlgeschlagen",
"resetPasswordTitle": "Um Ihr Passwort zurückzusetzen:",
"resetPasswordInstructions": "Führen Sie diesen Befehl auf Ihrem Server aus:"
},
"errors": {
"required": "Dieses Feld ist erforderlich",
"invalidEmail": "Ungültige E-Mail-Adresse",
"passwordTooShort": "Das Passwort muss mindestens 8 Zeichen lang sein",
"genericError": "Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.",
"networkError": "Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.",
"unauthorized": "Nicht autorisiert. Bitte melden Sie sich erneut an.",
"notFound": "Ressource nicht gefunden",
"serverError": "Serverfehler. Bitte versuchen Sie es später erneut."
},
"notifications": {
"saveSuccess": "Änderungen erfolgreich gespeichert",
"deleteSuccess": "Erfolgreich gelöscht",
"createSuccess": "Erfolgreich erstellt",
"updateSuccess": "Erfolgreich aktualisiert",
"saveFailed": "Fehler beim Speichern der Änderungen",
"deleteFailed": "Fehler beim Löschen",
"createFailed": "Fehler beim Erstellen",
"updateFailed": "Fehler beim Aktualisieren",
"partialFailed": "Abgeschlossen mit {{count}} Fehler(n)"
},
"security": {
"title": "Sicherheit",
"description": "Sicherheitsebenen für Ihren Reverse-Proxy konfigurieren",
"cerberusDashboard": "Cerberus Dashboard",
"cerberusActive": "Aktiv",
"cerberusDisabled": "Deaktiviert",
"cerberusReadyMessage": "Alle Sicherheitsköpfe sind zur Konfiguration bereit",
"cerberusDisabledMessage": "Aktivieren Sie Cerberus in den Systemeinstellungen, um Sicherheitsfunktionen zu aktivieren",
"featuresUnavailable": "Sicherheitsfunktionen nicht verfügbar",
"featuresUnavailableMessage": "Cerberus steuert CrowdSec, Coraza WAF, Zugriffskontrolle und Ratenbegrenzung. Aktivieren Sie den Cerberus-Schalter in den Systemeinstellungen, um diese Funktionen zu aktivieren.",
"learnMore": "Mehr erfahren",
"adminWhitelist": "Admin-Whitelist",
"adminWhitelistDescription": "IP-Adressen konfigurieren, die Sicherheitsprüfungen umgehen",
"commaSeparatedCIDR": "Kommagetrennte CIDR/IPs",
"generateToken": "Token generieren",
"generateTokenTooltip": "Notfall-Token für Notfallzugriff generieren",
"enableCerberusFirst": "Zuerst Cerberus aktivieren",
"layer": "Schicht",
"crowdsec": {
"title": "CrowdSec",
"subtitle": "IP-Reputation & Bedrohungsintelligenz",
"badge": "IDS",
"enabledDescription": "Schützt vor: Bekannte Angreifer, Botnets, Brute-Force",
"disabledDescription": "Intrusion Prevention System mit Community-Bedrohungsintelligenz",
"processRunning": "Läuft (PID {{pid}})",
"processStopped": "Prozess gestoppt",
"toggleTooltip": "CrowdSec-Schutz umschalten"
},
"acl": {
"title": "Zugriffskontrolle",
"subtitle": "IP- & Geo-basierte Filterung",
"badge": "ACL",
"description": "Schützt vor: Nicht autorisierten IPs, Geo-basierten Angriffen, Insider-Bedrohungen",
"manageLists": "Listen verwalten",
"toggleTooltip": "Zugriffskontrolle umschalten"
},
"waf": {
"title": "Coraza WAF",
"subtitle": "Anforderungsprüfung & Filterung",
"badge": "WAF",
"enabledDescription": "Schützt vor: SQL-Injection, XSS, RCE, Zero-Day-Exploits*",
"disabledDescription": "Web Application Firewall mit OWASP Core Rule Set",
"toggleTooltip": "Coraza WAF umschalten"
},
"rateLimit": {
"title": "Ratenbegrenzung",
"subtitle": "Anforderungsvolumenkontrolle",
"badge": "Rate",
"description": "Schützt vor: DDoS-Angriffen, Credential Stuffing, API-Missbrauch",
"toggleTooltip": "Ratenbegrenzung umschalten"
},
"notifications": "Benachrichtigungen",
"threeHeadsTurn": "Drei Köpfe drehen sich...",
"cerberusConfigUpdating": "Cerberus-Konfiguration wird aktualisiert",
"summoningGuardian": "Der Wächter wird gerufen...",
"crowdsecStarting": "CrowdSec startet",
"guardianRests": "Der Wächter ruht...",
"crowdsecStopping": "CrowdSec stoppt",
"strengtheningGuard": "Wache wird verstärkt...",
"wardsActivating": "Schutzzauber werden aktiviert"
},
"accessLists": {
"title": "Zugriffslisten",
"description": "IP-basierte Zugriffskontrolle verwalten",
"createAccessList": "Zugriffsliste erstellen",
"editAccessList": "Zugriffsliste bearbeiten",
"deleteAccessList": "Zugriffsliste löschen",
"deleteSelected": "Löschen ({{count}})",
"bestPractices": "Best Practices",
"testIP": "IP testen",
"testIPAddress": "IP-Adresse testen",
"ipAddress": "IP-Adresse",
"accessList": "Zugriffsliste",
"rfc1918Only": "Nur RFC1918",
"cgnatWarning": {
"title": "CGNAT & Mobilfunknetz-Warnung",
"message": "Wenn Sie T-Mobile 5G Home Internet, Starlink oder andere CGNAT-Verbindungen verwenden, funktioniert Geo-Blocking möglicherweise nicht wie erwartet. Ihre IP kann von einem Rechenzentrums-Standort erscheinen, nicht von Ihrem physischen Standort.",
"solutionsTitle": "Lösungen bei Aussperrung:",
"solution1": "Zugriff über lokale Netzwerk-IP (192.168.x.x) - ACLs gelten nicht für lokale IPs",
"solution2": "Fügen Sie Ihre aktuelle IP zu einer Whitelist-ACL hinzu",
"solution3": "Verwenden Sie \"IP testen\" unten, um zu sehen, welche IP der Server sieht",
"solution4": "Deaktivieren Sie die ACL vorübergehend, um wieder Zugriff zu erhalten",
"solution5": "Verbinden Sie sich über VPN mit einer bekannten guten IP-Adresse"
},
"deleteConfirmTitle": "Zugriffsliste löschen",
"deleteConfirmMessage": "Sind Sie sicher, dass Sie \"{{name}}\" löschen möchten? Vor dem Löschen wird eine Sicherung erstellt.",
"bulkDeleteConfirmTitle": "Ausgewählte Zugriffslisten löschen",
"bulkDeleteConfirmMessage": "Sind Sie sicher, dass Sie {{count}} Zugriffsliste(n) löschen möchten? Vor dem Löschen wird eine Sicherung erstellt.",
"deleteItems": "{{count}} Elemente löschen",
"deleting": "Wird gelöscht...",
"noAccessLists": "Keine Zugriffslisten",
"noAccessListsDescription": "Erstellen Sie Ihre erste Zugriffsliste, um zu kontrollieren, wer auf Ihre Dienste zugreifen kann"
},
"rateLimiting": {
"title": "Ratenbegrenzungskonfiguration",
"description": "Anforderungsraten kontrollieren, um Ihre Dienste vor Missbrauch zu schützen",
"aboutTitle": "Über Ratenbegrenzung",
"aboutDescription": "Ratenbegrenzung hilft, Ihre Dienste vor Missbrauch, Brute-Force-Angriffen und übermäßigem Ressourcenverbrauch zu schützen. Konfigurieren Sie Limits pro Client-IP-Adresse.",
"currentlyActive": "Derzeit aktiv",
"currentConfig": "{{requests}} Anfragen/Sek. • Burst: {{burst}} • Fenster: {{window}}s",
"enableRateLimiting": "Ratenbegrenzung aktivieren",
"enabledMessage": "Ratenbegrenzung ist aktiv und schützt Ihre Dienste",
"disabledMessage": "Aktivieren Sie, um Anforderungsraten zu begrenzen",
"configuration": "Konfiguration",
"requestsPerSecond": "Anfragen pro Sekunde",
"requestsPerSecondHelper": "Maximale Anfragen pro Sekunde pro Client",
"burst": "Burst",
"burstHelper": "Kurze Spitzen über dem Ratenlimit erlauben",
"windowSeconds": "Fenster (Sekunden)",
"windowHelper": "Zeitfenster für Ratenberechnungen",
"rateLimitingDisabled": "Ratenbegrenzung deaktiviert",
"enableToConfigureMessage": "Aktivieren Sie Ratenbegrenzung, um Anforderungslimits zu konfigurieren und Ihre Dienste zu schützen",
"adjustingGates": "Tore werden angepasst...",
"configurationUpdating": "Ratenbegrenzungskonfiguration wird aktualisiert"
},
"wafConfig": {
"title": "WAF-Konfiguration",
"description": "Coraza Web Application Firewall Regelsätze verwalten",
"addRuleSet": "Regelsatz hinzufügen",
"createRuleSet": "Regelsatz erstellen",
"editRuleSet": "Regelsatz bearbeiten",
"updateRuleSet": "Regelsatz aktualisieren",
"deleteRuleSet": "Regelsatz löschen",
"ruleSyntax": "Regelsyntax",
"aboutTitle": "Über WAF-Regelsätze",
"aboutDescription": "Regelsätze definieren ModSecurity/Coraza-Regeln, die HTTP-Anfragen prüfen und filtern. Die WAF aktiviert automatisch SecRuleEngine On und SecRequestBodyAccess On für Ihre Regeln.",
"deleteConfirmTitle": "Regelsatz löschen",
"deleteConfirmMessage": "Sind Sie sicher, dass Sie \"{{name}}\" löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"noRuleSets": "Keine Regelsätze",
"noRuleSetsDescription": "Erstellen Sie Ihren ersten WAF-Regelsatz, um Ihre Dienste vor Web-Angriffen zu schützen",
"ruleSetName": "Regelsatzname",
"mode": "Modus",
"blocking": "Blockierend",
"detection": "Erkennung",
"detectionOnly": "Nur Erkennung",
"blockingDescription": "Bösartige Anfragen werden mit HTTP 403 blockiert",
"detectionDescription": "Bösartige Anfragen werden protokolliert, aber nicht blockiert",
"sourceUrl": "Quell-URL (optional)",
"sourceUrlHelper": "URL zum Abrufen von Regeln. Leer lassen, um Inline-Inhalte zu verwenden.",
"ruleContent": "Regelinhalt",
"ruleContentHelper": "ModSecurity/Coraza-Regelsyntax. Jede SecRule sollte in einer eigenen Zeile stehen.",
"source": "Quelle",
"url": "URL",
"inline": "Inline",
"lastUpdated": "Zuletzt aktualisiert",
"rulesCount": "{{count}} Regel(n)",
"quickStartPreset": "Schnellstart mit Voreinstellung",
"choosePreset": "Voreinstellung wählen...",
"cerberusAwakens": "Cerberus erwacht...",
"guardianWatches": "Der Wächter der Tore hält Wache",
"forgingDefenses": "Neue Verteidigungen werden geschmiedet...",
"rulesInscribing": "Sicherheitsregeln werden eingeschrieben",
"loweringBarrier": "Barriere wird gesenkt...",
"defenseRemoved": "Verteidigungsschicht entfernt",
"loadingWaf": "WAF-Konfiguration wird geladen...",
"loadingFailed": "Laden der WAF-Konfiguration fehlgeschlagen"
},
"uptime": {
"title": "Verfügbarkeitsüberwachung",
"description": "Überwachen Sie die Gesundheit und Verfügbarkeit Ihrer Dienste",
"autoRefresh": "Automatische Aktualisierung alle 30s",
"noMonitors": "Keine Monitore gefunden. Fügen Sie einen Proxy-Host oder Remote-Server hinzu, um mit der Überwachung zu beginnen.",
"proxyHosts": "Proxy-Hosts",
"remoteServers": "Remote-Server",
"otherMonitors": "Andere Monitore",
"configureMonitor": "Monitor konfigurieren",
"monitorName": "Name",
"maxRetries": "Maximale Wiederholungen",
"maxRetriesHelper": "Anzahl aufeinanderfolgender Fehler vor dem Senden einer Warnung.",
"checkInterval": "Prüfintervall (Sekunden)",
"saveChanges": "Änderungen speichern",
"saving": "Wird gespeichert...",
"latency": "Latenz",
"lastCheck": "Letzte Prüfung",
"never": "Nie",
"paused": "PAUSIERT",
"pause": "Pausieren",
"unpause": "Fortsetzen",
"triggerCheck": "Sofortige Gesundheitsprüfung auslösen",
"healthCheckTriggered": "Gesundheitsprüfung ausgelöst",
"monitorDeleted": "Monitor gelöscht",
"deleteConfirm": "Diesen Monitor löschen? Dies kann nicht rückgängig gemacht werden."
},
"domains": {
"title": "Domänen",
"description": "Verwalten Sie Ihre Domänen",
"addDomain": "Domäne hinzufügen",
"deleteDomain": "Domäne löschen",
"domainName": "Domänenname",
"placeholder": "beispiel.de",
"adding": "Wird hinzugefügt...",
"added": "Hinzugefügt am {{date}}",
"deleteConfirm": "Sind Sie sicher, dass Sie diese Domäne löschen möchten?",
"createFailed": "Fehler beim Erstellen der Domäne",
"deleteFailed": "Fehler beim Löschen der Domäne",
"loadError": "Fehler beim Laden der Domänen"
},
"remoteServers": {
"title": "Remote-Server",
"description": "Backend-Server für Ihre Proxy-Hosts verwalten",
"addServer": "Server hinzufügen",
"editServer": "Server bearbeiten",
"deleteServer": "Remote-Server löschen",
"noServers": "Keine Remote-Server",
"noServersDescription": "Fügen Sie Server hinzu, um beim Erstellen von Proxy-Hosts schnell Backends auswählen zu können",
"columnName": "Name",
"columnProvider": "Anbieter",
"columnHost": "Host",
"columnPort": "Port",
"host": "Host",
"port": "Port",
"user": "Benutzer",
"gridView": "Rasteransicht",
"listView": "Listenansicht",
"deleteConfirm": "Sind Sie sicher, dass Sie \"{{name}}\" löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"deleting": "Wird gelöscht..."
},
"notificationProviders": {
"title": "Benachrichtigungsanbieter",
"description": "Verwalten Sie Benachrichtigungsanbieter und Vorlagen",
"addProvider": "Anbieter hinzufügen",
"addNewProvider": "Neuen Anbieter hinzufügen",
"providerName": "Name",
"urlWebhook": "URL / Webhook",
"urlRequired": "URL ist erforderlich",
"genericWebhook": "Generischer Webhook (Shoutrrr)",
"customWebhook": "Benutzerdefinierter Webhook (JSON)",
"shoutrrrHelp": "Für das Shoutrrr-Format siehe",
"jsonPayloadTemplate": "JSON-Payload-Vorlage",
"minimalTemplate": "Minimale Vorlage",
"detailedTemplate": "Detaillierte Vorlage",
"customTemplate": "Benutzerdefiniert",
"template": "Vorlage",
"availableVariables": "Verfügbare Variablen: .Title, .Message, .Status, .Name, .Latency, .Time. Unterstützt webhook, Discord, Slack, Gotify und generische Dienste.",
"notificationEvents": "Benachrichtigungsereignisse",
"proxyHosts": "Proxy-Hosts",
"remoteServers": "Remote-Server",
"domainsNotify": "Domänen",
"certificates": "Zertifikate",
"uptime": "Verfügbarkeit",
"preview": "Vorschau",
"previewError": "Vorschaufehler",
"previewResult": "Vorschauergebnis",
"externalTemplates": "Externe Vorlagen",
"manageTemplates": "Vorlagen verwalten",
"hideTemplates": "Ausblenden",
"newTemplate": "Neue Vorlage",
"createTemplate": "Vorlage erstellen",
"templateType": "Vorlagentyp",
"minimal": "Minimal",
"detailed": "Detailliert",
"custom": "Benutzerdefiniert",
"configJson": "Konfig (JSON/Vorlage)",
"noExternalTemplates": "Keine externen Vorlagen. Verwenden Sie das Formular oben, um eine zu erstellen.",
"deleteTemplateConfirm": "Vorlage löschen?",
"sendTest": "Testbenachrichtigung senden",
"testSent": "Testbenachrichtigung gesendet!",
"testFailed": "Test konnte nicht gesendet werden",
"deleteConfirm": "Sind Sie sicher?",
"noProviders": "Keine Benachrichtigungsanbieter konfiguriert."
},
"users": {
"title": "Benutzerverwaltung",
"inviteUser": "Benutzer einladen",
"inviteSent": "Einladungs-E-Mail gesendet",
"inviteCreated": "Benutzer eingeladen - kopieren Sie den Einladungslink unten",
"inviteFailed": "Benutzer konnte nicht eingeladen werden",
"inviteLinkCopied": "Einladungslink in die Zwischenablage kopiert",
"inviteSuccess": "Benutzer erfolgreich eingeladen",
"inviteEmailSent": "Eine Einladungs-E-Mail wurde an den Benutzer gesendet.",
"inviteEmailNotSent": "E-Mail wurde nicht gesendet. Teilen Sie den Einladungslink manuell.",
"inviteLink": "Einladungslink",
"copyInviteLink": "Einladungslink kopieren",
"expires": "Läuft ab",
"done": "Fertig",
"emailAddress": "E-Mail-Adresse",
"role": "Rolle",
"roleUser": "Benutzer",
"roleAdmin": "Administrator",
"permissionMode": "Berechtigungsmodus",
"allowAllBlacklist": "Alles erlauben (Blacklist)",
"denyAllWhitelist": "Alles verweigern (Whitelist)",
"allowAllDescription": "Benutzer kann auf alle Hosts zugreifen AUSSER den unten ausgewählten",
"denyAllDescription": "Benutzer kann NUR auf die unten ausgewählten Hosts zugreifen",
"blockedHosts": "Blockierte Hosts",
"allowedHosts": "Erlaubte Hosts",
"noProxyHosts": "Keine Proxy-Hosts konfiguriert",
"sendInvite": "Einladung senden",
"editPermissions": "Berechtigungen bearbeiten",
"permissionsUpdated": "Berechtigungen aktualisiert",
"permissionsUpdateFailed": "Berechtigungen konnten nicht aktualisiert werden",
"savePermissions": "Berechtigungen speichern",
"userUpdated": "Benutzer aktualisiert",
"userUpdateFailed": "Benutzer konnte nicht aktualisiert werden",
"userDeleted": "Benutzer gelöscht",
"userDeleteFailed": "Benutzer konnte nicht gelöscht werden",
"columnUser": "Benutzer",
"columnRole": "Rolle",
"columnPermissions": "Berechtigungen",
"noName": "(Kein Name)",
"pendingInvite": "Ausstehende Einladung",
"inviteExpired": "Einladung abgelaufen",
"whitelist": "Whitelist",
"blacklist": "Blacklist",
"deleteConfirm": "Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?",
"deleteUser": "Benutzer löschen",
"inviteUrlPreview": "Einladungslink-Vorschau",
"inviteUrlWarning": "Anwendungs-URL ist nicht konfiguriert. Dieser Link funktioniert möglicherweise nicht für externe Benutzer.",
"configureApplicationUrl": "Anwendungs-URL konfigurieren",
"resendInvite": "Einladung erneut senden",
"inviteResent": "Einladung erfolgreich erneut gesendet",
"inviteCreatedNoEmail": "Neue Einladung erstellt. E-Mail konnte nicht gesendet werden.",
"resendFailed": "Einladung konnte nicht erneut gesendet werden"
},
"dashboard": {
"title": "Dashboard",
"description": "Übersicht Ihres Charon-Reverse-Proxys",
"proxyHosts": "Proxy-Hosts",
"remoteServers": "Remote-Server",
"certificates": "Zertifikate",
"certificateStatus": "Zertifikatsstatus",
"accessLists": "Zugriffslisten",
"systemStatus": "Systemstatus",
"healthy": "Gesund",
"unhealthy": "Ungesund",
"pendingCertificates": "Ausstehende Zertifikate",
"allCertificatesValid": "Alle Zertifikate gültig",
"activeHosts": "{{count}} aktiv",
"activeServers": "{{count}} aktiv",
"activeLists": "{{count}} aktiv",
"validCerts": "{{count}} gültig"
},
"setup": {
"welcomeTitle": "Willkommen bei Charon",
"welcomeDescription": "Erstellen Sie Ihr Administratorkonto, um zu beginnen.",
"nameLabel": "Name",
"namePlaceholder": "Admin-Benutzer",
"emailLabel": "E-Mail-Adresse",
"emailPlaceholder": "admin@beispiel.de",
"invalidEmail": "Bitte geben Sie eine gültige E-Mail-Adresse ein",
"passwordLabel": "Passwort",
"createAdminButton": "Admin-Konto erstellen",
"setupFailed": "Einrichtung fehlgeschlagen"
},
"acceptInvite": {
"title": "Einladung annehmen",
"invalidLink": "Ungültiger Link",
"invalidLinkMessage": "Dieser Einladungslink ist ungültig oder unvollständig.",
"goToLogin": "Zur Anmeldung",
"validating": "Einladung wird überprüft...",
"invitationInvalid": "Einladung ungültig",
"expiredOrInvalid": "Diese Einladung ist abgelaufen oder ungültig.",
"accountCreated": "Konto erstellt!",
"accountCreatedMessage": "Ihr Konto wurde erfolgreich eingerichtet. Weiterleitung zur Anmeldung...",
"youveBeenInvited": "Sie wurden eingeladen!",
"completeSetup": "Vervollständigen Sie Ihre Kontoeinrichtung für",
"yourName": "Ihr Name",
"namePlaceholder": "Max Mustermann",
"confirmPassword": "Passwort bestätigen",
"passwordsDoNotMatch": "Passwörter stimmen nicht überein",
"createAccount": "Konto erstellen",
"welcomeMessage": "Willkommen, {{email}}! Sie können sich jetzt anmelden.",
"acceptFailed": "Einladung konnte nicht angenommen werden"
},
"tasks": {
"title": "Aufgaben",
"description": "Systemaufgaben verwalten und Protokolle anzeigen"
},
"backups": {
"title": "Sicherungen",
"description": "Datenbanksicherungen verwalten",
"configuration": "Konfiguration",
"intervalDays": "Sicherungsintervall (Tage)",
"retentionDays": "Aufbewahrungszeitraum (Tage)",
"saveSettings": "Einstellungen speichern",
"settingsSaved": "Sicherungseinstellungen gespeichert",
"settingsFailed": "Fehler beim Speichern der Einstellungen: {{error}}",
"createBackup": "Sicherung erstellen",
"createSuccess": "Sicherung erfolgreich erstellt",
"createFailed": "Fehler beim Erstellen der Sicherung: {{error}}",
"restoreBackup": "Sicherung wiederherstellen",
"restore": "Wiederherstellen",
"restoreSuccess": "Sicherung erfolgreich wiederhergestellt. Bitte starten Sie den Container neu.",
"restoreFailed": "Fehler beim Wiederherstellen der Sicherung: {{error}}",
"restoreConfirmMessage": "Sind Sie sicher, dass Sie diese Sicherung wiederherstellen möchten? Aktuelle Daten werden überschrieben. Sie müssen den Container nach der Wiederherstellung neu starten.",
"deleteBackup": "Sicherung löschen",
"deleteSuccess": "Sicherung erfolgreich gelöscht",
"deleteFailed": "Fehler beim Löschen der Sicherung: {{error}}",
"deleteConfirmMessage": "Sind Sie sicher, dass Sie \"{{filename}}\" löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"download": "Herunterladen",
"filename": "Dateiname",
"size": "Größe",
"createdAt": "Erstellt am",
"auto": "Auto",
"manual": "Manuell",
"noBackups": "Keine Sicherungen",
"noBackupsDescription": "Erstellen Sie Ihre erste Sicherung, um Ihre Konfiguration zu schützen"
},
"logs": {
"title": "Protokolle",
"description": "System- und Zugriffsprotokolle anzeigen",
"logFiles": "Protokolldateien",
"noLogFiles": "Keine Protokolldateien gefunden",
"noLogSelected": "Kein Protokoll ausgewählt",
"selectLogDescription": "Wählen Sie eine Protokolldatei aus der Liste, um deren Inhalt anzuzeigen",
"showingEntries": "Zeige {{from}} bis {{to}} von {{total}} Einträgen",
"pageOf": "Seite {{current}} von {{total}}"
},
"account": {
"title": "Kontoeinstellungen",
"profile": "Profil",
"profileDescription": "Aktualisieren Sie Ihre persönlichen Informationen.",
"saveProfile": "Profil speichern",
"profileUpdated": "Profil erfolgreich aktualisiert",
"profileUpdateFailed": "Fehler beim Aktualisieren des Profils: {{error}}",
"certificateEmail": "Zertifikats-E-Mail",
"certificateEmailDescription": "Diese E-Mail wird für Let's Encrypt-Benachrichtigungen und Wiederherstellung verwendet.",
"useAccountEmail": "Meine Konto-E-Mail verwenden ({{email}})",
"customEmail": "Benutzerdefinierte E-Mail",
"saveCertificateEmail": "Zertifikats-E-Mail speichern",
"certEmailUpdated": "Zertifikats-E-Mail aktualisiert",
"certEmailUpdateFailed": "Fehler beim Aktualisieren der Zertifikats-E-Mail: {{error}}",
"changePassword": "Passwort ändern",
"changePasswordDescription": "Aktualisieren Sie Ihr Kontopasswort für mehr Sicherheit.",
"currentPassword": "Aktuelles Passwort",
"newPassword": "Neues Passwort",
"confirmNewPassword": "Neues Passwort bestätigen",
"updatePassword": "Passwort aktualisieren",
"passwordsDoNotMatch": "Passwörter stimmen nicht überein",
"passwordUpdated": "Passwort erfolgreich aktualisiert",
"passwordUpdateFailed": "Fehler beim Aktualisieren des Passworts",
"apiKey": "API-Schlüssel",
"apiKeyDescription": "Verwenden Sie diesen Schlüssel zur programmatischen Authentifizierung mit der API. Halten Sie ihn geheim!",
"copyToClipboard": "In Zwischenablage kopieren",
"regenerateApiKey": "API-Schlüssel neu generieren",
"apiKeyCopied": "API-Schlüssel in Zwischenablage kopiert",
"apiKeyRegenerated": "API-Schlüssel erfolgreich neu generiert",
"apiKeyRegenerateFailed": "Fehler beim Neugenerieren des API-Schlüssels: {{error}}",
"securityNotice": "Sicherheitshinweis",
"securityNoticeMessage": "Teilen Sie niemals Ihren API-Schlüssel oder Ihr Passwort mit anderen. Wenn Sie glauben, dass Ihre Anmeldedaten kompromittiert wurden, generieren Sie Ihren API-Schlüssel sofort neu.",
"confirmPassword": "Passwort bestätigen",
"confirmPasswordDescription": "Bitte geben Sie Ihr aktuelles Passwort ein, um diese Änderungen zu bestätigen.",
"enterPassword": "Geben Sie Ihr Passwort ein",
"confirmAndUpdate": "Bestätigen & Aktualisieren",
"updateCertEmailTitle": "Zertifikats-E-Mail aktualisieren?",
"updateCertEmailDescription": "Sie ändern Ihre Konto-E-Mail auf {{email}}. Möchten Sie diese neue E-Mail auch für SSL-Zertifikate verwenden?",
"yesUpdateCertEmail": "Ja, Zertifikats-E-Mail auch aktualisieren",
"noKeepEmail": "Nein, weiterhin {{email}} verwenden"
},
"importCaddy": {
"title": "Caddyfile importieren",
"enterCaddyfileContent": "Bitte geben Sie Caddyfile-Inhalt ein",
"cancelConfirm": "Sind Sie sicher, dass Sie diesen Import abbrechen möchten?",
"noDomainsFound": "Keine Domains im Caddyfile gefunden",
"emptyFileWarning": "Die importierte Datei scheint leer zu sein oder enthält keine gültigen reverse_proxy-Direktiven. Bitte überprüfen Sie den Dateiinhalt unten.",
"uploadOrPaste": "Caddyfile hochladen oder einfügen",
"description": "Importieren Sie ein vorhandenes Caddyfile, um automatisch Proxy-Host-Konfigurationen zu erstellen. Das System erkennt Konflikte und ermöglicht Ihnen, Änderungen vor dem Commit zu überprüfen.",
"uploadCaddyfile": "Caddyfile hochladen",
"orPasteContent": "oder Inhalt einfügen",
"caddyfileContent": "Caddyfile-Inhalt",
"processing": "Wird verarbeitet...",
"parseAndReview": "Analysieren und überprüfen",
"multiSiteImport": "Multi-Site-Import"
},
"importCrowdSec": {
"title": "CrowdSec-Konfigurationspakete",
"description": "Laden Sie ein tar.gz- oder zip-Paket hoch. Vor dem Import wird eine Sicherung erstellt, damit Sie bei Bedarf zurückrollen können. Exportieren Sie das aktuelle Paket vom Cerberus-Dashboard oder der CrowdSec-Konfigurationsseite.",
"import": "Importieren",
"configImported": "CrowdSec-Konfiguration importiert",
"importFailed": "Import fehlgeschlagen: {{error}}",
"creatingBackup": "Sicherung wird erstellt...",
"importing": "CrowdSec wird importiert..."
},
"systemSettings": {
"title": "Systemeinstellungen",
"settingsSaved": "Systemeinstellungen gespeichert",
"settingsFailed": "Fehler beim Speichern der Einstellungen: {{error}}",
"featureFlagUpdated": "Funktionsflag aktualisiert",
"featureFlagFailed": "Fehler beim Aktualisieren des Flags: {{error}}",
"updatingFeatures": "Funktionen werden aktualisiert...",
"applyingChanges": "Konfigurationsänderungen werden angewendet",
"pleaseWait": "Bitte warten",
"saveSettings": "Einstellungen speichern",
"features": {
"title": "Funktionen",
"description": "Aktivieren oder deaktivieren Sie optionale Funktionen für Ihre Charon-Instanz.",
"cerberus": "Cerberus Sicherheitssuite",
"cerberusTooltip": "Erweiterte Sicherheitsfunktionen einschließlich WAF, Zugriffslisten, Ratenbegrenzung und CrowdSec.",
"crowdsecConsole": "CrowdSec-Konsolen-Registrierung",
"crowdsecConsoleTooltip": "Ermöglicht die Registrierung dieses Knotens bei der CrowdSec-Konsole für zentrales Flottenmanagement.",
"uptimeMonitoring": "Verfügbarkeitsüberwachung",
"uptimeMonitoringTooltip": "Überwachen Sie die Verfügbarkeit Ihrer Proxy-Hosts und Remote-Server."
},
"general": {
"title": "Allgemeine Konfiguration",
"description": "Konfigurieren Sie Caddy und UI-Einstellungen.",
"caddyAdminApi": "Caddy Admin API Endpunkt",
"caddyAdminApiHelper": "URL zur Caddy Admin API (normalerweise auf Port 2019)",
"sslProvider": "SSL-Anbieter",
"selectSslProvider": "SSL-Anbieter auswählen",
"sslAuto": "Auto (Empfohlen)",
"sslLetsEncryptProd": "Let's Encrypt (Produktion)",
"sslLetsEncryptStaging": "Let's Encrypt (Staging)",
"sslZeroSSL": "ZeroSSL",
"sslProviderHelper": "Wählen Sie die Zertifizierungsstelle. 'Auto' verwendet Let's Encrypt mit ZeroSSL-Fallback.",
"domainLinkBehavior": "Domain-Link-Verhalten",
"selectLinkBehavior": "Link-Verhalten auswählen",
"sameTab": "Gleicher Tab",
"newTab": "Neuer Tab (Standard)",
"newWindow": "Neues Fenster",
"domainLinkBehaviorHelper": "Steuern Sie, wie Domain-Links in der Proxy-Hosts-Liste geöffnet werden.",
"languageHelper": "Wählen Sie Ihre bevorzugte Sprache. Änderungen werden sofort wirksam."
},
"applicationUrl": {
"title": "Anwendungs-URL",
"description": "Konfigurieren Sie die öffentliche URL für benutzerseitige Links und E-Mails.",
"label": "Anwendungs-URL",
"helper": "Die öffentliche URL, über die Benutzer auf Charon zugreifen (z. B. https://charon.example.com). Wird in Einladungs-E-Mails und Passwort-Reset-Links verwendet.",
"infoMessage": "Diese URL wird beim Versenden von Einladungs-E-Mails verwendet. Wenn sie nicht konfiguriert ist, verwendet Charon die URL aus der aktuellen Browser-Anfrage, die möglicherweise nicht von externen Netzwerken aus zugänglich ist.",
"invalidUrl": "Bitte geben Sie eine gültige URL ein, die mit http:// oder https:// beginnt",
"notConfiguredWarning": "Anwendungs-URL ist nicht konfiguriert. Einladungs-E-Mails verwenden die aktuelle Browser-URL, die möglicherweise nicht von externen Netzwerken aus zugänglich ist.",
"testButton": "URL testen"
},
"systemStatus": {
"title": "Systemstatus",
"service": "Dienst",
"version": "Version",
"buildTime": "Build-Zeit",
"gitCommit": "Git-Commit",
"notAvailable": "N/V",
"fetchError": "Systemstatus konnte nicht abgerufen werden. Bitte überprüfen Sie Ihre Verbindung."
},
"updates": {
"title": "Software-Updates",
"description": "Nach neuen Versionen von Charon suchen.",
"currentVersion": "Aktuelle Version",
"latestVersion": "Neueste Version",
"updateAvailable": "Update verfügbar",
"newVersionAvailable": "Eine neue Version von Charon ist verfügbar!",
"viewReleaseNotes": "Versionshinweise anzeigen",
"upToDate": "Aktuell",
"runningLatest": "Sie verwenden die neueste Version von Charon.",
"checkForUpdates": "Nach Updates suchen"
}
},
"crowdsecConfig": {
"title": "CrowdSec-Konfiguration",
"loading": "Lade CrowdSec-Konfiguration...",
"loadError": "Fehler beim Laden des CrowdSec-Status",
"noStatus": "CrowdSec-Status nicht verfügbar",
"note": "Automatische Updates & Preset-Verwaltung werden von Cerberus betrieben. Einige Funktionen können eingeschränkt sein, wenn Cerberus deaktiviert ist.",
"consoleEnrollment": {
"title": "Konsolen-Registrierung",
"status": "Status",
"notEnrolled": "Nicht registriert",
"enrolled": "Registriert",
"pending": "Ausstehend",
"enrolling": "Registriere...",
"pendingAcceptance": "Warte auf Bestätigung",
"unknown": "Unbekannt",
"lapiNotReady": "LAPI ist noch nicht bereit. CrowdSec startet möglicherweise noch.",
"checkLapiStatus": "LAPI-Status prüfen",
"startCrowdSec": "CrowdSec starten",
"goToSecurity": "Zum Sicherheits-Dashboard",
"enrollmentToken": "Registrierungstoken",
"tokenPlaceholder": "Fügen Sie Ihr Registrierungstoken von der CrowdSec-Konsole ein",
"agentName": "Agent-Name (optional)",
"agentPlaceholder": "meine-charon-instanz",
"tenant": "Mandant/Organisation (optional)",
"tenantPlaceholder": "org-id-aus-konsole",
"acknowledge": "Ich bestätige, dass dies die Anmeldedaten rotiert, falls bereits registriert",
"enroll": "Registrieren",
"rotateKey": "Schlüssel rotieren",
"retryEnrollment": "Registrierung wiederholen",
"lapiMustBeReady": "LAPI muss bereit sein, um zu registrieren",
"lapiMustBeReadyRotate": "LAPI muss bereit sein, um den Schlüssel zu rotieren",
"lapiMustBeReadyRetry": "LAPI muss bereit sein, um die Registrierung zu wiederholen",
"tokenRequired": "Registrierungstoken ist erforderlich",
"actionRequired": "Aktion erforderlich",
"pendingAcceptanceText": "Ihre Registrierungsanfrage wurde eingereicht. Bitte akzeptieren Sie diese Maschine in der CrowdSec-Konsole unter",
"pendingAcceptanceNote": " Nach der Annahme wird der Status automatisch aktualisiert.",
"agent": "Agent",
"tenantLabel": "Mandant",
"lastAttempt": "Letzter Versuch",
"enrolledAt": "Registriert",
"correlationId": "Korrelations-ID"
},
"reenroll": {
"title": "Neu-Registrierungsoptionen",
"description": "Müssen Sie Registrierungsschlüssel wechseln oder zu einer anderen Organisation wechseln?",
"getNewKey": "Neuen Registrierungsschlüssel von der Konsole holen",
"withNewKey": "Mit neuem Schlüssel neu registrieren",
"newEnrollmentKey": "Neuer Registrierungsschlüssel",
"keyPlaceholder": "Neuen Registrierungsschlüssel einfügen",
"agentPlaceholder": "Leer lassen, um den aktuellen Namen zu behalten",
"tenantOptional": "Mandant/Organisation (optional)",
"orgPlaceholder": "Leer lassen, um den aktuellen zu behalten",
"reenroll": "Neu registrieren",
"reenrolling": "Neu registrieren...",
"clearState": "Registrierungsstatus löschen",
"clearing": "Lösche...",
"clearConfirm": "Dies löscht den lokalen Registrierungsstatus. Möglicherweise müssen Sie sich erneut registrieren. Fortfahren?"
},
"packages": {
"title": "Konfigurationspakete",
"description": "Exportieren oder importieren Sie CrowdSec-Konfigurationspakete (tar.gz/zip). Vor dem Import wird ein Backup erstellt.",
"export": "Exportieren",
"import": "Importieren",
"importing": "Importiere..."
},
"presets": {
"title": "Vorlagen",
"description": "Wenden Sie kuratierte oder Hub-Konfigurationsvorlagen an.",
"searchPlaceholder": "Vorlagen suchen...",
"sortAlpha": "Sortieren: A-Z",
"sortSource": "Sortieren: Quelle",
"curated": "Kuratiert",
"hub": "Hub",
"noResults": "Keine Vorlagen entsprechen \"{{query}}\"",
"pullPreview": "Vorschau abrufen",
"applyPreset": "Vorlage anwenden",
"hubUnreachable": "CrowdSec Hub nicht erreichbar. Hub-Vorlagen funktionieren möglicherweise nicht.",
"retry": "Wiederholen",
"useCached": "Zwischengespeichert verwenden",
"targetFile": "Zieldatei",
"selectFileBelow": "(Wählen Sie unten eine Konfigurationsdatei)",
"cacheKey": "Cache-Schlüssel",
"etag": "ETag",
"source": "Quelle",
"fetched": "Abgerufen",
"previewYaml": "Vorschau (YAML):",
"previewUnavailable": "Vorschau nicht verfügbar",
"applied": "Angewendet",
"backup": "Backup",
"reload": "Neu laden",
"required": "Erforderlich",
"method": "Methode",
"filesystem": "Dateisystem",
"loadCached": "Zwischengespeicherte Vorschau laden",
"applyDisabled": "Anwenden deaktiviert, solange Hub offline ist.",
"noPresets": "Keine Vorlagen verfügbar. Stellen Sie sicher, dass Cerberus aktiviert ist."
},
"files": {
"title": "Konfigurationsdateien bearbeiten",
"selectFile": "Datei auswählen...",
"refresh": "Aktualisieren"
},
"bannedIps": {
"title": "Gesperrte IPs",
"banIp": "IP sperren",
"enableFirst": "Aktivieren Sie CrowdSec, um gesperrte IPs zu verwalten",
"loading": "Lade gesperrte IPs...",
"loadFailed": "Fehler beim Laden gesperrter IPs",
"none": "Keine gesperrten IPs",
"ip": "IP",
"reason": "Grund",
"duration": "Dauer",
"bannedAt": "Gesperrt am",
"source": "Quelle",
"actions": "Aktionen",
"unban": "Entsperren"
},
"banModal": {
"title": "IP-Adresse sperren",
"ipLabel": "IP-Adresse",
"durationLabel": "Dauer",
"duration1h": "1 Stunde",
"duration4h": "4 Stunden",
"duration24h": "24 Stunden",
"duration7d": "7 Tage",
"duration30d": "30 Tage",
"durationPermanent": "Permanent",
"reasonLabel": "Grund",
"reasonPlaceholder": "Grund für die Sperrung dieser IP...",
"submit": "IP sperren"
},
"unbanModal": {
"title": "Entsperrung bestätigen",
"confirm": "Sind Sie sicher, dass Sie entsperren möchten",
"submit": "Entsperren"
}
},
"smtp": {
"title": "E-Mail (SMTP) Einstellungen",
"description": "Konfigurieren Sie SMTP-Einstellungen, um E-Mail-Benachrichtigungen und Benutzereinladungen zu aktivieren.",
"configuration": "SMTP-Konfiguration",
"configDescription": "Geben Sie Ihre SMTP-Serverdetails ein, um die E-Mail-Funktionalität zu aktivieren.",
"host": "SMTP-Host",
"port": "Port",
"username": "Benutzername",
"password": "Passwort",
"passwordHelper": "Verwenden Sie ein App-spezifisches Passwort für Gmail",
"fromAddress": "Absenderadresse",
"encryption": "Verschlüsselung",
"selectEncryption": "Verschlüsselung auswählen",
"starttls": "STARTTLS (Empfohlen)",
"sslTls": "SSL/TLS",
"none": "Keine",
"testConnection": "Verbindung testen",
"saveSettings": "Einstellungen speichern",
"settingsSaved": "SMTP-Einstellungen erfolgreich gespeichert",
"saveFailed": "Fehler beim Speichern der SMTP-Einstellungen",
"connectionSuccess": "SMTP-Verbindung erfolgreich",
"connectionFailed": "SMTP-Verbindung fehlgeschlagen",
"testFailed": "Fehler beim Testen der SMTP-Verbindung",
"configured": "SMTP konfiguriert",
"notConfigured": "SMTP nicht konfiguriert",
"active": "Aktiv",
"inactive": "Inaktiv",
"sendTestEmail": "Test-E-Mail senden",
"testEmailDescription": "Senden Sie eine Test-E-Mail, um zu überprüfen, ob Ihre SMTP-Konfiguration korrekt funktioniert.",
"sendTest": "Test senden",
"testEmailSent": "Test-E-Mail erfolgreich gesendet",
"testEmailFailed": "Fehler beim Senden der Test-E-Mail",
"needHelp": "Hilfe benötigt?",
"helpText": "Wenn Sie Gmail verwenden, müssen Sie die 2-Faktor-Authentifizierung aktivieren und ein App-spezifisches Passwort erstellen. Für andere Anbieter überprüfen Sie deren SMTP-Dokumentation für die korrekten Einstellungen."
},
"securityHeaders": {
"title": "Sicherheits-Header",
"description": "HTTP-Sicherheits-Header für Ihre Proxy-Hosts konfigurieren",
"createProfile": "Profil erstellen",
"alertTitle": "Schützen Sie Ihre Anwendungen",
"alertDescription": "Sicherheits-Header schützen vor gängigen Web-Schwachstellen. Verwenden Sie Vorlagen für eine schnelle Einrichtung oder erstellen Sie benutzerdefinierte Profile für eine feinere Kontrolle.",
"systemProfiles": "System-Profile (Nur Lesen)",
"systemProfilesDescription": "Vorkonfigurierte Sicherheitsprofile, die Sie Proxy-Hosts zuweisen können. Klonen Sie sie zur Anpassung.",
"customProfiles": "Benutzerdefinierte Profile",
"noCustomProfiles": "Noch keine benutzerdefinierten Profile",
"noCustomProfilesDescription": "Erstellen Sie ein benutzerdefiniertes Sicherheits-Header-Profil oder wenden Sie eine Vorlage an",
"view": "Anzeigen",
"clone": "Klonen",
"updated": "Aktualisiert",
"viewProfile": "Sicherheits-Header-Profil anzeigen",
"editProfile": "Sicherheits-Header-Profil bearbeiten",
"createProfileTitle": "Sicherheits-Header-Profil erstellen",
"confirmDeletion": "Löschen bestätigen",
"deleteConfirmMessage": "Möchten Sie \"{{name}}\" wirklich löschen? Eine Sicherung wird vor dem Löschen erstellt.",
"deleting": "Wird gelöscht...",
"creatingBackup": "Sicherung wird vor dem Löschen erstellt...",
"backupCreated": "Sicherung erstellt",
"backupFailed": "Sicherung konnte nicht erstellt werden",
"deleteSuccess": "\"{{name}}\" gelöscht. Eine Sicherung wurde vor dem Löschen erstellt.",
"deleteFailed": "Löschen fehlgeschlagen: {{error}}",
"presets": {
"basic": "Minimale Sicherheits-Header für maximale Kompatibilität.\n✓ Ideal für: Tests, Entwicklung, einfache Websites.\n✓ Kompatibel mit allen Anwendungen und mobilen Apps.",
"apiFriendly": "Optimiert für mobile Apps und API-Clients.\n✓ Ideal für: Radarr, Sonarr, Plex, Jellyfin, Home Assistant, Vaultwarden.\n✓ Starke Transport-Sicherheit, erlaubt Cross-Origin-Zugriff.\nEmpfohlen für Dienste, auf die über mobile Apps zugegriffen wird.",
"strict": "Starke Sicherheit für Web-Anwendungen.\n✓ Ideal für: Web-only Dashboards, Admin-Panels.\n⚠ Kann mobile Apps und API-Clients beeinträchtigen.\nNicht empfohlen für Radarr, Plex oder Dienste mit Companion-Apps.",
"paranoid": "Maximale Sicherheit für Hochrisiko-Anwendungen.\n✓ Ideal für: Banking, Gesundheitswesen, Compliance-kritische Apps.\n⚠ WIRD mobile Apps, API-Clients und OAuth-Flows beeinträchtigen.\nNur verwenden, wenn Sie jeden Header verstehen und anpassen können."
}
},
"dns": {
"title": "DNS-Verwaltung",
"description": "DNS-Anbieter und Plugins für die Zertifikatsautomatisierung verwalten"
}
}
File diff suppressed because it is too large Load Diff
-989
View File
@@ -1,989 +0,0 @@
{
"common": {
"save": "Guardar",
"cancel": "Cancelar",
"delete": "Eliminar",
"edit": "Editar",
"add": "Añadir",
"create": "Crear",
"update": "Actualizar",
"close": "Cerrar",
"confirm": "Confirmar",
"back": "Atrás",
"next": "Siguiente",
"loading": "Cargando...",
"error": "Error",
"success": "Éxito",
"warning": "Advertencia",
"info": "Información",
"yes": "Sí",
"no": "No",
"enabled": "Habilitado",
"disabled": "Deshabilitado",
"name": "Nombre",
"description": "Descripción",
"actions": "Acciones",
"status": "Estado",
"search": "Buscar",
"filter": "Filtrar",
"settings": "Configuración",
"language": "Idioma",
"configure": "Configurar",
"test": "Probar",
"docs": "Documentación",
"upload": "Subir",
"active": "Activo",
"type": "Tipo",
"rules": "Reglas",
"allow": "Permitir",
"deny": "Denegar",
"saveConfiguration": "Guardar configuración",
"enabledCount": "{{count}} habilitado",
"validCount": "{{count}} válido",
"activeCount": "{{count}} activo",
"noHistoryAvailable": "Sin historial disponible",
"autoRefreshing": "Actualizando cada {{seconds}}s",
"score": "Puntuación"
},
"navigation": {
"dashboard": "Panel de Control",
"proxyHosts": "Hosts Proxy",
"remoteServers": "Servidores Remotos",
"domains": "Dominios",
"certificates": "Certificados",
"dns": "DNS",
"dnsProviders": "Proveedores DNS",
"plugins": "Plugins",
"security": "Seguridad",
"accessLists": "Listas de Acceso",
"crowdsec": "CrowdSec",
"rateLimiting": "Limitación de Tasa",
"waf": "WAF",
"uptime": "Tiempo de Actividad",
"notifications": "Notificaciones",
"users": "Usuarios",
"tasks": "Tareas",
"settings": "Configuración",
"system": "Sistema",
"email": "Correo Electrónico (SMTP)",
"adminAccount": "Cuenta de Administrador",
"accountManagement": "Gestión de Cuentas",
"import": "Importar",
"caddyfile": "Caddyfile",
"backups": "Copias de Seguridad",
"logs": "Registros",
"securityHeaders": "Cabeceras de Seguridad",
"expandSidebar": "Expandir barra lateral",
"collapseSidebar": "Colapsar barra lateral"
},
"dashboard": {
"title": "Panel de Control",
"description": "Resumen de tu proxy inverso Charon",
"proxyHosts": "Hosts Proxy",
"remoteServers": "Servidores Remotos",
"certificates": "Certificados",
"accessLists": "Listas de Acceso",
"systemStatus": "Estado del Sistema",
"healthy": "Saludable",
"unhealthy": "No Saludable",
"pendingCertificates": "Certificados pendientes",
"allCertificatesValid": "Todos los certificados válidos",
"activeHosts": "{{count}} activo",
"activeServers": "{{count}} activo",
"activeLists": "{{count}} activo",
"validCerts": "{{count}} válido"
},
"settings": {
"title": "Configuración",
"description": "Configura tu instancia de Charon",
"system": "Sistema",
"smtp": "Correo Electrónico (SMTP)",
"account": "Cuenta",
"language": "Idioma",
"languageDescription": "Selecciona tu idioma preferido",
"theme": "Tema",
"themeDescription": "Elige tema claro u oscuro"
},
"proxyHosts": {
"title": "Hosts Proxy",
"description": "Gestiona tus configuraciones de proxy inverso",
"addHost": "Añadir Host Proxy",
"editHost": "Editar Host Proxy",
"deleteHost": "Eliminar Host Proxy",
"domainNames": "Nombres de Dominio",
"forwardHost": "Host de Reenvío",
"forwardPort": "Puerto de Reenvío",
"sslEnabled": "SSL Habilitado",
"sslForced": "Forzar SSL",
"columnName": "Nombre",
"columnDomain": "Dominio",
"columnForwardTo": "Reenviar a",
"columnSSL": "SSL",
"columnFeatures": "Características",
"columnStatus": "Estado",
"columnActions": "Acciones",
"unnamed": "Sin nombre",
"staging": "Pruebas",
"websocket": "WS",
"acl": "ACL",
"noHosts": "Sin hosts proxy",
"noHostsDescription": "Crea tu primer host proxy para comenzar a enrutar el tráfico a tus servicios.",
"selectedCount": "{{count}} host(s) seleccionado(s)",
"selectedCountAll": "(todos)",
"bulkApply": "Aplicar en masa",
"manageACL": "Gestionar ACL",
"deleteConfirmTitle": "¿Eliminar Host Proxy?",
"deleteConfirmMessage": "¿Estás seguro de que deseas eliminar <strong>{{name}}</strong>? Esta acción no se puede deshacer.",
"bulkApplyTitle": "Aplicar Configuración en Masa",
"bulkApplyDescription": "Aplicando configuración a <strong>{{count}}</strong> host(s) seleccionado(s)",
"applyACLTitle": "Aplicar Lista de Acceso",
"applyACLDescription": "Aplicando a <strong>{{count}}</strong> host(s) seleccionado(s). Cada host proxy puede tener una única Lista de Control de Acceso aplicada.",
"applyACL": "Aplicar ACL",
"removeACL": "Eliminar ACL",
"selectedACLCount": "{{selected}} de {{total}} seleccionados",
"selectAll": "Seleccionar todo",
"clear": "Limpiar",
"noEnabledACLs": "No hay listas de acceso habilitadas disponibles",
"removeACLWarning": "Esto eliminará la lista de acceso de los {{count}} host(s) seleccionado(s).",
"publicAccessWarning": "Los hosts serán accesibles públicamente.",
"applyingACLs": "Aplicando ACLs... ({{current}}/{{total}})",
"bulkDeleteTitle": "¿Eliminar {{count}} Host(s) Proxy?",
"bulkDeleteDescription": "Esta acción no se puede deshacer. Se creará una copia de seguridad automáticamente antes de la eliminación.",
"hostsToDelete": "Hosts a eliminar:",
"backupInfo": "Se creará una copia de seguridad automática antes de la eliminación. Puedes restaurar desde la página de Copias de Seguridad si es necesario.",
"creatingBackup": "Creando copia de seguridad...",
"deletePermanently": "Eliminar permanentemente",
"ferryingNewHost": "Transportando nuevo host...",
"ferryingNewHostSub": "Caronte está cruzando el Estigio",
"guidingChanges": "Guiando cambios...",
"guidingChangesSub": "Configuración en tránsito",
"returningToShore": "Regresando a la orilla...",
"returningToShoreSub": "Salida del host en progreso",
"ferryingSouls": "Transportando {{count}} almas...",
"ferryingSoulsSub": "Operación masiva cruzando el río",
"ferryingConfig": "Transportando configuración...",
"sslForce": "Forzar SSL",
"http2Support": "Soporte HTTP/2",
"hstsEnabled": "HSTS Habilitado",
"hstsSubdomains": "HSTS Subdominios",
"blockExploits": "Bloquear Exploits",
"websocketSupport": "Soporte WebSocket",
"apply": "Aplicar",
"applyCount": "Aplicar ({{count}})",
"bulkApplySecurityHeaders": "Perfil de Cabeceras de Seguridad",
"bulkApplySecurityHeadersHelp": "Aplicar un perfil de cabeceras de seguridad a todos los hosts seleccionados",
"noSecurityProfile": "Ninguno (Eliminar Perfil)",
"removeSecurityHeadersWarning": "Esto eliminará el perfil de cabeceras de seguridad de todos los hosts seleccionados, lo que podría reducir su postura de seguridad."
},
"certificates": {
"title": "Certificados SSL",
"description": "Gestiona certificados SSL/TLS para tus hosts proxy",
"addCertificate": "Añadir Certificado",
"uploadCertificate": "Subir Certificado",
"domain": "Dominio",
"status": "Estado",
"expiresAt": "Expira el",
"valid": "Válido",
"pending": "Pendiente",
"expired": "Expirado",
"friendlyName": "Nombre descriptivo",
"certificatePem": "Certificado (PEM)",
"privateKeyPem": "Clave Privada (PEM)",
"uploadSuccess": "Certificado subido exitosamente",
"uploadFailed": "Error al subir el certificado",
"note": "Nota",
"noteText": "Puedes eliminar certificados personalizados y certificados de prueba. Los certificados de Let's Encrypt de producción se renuevan automáticamente y no deben eliminarse a menos que cambies de entorno."
},
"auth": {
"login": "Iniciar Sesión",
"logout": "Cerrar Sesión",
"email": "Correo Electrónico",
"password": "Contraseña",
"username": "Nombre de Usuario",
"signIn": "Iniciar Sesión",
"signOut": "Cerrar Sesión",
"forgotPassword": "¿Olvidaste tu Contraseña?",
"rememberMe": "Recuérdame",
"checkingSetup": "Verificando estado de configuración...",
"loggingIn": "Pagando al barquero...",
"loggingInSub": "Tu óbolo concede el paso",
"loginSuccess": "Sesión iniciada exitosamente",
"loginFailed": "Error al iniciar sesión",
"resetPasswordTitle": "Para restablecer tu contraseña:",
"resetPasswordInstructions": "Ejecuta este comando en tu servidor:"
},
"errors": {
"required": "Este campo es obligatorio",
"invalidEmail": "Dirección de correo electrónico inválida",
"passwordTooShort": "La contraseña debe tener al menos 8 caracteres",
"genericError": "Ocurrió un error. Por favor, inténtalo de nuevo.",
"networkError": "Error de red. Por favor, verifica tu conexión.",
"unauthorized": "No autorizado. Por favor, inicia sesión de nuevo.",
"notFound": "Recurso no encontrado",
"serverError": "Error del servidor. Por favor, inténtalo más tarde."
},
"notifications": {
"saveSuccess": "Cambios guardados exitosamente",
"deleteSuccess": "Eliminado exitosamente",
"createSuccess": "Creado exitosamente",
"updateSuccess": "Actualizado exitosamente",
"saveFailed": "Error al guardar cambios",
"deleteFailed": "Error al eliminar",
"createFailed": "Error al crear",
"updateFailed": "Error al actualizar",
"partialFailed": "Completado con {{count}} error(es)"
},
"security": {
"title": "Seguridad",
"description": "Configura las capas de seguridad para tu proxy inverso",
"cerberusDashboard": "Panel de Cerberus",
"cerberusActive": "Activo",
"cerberusDisabled": "Deshabilitado",
"cerberusReadyMessage": "Todas las cabezas de seguridad están listas para configuración",
"cerberusDisabledMessage": "Habilita Cerberus en Configuración del Sistema para activar las funciones de seguridad",
"featuresUnavailable": "Funciones de Seguridad No Disponibles",
"featuresUnavailableMessage": "Cerberus controla CrowdSec, Coraza WAF, Control de Acceso y Limitación de Tasa. Habilita el interruptor de Cerberus en Configuración del Sistema para activar estas funciones.",
"learnMore": "Más información",
"adminWhitelist": "Lista Blanca de Admin",
"adminWhitelistDescription": "Configura direcciones IP que omiten las verificaciones de seguridad",
"commaSeparatedCIDR": "CIDR/IPs separados por comas",
"generateToken": "Generar Token",
"generateTokenTooltip": "Generar un token de emergencia para acceso de emergencia",
"enableCerberusFirst": "Habilita Cerberus primero",
"layer": "Capa",
"crowdsec": {
"title": "CrowdSec",
"subtitle": "Reputación IP e Inteligencia de Amenazas",
"badge": "IDS",
"enabledDescription": "Protege contra: Atacantes conocidos, botnets, fuerza bruta",
"disabledDescription": "Sistema de Prevención de Intrusiones impulsado por inteligencia de amenazas comunitaria",
"processRunning": "Ejecutando (PID {{pid}})",
"processStopped": "Proceso detenido",
"toggleTooltip": "Alternar protección CrowdSec"
},
"acl": {
"title": "Control de Acceso",
"subtitle": "Filtrado basado en IP y Geo",
"badge": "ACL",
"description": "Protege contra: IPs no autorizadas, ataques basados en geolocalización, amenazas internas",
"manageLists": "Gestionar Listas",
"toggleTooltip": "Alternar Control de Acceso"
},
"waf": {
"title": "Coraza WAF",
"subtitle": "Inspección y filtrado de solicitudes",
"badge": "WAF",
"enabledDescription": "Protege contra: Inyección SQL, XSS, RCE, exploits de día cero*",
"disabledDescription": "Firewall de Aplicaciones Web con OWASP Core Rule Set",
"toggleTooltip": "Alternar Coraza WAF"
},
"rateLimit": {
"title": "Limitación de Tasa",
"subtitle": "Control de volumen de solicitudes",
"badge": "Rate",
"description": "Protege contra: Ataques DDoS, relleno de credenciales, abuso de API",
"toggleTooltip": "Alternar Limitación de Tasa"
},
"notifications": "Notificaciones",
"threeHeadsTurn": "Tres cabezas giran...",
"cerberusConfigUpdating": "Configuración de Cerberus actualizándose",
"summoningGuardian": "Invocando al guardián...",
"crowdsecStarting": "CrowdSec está iniciando",
"guardianRests": "El guardián descansa...",
"crowdsecStopping": "CrowdSec está deteniéndose",
"strengtheningGuard": "Fortaleciendo la guardia...",
"wardsActivating": "Protecciones activándose"
},
"accessLists": {
"title": "Listas de Acceso",
"description": "Gestiona el control de acceso basado en IP",
"createAccessList": "Crear Lista de Acceso",
"editAccessList": "Editar Lista de Acceso",
"deleteAccessList": "Eliminar Lista de Acceso",
"deleteSelected": "Eliminar ({{count}})",
"bestPractices": "Mejores Prácticas",
"testIP": "Probar IP",
"testIPAddress": "Probar Dirección IP",
"ipAddress": "Dirección IP",
"accessList": "Lista de Acceso",
"rfc1918Only": "Solo RFC1918",
"cgnatWarning": {
"title": "Advertencia de CGNAT y Red Móvil",
"message": "Si usas T-Mobile 5G Home Internet, Starlink u otras conexiones CGNAT, el bloqueo geográfico puede no funcionar como se espera. Tu IP puede parecer de una ubicación de centro de datos, no de tu ubicación física.",
"solutionsTitle": "Soluciones si estás bloqueado:",
"solution1": "Accede vía IP de red local (192.168.x.x) - Las ACLs no aplican a IPs locales",
"solution2": "Añade tu IP actual a una ACL de lista blanca",
"solution3": "Usa \"Probar IP\" abajo para verificar qué IP ve el servidor",
"solution4": "Deshabilita la ACL temporalmente para recuperar acceso",
"solution5": "Conéctate vía VPN con una dirección IP conocida"
},
"deleteConfirmTitle": "Eliminar Lista de Acceso",
"deleteConfirmMessage": "¿Estás seguro de que deseas eliminar \"{{name}}\"? Se creará una copia de seguridad antes de la eliminación.",
"bulkDeleteConfirmTitle": "Eliminar Listas de Acceso Seleccionadas",
"bulkDeleteConfirmMessage": "¿Estás seguro de que deseas eliminar {{count}} lista(s) de acceso? Se creará una copia de seguridad antes de la eliminación.",
"deleteItems": "Eliminar {{count}} Elementos",
"deleting": "Eliminando...",
"noAccessLists": "Sin Listas de Acceso",
"noAccessListsDescription": "Crea tu primera lista de acceso para controlar quién puede acceder a tus servicios"
},
"rateLimiting": {
"title": "Configuración de Limitación de Tasa",
"description": "Controla las tasas de solicitudes para proteger tus servicios del abuso",
"aboutTitle": "Sobre la Limitación de Tasa",
"aboutDescription": "La limitación de tasa ayuda a proteger tus servicios del abuso, ataques de fuerza bruta y consumo excesivo de recursos. Configura límites por dirección IP del cliente.",
"currentlyActive": "Actualmente Activo",
"currentConfig": "{{requests}} solicitudes/seg • Ráfaga: {{burst}} • Ventana: {{window}}s",
"enableRateLimiting": "Habilitar Limitación de Tasa",
"enabledMessage": "La limitación de tasa está activa y protegiendo tus servicios",
"disabledMessage": "Habilita para comenzar a limitar las tasas de solicitudes",
"configuration": "Configuración",
"requestsPerSecond": "Solicitudes por Segundo",
"requestsPerSecondHelper": "Máximo de solicitudes permitidas por segundo por cliente",
"burst": "Ráfaga",
"burstHelper": "Permitir ráfagas cortas por encima del límite de tasa",
"windowSeconds": "Ventana (segundos)",
"windowHelper": "Ventana de tiempo para cálculos de tasa",
"rateLimitingDisabled": "Limitación de Tasa Deshabilitada",
"enableToConfigureMessage": "Habilita la limitación de tasa para configurar límites de solicitudes y proteger tus servicios",
"adjustingGates": "Ajustando las puertas...",
"configurationUpdating": "Configuración de limitación de tasa actualizándose"
},
"wafConfig": {
"title": "Configuración WAF",
"description": "Gestiona los conjuntos de reglas del Firewall de Aplicaciones Web Coraza",
"addRuleSet": "Añadir Conjunto de Reglas",
"createRuleSet": "Crear Conjunto de Reglas",
"editRuleSet": "Editar Conjunto de Reglas",
"updateRuleSet": "Actualizar Conjunto de Reglas",
"deleteRuleSet": "Eliminar Conjunto de Reglas",
"ruleSyntax": "Sintaxis de Reglas",
"aboutTitle": "Sobre los Conjuntos de Reglas WAF",
"aboutDescription": "Los conjuntos de reglas definen reglas ModSecurity/Coraza que inspeccionan y filtran solicitudes HTTP. El WAF habilita automáticamente SecRuleEngine On y SecRequestBodyAccess On para tus reglas.",
"deleteConfirmTitle": "Eliminar Conjunto de Reglas",
"deleteConfirmMessage": "¿Estás seguro de que deseas eliminar \"{{name}}\"? Esta acción no se puede deshacer.",
"noRuleSets": "Sin Conjuntos de Reglas",
"noRuleSetsDescription": "Crea tu primer conjunto de reglas WAF para proteger tus servicios de ataques web",
"ruleSetName": "Nombre del Conjunto de Reglas",
"mode": "Modo",
"blocking": "Bloqueo",
"detection": "Detección",
"detectionOnly": "Solo Detección",
"blockingDescription": "Las solicitudes maliciosas serán bloqueadas con HTTP 403",
"detectionDescription": "Las solicitudes maliciosas serán registradas pero no bloqueadas",
"sourceUrl": "URL de Origen (opcional)",
"sourceUrlHelper": "URL para obtener reglas. Déjalo vacío para usar contenido en línea.",
"ruleContent": "Contenido de Reglas",
"ruleContentHelper": "Sintaxis de reglas ModSecurity/Coraza. Cada SecRule debe estar en su propia línea.",
"source": "Origen",
"url": "URL",
"inline": "En línea",
"lastUpdated": "Última Actualización",
"rulesCount": "{{count}} regla(s)",
"quickStartPreset": "Inicio Rápido con Preajuste",
"choosePreset": "Elegir un preajuste...",
"cerberusAwakens": "Cerberus despierta...",
"guardianWatches": "El guardián de las puertas vigila",
"forgingDefenses": "Forjando nuevas defensas...",
"rulesInscribing": "Reglas de seguridad inscribiéndose",
"loweringBarrier": "Bajando una barrera...",
"defenseRemoved": "Capa de defensa eliminada",
"loadingWaf": "Cargando configuración WAF...",
"loadingFailed": "Error al cargar la configuración WAF"
},
"uptime": {
"title": "Monitoreo de Disponibilidad",
"description": "Monitorea la salud y disponibilidad de tus servicios",
"autoRefresh": "Actualizando cada 30s",
"noMonitors": "No se encontraron monitores. Añade un Host Proxy o Servidor Remoto para comenzar a monitorear.",
"proxyHosts": "Hosts Proxy",
"remoteServers": "Servidores Remotos",
"otherMonitors": "Otros Monitores",
"configureMonitor": "Configurar Monitor",
"monitorName": "Nombre",
"maxRetries": "Reintentos Máximos",
"maxRetriesHelper": "Número de fallos consecutivos antes de enviar una alerta.",
"checkInterval": "Intervalo de Verificación (segundos)",
"saveChanges": "Guardar Cambios",
"saving": "Guardando...",
"latency": "Latencia",
"lastCheck": "Última Verificación",
"never": "Nunca",
"paused": "PAUSADO",
"pause": "Pausar",
"unpause": "Reanudar",
"triggerCheck": "Activar verificación de salud inmediata",
"healthCheckTriggered": "Verificación de salud activada",
"monitorDeleted": "Monitor eliminado",
"deleteConfirm": "¿Eliminar este monitor? Esto no se puede deshacer."
},
"domains": {
"title": "Dominios",
"description": "Administra tus dominios",
"addDomain": "Agregar Dominio",
"deleteDomain": "Eliminar Dominio",
"domainName": "Nombre del Dominio",
"placeholder": "ejemplo.com",
"adding": "Agregando...",
"added": "Agregado {{date}}",
"deleteConfirm": "¿Estás seguro de que quieres eliminar este dominio?",
"createFailed": "Error al crear dominio",
"deleteFailed": "Error al eliminar dominio",
"loadError": "Error al cargar dominios"
},
"remoteServers": {
"title": "Servidores Remotos",
"description": "Administra servidores backend para tus proxy hosts",
"addServer": "Agregar Servidor",
"editServer": "Editar Servidor",
"deleteServer": "Eliminar Servidor Remoto",
"noServers": "Sin Servidores Remotos",
"noServersDescription": "Agrega servidores para seleccionar backends rápidamente al crear proxy hosts",
"columnName": "Nombre",
"columnProvider": "Proveedor",
"columnHost": "Host",
"columnPort": "Puerto",
"host": "Host",
"port": "Puerto",
"user": "Usuario",
"gridView": "Vista en cuadrícula",
"listView": "Vista en lista",
"deleteConfirm": "¿Estás seguro de que quieres eliminar \"{{name}}\"? Esta acción no se puede deshacer.",
"deleting": "Eliminando..."
},
"notificationProviders": {
"title": "Proveedores de Notificaciones",
"description": "Administra proveedores de notificaciones y plantillas",
"addProvider": "Agregar Proveedor",
"addNewProvider": "Agregar Nuevo Proveedor",
"providerName": "Nombre",
"urlWebhook": "URL / Webhook",
"urlRequired": "URL es requerida",
"genericWebhook": "Webhook Genérico (Shoutrrr)",
"customWebhook": "Webhook Personalizado (JSON)",
"shoutrrrHelp": "Para el formato Shoutrrr, ver",
"jsonPayloadTemplate": "Plantilla de Carga JSON",
"minimalTemplate": "Plantilla Mínima",
"detailedTemplate": "Plantilla Detallada",
"customTemplate": "Personalizada",
"template": "Plantilla",
"availableVariables": "Variables disponibles: .Title, .Message, .Status, .Name, .Latency, .Time. Soporta webhook, Discord, Slack, Gotify y servicios genéricos.",
"notificationEvents": "Eventos de Notificación",
"proxyHosts": "Proxy Hosts",
"remoteServers": "Servidores Remotos",
"domainsNotify": "Dominios",
"certificates": "Certificados",
"uptime": "Tiempo de Actividad",
"preview": "Vista Previa",
"previewError": "Error de Vista Previa",
"previewResult": "Resultado de Vista Previa",
"externalTemplates": "Plantillas Externas",
"manageTemplates": "Administrar Plantillas",
"hideTemplates": "Ocultar",
"newTemplate": "Nueva Plantilla",
"createTemplate": "Crear Plantilla",
"templateType": "Tipo de Plantilla",
"minimal": "Mínima",
"detailed": "Detallada",
"custom": "Personalizada",
"configJson": "Config (JSON/plantilla)",
"noExternalTemplates": "Sin plantillas externas. Usa el formulario arriba para crear una.",
"deleteTemplateConfirm": "¿Eliminar plantilla?",
"sendTest": "Enviar Notificación de Prueba",
"testSent": "¡Notificación de prueba enviada!",
"testFailed": "Error al enviar prueba",
"deleteConfirm": "¿Estás seguro?",
"noProviders": "No hay proveedores de notificaciones configurados."
},
"users": {
"title": "Gestión de Usuarios",
"inviteUser": "Invitar Usuario",
"inviteSent": "Correo de invitación enviado",
"inviteCreated": "Usuario invitado - copia el enlace de invitación abajo",
"inviteFailed": "Error al invitar usuario",
"inviteLinkCopied": "Enlace de invitación copiado al portapapeles",
"inviteSuccess": "Usuario Invitado Exitosamente",
"inviteEmailSent": "Se ha enviado un correo de invitación al usuario.",
"inviteEmailNotSent": "No se envió el correo. Comparte el enlace de invitación manualmente.",
"inviteLink": "Enlace de Invitación",
"copyInviteLink": "Copiar enlace de invitación",
"expires": "Expira",
"done": "Listo",
"emailAddress": "Dirección de Correo",
"role": "Rol",
"roleUser": "Usuario",
"roleAdmin": "Administrador",
"permissionMode": "Modo de Permisos",
"allowAllBlacklist": "Permitir Todo (Lista Negra)",
"denyAllWhitelist": "Denegar Todo (Lista Blanca)",
"allowAllDescription": "El usuario puede acceder a todos los hosts EXCEPTO los seleccionados abajo",
"denyAllDescription": "El usuario SOLO puede acceder a los hosts seleccionados abajo",
"blockedHosts": "Hosts Bloqueados",
"allowedHosts": "Hosts Permitidos",
"noProxyHosts": "No hay proxy hosts configurados",
"sendInvite": "Enviar Invitación",
"editPermissions": "Editar Permisos",
"permissionsUpdated": "Permisos actualizados",
"permissionsUpdateFailed": "Error al actualizar permisos",
"savePermissions": "Guardar Permisos",
"userUpdated": "Usuario actualizado",
"userUpdateFailed": "Error al actualizar usuario",
"userDeleted": "Usuario eliminado",
"userDeleteFailed": "Error al eliminar usuario",
"columnUser": "Usuario",
"columnRole": "Rol",
"columnPermissions": "Permisos",
"noName": "(Sin nombre)",
"pendingInvite": "Invitación Pendiente",
"inviteExpired": "Invitación Expirada",
"whitelist": "Lista Blanca",
"blacklist": "Lista Negra",
"deleteConfirm": "¿Estás seguro de que quieres eliminar este usuario?",
"deleteUser": "Eliminar usuario",
"inviteUrlPreview": "Vista previa del enlace de invitación",
"inviteUrlWarning": "La URL de la aplicación no está configurada. Este enlace puede no funcionar para usuarios externos.",
"configureApplicationUrl": "Configurar URL de aplicación",
"resendInvite": "Reenviar invitación",
"inviteResent": "Invitación reenviada exitosamente",
"inviteCreatedNoEmail": "Nueva invitación creada. No se pudo enviar el correo electrónico.",
"resendFailed": "Error al reenviar la invitación"
},
"dashboard": {
"title": "Panel de Control",
"description": "Resumen de tu proxy inverso Charon",
"proxyHosts": "Hosts Proxy",
"remoteServers": "Servidores Remotos",
"certificates": "Certificados",
"certificateStatus": "Estado de Certificados",
"accessLists": "Listas de Acceso",
"systemStatus": "Estado del Sistema",
"healthy": "Saludable",
"unhealthy": "No Saludable",
"pendingCertificates": "Certificados pendientes",
"allCertificatesValid": "Todos los certificados válidos",
"activeHosts": "{{count}} activo",
"activeServers": "{{count}} activo",
"activeLists": "{{count}} activo",
"validCerts": "{{count}} válido"
},
"setup": {
"welcomeTitle": "Bienvenido a Charon",
"welcomeDescription": "Crea tu cuenta de administrador para comenzar.",
"nameLabel": "Nombre",
"namePlaceholder": "Usuario Admin",
"emailLabel": "Correo Electrónico",
"emailPlaceholder": "admin@ejemplo.com",
"invalidEmail": "Por favor ingresa una dirección de correo válida",
"passwordLabel": "Contraseña",
"createAdminButton": "Crear Cuenta de Admin",
"setupFailed": "Error en la configuración"
},
"acceptInvite": {
"title": "Aceptar Invitación",
"invalidLink": "Enlace Inválido",
"invalidLinkMessage": "Este enlace de invitación es inválido o está incompleto.",
"goToLogin": "Ir a Iniciar Sesión",
"validating": "Validando invitación...",
"invitationInvalid": "Invitación Inválida",
"expiredOrInvalid": "Esta invitación ha expirado o es inválida.",
"accountCreated": "¡Cuenta Creada!",
"accountCreatedMessage": "Tu cuenta ha sido configurada exitosamente. Redirigiendo al inicio de sesión...",
"youveBeenInvited": "¡Has sido invitado!",
"completeSetup": "Completa la configuración de tu cuenta para",
"yourName": "Tu Nombre",
"namePlaceholder": "Juan Pérez",
"confirmPassword": "Confirmar Contraseña",
"passwordsDoNotMatch": "Las contraseñas no coinciden",
"createAccount": "Crear Cuenta",
"welcomeMessage": "¡Bienvenido, {{email}}! Ya puedes iniciar sesión.",
"acceptFailed": "Error al aceptar la invitación"
},
"tasks": {
"title": "Tareas",
"description": "Administrar tareas del sistema y ver registros"
},
"backups": {
"title": "Copias de Seguridad",
"description": "Administrar copias de seguridad de la base de datos",
"configuration": "Configuración",
"intervalDays": "Intervalo de Respaldo (Días)",
"retentionDays": "Período de Retención (Días)",
"saveSettings": "Guardar Configuración",
"settingsSaved": "Configuración de respaldo guardada",
"settingsFailed": "Error al guardar configuración: {{error}}",
"createBackup": "Crear Respaldo",
"createSuccess": "Respaldo creado exitosamente",
"createFailed": "Error al crear respaldo: {{error}}",
"restoreBackup": "Restaurar Respaldo",
"restore": "Restaurar",
"restoreSuccess": "Respaldo restaurado exitosamente. Por favor reinicie el contenedor.",
"restoreFailed": "Error al restaurar respaldo: {{error}}",
"restoreConfirmMessage": "¿Está seguro de que desea restaurar este respaldo? Los datos actuales serán sobrescritos. Deberá reiniciar el contenedor después de la restauración.",
"deleteBackup": "Eliminar Respaldo",
"deleteSuccess": "Respaldo eliminado exitosamente",
"deleteFailed": "Error al eliminar respaldo: {{error}}",
"deleteConfirmMessage": "¿Está seguro de que desea eliminar \"{{filename}}\"? Esta acción no se puede deshacer.",
"download": "Descargar",
"filename": "Nombre de Archivo",
"size": "Tamaño",
"createdAt": "Creado En",
"auto": "Auto",
"manual": "Manual",
"noBackups": "Sin Respaldos",
"noBackupsDescription": "Cree su primer respaldo para proteger su configuración"
},
"logs": {
"title": "Registros",
"description": "Ver registros del sistema y de acceso",
"logFiles": "Archivos de Registro",
"noLogFiles": "No se encontraron archivos de registro",
"noLogSelected": "Ningún Registro Seleccionado",
"selectLogDescription": "Seleccione un archivo de registro de la lista para ver su contenido",
"showingEntries": "Mostrando {{from}} a {{to}} de {{total}} entradas",
"pageOf": "Página {{current}} de {{total}}"
},
"account": {
"title": "Configuración de Cuenta",
"profile": "Perfil",
"profileDescription": "Actualiza tu información personal.",
"saveProfile": "Guardar Perfil",
"profileUpdated": "Perfil actualizado exitosamente",
"profileUpdateFailed": "Error al actualizar perfil: {{error}}",
"certificateEmail": "Email de Certificado",
"certificateEmailDescription": "Este email se usa para notificaciones y recuperación de Let's Encrypt.",
"useAccountEmail": "Usar mi email de cuenta ({{email}})",
"customEmail": "Email Personalizado",
"saveCertificateEmail": "Guardar Email de Certificado",
"certEmailUpdated": "Email de certificado actualizado",
"certEmailUpdateFailed": "Error al actualizar email de certificado: {{error}}",
"changePassword": "Cambiar Contraseña",
"changePasswordDescription": "Actualiza la contraseña de tu cuenta por seguridad.",
"currentPassword": "Contraseña Actual",
"newPassword": "Nueva Contraseña",
"confirmNewPassword": "Confirmar Nueva Contraseña",
"updatePassword": "Actualizar Contraseña",
"passwordsDoNotMatch": "Las contraseñas no coinciden",
"passwordUpdated": "Contraseña actualizada exitosamente",
"passwordUpdateFailed": "Error al actualizar contraseña",
"apiKey": "Clave API",
"apiKeyDescription": "Usa esta clave para autenticarte con la API programáticamente. ¡Mantenla en secreto!",
"copyToClipboard": "Copiar al portapapeles",
"regenerateApiKey": "Regenerar Clave API",
"apiKeyCopied": "Clave API copiada al portapapeles",
"apiKeyRegenerated": "Clave API regenerada exitosamente",
"apiKeyRegenerateFailed": "Error al regenerar clave API: {{error}}",
"securityNotice": "Aviso de Seguridad",
"securityNoticeMessage": "Nunca compartas tu clave API o contraseña con nadie. Si crees que tus credenciales han sido comprometidas, regenera tu clave API inmediatamente.",
"confirmPassword": "Confirmar Contraseña",
"confirmPasswordDescription": "Por favor ingresa tu contraseña actual para confirmar estos cambios.",
"enterPassword": "Ingresa tu contraseña",
"confirmAndUpdate": "Confirmar y Actualizar",
"updateCertEmailTitle": "¿Actualizar Email de Certificado?",
"updateCertEmailDescription": "Estás cambiando tu email de cuenta a {{email}}. ¿Quieres usar este nuevo email para certificados SSL también?",
"yesUpdateCertEmail": "Sí, actualizar email de certificado también",
"noKeepEmail": "No, seguir usando {{email}}"
},
"importCaddy": {
"title": "Importar Caddyfile",
"enterCaddyfileContent": "Por favor, ingrese el contenido del Caddyfile",
"cancelConfirm": "¿Está seguro de que desea cancelar esta importación?",
"noDomainsFound": "No se encontraron dominios en el Caddyfile",
"emptyFileWarning": "El archivo importado parece estar vacío o no contiene directivas reverse_proxy válidas. Por favor, verifique el contenido del archivo a continuación.",
"uploadOrPaste": "Subir o pegar Caddyfile",
"description": "Importe un Caddyfile existente para crear automáticamente configuraciones de host proxy. El sistema detectará conflictos y le permitirá revisar los cambios antes de confirmar.",
"uploadCaddyfile": "Subir Caddyfile",
"orPasteContent": "o pegar contenido",
"caddyfileContent": "Contenido del Caddyfile",
"processing": "Procesando...",
"parseAndReview": "Analizar y revisar",
"multiSiteImport": "Importación multi-sitio"
},
"importCrowdSec": {
"title": "Paquetes de Configuración de CrowdSec",
"description": "Suba un paquete tar.gz o zip. Se crea una copia de seguridad antes de importar para que pueda revertir si es necesario. Exporte el paquete actual desde el panel de Cerberus o la página de configuración de CrowdSec.",
"import": "Importar",
"configImported": "Configuración de CrowdSec importada",
"importFailed": "Importación fallida: {{error}}",
"creatingBackup": "Creando copia de seguridad...",
"importing": "Importando CrowdSec..."
},
"systemSettings": {
"title": "Configuración del Sistema",
"settingsSaved": "Configuración del sistema guardada",
"settingsFailed": "Error al guardar la configuración: {{error}}",
"featureFlagUpdated": "Flag de característica actualizado",
"featureFlagFailed": "Error al actualizar el flag: {{error}}",
"updatingFeatures": "Actualizando características...",
"applyingChanges": "Aplicando cambios de configuración",
"pleaseWait": "Por favor espere",
"saveSettings": "Guardar Configuración",
"features": {
"title": "Características",
"description": "Habilitar o deshabilitar características opcionales para tu instancia de Charon.",
"cerberus": "Suite de Seguridad Cerberus",
"cerberusTooltip": "Características de seguridad avanzadas incluyendo WAF, Listas de Acceso, Limitación de Tasa y CrowdSec.",
"crowdsecConsole": "Inscripción en Consola CrowdSec",
"crowdsecConsoleTooltip": "Permitir inscribir este nodo con la Consola CrowdSec para gestión centralizada de flota.",
"uptimeMonitoring": "Monitoreo de Disponibilidad",
"uptimeMonitoringTooltip": "Monitorear la disponibilidad de tus hosts proxy y servidores remotos."
},
"general": {
"title": "Configuración General",
"description": "Configurar preferencias de Caddy y UI.",
"caddyAdminApi": "Endpoint de API Admin de Caddy",
"caddyAdminApiHelper": "URL a la API admin de Caddy (usualmente en puerto 2019)",
"sslProvider": "Proveedor SSL",
"selectSslProvider": "Seleccionar proveedor SSL",
"sslAuto": "Auto (Recomendado)",
"sslLetsEncryptProd": "Let's Encrypt (Producción)",
"sslLetsEncryptStaging": "Let's Encrypt (Pruebas)",
"sslZeroSSL": "ZeroSSL",
"sslProviderHelper": "Elige la Autoridad Certificadora. 'Auto' usa Let's Encrypt con ZeroSSL como respaldo.",
"domainLinkBehavior": "Comportamiento de Enlaces de Dominio",
"selectLinkBehavior": "Seleccionar comportamiento de enlace",
"sameTab": "Misma Pestaña",
"newTab": "Nueva Pestaña (Por defecto)",
"newWindow": "Nueva Ventana",
"domainLinkBehaviorHelper": "Controla cómo se abren los enlaces de dominio en la lista de Hosts Proxy.",
"languageHelper": "Selecciona tu idioma preferido. Los cambios surten efecto inmediatamente."
}, "applicationUrl": {
"title": "URL de aplicación",
"description": "Configure la URL pública utilizada para enlaces y correos electrónicos de cara al usuario.",
"label": "URL de aplicación",
"helper": "La URL pública donde los usuarios acceden a Charon (por ejemplo, https://charon.example.com). Se utiliza en correos de invitación y enlaces de restablecimiento de contraseña.",
"infoMessage": "Esta URL se utiliza al enviar correos electrónicos de invitación. Si no está configurada, Charon usará la URL de la solicitud actual del navegador, que puede no ser accesible desde redes externas.",
"invalidUrl": "Ingrese una URL válida que comience con http:// o https://",
"notConfiguredWarning": "La URL de la aplicación no está configurada. Los correos de invitación usarán la URL actual del navegador, que puede no ser accesible desde redes externas.",
"testButton": "Probar URL",
"testSuccess": "URL abierta exitosamente",
"testFailed": "Error al abrir URL"
}, "systemStatus": {
"title": "Estado del Sistema",
"service": "Servicio",
"version": "Versión",
"buildTime": "Hora de Compilación",
"gitCommit": "Commit de Git",
"notAvailable": "N/D",
"fetchError": "No se pudo obtener el estado del sistema. Por favor verifica tu conexión."
},
"updates": {
"title": "Actualizaciones de Software",
"description": "Buscar nuevas versiones de Charon.",
"currentVersion": "Versión Actual",
"latestVersion": "Última Versión",
"updateAvailable": "Actualización Disponible",
"newVersionAvailable": "¡Una nueva versión de Charon está disponible!",
"viewReleaseNotes": "Ver Notas de Versión",
"upToDate": "Actualizado",
"runningLatest": "Estás ejecutando la última versión de Charon.",
"checkForUpdates": "Buscar Actualizaciones"
}
},
"crowdsecConfig": {
"title": "Configuración de CrowdSec",
"loading": "Cargando configuración de CrowdSec...",
"loadError": "Error al cargar el estado de CrowdSec",
"noStatus": "Estado de CrowdSec no disponible",
"note": "Las actualizaciones automáticas y la gestión de plantillas son proporcionadas por Cerberus. Algunas funciones pueden estar limitadas si Cerberus está deshabilitado.",
"consoleEnrollment": {
"title": "Inscripción en Consola",
"status": "Estado",
"notEnrolled": "No inscrito",
"enrolled": "Inscrito",
"pending": "Pendiente",
"enrolling": "Inscribiendo...",
"pendingAcceptance": "Pendiente de aceptación",
"unknown": "Desconocido",
"lapiNotReady": "LAPI aún no está listo. CrowdSec puede estar iniciando.",
"checkLapiStatus": "Verificar estado de LAPI",
"startCrowdSec": "Iniciar CrowdSec",
"goToSecurity": "Ir al Panel de Seguridad",
"enrollmentToken": "Token de inscripción",
"tokenPlaceholder": "Pegue su token de inscripción de la Consola CrowdSec",
"agentName": "Nombre del agente (opcional)",
"agentPlaceholder": "mi-instancia-charon",
"tenant": "Inquilino/Organización (opcional)",
"tenantPlaceholder": "id-org-de-consola",
"acknowledge": "Reconozco que esto rotará las credenciales si ya está inscrito",
"enroll": "Inscribir",
"rotateKey": "Rotar clave",
"retryEnrollment": "Reintentar inscripción",
"lapiMustBeReady": "LAPI debe estar listo para inscribir",
"lapiMustBeReadyRotate": "LAPI debe estar listo para rotar la clave",
"lapiMustBeReadyRetry": "LAPI debe estar listo para reintentar la inscripción",
"tokenRequired": "Se requiere token de inscripción",
"actionRequired": "Acción requerida",
"pendingAcceptanceText": "Su solicitud de inscripción ha sido enviada. Por favor acepte esta máquina en la Consola CrowdSec en",
"pendingAcceptanceNote": " Una vez aceptado, el estado se actualizará automáticamente.",
"agent": "Agente",
"tenantLabel": "Inquilino",
"lastAttempt": "Último intento",
"enrolledAt": "Inscrito",
"correlationId": "ID de correlación"
},
"reenroll": {
"title": "Opciones de reinscripción",
"description": "¿Necesita cambiar claves de inscripción o moverse a una organización diferente?",
"getNewKey": "Obtener nueva clave de inscripción de la Consola",
"withNewKey": "Reinscribir con nueva clave",
"newEnrollmentKey": "Nueva clave de inscripción",
"keyPlaceholder": "Pegue la nueva clave de inscripción",
"agentPlaceholder": "Dejar vacío para mantener el nombre actual",
"tenantOptional": "Inquilino/Organización (opcional)",
"orgPlaceholder": "Dejar vacío para mantener el actual",
"reenroll": "Reinscribir",
"reenrolling": "Reinscribiendo...",
"clearState": "Limpiar estado de inscripción",
"clearing": "Limpiando...",
"clearConfirm": "Esto limpiará el estado de inscripción local. Puede que necesite reinscribirse. ¿Continuar?"
},
"packages": {
"title": "Paquetes de configuración",
"description": "Exporte o importe paquetes de configuración de CrowdSec (tar.gz/zip). Se crea una copia de seguridad antes de importar.",
"export": "Exportar",
"import": "Importar",
"importing": "Importando..."
},
"presets": {
"title": "Plantillas",
"description": "Aplique plantillas de configuración curadas o del hub.",
"searchPlaceholder": "Buscar plantillas...",
"sortAlpha": "Ordenar: A-Z",
"sortSource": "Ordenar: Fuente",
"curated": "Curada",
"hub": "Hub",
"noResults": "No hay plantillas que coincidan con \"{{query}}\"",
"pullPreview": "Obtener vista previa",
"applyPreset": "Aplicar plantilla",
"hubUnreachable": "Hub de CrowdSec inalcanzable. Las plantillas del hub pueden no funcionar.",
"retry": "Reintentar",
"useCached": "Usar en caché",
"targetFile": "Archivo destino",
"selectFileBelow": "(seleccione un archivo de configuración abajo)",
"cacheKey": "Clave de caché",
"etag": "ETag",
"source": "Fuente",
"fetched": "Obtenido",
"previewYaml": "Vista previa (YAML):",
"previewUnavailable": "Vista previa no disponible",
"applied": "Aplicado",
"backup": "Respaldo",
"reload": "Recargar",
"required": "Requerido",
"method": "Método",
"filesystem": "Sistema de archivos",
"loadCached": "Cargar vista previa en caché",
"applyDisabled": "Aplicar deshabilitado mientras el hub está fuera de línea.",
"noPresets": "No hay plantillas disponibles. Asegúrese de que Cerberus esté habilitado."
},
"files": {
"title": "Editar archivos de configuración",
"selectFile": "Seleccionar un archivo...",
"refresh": "Actualizar"
},
"bannedIps": {
"title": "IPs bloqueadas",
"banIp": "Bloquear IP",
"enableFirst": "Habilite CrowdSec para gestionar IPs bloqueadas",
"loading": "Cargando IPs bloqueadas...",
"loadFailed": "Error al cargar IPs bloqueadas",
"none": "No hay IPs bloqueadas",
"ip": "IP",
"reason": "Razón",
"duration": "Duración",
"bannedAt": "Bloqueado el",
"source": "Fuente",
"actions": "Acciones",
"unban": "Desbloquear"
},
"banModal": {
"title": "Bloquear dirección IP",
"ipLabel": "Dirección IP",
"durationLabel": "Duración",
"duration1h": "1 hora",
"duration4h": "4 horas",
"duration24h": "24 horas",
"duration7d": "7 días",
"duration30d": "30 días",
"durationPermanent": "Permanente",
"reasonLabel": "Razón",
"reasonPlaceholder": "Razón para bloquear esta IP...",
"submit": "Bloquear IP"
},
"unbanModal": {
"title": "Confirmar desbloqueo",
"confirm": "¿Está seguro de que desea desbloquear",
"submit": "Desbloquear"
}
},
"smtp": {
"title": "Configuración de Correo (SMTP)",
"description": "Configure los ajustes SMTP para habilitar notificaciones por correo e invitaciones de usuarios.",
"configuration": "Configuración SMTP",
"configDescription": "Ingrese los detalles de su servidor SMTP para habilitar la funcionalidad de correo.",
"host": "Host SMTP",
"port": "Puerto",
"username": "Nombre de usuario",
"password": "Contraseña",
"passwordHelper": "Use contraseña específica de aplicación para Gmail",
"fromAddress": "Dirección del remitente",
"encryption": "Cifrado",
"selectEncryption": "Seleccionar cifrado",
"starttls": "STARTTLS (Recomendado)",
"sslTls": "SSL/TLS",
"none": "Ninguno",
"testConnection": "Probar conexión",
"saveSettings": "Guardar configuración",
"settingsSaved": "Configuración SMTP guardada exitosamente",
"saveFailed": "Error al guardar la configuración SMTP",
"connectionSuccess": "Conexión SMTP exitosa",
"connectionFailed": "Conexión SMTP fallida",
"testFailed": "Error al probar la conexión SMTP",
"configured": "SMTP configurado",
"notConfigured": "SMTP no configurado",
"active": "Activo",
"inactive": "Inactivo",
"sendTestEmail": "Enviar correo de prueba",
"testEmailDescription": "Envíe un correo de prueba para verificar que su configuración SMTP funciona correctamente.",
"sendTest": "Enviar prueba",
"testEmailSent": "Correo de prueba enviado exitosamente",
"testEmailFailed": "Error al enviar el correo de prueba",
"needHelp": "¿Necesita ayuda?",
"helpText": "Si usa Gmail, necesitará habilitar la autenticación de 2 factores y crear una contraseña específica de aplicación. Para otros proveedores, consulte su documentación SMTP para la configuración correcta."
},
"securityHeaders": {
"title": "Cabeceras de Seguridad",
"description": "Configure las cabeceras de seguridad HTTP para sus hosts proxy",
"createProfile": "Crear Perfil",
"alertTitle": "Proteja sus Aplicaciones",
"alertDescription": "Las cabeceras de seguridad protegen contra vulnerabilidades web comunes. Use plantillas para una configuración rápida o cree perfiles personalizados para un control más preciso.",
"systemProfiles": "Perfiles del Sistema (Solo Lectura)",
"systemProfilesDescription": "Perfiles de seguridad preconfigurados que puede asignar a hosts proxy. Clone para personalizar.",
"customProfiles": "Perfiles Personalizados",
"noCustomProfiles": "Aún no hay perfiles personalizados",
"noCustomProfilesDescription": "Cree un perfil de cabeceras de seguridad personalizado o aplique una plantilla para comenzar",
"view": "Ver",
"clone": "Clonar",
"updated": "Actualizado",
"viewProfile": "Ver Perfil de Cabeceras de Seguridad",
"editProfile": "Editar Perfil de Cabeceras de Seguridad",
"createProfileTitle": "Crear Perfil de Cabeceras de Seguridad",
"confirmDeletion": "Confirmar Eliminación",
"deleteConfirmMessage": "¿Está seguro de que desea eliminar \"{{name}}\"? Se creará una copia de seguridad antes de la eliminación.",
"deleting": "Eliminando...",
"creatingBackup": "Creando copia de seguridad antes de eliminar...",
"backupCreated": "Copia de seguridad creada",
"backupFailed": "Error al crear la copia de seguridad",
"deleteSuccess": "\"{{name}}\" eliminado. Se creó una copia de seguridad antes de la eliminación.",
"deleteFailed": "Error al eliminar: {{error}}",
"presets": {
"basic": "Cabeceras de seguridad mínimas para máxima compatibilidad.\n✓ Ideal para: Pruebas, desarrollo, sitios web simples.\n✓ Compatible con todas las aplicaciones y apps móviles.",
"apiFriendly": "Optimizado para apps móviles y clientes API.\n✓ Ideal para: Radarr, Sonarr, Plex, Jellyfin, Home Assistant, Vaultwarden.\n✓ Fuerte seguridad de transporte, permite acceso cross-origin.\nRecomendado para servicios accedidos por apps móviles.",
"strict": "Seguridad fuerte para aplicaciones web.\n✓ Ideal para: Dashboards solo web, paneles de administración.\n⚠ Puede afectar apps móviles y clientes API.\nNo recomendado para Radarr, Plex o servicios con apps companion.",
"paranoid": "Seguridad máxima para aplicaciones de alto riesgo.\n✓ Ideal para: Banca, salud, apps críticas de cumplimiento.\n⚠ AFECTARÁ apps móviles, clientes API y flujos OAuth.\nSolo úselo si entiende y puede personalizar cada cabecera."
}
},
"dns": {
"title": "Gestión DNS",
"description": "Administrar proveedores DNS y plugins para la automatización de certificados"
}
}
-989
View File
@@ -1,989 +0,0 @@
{
"common": {
"save": "Enregistrer",
"cancel": "Annuler",
"delete": "Supprimer",
"edit": "Modifier",
"add": "Ajouter",
"create": "Créer",
"update": "Mettre à jour",
"close": "Fermer",
"confirm": "Confirmer",
"back": "Retour",
"next": "Suivant",
"loading": "Chargement...",
"error": "Erreur",
"success": "Succès",
"warning": "Avertissement",
"info": "Information",
"yes": "Oui",
"no": "Non",
"enabled": "Activé",
"disabled": "Désactivé",
"name": "Nom",
"description": "Description",
"actions": "Actions",
"status": "Statut",
"search": "Rechercher",
"filter": "Filtrer",
"settings": "Paramètres",
"language": "Langue",
"configure": "Configurer",
"test": "Tester",
"docs": "Documentation",
"upload": "Téléverser",
"active": "Actif",
"type": "Type",
"rules": "Règles",
"allow": "Autoriser",
"deny": "Refuser",
"saveConfiguration": "Enregistrer la configuration",
"enabledCount": "{{count}} activé",
"validCount": "{{count}} valide",
"activeCount": "{{count}} actif",
"noHistoryAvailable": "Aucun historique disponible",
"autoRefreshing": "Actualisation automatique toutes les {{seconds}}s",
"score": "Score"
},
"navigation": {
"dashboard": "Tableau de bord",
"proxyHosts": "Hôtes Proxy",
"remoteServers": "Serveurs Distants",
"domains": "Domaines",
"certificates": "Certificats",
"dns": "DNS",
"dnsProviders": "Fournisseurs DNS",
"plugins": "Plugins",
"security": "Sécurité",
"accessLists": "Listes d'Accès",
"crowdsec": "CrowdSec",
"rateLimiting": "Limitation de Débit",
"waf": "WAF",
"uptime": "Disponibilité",
"notifications": "Notifications",
"users": "Utilisateurs",
"tasks": "Tâches",
"settings": "Paramètres",
"system": "Système",
"email": "Email (SMTP)",
"adminAccount": "Compte Administrateur",
"accountManagement": "Gestion des Comptes",
"import": "Importer",
"caddyfile": "Caddyfile",
"backups": "Sauvegardes",
"logs": "Journaux",
"securityHeaders": "En-têtes de Sécurité",
"expandSidebar": "Développer la barre latérale",
"collapseSidebar": "Réduire la barre latérale"
},
"dashboard": {
"title": "Tableau de bord",
"description": "Vue d'ensemble de votre proxy inverse Charon",
"proxyHosts": "Hôtes Proxy",
"remoteServers": "Serveurs Distants",
"certificates": "Certificats",
"accessLists": "Listes d'Accès",
"systemStatus": "État du Système",
"healthy": "En bonne santé",
"unhealthy": "Pas en bonne santé",
"pendingCertificates": "Certificats en attente",
"allCertificatesValid": "Tous les certificats sont valides",
"activeHosts": "{{count}} actif",
"activeServers": "{{count}} actif",
"activeLists": "{{count}} actif",
"validCerts": "{{count}} valide"
},
"settings": {
"title": "Paramètres",
"description": "Configurez votre instance Charon",
"system": "Système",
"smtp": "Email (SMTP)",
"account": "Compte",
"language": "Langue",
"languageDescription": "Sélectionnez votre langue préférée",
"theme": "Thème",
"themeDescription": "Choisissez le thème clair ou sombre"
},
"proxyHosts": {
"title": "Hôtes Proxy",
"description": "Gérez vos configurations de proxy inverse",
"addHost": "Ajouter un Hôte Proxy",
"editHost": "Modifier l'Hôte Proxy",
"deleteHost": "Supprimer l'Hôte Proxy",
"domainNames": "Noms de Domaine",
"forwardHost": "Hôte de Transfert",
"forwardPort": "Port de Transfert",
"sslEnabled": "SSL Activé",
"sslForced": "Forcer SSL",
"columnName": "Nom",
"columnDomain": "Domaine",
"columnForwardTo": "Transférer vers",
"columnSSL": "SSL",
"columnFeatures": "Fonctionnalités",
"columnStatus": "Statut",
"columnActions": "Actions",
"unnamed": "Sans nom",
"staging": "Test",
"websocket": "WS",
"acl": "ACL",
"noHosts": "Aucun hôte proxy",
"noHostsDescription": "Créez votre premier hôte proxy pour commencer à acheminer le trafic vers vos services.",
"selectedCount": "{{count}} hôte(s) sélectionné(s)",
"selectedCountAll": "(tous)",
"bulkApply": "Application groupée",
"manageACL": "Gérer ACL",
"deleteConfirmTitle": "Supprimer l'Hôte Proxy ?",
"deleteConfirmMessage": "Êtes-vous sûr de vouloir supprimer <strong>{{name}}</strong> ? Cette action est irréversible.",
"bulkApplyTitle": "Application Groupée des Paramètres",
"bulkApplyDescription": "Application des paramètres à <strong>{{count}}</strong> hôte(s) sélectionné(s)",
"applyACLTitle": "Appliquer la Liste d'Accès",
"applyACLDescription": "Application à <strong>{{count}}</strong> hôte(s) sélectionné(s). Chaque hôte proxy peut avoir une seule Liste de Contrôle d'Accès appliquée.",
"applyACL": "Appliquer ACL",
"removeACL": "Supprimer ACL",
"selectedACLCount": "{{selected}} sur {{total}} sélectionnés",
"selectAll": "Tout sélectionner",
"clear": "Effacer",
"noEnabledACLs": "Aucune liste d'accès activée disponible",
"removeACLWarning": "Cela supprimera la liste d'accès de tous les {{count}} hôte(s) sélectionné(s).",
"publicAccessWarning": "Les hôtes deviendront accessibles publiquement.",
"applyingACLs": "Application des ACLs... ({{current}}/{{total}})",
"bulkDeleteTitle": "Supprimer {{count}} Hôte(s) Proxy ?",
"bulkDeleteDescription": "Cette action est irréversible. Une sauvegarde sera créée automatiquement avant la suppression.",
"hostsToDelete": "Hôtes à supprimer :",
"backupInfo": "Une sauvegarde automatique sera créée avant la suppression. Vous pouvez restaurer depuis la page Sauvegardes si nécessaire.",
"creatingBackup": "Création de la sauvegarde...",
"deletePermanently": "Supprimer définitivement",
"ferryingNewHost": "Transport du nouvel hôte...",
"ferryingNewHostSub": "Charon traverse le Styx",
"guidingChanges": "Guidage des modifications...",
"guidingChangesSub": "Configuration en transit",
"returningToShore": "Retour à la rive...",
"returningToShoreSub": "Départ de l'hôte en cours",
"ferryingSouls": "Transport de {{count}} âmes...",
"ferryingSoulsSub": "Opération groupée traversant la rivière",
"ferryingConfig": "Transport de la configuration...",
"sslForce": "Forcer SSL",
"http2Support": "Support HTTP/2",
"hstsEnabled": "HSTS Activé",
"hstsSubdomains": "HSTS Sous-domaines",
"blockExploits": "Bloquer Exploits",
"websocketSupport": "Support WebSocket",
"apply": "Appliquer",
"applyCount": "Appliquer ({{count}})",
"bulkApplySecurityHeaders": "Profil d'En-têtes de Sécurité",
"bulkApplySecurityHeadersHelp": "Appliquer un profil d'en-têtes de sécurité à tous les hôtes sélectionnés",
"noSecurityProfile": "Aucun (Supprimer le Profil)",
"removeSecurityHeadersWarning": "Cela supprimera le profil d'en-têtes de sécurité de tous les hôtes sélectionnés, ce qui pourrait réduire leur posture de sécurité."
},
"certificates": {
"title": "Certificats SSL",
"description": "Gérer les certificats SSL/TLS pour vos hôtes proxy",
"addCertificate": "Ajouter un Certificat",
"uploadCertificate": "Téléverser un Certificat",
"domain": "Domaine",
"status": "Statut",
"expiresAt": "Expire le",
"valid": "Valide",
"pending": "En attente",
"expired": "Expiré",
"friendlyName": "Nom convivial",
"certificatePem": "Certificat (PEM)",
"privateKeyPem": "Clé Privée (PEM)",
"uploadSuccess": "Certificat téléversé avec succès",
"uploadFailed": "Échec du téléversement du certificat",
"note": "Note",
"noteText": "Vous pouvez supprimer les certificats personnalisés et les certificats de test. Les certificats Let's Encrypt de production sont renouvelés automatiquement et ne doivent pas être supprimés sauf en cas de changement d'environnement."
},
"auth": {
"login": "Connexion",
"logout": "Déconnexion",
"email": "Email",
"password": "Mot de passe",
"username": "Nom d'utilisateur",
"signIn": "Se connecter",
"signOut": "Se déconnecter",
"forgotPassword": "Mot de passe oublié?",
"rememberMe": "Se souvenir de moi",
"checkingSetup": "Vérification de l'état de configuration...",
"loggingIn": "Payant le passeur...",
"loggingInSub": "Votre obole accorde le passage",
"loginSuccess": "Connexion réussie",
"loginFailed": "Échec de la connexion",
"resetPasswordTitle": "Pour réinitialiser votre mot de passe:",
"resetPasswordInstructions": "Exécutez cette commande sur votre serveur:"
},
"errors": {
"required": "Ce champ est obligatoire",
"invalidEmail": "Adresse email invalide",
"passwordTooShort": "Le mot de passe doit contenir au moins 8 caractères",
"genericError": "Une erreur s'est produite. Veuillez réessayer.",
"networkError": "Erreur réseau. Veuillez vérifier votre connexion.",
"unauthorized": "Non autorisé. Veuillez vous reconnecter.",
"notFound": "Ressource non trouvée",
"serverError": "Erreur serveur. Veuillez réessayer plus tard."
},
"notifications": {
"saveSuccess": "Modifications enregistrées avec succès",
"deleteSuccess": "Supprimé avec succès",
"createSuccess": "Créé avec succès",
"updateSuccess": "Mis à jour avec succès",
"saveFailed": "Échec de l'enregistrement des modifications",
"deleteFailed": "Échec de la suppression",
"createFailed": "Échec de la création",
"updateFailed": "Échec de la mise à jour",
"partialFailed": "Terminé avec {{count}} erreur(s)"
},
"security": {
"title": "Sécurité",
"description": "Configurer les couches de sécurité pour votre proxy inverse",
"cerberusDashboard": "Tableau de bord Cerberus",
"cerberusActive": "Actif",
"cerberusDisabled": "Désactivé",
"cerberusReadyMessage": "Toutes les têtes de sécurité sont prêtes pour la configuration",
"cerberusDisabledMessage": "Activez Cerberus dans les Paramètres Système pour activer les fonctionnalités de sécurité",
"featuresUnavailable": "Fonctionnalités de Sécurité Non Disponibles",
"featuresUnavailableMessage": "Cerberus alimente CrowdSec, Coraza WAF, le Contrôle d'Accès et la Limitation de Débit. Activez l'interrupteur Cerberus dans les Paramètres Système pour activer ces fonctionnalités.",
"learnMore": "En savoir plus",
"adminWhitelist": "Liste Blanche Admin",
"adminWhitelistDescription": "Configurer les adresses IP qui contournent les vérifications de sécurité",
"commaSeparatedCIDR": "CIDR/IPs séparés par des virgules",
"generateToken": "Générer un Jeton",
"generateTokenTooltip": "Générer un jeton d'urgence pour un accès d'urgence",
"enableCerberusFirst": "Activez d'abord Cerberus",
"layer": "Couche",
"crowdsec": {
"title": "CrowdSec",
"subtitle": "Réputation IP et Renseignements sur les Menaces",
"badge": "IDS",
"enabledDescription": "Protège contre: Attaquants connus, botnets, force brute",
"disabledDescription": "Système de Prévention des Intrusions alimenté par le renseignement communautaire sur les menaces",
"processRunning": "En cours d'exécution (PID {{pid}})",
"processStopped": "Processus arrêté",
"toggleTooltip": "Basculer la protection CrowdSec"
},
"acl": {
"title": "Contrôle d'Accès",
"subtitle": "Filtrage basé sur l'IP et la géolocalisation",
"badge": "ACL",
"description": "Protège contre: IPs non autorisées, attaques géo-basées, menaces internes",
"manageLists": "Gérer les Listes",
"toggleTooltip": "Basculer le Contrôle d'Accès"
},
"waf": {
"title": "Coraza WAF",
"subtitle": "Inspection et filtrage des requêtes",
"badge": "WAF",
"enabledDescription": "Protège contre: Injection SQL, XSS, RCE, exploits zero-day*",
"disabledDescription": "Pare-feu d'Application Web avec OWASP Core Rule Set",
"toggleTooltip": "Basculer Coraza WAF"
},
"rateLimit": {
"title": "Limitation de Débit",
"subtitle": "Contrôle du volume de requêtes",
"badge": "Rate",
"description": "Protège contre: Attaques DDoS, bourrage de credentials, abus d'API",
"toggleTooltip": "Basculer la Limitation de Débit"
},
"notifications": "Notifications",
"threeHeadsTurn": "Trois têtes se tournent...",
"cerberusConfigUpdating": "Configuration de Cerberus en cours de mise à jour",
"summoningGuardian": "Invocation du gardien...",
"crowdsecStarting": "CrowdSec démarre",
"guardianRests": "Le gardien se repose...",
"crowdsecStopping": "CrowdSec s'arrête",
"strengtheningGuard": "Renforcement de la garde...",
"wardsActivating": "Protections en cours d'activation"
},
"accessLists": {
"title": "Listes d'Accès",
"description": "Gérer le contrôle d'accès basé sur l'IP",
"createAccessList": "Créer une Liste d'Accès",
"editAccessList": "Modifier la Liste d'Accès",
"deleteAccessList": "Supprimer la Liste d'Accès",
"deleteSelected": "Supprimer ({{count}})",
"bestPractices": "Meilleures Pratiques",
"testIP": "Tester IP",
"testIPAddress": "Tester l'Adresse IP",
"ipAddress": "Adresse IP",
"accessList": "Liste d'Accès",
"rfc1918Only": "RFC1918 Uniquement",
"cgnatWarning": {
"title": "Avertissement CGNAT et Réseau Mobile",
"message": "Si vous utilisez T-Mobile 5G Home Internet, Starlink ou d'autres connexions CGNAT, le blocage géographique peut ne pas fonctionner comme prévu. Votre IP peut sembler provenir d'un centre de données, pas de votre emplacement physique.",
"solutionsTitle": "Solutions si vous êtes bloqué:",
"solution1": "Accédez via l'IP du réseau local (192.168.x.x) - Les ACLs ne s'appliquent pas aux IPs locales",
"solution2": "Ajoutez votre IP actuelle à une ACL de liste blanche",
"solution3": "Utilisez \"Tester IP\" ci-dessous pour vérifier quelle IP le serveur voit",
"solution4": "Désactivez temporairement l'ACL pour regagner l'accès",
"solution5": "Connectez-vous via VPN avec une adresse IP connue"
},
"deleteConfirmTitle": "Supprimer la Liste d'Accès",
"deleteConfirmMessage": "Êtes-vous sûr de vouloir supprimer \"{{name}}\"? Une sauvegarde sera créée avant la suppression.",
"bulkDeleteConfirmTitle": "Supprimer les Listes d'Accès Sélectionnées",
"bulkDeleteConfirmMessage": "Êtes-vous sûr de vouloir supprimer {{count}} liste(s) d'accès? Une sauvegarde sera créée avant la suppression.",
"deleteItems": "Supprimer {{count}} Éléments",
"deleting": "Suppression...",
"noAccessLists": "Aucune Liste d'Accès",
"noAccessListsDescription": "Créez votre première liste d'accès pour contrôler qui peut accéder à vos services"
},
"rateLimiting": {
"title": "Configuration de la Limitation de Débit",
"description": "Contrôlez les taux de requêtes pour protéger vos services contre les abus",
"aboutTitle": "À Propos de la Limitation de Débit",
"aboutDescription": "La limitation de débit aide à protéger vos services contre les abus, les attaques par force brute et la consommation excessive de ressources. Configurez des limites par adresse IP client.",
"currentlyActive": "Actuellement Actif",
"currentConfig": "{{requests}} requêtes/sec • Rafale: {{burst}} • Fenêtre: {{window}}s",
"enableRateLimiting": "Activer la Limitation de Débit",
"enabledMessage": "La limitation de débit est active et protège vos services",
"disabledMessage": "Activez pour commencer à limiter les taux de requêtes",
"configuration": "Configuration",
"requestsPerSecond": "Requêtes par Seconde",
"requestsPerSecondHelper": "Maximum de requêtes autorisées par seconde par client",
"burst": "Rafale",
"burstHelper": "Autoriser de courtes rafales au-dessus de la limite de débit",
"windowSeconds": "Fenêtre (secondes)",
"windowHelper": "Fenêtre de temps pour les calculs de taux",
"rateLimitingDisabled": "Limitation de Débit Désactivée",
"enableToConfigureMessage": "Activez la limitation de débit pour configurer les limites de requêtes et protéger vos services",
"adjustingGates": "Ajustement des portes...",
"configurationUpdating": "Configuration de la limitation de débit en cours de mise à jour"
},
"wafConfig": {
"title": "Configuration WAF",
"description": "Gérer les ensembles de règles du Pare-feu d'Application Web Coraza",
"addRuleSet": "Ajouter un Ensemble de Règles",
"createRuleSet": "Créer un Ensemble de Règles",
"editRuleSet": "Modifier l'Ensemble de Règles",
"updateRuleSet": "Mettre à jour l'Ensemble de Règles",
"deleteRuleSet": "Supprimer l'Ensemble de Règles",
"ruleSyntax": "Syntaxe des Règles",
"aboutTitle": "À Propos des Ensembles de Règles WAF",
"aboutDescription": "Les ensembles de règles définissent des règles ModSecurity/Coraza qui inspectent et filtrent les requêtes HTTP. Le WAF active automatiquement SecRuleEngine On et SecRequestBodyAccess On pour vos règles.",
"deleteConfirmTitle": "Supprimer l'Ensemble de Règles",
"deleteConfirmMessage": "Êtes-vous sûr de vouloir supprimer \"{{name}}\"? Cette action est irréversible.",
"noRuleSets": "Aucun Ensemble de Règles",
"noRuleSetsDescription": "Créez votre premier ensemble de règles WAF pour protéger vos services contre les attaques web",
"ruleSetName": "Nom de l'Ensemble de Règles",
"mode": "Mode",
"blocking": "Blocage",
"detection": "Détection",
"detectionOnly": "Détection Uniquement",
"blockingDescription": "Les requêtes malveillantes seront bloquées avec HTTP 403",
"detectionDescription": "Les requêtes malveillantes seront journalisées mais non bloquées",
"sourceUrl": "URL Source (optionnel)",
"sourceUrlHelper": "URL pour récupérer les règles. Laissez vide pour utiliser le contenu en ligne.",
"ruleContent": "Contenu des Règles",
"ruleContentHelper": "Syntaxe de règles ModSecurity/Coraza. Chaque SecRule doit être sur sa propre ligne.",
"source": "Source",
"url": "URL",
"inline": "En ligne",
"lastUpdated": "Dernière Mise à Jour",
"rulesCount": "{{count}} règle(s)",
"quickStartPreset": "Démarrage Rapide avec Préréglage",
"choosePreset": "Choisir un préréglage...",
"cerberusAwakens": "Cerberus s'éveille...",
"guardianWatches": "Le gardien des portes monte la garde",
"forgingDefenses": "Forge de nouvelles défenses...",
"rulesInscribing": "Règles de sécurité en cours d'inscription",
"loweringBarrier": "Abaissement d'une barrière...",
"defenseRemoved": "Couche de défense supprimée",
"loadingWaf": "Chargement de la configuration WAF...",
"loadingFailed": "Échec du chargement de la configuration WAF"
},
"uptime": {
"title": "Surveillance de la Disponibilité",
"description": "Surveillez la santé et la disponibilité de vos services",
"autoRefresh": "Actualisation automatique toutes les 30s",
"noMonitors": "Aucun moniteur trouvé. Ajoutez un Hôte Proxy ou un Serveur Distant pour commencer la surveillance.",
"proxyHosts": "Hôtes Proxy",
"remoteServers": "Serveurs Distants",
"otherMonitors": "Autres Moniteurs",
"configureMonitor": "Configurer le Moniteur",
"monitorName": "Nom",
"maxRetries": "Tentatives Maximum",
"maxRetriesHelper": "Nombre d'échecs consécutifs avant d'envoyer une alerte.",
"checkInterval": "Intervalle de Vérification (secondes)",
"saveChanges": "Enregistrer les Modifications",
"saving": "Enregistrement...",
"latency": "Latence",
"lastCheck": "Dernière Vérification",
"never": "Jamais",
"paused": "EN PAUSE",
"pause": "Mettre en Pause",
"unpause": "Reprendre",
"triggerCheck": "Déclencher une vérification de santé immédiate",
"healthCheckTriggered": "Vérification de santé déclenchée",
"monitorDeleted": "Moniteur supprimé",
"deleteConfirm": "Supprimer ce moniteur? Cette action est irréversible."
},
"domains": {
"title": "Domaines",
"description": "Gérez vos domaines",
"addDomain": "Ajouter un Domaine",
"deleteDomain": "Supprimer le Domaine",
"domainName": "Nom de Domaine",
"placeholder": "exemple.com",
"adding": "Ajout en cours...",
"added": "Ajouté le {{date}}",
"deleteConfirm": "Êtes-vous sûr de vouloir supprimer ce domaine?",
"createFailed": "Échec de la création du domaine",
"deleteFailed": "Échec de la suppression du domaine",
"loadError": "Erreur lors du chargement des domaines"
},
"remoteServers": {
"title": "Serveurs Distants",
"description": "Gérez les serveurs backend pour vos hôtes proxy",
"addServer": "Ajouter un Serveur",
"editServer": "Modifier le Serveur",
"deleteServer": "Supprimer le Serveur Distant",
"noServers": "Aucun Serveur Distant",
"noServersDescription": "Ajoutez des serveurs pour sélectionner rapidement les backends lors de la création d'hôtes proxy",
"columnName": "Nom",
"columnProvider": "Fournisseur",
"columnHost": "Hôte",
"columnPort": "Port",
"host": "Hôte",
"port": "Port",
"user": "Utilisateur",
"gridView": "Vue en grille",
"listView": "Vue en liste",
"deleteConfirm": "Êtes-vous sûr de vouloir supprimer \"{{name}}\"? Cette action est irréversible.",
"deleting": "Suppression..."
},
"notificationProviders": {
"title": "Fournisseurs de Notifications",
"description": "Gérez les fournisseurs de notifications et les modèles",
"addProvider": "Ajouter un Fournisseur",
"addNewProvider": "Ajouter un Nouveau Fournisseur",
"providerName": "Nom",
"urlWebhook": "URL / Webhook",
"urlRequired": "L'URL est requise",
"genericWebhook": "Webhook Générique (Shoutrrr)",
"customWebhook": "Webhook Personnalisé (JSON)",
"shoutrrrHelp": "Pour le format Shoutrrr, voir",
"jsonPayloadTemplate": "Modèle de Charge JSON",
"minimalTemplate": "Modèle Minimal",
"detailedTemplate": "Modèle Détaillé",
"customTemplate": "Personnalisé",
"template": "Modèle",
"availableVariables": "Variables disponibles: .Title, .Message, .Status, .Name, .Latency, .Time. Prend en charge webhook, Discord, Slack, Gotify et services génériques.",
"notificationEvents": "Événements de Notification",
"proxyHosts": "Hôtes Proxy",
"remoteServers": "Serveurs Distants",
"domainsNotify": "Domaines",
"certificates": "Certificats",
"uptime": "Disponibilité",
"preview": "Aperçu",
"previewError": "Erreur d'Aperçu",
"previewResult": "Résultat de l'Aperçu",
"externalTemplates": "Modèles Externes",
"manageTemplates": "Gérer les Modèles",
"hideTemplates": "Masquer",
"newTemplate": "Nouveau Modèle",
"createTemplate": "Créer un Modèle",
"templateType": "Type de Modèle",
"minimal": "Minimal",
"detailed": "Détaillé",
"custom": "Personnalisé",
"configJson": "Config (JSON/modèle)",
"noExternalTemplates": "Aucun modèle externe. Utilisez le formulaire ci-dessus pour en créer un.",
"deleteTemplateConfirm": "Supprimer le modèle?",
"sendTest": "Envoyer une Notification de Test",
"testSent": "Notification de test envoyée!",
"testFailed": "Échec de l'envoi du test",
"deleteConfirm": "Êtes-vous sûr?",
"noProviders": "Aucun fournisseur de notifications configuré."
},
"users": {
"title": "Gestion des Utilisateurs",
"inviteUser": "Inviter un Utilisateur",
"inviteSent": "Email d'invitation envoyé",
"inviteCreated": "Utilisateur invité - copiez le lien d'invitation ci-dessous",
"inviteFailed": "Échec de l'invitation de l'utilisateur",
"inviteLinkCopied": "Lien d'invitation copié dans le presse-papiers",
"inviteSuccess": "Utilisateur Invité avec Succès",
"inviteEmailSent": "Un email d'invitation a été envoyé à l'utilisateur.",
"inviteEmailNotSent": "L'email n'a pas été envoyé. Partagez le lien d'invitation manuellement.",
"inviteLink": "Lien d'Invitation",
"copyInviteLink": "Copier le lien d'invitation",
"expires": "Expire",
"done": "Terminé",
"emailAddress": "Adresse Email",
"role": "Rôle",
"roleUser": "Utilisateur",
"roleAdmin": "Administrateur",
"permissionMode": "Mode de Permission",
"allowAllBlacklist": "Tout Autoriser (Liste Noire)",
"denyAllWhitelist": "Tout Refuser (Liste Blanche)",
"allowAllDescription": "L'utilisateur peut accéder à tous les hôtes SAUF ceux sélectionnés ci-dessous",
"denyAllDescription": "L'utilisateur peut UNIQUEMENT accéder aux hôtes sélectionnés ci-dessous",
"blockedHosts": "Hôtes Bloqués",
"allowedHosts": "Hôtes Autorisés",
"noProxyHosts": "Aucun hôte proxy configuré",
"sendInvite": "Envoyer l'Invitation",
"editPermissions": "Modifier les Permissions",
"permissionsUpdated": "Permissions mises à jour",
"permissionsUpdateFailed": "Échec de la mise à jour des permissions",
"savePermissions": "Enregistrer les Permissions",
"userUpdated": "Utilisateur mis à jour",
"userUpdateFailed": "Échec de la mise à jour de l'utilisateur",
"userDeleted": "Utilisateur supprimé",
"userDeleteFailed": "Échec de la suppression de l'utilisateur",
"columnUser": "Utilisateur",
"columnRole": "Rôle",
"columnPermissions": "Permissions",
"noName": "(Sans nom)",
"pendingInvite": "Invitation en Attente",
"inviteExpired": "Invitation Expirée",
"whitelist": "Liste Blanche",
"blacklist": "Liste Noire",
"deleteConfirm": "Êtes-vous sûr de vouloir supprimer cet utilisateur?",
"deleteUser": "Supprimer l'utilisateur",
"inviteUrlPreview": "Aperçu du lien d'invitation",
"inviteUrlWarning": "L'URL de l'application n'est pas configurée. Ce lien peut ne pas fonctionner pour les utilisateurs externes.",
"configureApplicationUrl": "Configurer l'URL de l'application",
"resendInvite": "Renvoyer l'invitation",
"inviteResent": "Invitation renvoyée avec succès",
"inviteCreatedNoEmail": "Nouvelle invitation créée. L'e-mail n'a pas pu être envoyé.",
"resendFailed": "Échec du renvoi de l'invitation"
},
"dashboard": {
"title": "Tableau de bord",
"description": "Vue d'ensemble de votre proxy inverse Charon",
"proxyHosts": "Hôtes Proxy",
"remoteServers": "Serveurs Distants",
"certificates": "Certificats",
"certificateStatus": "État des Certificats",
"accessLists": "Listes d'Accès",
"systemStatus": "État du Système",
"healthy": "En bonne santé",
"unhealthy": "Pas en bonne santé",
"pendingCertificates": "Certificats en attente",
"allCertificatesValid": "Tous les certificats sont valides",
"activeHosts": "{{count}} actif",
"activeServers": "{{count}} actif",
"activeLists": "{{count}} actif",
"validCerts": "{{count}} valide"
},
"setup": {
"welcomeTitle": "Bienvenue sur Charon",
"welcomeDescription": "Créez votre compte administrateur pour commencer.",
"nameLabel": "Nom",
"namePlaceholder": "Utilisateur Admin",
"emailLabel": "Adresse Email",
"emailPlaceholder": "admin@exemple.com",
"invalidEmail": "Veuillez entrer une adresse email valide",
"passwordLabel": "Mot de passe",
"createAdminButton": "Créer le Compte Admin",
"setupFailed": "Échec de la configuration"
},
"acceptInvite": {
"title": "Accepter l'invitation",
"invalidLink": "Lien invalide",
"invalidLinkMessage": "Ce lien d'invitation est invalide ou incomplet.",
"goToLogin": "Aller à la connexion",
"validating": "Validation de l'invitation...",
"invitationInvalid": "Invitation invalide",
"expiredOrInvalid": "Cette invitation a expiré ou est invalide.",
"accountCreated": "Compte créé !",
"accountCreatedMessage": "Votre compte a été configuré avec succès. Redirection vers la connexion...",
"youveBeenInvited": "Vous avez été invité !",
"completeSetup": "Complétez la configuration de votre compte pour",
"yourName": "Votre nom",
"namePlaceholder": "Jean Dupont",
"confirmPassword": "Confirmer le mot de passe",
"passwordsDoNotMatch": "Les mots de passe ne correspondent pas",
"createAccount": "Créer un compte",
"welcomeMessage": "Bienvenue, {{email}} ! Vous pouvez maintenant vous connecter.",
"acceptFailed": "Échec de l'acceptation de l'invitation"
},
"tasks": {
"title": "Tâches",
"description": "Gérer les tâches système et voir les journaux"
},
"backups": {
"title": "Sauvegardes",
"description": "Gérer les sauvegardes de la base de données",
"configuration": "Configuration",
"intervalDays": "Intervalle de Sauvegarde (Jours)",
"retentionDays": "Période de Rétention (Jours)",
"saveSettings": "Enregistrer les Paramètres",
"settingsSaved": "Paramètres de sauvegarde enregistrés",
"settingsFailed": "Échec de l'enregistrement des paramètres: {{error}}",
"createBackup": "Créer une Sauvegarde",
"createSuccess": "Sauvegarde créée avec succès",
"createFailed": "Échec de la création de la sauvegarde: {{error}}",
"restoreBackup": "Restaurer la Sauvegarde",
"restore": "Restaurer",
"restoreSuccess": "Sauvegarde restaurée avec succès. Veuillez redémarrer le conteneur.",
"restoreFailed": "Échec de la restauration de la sauvegarde: {{error}}",
"restoreConfirmMessage": "Êtes-vous sûr de vouloir restaurer cette sauvegarde? Les données actuelles seront écrasées. Vous devrez redémarrer le conteneur après la restauration.",
"deleteBackup": "Supprimer la Sauvegarde",
"deleteSuccess": "Sauvegarde supprimée avec succès",
"deleteFailed": "Échec de la suppression de la sauvegarde: {{error}}",
"deleteConfirmMessage": "Êtes-vous sûr de vouloir supprimer \"{{filename}}\"? Cette action est irréversible.",
"download": "Télécharger",
"filename": "Nom du Fichier",
"size": "Taille",
"createdAt": "Créé le",
"auto": "Auto",
"manual": "Manuel",
"noBackups": "Aucune Sauvegarde",
"noBackupsDescription": "Créez votre première sauvegarde pour protéger votre configuration"
},
"logs": {
"title": "Journaux",
"description": "Voir les journaux système et d'accès",
"logFiles": "Fichiers Journaux",
"noLogFiles": "Aucun fichier journal trouvé",
"noLogSelected": "Aucun Journal Sélectionné",
"selectLogDescription": "Sélectionnez un fichier journal dans la liste pour voir son contenu",
"showingEntries": "Affichage de {{from}} à {{to}} sur {{total}} entrées",
"pageOf": "Page {{current}} sur {{total}}"
},
"account": {
"title": "Paramètres du Compte",
"profile": "Profil",
"profileDescription": "Mettez à jour vos informations personnelles.",
"saveProfile": "Enregistrer le Profil",
"profileUpdated": "Profil mis à jour avec succès",
"profileUpdateFailed": "Échec de la mise à jour du profil: {{error}}",
"certificateEmail": "Email du Certificat",
"certificateEmailDescription": "Cet email est utilisé pour les notifications et la récupération Let's Encrypt.",
"useAccountEmail": "Utiliser mon email de compte ({{email}})",
"customEmail": "Email Personnalisé",
"saveCertificateEmail": "Enregistrer l'Email du Certificat",
"certEmailUpdated": "Email du certificat mis à jour",
"certEmailUpdateFailed": "Échec de la mise à jour de l'email du certificat: {{error}}",
"changePassword": "Changer le Mot de Passe",
"changePasswordDescription": "Mettez à jour le mot de passe de votre compte pour plus de sécurité.",
"currentPassword": "Mot de Passe Actuel",
"newPassword": "Nouveau Mot de Passe",
"confirmNewPassword": "Confirmer le Nouveau Mot de Passe",
"updatePassword": "Mettre à Jour le Mot de Passe",
"passwordsDoNotMatch": "Les mots de passe ne correspondent pas",
"passwordUpdated": "Mot de passe mis à jour avec succès",
"passwordUpdateFailed": "Échec de la mise à jour du mot de passe",
"apiKey": "Clé API",
"apiKeyDescription": "Utilisez cette clé pour vous authentifier avec l'API de manière programmatique. Gardez-la secrète!",
"copyToClipboard": "Copier dans le presse-papiers",
"regenerateApiKey": "Régénérer la Clé API",
"apiKeyCopied": "Clé API copiée dans le presse-papiers",
"apiKeyRegenerated": "Clé API régénérée avec succès",
"apiKeyRegenerateFailed": "Échec de la régénération de la clé API: {{error}}",
"securityNotice": "Avis de Sécurité",
"securityNoticeMessage": "Ne partagez jamais votre clé API ou votre mot de passe avec qui que ce soit. Si vous pensez que vos identifiants ont été compromis, régénérez immédiatement votre clé API.",
"confirmPassword": "Confirmer le Mot de Passe",
"confirmPasswordDescription": "Veuillez entrer votre mot de passe actuel pour confirmer ces modifications.",
"enterPassword": "Entrez votre mot de passe",
"confirmAndUpdate": "Confirmer et Mettre à Jour",
"updateCertEmailTitle": "Mettre à Jour l'Email du Certificat?",
"updateCertEmailDescription": "Vous changez votre email de compte en {{email}}. Voulez-vous également utiliser ce nouvel email pour les certificats SSL?",
"yesUpdateCertEmail": "Oui, mettre à jour l'email du certificat aussi",
"noKeepEmail": "Non, continuer à utiliser {{email}}"
},
"importCaddy": {
"title": "Importer un Caddyfile",
"enterCaddyfileContent": "Veuillez entrer le contenu du Caddyfile",
"cancelConfirm": "Êtes-vous sûr de vouloir annuler cette importation ?",
"noDomainsFound": "Aucun domaine trouvé dans le Caddyfile",
"emptyFileWarning": "Le fichier importé semble être vide ou ne contient aucune directive reverse_proxy valide. Veuillez vérifier le contenu du fichier ci-dessous.",
"uploadOrPaste": "Téléverser ou coller un Caddyfile",
"description": "Importez un Caddyfile existant pour créer automatiquement des configurations d'hôte proxy. Le système détectera les conflits et vous permettra de réviser les modifications avant de valider.",
"uploadCaddyfile": "Téléverser un Caddyfile",
"orPasteContent": "ou coller le contenu",
"caddyfileContent": "Contenu du Caddyfile",
"processing": "Traitement en cours...",
"parseAndReview": "Analyser et réviser",
"multiSiteImport": "Importation multi-site"
},
"importCrowdSec": {
"title": "Paquets de Configuration CrowdSec",
"description": "Téléversez un paquet tar.gz ou zip. Une sauvegarde est créée avant l'importation pour vous permettre de revenir en arrière si nécessaire. Exportez le paquet actuel depuis le tableau de bord Cerberus ou la page de configuration CrowdSec.",
"import": "Importer",
"configImported": "Configuration CrowdSec importée",
"importFailed": "Échec de l'importation : {{error}}",
"creatingBackup": "Création de la sauvegarde...",
"importing": "Importation de CrowdSec..."
},
"systemSettings": {
"title": "Paramètres Système",
"settingsSaved": "Paramètres système enregistrés",
"settingsFailed": "Échec de l'enregistrement des paramètres : {{error}}",
"featureFlagUpdated": "Flag de fonctionnalité mis à jour",
"featureFlagFailed": "Échec de la mise à jour du flag : {{error}}",
"updatingFeatures": "Mise à jour des fonctionnalités...",
"applyingChanges": "Application des modifications de configuration",
"pleaseWait": "Veuillez patienter",
"saveSettings": "Enregistrer les Paramètres",
"features": {
"title": "Fonctionnalités",
"description": "Activer ou désactiver les fonctionnalités optionnelles pour votre instance Charon.",
"cerberus": "Suite de Sécurité Cerberus",
"cerberusTooltip": "Fonctionnalités de sécurité avancées incluant WAF, Listes d'Accès, Limitation de Débit et CrowdSec.",
"crowdsecConsole": "Inscription Console CrowdSec",
"crowdsecConsoleTooltip": "Permettre l'inscription de ce nœud avec la Console CrowdSec pour la gestion centralisée de flotte.",
"uptimeMonitoring": "Surveillance de Disponibilité",
"uptimeMonitoringTooltip": "Surveiller la disponibilité de vos hôtes proxy et serveurs distants."
},
"general": {
"title": "Configuration Générale",
"description": "Configurer les préférences de Caddy et de l'interface.",
"caddyAdminApi": "Point d'Accès API Admin Caddy",
"caddyAdminApiHelper": "URL vers l'API admin de Caddy (généralement sur le port 2019)",
"sslProvider": "Fournisseur SSL",
"selectSslProvider": "Sélectionner le fournisseur SSL",
"sslAuto": "Auto (Recommandé)",
"sslLetsEncryptProd": "Let's Encrypt (Production)",
"sslLetsEncryptStaging": "Let's Encrypt (Test)",
"sslZeroSSL": "ZeroSSL",
"sslProviderHelper": "Choisissez l'Autorité de Certification. 'Auto' utilise Let's Encrypt avec ZeroSSL en secours.",
"domainLinkBehavior": "Comportement des Liens de Domaine",
"selectLinkBehavior": "Sélectionner le comportement du lien",
"sameTab": "Même Onglet",
"newTab": "Nouvel Onglet (Par défaut)",
"newWindow": "Nouvelle Fenêtre",
"domainLinkBehaviorHelper": "Contrôle comment les liens de domaine s'ouvrent dans la liste des Hôtes Proxy.",
"languageHelper": "Sélectionnez votre langue préférée. Les modifications prennent effet immédiatement."
}, "applicationUrl": {
"title": "URL de l'application",
"description": "Configurez l'URL publique utilisée pour les liens et les e-mails destinés aux utilisateurs.",
"label": "URL de l'application",
"helper": "L'URL publique où les utilisateurs accèdent à Charon (par exemple, https://charon.example.com). Utilisée dans les e-mails d'invitation et les liens de réinitialisation de mot de passe.",
"infoMessage": "Cette URL est utilisée lors de l'envoi d'e-mails d'invitation. Si elle n'est pas configurée, Charon utilisera l'URL de la requête actuelle du navigateur, qui peut ne pas être accessible depuis les réseaux externes.",
"invalidUrl": "Veuillez entrer une URL valide commençant par http:// ou https://",
"notConfiguredWarning": "L'URL de l'application n'est pas configurée. Les e-mails d'invitation utiliseront l'URL actuelle du navigateur, qui peut ne pas être accessible depuis les réseaux externes.",
"testButton": "Tester l'URL",
"testSuccess": "URL ouvert avec succès",
"testFailed": "Échec de l'ouverture de l'URL"
}, "systemStatus": {
"title": "État du Système",
"service": "Service",
"version": "Version",
"buildTime": "Date de Compilation",
"gitCommit": "Commit Git",
"notAvailable": "N/D",
"fetchError": "Impossible de récupérer l'état du système. Veuillez vérifier votre connexion."
},
"updates": {
"title": "Mises à Jour Logicielles",
"description": "Vérifier les nouvelles versions de Charon.",
"currentVersion": "Version Actuelle",
"latestVersion": "Dernière Version",
"updateAvailable": "Mise à Jour Disponible",
"newVersionAvailable": "Une nouvelle version de Charon est disponible !",
"viewReleaseNotes": "Voir les Notes de Version",
"upToDate": "À Jour",
"runningLatest": "Vous utilisez la dernière version de Charon.",
"checkForUpdates": "Vérifier les Mises à Jour"
}
},
"crowdsecConfig": {
"title": "Configuration CrowdSec",
"loading": "Chargement de la configuration CrowdSec...",
"loadError": "Erreur lors du chargement du statut CrowdSec",
"noStatus": "Statut CrowdSec non disponible",
"note": "Les mises à jour automatiques et la gestion des préréglages sont alimentées par Cerberus. Certaines fonctionnalités peuvent être limitées si Cerberus est désactivé.",
"consoleEnrollment": {
"title": "Inscription à la Console",
"status": "Statut",
"notEnrolled": "Non inscrit",
"enrolled": "Inscrit",
"pending": "En attente",
"enrolling": "Inscription...",
"pendingAcceptance": "En attente d'acceptation",
"unknown": "Inconnu",
"lapiNotReady": "LAPI n'est pas encore prêt. CrowdSec est peut-être en cours de démarrage.",
"checkLapiStatus": "Vérifier le statut LAPI",
"startCrowdSec": "Démarrer CrowdSec",
"goToSecurity": "Aller au tableau de bord de sécurité",
"enrollmentToken": "Jeton d'inscription",
"tokenPlaceholder": "Collez votre jeton d'inscription de la Console CrowdSec",
"agentName": "Nom de l'agent (optionnel)",
"agentPlaceholder": "mon-instance-charon",
"tenant": "Locataire/Organisation (optionnel)",
"tenantPlaceholder": "id-org-de-console",
"acknowledge": "Je reconnais que cela fera tourner les identifiants si déjà inscrit",
"enroll": "Inscrire",
"rotateKey": "Faire tourner la clé",
"retryEnrollment": "Réessayer l'inscription",
"lapiMustBeReady": "LAPI doit être prêt pour s'inscrire",
"lapiMustBeReadyRotate": "LAPI doit être prêt pour faire tourner la clé",
"lapiMustBeReadyRetry": "LAPI doit être prêt pour réessayer l'inscription",
"tokenRequired": "Le jeton d'inscription est requis",
"actionRequired": "Action requise",
"pendingAcceptanceText": "Votre demande d'inscription a été soumise. Veuillez accepter cette machine dans la Console CrowdSec à",
"pendingAcceptanceNote": " Une fois accepté, le statut sera mis à jour automatiquement.",
"agent": "Agent",
"tenantLabel": "Locataire",
"lastAttempt": "Dernière tentative",
"enrolledAt": "Inscrit",
"correlationId": "ID de corrélation"
},
"reenroll": {
"title": "Options de réinscription",
"description": "Besoin de changer de clés d'inscription ou de passer à une autre organisation ?",
"getNewKey": "Obtenir une nouvelle clé d'inscription de la Console",
"withNewKey": "Réinscrire avec une nouvelle clé",
"newEnrollmentKey": "Nouvelle clé d'inscription",
"keyPlaceholder": "Collez la nouvelle clé d'inscription",
"agentPlaceholder": "Laisser vide pour conserver le nom actuel",
"tenantOptional": "Locataire/Organisation (optionnel)",
"orgPlaceholder": "Laisser vide pour conserver l'actuel",
"reenroll": "Réinscrire",
"reenrolling": "Réinscription...",
"clearState": "Effacer l'état d'inscription",
"clearing": "Effacement...",
"clearConfirm": "Cela effacera l'état d'inscription local. Vous devrez peut-être vous réinscrire. Continuer ?"
},
"packages": {
"title": "Paquets de configuration",
"description": "Exportez ou importez des paquets de configuration CrowdSec (tar.gz/zip). Une sauvegarde est créée avant l'importation.",
"export": "Exporter",
"import": "Importer",
"importing": "Importation..."
},
"presets": {
"title": "Préréglages",
"description": "Appliquez des préréglages de configuration curés ou du hub.",
"searchPlaceholder": "Rechercher des préréglages...",
"sortAlpha": "Trier : A-Z",
"sortSource": "Trier : Source",
"curated": "Curé",
"hub": "Hub",
"noResults": "Aucun préréglage ne correspond à \"{{query}}\"",
"pullPreview": "Récupérer l'aperçu",
"applyPreset": "Appliquer le préréglage",
"hubUnreachable": "Hub CrowdSec inaccessible. Les préréglages du hub peuvent ne pas fonctionner.",
"retry": "Réessayer",
"useCached": "Utiliser le cache",
"targetFile": "Fichier cible",
"selectFileBelow": "(sélectionnez un fichier de configuration ci-dessous)",
"cacheKey": "Clé de cache",
"etag": "ETag",
"source": "Source",
"fetched": "Récupéré",
"previewYaml": "Aperçu (YAML) :",
"previewUnavailable": "Aperçu non disponible",
"applied": "Appliqué",
"backup": "Sauvegarde",
"reload": "Recharger",
"required": "Requis",
"method": "Méthode",
"filesystem": "Système de fichiers",
"loadCached": "Charger l'aperçu en cache",
"applyDisabled": "Application désactivée tant que le hub est hors ligne.",
"noPresets": "Aucun préréglage disponible. Assurez-vous que Cerberus est activé."
},
"files": {
"title": "Modifier les fichiers de configuration",
"selectFile": "Sélectionner un fichier...",
"refresh": "Actualiser"
},
"bannedIps": {
"title": "IPs bannies",
"banIp": "Bannir IP",
"enableFirst": "Activez CrowdSec pour gérer les IPs bannies",
"loading": "Chargement des IPs bannies...",
"loadFailed": "Échec du chargement des IPs bannies",
"none": "Aucune IP bannie",
"ip": "IP",
"reason": "Raison",
"duration": "Durée",
"bannedAt": "Banni le",
"source": "Source",
"actions": "Actions",
"unban": "Débannir"
},
"banModal": {
"title": "Bannir une adresse IP",
"ipLabel": "Adresse IP",
"durationLabel": "Durée",
"duration1h": "1 heure",
"duration4h": "4 heures",
"duration24h": "24 heures",
"duration7d": "7 jours",
"duration30d": "30 jours",
"durationPermanent": "Permanent",
"reasonLabel": "Raison",
"reasonPlaceholder": "Raison du bannissement de cette IP...",
"submit": "Bannir IP"
},
"unbanModal": {
"title": "Confirmer le débannissement",
"confirm": "Êtes-vous sûr de vouloir débannir",
"submit": "Débannir"
}
},
"smtp": {
"title": "Paramètres Email (SMTP)",
"description": "Configurez les paramètres SMTP pour activer les notifications par email et les invitations d'utilisateurs.",
"configuration": "Configuration SMTP",
"configDescription": "Entrez les détails de votre serveur SMTP pour activer la fonctionnalité email.",
"host": "Hôte SMTP",
"port": "Port",
"username": "Nom d'utilisateur",
"password": "Mot de passe",
"passwordHelper": "Utilisez un mot de passe spécifique à l'application pour Gmail",
"fromAddress": "Adresse d'expédition",
"encryption": "Chiffrement",
"selectEncryption": "Sélectionner le chiffrement",
"starttls": "STARTTLS (Recommandé)",
"sslTls": "SSL/TLS",
"none": "Aucun",
"testConnection": "Tester la connexion",
"saveSettings": "Enregistrer les paramètres",
"settingsSaved": "Paramètres SMTP enregistrés avec succès",
"saveFailed": "Échec de l'enregistrement des paramètres SMTP",
"connectionSuccess": "Connexion SMTP réussie",
"connectionFailed": "Échec de la connexion SMTP",
"testFailed": "Échec du test de connexion SMTP",
"configured": "SMTP configuré",
"notConfigured": "SMTP non configuré",
"active": "Actif",
"inactive": "Inactif",
"sendTestEmail": "Envoyer un email de test",
"testEmailDescription": "Envoyez un email de test pour vérifier que votre configuration SMTP fonctionne correctement.",
"sendTest": "Envoyer le test",
"testEmailSent": "Email de test envoyé avec succès",
"testEmailFailed": "Échec de l'envoi de l'email de test",
"needHelp": "Besoin d'aide ?",
"helpText": "Si vous utilisez Gmail, vous devrez activer l'authentification à 2 facteurs et créer un mot de passe spécifique à l'application. Pour les autres fournisseurs, consultez leur documentation SMTP pour les paramètres corrects."
},
"securityHeaders": {
"title": "En-têtes de Sécurité",
"description": "Configurer les en-têtes de sécurité HTTP pour vos hôtes proxy",
"createProfile": "Créer un Profil",
"alertTitle": "Sécurisez vos Applications",
"alertDescription": "Les en-têtes de sécurité protègent contre les vulnérabilités web courantes. Utilisez des modèles pour une configuration rapide ou créez des profils personnalisés pour un contrôle précis.",
"systemProfiles": "Profils Système (Lecture Seule)",
"systemProfilesDescription": "Profils de sécurité préconfigurés que vous pouvez attribuer aux hôtes proxy. Clonez pour personnaliser.",
"customProfiles": "Profils Personnalisés",
"noCustomProfiles": "Pas encore de profils personnalisés",
"noCustomProfilesDescription": "Créez un profil d'en-têtes de sécurité personnalisé ou appliquez un modèle pour commencer",
"view": "Voir",
"clone": "Cloner",
"updated": "Mis à jour",
"viewProfile": "Voir le Profil d'En-têtes de Sécurité",
"editProfile": "Modifier le Profil d'En-têtes de Sécurité",
"createProfileTitle": "Créer un Profil d'En-têtes de Sécurité",
"confirmDeletion": "Confirmer la Suppression",
"deleteConfirmMessage": "Êtes-vous sûr de vouloir supprimer \"{{name}}\" ? Une sauvegarde sera créée avant la suppression.",
"deleting": "Suppression...",
"creatingBackup": "Création de la sauvegarde avant suppression...",
"backupCreated": "Sauvegarde créée",
"backupFailed": "Échec de la création de la sauvegarde",
"deleteSuccess": "\"{{name}}\" supprimé. Une sauvegarde a été créée avant la suppression.",
"deleteFailed": "Échec de la suppression : {{error}}",
"presets": {
"basic": "En-têtes de sécurité minimaux pour une compatibilité maximale.\n✓ Idéal pour : Tests, développement, sites web simples.\n✓ Compatible avec toutes les applications et apps mobiles.",
"apiFriendly": "Optimisé pour les apps mobiles et clients API.\n✓ Idéal pour : Radarr, Sonarr, Plex, Jellyfin, Home Assistant, Vaultwarden.\n✓ Forte sécurité de transport, permet l'accès cross-origin.\nRecommandé pour les services accessibles via apps mobiles.",
"strict": "Sécurité renforcée pour les applications web.\n✓ Idéal pour : Tableaux de bord web uniquement, panneaux d'administration.\n⚠ Peut affecter les apps mobiles et clients API.\nNon recommandé pour Radarr, Plex ou services avec apps companion.",
"paranoid": "Sécurité maximale pour les applications à haut risque.\n✓ Idéal pour : Banque, santé, apps critiques de conformité.\n⚠ AFFECTERA les apps mobiles, clients API et flux OAuth.\nUtilisez uniquement si vous comprenez et pouvez personnaliser chaque en-tête."
}
},
"dns": {
"title": "Gestion DNS",
"description": "Gérer les fournisseurs DNS et les plugins pour l'automatisation des certificats"
}
}
-991
View File
@@ -1,991 +0,0 @@
{
"common": {
"save": "保存",
"cancel": "取消",
"delete": "删除",
"edit": "编辑",
"add": "添加",
"create": "创建",
"update": "更新",
"close": "关闭",
"confirm": "确认",
"back": "返回",
"next": "下一步",
"loading": "加载中...",
"error": "错误",
"success": "成功",
"warning": "警告",
"info": "信息",
"yes": "是",
"no": "否",
"enabled": "已启用",
"disabled": "已禁用",
"name": "名称",
"description": "描述",
"actions": "操作",
"status": "状态",
"search": "搜索",
"filter": "筛选",
"settings": "设置",
"language": "语言",
"configure": "配置",
"test": "测试",
"docs": "文档",
"upload": "上传",
"active": "活动",
"type": "类型",
"rules": "规则",
"allow": "允许",
"deny": "拒绝",
"saveConfiguration": "保存配置",
"enabledCount": "{{count}} 个已启用",
"validCount": "{{count}} 个有效",
"activeCount": "{{count}} 个活动",
"noHistoryAvailable": "无可用历史",
"autoRefreshing": "每 {{seconds}} 秒自动刷新",
"score": "评分"
},
"navigation": {
"dashboard": "仪表板",
"proxyHosts": "代理主机",
"remoteServers": "远程服务器",
"domains": "域名",
"certificates": "证书",
"dns": "DNS",
"dnsProviders": "DNS 提供商",
"plugins": "插件",
"security": "安全",
"accessLists": "访问列表",
"crowdsec": "CrowdSec",
"rateLimiting": "速率限制",
"waf": "WAF",
"uptime": "正常运行时间",
"notifications": "通知",
"users": "用户",
"tasks": "任务",
"settings": "设置",
"system": "系统",
"email": "电子邮件 (SMTP)",
"adminAccount": "管理员账户",
"accountManagement": "账户管理",
"import": "导入",
"caddyfile": "Caddyfile",
"backups": "备份",
"logs": "日志",
"securityHeaders": "安全头",
"expandSidebar": "展开侧边栏",
"collapseSidebar": "收起侧边栏"
},
"dashboard": {
"title": "仪表板",
"description": "Charon反向代理概览",
"proxyHosts": "代理主机",
"remoteServers": "远程服务器",
"certificates": "证书",
"accessLists": "访问列表",
"systemStatus": "系统状态",
"healthy": "健康",
"unhealthy": "不健康",
"pendingCertificates": "待处理证书",
"allCertificatesValid": "所有证书有效",
"activeHosts": "{{count}} 个活动",
"activeServers": "{{count}} 个活动",
"activeLists": "{{count}} 个活动",
"validCerts": "{{count}} 个有效"
},
"settings": {
"title": "设置",
"description": "配置您的Charon实例",
"system": "系统",
"smtp": "电子邮件 (SMTP)",
"account": "账户",
"language": "语言",
"languageDescription": "选择您的首选语言",
"theme": "主题",
"themeDescription": "选择浅色或深色主题"
},
"proxyHosts": {
"title": "代理主机",
"description": "管理您的反向代理配置",
"addHost": "添加代理主机",
"editHost": "编辑代理主机",
"deleteHost": "删除代理主机",
"domainNames": "域名",
"forwardHost": "转发主机",
"forwardPort": "转发端口",
"sslEnabled": "已启用SSL",
"sslForced": "强制SSL",
"columnName": "名称",
"columnDomain": "域名",
"columnForwardTo": "转发至",
"columnSSL": "SSL",
"columnFeatures": "功能",
"columnStatus": "状态",
"columnActions": "操作",
"unnamed": "未命名",
"staging": "测试",
"websocket": "WS",
"acl": "ACL",
"noHosts": "无代理主机",
"noHostsDescription": "创建您的第一个代理主机以开始将流量路由到您的服务。",
"selectedCount": "已选择 {{count}} 个主机",
"selectedCountAll": "(全部)",
"bulkApply": "批量应用",
"manageACL": "管理ACL",
"deleteConfirmTitle": "删除代理主机?",
"deleteConfirmMessage": "您确定要删除 <strong>{{name}}</strong> 吗?此操作无法撤销。",
"bulkApplyTitle": "批量应用设置",
"bulkApplyDescription": "正在将设置应用到 <strong>{{count}}</strong> 个选定的主机",
"applyACLTitle": "应用访问列表",
"applyACLDescription": "正在应用到 <strong>{{count}}</strong> 个选定的主机。每个代理主机只能应用一个访问控制列表。",
"applyACL": "应用ACL",
"removeACL": "移除ACL",
"selectedACLCount": "已选择 {{selected}}/{{total}}",
"selectAll": "全选",
"clear": "清除",
"noEnabledACLs": "没有可用的已启用访问列表",
"removeACLWarning": "这将从所有 {{count}} 个选定的主机中移除访问列表。",
"publicAccessWarning": "这些主机将变为公开访问。",
"applyingACLs": "正在应用ACLs... ({{current}}/{{total}})",
"bulkDeleteTitle": "删除 {{count}} 个代理主机?",
"bulkDeleteDescription": "此操作无法撤销。删除前将自动创建备份。",
"hostsToDelete": "将被删除的主机:",
"backupInfo": "删除前将自动创建备份。如需要,您可以从备份页面恢复。",
"creatingBackup": "正在创建备份...",
"deletePermanently": "永久删除",
"ferryingNewHost": "正在渡送新主机...",
"ferryingNewHostSub": "卡戎正在渡过冥河",
"guidingChanges": "正在引导更改...",
"guidingChangesSub": "配置正在传输中",
"returningToShore": "返回岸边...",
"returningToShoreSub": "主机正在离开",
"ferryingSouls": "正在渡送 {{count}} 个灵魂...",
"ferryingSoulsSub": "批量操作正在渡河",
"ferryingConfig": "正在渡送配置...",
"sslForce": "强制SSL",
"http2Support": "HTTP/2支持",
"hstsEnabled": "HSTS已启用",
"hstsSubdomains": "HSTS子域名",
"blockExploits": "阻止漏洞利用",
"websocketSupport": "WebSocket支持",
"apply": "应用",
"applyCount": "应用 ({{count}})",
"bulkApplySecurityHeaders": "安全标头配置文件",
"bulkApplySecurityHeadersHelp": "将安全标头配置文件应用于所有选定的主机",
"noSecurityProfile": "无(移除配置文件)",
"removeSecurityHeadersWarning": "这将从所有选定的主机中移除安全标头配置文件,可能降低其安全态势。"
},
"certificates": {
"title": "SSL证书",
"description": "管理代理主机的SSL/TLS证书",
"addCertificate": "添加证书",
"uploadCertificate": "上传证书",
"domain": "域名",
"status": "状态",
"expiresAt": "过期时间",
"valid": "有效",
"pending": "待处理",
"expired": "已过期",
"friendlyName": "友好名称",
"certificatePem": "证书 (PEM)",
"privateKeyPem": "私钥 (PEM)",
"uploadSuccess": "证书上传成功",
"uploadFailed": "证书上传失败",
"note": "注意",
"noteText": "您可以删除自定义证书和测试证书。生产环境的Let's Encrypt证书会自动续期,除非切换环境否则不应删除。"
},
"auth": {
"login": "登录",
"logout": "注销",
"email": "电子邮件",
"password": "密码",
"username": "用户名",
"signIn": "登录",
"signOut": "注销",
"forgotPassword": "忘记密码?",
"rememberMe": "记住我",
"checkingSetup": "正在检查设置状态...",
"loggingIn": "正在支付船费...",
"loggingInSub": "您的奥波勒斯允许通行",
"loginSuccess": "登录成功",
"loginFailed": "登录失败",
"resetPasswordTitle": "重置密码:",
"resetPasswordInstructions": "在服务器上运行此命令:"
},
"errors": {
"required": "此字段为必填项",
"invalidEmail": "无效的电子邮件地址",
"passwordTooShort": "密码必须至少8个字符",
"genericError": "发生错误。请重试。",
"networkError": "网络错误。请检查您的连接。",
"unauthorized": "未授权。请重新登录。",
"notFound": "未找到资源",
"serverError": "服务器错误。请稍后再试。"
},
"notifications": {
"saveSuccess": "更改已成功保存",
"deleteSuccess": "删除成功",
"createSuccess": "创建成功",
"updateSuccess": "更新成功",
"saveFailed": "保存更改失败",
"deleteFailed": "删除失败",
"createFailed": "创建失败",
"updateFailed": "更新失败",
"partialFailed": "完成,有 {{count}} 个错误"
},
"security": {
"title": "安全",
"description": "为反向代理配置安全层",
"cerberusDashboard": "Cerberus 控制面板",
"cerberusActive": "活动",
"cerberusDisabled": "已禁用",
"cerberusReadyMessage": "所有安全头已准备好进行配置",
"cerberusDisabledMessage": "在系统设置中启用 Cerberus 以激活安全功能",
"featuresUnavailable": "安全功能不可用",
"featuresUnavailableMessage": "Cerberus 驱动 CrowdSec、Coraza WAF、访问控制和速率限制。在系统设置中启用 Cerberus 开关以激活这些功能。",
"learnMore": "了解更多",
"adminWhitelist": "管理员白名单",
"adminWhitelistDescription": "配置绕过安全检查的IP地址",
"commaSeparatedCIDR": "逗号分隔的CIDR/IP",
"generateToken": "生成令牌",
"generateTokenTooltip": "生成紧急访问的应急令牌",
"enableCerberusFirst": "请先启用 Cerberus",
"layer": "层",
"crowdsec": {
"title": "CrowdSec",
"subtitle": "IP信誉和威胁情报",
"badge": "IDS",
"enabledDescription": "防护:已知攻击者、僵尸网络、暴力破解",
"disabledDescription": "由社区威胁情报驱动的入侵防御系统",
"processRunning": "运行中 (PID {{pid}})",
"processStopped": "进程已停止",
"toggleTooltip": "切换 CrowdSec 保护"
},
"acl": {
"title": "访问控制",
"subtitle": "基于IP和地理位置的过滤",
"badge": "ACL",
"description": "防护:未授权IP、地理攻击、内部威胁",
"manageLists": "管理列表",
"toggleTooltip": "切换访问控制"
},
"waf": {
"title": "Coraza WAF",
"subtitle": "请求检查和过滤",
"badge": "WAF",
"enabledDescription": "防护:SQL注入、XSS、RCE、零日漏洞*",
"disabledDescription": "带有OWASP核心规则集的Web应用防火墙",
"toggleTooltip": "切换 Coraza WAF"
},
"rateLimit": {
"title": "速率限制",
"subtitle": "请求量控制",
"badge": "Rate",
"description": "防护:DDoS攻击、凭据填充、API滥用",
"toggleTooltip": "切换速率限制"
},
"notifications": "通知",
"threeHeadsTurn": "三头转向...",
"cerberusConfigUpdating": "Cerberus 配置更新中",
"summoningGuardian": "召唤守护者...",
"crowdsecStarting": "CrowdSec 正在启动",
"guardianRests": "守护者休息...",
"crowdsecStopping": "CrowdSec 正在停止",
"strengtheningGuard": "加强守卫...",
"wardsActivating": "保护结界激活中"
},
"accessLists": {
"title": "访问列表",
"description": "管理基于IP的访问控制",
"createAccessList": "创建访问列表",
"editAccessList": "编辑访问列表",
"deleteAccessList": "删除访问列表",
"deleteSelected": "删除 ({{count}})",
"bestPractices": "最佳实践",
"testIP": "测试IP",
"testIPAddress": "测试IP地址",
"ipAddress": "IP地址",
"accessList": "访问列表",
"rfc1918Only": "仅RFC1918",
"cgnatWarning": {
"title": "CGNAT和移动网络警告",
"message": "如果您使用T-Mobile 5G家庭互联网、Starlink或其他CGNAT连接,地理封锁可能无法按预期工作。您的IP可能显示为数据中心位置,而不是您的实际位置。",
"solutionsTitle": "如果被锁定的解决方案:",
"solution1": "通过本地网络IP访问(192.168.x.x- ACL不适用于本地IP",
"solution2": "将您当前的IP添加到白名单ACL",
"solution3": "使用下方的'测试IP'检查服务器看到的IP",
"solution4": "暂时禁用ACL以恢复访问",
"solution5": "通过已知良好IP地址的VPN连接"
},
"deleteConfirmTitle": "删除访问列表",
"deleteConfirmMessage": "您确定要删除\"{{name}}\"吗?删除前将创建备份。",
"bulkDeleteConfirmTitle": "删除选中的访问列表",
"bulkDeleteConfirmMessage": "您确定要删除 {{count}} 个访问列表吗?删除前将创建备份。",
"deleteItems": "删除 {{count}} 项",
"deleting": "删除中...",
"noAccessLists": "无访问列表",
"noAccessListsDescription": "创建您的第一个访问列表来控制谁可以访问您的服务"
},
"rateLimiting": {
"title": "速率限制配置",
"description": "控制请求速率以保护您的服务免受滥用",
"aboutTitle": "关于速率限制",
"aboutDescription": "速率限制帮助保护您的服务免受滥用、暴力攻击和过度资源消耗。按客户端IP地址配置限制。",
"currentlyActive": "当前活动",
"currentConfig": "{{requests}} 请求/秒 • 突发: {{burst}} • 窗口: {{window}}秒",
"enableRateLimiting": "启用速率限制",
"enabledMessage": "速率限制已激活并保护您的服务",
"disabledMessage": "启用以开始限制请求速率",
"configuration": "配置",
"requestsPerSecond": "每秒请求数",
"requestsPerSecondHelper": "每个客户端每秒允许的最大请求数",
"burst": "突发",
"burstHelper": "允许短暂超过速率限制的突发",
"windowSeconds": "窗口(秒)",
"windowHelper": "速率计算的时间窗口",
"rateLimitingDisabled": "速率限制已禁用",
"enableToConfigureMessage": "启用速率限制以配置请求限制并保护您的服务",
"adjustingGates": "调整门禁...",
"configurationUpdating": "速率限制配置更新中"
},
"wafConfig": {
"title": "WAF配置",
"description": "管理Coraza Web应用防火墙规则集",
"addRuleSet": "添加规则集",
"createRuleSet": "创建规则集",
"editRuleSet": "编辑规则集",
"updateRuleSet": "更新规则集",
"deleteRuleSet": "删除规则集",
"ruleSyntax": "规则语法",
"aboutTitle": "关于WAF规则集",
"aboutDescription": "规则集定义检查和过滤HTTP请求的ModSecurity/Coraza规则。WAF自动为您的规则启用SecRuleEngine On和SecRequestBodyAccess On。",
"deleteConfirmTitle": "删除规则集",
"deleteConfirmMessage": "您确定要删除\"{{name}}\"吗?此操作无法撤销。",
"noRuleSets": "无规则集",
"noRuleSetsDescription": "创建您的第一个WAF规则集以保护您的服务免受Web攻击",
"ruleSetName": "规则集名称",
"mode": "模式",
"blocking": "阻止",
"detection": "检测",
"detectionOnly": "仅检测",
"blockingDescription": "恶意请求将被HTTP 403阻止",
"detectionDescription": "恶意请求将被记录但不会被阻止",
"sourceUrl": "源URL(可选)",
"sourceUrlHelper": "获取规则的URL。留空以使用内联内容。",
"ruleContent": "规则内容",
"ruleContentHelper": "ModSecurity/Coraza规则语法。每个SecRule应在单独的行上。",
"source": "源",
"url": "URL",
"inline": "内联",
"lastUpdated": "最后更新",
"rulesCount": "{{count}} 条规则",
"quickStartPreset": "预设快速启动",
"choosePreset": "选择预设...",
"cerberusAwakens": "Cerberus 苏醒...",
"guardianWatches": "门禁守护者驻守",
"forgingDefenses": "锻造新防御...",
"rulesInscribing": "安全规则刻录中",
"loweringBarrier": "降低屏障...",
"defenseRemoved": "防御层已移除",
"loadingWaf": "加载WAF配置...",
"loadingFailed": "加载WAF配置失败"
},
"uptime": {
"title": "运行时间监控",
"description": "监控服务的健康状况和可用性",
"autoRefresh": "每30秒自动刷新",
"noMonitors": "未找到监控器。添加代理主机或远程服务器以开始监控。",
"proxyHosts": "代理主机",
"remoteServers": "远程服务器",
"otherMonitors": "其他监控器",
"configureMonitor": "配置监控器",
"monitorName": "名称",
"maxRetries": "最大重试次数",
"maxRetriesHelper": "发送警报前的连续失败次数。",
"checkInterval": "检查间隔(秒)",
"saveChanges": "保存更改",
"saving": "保存中...",
"latency": "延迟",
"lastCheck": "上次检查",
"never": "从未",
"paused": "已暂停",
"pause": "暂停",
"unpause": "取消暂停",
"triggerCheck": "触发即时健康检查",
"healthCheckTriggered": "健康检查已触发",
"monitorDeleted": "监控器已删除",
"deleteConfirm": "删除此监控器?此操作无法撤销。"
},
"domains": {
"title": "域名",
"description": "管理您的域名",
"addDomain": "添加域名",
"deleteDomain": "删除域名",
"domainName": "域名",
"placeholder": "example.com",
"adding": "添加中...",
"added": "添加于 {{date}}",
"deleteConfirm": "您确定要删除此域名吗?",
"createFailed": "创建域名失败",
"deleteFailed": "删除域名失败",
"loadError": "加载域名错误"
},
"remoteServers": {
"title": "远程服务器",
"description": "管理代理主机的后端服务器",
"addServer": "添加服务器",
"editServer": "编辑服务器",
"deleteServer": "删除远程服务器",
"noServers": "无远程服务器",
"noServersDescription": "添加服务器以便在创建代理主机时快速选择后端",
"columnName": "名称",
"columnProvider": "提供商",
"columnHost": "主机",
"columnPort": "端口",
"host": "主机",
"port": "端口",
"user": "用户",
"gridView": "网格视图",
"listView": "列表视图",
"deleteConfirm": "您确定要删除 \"{{name}}\" 吗?此操作无法撤销。",
"deleting": "删除中..."
},
"notificationProviders": {
"title": "通知提供商",
"description": "管理通知提供商和模板",
"addProvider": "添加提供商",
"addNewProvider": "添加新提供商",
"providerName": "名称",
"urlWebhook": "URL / Webhook",
"urlRequired": "URL是必填项",
"genericWebhook": "通用 Webhook (Shoutrrr)",
"customWebhook": "自定义 Webhook (JSON)",
"shoutrrrHelp": "有关 Shoutrrr 格式,请参阅",
"jsonPayloadTemplate": "JSON 负载模板",
"minimalTemplate": "最小模板",
"detailedTemplate": "详细模板",
"customTemplate": "自定义",
"template": "模板",
"availableVariables": "可用变量:.Title, .Message, .Status, .Name, .Latency, .Time。支持 webhook、Discord、Slack、Gotify 和通用服务。",
"notificationEvents": "通知事件",
"proxyHosts": "代理主机",
"remoteServers": "远程服务器",
"domainsNotify": "域名",
"certificates": "证书",
"uptime": "运行时间",
"preview": "预览",
"previewError": "预览错误",
"previewResult": "预览结果",
"externalTemplates": "外部模板",
"manageTemplates": "管理模板",
"hideTemplates": "隐藏",
"newTemplate": "新模板",
"createTemplate": "创建模板",
"templateType": "模板类型",
"minimal": "最小",
"detailed": "详细",
"custom": "自定义",
"configJson": "配置 (JSON/模板)",
"noExternalTemplates": "没有外部模板。使用上面的表单创建一个。",
"deleteTemplateConfirm": "删除模板?",
"sendTest": "发送测试通知",
"testSent": "测试通知已发送!",
"testFailed": "发送测试失败",
"deleteConfirm": "您确定吗?",
"noProviders": "未配置通知提供商。"
},
"users": {
"title": "用户管理",
"inviteUser": "邀请用户",
"inviteSent": "邀请邮件已发送",
"inviteCreated": "用户已邀请 - 复制下方的邀请链接",
"inviteFailed": "邀请用户失败",
"inviteLinkCopied": "邀请链接已复制到剪贴板",
"inviteSuccess": "用户邀请成功",
"inviteEmailSent": "邀请邮件已发送给用户。",
"inviteEmailNotSent": "邮件未发送。请手动分享邀请链接。",
"inviteLink": "邀请链接",
"copyInviteLink": "复制邀请链接",
"expires": "过期",
"done": "完成",
"emailAddress": "电子邮件地址",
"role": "角色",
"roleUser": "用户",
"roleAdmin": "管理员",
"permissionMode": "权限模式",
"allowAllBlacklist": "允许所有(黑名单)",
"denyAllWhitelist": "拒绝所有(白名单)",
"allowAllDescription": "用户可以访问所有主机,除了下面选择的",
"denyAllDescription": "用户只能访问下面选择的主机",
"blockedHosts": "被阻止的主机",
"allowedHosts": "允许的主机",
"noProxyHosts": "未配置代理主机",
"sendInvite": "发送邀请",
"editPermissions": "编辑权限",
"permissionsUpdated": "权限已更新",
"permissionsUpdateFailed": "更新权限失败",
"savePermissions": "保存权限",
"userUpdated": "用户已更新",
"userUpdateFailed": "更新用户失败",
"userDeleted": "用户已删除",
"userDeleteFailed": "删除用户失败",
"columnUser": "用户",
"columnRole": "角色",
"columnPermissions": "权限",
"noName": "(无名称)",
"pendingInvite": "待处理邀请",
"inviteExpired": "邀请已过期",
"whitelist": "白名单",
"blacklist": "黑名单",
"deleteConfirm": "您确定要删除此用户吗?",
"deleteUser": "删除用户",
"inviteUrlPreview": "邀请链接预览",
"inviteUrlWarning": "未配置应用程序 URL。此链接可能无法为外部用户工作。",
"configureApplicationUrl": "配置应用程序 URL",
"resendInvite": "重新发送邀请",
"inviteResent": "邀请重新发送成功",
"inviteCreatedNoEmail": "新邀请已创建。无法发送电子邮件。",
"resendFailed": "重新发送邀请失败"
},
"dashboard": {
"title": "仪表板",
"description": "Charon反向代理概览",
"proxyHosts": "代理主机",
"remoteServers": "远程服务器",
"certificates": "证书",
"certificateStatus": "证书状态",
"accessLists": "访问列表",
"systemStatus": "系统状态",
"healthy": "健康",
"unhealthy": "不健康",
"pendingCertificates": "待处理证书",
"allCertificatesValid": "所有证书有效",
"activeHosts": "{{count}} 个活动",
"activeServers": "{{count}} 个活动",
"activeLists": "{{count}} 个活动",
"validCerts": "{{count}} 个有效"
},
"setup": {
"welcomeTitle": "欢迎使用 Charon",
"welcomeDescription": "创建您的管理员账户以开始使用。",
"nameLabel": "名称",
"namePlaceholder": "管理员用户",
"emailLabel": "电子邮件地址",
"emailPlaceholder": "admin@example.com",
"invalidEmail": "请输入有效的电子邮件地址",
"passwordLabel": "密码",
"createAdminButton": "创建管理员账户",
"setupFailed": "设置失败"
},
"acceptInvite": {
"title": "接受邀请",
"invalidLink": "无效链接",
"invalidLinkMessage": "此邀请链接无效或不完整。",
"goToLogin": "前往登录",
"validating": "正在验证邀请...",
"invitationInvalid": "邀请无效",
"expiredOrInvalid": "此邀请已过期或无效。",
"accountCreated": "账户已创建!",
"accountCreatedMessage": "您的账户已成功设置。正在跳转到登录页面...",
"youveBeenInvited": "您已被邀请!",
"completeSetup": "完成账户设置",
"yourName": "您的姓名",
"namePlaceholder": "张三",
"confirmPassword": "确认密码",
"passwordsDoNotMatch": "密码不匹配",
"createAccount": "创建账户",
"welcomeMessage": "欢迎,{{email}}!您现在可以登录了。",
"acceptFailed": "接受邀请失败"
},
"tasks": {
"title": "任务",
"description": "管理系统任务和查看日志"
},
"backups": {
"title": "备份",
"description": "管理数据库备份",
"configuration": "配置",
"intervalDays": "备份间隔(天)",
"retentionDays": "保留期限(天)",
"saveSettings": "保存设置",
"settingsSaved": "备份设置已保存",
"settingsFailed": "保存设置失败:{{error}}",
"createBackup": "创建备份",
"createSuccess": "备份创建成功",
"createFailed": "创建备份失败:{{error}}",
"restoreBackup": "恢复备份",
"restore": "恢复",
"restoreSuccess": "备份恢复成功。请重启容器。",
"restoreFailed": "恢复备份失败:{{error}}",
"restoreConfirmMessage": "您确定要恢复此备份吗?当前数据将被覆盖。恢复后需要重启容器。",
"deleteBackup": "删除备份",
"deleteSuccess": "备份删除成功",
"deleteFailed": "删除备份失败:{{error}}",
"deleteConfirmMessage": "您确定要删除 \"{{filename}}\" 吗?此操作无法撤销。",
"download": "下载",
"filename": "文件名",
"size": "大小",
"createdAt": "创建时间",
"auto": "自动",
"manual": "手动",
"noBackups": "无备份",
"noBackupsDescription": "创建您的第一个备份以保护您的配置"
},
"logs": {
"title": "日志",
"description": "查看系统和访问日志",
"logFiles": "日志文件",
"noLogFiles": "未找到日志文件",
"noLogSelected": "未选择日志",
"selectLogDescription": "从列表中选择一个日志文件以查看其内容",
"showingEntries": "显示 {{from}} 到 {{to}} 共 {{total}} 条",
"pageOf": "第 {{current}} 页,共 {{total}} 页"
},
"account": {
"title": "账户设置",
"profile": "个人资料",
"profileDescription": "更新您的个人信息。",
"saveProfile": "保存资料",
"profileUpdated": "资料更新成功",
"profileUpdateFailed": "更新资料失败:{{error}}",
"certificateEmail": "证书邮箱",
"certificateEmailDescription": "此邮箱用于 Let's Encrypt 通知和恢复。",
"useAccountEmail": "使用我的账户邮箱 ({{email}})",
"customEmail": "自定义邮箱",
"saveCertificateEmail": "保存证书邮箱",
"certEmailUpdated": "证书邮箱已更新",
"certEmailUpdateFailed": "更新证书邮箱失败:{{error}}",
"changePassword": "更改密码",
"changePasswordDescription": "为安全起见,请更新您的账户密码。",
"currentPassword": "当前密码",
"newPassword": "新密码",
"confirmNewPassword": "确认新密码",
"updatePassword": "更新密码",
"passwordsDoNotMatch": "密码不匹配",
"passwordUpdated": "密码更新成功",
"passwordUpdateFailed": "更新密码失败",
"apiKey": "API 密钥",
"apiKeyDescription": "使用此密钥以编程方式与 API 进行身份验证。请保密!",
"copyToClipboard": "复制到剪贴板",
"regenerateApiKey": "重新生成 API 密钥",
"apiKeyCopied": "API 密钥已复制到剪贴板",
"apiKeyRegenerated": "API 密钥重新生成成功",
"apiKeyRegenerateFailed": "重新生成 API 密钥失败:{{error}}",
"securityNotice": "安全提示",
"securityNoticeMessage": "切勿与任何人分享您的 API 密钥或密码。如果您认为凭据已被泄露,请立即重新生成您的 API 密钥。",
"confirmPassword": "确认密码",
"confirmPasswordDescription": "请输入您的当前密码以确认这些更改。",
"enterPassword": "输入您的密码",
"confirmAndUpdate": "确认并更新",
"updateCertEmailTitle": "更新证书邮箱?",
"updateCertEmailDescription": "您正在将账户邮箱更改为 {{email}}。您是否也想将此新邮箱用于 SSL 证书?",
"yesUpdateCertEmail": "是的,同时更新证书邮箱",
"noKeepEmail": "不,继续使用 {{email}}"
},
"importCaddy": {
"title": "导入 Caddyfile",
"enterCaddyfileContent": "请输入 Caddyfile 内容",
"cancelConfirm": "您确定要取消此导入吗?",
"noDomainsFound": "Caddyfile 中未找到域名",
"emptyFileWarning": "导入的文件似乎为空或不包含有效的 reverse_proxy 指令。请检查下方的文件内容。",
"uploadOrPaste": "上传或粘贴 Caddyfile",
"description": "导入现有的 Caddyfile 以自动创建代理主机配置。系统将检测冲突并允许您在提交前审查更改。",
"uploadCaddyfile": "上传 Caddyfile",
"orPasteContent": "或粘贴内容",
"caddyfileContent": "Caddyfile 内容",
"processing": "处理中...",
"parseAndReview": "解析并审查",
"multiSiteImport": "多站点导入"
},
"importCrowdSec": {
"title": "CrowdSec 配置包",
"description": "上传 tar.gz 或 zip 包。导入前会创建备份,以便需要时回滚。从 Cerberus 仪表板或 CrowdSec 配置页面导出当前包。",
"import": "导入",
"configImported": "CrowdSec 配置已导入",
"importFailed": "导入失败:{{error}}",
"creatingBackup": "正在创建备份...",
"importing": "正在导入 CrowdSec..."
},
"systemSettings": {
"title": "系统设置",
"settingsSaved": "系统设置已保存",
"settingsFailed": "保存设置失败:{{error}}",
"featureFlagUpdated": "功能标志已更新",
"featureFlagFailed": "更新标志失败:{{error}}",
"updatingFeatures": "正在更新功能...",
"applyingChanges": "正在应用配置更改",
"pleaseWait": "请稍候",
"saveSettings": "保存设置",
"features": {
"title": "功能",
"description": "为您的 Charon 实例启用或禁用可选功能。",
"cerberus": "Cerberus 安全套件",
"cerberusTooltip": "高级安全功能,包括 WAF、访问列表、速率限制和 CrowdSec。",
"crowdsecConsole": "CrowdSec 控制台注册",
"crowdsecConsoleTooltip": "允许将此节点注册到 CrowdSec 控制台以进行集中化队列管理。",
"uptimeMonitoring": "运行时间监控",
"uptimeMonitoringTooltip": "监控您的代理主机和远程服务器的可用性。"
},
"general": {
"title": "常规配置",
"description": "配置 Caddy 和 UI 偏好设置。",
"caddyAdminApi": "Caddy Admin API 端点",
"caddyAdminApiHelper": "Caddy 管理 API 的 URL(通常在端口 2019",
"sslProvider": "SSL 提供商",
"selectSslProvider": "选择 SSL 提供商",
"sslAuto": "自动(推荐)",
"sslLetsEncryptProd": "Let's Encrypt(生产)",
"sslLetsEncryptStaging": "Let's Encrypt(测试)",
"sslZeroSSL": "ZeroSSL",
"sslProviderHelper": "选择证书颁发机构。'自动'使用 Let's EncryptZeroSSL 作为备用。",
"domainLinkBehavior": "域名链接行为",
"selectLinkBehavior": "选择链接行为",
"sameTab": "同一标签页",
"newTab": "新标签页(默认)",
"newWindow": "新窗口",
"domainLinkBehaviorHelper": "控制代理主机列表中的域名链接如何打开。",
"languageHelper": "选择您的首选语言。更改立即生效。"
},
"applicationUrl": {
"title": "应用程序 URL",
"description": "配置用于面向用户的链接和电子邮件的公共 URL。",
"label": "应用程序 URL",
"helper": "用户访问 Charon 的公共 URL(例如 https://charon.example.com)。用于邀请邮件和密码重置链接。",
"infoMessage": "此 URL 用于发送邀请邮件。如果未配置,Charon 将使用当前浏览器请求的 URL,该 URL 可能无法从外部网络访问。",
"invalidUrl": "请输入以 http:// 或 https:// 开头的有效 URL",
"notConfiguredWarning": "应用程序 URL 未配置。邀请邮件将使用当前浏览器 URL,该 URL 可能无法从外部网络访问。",
"testButton": "测试 URL",
"testSuccess": "URL 打开成功",
"testFailed": "打开 URL 失败"
},
"systemStatus": {
"title": "系统状态",
"service": "服务",
"version": "版本",
"buildTime": "构建时间",
"gitCommit": "Git 提交",
"notAvailable": "不适用",
"fetchError": "无法获取系统状态。请检查您的连接。"
},
"updates": {
"title": "软件更新",
"description": "检查 Charon 的新版本。",
"currentVersion": "当前版本",
"latestVersion": "最新版本",
"updateAvailable": "有可用更新",
"newVersionAvailable": "Charon 有新版本可用!",
"viewReleaseNotes": "查看发布说明",
"upToDate": "已是最新",
"runningLatest": "您正在运行最新版本的 Charon。",
"checkForUpdates": "检查更新"
}
},
"crowdsecConfig": {
"title": "CrowdSec 配置",
"loading": "正在加载 CrowdSec 配置...",
"loadError": "加载 CrowdSec 状态时出错",
"noStatus": "CrowdSec 状态不可用",
"note": "自动更新和预设管理由 Cerberus 提供支持。如果 Cerberus 被禁用,某些功能可能会受限。",
"consoleEnrollment": {
"title": "控制台注册",
"status": "状态",
"notEnrolled": "未注册",
"enrolled": "已注册",
"pending": "待处理",
"enrolling": "正在注册...",
"pendingAcceptance": "等待接受",
"unknown": "未知",
"lapiNotReady": "LAPI 尚未准备好。CrowdSec 可能仍在启动中。",
"checkLapiStatus": "检查 LAPI 状态",
"startCrowdSec": "启动 CrowdSec",
"goToSecurity": "前往安全仪表板",
"enrollmentToken": "注册令牌",
"tokenPlaceholder": "粘贴您从 CrowdSec 控制台获取的注册令牌",
"agentName": "代理名称(可选)",
"agentPlaceholder": "我的-charon-实例",
"tenant": "租户/组织(可选)",
"tenantPlaceholder": "控制台中的组织ID",
"acknowledge": "我确认如果已注册,这将轮换凭据",
"enroll": "注册",
"rotateKey": "轮换密钥",
"retryEnrollment": "重试注册",
"lapiMustBeReady": "LAPI 必须准备好才能注册",
"lapiMustBeReadyRotate": "LAPI 必须准备好才能轮换密钥",
"lapiMustBeReadyRetry": "LAPI 必须准备好才能重试注册",
"tokenRequired": "需要注册令牌",
"actionRequired": "需要操作",
"pendingAcceptanceText": "您的注册请求已提交。请在 CrowdSec 控制台接受此机器:",
"pendingAcceptanceNote": " 一旦被接受,状态将自动更新。",
"agent": "代理",
"tenantLabel": "租户",
"lastAttempt": "最后尝试",
"enrolledAt": "注册于",
"correlationId": "关联ID"
},
"reenroll": {
"title": "重新注册选项",
"description": "需要切换注册密钥或迁移到不同的组织?",
"getNewKey": "从控制台获取新的注册密钥",
"withNewKey": "使用新密钥重新注册",
"newEnrollmentKey": "新注册密钥",
"keyPlaceholder": "粘贴新的注册密钥",
"agentPlaceholder": "留空以保留当前名称",
"tenantOptional": "租户/组织(可选)",
"orgPlaceholder": "留空以保留当前值",
"reenroll": "重新注册",
"reenrolling": "正在重新注册...",
"clearState": "清除注册状态",
"clearing": "正在清除...",
"clearConfirm": "这将清除本地注册状态。您可能需要重新注册。是否继续?"
},
"packages": {
"title": "配置包",
"description": "导出或导入 CrowdSec 配置包(tar.gz/zip)。导入前会创建备份。",
"export": "导出",
"import": "导入",
"importing": "正在导入..."
},
"presets": {
"title": "预设",
"description": "应用精选或 Hub 配置预设。",
"searchPlaceholder": "搜索预设...",
"sortAlpha": "排序:A-Z",
"sortSource": "排序:来源",
"curated": "精选",
"hub": "Hub",
"noResults": "没有匹配 \"{{query}}\" 的预设",
"pullPreview": "获取预览",
"applyPreset": "应用预设",
"hubUnreachable": "无法访问 CrowdSec Hub。Hub 预设可能无法使用。",
"retry": "重试",
"useCached": "使用缓存",
"targetFile": "目标文件",
"selectFileBelow": "(在下方选择配置文件)",
"cacheKey": "缓存键",
"etag": "ETag",
"source": "来源",
"fetched": "获取于",
"previewYaml": "预览(YAML):",
"previewUnavailable": "预览不可用",
"applied": "已应用",
"backup": "备份",
"reload": "重新加载",
"required": "必需",
"method": "方法",
"filesystem": "文件系统",
"loadCached": "加载缓存的预览",
"applyDisabled": "Hub 离线时禁用应用。",
"noPresets": "没有可用的预设。请确保 Cerberus 已启用。"
},
"files": {
"title": "编辑配置文件",
"selectFile": "选择文件...",
"refresh": "刷新"
},
"bannedIps": {
"title": "已封禁 IP",
"banIp": "封禁 IP",
"enableFirst": "启用 CrowdSec 以管理已封禁的 IP",
"loading": "正在加载已封禁 IP...",
"loadFailed": "加载已封禁 IP 失败",
"none": "没有已封禁的 IP",
"ip": "IP",
"reason": "原因",
"duration": "时长",
"bannedAt": "封禁于",
"source": "来源",
"actions": "操作",
"unban": "解封"
},
"banModal": {
"title": "封禁 IP 地址",
"ipLabel": "IP 地址",
"durationLabel": "时长",
"duration1h": "1 小时",
"duration4h": "4 小时",
"duration24h": "24 小时",
"duration7d": "7 天",
"duration30d": "30 天",
"durationPermanent": "永久",
"reasonLabel": "原因",
"reasonPlaceholder": "封禁此 IP 的原因...",
"submit": "封禁 IP"
},
"unbanModal": {
"title": "确认解封",
"confirm": "您确定要解封",
"submit": "解封"
}
},
"smtp": {
"title": "电子邮件 (SMTP) 设置",
"description": "配置 SMTP 设置以启用电子邮件通知和用户邀请。",
"configuration": "SMTP 配置",
"configDescription": "输入您的 SMTP 服务器详情以启用电子邮件功能。",
"host": "SMTP 主机",
"port": "端口",
"username": "用户名",
"password": "密码",
"passwordHelper": "Gmail 请使用应用专用密码",
"fromAddress": "发件人地址",
"encryption": "加密",
"selectEncryption": "选择加密方式",
"starttls": "STARTTLS(推荐)",
"sslTls": "SSL/TLS",
"none": "无",
"testConnection": "测试连接",
"saveSettings": "保存设置",
"settingsSaved": "SMTP 设置保存成功",
"saveFailed": "保存 SMTP 设置失败",
"connectionSuccess": "SMTP 连接成功",
"connectionFailed": "SMTP 连接失败",
"testFailed": "测试 SMTP 连接失败",
"configured": "SMTP 已配置",
"notConfigured": "SMTP 未配置",
"active": "活动",
"inactive": "非活动",
"sendTestEmail": "发送测试邮件",
"testEmailDescription": "发送测试邮件以验证您的 SMTP 配置是否正常工作。",
"sendTest": "发送测试",
"testEmailSent": "测试邮件发送成功",
"testEmailFailed": "发送测试邮件失败",
"needHelp": "需要帮助?",
"helpText": "如果您使用 Gmail,需要启用两步验证并创建应用专用密码。对于其他提供商,请查阅其 SMTP 文档以获取正确的设置。"
},
"securityHeaders": {
"title": "安全头",
"description": "为您的代理主机配置 HTTP 安全头",
"createProfile": "创建配置文件",
"alertTitle": "保护您的应用程序",
"alertDescription": "安全头可防止常见的 Web 漏洞。使用预设进行快速设置,或创建自定义配置文件以进行精细控制。",
"systemProfiles": "系统配置文件(只读)",
"systemProfilesDescription": "可分配给代理主机的预配置安全配置文件。克隆以进行自定义。",
"customProfiles": "自定义配置文件",
"noCustomProfiles": "尚无自定义配置文件",
"noCustomProfilesDescription": "创建自定义安全头配置文件或应用预设以开始使用",
"view": "查看",
"clone": "克隆",
"updated": "更新于",
"viewProfile": "查看安全头配置文件",
"editProfile": "编辑安全头配置文件",
"createProfileTitle": "创建安全头配置文件",
"confirmDeletion": "确认删除",
"deleteConfirmMessage": "您确定要删除 \"{{name}}\" 吗?删除前将创建备份。",
"deleting": "删除中...",
"creatingBackup": "删除前创建备份...",
"backupCreated": "备份已创建",
"backupFailed": "创建备份失败",
"deleteSuccess": "\"{{name}}\" 已删除。删除前已创建备份。",
"deleteFailed": "删除失败:{{error}}",
"presets": {
"basic": "最小安全头以实现最大兼容性。\n✓ 适用于:测试、开发、简单网站。\n✓ 与所有应用程序和移动应用兼容。",
"apiFriendly": "针对移动应用和 API 客户端优化。\n✓ 适用于:Radarr、Sonarr、Plex、Jellyfin、Home Assistant、Vaultwarden。\n✓ 强传输安全,允许跨域访问。\n推荐用于通过移动应用访问的服务。",
"strict": "Web 应用程序的强安全性。\n✓ 适用于:纯 Web 仪表板、管理面板。\n⚠ 可能会影响移动应用和 API 客户端。\n不推荐用于 Radarr、Plex 或带有配套应用的服务。",
"paranoid": "高风险应用程序的最大安全性。\n✓ 适用于:银行、医疗、合规关键应用。\n⚠ 将会影响移动应用、API 客户端和 OAuth 流程。\n仅在您了解并能自定义每个头时使用。"
}
},
"dns": {
"title": "DNS 管理",
"description": "管理 DNS 提供商和插件以实现证书自动化"
}
}