The update endpoint ran the entire git pull + docker build (up to 10 min) synchronously inside the request handler, blocking the whole server for everyone while it ran. Separately, the frontend spinner was only hidden on error, never on success, so it spun forever even when the update worked. - Run the update in a background thread; the request returns immediately - Add GET /settings/update/status for progress polling (backup/pull/build/restart) - Frontend polls status, then waits for the app to come back after the container restart, and shows a clear done/timeout message instead of an endless spinner Co-Authored-By: Claude Sonnet 5 <[email protected]>
425 lines
20 KiB
JSON
425 lines
20 KiB
JSON
{
|
|
"login": {
|
|
"subtitle": "Multi-Tenant Management Plattform",
|
|
"username": "Benutzername",
|
|
"password": "Passwort",
|
|
"signIn": "Anmelden",
|
|
"signInWithMicrosoft": "Mit Microsoft anmelden"
|
|
},
|
|
"nav": {
|
|
"newCustomer": "Neuer Kunde",
|
|
"settings": "Einstellungen",
|
|
"monitoring": "Monitoring",
|
|
"logout": "Abmelden"
|
|
},
|
|
"dashboard": {
|
|
"totalCustomers": "Kunden gesamt",
|
|
"active": "Aktiv",
|
|
"inactive": "Inaktiv",
|
|
"errors": "Fehler",
|
|
"searchPlaceholder": "Suche nach Name, Subdomain, E-Mail...",
|
|
"allStatuses": "Alle Status",
|
|
"statusActive": "Aktiv",
|
|
"statusInactive": "Inaktiv",
|
|
"statusDeploying": "Wird bereitgestellt",
|
|
"statusError": "Fehler",
|
|
"refresh": "Aktualisieren",
|
|
"thId": "ID",
|
|
"thName": "Name",
|
|
"thSubdomain": "Subdomain",
|
|
"thStatus": "Status",
|
|
"thDashboard": "Dashboard",
|
|
"thDevices": "Geräte",
|
|
"thCreated": "Erstellt",
|
|
"thActions": "Aktionen",
|
|
"noCustomers": "Keine Kunden gefunden. Klicken Sie auf \"Neuer Kunde\" um einen anzulegen.",
|
|
"showing": "Zeige {start}-{end} von {total}",
|
|
"showingEmpty": "Zeige 0 von 0"
|
|
},
|
|
"customer": {
|
|
"back": "Zurück",
|
|
"customer": "Kunde",
|
|
"edit": "Bearbeiten",
|
|
"delete": "Löschen",
|
|
"tabInfo": "Info",
|
|
"tabDeployment": "Deployment",
|
|
"tabLogs": "Logs",
|
|
"tabHealth": "Zustand",
|
|
"name": "Name:",
|
|
"company": "Firma:",
|
|
"subdomain": "Subdomain:",
|
|
"email": "E-Mail:",
|
|
"maxDevices": "Max. Geräte:",
|
|
"status": "Status:",
|
|
"created": "Erstellt:",
|
|
"updated": "Aktualisiert:",
|
|
"notes": "Notizen:",
|
|
"deploymentStatus": "Status:",
|
|
"relayUdpPort": "Relay UDP Port:",
|
|
"dashboardPort": "Dashboard Port:",
|
|
"containerPrefix": "Container-Präfix:",
|
|
"deployed": "Bereitgestellt:",
|
|
"setupUrl": "Setup URL:",
|
|
"copy": "Kopieren",
|
|
"open": "Öffnen",
|
|
"netbirdLogin": "NetBird Login",
|
|
"notAvailable": "Nicht verfügbar",
|
|
"showCredentials": "Zugangsdaten anzeigen",
|
|
"credEmail": "E-Mail",
|
|
"credPassword": "Passwort",
|
|
"showHide": "Anzeigen/Verbergen",
|
|
"credentialsNotAvailable": "Zugangsdaten nicht verfügbar. Der Admin muss das Setup manuell über die Setup URL abschließen.",
|
|
"start": "Starten",
|
|
"stop": "Stoppen",
|
|
"restart": "Neustarten",
|
|
"reDeploy": "Neu bereitstellen",
|
|
"noDeployment": "Kein Deployment gefunden.",
|
|
"deployNow": "Jetzt bereitstellen",
|
|
"containerLogs": "Container Logs",
|
|
"noContainerLogs": "Keine Container-Logs verfügbar.",
|
|
"noLogsLoaded": "Keine Logs geladen.",
|
|
"healthCheck": "Zustandsprüfung",
|
|
"check": "Prüfen",
|
|
"clickCheck": "Klicken Sie auf \"Prüfen\" um eine Zustandsprüfung durchzuführen.",
|
|
"healthy": "Gesund",
|
|
"unhealthy": "Fehlerhaft",
|
|
"overall": "Gesamt:",
|
|
"thContainer": "Container",
|
|
"thContainerStatus": "Status",
|
|
"thHealth": "Zustand",
|
|
"thImage": "Image",
|
|
"lastCheck": "Letzte Prüfung: {time}",
|
|
"openDashboard": "Dashboard öffnen",
|
|
"updateImages": "Images aktualisieren",
|
|
"updateInProgress": "Container werden aktualisiert — bitte warten…"
|
|
},
|
|
"settings": {
|
|
"title": "Systemeinstellungen",
|
|
"tabSystem": "NetBird MSP System",
|
|
"tabNpm": "NPM Proxy",
|
|
"tabImages": "NetBird Docker Images",
|
|
"tabBranding": "Branding",
|
|
"tabUsers": "Benutzer",
|
|
"tabAzure": "Azure AD",
|
|
"tabDns": "Windows DNS",
|
|
"tabLdap": "LDAP / AD",
|
|
"tabUpdate": "NetBird MSP Updates",
|
|
"tabSecurity": "Sicherheit",
|
|
"groupUsers": "Benutzerverwaltung",
|
|
"groupSystem": "Systemkonfiguration",
|
|
"groupExternal": "Umsysteme",
|
|
"baseDomain": "Basis-Domain",
|
|
"baseDomainPlaceholder": "ihredomain.com",
|
|
"baseDomainHint": "Kunden erhalten Subdomains: kundenname.ihredomain.com",
|
|
"adminEmail": "Admin E-Mail",
|
|
"adminEmailPlaceholder": "[email protected]",
|
|
"dataDir": "Datenverzeichnis",
|
|
"dataDirPlaceholder": "/opt/netbird-instances",
|
|
"dockerNetwork": "Docker-Netzwerk",
|
|
"dockerNetworkPlaceholder": "npm-network",
|
|
"relayBasePort": "Relay-Basisport",
|
|
"relayBasePortHint": "Erster UDP-Port für Relay. Bereich: Basis bis Basis+99",
|
|
"dashboardBasePort": "Dashboard-Basisport",
|
|
"dashboardBasePortHint": "Basisport für Kunden-Dashboards. Der erste Kunde erhält Basis+1",
|
|
"saveSystemSettings": "Systemeinstellungen speichern",
|
|
"npmDescription": "NPM verwendet JWT-Authentifizierung. Geben Sie Ihre NPM-Zugangsdaten ein. Das System meldet sich automatisch an.",
|
|
"npmApiUrl": "NPM API URL",
|
|
"npmApiUrlPlaceholder": "http://nginx-proxy-manager:81/api",
|
|
"npmApiUrlHint": "http:// oder https:// - muss /api am Ende enthalten",
|
|
"npmLoginEmail": "NPM Login E-Mail",
|
|
"npmLoginEmailPlaceholder": "Leer lassen zum Beibehalten",
|
|
"npmLoginPassword": "NPM Login Passwort",
|
|
"npmLoginPasswordPlaceholder": "Leer lassen zum Beibehalten",
|
|
"credentialsSet": "Zugangsdaten gesetzt (leer lassen zum Beibehalten)",
|
|
"noCredentials": "Keine NPM-Zugangsdaten konfiguriert",
|
|
"saveNpmSettings": "NPM-Einstellungen speichern",
|
|
"testConnection": "Verbindung testen",
|
|
"sslModeTitle": "SSL-Zertifikat Modus",
|
|
"sslMode": "SSL-Modus",
|
|
"sslModeLetsencrypt": "Let's Encrypt (pro Kunde)",
|
|
"sslModeWildcard": "Wildcard-Zertifikat",
|
|
"sslModeHint": "Wählen Sie ob jeder Kunde ein eigenes Let's Encrypt Zertifikat oder ein geteiltes Wildcard-Zertifikat erhält.",
|
|
"wildcardCertificate": "Wildcard-Zertifikat",
|
|
"selectCertificate": "-- Zertifikat auswählen --",
|
|
"wildcardCertHint": "Wählen Sie das Wildcard-Zertifikat (z.B. *.example.com) das in NPM hochgeladen ist.",
|
|
"noWildcardCerts": "Keine Wildcard-Zertifikate in NPM gefunden.",
|
|
"certsLoaded": "{count} Wildcard-Zertifikat(e) gefunden.",
|
|
"expiresOn": "Läuft ab",
|
|
"managementImage": "Management Image",
|
|
"managementImagePlaceholder": "netbirdio/management:latest",
|
|
"signalImage": "Signal Image",
|
|
"signalImagePlaceholder": "netbirdio/signal:latest",
|
|
"relayImage": "Relay Image",
|
|
"relayImagePlaceholder": "netbirdio/relay:latest",
|
|
"dashboardImage": "Dashboard Image",
|
|
"dashboardImagePlaceholder": "netbirdio/dashboard:latest",
|
|
"saveImageSettings": "Image-Einstellungen speichern",
|
|
"pullImagesTitle": "Neueste Images von Docker Hub laden",
|
|
"pullImagesHint": "Lädt die neuesten Versionen aller konfigurierten NetBird Images. Danach können Kunden-Container über das Monitoring aktualisiert werden.",
|
|
"pullImages": "Von Docker Hub laden",
|
|
"brandingTitle": "Branding-Einstellungen",
|
|
"companyName": "Firmen- / Anwendungsname",
|
|
"companyNamePlaceholder": "NetBird MSP Appliance",
|
|
"companyNameHint": "Wird auf der Anmeldeseite und in der Navigationsleiste angezeigt",
|
|
"logoPreview": "Logo-Vorschau",
|
|
"defaultIcon": "Standardsymbol (kein Logo hochgeladen)",
|
|
"uploadLogo": "Logo hochladen (PNG, JPG, SVG, max. 500 KB)",
|
|
"uploadBtn": "Hochladen",
|
|
"removeLogo": "Logo entfernen",
|
|
"brandingSubtitle": "Untertitel",
|
|
"brandingSubtitlePlaceholder": "Multi-Tenant Management Plattform",
|
|
"brandingSubtitleHint": "Wird unter dem Titel auf der Anmeldeseite angezeigt",
|
|
"defaultLanguage": "Standardsprache",
|
|
"defaultLanguageHint": "Standardsprache für Benutzer ohne Präferenz",
|
|
"systemDefault": "Systemstandard",
|
|
"saveBranding": "Branding speichern",
|
|
"userManagement": "Benutzerverwaltung",
|
|
"newUser": "Neuer Benutzer",
|
|
"makeAdmin": "Zum Admin befördern",
|
|
"makeViewer": "Zum Viewer degradieren",
|
|
"thId": "ID",
|
|
"thUsername": "Benutzername",
|
|
"thEmail": "E-Mail",
|
|
"thRole": "Rolle",
|
|
"thAuth": "Auth",
|
|
"thLanguage": "Sprache",
|
|
"thStatus": "Status",
|
|
"thActions": "Aktionen",
|
|
"azureTitle": "Azure AD / Entra ID Integration",
|
|
"enableAzureSso": "Azure AD SSO aktivieren",
|
|
"tenantId": "Tenant ID",
|
|
"clientId": "Client ID (Anwendungs-ID)",
|
|
"clientSecret": "Client Secret",
|
|
"clientSecretPlaceholder": "Leer lassen zum Beibehalten",
|
|
"secretSet": "Secret gesetzt (leer lassen zum Beibehalten)",
|
|
"noSecret": "Kein Client-Secret konfiguriert",
|
|
"saveAzureSettings": "Azure AD-Einstellungen speichern",
|
|
"azureGroupId": "Erlaubte Gruppen-Objekt-ID (optional)",
|
|
"azureGroupIdHint": "Falls gesetzt, können sich nur Azure AD-Mitglieder dieser Gruppe anmelden.",
|
|
"dnsTitle": "Windows DNS Integration",
|
|
"enableDns": "Windows DNS Integration aktivieren",
|
|
"dnsDescription": "Automatisch DNS A-Records erstellen/löschen beim Bereitstellen von Kunden.",
|
|
"dnsServer": "DNS-Serveradresse",
|
|
"dnsZone": "DNS-Zone",
|
|
"dnsUsername": "Benutzername (NTLM)",
|
|
"dnsPassword": "Passwort",
|
|
"dnsRecordIp": "A-Record Ziel-IP",
|
|
"dnsRecordIpHint": "IP-Adresse, auf die Kunden-A-Records zeigen (normalerweise die NPM-Server-IP).",
|
|
"saveDnsSettings": "DNS-Einstellungen speichern",
|
|
"ldapTitle": "LDAP / Active Directory Authentifizierung",
|
|
"enableLdap": "LDAP / AD Authentifizierung aktivieren",
|
|
"ldapDescription": "Active Directory Benutzern die Anmeldung erlauben. Lokale Admin-Konten funktionieren immer als Fallback.",
|
|
"ldapServer": "LDAP-Server",
|
|
"ldapPort": "Port",
|
|
"ldapUseSsl": "SSL/TLS verwenden (LDAPS)",
|
|
"ldapBindDn": "Bind DN (Dienstkonto)",
|
|
"ldapBindPassword": "Bind-Passwort",
|
|
"ldapBaseDn": "Basis-DN",
|
|
"ldapUserFilter": "Benutzerfilter",
|
|
"ldapUserFilterHint": "Verwenden Sie {username} als Platzhalter für den Anmeldenamen.",
|
|
"ldapGroupDn": "Gruppen-DN (optional, zur Einschränkung)",
|
|
"ldapGroupDnHint": "Falls gesetzt, können sich nur Mitglieder dieser Gruppe per LDAP anmelden.",
|
|
"saveLdapSettings": "LDAP-Einstellungen speichern",
|
|
"versionTitle": "Version & Updates",
|
|
"currentVersion": "Installierte Version",
|
|
"latestVersion": "Neueste verfügbare Version",
|
|
"branch": "Branch",
|
|
"commitHash": "Commit",
|
|
"updateAvailable": "Update verfügbar",
|
|
"upToDate": "Aktuell",
|
|
"triggerUpdate": "Update starten",
|
|
"updateWarning": "Die App ist während des Rebuilds ca. 60 Sekunden nicht verfügbar.",
|
|
"confirmUpdate": "Update jetzt starten? Die Datenbank wird zuerst gesichert. Die App startet neu (~60 Sekunden Ausfallzeit).",
|
|
"updateStepStarting": "Update wird gestartet …",
|
|
"updateStepBackup": "Datenbank wird gesichert …",
|
|
"updateStepPull": "Code wird geholt …",
|
|
"updateStepBuild": "Docker-Image wird gebaut (kann mehrere Minuten dauern) …",
|
|
"updateStepRestart": "Container wird neu gestartet …",
|
|
"updateStepReconnecting": "Container startet neu — warte auf Verbindung …",
|
|
"updateStepDone": "Update abgeschlossen.",
|
|
"updateStepTimeout": "Update läuft länger als erwartet. Bitte Server-Logs prüfen oder die Seite in ein paar Minuten neu laden.",
|
|
"gitTitle": "Git-Repository Einstellungen",
|
|
"gitRepoUrl": "Repository URL",
|
|
"gitRepoUrlHint": "Wird für Versionsprüfungen und One-Click-Updates via Gitea API verwendet.",
|
|
"gitBranch": "Branch",
|
|
"gitToken": "Zugriffstoken (optional)",
|
|
"saveGitSettings": "Git-Einstellungen speichern",
|
|
"leaveEmptyToKeep": "Leer lassen zum Beibehalten",
|
|
"passwordSet": "Passwort gesetzt (leer lassen zum Beibehalten)",
|
|
"noPasswordSet": "Kein Passwort konfiguriert",
|
|
"tokenSet": "Token gesetzt (leer lassen zum Beibehalten)",
|
|
"noToken": "Kein Zugriffstoken konfiguriert",
|
|
"securityTitle": "Admin-Passwort ändern",
|
|
"currentPassword": "Aktuelles Passwort",
|
|
"newPassword": "Neues Passwort (min. 12 Zeichen)",
|
|
"confirmPassword": "Neues Passwort bestätigen",
|
|
"changePassword": "Passwort ändern"
|
|
},
|
|
"mfa": {
|
|
"title": "Zwei-Faktor-Authentifizierung (MFA)",
|
|
"enableMfa": "MFA für alle lokalen Benutzer aktivieren",
|
|
"mfaDescription": "Bei Aktivierung müssen lokale Benutzer sich nach der Passworteingabe mit einer TOTP-Authentifikator-App verifizieren. Azure AD-Benutzer sind nicht betroffen.",
|
|
"saveMfaSettings": "MFA-Einstellungen speichern",
|
|
"yourTotpStatus": "Ihr TOTP-Status",
|
|
"totpActive": "Aktiv",
|
|
"totpNotSetUp": "Nicht eingerichtet",
|
|
"disableMyTotp": "Mein TOTP deaktivieren",
|
|
"enterCode": "Geben Sie Ihren 6-stelligen Authentifikator-Code ein",
|
|
"verify": "Bestätigen",
|
|
"backToLogin": "Zurück zur Anmeldung",
|
|
"scanQrCode": "Scannen Sie diesen QR-Code mit Ihrer Authentifikator-App",
|
|
"orEnterManually": "Oder geben Sie diesen Schlüssel manuell ein:",
|
|
"verifyAndActivate": "Bestätigen & Aktivieren",
|
|
"resetMfa": "MFA zurücksetzen",
|
|
"confirmResetMfa": "MFA für '{username}' zurücksetzen? Sie müssen bei der nächsten Anmeldung ihren Authentifikator neu einrichten.",
|
|
"mfaResetSuccess": "MFA für '{username}' zurückgesetzt.",
|
|
"mfaDisabled": "Ihr TOTP wurde deaktiviert.",
|
|
"mfaSaved": "MFA-Einstellungen gespeichert.",
|
|
"invalidCode": "Ungültiger Code. Bitte versuchen Sie es erneut.",
|
|
"codeExpired": "Verifizierung abgelaufen. Bitte melden Sie sich erneut an."
|
|
},
|
|
"common": {
|
|
"loading": "Laden...",
|
|
"back": "Zurück",
|
|
"save": "Speichern",
|
|
"cancel": "Abbrechen",
|
|
"delete": "Löschen",
|
|
"edit": "Bearbeiten",
|
|
"view": "Ansehen",
|
|
"start": "Starten",
|
|
"stop": "Stoppen",
|
|
"restart": "Neustarten",
|
|
"disable": "Deaktivieren",
|
|
"enable": "Aktivieren",
|
|
"resetPassword": "Passwort zurücksetzen",
|
|
"open": "Öffnen",
|
|
"active": "Aktiv",
|
|
"disabled": "Deaktiviert"
|
|
},
|
|
"errors": {
|
|
"networkError": "Netzwerkfehler — Server nicht erreichbar.",
|
|
"sessionExpired": "Sitzung abgelaufen.",
|
|
"requestFailed": "Anfrage fehlgeschlagen.",
|
|
"serverError": "Serverfehler (HTTP {status}).",
|
|
"unknownError": "Ein unbekannter Fehler ist aufgetreten.",
|
|
"uploadFailed": "Upload fehlgeschlagen.",
|
|
"deleteFailed": "Löschen fehlgeschlagen: {error}",
|
|
"failedToLoadSettings": "Einstellungen konnten nicht geladen werden: {error}",
|
|
"failed": "Fehlgeschlagen: {error}",
|
|
"logoUploadFailed": "Logo-Upload fehlgeschlagen: {error}",
|
|
"failedToRemoveLogo": "Logo konnte nicht entfernt werden: {error}",
|
|
"updateFailed": "Aktualisierung fehlgeschlagen: {error}",
|
|
"passwordResetFailed": "Passwort zurücksetzen fehlgeschlagen: {error}",
|
|
"selectFileFirst": "Bitte wählen Sie zuerst eine Datei aus.",
|
|
"passwordsDoNotMatch": "Passwörter stimmen nicht überein.",
|
|
"failedToLoadCredentials": "Zugangsdaten konnten nicht geladen werden: {error}",
|
|
"azureNotConfigured": "Azure AD ist nicht konfiguriert.",
|
|
"azureLoginFailed": "Azure AD Anmeldung fehlgeschlagen: {error}",
|
|
"actionFailed": "{action} fehlgeschlagen: {error}"
|
|
},
|
|
"messages": {
|
|
"systemSettingsSaved": "Systemeinstellungen gespeichert.",
|
|
"npmSettingsSaved": "NPM-Einstellungen gespeichert.",
|
|
"imageSettingsSaved": "Image-Einstellungen gespeichert.",
|
|
"brandingNameSaved": "Branding-Einstellungen gespeichert.",
|
|
"logoUploaded": "Logo erfolgreich hochgeladen.",
|
|
"logoRemoved": "Logo entfernt.",
|
|
"azureSettingsSaved": "Azure AD-Einstellungen gespeichert.",
|
|
"dnsSettingsSaved": "DNS-Einstellungen gespeichert.",
|
|
"ldapSettingsSaved": "LDAP-Einstellungen gespeichert.",
|
|
"gitSettingsSaved": "Git-Einstellungen gespeichert.",
|
|
"updateStarted": "Update gestartet. Die App wird in Kürze neu starten.",
|
|
"passwordChanged": "Passwort erfolgreich geändert.",
|
|
"setupUrlCopied": "Setup-URL in Zwischenablage kopiert.",
|
|
"copiedToClipboard": "In Zwischenablage kopiert.",
|
|
"userCreated": "Benutzer '{username}' erstellt.",
|
|
"userDeleted": "Benutzer '{username}' gelöscht.",
|
|
"passwordResetFor": "Passwort zurückgesetzt für '{username}'.",
|
|
"newPasswordAlert": "Neues Passwort für '{username}':\n\n{password}\n\nBitte speichern Sie dieses Passwort jetzt. Es wird nicht erneut angezeigt.",
|
|
"confirmDeleteUser": "Benutzer '{username}' löschen? Dies kann nicht rückgängig gemacht werden.",
|
|
"confirmResetPassword": "Passwort für '{username}' zurücksetzen? Ein neues zufälliges Passwort wird generiert."
|
|
},
|
|
"userModal": {
|
|
"title": "Neuer Benutzer",
|
|
"usernameLabel": "Benutzername *",
|
|
"passwordLabel": "Passwort * (min. 8 Zeichen)",
|
|
"emailLabel": "E-Mail",
|
|
"languageLabel": "Standardsprache",
|
|
"cancel": "Abbrechen",
|
|
"createUser": "Benutzer erstellen"
|
|
},
|
|
"customerModal": {
|
|
"newCustomer": "Neuer Kunde",
|
|
"editCustomer": "Kunde bearbeiten",
|
|
"nameLabel": "Name *",
|
|
"companyLabel": "Firma",
|
|
"subdomainLabel": "Subdomain *",
|
|
"subdomainHint": "Kleinbuchstaben, alphanumerisch + Bindestriche",
|
|
"emailLabel": "E-Mail *",
|
|
"maxDevicesLabel": "Max. Geräte",
|
|
"notesLabel": "Notizen",
|
|
"cancel": "Abbrechen",
|
|
"saveAndDeploy": "Speichern & Bereitstellen",
|
|
"saveChanges": "Änderungen speichern"
|
|
},
|
|
"redeployModal": {
|
|
"title": "Kunde neu bereitstellen",
|
|
"intro": "Wie soll",
|
|
"intro2": "neu bereitgestellt werden?",
|
|
"keepTitle": "Daten behalten",
|
|
"keepDesc": "Container werden gestoppt und neu gestartet. Die NetBird-Datenbank, Peer-Konfigurationen und Verschlüsselungsschlüssel bleiben erhalten. Verwenden Sie dies nach einer Konfigurationsänderung oder einem Image-Update.",
|
|
"keepNote": "Peers bleiben nach dem Neustart verbunden.",
|
|
"freshTitle": "Neu aufsetzen",
|
|
"freshDesc": "Alle bestehenden Daten werden gelöscht — Container, Volumes, Konfigurationsdateien und die NetBird-Datenbank. Eine komplett neue Instanz wird erstellt. Alle Peers müssen sich neu registrieren.",
|
|
"freshNote": "Alle Peer-Daten gehen verloren. Kann nicht rückgängig gemacht werden."
|
|
},
|
|
"deleteModal": {
|
|
"title": "Löschen bestätigen",
|
|
"confirmText": "Möchten Sie den Kunden wirklich löschen:",
|
|
"warning": "Alle Container, NPM-Einträge und Daten werden entfernt. Diese Aktion kann nicht rückgängig gemacht werden.",
|
|
"cancel": "Abbrechen",
|
|
"delete": "Löschen"
|
|
},
|
|
"monitoring": {
|
|
"title": "System-Monitoring",
|
|
"refresh": "Aktualisieren",
|
|
"hostResources": "Host-Ressourcen",
|
|
"hostname": "Hostname",
|
|
"cpu": "CPU ({count} Kerne)",
|
|
"memory": "Arbeitsspeicher ({used}/{total} GB)",
|
|
"disk": "Festplatte ({used}/{total} GB)",
|
|
"allCustomerDeployments": "Alle Kunden-Deployments",
|
|
"thId": "ID",
|
|
"thName": "Name",
|
|
"thSubdomain": "Subdomain",
|
|
"thStatus": "Status",
|
|
"thDeployment": "Deployment",
|
|
"thDashboard": "Dashboard",
|
|
"thRelayPort": "Relay-Port",
|
|
"thContainers": "Container",
|
|
"noCustomers": "Keine Kunden.",
|
|
"imageUpdates": "NetBird Container Updates",
|
|
"checkUpdates": "Auf Updates prüfen",
|
|
"pullImages": "Neueste Images laden",
|
|
"updateAll": "Alle aktualisieren",
|
|
"clickCheckUpdates": "Klicken Sie auf \"Auf Updates prüfen\" um lokale Images mit Docker Hub zu vergleichen.",
|
|
"updateAvailable": "Update verfügbar",
|
|
"upToDate": "Aktuell",
|
|
"needsUpdate": "Update erforderlich",
|
|
"updateCustomer": "Diesen Kunden aktualisieren",
|
|
"imageStatusTitle": "Image-Status (vs. Docker Hub)",
|
|
"customerImageTitle": "Kunden-Container Status",
|
|
"thImage": "Image",
|
|
"thLocalDigest": "Lokaler Digest",
|
|
"thHubDigest": "Hub Digest",
|
|
"confirmPull": "Neueste NetBird Images von Docker Hub laden? Dies kann einige Minuten dauern.",
|
|
"pullStarted": "Image-Download im Hintergrund gestartet. Prüfung in 5 Sekunden…",
|
|
"confirmUpdateAll": "Container aller Kunden mit veralteten Images neu erstellen? Laufende Dienste werden kurz neu gestartet.",
|
|
"updateAllStarted": "Aktualisierung im Hintergrund gestartet.",
|
|
"updateDone": "Kunden-Container aktualisiert.",
|
|
"updating": "Wird aktualisiert…",
|
|
"updateAllProgress": "Kunden-Container werden nacheinander aktualisiert — bitte warten…",
|
|
"pulling": "Wird geladen…",
|
|
"pullStartedShort": "Download im Hintergrund gestartet."
|
|
}
|
|
} |