From 6c52301a6467f6771f711b3a205b8e903c671cfc Mon Sep 17 00:00:00 2001 From: Pascal Dietrich <80521473+Cameo007@users.noreply.github.com> Date: Thu, 26 Jun 2025 16:05:44 +0200 Subject: [PATCH] Add german translations (#1889) --- src/i18n/i18n.config.ts | 2 + src/i18n/locales/de.json | 237 +++++++++++++++++++++++++++++++++++++++ src/nuxt.config.ts | 5 + 3 files changed, 244 insertions(+) create mode 100644 src/i18n/locales/de.json diff --git a/src/i18n/i18n.config.ts b/src/i18n/i18n.config.ts index 4817a841..c5ec4fea 100644 --- a/src/i18n/i18n.config.ts +++ b/src/i18n/i18n.config.ts @@ -1,6 +1,7 @@ import en from './locales/en.json'; import uk from './locales/uk.json'; import fr from './locales/fr.json'; +import de from './locales/de.json'; export default defineI18nConfig(() => ({ legacy: false, @@ -9,5 +10,6 @@ export default defineI18nConfig(() => ({ en, uk, fr, + de, }, })); diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json new file mode 100644 index 00000000..f1abbba2 --- /dev/null +++ b/src/i18n/locales/de.json @@ -0,0 +1,237 @@ +{ + "pages": { + "me": "Konto", + "clients": "Clients", + "admin": { + "panel": "Admin-Konsole", + "general": "Allgemein", + "config": "Konfiguration", + "interface": "Oberfläche", + "hooks": "Hooks" + } + }, + "user": { + "email": "Email" + }, + "me": { + "currentPassword": "Aktuelles Passwort", + "enable2fa": "Zwei-Faktor-Authentifizierunng aktivieren", + "enable2faDesc": "Scannen Sie den QR-Code mit ihrer Authentifizierungs-App oder geben Sie den Schlüssel manuell ein.", + "2faKey": "TOTP-Schlüssel", + "2faCodeDesc": "Geben Sie den Code aus Ihrer Authentifizierungs-App ein.", + "disable2fa": "Zwei-Faktor-Authentifizierung deaktivieren", + "disable2faDesc": "Geben Sie Ihr Passwort ein, um die Zwei-Faktor-Authentifizierung zu deaktivieren." + }, + "general": { + "name": "Name", + "username": "Benutzername", + "password": "Passwort", + "newPassword": "Neues Passwort", + "updatePassword": "Passwort aktualisieren", + "mtu": "MTU", + "allowedIps": "Erlaubte IP-Adressen", + "dns": "DNS", + "persistentKeepalive": "Dauerhaftes Keepalive", + "logout": "Abmelden", + "continue": "Weiter", + "host": "Host", + "port": "Port", + "yes": "Ja", + "no": "Nein", + "confirmPassword": "Passwort bestätigen", + "loading": "Laden...", + "2fa": "Zwei-Faktor-Authentifizierung", + "2faCode": "TOTP-Code" + }, + "setup": { + "welcome": "Willkommen zur Ersteinrichtung von wg-easy", + "welcomeDesc": "Das ist der einfachste Weg, um Wireguard auf jedem Linux-Server zu installieren und zu betreiben.", + "existingSetup": "Haben Sie eine bestehende Einrichtung?", + "createAdminDesc": "Bitte geben Sie zuerst einen Admin-Benutzernamen sowie ein starkes, sicheres Passwort ein. Diese Anmeldedaten benötigen Sie, um sich im Admin-Panel anzumelden.", + "setupConfigDesc": "Bitte geben Sie die Host- und Portinformationen ein. Diese werden für die Client-Konfiguration verwendet, wenn Sie WireGuard auf Ihren Geräten einrichten.", + "setupMigrationDesc": "Bitte halten Sie die Sicherungsdatei bereit, wenn Sie Ihre Daten von Ihrer vorherigen wg-easy Version auf ihre neue Einrichtung migrieren möchten.", + "upload": "Hochladen", + "migration": "Sicherung wiederherstellen:", + "createAccount": "Konto erstellen", + "successful": "Einrichtung erfolgreich", + "hostDesc": "Öffentlicher Hostname mit dem sich die Clients verbinden", + "portDesc": "Öffentlicher UDP-Port an dem sich die Clients verbinden und auf dem Wireguard läuft" + }, + "update": { + "updateAvailable": "Es ist ein neue Aktualisierung verfügbar!", + "update": "Aktualisieren" + }, + "theme": { + "dark": "Dunkles Thema", + "light": "Helles Thema", + "system": "System-Thema" + }, + "layout": { + "toggleCharts": "Statistiken ein-/ausblenden", + "donate": "Spenden" + }, + "login": { + "signIn": "Anmelden", + "rememberMe": "Angemeldet bleiben", + "rememberMeDesc": "Bleiben Sie auch nach dem Schließen des Browsers angemeldet", + "insecure": "Sie können sich nicht über eine unsichere Verbindung anmelden. Bitte benutzen Sie HTTPS.", + "2faRequired": "Zwei-Faktor-Authentifizierung wird benötigt", + "2faWrong": "Zwei-Faktor-Authentifizierung ist fehlgeschlagen" + }, + "client": { + "empty": "Es gibt noch keine Clients.", + "newShort": "Neu", + "sort": "Sortieren", + "create": "Client erstellen", + "created": "Client wurde erstellt", + "new": "Neuer client", + "name": "Name", + "expireDate": "Ablaufdatum", + "expireDateDesc": "Datum, an dem der Client deaktiviert wird. Leer lassen, damit dies nie passiert.", + "deleteClient": "Client löschen", + "deleteDialog1": "Sind Sie sicher, dass Sie diesen Client löschen wollen", + "deleteDialog2": "Diese Aktion kann nicht rückgängig gemacht werden.", + "enabled": "Aktiviert", + "address": "Adresse", + "serverAllowedIps": "serverseitig erlaubte IP-Adressen", + "otlDesc": "Einen kurzen Einmal-Link erzeugen", + "permanent": "Dauerhaft", + "createdOn": "Angelegt am ", + "lastSeen": "Zuletzt verbunden am ", + "totalDownload": "Gesamt-Download: ", + "totalUpload": "Gesamt-Upload: ", + "newClient": "Neuer Client", + "disableClient": "Client deaktivieren", + "enableClient": "Client aktivieren", + "noPrivKey": "Dieser Client hat keinen bekannten privaten Schlüssel, weshalb keine Konfiguration angelegt werden kann.", + "showQR": "QR-Code anzeigen", + "downloadConfig": "Konfiguration herunterladen", + "allowedIpsDesc": "Welche IP-Adressen durch das VPN geleitet werden (überschreibt die globale Konfiguration)", + "serverAllowedIpsDesc": "Welche IP-Adressen der Server zum Client leiten wird", + "mtuDesc": "Setzt die maximale Übertragungsgröße (Paketgröße) für den VPN-Tunnel", + "persistentKeepaliveDesc": "Legt das Intervall (in Sekunden) für Keepalive-Pakete fest. 0 deaktiviert es", + "hooks": "Hooks", + "hooksDescription": "Hooks funktionieren nur mit wg-quick", + "hooksLeaveEmpty": "Nur für wg-quick. Sonst leer lassen", + "dnsDesc": "DNS-Server, den die Clients benutzen (überschreibt die globale Konfiguration)" + }, + "dialog": { + "change": "Ändern", + "cancel": "Abbrechen", + "create": "Erstellen" + }, + "toast": { + "success": "Erfolg", + "saved": "Gespeichert", + "error": "Fehler" + }, + "form": { + "actions": "Aktionen", + "save": "Speichern", + "revert": "Rückgängig machen", + "sectionGeneral": "Allgemein", + "sectionAdvanced": "Erweitert", + "noItems": "Keine Einträge", + "nullNoItems": "Keine Einträge. Die globale Konfiguration wird benutzt", + "add": "Hinzufügen" + }, + "admin": { + "general": { + "sessionTimeout": "Sitzungszeitüberschreitung", + "sessionTimeoutDesc": "Sitzungsdauer für \"Angemeldet bleiben\" (Sekunden)", + "metrics": "Statistiken", + "metricsPassword": "Passwort", + "metricsPasswordDesc": "Bearer-Passwort für den Statistik-Endpunkt (Passwort oder Argon2-Hash)", + "json": "JSON", + "jsonDesc": "Pfad zu den Statistiken als JSON", + "prometheus": "Prometheus", + "prometheusDesc": "Pfad zu den Prometheus-Statistiken" + }, + "config": { + "connection": "Verbindung", + "hostDesc": "Öffentlicher Hostname mit dem sich die Clients verbinden (überschreibt die Konfiguration)", + "portDesc": "Öffentlicher UDP-Port an dem sich die Clients verbinden (überschreibt die Konfiguration, vermutlich wollen Sie ebenfalls den Port der Weboberfläche ändern)", + "allowedIpsDesc": "Erlaubte IP-Adressen, die die Clients nutzen werden (Globale Konfiguration)", + "dnsDesc": "DNS-Server, den die Clients nutzen werden (Globale Konfiguration)", + "mtuDesc": "MTU, den die Clients benutzen werden (nur für neue Clients)", + "persistentKeepaliveDesc": "Intervall in Sekunden, in dem Keepalive-Packete an den Server gesendet werden. 0 = deaktiviert (nur für neue Clients)", + "suggest": "Vorschlagen", + "suggestDesc": "Wählen Sie eine IP-Adresse oder einen Hostnamen für das Host-Feld aus" + }, + "interface": { + "cidrSuccess": "CIDR wurde geändert", + "device": "Gerät", + "deviceDesc": "Ethernet-Gerät, durch das der Wireguard-Datenverkehr geleitet werden soll", + "mtuDesc": "MTU, den WireGuard benutzen wird", + "portDesc": "UDP Port, auf dem WireGuard lauschen wird (Sie wollen wahrscheinlich auch den Config-Port ändern)", + "changeCidr": "CIDR ändern", + "restart": "Interface neu starten", + "restartDesc": "Das WireGuard-Interface neu starten", + "restartWarn": "Sind Sie sicher, dass Sie das Interface neu starten wollen? Dies wird die Verbindungen aller Clients trennen.", + "restartSuccess": "Interface neu gestartet" + }, + "introText": "Willkommen in der Admin-Konsole.\n\nHier können Sie die allgemeinen Einstellungen, die Konfiguration, die Schnittstelleneinstellungen und die Hooks verwalten.\n\nBeginnen Sie, indem Sie einen der Bereiche in der Seitenleiste auswählen." + }, + "zod": { + "generic": { + "required": "{0} ist erforderlich", + "validNumber": "{0} muss eine Zahl sein", + "validString": "{0} muss eine Zeichenkette sein", + "validBoolean": "{0} muss ein Wahrheitswert sein", + "validArray": "{0} muss eine Liste sein", + "stringMin": "{0} muss mindestens {1} Zeichen lang sein", + "numberMin": "{0} muss mindestens {1} sein" + }, + "client": { + "id": "Client-ID", + "name": "Name", + "expiresAt": "Läuft ab am", + "address4": "IPv4-Adresse", + "address6": "IPv6-Adresse", + "serverAllowedIps": "serverseitig erlaubte IP-Adressen" + }, + "user": { + "username": "Benutzername", + "password": "Passwort", + "remember": "Merken", + "name": "Name", + "email": "Email", + "emailInvalid": "Die Email-Adresse muss valide sein", + "passwordMatch": "Die Passwörter müssen übereinstimmen", + "totpEnable": "TOTP aktivieren", + "totpEnableTrue": "\"TOTP aktivieren\" muss ausgewählt sein", + "totpCode": "TOTP-Code" + }, + "userConfig": { + "host": "Host" + }, + "general": { + "sessionTimeout": "Sitzungszeitüberschreitung", + "metricsEnabled": "Statistiken", + "metricsPassword": "Passwort für Statistiken" + }, + "interface": { + "cidr": "CIDR", + "device": "Geräte", + "cidrValid": "CIDR muss valide sein" + }, + "otl": "Einmal-Link", + "stringMalformed": "Zeichenkette ist fehlerhaft", + "body": "Body muss ein gültiges Objekt sein", + "hook": "Hook", + "enabled": "Aktiviert", + "mtu": "MTU", + "port": "Port", + "persistentKeepalive": "Dauerhaftes Keepalive", + "address": "IP-Adresse", + "dns": "DNS", + "allowedIps": "Erlaubte IP-Adressen", + "file": "Datei" + }, + "hooks": { + "preUp": "PreUp", + "postUp": "PostUp", + "preDown": "PreDown", + "postDown": "PostDown" + } +} diff --git a/src/nuxt.config.ts b/src/nuxt.config.ts index 95febabb..798c97e5 100644 --- a/src/nuxt.config.ts +++ b/src/nuxt.config.ts @@ -44,6 +44,11 @@ export default defineNuxtConfig({ language: 'fr-FR', name: 'Français', }, + { + code: 'de', + language: 'de-DE', + name: 'Deutsch', + }, ], defaultLocale: 'en', vueI18n: './i18n.config.ts',