From 0be553c4c8d2a842fd6612220087391a350190d6 Mon Sep 17 00:00:00 2001 From: 3limin4tor <3limin4tor@proton.me> Date: Wed, 7 May 2025 01:22:25 +0200 Subject: [PATCH 1/4] Update de.ts Started with new translation for German --- web/src/i18n/locales/de.ts | 327 +++++++++++++++++++++++-------------- 1 file changed, 207 insertions(+), 120 deletions(-) diff --git a/web/src/i18n/locales/de.ts b/web/src/i18n/locales/de.ts index b8248a6..a290f6f 100644 --- a/web/src/i18n/locales/de.ts +++ b/web/src/i18n/locales/de.ts @@ -1,59 +1,58 @@ -const de = { +const en = { translation: { head: { desktop: 'Entfernter Desktop', - login: 'Einloggen', + login: 'Anmelden', changePassword: 'Passwort ändern', terminal: 'Terminal', wifi: 'Wi-Fi' }, auth: { - login: 'Einloggen', - placeholderUsername: 'Bitte den Benutzernamen eingeben', - placeholderPassword: 'Bitte das Passwort eingeben', - placeholderPassword2: 'Passwort wiederholen', - noEmptyUsername: 'Der Benutzername darf nicht leer sein', - noEmptyPassword: 'Das Passwort darf nicht leer sein', - noAccount: - 'Fehler beim Auslsen der Benutzerinformation, bitte die Seite neu laden oder das Passwort zurücksetzen', + login: 'Anmelden', + placeholderUsername: 'Benutzername', + placeholderPassword: 'Passwort', + placeholderPassword2: 'Bitte Passwort erneut eingeben', + noEmptyUsername: 'Benutzername benötigt', + noEmptyPassword: 'Passwort benötigt', + noAccount: 'Abfragen der Benutzerdaten fehlgeschalgen, bitte die Seite neu laden oder Passwort zurücksetzen', invalidUser: 'Falscher Benutzername oder falsches Passwort', error: 'Unerwarteter Fehler', changePassword: 'Passwort ändern', - changePasswordDesc: - 'Für die Sicherheit Ihres Geräts ändern Sie bitte das Web-Login-Passwort.', - differentPassword: 'Passwörter stimmt nicht überein', - illegalUsername: 'Benutzername beinhaltet ungültige Zeichen', - illegalPassword: 'Passwort beinhaltet ungültige Zeichen', + changePasswordDesc: 'Für die Sicherheit Ihres Geräts ändern Sie bitte das Passwort!', + differentPassword: 'Passwörter stimmen nicht überein', + illegalUsername: 'Benutzername enthält ungültige Zeichen', + illegalPassword: 'Passwort enthält ungültige Zeichen', forgetPassword: 'Passwort vergessen', ok: 'Ok', cancel: 'Abbrechen', - loginButtonText: 'Einloggen', + loginButtonText: 'Anmelden', tips: { reset1: - 'To reset the passwords, pressing and holding the BOOT button on the NanoKVM for 10 seconds.', - reset2: 'For detailed steps, please consult this document:', - reset3: 'Web default account:', - reset4: 'SSH default account:', - change1: 'Please note that this action will change the following passwords:', - change2: 'Web login password', - change3: 'System root password (SSH login password)', - change4: 'To reset the passwords, press and hold the BOOT button on the NanoKVM.' + 'Um das Passwort zurückzusetzen, drücken und halten Sie den BOOT Knopf auf dem NanoKVM für 10 Sekunden.', + reset2: 'Für detailliertere Anweisungen lesen Sie folgendes Dokument:', + reset3: 'Web Standard-Account:', + reset4: 'SSH Standard-Account:', + change1: 'Bitte beachten Sie, dass diese Aktion folgende Passwörter ändert:', + change2: 'Web Anmelde-Passwort', + change3: 'System root Passwort (SSH Anmelde-Passwort)', + change4: 'Um die Passwörter zurückzusetzen, drücken und halten Sie den BOOT Knopf auf dem NanoKVM.' } }, wifi: { title: 'Wi-Fi', - description: 'Configure Wi-Fi for NanoKVM', - success: 'Please check the network status of NanoKVM and visit the new IP address.', - failed: 'Operation failed, please try again.', + description: 'Wi-Fi Konfiguration für NanoKVM', + success: 'Bitte überprüfen Sie den Netzwerk-Status des NanoKVM und greifen Sie über die neue IP Adresse darauf zu.', + failed: 'Aktion fehlgeschlagen, bitte erneut versuchen.', confirmBtn: 'Ok', - finishBtn: 'Finished' + finishBtn: 'Fertig' }, screen: { - video: 'Videomodus', + title: 'Bildschirm', + video: 'Video Modus', resolution: 'Auflösung', auto: 'Automatisch', autoTips: - 'Falls es bei bestimmten Auflösungen zu Screen-Tearing oder einem Offset des Mauszeigers kommen sollte, bitte die Auflösung des Remote Hosts anpassen oder den automatischen Modus ausschalten.', + "Bildverzerrungen oder ein versetzter Mauszeiger kann bei bestimmten Auflösungen auftreten. Versuchen Sie, die Auflösung des entfernten Hosts anzupassen oder den automatischen Modus zu deaktivieren.", fps: 'FPS', customizeFps: 'Anpassen', quality: 'Qualität', @@ -61,118 +60,162 @@ const de = { qualityHigh: 'Hoch', qualityMedium: 'Mittel', qualityLow: 'Niedrig', - frameDetect: 'Frame Detect', + frameDetect: 'Bilderkennung', frameDetectTip: - 'Berechnet den Unterschied zwischen den Einzelbildern. Beendet die Liveübertragung des Videostreams wenn keine Änderungen auf dem Bildschirm des Hosts festgestellt werden kann.', + "Berechnet den Unterschied zwischen den Einzelbildern. Beendet die Liveübertragung des Videostreams wenn keine Änderungen auf dem Bildschirm des Hosts festgestellt werden kann.", resetHdmi: 'Reset HDMI' }, keyboard: { + title: 'Tastatur', paste: 'Einfügen', - tips: 'Nur Standard-Tastaturbuchstaben und Symbole werden unterstützt.', + tips: 'Nur Standard-Tastaturbuchstaben und Symbole werden unterstützt', placeholder: 'Bitte eingeben', submit: 'Senden', - virtual: 'Virtuelle Tastatur', + virtual: 'Tastatur', ctrlaltdel: 'Ctrl+Alt+Del' }, mouse: { + title: 'Maus', + cursor: 'Cursor', default: 'Standard Cursor', pointer: 'Zeiger Cursor', cell: 'Zellen Cursor', text: 'Text Cursor', grab: 'Greif Cursor', - hide: 'Cursor ausblenden', + hide: 'Versteck Cursor', mode: 'Maus Modus', - absolute: 'Absoluter Modus', - relative: 'Relativer Modus', - requestPointer: - 'Der Relative Modus wird benutzt. Bitte auf den Desktop klicken um einen Mauszeiger anzuzeigen.', - resetHid: 'Eingeabegeräte zurücksetzen' + absolute: 'Absolut Modus', + relative: 'Relativ Modus', + requestPointer: 'Nutze relativer Modus. Um Mauszeiger zu sehen, klicken Sie auf den Desktop.', + resetHid: 'Reset HID', + hidOnly: { + title: 'HID-Only Modus', + desc: 'Wenn Ihre Maus und Tastatur nicht mehr reagieren und das Zurücksetzen der HID-Verbindung nicht hilft, könnte es sich um ein Kompatibilitätsproblem zwischen dem NanoKVM und dem Gerät handeln. Versuchen Sie, den HID-Only-Modus zu aktivieren, um die Kompatibilität zu verbessern.', + tip1: 'Die Aktivierung des HID-Only-Modus entfernt das virtuelle U-Laufwerk und das virtuelle Netzwerk.', + tip2: 'Im HID-Only Modus ist das Einbinden von Images deaktiviert.', + tip3: 'NanoKVM wird nach dem Wechsel in den neuen Modus automatisch neu gestartet.', + enable: 'HID-Only Modus aktivieren', + disable: 'HID-Only Modus deaktivieren' + } }, image: { - title: 'ISO oder Festplatten Abbilder', - loading: 'Laden...', + title: 'Bilder', + loading: 'Lädt...', empty: 'Nichts gefunden', - mountFailed: 'Mounten fehlgeschlagen', - mountDesc: - 'Bei einigen Systemen muss die virtuelle Festplatte auf dem Remote-Host ausgeworfen werden, bevor das Image gemountet werden kann.', + cdrom: 'Binden Sie das Abbild im CD-ROM Modus ein', + mountFailed: 'Einbinden fehlgeschlagen', + mountDesc: + "In einigen Systemen ist es notwendig, die virtuelle Festplatte auf dem entfernten Host auszuwerfen, bevor das Image eingebunden werden kann.", + refresh: 'Bilder aktualisieren', tips: { - title: 'Wie man Abbilder hochlädt', - usb1: 'Den NanoKVM via USB mit dem Computer verbinden.', - usb2: 'Stellen sie sicher, das das Virtuelle Festplatte eingebunden ist. (Einstellungen - Virtuelle Festplatte).', - usb3: 'Öffnen sie die Virtuelle Festplatte auf ihrem Computer und kopieren sie die Abbilddatei in das root-Verzeichnis des USB-Geräts.', - scp1: 'Stellen sie sicher, das sich der NanoKVM und ihr Computer im gleichen lokalen Netzwerk befinden.', - scp2: 'Öffnen sie ein Terminal auf ihrem Computer und benutzen sie den SCP-Befehl um die Abbilddatei in das /data Verzeichnis des NanoKVM zu kopieren.', - scp3: 'Beispiel: scp ihr-abbild-verzeichnis root@ihre-nanokvm-ip:/data', - tfCard: 'TF-Karte', - tf1: 'Diese Mehthode wird auf Linuxsystemen unterstützt', - tf2: 'Entfernen sie die TF-Karte aus dem NanoKVM (gilt nur für die fertig zusammengebaute Version, bitte das Gehäuse vorher auseinanderbauen).', - tf3: 'Legen sie die TF-Karte in den Kartenleser ein und verbinden sie diesen mit dem Computer.', - tf4: 'Kopieren sie die Abbild-Datei in das /data Verzeichnis der TF-Karte.', - tf5: 'Legen sie die TF-Karte in das NanoKVM ein.' + title: 'So laden Sie Dateien hoch', + usb1: 'Verbinden Sie den NanoKVM über USB mit Ihrem Computer.', + usb2: 'Stellen Sie sicher, dass die virtuelle Festplatte eingebunden ist (Einstellungen – Virtuelle Festplatte).', + usb3: 'Öffnen Sie die virtuelle Festplatte auf Ihrem Computer und kopieren Sie die Image-Datei in das Stammverzeichnis der virtuellen Festplatte.', + scp1: 'Stellen Sie sicher, dass sich der NanoKVM und Ihr Computer im selben lokalen Netzwerk befinden.', + scp2: 'Öffnen Sie ein Terminal auf Ihrem Computer und verwenden Sie den SCP-Befehl, um die Image-Datei in das Verzeichnis /data auf dem NanoKVM hochzuladen.', + scp3: 'Beispiel: scp your-image-path root@your-nanokvm-ip:/data', + tfCard: 'TF-Karte', + tf1: 'Diese Methode wird unter Linux-Systemen unterstützt.', + tf2: 'Entnehmen Sie die TF-Karte aus dem NanoKVM (bei der FULL-Version muss zuvor das Gehäuse geöffnet werden).', + tf3: 'Stecken Sie die TF-Karte in einen Kartenleser und verbinden Sie diesen mit Ihrem Computer.', + tf4: 'Kopieren Sie die Image-Datei in das Verzeichnis /data auf der TF-Karte.', + tf5: 'Setzen Sie die TF-Karte wieder in den NanoKVM ein.' } }, script: { - title: 'Skript', + title: 'Skripte', upload: 'Hochladen', run: 'Ausführen', runBackground: 'Im Hintergrund ausführen', - runFailed: 'Ausführung abgebrochen', + runFailed: '', attention: 'Achtung', - delDesc: 'Sind sie sicher, dass sie diese Datei löschen möchten?', + delDesc: 'Möchten Sie diese Datei wirklich löschen?', confirm: 'Ja', cancel: 'Nein', delete: 'Löschen', - close: 'Schließen' + close: 'Schliessen' }, terminal: { title: 'Terminal', nanokvm: 'NanoKVM Terminal', - serial: 'Terminal über den Seriellen Port', - serialPort: 'Serieller Port', - serialPortPlaceholder: 'Serielle Portnummer eingeben', - baudrate: 'Baudrate', + serial: 'Serieller Anschluss Terminal', + serialPort: 'Serieller Anschluss', + serialPortPlaceholder: 'Bitte seriellen Anschluss angeben', + baudrate: 'Baud rate', + parity: 'Parity', + parityNone: 'None', + parityEven: 'Even', + parityOdd: 'Odd', + flowControl: 'Flow control', + flowControlNone: 'None', + flowControlSoft: 'Soft', + flowControlHard: 'Hard', + dataBits: 'Data bits', + stopBits: 'Stop bits', confirm: 'Ok' }, wol: { title: 'Wake-on-LAN', - sending: 'Befehl senden...', - sent: 'Befehl gesendet', - input: 'Bitte die MAC eingeben', + sending: 'Sending command...', + sent: 'Command sent', + input: 'Please enter the MAC', ok: 'Ok' }, + download: { + title: 'Image Downloader', + input: 'Please enter a remote image URL', + ok: 'Ok', + disabled: '/data partition is RO, so we cannot download the image' + }, power: { - title: 'Einschalten', - reset: 'Neustart', - power: 'Einschalten', - powerShort: 'Einschalten (Kurzes Drücken)', - powerLong: 'Einschalten (Langes Drücken)' + title: 'Power', + showConfirm: 'Confirmation', + showConfirmTip: 'Power operations require an extra confirmation', + reset: 'Reset', + power: 'Power', + powerShort: 'Power (short click)', + powerLong: 'Power (long click)', + resetConfirm: 'Proceed reset operation?', + powerConfirm: 'Proceed power operation?', + okBtn: 'Yes', + cancelBtn: 'No' }, settings: { title: 'Settings', about: { - title: 'Über NanoKVM', + title: 'About NanoKVM', information: 'Information', ip: 'IP', mdns: 'mDNS', - application: 'Versionsnummer', + application: 'Application Version', applicationTip: 'NanoKVM web application version', image: 'Image Version', imageTip: 'NanoKVM system image version', - deviceKey: 'Geräte-Key', - community: 'Community' + deviceKey: 'Device Key', + community: 'Community', + hostname: 'Hostname', + hostnameUpdated: 'Hostname updated. Reboot to apply.', + ipType: { + 'Wired': 'Wired', + 'Wireless': 'Wireless', + 'Other': 'Other' + } }, appearance: { title: 'Appearance', display: 'Display', language: 'Language', menuBar: 'Menu Bar', - menuBarDesc: 'Display icons in the menu bar' + menuBarDesc: 'Display icons in the menu bar', + webTitle: 'Web Title', + webTitleDesc: 'Customize the web page title' }, device: { title: 'Device', oled: { title: 'OLED', - description: 'OLED screen automatically sleep', + description: 'Turn off OLED screen after', 0: 'Never', 15: '15 sec', 30: '30 sec', @@ -188,68 +231,112 @@ const de = { description: 'Configure Wi-Fi', setBtn: 'Config' }, + ssh: { + description: 'Enable SSH remote access', + tip: 'Set a strong password before enabling (Account - Change Password)' + }, + advanced: 'Advanced Settings', + swap: { + title: 'Swap', + disable: 'Disable', + description: 'Set the swap file size', + tip: "Enabling this feature could shorten your SD card's usable life!" + }, + mouseJiggler: { + title: 'Mouse Jiggler', + description: 'Prevent the remote host from sleeping', + disable: 'Disable', + absolute: 'Absolute Mode', + relative: 'Relative Mode' + }, + mdns: { + description: 'Enable mDNS discovery service', + tip: "Turning it off if it's not needed" + }, + hidOnly: 'HID-Only Mode', disk: 'Virtual Disk', diskDesc: 'Mount virtual U-disk on the remote host', network: 'Virtual Network', - networkDesc: 'Mount virtual network card on the remote host' + networkDesc: 'Mount virtual network card on the remote host', + reboot: 'Reboot', + rebootDesc: 'Are you sure you want to reboot NanoKVM?', + okBtn: 'Yes', + cancelBtn: 'No' }, tailscale: { title: 'Tailscale', memory: { title: 'Memory optimization', - tip: "When memory usage exceeds the limit, garbage collection is performed more aggressively to attempt to free up memory. it's recommended to set to 50MB if using Tailscale. A Tailscale restart is required for the change to take effect.", + tip: "When memory usage exceeds the limit, garbage collection is performed more aggressively to attempt to free up memory. It's recommended to set to 75MB if using Tailscale. A Tailscale restart is required for the change to take effect.", disable: 'Disable' }, - restart: 'Are you sure to restart Tailscale?', - stop: 'Are you sure to stop Tailscale?', - stopDesc: 'Log out Tailscale and disable its automatic startup on boot.', - loading: 'Lade...', - notInstall: 'Tailscale wurde nicht gefunden! Bitte installieren.', - install: 'Installieren', - installing: 'Installation wird durchgeführt', - failed: 'Installation gescheitert', - retry: - 'Bitte neu laden und noch einmal versuchen. Oder versuchen sie Tailscale manuell zu installieren', - download: 'Laden sie das', - package: 'Installationspaket', - unzip: 'und entpacken sie es manuell', - upTailscale: 'Hochladen von tailscale in das NanoKVM Verzeichnis /usr/bin/', - upTailscaled: 'Hochladen von tailscaled in das NanoKVM Verzeichnis /usr/sbin/', - refresh: 'Die aktuelle Seite neu laden', + restart: 'Restart Tailscale?', + stop: 'Stop Tailscale?', + stopDesc: 'Log out Tailscale and disable automatic startup on boot.', + loading: 'Loading...', + notInstall: 'Tailscale not found! Please install.', + install: 'Install', + installing: 'Installing', + failed: 'Install failed', + retry: 'Please refresh and try again. Or try to install manually', + download: 'Download the', + package: 'installation package', + unzip: 'and unzip it', + upTailscale: 'Upload tailscale to NanoKVM directory /usr/bin/', + upTailscaled: 'Upload tailscaled to NanoKVM directory /usr/sbin/', + refresh: 'Refresh current page', notLogin: - 'Diese Geräte ist bisher noch nicht verknüpft. Bitte loggen sie sich in ihr Konto ein und verknüpfen sie dieses Gerät mit diesem.', - urlPeriod: 'Diese URL ist für 10 Minuten gültig', - login: 'Einloggen', - loginSuccess: 'Das Einloggen war erfolgreich', - enable: 'Tailscale aktivieren', - deviceName: 'Name des Geräts', - deviceIP: 'Geräte-IP', - account: 'Benutzerkonto', - logout: 'Ausloggen', - logout2: 'Wollen Sie sich wirklich ausloggen?', + 'The device has not been bound yet. Please login and bind this device to your account.', + urlPeriod: 'This url is valid for 10 minutes', + login: 'Login', + loginSuccess: 'Login Success', + enable: 'Enable Tailscale', + deviceName: 'Device Name', + deviceIP: 'Device IP', + account: 'Account', + logout: 'Logout', + logoutDesc: 'Are you sure you want to logout?', + uninstall: 'Uninstall Tailscale', okBtn: 'Yes', cancelBtn: 'No' }, update: { - title: 'Nach neuem Update suchen', - queryFailed: 'Versionsnummer konnte nicht erkannt werden', - updateFailed: 'Update gescheitert. Bitte versuchen sie es erneut.', - isLatest: 'Die aktuelle Version ist bereits installiert.', - available: - 'Ein Update ist verfügbar. Sind sie sicher, dass sie diese Version aktualisieren möchten?', - updating: 'Update wird gestartet. Bitte warten...', - confirm: 'Bestätigen', - cancel: 'Abbrechen' + title: 'Check for Updates', + queryFailed: 'Get version failed', + updateFailed: 'Update failed. Please retry.', + isLatest: 'You already have the latest version.', + available: 'An update is available. Are you sure you want to update now?', + updating: 'Update started. Please wait...', + confirm: 'Confirm', + cancel: 'Cancel', + preview: 'Preview Updates', + previewDesc: 'Get early access to new features and improvements', + previewTip: + 'Please be aware that preview releases may contain bugs or incomplete functionality!' }, account: { title: 'Account', webAccount: 'Web Account Name', password: 'Password', - updateBtn: 'Update', - logoutBtn: 'Logout' + updateBtn: 'Change', + logoutBtn: 'Logout', + logoutDesc: 'Are you sure you want to logout?', + okBtn: 'Yes', + cancelBtn: 'No' } + }, + error: { + title: "We've ran into an issue", + refresh: 'Refresh' + }, + fullscreen: { + toggle: 'Toggle Fullscreen' + }, + menu: { + collapse: 'Collapse Menu', + expand: 'Expand Menu' } } }; -export default de; +export default en; From 66e434db24edf120bcc297d17e7cdfdbbeac92d2 Mon Sep 17 00:00:00 2001 From: 3limin4tor <3limin4tor@proton.me> Date: Wed, 7 May 2025 19:17:44 +0200 Subject: [PATCH 2/4] Finalized german translation --- web/src/i18n/locales/de.ts | 286 ++++++++++++++++++------------------- 1 file changed, 143 insertions(+), 143 deletions(-) diff --git a/web/src/i18n/locales/de.ts b/web/src/i18n/locales/de.ts index a290f6f..9ebc49d 100644 --- a/web/src/i18n/locales/de.ts +++ b/web/src/i18n/locales/de.ts @@ -1,4 +1,4 @@ -const en = { +const de = { translation: { head: { desktop: 'Entfernter Desktop', @@ -14,7 +14,7 @@ const en = { placeholderPassword2: 'Bitte Passwort erneut eingeben', noEmptyUsername: 'Benutzername benötigt', noEmptyPassword: 'Passwort benötigt', - noAccount: 'Abfragen der Benutzerdaten fehlgeschalgen, bitte die Seite neu laden oder Passwort zurücksetzen', + noAccount: 'Abfragen der Benutzerdaten fehlgeschlagen, bitte die Seite neu laden oder Passwort zurücksetzen', invalidUser: 'Falscher Benutzername oder falsches Passwort', error: 'Unerwarteter Fehler', changePassword: 'Passwort ändern', @@ -52,7 +52,7 @@ const en = { resolution: 'Auflösung', auto: 'Automatisch', autoTips: - "Bildverzerrungen oder ein versetzter Mauszeiger kann bei bestimmten Auflösungen auftreten. Versuchen Sie, die Auflösung des entfernten Hosts anzupassen oder den automatischen Modus zu deaktivieren.", + "Bildverzerrungen oder ein versetzter Mauszeiger können bei bestimmten Auflösungen auftreten. Versuchen Sie, die Auflösung des entfernten Hosts anzupassen oder den automatischen Modus zu deaktivieren.", fps: 'FPS', customizeFps: 'Anpassen', quality: 'Qualität', @@ -86,13 +86,13 @@ const en = { mode: 'Maus Modus', absolute: 'Absolut Modus', relative: 'Relativ Modus', - requestPointer: 'Nutze relativer Modus. Um Mauszeiger zu sehen, klicken Sie auf den Desktop.', - resetHid: 'Reset HID', + requestPointer: 'Nutze relativer Modus. Um den Mauszeiger zu sehen, klicken Sie auf den Desktop.', + resetHid: 'HID zurücksetzen', hidOnly: { title: 'HID-Only Modus', - desc: 'Wenn Ihre Maus und Tastatur nicht mehr reagieren und das Zurücksetzen der HID-Verbindung nicht hilft, könnte es sich um ein Kompatibilitätsproblem zwischen dem NanoKVM und dem Gerät handeln. Versuchen Sie, den HID-Only-Modus zu aktivieren, um die Kompatibilität zu verbessern.', - tip1: 'Die Aktivierung des HID-Only-Modus entfernt das virtuelle U-Laufwerk und das virtuelle Netzwerk.', - tip2: 'Im HID-Only Modus ist das Einbinden von Images deaktiviert.', + desc: 'Wenn Ihre Maus und Tastatur nicht mehr reagieren und das Zurücksetzen der HID-Verbindung nicht hilft, könnte es sich um ein Kompatibilitätsproblem zwischen dem NanoKVM und dem Gerät handeln. Versuchen Sie, den HID-Only Modus zu aktivieren, um die Kompatibilität zu verbessern.', + tip1: 'Die Aktivierung des HID-Only Modus entfernt das virtuelle U-Laufwerk und das virtuelle Netzwerk.', + tip2: 'Im HID-Only Modus ist das Einbinden von Systemabbilder deaktiviert.', tip3: 'NanoKVM wird nach dem Wechsel in den neuen Modus automatisch neu gestartet.', enable: 'HID-Only Modus aktivieren', disable: 'HID-Only Modus deaktivieren' @@ -142,201 +142,201 @@ const en = { serial: 'Serieller Anschluss Terminal', serialPort: 'Serieller Anschluss', serialPortPlaceholder: 'Bitte seriellen Anschluss angeben', - baudrate: 'Baud rate', - parity: 'Parity', - parityNone: 'None', - parityEven: 'Even', - parityOdd: 'Odd', - flowControl: 'Flow control', - flowControlNone: 'None', - flowControlSoft: 'Soft', - flowControlHard: 'Hard', - dataBits: 'Data bits', - stopBits: 'Stop bits', + baudrate: 'Baudrate', + parity: 'Parität', + parityNone: 'Keine', + parityEven: 'Gerade', + parityOdd: 'Ungerade', + flowControl: 'Fluss-Kontrolle', + flowControlNone: 'Keine', + flowControlSoft: 'Wenig', + flowControlHard: 'Viel', + dataBits: 'Daten bits', + stopBits: 'Stopp bits', confirm: 'Ok' }, wol: { title: 'Wake-on-LAN', - sending: 'Sending command...', - sent: 'Command sent', - input: 'Please enter the MAC', + sending: 'Sende Befehl...', + sent: 'Befehl gesendet', + input: 'Bitte MAC Adresse eingeben', ok: 'Ok' }, download: { - title: 'Image Downloader', - input: 'Please enter a remote image URL', + title: 'Systemabbild Downloader', + input: 'Bitte geben Sie die URL für das Remote-Systemabbild ein', ok: 'Ok', - disabled: '/data partition is RO, so we cannot download the image' + disabled: '/data Partition ist nur-lesbar, daher kann das Systemabbild nicht heruntergeladen werden' }, power: { title: 'Power', - showConfirm: 'Confirmation', - showConfirmTip: 'Power operations require an extra confirmation', - reset: 'Reset', + showConfirm: 'Bestätigung', + showConfirmTip: 'Diese Aktionen benötigen eine zusätzliche Bestätigung', + reset: 'Zurücksetzen', power: 'Power', - powerShort: 'Power (short click)', - powerLong: 'Power (long click)', - resetConfirm: 'Proceed reset operation?', - powerConfirm: 'Proceed power operation?', - okBtn: 'Yes', - cancelBtn: 'No' + powerShort: 'Power (Kurzer Klick)', + powerLong: 'Power (Langer Klick)', + resetConfirm: 'Reset-Aktion durchführen?', + powerConfirm: 'Power-Aktion durchführen?', + okBtn: 'Ja', + cancelBtn: 'Nein' }, settings: { - title: 'Settings', + title: 'Einstellungen', about: { - title: 'About NanoKVM', - information: 'Information', + title: 'Über NanoKVM', + information: 'Informationen', ip: 'IP', mdns: 'mDNS', - application: 'Application Version', - applicationTip: 'NanoKVM web application version', - image: 'Image Version', - imageTip: 'NanoKVM system image version', - deviceKey: 'Device Key', + application: 'Applikations-Version', + applicationTip: 'NanoKVM Web Applikations-Version', + image: 'Systemabbild-Version', + imageTip: 'NanoKVM Systemabbild-Version', + deviceKey: 'Geräte Schlüssel', community: 'Community', hostname: 'Hostname', - hostnameUpdated: 'Hostname updated. Reboot to apply.', + hostnameUpdated: 'Hostname aktualisiert. Neustarten um zu übernehmen.', ipType: { - 'Wired': 'Wired', - 'Wireless': 'Wireless', - 'Other': 'Other' + 'Wired': 'Kabel', + 'Wireless': 'Drahtlos', + 'Other': 'Andere' } }, appearance: { - title: 'Appearance', - display: 'Display', - language: 'Language', - menuBar: 'Menu Bar', - menuBarDesc: 'Display icons in the menu bar', - webTitle: 'Web Title', - webTitleDesc: 'Customize the web page title' + title: 'Erscheinungsbild', + display: 'Bildschirm', + language: 'Sprache', + menuBar: 'Menu-Leiste', + menuBarDesc: 'Symbole in der Menu-Leiste anzeigen', + webTitle: 'Web Titel', + webTitleDesc: 'Passen Sie den Web-Seite Titel an' }, device: { - title: 'Device', + title: 'Gerät', oled: { title: 'OLED', - description: 'Turn off OLED screen after', - 0: 'Never', - 15: '15 sec', - 30: '30 sec', - 60: '1 min', - 180: '3 min', - 300: '5 min', - 600: '10 min', - 1800: '30 min', - 3600: '1 hour' + description: 'Schalte OLED Bildschirm aus nach', + 0: 'Nie', + 15: '15 Sek', + 30: '30 Sek', + 60: '1 Min', + 180: '3 Min', + 300: '5 Min', + 600: '10 Min', + 1800: '30 Min', + 3600: '1 Stunde' }, wifi: { title: 'Wi-Fi', - description: 'Configure Wi-Fi', - setBtn: 'Config' + description: 'Wi-Fi konfigurieren', + setBtn: 'Konfigurieren' }, ssh: { - description: 'Enable SSH remote access', - tip: 'Set a strong password before enabling (Account - Change Password)' + description: 'Aktiviere entfernten SSH-Zugang', + tip: 'Setzten Sie ein starkes Passwort vor dem aktivieren (Konto - Passwort ändern)' }, - advanced: 'Advanced Settings', + advanced: 'Erweiterte Einstellungen', swap: { title: 'Swap', - disable: 'Disable', - description: 'Set the swap file size', - tip: "Enabling this feature could shorten your SD card's usable life!" + disable: 'Deaktivieren', + description: 'Grösse der Swap-Datei festlegen', + tip: "Das Aktivieren dieser Funktion kann die Lebensdauer Ihrer SD-Karte verkürzen!" }, mouseJiggler: { - title: 'Mouse Jiggler', - description: 'Prevent the remote host from sleeping', - disable: 'Disable', - absolute: 'Absolute Mode', - relative: 'Relative Mode' + title: 'Mausaktivitäts-Simulator', + description: 'Verhindert, dass der remote Host in den Energiesparmodus wechselt', + disable: 'Deaktivieren', + absolute: 'Absoluter Modus', + relative: 'Relativer Modus' }, mdns: { - description: 'Enable mDNS discovery service', - tip: "Turning it off if it's not needed" + description: 'mDNS-Erkennungsdienst aktivieren', + tip: "Deaktivieren Sie den Dienst, wenn Sie ihn nicht benötigen" }, hidOnly: 'HID-Only Mode', - disk: 'Virtual Disk', - diskDesc: 'Mount virtual U-disk on the remote host', - network: 'Virtual Network', - networkDesc: 'Mount virtual network card on the remote host', - reboot: 'Reboot', - rebootDesc: 'Are you sure you want to reboot NanoKVM?', - okBtn: 'Yes', - cancelBtn: 'No' + disk: 'Virtuelle Festplatte', + diskDesc: 'Binde das virtuelle U-Laufwerk an den entfernten Host', + network: 'Virtuelles Netzwerk', + networkDesc: 'Binde die virtuelle Netzwerkkarte an den entfernten Host', + reboot: 'Neustarten', + rebootDesc: 'Sind Sie sicher dass Sie NanoKVM neustarten möchten?', + okBtn: 'Ja', + cancelBtn: 'Nein' }, tailscale: { title: 'Tailscale', memory: { - title: 'Memory optimization', - tip: "When memory usage exceeds the limit, garbage collection is performed more aggressively to attempt to free up memory. It's recommended to set to 75MB if using Tailscale. A Tailscale restart is required for the change to take effect.", - disable: 'Disable' + title: 'Speicher Optimierung', + tip: "Wenn die Speichernutzung das Limit überschreitet, wird die Speicherbereinigung aggressiver durchgeführt, um Speicher freizugeben. Es wird empfohlen, den Wert auf 75 MB zu setzen, wenn Tailscale verwendet wird. Ein Neustart von Tailscale ist erforderlich, damit die Änderung wirksam wird.", + disable: 'Deaktivieren' }, - restart: 'Restart Tailscale?', - stop: 'Stop Tailscale?', - stopDesc: 'Log out Tailscale and disable automatic startup on boot.', - loading: 'Loading...', - notInstall: 'Tailscale not found! Please install.', - install: 'Install', - installing: 'Installing', - failed: 'Install failed', - retry: 'Please refresh and try again. Or try to install manually', - download: 'Download the', - package: 'installation package', - unzip: 'and unzip it', - upTailscale: 'Upload tailscale to NanoKVM directory /usr/bin/', - upTailscaled: 'Upload tailscaled to NanoKVM directory /usr/sbin/', - refresh: 'Refresh current page', + restart: 'Tailscale neu starten?', + stop: 'Tailscale stoppen?', + stopDesc: 'Von Tailscale abmelden und automatischen Start beim Booten deaktivieren.', + loading: 'Lädt...', + notInstall: 'Tailscale nicht gefunden! Bitte installieren.', + install: 'Installieren', + installing: 'Installiere', + failed: 'Installation fehlgeschlagen', + retry: 'Bitte Seite neu laden und erneut versuchen oder manuelle Installation versuchen.', + download: 'Laden Sie das', + package: 'Installations-Paket herunter', + unzip: 'und entpacken Sie es', + upTailscale: 'Tailscale nach /usr/bin/ auf NanoKVM hochladen', + upTailscaled: 'Tailscaled nach /usr/bin/ auf NanoKVM hochladen', + refresh: 'Aktuelle Seite neu laden', notLogin: - 'The device has not been bound yet. Please login and bind this device to your account.', - urlPeriod: 'This url is valid for 10 minutes', - login: 'Login', - loginSuccess: 'Login Success', - enable: 'Enable Tailscale', - deviceName: 'Device Name', - deviceIP: 'Device IP', - account: 'Account', - logout: 'Logout', - logoutDesc: 'Are you sure you want to logout?', - uninstall: 'Uninstall Tailscale', - okBtn: 'Yes', - cancelBtn: 'No' + 'Das Gerät konnte noch nicht gefunden werden. Bitte melden Sie sich an und verknüpfen Sie dieses Gerät mit Ihrem Konto.', + urlPeriod: 'Diese URL ist für 10 Minuten gültig', + login: 'Anmelden', + loginSuccess: 'Anmeldung erfolgreich', + enable: 'Tailscale einschalten', + deviceName: 'Geräte Name', + deviceIP: 'Geräte IP', + account: 'Konto', + logout: 'Abmelden', + logoutDesc: 'Möchten Sie sich wirklich abmelden?', + uninstall: 'Tailscale deinstallieren', + okBtn: 'Ja', + cancelBtn: 'Nein' }, update: { - title: 'Check for Updates', - queryFailed: 'Get version failed', - updateFailed: 'Update failed. Please retry.', - isLatest: 'You already have the latest version.', - available: 'An update is available. Are you sure you want to update now?', - updating: 'Update started. Please wait...', - confirm: 'Confirm', - cancel: 'Cancel', - preview: 'Preview Updates', - previewDesc: 'Get early access to new features and improvements', + title: 'Nach Aktualisierungen suchen', + queryFailed: 'Version konnte nicht abgefragt werden', + updateFailed: 'Aktualisierung fehlgeschlagen. Bitte versuchen Sie es erneut.', + isLatest: 'Sie haben bereits die aktuellste Version.', + available: 'Eine Aktualisierung ist verfügbar. Möchten sie diese jetzt durchführen?', + updating: 'Aktualisierung gestartet. Bitte warten...', + confirm: 'Bestätigen', + cancel: 'Abbrechen', + preview: 'Vorab-Versionen', + previewDesc: 'Erhalten Sie vorab Zugriff auf neue Funktionen und Verbesserungen', previewTip: - 'Please be aware that preview releases may contain bugs or incomplete functionality!' + 'Bitte beachten Sie, dass Vorab-Versionen womöglich noch Fehler oder unvollständige Funktionen enthalten!' }, account: { - title: 'Account', - webAccount: 'Web Account Name', - password: 'Password', - updateBtn: 'Change', - logoutBtn: 'Logout', - logoutDesc: 'Are you sure you want to logout?', - okBtn: 'Yes', - cancelBtn: 'No' + title: 'Konto', + webAccount: 'Web Konto Name', + password: 'Passwort', + updateBtn: 'Ändern', + logoutBtn: 'Abmelden', + logoutDesc: 'Möchten Sie sich wirklich abmelden?', + okBtn: 'Ja', + cancelBtn: 'Nein' } }, error: { - title: "We've ran into an issue", - refresh: 'Refresh' + title: "Wir sind auf ein Problem gestossen", + refresh: 'Neuladen' }, fullscreen: { - toggle: 'Toggle Fullscreen' + toggle: 'Vollbild ein/aus' }, menu: { - collapse: 'Collapse Menu', - expand: 'Expand Menu' + collapse: 'Menu einblenden', + expand: 'Menu verbergen' } } }; -export default en; +export default de; From 7c8f9f3cd8c1baf5f380aee0aee3876ac846440a Mon Sep 17 00:00:00 2001 From: 3limin4tor <3limin4tor@proton.me> Date: Wed, 7 May 2025 19:23:26 +0200 Subject: [PATCH 3/4] Finalized german translations --- web/src/i18n/locales/de.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/src/i18n/locales/de.ts b/web/src/i18n/locales/de.ts index 9ebc49d..54ea65f 100644 --- a/web/src/i18n/locales/de.ts +++ b/web/src/i18n/locales/de.ts @@ -62,8 +62,8 @@ const de = { qualityLow: 'Niedrig', frameDetect: 'Bilderkennung', frameDetectTip: - "Berechnet den Unterschied zwischen den Einzelbildern. Beendet die Liveübertragung des Videostreams wenn keine Änderungen auf dem Bildschirm des Hosts festgestellt werden kann.", - resetHdmi: 'Reset HDMI' + 'Berechnet den Unterschied zwischen den Einzelbildern. Beendet die Liveübertragung des Videostreams wenn keine Änderungen auf dem Bildschirm des Hosts festgestellt werden kann.', + resetHdmi: 'HDMI zurücksetzen' }, keyboard: { title: 'Tastatur', @@ -84,8 +84,8 @@ const de = { grab: 'Greif Cursor', hide: 'Versteck Cursor', mode: 'Maus Modus', - absolute: 'Absolut Modus', - relative: 'Relativ Modus', + absolute: 'Absoluter Modus', + relative: 'Relativer Modus', requestPointer: 'Nutze relativer Modus. Um den Mauszeiger zu sehen, klicken Sie auf den Desktop.', resetHid: 'HID zurücksetzen', hidOnly: { From e8ccac8e617832bfdc95234bf65ddcfc54a268dd Mon Sep 17 00:00:00 2001 From: 3limin4tor <3limin4tor@proton.me> Date: Wed, 7 May 2025 19:25:49 +0200 Subject: [PATCH 4/4] Update de.ts --- web/src/i18n/locales/de.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/src/i18n/locales/de.ts b/web/src/i18n/locales/de.ts index 54ea65f..0888003 100644 --- a/web/src/i18n/locales/de.ts +++ b/web/src/i18n/locales/de.ts @@ -82,11 +82,11 @@ const de = { cell: 'Zellen Cursor', text: 'Text Cursor', grab: 'Greif Cursor', - hide: 'Versteck Cursor', + hide: 'Versteckter Cursor', mode: 'Maus Modus', absolute: 'Absoluter Modus', relative: 'Relativer Modus', - requestPointer: 'Nutze relativer Modus. Um den Mauszeiger zu sehen, klicken Sie auf den Desktop.', + requestPointer: 'Relativer Modus aktiv. Klicken Sie auf den Desktop um den Mauszeiger zu sehen.', resetHid: 'HID zurücksetzen', hidOnly: { title: 'HID-Only Modus',