824 lines
55 KiB
JavaScript
824 lines
55 KiB
JavaScript
// Übersetzungen für Renderer (window.I18N) und Main-Prozess (require).
|
||
// Quellsprache ist Englisch: der Text im Code ist der Schlüssel, weitere Sprachen liefern ein Wörterbuch.
|
||
// Neue Sprache: Wörterbuch unten ergänzen und in LANGUAGES eintragen.
|
||
(function (root) {
|
||
'use strict';
|
||
|
||
const de = {
|
||
// Allgemein
|
||
'Cancel': 'Abbrechen',
|
||
'Save': 'Speichern',
|
||
'OK': 'OK',
|
||
'Delete': 'Löschen',
|
||
'Delete?': 'Löschen?',
|
||
'Edit': 'Bearbeiten',
|
||
'Open': 'Öffnen',
|
||
'Close': 'Schließen',
|
||
'Close (Ctrl+Shift+W)': 'Schließen (Strg+Shift+W)',
|
||
'Close others': 'Andere schließen',
|
||
'Rename': 'Umbenennen',
|
||
'Duplicate': 'Duplizieren',
|
||
'Copy': 'Kopieren',
|
||
'Copied': 'Kopiert',
|
||
'Connect': 'Verbinden',
|
||
'Reconnect': 'Neu verbinden',
|
||
'Reconnecting': 'Neu verbinden',
|
||
'Remove': 'Entfernen',
|
||
'Import': 'Importieren',
|
||
'Generate': 'Generieren',
|
||
'Automatic': 'Automatisch',
|
||
'Color': 'Farbe',
|
||
'Name': 'Name',
|
||
'Type': 'Typ',
|
||
'Title': 'Titel',
|
||
'Label': 'Bezeichnung',
|
||
'Settings': 'Einstellungen',
|
||
'Menu': 'Menü',
|
||
'History': 'Verlauf',
|
||
'Minimize': 'Minimieren',
|
||
'Maximize': 'Maximieren',
|
||
'Quick Connect (Ctrl+Shift+K)': 'Quick Connect (Strg+Shift+K)',
|
||
'Collapse menu': 'Menü einklappen',
|
||
'Expand menu': 'Menü ausklappen',
|
||
'Vault encrypted': 'Vault verschlüsselt',
|
||
'Vault not encrypted': 'Vault unverschlüsselt',
|
||
'Data is encrypted with the system keyring.': 'Daten werden mit dem System-Schlüsselbund verschlüsselt.',
|
||
'No system keyring available (e.g. install gnome-keyring/kwallet).': 'Kein System-Schlüsselbund verfügbar (z. B. gnome-keyring/kwallet installieren).',
|
||
'just now': 'gerade eben',
|
||
'{n} min ago': 'vor {n} Min.',
|
||
'{n} h ago': 'vor {n} Std.',
|
||
'{n} days ago': 'vor {n} Tagen',
|
||
|
||
// Verzeichnisbaum / Hosts
|
||
'Connections': 'Verbindungen',
|
||
'Collapse all': 'Alle einklappen',
|
||
'No hosts yet': 'Noch keine Hosts',
|
||
'Add host': 'Host hinzufügen',
|
||
'Create subfolder': 'Unterordner anlegen',
|
||
'Delete group?': 'Gruppe löschen?',
|
||
'“{name}” will be deleted. Hosts are kept.': '„{name}“ wird gelöscht. Hosts bleiben erhalten.',
|
||
'Search hosts or enter user@host …': 'Hosts suchen oder user@host eingeben …',
|
||
'Group': 'Gruppe',
|
||
'Groups': 'Gruppen',
|
||
'New host': 'Neuer Host',
|
||
'All hosts': 'Alle Hosts',
|
||
'Connect to {q}?': 'Mit {q} verbinden?',
|
||
'Quick Connect without saving the host.': 'Quick Connect ohne den Host zu speichern.',
|
||
'Add your first SSH or RDP host or import ~/.ssh/config.': 'Lege deinen ersten SSH- oder RDP-Host an oder importiere ~/.ssh/config.',
|
||
'Import ~/.ssh/config': '~/.ssh/config importieren',
|
||
'No results': 'Keine Treffer',
|
||
'Adjust the search or filters.': 'Passe die Suche oder Filter an.',
|
||
'Connect in tab': 'Im Tab verbinden',
|
||
'Open in separate window': 'In eigenem Fenster öffnen',
|
||
'Open SFTP': 'SFTP öffnen',
|
||
' (copy)': ' (Kopie)',
|
||
'Copy address': 'Adresse kopieren',
|
||
'Delete host?': 'Host löschen?',
|
||
'“{name}” will be permanently removed.': '„{name}“ wird dauerhaft entfernt.',
|
||
'RDP in a tab is not possible ({reason}) – opening a separate window.': 'RDP im Tab nicht möglich ({reason}) – öffne eigenes Fenster.',
|
||
'RDP session to {name} started ({client})': 'RDP-Sitzung zu {name} gestartet ({client})',
|
||
'Invalid address. Format: user@host:port': 'Ungültige Adresse. Format: user@host:port',
|
||
'{n} host(s) imported': '{n} Host(s) importiert',
|
||
|
||
// Host-Editor
|
||
'— No group —': '— Keine Gruppe —',
|
||
'— No key —': '— Kein Schlüssel —',
|
||
'— Direct —': '— Direkt —',
|
||
'SSH key': 'SSH-Schlüssel',
|
||
'Use SSH agent': 'SSH-Agent verwenden',
|
||
'Advanced': 'Erweitert',
|
||
'Jump host (ProxyJump)': 'Jump-Host (ProxyJump)',
|
||
'Startup command': 'Startbefehl',
|
||
'e.g. tmux attach || tmux': 'z. B. tmux attach || tmux',
|
||
'Environment variables': 'Umgebungsvariablen',
|
||
'One per line, KEY=VALUE (server must allow AcceptEnv).': 'Eine pro Zeile, KEY=VALUE (Server muss AcceptEnv erlauben).',
|
||
'Domain': 'Domäne',
|
||
'optional': 'optional',
|
||
'Width': 'Breite',
|
||
'Height': 'Höhe',
|
||
'On resize': 'Bei Größenänderung',
|
||
'Adjust resolution dynamically': 'Auflösung dynamisch anpassen',
|
||
'Scale image (fixed resolution)': 'Bild skalieren (feste Auflösung)',
|
||
'Fullscreen': 'Vollbild',
|
||
'Share clipboard': 'Zwischenablage teilen',
|
||
'Play audio': 'Audio wiedergeben',
|
||
'Share local drives/home': 'Lokale Laufwerke/Home freigeben',
|
||
'Edit host': 'Host bearbeiten',
|
||
'Address': 'Adresse',
|
||
'IP or hostname': 'IP oder Hostname',
|
||
'My server': 'Mein Server',
|
||
'Authentication': 'Anmeldung',
|
||
'Username': 'Benutzername',
|
||
'Password': 'Passwort',
|
||
'stored encrypted': 'wird verschlüsselt gespeichert',
|
||
'Appearance': 'Darstellung',
|
||
'Please enter an address.': 'Bitte eine Adresse angeben.',
|
||
'Edit group': 'Gruppe bearbeiten',
|
||
'New group': 'Neue Gruppe',
|
||
'Production': 'Produktion',
|
||
'Parent group': 'Übergeordnete Gruppe',
|
||
'Name is missing.': 'Name fehlt.',
|
||
|
||
// Keychain
|
||
'Search keys …': 'Schlüssel suchen …',
|
||
'No keys': 'Keine Schlüssel',
|
||
'Generate a new Ed25519 key or import an existing one.': 'Generiere einen neuen Ed25519-Schlüssel oder importiere einen bestehenden.',
|
||
'Generate key': 'Schlüssel generieren',
|
||
'Keys': 'Schlüssel',
|
||
'Copy public key': 'Public Key kopieren',
|
||
'Public key copied': 'Public Key kopiert',
|
||
'Delete key?': 'Schlüssel löschen?',
|
||
'“{name}” will be removed from the vault.': '„{name}“ wird aus dem Vault entfernt.',
|
||
'Generate SSH key': 'SSH-Schlüssel generieren',
|
||
'recommended': 'empfohlen',
|
||
'Key generated – public key copied to clipboard': 'Schlüssel erzeugt – Public Key in Zwischenablage kopiert',
|
||
'Edit key': 'Schlüssel bearbeiten',
|
||
'Import key': 'Schlüssel importieren',
|
||
'Derived from the private key automatically if left empty.': 'Wird bei Bedarf automatisch aus dem Private Key berechnet.',
|
||
'Private key is missing.': 'Private Key fehlt.',
|
||
'File…': 'Datei…',
|
||
|
||
// Snippets
|
||
'Search snippets …': 'Snippets suchen …',
|
||
'New snippet': 'Neues Snippet',
|
||
'No snippets': 'Keine Snippets',
|
||
'Save frequently used commands and send them to a terminal with one click.': 'Speichere häufig genutzte Befehle und sende sie mit einem Klick an ein Terminal.',
|
||
'Run in active terminal': 'Im aktiven Terminal ausführen',
|
||
'Delete snippet?': 'Snippet löschen?',
|
||
'Edit snippet': 'Snippet bearbeiten',
|
||
'System update': 'Systemupdate',
|
||
'Command(s)': 'Befehl(e)',
|
||
'Send Enter automatically': 'Enter automatisch senden',
|
||
'Command is missing.': 'Befehl fehlt.',
|
||
'No open terminal': 'Kein offenes Terminal',
|
||
'No snippets yet.': 'Noch keine Snippets.',
|
||
|
||
// Port Forwarding
|
||
'Search rules …': 'Regeln suchen …',
|
||
'New rule': 'Neue Regel',
|
||
'No port forwards': 'Keine Port-Weiterleitungen',
|
||
'Local (-L), remote (-R) or dynamic as SOCKS5 proxy (-D).': 'Lokal (-L), Remote (-R) oder dynamisch als SOCKS5-Proxy (-D).',
|
||
'Local': 'Lokal',
|
||
'active': 'aktiv',
|
||
'inactive': 'inaktiv',
|
||
'Stop': 'Stoppen',
|
||
'Start': 'Starten',
|
||
'Forward active': 'Weiterleitung aktiv',
|
||
'Delete rule?': 'Regel löschen?',
|
||
'Add an SSH host first.': 'Lege zuerst einen SSH-Host an.',
|
||
'Edit rule': 'Regel bearbeiten',
|
||
'New forward': 'Neue Weiterleitung',
|
||
'Local (-L)': 'Lokal (-L)',
|
||
'Dynamic / SOCKS5 (-D)': 'Dynamisch / SOCKS5 (-D)',
|
||
'Via host': 'Über Host',
|
||
'Bind address': 'Bind-Adresse',
|
||
'Bind port': 'Bind-Port',
|
||
'Target host': 'Ziel-Host',
|
||
'Target port': 'Ziel-Port',
|
||
'Bind port is missing.': 'Bind-Port fehlt.',
|
||
'Target port is missing.': 'Ziel-Port fehlt.',
|
||
|
||
// Known Hosts & Verlauf
|
||
'Search known hosts …': 'Known Hosts suchen …',
|
||
'No known hosts': 'Keine bekannten Hosts',
|
||
'Host keys are stored here on first connection.': 'Host-Schlüssel werden bei der ersten Verbindung hier gespeichert.',
|
||
'Search history …': 'Verlauf durchsuchen …',
|
||
'No connections yet': 'Noch keine Verbindungen',
|
||
'Recently used hosts appear here.': 'Zuletzt genutzte Hosts erscheinen hier.',
|
||
|
||
// Einstellungen
|
||
'Language': 'Sprache',
|
||
'System default': 'Systemsprache',
|
||
'Accent color': 'Akzentfarbe',
|
||
'Theme default': 'Standard des Designs',
|
||
'Light': 'Hell',
|
||
'Terminal color scheme': 'Terminal-Farbschema',
|
||
'Match theme': 'Passend zum Design',
|
||
'follows the theme': 'folgt dem Design',
|
||
'Font': 'Schriftart',
|
||
'Size': 'Größe',
|
||
'Bar': 'Balken',
|
||
'Underline': 'Unterstrich',
|
||
'Scrollback lines': 'Scrollback-Zeilen',
|
||
'Blinking cursor': 'Cursor blinkt',
|
||
'Copy on select': 'Auswahl automatisch kopieren',
|
||
'SSH keep-alive (seconds, 0 = off)': 'SSH Keep-Alive (Sekunden, 0 = aus)',
|
||
'Checking …': 'Prüfe …',
|
||
'Show RDP connections as tabs in MrTerm': 'RDP-Verbindungen als Tab in MrTerm anzeigen',
|
||
'Takes effect after restarting MrTerm (X11/XWayland mode).': 'Wird nach einem Neustart von MrTerm wirksam (X11/XWayland-Modus).',
|
||
'Uses xfreerdp3 with /parent-window. For this, MrTerm runs via XWayland under Wayland.': 'Nutzt xfreerdp3 mit /parent-window. MrTerm läuft dafür unter Wayland über XWayland.',
|
||
'FreeRDP client (separate window)': 'FreeRDP-Client (eigenes Fenster)',
|
||
'Client in use: {client}': 'Verwendeter Client: {client}',
|
||
'No RDP client found. Install: {hint}': 'Kein RDP-Client gefunden. Installation: {hint}',
|
||
'Data': 'Daten',
|
||
'The vault is encrypted with the operating system keyring (Windows DPAPI / libsecret or KWallet).': 'Der Vault ist mit dem Schlüsselbund des Betriebssystems verschlüsselt (Windows DPAPI / libsecret bzw. KWallet).',
|
||
'The vault is not encrypted because no keyring is available. On Arch/CachyOS: install <code>gnome-keyring</code> or <code>kwallet</code>.': 'Der Vault ist nicht verschlüsselt, da kein Schlüsselbund verfügbar ist. Unter Arch/CachyOS: <code>gnome-keyring</code> oder <code>kwallet</code> installieren.',
|
||
'Export backup': 'Backup exportieren',
|
||
'Exported to {path}': 'Exportiert nach {path}',
|
||
'Import backup': 'Backup importieren',
|
||
'Import complete': 'Import abgeschlossen',
|
||
'Import folders and hosts (RDP & SSH) from <b>Devolutions Remote Desktop Manager</b>. In RDM: <i>File → Export → Export entries</i> as <code>.rdm</code> (XML), JSON or CSV. RDM only exports passwords unencrypted if you enable that during export.': 'Ordner und Hosts (RDP & SSH) aus <b>Devolutions Remote Desktop Manager</b> übernehmen. In RDM: <i>Datei → Exportieren → Einträge exportieren</i> als <code>.rdm</code> (XML), JSON oder CSV. Passwörter werden von RDM nur unverschlüsselt exportiert, wenn du das beim Export aktivierst.',
|
||
'Import from Remote Desktop Manager…': 'Aus Remote Desktop Manager importieren…',
|
||
'Installed version: {v}': 'Installierte Version: {v}',
|
||
'Gitea/Forgejo repository whose releases contain the installation packages.': 'Gitea/Forgejo-Repository, dessen Releases die Installationspakete enthalten.',
|
||
'Access token (private repos only)': 'Zugriffstoken (nur für private Repos)',
|
||
'Check for updates on startup': 'Beim Start automatisch nach Updates suchen',
|
||
'Include pre-releases': 'Vorabversionen (Pre-Releases) einbeziehen',
|
||
'Check for updates now': 'Jetzt nach Updates suchen',
|
||
'The repository has version {repo}, but there is no release with installation packages for it yet. Installed: {current}.': 'Im Repository liegt Version {repo}, aber dafür gibt es noch kein Release mit Installationspaketen. Installiert: {current}.',
|
||
'The repository has no releases yet.': 'Im Repository gibt es noch keine Releases.',
|
||
'MrTerm is up to date ({v}).': 'MrTerm ist aktuell ({v}).',
|
||
'Keyboard shortcuts': 'Tastenkürzel',
|
||
'Ctrl': 'Strg',
|
||
'Quick Connect / command palette (outside the terminal also {k})': 'Quick Connect / Befehlspalette (außerhalb des Terminals auch {k})',
|
||
'Close tab': 'Tab schließen',
|
||
'Next tab': 'Nächster Tab',
|
||
'Switch to tab': 'Zu Tab wechseln',
|
||
'Copy / paste in terminal': 'Kopieren / Einfügen im Terminal',
|
||
'Search in terminal': 'Im Terminal suchen',
|
||
'Font size': 'Schriftgröße',
|
||
|
||
// RDM-Import
|
||
'Import failed: {msg}': 'Import fehlgeschlagen: {msg}',
|
||
'No RDP or SSH entries found in the file.': 'Keine RDP- oder SSH-Einträge in der Datei gefunden.',
|
||
'Root level': 'Stammebene',
|
||
'Import from Remote Desktop Manager': 'Import aus Remote Desktop Manager',
|
||
'{file}: found {n} hosts ({rdp} RDP, {ssh} SSH) in {folders} folders.': '{file}: {n} Hosts ({rdp} RDP, {ssh} SSH) in {folders} Ordnern gefunden.',
|
||
'… and {n} more': '… und {n} weitere',
|
||
'{n} hosts imported': '{n} Hosts importiert',
|
||
', {n} already existed': ', {n} bereits vorhanden',
|
||
'File is not valid XML.': 'Datei ist kein gültiges XML.',
|
||
'CSV columns not recognized (expected e.g. Name, Host, ConnectionType, Group).': 'CSV-Spalten nicht erkannt (erwartet u. a. Name, Host, ConnectionType, Group).',
|
||
|
||
// Updates
|
||
'MrTerm {v} is available': 'MrTerm {v} ist verfügbar',
|
||
'Installed: {v}': 'Installiert: {v}',
|
||
'Package: {name} ({size})': 'Paket: {name} ({size})',
|
||
'Development mode: please update via <code>git pull</code>.': 'Entwicklungsmodus: Bitte per <code>git pull</code> aktualisieren.',
|
||
'The release contains no package for this system.': 'Im Release ist kein passendes Paket für dieses System.',
|
||
'Downloading …': 'Lade herunter …',
|
||
'Later': 'Später',
|
||
'Release page': 'Release-Seite',
|
||
'Install now': 'Jetzt installieren',
|
||
'Downloading update …': 'Update wird heruntergeladen …',
|
||
'Installing update, MrTerm will restart …': 'Update wird installiert, MrTerm startet neu …',
|
||
|
||
// Tabs & Sitzungen
|
||
'Rename tab': 'Tab umbenennen',
|
||
'SFTP for this host': 'SFTP für diesen Host',
|
||
'Search (Ctrl+Shift+F)': 'Suchen (Strg+Shift+F)',
|
||
'Search …': 'Suchen …',
|
||
'Connecting to {host} …': 'Verbinde mit {host} …',
|
||
'Connection closed. Press [Enter] to reconnect.': 'Verbindung beendet. [Enter] zum erneuten Verbinden.',
|
||
'Continue session in a separate window': 'Sitzung als eigenes Fenster weiterführen',
|
||
'Detach as window': 'Als Fenster lösen',
|
||
'RDP session hidden while a dialog is open.': 'RDP-Sitzung ausgeblendet, solange ein Dialog geöffnet ist.',
|
||
'In separate window': 'Im eigenen Fenster',
|
||
'Connecting to {host} … Login or certificate prompts may appear in a separate window.': 'Verbinde mit {host} … Anmelde- oder Zertifikatsabfragen erscheinen ggf. als eigenes Fenster.',
|
||
'The RDP window could not be embedded.': 'Das RDP-Fenster konnte nicht eingebettet werden.',
|
||
'RDP session ended.': 'RDP-Sitzung beendet.',
|
||
'RDP session ended (code {code}).': 'RDP-Sitzung beendet (Code {code}).',
|
||
'Session continues in a separate window': 'Sitzung läuft als eigenes Fenster weiter',
|
||
|
||
// SFTP
|
||
'Choose a host for SFTP …': 'Host für SFTP wählen …',
|
||
'No SSH hosts': 'Keine SSH-Hosts',
|
||
'SFTP requires an SSH host.': 'SFTP benötigt einen SSH-Host.',
|
||
'Open host in SFTP browser': 'Host für SFTP-Browser öffnen',
|
||
'Parent folder': 'Übergeordneter Ordner',
|
||
'Refresh': 'Aktualisieren',
|
||
'New folder': 'Neuer Ordner',
|
||
'Upload →': 'Hochladen →',
|
||
'← Download': '← Herunterladen',
|
||
'Upload': 'Hochladen',
|
||
'Download': 'Herunterladen',
|
||
'Modified': 'Geändert',
|
||
'Copy path': 'Pfad kopieren',
|
||
'Permissions (chmod)…': 'Rechte (chmod)…',
|
||
'Move to trash': 'In Papierkorb',
|
||
'New name': 'Neuer Name',
|
||
'Change permissions': 'Rechte ändern',
|
||
'Octal (e.g. 644)': 'Oktal (z. B. 644)',
|
||
'Move {n} item(s) to the trash: {list}': '{n} Element(e) in den Papierkorb verschieben: {list}',
|
||
'Permanently delete {n} item(s) from the server: {list}': '{n} Element(e) endgültig vom Server löschen: {list}',
|
||
'Nothing selected': 'Nichts ausgewählt',
|
||
'Try again': 'Erneut versuchen',
|
||
'done': 'fertig',
|
||
'Error': 'Fehler',
|
||
|
||
// Befehlspalette & Anmeldung
|
||
'Search hosts or enter user@host:port or rdp://host …': 'Host suchen, user@host:port oder rdp://host eingeben …',
|
||
'Actions': 'Aktionen',
|
||
'Log in': 'Anmelden',
|
||
|
||
// App-Sperre
|
||
'App lock': 'App-Sperre',
|
||
'Lock MrTerm with a password and/or a FIDO2 security key (e.g. YubiKey). The vault is then additionally encrypted and can only be opened with one of these methods.': 'MrTerm mit Passwort und/oder FIDO2-Sicherheitsschlüssel (z. B. YubiKey) sperren. Der Vault wird dann zusätzlich verschlüsselt und lässt sich nur mit einer dieser Methoden öffnen.',
|
||
'MrTerm is locked': 'MrTerm ist gesperrt',
|
||
'MrTerm is locked.': 'MrTerm ist gesperrt.',
|
||
'Unlock': 'Entsperren',
|
||
'Unlock with security key': 'Mit Sicherheitsschlüssel entsperren',
|
||
'Disable app lock?': 'App-Sperre deaktivieren?',
|
||
'This is the last unlock method. MrTerm will no longer be locked.': 'Das ist die letzte Entsperrmethode. MrTerm wird danach nicht mehr gesperrt.',
|
||
'Disable': 'Deaktivieren',
|
||
'Set': 'Festgelegt',
|
||
'Not set': 'Nicht festgelegt',
|
||
'Change password': 'Passwort ändern',
|
||
'Set password': 'Passwort festlegen',
|
||
'New password': 'Neues Passwort',
|
||
'Repeat password': 'Passwort wiederholen',
|
||
'The passwords do not match.': 'Die Passwörter stimmen nicht überein.',
|
||
'Password saved': 'Passwort gespeichert',
|
||
'Security key': 'Sicherheitsschlüssel',
|
||
'Security key (FIDO2)': 'Sicherheitsschlüssel (FIDO2)',
|
||
'Remove security key?': 'Sicherheitsschlüssel entfernen?',
|
||
'Add security key': 'Sicherheitsschlüssel hinzufügen',
|
||
'Security key added': 'Sicherheitsschlüssel hinzugefügt',
|
||
'Lock now': 'Jetzt sperren',
|
||
'Lock (Ctrl+Shift+L)': 'Sperren (Strg+Shift+L)',
|
||
'Lock automatically after inactivity': 'Automatisch sperren bei Inaktivität',
|
||
'Never': 'Nie',
|
||
'{n} minutes': '{n} Minuten',
|
||
'If you forget the password and lose all security keys, the vault cannot be recovered.': 'Wenn du das Passwort vergisst und alle Sicherheitsschlüssel verlierst, lässt sich der Vault nicht wiederherstellen.',
|
||
'No password set.': 'Kein Passwort festgelegt.',
|
||
'Wrong password.': 'Falsches Passwort.',
|
||
'No security key registered.': 'Kein Sicherheitsschlüssel registriert.',
|
||
'Unknown security key.': 'Unbekannter Sicherheitsschlüssel.',
|
||
'This security key could not unlock the vault.': 'Dieser Sicherheitsschlüssel konnte den Vault nicht entsperren.',
|
||
'The password must be at least 6 characters long.': 'Das Passwort muss mindestens 6 Zeichen lang sein.',
|
||
'Touch your security key to register it.': 'Berühre deinen Sicherheitsschlüssel, um ihn zu registrieren.',
|
||
'Touch your security key again to finish.': 'Berühre deinen Sicherheitsschlüssel noch einmal zum Abschließen.',
|
||
'Touch your security key to unlock MrTerm.': 'Berühre deinen Sicherheitsschlüssel, um MrTerm zu entsperren.',
|
||
'Security key prompt was cancelled or timed out.': 'Die Abfrage des Sicherheitsschlüssels wurde abgebrochen oder ist abgelaufen.',
|
||
'This security key does not support the hmac-secret/PRF extension.': 'Dieser Sicherheitsschlüssel unterstützt die hmac-secret/PRF-Erweiterung nicht.',
|
||
'This file is not a MrTerm backup.': 'Diese Datei ist kein MrTerm-Backup.',
|
||
'This backup is encrypted. Please enter the password.': 'Dieses Backup ist verschlüsselt. Bitte gib das Passwort ein.',
|
||
'Exports all hosts, groups, SSH keys, passwords, snippets, port forwards, VPNs, known hosts and settings.': 'Exportiert alle Hosts, Gruppen, SSH-Keys, Passwörter, Snippets, Portweiterleitungen, VPNs, bekannten Hosts und Einstellungen.',
|
||
'Recommended. Without a password, keys and passwords are stored in plain text in the file.': 'Empfohlen. Ohne Passwort stehen Schlüssel und Passwörter im Klartext in der Datei.',
|
||
'Include settings': 'Einstellungen einschließen',
|
||
'Export': 'Exportieren',
|
||
'Export without password?': 'Ohne Passwort exportieren?',
|
||
'Private keys and passwords will be readable by anyone who gets the file.': 'Private Schlüssel und Passwörter sind dann für jeden lesbar, der die Datei erhält.',
|
||
'{hosts} hosts, {keys} keys, {snippets} snippets, {vpns} VPNs': '{hosts} Hosts, {keys} Schlüssel, {snippets} Snippets, {vpns} VPNs',
|
||
'Contents are encrypted.': 'Inhalt ist verschlüsselt.',
|
||
'Import settings': 'Einstellungen übernehmen',
|
||
'Replace existing data (entries not contained in the backup are deleted)': 'Vorhandene Daten ersetzen (Einträge, die nicht im Backup sind, werden gelöscht)',
|
||
'Replace existing data?': 'Vorhandene Daten ersetzen?',
|
||
'Hosts, keys, snippets and other entries that are not in the backup will be deleted.': 'Hosts, Schlüssel, Snippets und andere Einträge, die nicht im Backup sind, werden gelöscht.',
|
||
'Replace': 'Ersetzen',
|
||
'Import complete: {hosts} hosts, {keys} keys, {snippets} snippets': 'Import abgeschlossen: {hosts} Hosts, {keys} Schlüssel, {snippets} Snippets',
|
||
'Stacks folder': 'Stack-Ordner',
|
||
'Folder on the host in which each stack gets its own subfolder': 'Ordner auf dem Host, in dem jeder Stack einen eigenen Unterordner bekommt',
|
||
'Template source': 'Vorlagen-Quelle',
|
||
'URL of a templates.json in Portainer format. Empty = Lissy93/portainer-templates.': 'URL einer templates.json im Portainer-Format. Leer = Lissy93/portainer-templates.',
|
||
'Containers': 'Container',
|
||
'Folder': 'Ordner',
|
||
'Change folder': 'Ordner ändern',
|
||
'Creates the folder with sudo and makes it writable for {user}.': 'Legt den Ordner per sudo an und macht ihn für {user} beschreibbar.',
|
||
'Set up folder': 'Ordner einrichten',
|
||
'From Git': 'Aus Git',
|
||
'New stack': 'Neuer Stack',
|
||
'Compose file': 'Compose-Datei',
|
||
'Found via docker compose ls, outside the stacks folder': 'Über docker compose ls gefunden, außerhalb des Stack-Ordners',
|
||
'external': 'extern',
|
||
'not deployed': 'nicht gestartet',
|
||
'no compose file found': 'keine Compose-Datei gefunden',
|
||
'Deploy (up -d)': 'Starten (up -d)',
|
||
'No matches.': 'Keine Treffer.',
|
||
'No stacks yet. Create one, clone it from Git or start from a template.': 'Noch keine Stacks. Lege einen an, klone ihn aus Git oder starte mit einer Vorlage.',
|
||
'Update images (pull + up)': 'Images aktualisieren (pull + up)',
|
||
'Git pull + redeploy': 'Git pull + neu starten',
|
||
'Down (remove containers)': 'Down (Container entfernen)',
|
||
'Stack from Git': 'Stack aus Git',
|
||
'Repository URL': 'Repository-URL',
|
||
'Stack name': 'Stack-Name',
|
||
'Branch (optional)': 'Branch (optional)',
|
||
'Compose file in the repository (optional)': 'Compose-Datei im Repository (optional)',
|
||
'If empty, the first compose file found is used.': 'Leer = die erste gefundene Compose-Datei wird verwendet.',
|
||
'Deploy right after cloning': 'Nach dem Klonen direkt starten',
|
||
'The repository is cloned on the host into the stacks folder. Git asks for credentials in the terminal if needed; for private repos an SSH deploy key or a token in the URL also works.': 'Das Repository wird auf dem Host in den Stack-Ordner geklont. Git fragt Zugangsdaten bei Bedarf im Terminal ab; für private Repos funktioniert auch ein SSH-Deploy-Key oder ein Token in der URL.',
|
||
'Clone': 'Klonen',
|
||
'App templates': 'App-Vorlagen',
|
||
'Search templates …': 'Vorlagen durchsuchen …',
|
||
'Source: {url} (Portainer template format, changeable in the settings).': 'Quelle: {url} (Portainer-Vorlagenformat, in den Einstellungen änderbar).',
|
||
'All categories': 'Alle Kategorien',
|
||
'Delete stack?': 'Stack löschen?',
|
||
'The stack “{name}” is stopped (down) and its folder {dir} is deleted.': 'Der Stack „{name}“ wird gestoppt (down) und sein Ordner {dir} gelöscht.',
|
||
'Also delete named volumes (data!)': 'Auch benannte Volumes löschen (Daten!)',
|
||
'Remove containers?': 'Container entfernen?',
|
||
'docker compose down stops and removes the containers of “{name}”. Volumes and files are kept.': 'docker compose down stoppt und entfernt die Container von „{name}“. Volumes und Dateien bleiben erhalten.',
|
||
'Down': 'Down',
|
||
'Back': 'Zurück',
|
||
'Save & deploy': 'Speichern & starten',
|
||
'(variables, used as ${NAME} in the compose file)': '(Variablen, in der Compose-Datei als ${NAME} nutzbar)',
|
||
'Saved, but the compose file has an error: {msg}': 'Gespeichert, aber die Compose-Datei enthält einen Fehler: {msg}',
|
||
'Docker Compose was not found on this host (docker compose plugin or docker-compose).': 'Docker Compose wurde auf diesem Host nicht gefunden (docker-compose-Plugin oder docker-compose).',
|
||
'Could not read {file}': '{file} konnte nicht gelesen werden',
|
||
'Stack names may only contain lowercase letters, digits, - and _.': 'Stack-Namen dürfen nur Kleinbuchstaben, Ziffern, - und _ enthalten.',
|
||
'A stack named “{name}” already exists.': 'Ein Stack namens „{name}“ existiert bereits.',
|
||
'No write permission in {dir}. Use “Set up folder” or save the host password so MrTerm can use sudo.': 'Keine Schreibrechte in {dir}. Nutze „Ordner einrichten“ oder speichere das Host-Passwort, damit MrTerm sudo verwenden kann.',
|
||
'Templates': 'Vorlagen',
|
||
'Run': 'Ausführen',
|
||
'Authorize SSH key for a user': 'SSH-Key für Benutzer freischalten',
|
||
'Adds a public key from the keychain to ~/.ssh/authorized_keys of the user.': 'Trägt einen öffentlichen Schlüssel aus dem Schlüsselbund in ~/.ssh/authorized_keys des Benutzers ein.',
|
||
'Key': 'Schlüssel',
|
||
'Public key is missing.': 'Öffentlicher Schlüssel fehlt.',
|
||
'User is missing.': 'Benutzer fehlt.',
|
||
'Install QEMU guest agent': 'QEMU Guest Agent installieren',
|
||
'Installs and starts qemu-guest-agent (apt, dnf, yum, pacman, zypper or apk).': 'Installiert und startet qemu-guest-agent (apt, dnf, yum, pacman, zypper oder apk).',
|
||
'Use APT cache server': 'APT-Cache-Server verwenden',
|
||
'Routes APT downloads through a cache proxy such as apt-cacher-ng (/etc/apt/apt.conf.d/00proxy).': 'Leitet APT-Downloads über einen Cache-Proxy wie apt-cacher-ng (/etc/apt/apt.conf.d/00proxy).',
|
||
'Proxy URL': 'Proxy-URL',
|
||
'Invalid URL.': 'Ungültige URL.',
|
||
'Remove APT cache server': 'APT-Cache-Server entfernen',
|
||
'Removes the APT proxy setting again.': 'Entfernt die APT-Proxy-Einstellung wieder.',
|
||
'Updates all packages with the system package manager.': 'Aktualisiert alle Pakete mit dem Paketmanager des Systems.',
|
||
'Connecting to security key …': 'Verbinde mit dem Sicherheitsschlüssel …',
|
||
'Enter the PIN of your security key.': 'Gib die PIN deines Sicherheitsschlüssels ein.',
|
||
'Wrong PIN.': 'Falsche PIN.',
|
||
'{n} attempts left.': 'Noch {n} Versuche.',
|
||
'The PIN of this security key is blocked. Remove and reinsert the key, or reset it.': 'Die PIN dieses Sicherheitsschlüssels ist gesperrt. Ziehe den Schlüssel ab und stecke ihn neu ein oder setze ihn zurück.',
|
||
|
||
// VPN
|
||
'— No VPN —': '— Kein VPN —',
|
||
'Connected automatically before connecting to this host.': 'Wird vor dem Verbinden mit diesem Host automatisch aufgebaut.',
|
||
'Search VPNs …': 'VPNs suchen …',
|
||
'New VPN': 'Neues VPN',
|
||
'No VPNs': 'Keine VPNs',
|
||
'Add WireGuard or OpenVPN configurations and assign them to hosts. MrTerm connects the VPN automatically when you open such a host.': 'Füge WireGuard- oder OpenVPN-Konfigurationen hinzu und ordne sie Hosts zu. MrTerm baut das VPN automatisch auf, wenn du einen solchen Host öffnest.',
|
||
'connected': 'verbunden',
|
||
'disconnected': 'getrennt',
|
||
'Disconnect': 'Trennen',
|
||
'Connecting …': 'Verbinde …',
|
||
'VPN “{name}” connected': 'VPN „{name}“ verbunden',
|
||
'Delete VPN?': 'VPN löschen?',
|
||
'“{name}” will be removed. Assigned hosts will connect without VPN.': '„{name}“ wird entfernt. Zugeordnete Hosts verbinden sich dann ohne VPN.',
|
||
'Configuration': 'Konfiguration',
|
||
'Certificates and keys must be embedded in the .ovpn file (<ca>, <cert>, <key> …).': 'Zertifikate und Schlüssel müssen in der .ovpn-Datei eingebettet sein (<ca>, <cert>, <key> …).',
|
||
'Contents of a WireGuard .conf file.': 'Inhalt einer WireGuard-.conf-Datei.',
|
||
'Edit VPN': 'VPN bearbeiten',
|
||
'Office VPN': 'Büro-VPN',
|
||
'Disconnect when MrTerm closes': 'Beim Beenden von MrTerm trennen',
|
||
'Assigned hosts': 'Zugeordnete Hosts',
|
||
'Configuration is missing.': 'Konfiguration fehlt.',
|
||
'This does not look like a WireGuard configuration.': 'Das sieht nicht nach einer WireGuard-Konfiguration aus.',
|
||
'VPN configuration': 'VPN-Konfiguration',
|
||
'NetworkManager (nmcli) not found. MrTerm uses NetworkManager for VPN connections.': 'NetworkManager (nmcli) nicht gefunden. MrTerm nutzt NetworkManager für VPN-Verbindungen.',
|
||
'OpenVPN support for NetworkManager is missing. Install it with: sudo pacman -S networkmanager-openvpn': 'OpenVPN-Unterstützung für NetworkManager fehlt. Installieren mit: sudo pacman -S networkmanager-openvpn',
|
||
'VPN configuration could not be imported: {err}': 'VPN-Konfiguration konnte nicht importiert werden: {err}',
|
||
'VPN “{name}” could not be connected: {err}': 'VPN „{name}“ konnte nicht verbunden werden: {err}',
|
||
'VPN not found': 'VPN nicht gefunden',
|
||
'OpenVPN GUI not found. Install OpenVPN from openvpn.net.': 'OpenVPN GUI nicht gefunden. Installiere OpenVPN von openvpn.net.',
|
||
'WireGuard for Windows not found. Install it from wireguard.com.': 'WireGuard für Windows nicht gefunden. Installiere es von wireguard.com.',
|
||
'timeout': 'Zeitüberschreitung',
|
||
'Connecting VPN “{name}” …': 'Baue VPN „{name}“ auf …',
|
||
|
||
// Docker
|
||
'Docker containers': 'Docker-Container',
|
||
'Search containers …': 'Container suchen …',
|
||
'Show stopped': 'Gestoppte anzeigen',
|
||
'Connection closed.': 'Verbindung beendet.',
|
||
'No containers on this host.': 'Keine Container auf diesem Host.',
|
||
'Ports': 'Ports',
|
||
'Memory': 'Speicher',
|
||
'Open shell': 'Shell öffnen',
|
||
'Logs': 'Logs',
|
||
'Restart': 'Neu starten',
|
||
'Copy ID': 'ID kopieren',
|
||
'Delete container?': 'Container löschen?',
|
||
'“{name}” will be removed including its writable layer. Volumes are kept.': '„{name}“ wird samt beschreibbarer Ebene entfernt. Volumes bleiben erhalten.',
|
||
'Stop container?': 'Container stoppen?',
|
||
'Started': 'Gestartet',
|
||
'Stopped': 'Gestoppt',
|
||
'Restarted': 'Neu gestartet',
|
||
'Deleted': 'Gelöscht',
|
||
'Docker session not found': 'Docker-Sitzung nicht gefunden',
|
||
'Neither Docker nor Podman was found on this host.': 'Auf diesem Host wurde weder Docker noch Podman gefunden.',
|
||
'No permission to use {runtime}. Add the user to the "docker" group (sudo usermod -aG docker {user}) or save the host password so MrTerm can use sudo.': 'Keine Berechtigung für {runtime}. Füge den Benutzer der Gruppe „docker“ hinzu (sudo usermod -aG docker {user}) oder hinterlege das Host-Passwort, damit MrTerm sudo verwenden kann.',
|
||
'{runtime} exited with code {code}': '{runtime} beendet mit Code {code}',
|
||
|
||
// Firewall
|
||
'Firewall': 'Firewall',
|
||
'Save the current iptables rules so they survive a reboot': 'Aktuelle iptables-Regeln speichern, damit sie einen Neustart überstehen',
|
||
'Save permanently': 'Dauerhaft speichern',
|
||
'Add rule': 'Regel hinzufügen',
|
||
'Rules saved permanently': 'Regeln dauerhaft gespeichert',
|
||
'Enable': 'Aktivieren',
|
||
'Disable firewall?': 'Firewall deaktivieren?',
|
||
'All UFW rules will stop filtering traffic.': 'Keine UFW-Regel filtert dann mehr den Datenverkehr.',
|
||
'Enable firewall?': 'Firewall aktivieren?',
|
||
'There is no rule that allows SSH (port {port}). Enabling UFW could lock you out of this server.': 'Es gibt keine Regel, die SSH (Port {port}) erlaubt. Wenn du UFW aktivierst, könntest du dich von diesem Server aussperren.',
|
||
'Enable anyway': 'Trotzdem aktivieren',
|
||
'Allow SSH and enable': 'SSH erlauben und aktivieren',
|
||
'Firewall enabled': 'Firewall aktiviert',
|
||
'Incoming': 'Eingehend',
|
||
'Outgoing': 'Ausgehend',
|
||
'Allow': 'Erlauben',
|
||
'Deny': 'Verweigern',
|
||
'Reject': 'Abweisen',
|
||
'Change default policy?': 'Standardrichtlinie ändern?',
|
||
'Incoming connections without a matching rule will be blocked. Make sure SSH is allowed.': 'Eingehende Verbindungen ohne passende Regel werden dann blockiert. Stelle sicher, dass SSH erlaubt ist.',
|
||
'Change': 'Ändern',
|
||
'No rules yet.': 'Noch keine Regeln.',
|
||
'To': 'Ziel',
|
||
'Action': 'Aktion',
|
||
'From': 'Quelle',
|
||
'Comment': 'Kommentar',
|
||
'Rule deleted': 'Regel gelöscht',
|
||
'Changes apply immediately but are lost after a reboot unless you click “Save permanently”.': 'Änderungen gelten sofort, gehen nach einem Neustart aber verloren, wenn du nicht auf „Dauerhaft speichern“ klickst.',
|
||
'rules': 'Regeln',
|
||
'Policy': 'Richtlinie',
|
||
'Traffic without a matching ACCEPT rule will be dropped. Make sure SSH is allowed, or you may lock yourself out.': 'Datenverkehr ohne passende ACCEPT-Regel wird dann verworfen. Stelle sicher, dass SSH erlaubt ist, sonst sperrst du dich eventuell aus.',
|
||
'Add UFW rule': 'UFW-Regel hinzufügen',
|
||
'Limit (rate-limit)': 'Begrenzen (Rate-Limit)',
|
||
'Direction': 'Richtung',
|
||
'Port': 'Port',
|
||
'Protocol': 'Protokoll',
|
||
'Any': 'Beliebig',
|
||
'From (IP or network)': 'Quelle (IP oder Netz)',
|
||
'Insert at the top (highest priority)': 'Ganz oben einfügen (höchste Priorität)',
|
||
'Add': 'Hinzufügen',
|
||
'Rule added': 'Regel hinzugefügt',
|
||
'Add {bin} rule': '{bin}-Regel hinzufügen',
|
||
'Chain': 'Kette',
|
||
'Target': 'Ziel',
|
||
'Source (IP or network)': 'Quelle (IP oder Netz)',
|
||
'Interface': 'Schnittstelle',
|
||
'Connection state': 'Verbindungsstatus',
|
||
'Invalid value for {field}: {value}': 'Ungültiger Wert für {field}: {value}',
|
||
'Firewall session not found': 'Firewall-Sitzung nicht gefunden',
|
||
'Command failed with code {code}': 'Befehl fehlgeschlagen mit Code {code}',
|
||
'Root privileges are required. Log in as root or save the password of a user with sudo rights on the host.': 'Dafür sind root-Rechte nötig. Melde dich als root an oder hinterlege am Host das Passwort eines Benutzers mit sudo-Rechten.',
|
||
'This host uses firewalld, which is not supported yet.': 'Dieser Host nutzt firewalld, das noch nicht unterstützt wird.',
|
||
'Neither UFW nor iptables was found on this host.': 'Auf diesem Host wurde weder UFW noch iptables gefunden.',
|
||
'Port ranges and lists need a protocol (TCP or UDP).': 'Portbereiche und -listen brauchen ein Protokoll (TCP oder UDP).',
|
||
'A port needs the protocol TCP or UDP.': 'Für einen Port ist das Protokoll TCP oder UDP nötig.',
|
||
'No known way to save iptables rules on this host (e.g. install iptables-persistent).': 'Keine bekannte Möglichkeit, iptables-Regeln auf diesem Host zu speichern (z. B. iptables-persistent installieren).',
|
||
|
||
'UFW is disabled': 'UFW ist deaktiviert',
|
||
'Enable UFW to view or add rules.': 'Aktiviere UFW, um Regeln einzusehen oder anzulegen.',
|
||
// Netzwerk
|
||
'Network': 'Netzwerk',
|
||
'Show virtual interfaces': 'Virtuelle Schnittstellen anzeigen',
|
||
'Config files': 'Konfigurationsdateien',
|
||
'New interface': 'Neue Schnittstelle',
|
||
'New bond': 'Neuer Bond',
|
||
'New bridge': 'Neue Bridge',
|
||
'New VLAN': 'Neues VLAN',
|
||
'The last network change was rolled back automatically ({time}) because MrTerm could not reconnect.': 'Die letzte Netzwerkänderung wurde automatisch zurückgenommen ({time}), weil MrTerm sich nicht erneut verbinden konnte.',
|
||
'Editing is supported for Ubuntu (netplan) and Debian/Proxmox (ifupdown). This host uses {backend}, so interfaces are shown read-only. Config files can still be edited.': 'Bearbeiten wird für Ubuntu (netplan) und Debian/Proxmox (ifupdown) unterstützt. Dieser Host nutzt {backend}, daher werden die Schnittstellen nur angezeigt. Konfigurationsdateien lassen sich trotzdem bearbeiten.',
|
||
'none': 'keins',
|
||
'Hostname': 'Hostname',
|
||
'Default gateway': 'Standard-Gateway',
|
||
'DNS servers': 'DNS-Server',
|
||
'Search': 'Suche',
|
||
'systemd-resolved is used: set DNS servers per interface.': 'systemd-resolved ist aktiv: DNS-Server pro Schnittstelle festlegen.',
|
||
'Not configured': 'Nicht konfiguriert',
|
||
'Static': 'Statisch',
|
||
'No IPv4': 'Kein IPv4',
|
||
'Mode': 'Modus',
|
||
'Configured, but not present': 'Konfiguriert, aber nicht vorhanden',
|
||
'No address': 'Keine Adresse',
|
||
'Configured': 'Konfiguriert',
|
||
'MrTerm reconnects to confirm the change. Without confirmation the server restores the previous configuration after 90 seconds.': 'MrTerm verbindet sich neu, um die Änderung zu bestätigen. Ohne Bestätigung stellt der Server nach 90 Sekunden die vorherige Konfiguration wieder her.',
|
||
'Saved': 'Gespeichert',
|
||
'Network change applied and confirmed': 'Netzwerkänderung angewendet und bestätigt',
|
||
'MrTerm could not reconnect after the change. The server restores the previous configuration automatically within 90 seconds.': 'MrTerm konnte sich nach der Änderung nicht erneut verbinden. Der Server stellt die vorherige Konfiguration innerhalb von 90 Sekunden automatisch wieder her.',
|
||
'Apply network change?': 'Netzwerkänderung anwenden?',
|
||
'The change is applied immediately. If MrTerm cannot reconnect within 90 seconds, the server restores the previous configuration automatically.': 'Die Änderung wird sofort angewendet. Kann MrTerm sich nicht innerhalb von 90 Sekunden erneut verbinden, stellt der Server die vorherige Konfiguration automatisch wieder her.',
|
||
'Reconnect via': 'Neu verbinden über',
|
||
'Change this if the change affects the address MrTerm uses to connect.': 'Ändern, wenn die Änderung die Adresse betrifft, über die MrTerm sich verbindet.',
|
||
'Apply': 'Anwenden',
|
||
'No suitable interfaces found.': 'Keine passenden Schnittstellen gefunden.',
|
||
'Usually <parent>.<VLAN ID>, e.g. eno1.100': 'Üblich: <Eltern>.<VLAN-ID>, z. B. eno1.100',
|
||
'Bond': 'Bond',
|
||
'Members': 'Mitglieder',
|
||
'LACP rate': 'LACP-Rate',
|
||
'Hash policy': 'Hash-Richtlinie',
|
||
'MII monitoring (ms)': 'MII-Überwachung (ms)',
|
||
'Bridge': 'Bridge',
|
||
'Spanning Tree (STP)': 'Spanning Tree (STP)',
|
||
'VLAN ID': 'VLAN-ID',
|
||
'Parent interface': 'Übergeordnete Schnittstelle',
|
||
'IPv4 addresses (one per line, CIDR)': 'IPv4-Adressen (eine pro Zeile, CIDR)',
|
||
'Gateway': 'Gateway',
|
||
'IPv6 addresses (one per line, CIDR)': 'IPv6-Adressen (eine pro Zeile, CIDR)',
|
||
'IPv6 gateway': 'IPv6-Gateway',
|
||
'Method': 'Methode',
|
||
'No IPv4 address': 'Keine IPv4-Adresse',
|
||
'Search domains': 'Suchdomänen',
|
||
'Automatic (SLAAC)': 'Automatisch (SLAAC)',
|
||
'Disabled': 'Deaktiviert',
|
||
'New {kind}': 'Neue(r) {kind}',
|
||
'Select at least one member.': 'Wähle mindestens ein Mitglied aus.',
|
||
'Select the parent interface.': 'Wähle die übergeordnete Schnittstelle aus.',
|
||
'An interface with this name already exists.': 'Eine Schnittstelle mit diesem Namen gibt es bereits.',
|
||
'Applying network configuration …': 'Netzwerkkonfiguration wird angewendet …',
|
||
'Delete {kind} {name}?': '{kind} {name} löschen?',
|
||
'The interface is removed from the configuration. Members keep their current settings.': 'Die Schnittstelle wird aus der Konfiguration entfernt. Mitglieder behalten ihre aktuellen Einstellungen.',
|
||
'Change hostname': 'Hostname ändern',
|
||
'Hostname changed': 'Hostname geändert',
|
||
'Written to /etc/resolv.conf.': 'Wird in /etc/resolv.conf geschrieben.',
|
||
'Content': 'Inhalt',
|
||
'Saving applies the file with automatic rollback.': 'Beim Speichern wird die Datei mit automatischem Rollback angewendet.',
|
||
'Saving …': 'Speichere …',
|
||
'Network session not found': 'Netzwerk-Sitzung nicht gefunden',
|
||
'netplan configuration could not be read ({err}).': 'netplan-Konfiguration konnte nicht gelesen werden ({err}).',
|
||
'Editing is not supported for this network configuration ({backend}).': 'Bearbeiten wird für diese Netzwerkkonfiguration ({backend}) nicht unterstützt.',
|
||
'The new configuration is invalid and was not applied: {err}': 'Die neue Konfiguration ist ungültig und wurde nicht angewendet: {err}',
|
||
'A static configuration needs at least one IPv4 address (e.g. 192.168.1.10/24).': 'Eine statische Konfiguration braucht mindestens eine IPv4-Adresse (z. B. 192.168.1.10/24).',
|
||
'A static IPv6 configuration needs at least one IPv6 address.': 'Eine statische IPv6-Konfiguration braucht mindestens eine IPv6-Adresse.',
|
||
|
||
'Authentication failed for {user}. Check the username, password or key.': 'Anmeldung für {user} fehlgeschlagen. Prüfe Benutzername, Passwort oder Schlüssel.',
|
||
// Synchronisation
|
||
'Synchronization': 'Synchronisation',
|
||
'Synchronize hosts, groups, snippets, port forwards, VPNs and known hosts directly between MrTerm devices in your local network. The connection is end-to-end encrypted; no server or cloud is involved.': 'Hosts, Gruppen, Snippets, Port-Weiterleitungen, VPNs und Known Hosts direkt zwischen MrTerm-Geräten im lokalen Netz abgleichen. Die Verbindung ist Ende-zu-Ende verschlüsselt, ohne Server oder Cloud.',
|
||
'Enable LAN synchronization': 'LAN-Synchronisation aktivieren',
|
||
'Device name': 'Gerätename',
|
||
'No paired devices yet.': 'Noch keine gekoppelten Geräte.',
|
||
'online': 'online',
|
||
'offline': 'offline',
|
||
'last sync {time}': 'zuletzt {time}',
|
||
'Unpair': 'Entkoppeln',
|
||
'Unpair device?': 'Gerät entkoppeln?',
|
||
'“{name}” will no longer synchronize with this device.': '„{name}“ synchronisiert dann nicht mehr mit diesem Gerät.',
|
||
'Shared secrets: {keys} SSH keys, {pw} host passwords, {vpn} VPN configurations': 'Geteilte Geheimnisse: {keys} SSH-Schlüssel, {pw} Host-Passwörter, {vpn} VPN-Konfigurationen',
|
||
'Pair new device': 'Neues Gerät koppeln',
|
||
'Sync now': 'Jetzt synchronisieren',
|
||
'Synchronized with {n} device(s)': 'Mit {n} Gerät(en) synchronisiert',
|
||
'Choose shared secrets': 'Geteilte Geheimnisse auswählen',
|
||
'Devices find each other via UDP port 47811 and synchronize via TCP port 47812. If a firewall is active, allow these ports in your local network (with UFW: sudo ufw allow 47811/udp and sudo ufw allow 47812/tcp).': 'Geräte finden sich über UDP-Port 47811 und synchronisieren über TCP-Port 47812. Ist eine Firewall aktiv, erlaube diese Ports im lokalen Netz (mit UFW: sudo ufw allow 47811/udp und sudo ufw allow 47812/tcp).',
|
||
'Open “Pair new device” on the other device too, then select it here. Both devices show a code that you confirm on both sides.': 'Öffne „Neues Gerät koppeln“ auch auf dem anderen Gerät und wähle es dann hier aus. Beide Geräte zeigen einen Code, den du auf beiden Seiten bestätigst.',
|
||
'Or enter an IP address, e.g. 192.168.0.25': 'Oder IP-Adresse eingeben, z. B. 192.168.0.25',
|
||
'Searching for devices …': 'Suche nach Geräten …',
|
||
'not ready for pairing': 'nicht bereit zum Koppeln',
|
||
'Pair': 'Koppeln',
|
||
'Pairing …': 'Kopple …',
|
||
'Device found': 'Gerät gefunden',
|
||
'Choose which secrets this device may send to paired devices. Everything else (hosts, groups, snippets …) is synchronized without passwords and private keys.': 'Wähle, welche Geheimnisse dieses Gerät an gekoppelte Geräte senden darf. Alles andere (Hosts, Gruppen, Snippets …) wird ohne Passwörter und private Schlüssel synchronisiert.',
|
||
'SSH keys': 'SSH-Schlüssel',
|
||
'Host passwords': 'Host-Passwörter',
|
||
'VPN configurations': 'VPN-Konfigurationen',
|
||
'There are no secrets on this device yet.': 'Auf diesem Gerät gibt es noch keine Geheimnisse.',
|
||
'Share nothing': 'Nichts teilen',
|
||
'Select all': 'Alle auswählen',
|
||
'Paired with {name}': 'Mit {name} gekoppelt',
|
||
'Confirm pairing': 'Kopplung bestätigen',
|
||
'Pairing with “{name}”. Does the other device show the same code?': 'Kopplung mit „{name}“. Zeigt das andere Gerät denselben Code?',
|
||
'Codes differ': 'Codes unterschiedlich',
|
||
'Codes match': 'Codes stimmen überein',
|
||
'Pairing was rejected on this device.': 'Die Kopplung wurde auf diesem Gerät abgelehnt.',
|
||
'Pairing was rejected on the other device.': 'Die Kopplung wurde auf dem anderen Gerät abgelehnt.',
|
||
'Pairing verification failed.': 'Die Überprüfung der Kopplung ist fehlgeschlagen.',
|
||
'Device is not ready for pairing': 'Das Gerät ist nicht zum Koppeln bereit',
|
||
|
||
'CachyOS: allow the sync ports in the firewall': 'CachyOS: Sync-Ports in der Firewall freigeben',
|
||
'Firewall active: allow the sync ports': 'Firewall aktiv: Sync-Ports freigeben',
|
||
'Otherwise other devices cannot find or reach this device. Run these commands once in a terminal:': 'Sonst können andere Geräte dieses Gerät weder finden noch erreichen. Führe diese Befehle einmal in einem Terminal aus:',
|
||
'Copy commands': 'Befehle kopieren',
|
||
'Already done, hide': 'Erledigt, ausblenden',
|
||
'CachyOS enables the UFW firewall by default. It blocks the ports MrTerm needs to find and reach other devices (UDP 47811, TCP 47812). Run these commands once in a terminal:': 'CachyOS aktiviert standardmäßig die Firewall UFW. Sie blockiert die Ports, über die MrTerm andere Geräte findet und erreicht (UDP 47811, TCP 47812). Führe diese Befehle einmal in einem Terminal aus:',
|
||
'No devices found? The firewall on this device may block them:': 'Keine Geräte gefunden? Die Firewall dieses Geräts blockiert sie eventuell:',
|
||
'Host password': 'Host-Passwort',
|
||
'Share with paired devices?': 'Mit gekoppelten Geräten teilen?',
|
||
'Should this secret be synchronized to your paired devices ({names})? You can change this later under Settings → Synchronization.': 'Soll dieses Geheimnis mit deinen gekoppelten Geräten ({names}) synchronisiert werden? Du kannst das später unter Einstellungen → Synchronisation ändern.',
|
||
'Don\'t share': 'Nicht teilen',
|
||
'Share': 'Teilen',
|
||
// Android-App
|
||
'Lock': 'Sperren',
|
||
'Add your first server or pair this phone with MrTerm on your computer to take over your hosts.': 'Lege deinen ersten Server an oder kopple dieses Handy mit MrTerm auf deinem Computer, um deine Hosts zu übernehmen.',
|
||
'No matching hosts. Press Enter to connect to “{q}”.': 'Keine passenden Hosts. Drücke Enter, um dich mit „{q}“ zu verbinden.',
|
||
'RDP is not available on Android': 'RDP ist unter Android nicht verfügbar',
|
||
'Please enter a name.': 'Bitte einen Namen eingeben.',
|
||
'Sessions': 'Sitzungen',
|
||
'New connection': 'Neue Verbindung',
|
||
'Paste': 'Einfügen',
|
||
'Copy selection': 'Auswahl kopieren',
|
||
'Nothing selected. Long-press the terminal to select text.': 'Nichts ausgewählt. Halte das Terminal gedrückt, um Text auszuwählen.',
|
||
'Larger font': 'Schrift größer',
|
||
'Smaller font': 'Schrift kleiner',
|
||
'Close session': 'Sitzung schließen',
|
||
'Generate a new SSH key or import an existing one.': 'Erzeuge einen neuen SSH-Schlüssel oder importiere einen vorhandenen.',
|
||
'Key created': 'Schlüssel erstellt',
|
||
'Add the public key to ~/.ssh/authorized_keys on your servers.': 'Trage den öffentlichen Schlüssel auf deinen Servern in ~/.ssh/authorized_keys ein.',
|
||
'Save frequently used commands and send them to a terminal with one tap.': 'Speichere häufig genutzte Befehle und sende sie mit einem Tippen an ein Terminal.',
|
||
'Run in terminal': 'Im Terminal ausführen',
|
||
'Command': 'Befehl',
|
||
'End the command with a line break to run it immediately.': 'Endet der Befehl mit einem Zeilenumbruch, wird er sofort ausgeführt.',
|
||
'Please enter a command.': 'Bitte einen Befehl eingeben.',
|
||
'General': 'Allgemein',
|
||
'System language': 'Systemsprache',
|
||
'Known hosts': 'Bekannte Hosts',
|
||
'{n} saved host keys': '{n} gespeicherte Hostschlüssel',
|
||
'Show': 'Anzeigen',
|
||
'Version {v}': 'Version {v}',
|
||
'Updates are installed with Obtainium.': 'Updates werden mit Obtainium installiert.',
|
||
'No known hosts yet.': 'Noch keine bekannten Hosts.',
|
||
'Remove host key?': 'Hostschlüssel entfernen?',
|
||
'Immediately': 'Sofort',
|
||
'After 1 minute': 'Nach 1 Minute',
|
||
'After 5 minutes': 'Nach 5 Minuten',
|
||
'Protect MrTerm with a password and optionally your fingerprint. The vault is then additionally encrypted.': 'Schütze MrTerm mit einem Passwort und optional deinem Fingerabdruck. Der Tresor wird dann zusätzlich verschlüsselt.',
|
||
'Remove app lock': 'App-Sperre entfernen',
|
||
'Remove app lock?': 'App-Sperre entfernen?',
|
||
'MrTerm will open without a password.': 'MrTerm öffnet sich dann ohne Passwort.',
|
||
'Unlock with fingerprint': 'Mit Fingerabdruck entsperren',
|
||
'Uses the fingerprint or face unlock of this phone.': 'Nutzt den Fingerabdruck- oder Gesichtsscanner dieses Handys.',
|
||
'Confirm fingerprint': 'Fingerabdruck bestätigen',
|
||
'Lock when leaving the app': 'Sperren beim Verlassen der App',
|
||
'Enter your password to unlock.': 'Gib dein Passwort ein, um zu entsperren.',
|
||
'Unlock MrTerm': 'MrTerm entsperren',
|
||
'Use password': 'Passwort verwenden',
|
||
'Your fingerprints have changed. Unlock with your password and set up fingerprint unlock again.': 'Deine Fingerabdrücke haben sich geändert. Entsperre mit deinem Passwort und richte das Entsperren per Fingerabdruck neu ein.',
|
||
'Take over hosts, groups, snippets and known hosts from MrTerm on your computer. The connection is end-to-end encrypted and stays in your local network.': 'Übernimm Hosts, Gruppen, Snippets und bekannte Hosts von MrTerm auf deinem Computer. Die Verbindung ist Ende-zu-Ende verschlüsselt und bleibt in deinem lokalen Netzwerk.',
|
||
'Both devices must be in the same Wi-Fi. If nothing is found, allow UDP port 47811 and TCP port 47812 in the firewall of your computer.': 'Beide Geräte müssen im selben WLAN sein. Wird nichts gefunden, gib in der Firewall deines Computers UDP-Port 47811 und TCP-Port 47812 frei.',
|
||
'Or enter an IP address': 'Oder IP-Adresse eingeben',
|
||
'Copy failed': 'Kopieren fehlgeschlagen',
|
||
'Fingerprint unlock is not set up.': 'Entsperren per Fingerabdruck ist nicht eingerichtet.',
|
||
'Fingerprint unlock failed. Use your password.': 'Entsperren per Fingerabdruck fehlgeschlagen. Verwende dein Passwort.',
|
||
'Set a password first.': 'Lege zuerst ein Passwort fest.',
|
||
// Web-Version
|
||
'RDP is not available in the web version.': 'RDP ist in der Web-Version nicht verfügbar.',
|
||
'Account': 'Konto',
|
||
'Signed in as {name}': 'Angemeldet als {name}',
|
||
'Administrator': 'Administrator',
|
||
'Current password': 'Aktuelles Passwort',
|
||
'Sign out': 'Abmelden',
|
||
'Users': 'Benutzer',
|
||
'User': 'Benutzer',
|
||
'Delete user?': 'Benutzer löschen?',
|
||
'“{name}” and their vault will be permanently deleted.': '„{name}“ und der zugehörige Tresor werden endgültig gelöscht.',
|
||
'Add user': 'Benutzer hinzufügen',
|
||
'Your vault is stored on the server, encrypted with a key that only your login password can unlock.': 'Dein Tresor liegt auf dem Server, verschlüsselt mit einem Schlüssel, den nur dein Login-Passwort entsperren kann.',
|
||
'Folders cannot be downloaded in the browser: {name}': 'Ordner können im Browser nicht heruntergeladen werden: {name}',
|
||
'Welcome! Create the administrator account for this MrTerm server.': 'Willkommen! Lege das Administrator-Konto für diesen MrTerm-Server an.',
|
||
'Sign in to your MrTerm server.': 'Melde dich an deinem MrTerm-Server an.',
|
||
'Create account': 'Konto anlegen',
|
||
'Sign in': 'Anmelden',
|
||
'Administrators only.': 'Nur für Administratoren.',
|
||
'Forbidden': 'Nicht erlaubt',
|
||
'Not signed in': 'Nicht angemeldet',
|
||
'Setup is already complete.': 'Die Einrichtung ist bereits abgeschlossen.',
|
||
'The current password is wrong.': 'Das aktuelle Passwort ist falsch.',
|
||
'The last administrator cannot be deleted.': 'Der letzte Administrator kann nicht gelöscht werden.',
|
||
'Too many failed attempts. Try again in 15 minutes.': 'Zu viele Fehlversuche. Versuche es in 15 Minuten erneut.',
|
||
'User not found.': 'Benutzer nicht gefunden.',
|
||
'Wrong username or password.': 'Benutzername oder Passwort falsch.',
|
||
'You cannot delete yourself.': 'Du kannst dich nicht selbst löschen.',
|
||
'The password must be at least 8 characters long.': 'Das Passwort muss mindestens 8 Zeichen lang sein.',
|
||
'This username is already taken.': 'Dieser Benutzername ist bereits vergeben.',
|
||
'Usernames may contain letters, digits and . _ @ - (max. 64).': 'Benutzernamen dürfen Buchstaben, Ziffern und . _ @ - enthalten (max. 64).',
|
||
'Connection lost – reconnecting …': 'Verbindung verloren – verbinde neu …',
|
||
// Main-Prozess
|
||
'Host key has changed!': 'Host-Schlüssel hat sich geändert!',
|
||
'Unknown host': 'Unbekannter Host',
|
||
'WARNING: The host key of {target} has changed. This may indicate a man-in-the-middle attack.': 'WARNUNG: Der Host-Schlüssel von {target} hat sich geändert. Das kann auf einen Man-in-the-Middle-Angriff hindeuten.',
|
||
'The authenticity of {target} cannot be verified.': 'Die Echtheit von {target} kann nicht bestätigt werden.',
|
||
'Previously stored:': 'Bisher gespeichert:',
|
||
'Connect anyway & replace': 'Trotzdem verbinden & ersetzen',
|
||
'Trust & connect': 'Vertrauen & verbinden',
|
||
'~/.ssh/config not found': '~/.ssh/config nicht gefunden',
|
||
'Host not found': 'Host nicht gefunden',
|
||
'Rule not found': 'Regel nicht gefunden',
|
||
'RDP exited (code {code}): {err}': 'RDP beendet (Code {code}): {err}',
|
||
'RDP launch failed: {msg}': 'RDP-Start fehlgeschlagen: {msg}',
|
||
'xfreerdp3 missing (sudo pacman -S freerdp)': 'xfreerdp3 fehlt (sudo pacman -S freerdp)',
|
||
'All files': 'Alle Dateien',
|
||
'No FreeRDP found. Install with: sudo pacman -S freerdp': 'Kein FreeRDP gefunden. Installieren mit: sudo pacman -S freerdp',
|
||
'No connection to the X server (MrTerm is not running under X11/XWayland).': 'Keine Verbindung zum X-Server (MrTerm läuft nicht unter X11/XWayland).',
|
||
'koffi not available': 'koffi nicht verfügbar',
|
||
'Platform not supported': 'Plattform nicht unterstützt',
|
||
'Connecting to {name} ({addr}) …': 'Verbinde mit {name} ({addr}) …',
|
||
'Password for {user}': 'Passwort für {user}',
|
||
'SFTP session not found': 'SFTP-Sitzung nicht gefunden',
|
||
'Invalid repository URL: {url}': 'Ungültige Repository-URL: {url}',
|
||
'Repository not found (private? Then add an access token in the settings).': 'Repository nicht gefunden (privat? Dann Zugriffstoken in den Einstellungen hinterlegen).',
|
||
'Update server responded with {status}': 'Update-Server antwortet mit {status}',
|
||
'No matching package for this system found in the release.': 'Kein passendes Paket für dieses System im Release gefunden.',
|
||
'Download failed ({status})': 'Download fehlgeschlagen ({status})',
|
||
'pacman exited with code {code}': 'pacman beendet mit Code {code}',
|
||
'Automatic installation is not possible here. The file is located at: {file}': 'Automatische Installation hier nicht möglich. Datei liegt unter: {file}',
|
||
};
|
||
|
||
const DICTS = { de };
|
||
const LANGUAGES = [['en', 'English'], ['de', 'Deutsch']];
|
||
let lang = 'en';
|
||
|
||
// pref: 'auto' oder Sprachcode; system: z. B. navigator.language / app.getLocale()
|
||
function setLanguage(pref, system) {
|
||
const code = String(pref && pref !== 'auto' ? pref : system || 'en').slice(0, 2).toLowerCase();
|
||
lang = DICTS[code] ? code : 'en';
|
||
return lang;
|
||
}
|
||
|
||
function t(s, vars) {
|
||
let r = (DICTS[lang] && DICTS[lang][s]) || s;
|
||
if (vars) r = r.replace(/\{(\w+)\}/g, (m, k) => (k in vars ? String(vars[k]) : m));
|
||
return r;
|
||
}
|
||
|
||
const api = { t, setLanguage, LANGUAGES, get lang() { return lang; } };
|
||
if (typeof module === 'object' && module.exports) module.exports = api;
|
||
else root.I18N = api;
|
||
})(this);
|