diff --git a/.gitignore b/.gitignore index 5ee3dbb..3539455 100755 --- a/.gitignore +++ b/.gitignore @@ -135,6 +135,7 @@ tasks/ !src/i18n/locales/en/tasks.json !src/i18n/locales/ja/tasks.json !src/i18n/locales/ru/tasks.json +!src/i18n/locales/de/tasks.json # Git worktrees .worktrees/ \ No newline at end of file diff --git a/src/i18n/config.js b/src/i18n/config.js index 250c680..bfc9cd5 100644 --- a/src/i18n/config.js +++ b/src/i18n/config.js @@ -58,6 +58,15 @@ import ruCodeEditor from './locales/ru/codeEditor.json'; // eslint-disable-next-line import-x/order import ruTasks from './locales/ru/tasks.json'; +import deCommon from './locales/de/common.json'; +import deSettings from './locales/de/settings.json'; +import deAuth from './locales/de/auth.json'; +import deSidebar from './locales/de/sidebar.json'; +import deChat from './locales/de/chat.json'; +import deCodeEditor from './locales/de/codeEditor.json'; +// eslint-disable-next-line import-x/order +import deTasks from './locales/de/tasks.json'; + // Import supported languages configuration import { languages } from './languages.js'; @@ -125,6 +134,15 @@ i18n codeEditor: ruCodeEditor, tasks: ruTasks, }, + de: { + common: deCommon, + settings: deSettings, + auth: deAuth, + sidebar: deSidebar, + chat: deChat, + codeEditor: deCodeEditor, + tasks: deTasks, + }, }, // Default language diff --git a/src/i18n/languages.js b/src/i18n/languages.js index dd24dd7..d9bcc29 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js @@ -34,6 +34,11 @@ export const languages = [ label: 'Russian', nativeName: 'Русский', }, + { + value: 'de', + label: 'German', + nativeName: 'Deutsch', + }, ]; /** diff --git a/src/i18n/locales/de/auth.json b/src/i18n/locales/de/auth.json new file mode 100644 index 0000000..9b8327c --- /dev/null +++ b/src/i18n/locales/de/auth.json @@ -0,0 +1,37 @@ +{ + "login": { + "title": "Willkommen zurück", + "description": "Meld dich bei deinem Claude Code UI-Konto an", + "username": "Benutzername", + "password": "Passwort", + "submit": "Anmelden", + "loading": "Wird angemeldet...", + "errors": { + "invalidCredentials": "Ungültiger Benutzername oder Passwort", + "requiredFields": "Bitte alle Felder ausfüllen", + "networkError": "Netzwerkfehler. Bitte erneut versuchen." + }, + "placeholders": { + "username": "Benutzernamen eingeben", + "password": "Passwort eingeben" + } + }, + "register": { + "title": "Konto erstellen", + "username": "Benutzername", + "password": "Passwort", + "confirmPassword": "Passwort bestätigen", + "submit": "Konto erstellen", + "loading": "Konto wird erstellt...", + "errors": { + "passwordMismatch": "Passwörter stimmen nicht überein", + "usernameTaken": "Benutzername ist bereits vergeben", + "weakPassword": "Passwort ist zu schwach" + } + }, + "logout": { + "title": "Abmelden", + "confirm": "Möchtest du dich wirklich abmelden?", + "button": "Abmelden" + } +} diff --git a/src/i18n/locales/de/chat.json b/src/i18n/locales/de/chat.json new file mode 100644 index 0000000..4d978bc --- /dev/null +++ b/src/i18n/locales/de/chat.json @@ -0,0 +1,272 @@ +{ + "codeBlock": { + "copy": "Kopieren", + "copied": "Kopiert", + "copyCode": "Code kopieren" + }, + "copyMessage": { + "copy": "Nachricht kopieren", + "copied": "Nachricht kopiert", + "selectFormat": "Kopierformat auswählen", + "copyAsMarkdown": "Als Markdown kopieren", + "copyAsText": "Als Text kopieren" + }, + "messageTypes": { + "user": "Benutzer:in", + "error": "Fehler", + "tool": "Werkzeug", + "claude": "Claude", + "cursor": "Cursor", + "codex": "Codex", + "gemini": "Gemini" + }, + "tools": { + "settings": "Werkzeugeinstellungen", + "error": "Werkzeugfehler", + "result": "Werkzeugergebnis", + "viewParams": "Eingabeparameter anzeigen", + "viewRawParams": "Rohe Parameter anzeigen", + "viewDiff": "Bearbeitungs-Diff anzeigen für", + "creatingFile": "Neue Datei wird erstellt:", + "updatingTodo": "Aufgabenliste wird aktualisiert", + "read": "Gelesen", + "readFile": "Datei lesen", + "updateTodo": "Aufgabenliste aktualisieren", + "readTodo": "Aufgabenliste lesen", + "searchResults": "Ergebnisse" + }, + "search": { + "found": "{{count}} {{type}} gefunden", + "file": "Datei", + "files": "Dateien", + "pattern": "Muster:", + "in": "in:" + }, + "fileOperations": { + "updated": "Datei erfolgreich aktualisiert", + "created": "Datei erfolgreich erstellt", + "written": "Datei erfolgreich geschrieben", + "diff": "Diff", + "newFile": "Neue Datei", + "viewContent": "Dateiinhalt anzeigen", + "viewFullOutput": "Vollständige Ausgabe anzeigen ({{count}} Zeichen)", + "contentDisplayed": "Der Dateiinhalt wird in der Diff-Ansicht oben angezeigt" + }, + "interactive": { + "title": "Interaktive Eingabeaufforderung", + "waiting": "Warte auf deine Antwort in der CLI", + "instruction": "Bitte wähl eine Option in deinem Terminal, in dem Claude läuft.", + "selectedOption": "✓ Claude hat Option {{number}} ausgewählt", + "instructionDetail": "In der CLI würdest du diese Option interaktiv mit den Pfeiltasten oder durch Eingabe der Nummer auswählen." + }, + "thinking": { + "title": "Denkt nach...", + "emoji": "💭 Denkt nach..." + }, + "json": { + "response": "JSON-Antwort" + }, + "permissions": { + "grant": "Berechtigung für {{tool}} erteilen", + "added": "Berechtigung hinzugefügt", + "addTo": "Fügt {{entry}} zu erlaubten Werkzeugen hinzu.", + "retry": "Berechtigung gespeichert. Wiederhole die Anfrage, um das Werkzeug zu verwenden.", + "error": "Berechtigungen konnten nicht aktualisiert werden. Bitte erneut versuchen.", + "openSettings": "Einstellungen öffnen" + }, + "todo": { + "updated": "Aufgabenliste wurde erfolgreich aktualisiert", + "current": "Aktuelle Aufgabenliste" + }, + "plan": { + "viewPlan": "📋 Implementierungsplan anzeigen", + "title": "Implementierungsplan" + }, + "usageLimit": { + "resetAt": "Claude-Nutzungslimit erreicht. Dein Limit wird um **{{time}} {{timezone}}** zurückgesetzt - {{date}}" + }, + "codex": { + "permissionMode": "Berechtigungsmodus", + "modes": { + "default": "Standardmodus", + "acceptEdits": "Bearbeitungen akzeptieren", + "bypassPermissions": "Berechtigungen umgehen", + "plan": "Planungsmodus" + }, + "descriptions": { + "default": "Nur vertrauenswürdige Befehle (ls, cat, grep, git status usw.) werden automatisch ausgeführt. Andere Befehle werden übersprungen. Kann in den Arbeitsbereich schreiben.", + "acceptEdits": "Alle Befehle werden automatisch innerhalb des Arbeitsbereichs ausgeführt. Vollautomatischer Modus mit isolierter Ausführung.", + "bypassPermissions": "Vollständiger Systemzugriff ohne Einschränkungen. Alle Befehle werden automatisch mit vollem Festplatten- und Netzwerkzugriff ausgeführt. Mit Vorsicht verwenden.", + "plan": "Planungsmodus – keine Befehle werden ausgeführt" + }, + "technicalDetails": "Technische Details" + }, + "gemini": { + "permissionMode": "Gemini-Berechtigungsmodus", + "description": "Steuert, wie Gemini CLI Vorgangsgenehmigungen handhabt.", + "modes": { + "default": { + "title": "Standard (Genehmigung erforderlich)", + "description": "Gemini fordert vor der Ausführung von Befehlen, dem Schreiben von Dateien und dem Abrufen von Web-Ressourcen eine Genehmigung an." + }, + "autoEdit": { + "title": "Auto-Bearbeitung (Dateigenehmigungen überspringen)", + "description": "Gemini genehmigt automatisch Dateibearbeitungen und Web-Abrufe, fragt aber weiterhin bei Shell-Befehlen nach." + }, + "yolo": { + "title": "YOLO (Alle Berechtigungen umgehen)", + "description": "Gemini führt alle Vorgänge ohne Rückfrage aus. Vorsicht ist geboten." + } + } + }, + "input": { + "placeholder": "/ für Befehle, @ für Dateien eingeben oder {{provider}} etwas fragen...", + "placeholderDefault": "Nachricht eingeben...", + "disabled": "Eingabe deaktiviert", + "attachFiles": "Dateien anhängen", + "attachImages": "Bilder anhängen", + "send": "Senden", + "stop": "Stoppen", + "hintText": { + "ctrlEnter": "Strg+Enter zum Senden • Shift+Enter für neue Zeile • Tab zum Moduswechsel • / für Slash-Befehle", + "enter": "Enter zum Senden • Shift+Enter für neue Zeile • Tab zum Moduswechsel • / für Slash-Befehle" + }, + "clickToChangeMode": "Klicken, um den Berechtigungsmodus zu ändern (oder Tab in der Eingabe drücken)", + "showAllCommands": "Alle Befehle anzeigen", + "clearInput": "Eingabe leeren", + "scrollToBottom": "Nach unten scrollen" + }, + "thinkingMode": { + "selector": { + "title": "Denkmodus", + "description": "Erweitertes Denken gibt Claude mehr Zeit, Alternativen zu evaluieren", + "active": "Aktiv", + "tip": "Höhere Denkmodi brauchen mehr Zeit, liefern aber eine gründlichere Analyse" + }, + "modes": { + "none": { + "name": "Standard", + "description": "Reguläre Claude-Antwort", + "prefix": "" + }, + "think": { + "name": "Denken", + "description": "Grundlegendes erweitertes Denken", + "prefix": "think" + }, + "thinkHard": { + "name": "Intensiv denken", + "description": "Gründlichere Auswertung", + "prefix": "think hard" + }, + "thinkHarder": { + "name": "Sehr intensiv denken", + "description": "Tiefgehende Analyse mit Alternativen", + "prefix": "think harder" + }, + "ultrathink": { + "name": "Ultradenken", + "description": "Maximales Denkbudget", + "prefix": "ultrathink" + } + }, + "buttonTitle": "Denkmodus: {{mode}}" + }, + "providerSelection": { + "title": "KI-Assistent wählen", + "description": "Anbieter auswählen, um eine neue Unterhaltung zu starten", + "selectModel": "Modell auswählen", + "providerInfo": { + "anthropic": "von Anthropic", + "openai": "von OpenAI", + "cursorEditor": "KI-Code-Editor", + "google": "von Google" + }, + "readyPrompt": { + "claude": "Bereit, Claude mit {{model}} zu verwenden. Gib unten deine Nachricht ein.", + "cursor": "Bereit, Cursor mit {{model}} zu verwenden. Gib unten deine Nachricht ein.", + "codex": "Bereit, Codex mit {{model}} zu verwenden. Gib unten deine Nachricht ein.", + "gemini": "Bereit, Gemini mit {{model}} zu verwenden. Gib unten deine Nachricht ein.", + "default": "Wähl oben einen Anbieter, um zu beginnen" + } + }, + "session": { + "continue": { + "title": "Unterhaltung fortsetzen", + "description": "Stell Fragen zu deinem Code, fordere Änderungen an oder hol Hilfe bei Entwicklungsaufgaben" + }, + "loading": { + "olderMessages": "Ältere Nachrichten werden geladen...", + "sessionMessages": "Sitzungsnachrichten werden geladen..." + }, + "messages": { + "showingOf": "{{shown}} von {{total}} Nachrichten werden angezeigt", + "scrollToLoad": "Nach oben scrollen, um mehr zu laden", + "showingLast": "Letzte {{count}} Nachrichten werden angezeigt ({{total}} gesamt)", + "loadEarlier": "Frühere Nachrichten laden", + "loadAll": "Alle Nachrichten laden", + "loadingAll": "Alle Nachrichten werden geladen...", + "allLoaded": "Alle Nachrichten geladen", + "perfWarning": "Alle Nachrichten geladen – Scrollen kann langsamer sein. Klick auf 'Nach unten scrollen', um die Leistung wiederherzustellen." + } + }, + "shell": { + "selectProject": { + "title": "Projekt auswählen", + "description": "Wähl ein Projekt, um ein interaktives Terminal in diesem Verzeichnis zu öffnen" + }, + "status": { + "newSession": "Neue Sitzung", + "initializing": "Wird initialisiert...", + "restarting": "Wird neu gestartet..." + }, + "actions": { + "disconnect": "Trennen", + "disconnectTitle": "Vom Terminal trennen", + "restart": "Neu starten", + "restartTitle": "Terminal neu starten (zuerst trennen)", + "connect": "Im Terminal fortfahren", + "connectTitle": "Mit Terminal verbinden" + }, + "loading": "Terminal wird geladen...", + "connecting": "Verbindung zum Terminal wird hergestellt...", + "startSession": "Neue Claude-Sitzung starten", + "resumeSession": "Sitzung fortsetzen: {{displayName}}...", + "runCommand": "{{command}} in {{projectName}} ausführen", + "startCli": "Claude CLI wird in {{projectName}} gestartet", + "defaultCommand": "Befehl" + }, + "claudeStatus": { + "actions": { + "thinking": "Denkt nach", + "processing": "Verarbeitet", + "analyzing": "Analysiert", + "working": "Arbeitet", + "computing": "Berechnet", + "reasoning": "Schlussfolgert" + }, + "state": { + "live": "Live", + "paused": "Pausiert" + }, + "elapsed": { + "seconds": "{{count}}s", + "minutesSeconds": "{{minutes}}m {{seconds}}s", + "label": "{{time}} vergangen", + "startingNow": "Startet jetzt" + }, + "controls": { + "stopGeneration": "Generierung stoppen", + "pressEscToStop": "Jederzeit Esc drücken, um zu stoppen" + }, + "providers": { + "assistant": "Assistent" + } + }, + "projectSelection": { + "startChatWithProvider": "Wähl ein Projekt, um mit {{provider}} zu chatten" + }, + "tasks": { + "nextTaskPrompt": "Nächste Aufgabe starten" + } +} diff --git a/src/i18n/locales/de/codeEditor.json b/src/i18n/locales/de/codeEditor.json new file mode 100644 index 0000000..d59b24e --- /dev/null +++ b/src/i18n/locales/de/codeEditor.json @@ -0,0 +1,36 @@ +{ + "toolbar": { + "changes": "Änderungen", + "previousChange": "Vorherige Änderung", + "nextChange": "Nächste Änderung", + "hideDiff": "Diff-Hervorhebung ausblenden", + "showDiff": "Diff-Hervorhebung anzeigen", + "settings": "Editor-Einstellungen", + "collapse": "Editor einklappen", + "expand": "Editor auf volle Breite erweitern" + }, + "loading": "{{fileName}} wird geladen...", + "header": { + "showingChanges": "Änderungen werden angezeigt" + }, + "actions": { + "download": "Datei herunterladen", + "save": "Speichern", + "saving": "Wird gespeichert...", + "saved": "Gespeichert!", + "exitFullscreen": "Vollbild beenden", + "fullscreen": "Vollbild", + "close": "Schließen", + "previewMarkdown": "Markdown-Vorschau", + "editMarkdown": "Markdown bearbeiten" + }, + "footer": { + "lines": "Zeilen:", + "characters": "Zeichen:", + "shortcuts": "Strg+S zum Speichern • Esc zum Schließen" + }, + "binaryFile": { + "title": "Binärdatei", + "message": "Die Datei \"{{fileName}}\" kann im Texteditor nicht angezeigt werden, da es sich um eine Binärdatei handelt." + } +} diff --git a/src/i18n/locales/de/common.json b/src/i18n/locales/de/common.json new file mode 100644 index 0000000..a3afa5a --- /dev/null +++ b/src/i18n/locales/de/common.json @@ -0,0 +1,238 @@ +{ + "buttons": { + "save": "Speichern", + "cancel": "Abbrechen", + "delete": "Löschen", + "create": "Erstellen", + "edit": "Bearbeiten", + "close": "Schließen", + "confirm": "Bestätigen", + "submit": "Absenden", + "retry": "Erneut versuchen", + "refresh": "Aktualisieren", + "search": "Suchen", + "clear": "Leeren", + "copy": "Kopieren", + "download": "Herunterladen", + "upload": "Hochladen", + "browse": "Durchsuchen" + }, + "tabs": { + "chat": "Chat", + "shell": "Terminal", + "files": "Dateien", + "git": "Quellcodeverwaltung", + "tasks": "Aufgaben" + }, + "status": { + "loading": "Lädt...", + "success": "Erfolgreich", + "error": "Fehler", + "failed": "Fehlgeschlagen", + "pending": "Ausstehend", + "completed": "Abgeschlossen", + "inProgress": "In Bearbeitung" + }, + "messages": { + "savedSuccessfully": "Erfolgreich gespeichert", + "deletedSuccessfully": "Erfolgreich gelöscht", + "updatedSuccessfully": "Erfolgreich aktualisiert", + "operationFailed": "Vorgang fehlgeschlagen", + "networkError": "Netzwerkfehler. Bitte überprüf deine Verbindung.", + "unauthorized": "Nicht autorisiert. Bitte meld dich an.", + "notFound": "Nicht gefunden", + "invalidInput": "Ungültige Eingabe", + "requiredField": "Dieses Feld ist erforderlich", + "unknownError": "Ein unbekannter Fehler ist aufgetreten" + }, + "navigation": { + "settings": "Einstellungen", + "home": "Startseite", + "back": "Zurück", + "next": "Weiter", + "previous": "Zurück", + "logout": "Abmelden" + }, + "common": { + "language": "Sprache", + "theme": "Design", + "darkMode": "Darkmode", + "lightMode": "Hellmodus", + "name": "Name", + "description": "Beschreibung", + "enabled": "Aktiviert", + "disabled": "Deaktiviert", + "optional": "Optional", + "version": "Version", + "select": "Auswählen", + "selectAll": "Alle auswählen", + "deselectAll": "Alle abwählen" + }, + "time": { + "justNow": "Gerade eben", + "minutesAgo": "vor {{count}} Min.", + "hoursAgo": "vor {{count}} Std.", + "daysAgo": "vor {{count}} Tagen", + "yesterday": "Gestern" + }, + "fileOperations": { + "newFile": "Neue Datei", + "newFolder": "Neuer Ordner", + "rename": "Umbenennen", + "move": "Verschieben", + "copyPath": "Pfad kopieren", + "openInEditor": "Im Editor öffnen" + }, + "mainContent": { + "loading": "Claude Code UI wird geladen", + "settingUpWorkspace": "Arbeitsbereich wird eingerichtet...", + "chooseProject": "Projekt auswählen", + "selectProjectDescription": "Wähl ein Projekt aus der Seitenleiste, um mit Claude zu programmieren. Jedes Projekt enthält deine Chat-Sitzungen und den Dateiverlauf.", + "tip": "Tipp", + "createProjectMobile": "Tipp oben auf die Menüschaltfläche, um auf Projekte zuzugreifen", + "createProjectDesktop": "Erstell ein neues Projekt, indem du auf das Ordnersymbol in der Seitenleiste klickst", + "newSession": "Neue Sitzung", + "untitledSession": "Unbenannte Sitzung", + "projectFiles": "Projektdateien" + }, + "fileTree": { + "loading": "Dateien werden geladen...", + "files": "Dateien", + "simpleView": "Einfache Ansicht", + "compactView": "Kompakte Ansicht", + "detailedView": "Detailansicht", + "searchPlaceholder": "Dateien und Ordner durchsuchen...", + "clearSearch": "Suche leeren", + "name": "Name", + "size": "Größe", + "modified": "Geändert", + "permissions": "Berechtigungen", + "noFilesFound": "Keine Dateien gefunden", + "checkProjectPath": "Überprüf, ob der Projektpfad zugänglich ist", + "noMatchesFound": "Keine Treffer gefunden", + "tryDifferentSearch": "Versuch einen anderen Suchbegriff oder leere die Suche", + "justNow": "gerade eben", + "minAgo": "vor {{count}} Min.", + "hoursAgo": "vor {{count}} Std.", + "daysAgo": "vor {{count}} Tagen", + "newFile": "Neue Datei (Cmd+N)", + "newFolder": "Neuer Ordner (Cmd+Shift+N)", + "refresh": "Aktualisieren", + "collapseAll": "Alle einklappen", + "context": { + "rename": "Umbenennen", + "delete": "Löschen", + "copyPath": "Pfad kopieren", + "download": "Herunterladen", + "newFile": "Neue Datei", + "newFolder": "Neuer Ordner", + "refresh": "Aktualisieren", + "menuLabel": "Datei-Kontextmenü", + "loading": "Lädt..." + } + }, + "projectWizard": { + "title": "Neues Projekt erstellen", + "steps": { + "type": "Typ", + "configure": "Konfigurieren", + "confirm": "Bestätigen" + }, + "step1": { + "question": "Hast du bereits einen Arbeitsbereich, oder möchtest du einen neuen erstellen?", + "existing": { + "title": "Vorhandener Arbeitsbereich", + "description": "Ich habe bereits einen Arbeitsbereich auf meinem Server und möchte ihn nur zur Projektliste hinzufügen" + }, + "new": { + "title": "Neuer Arbeitsbereich", + "description": "Einen neuen Arbeitsbereich erstellen, optional aus einem GitHub-Repository klonen" + } + }, + "step2": { + "existingPath": "Arbeitsbereichspfad", + "newPath": "Arbeitsbereichspfad", + "existingPlaceholder": "/Pfad/zum/vorhandenen/Arbeitsbereich", + "newPlaceholder": "/Pfad/zum/neuen/Arbeitsbereich", + "existingHelp": "Vollständiger Pfad zu deinem vorhandenen Arbeitsbereichsverzeichnis", + "newHelp": "Vollständiger Pfad zu deinem Arbeitsbereichsverzeichnis", + "githubUrl": "GitHub-URL (Optional)", + "githubPlaceholder": "https://github.com/benutzername/repository", + "githubHelp": "Optional: GitHub-URL angeben, um ein Repository zu klonen", + "githubAuth": "GitHub-Authentifizierung (Optional)", + "githubAuthHelp": "Nur für private Repositories erforderlich. Öffentliche Repos können ohne Authentifizierung geklont werden.", + "loadingTokens": "Gespeicherte Token werden geladen...", + "storedToken": "Gespeicherter Token", + "newToken": "Neuer Token", + "nonePublic": "Keiner (Öffentlich)", + "selectToken": "Token auswählen", + "selectTokenPlaceholder": "-- Token auswählen --", + "tokenPlaceholder": "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", + "tokenHelp": "Dieser Token wird nur für diesen Vorgang verwendet", + "publicRepoInfo": "Öffentliche Repositories benötigen keine Authentifizierung. Du kannst das Token beim Klonen eines öffentlichen Repos weglassen.", + "noTokensHelp": "Keine gespeicherten Token verfügbar. Du kannst Token unter Einstellungen → API-Schlüssel für einfachere Wiederverwendung hinzufügen.", + "optionalTokenPublic": "GitHub-Token (Optional für öffentliche Repos)", + "tokenPublicPlaceholder": "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (leer lassen für öffentliche Repos)" + }, + "step3": { + "reviewConfig": "Konfiguration überprüfen", + "workspaceType": "Arbeitsbereichstyp:", + "existingWorkspace": "Vorhandener Arbeitsbereich", + "newWorkspace": "Neuer Arbeitsbereich", + "path": "Pfad:", + "cloneFrom": "Klonen von:", + "authentication": "Authentifizierung:", + "usingStoredToken": "Gespeicherter Token wird verwendet:", + "usingProvidedToken": "Angegebener Token wird verwendet", + "noAuthentication": "Keine Authentifizierung", + "sshKey": "SSH-Schlüssel", + "existingInfo": "Der Arbeitsbereich wird zur Projektliste hinzugefügt und steht für Claude/Cursor-Sitzungen zur Verfügung.", + "newWithClone": "Das Repository wird aus diesem Ordner geklont.", + "newEmpty": "Der Arbeitsbereich wird zur Projektliste hinzugefügt und steht für Claude/Cursor-Sitzungen zur Verfügung.", + "cloningRepository": "Repository wird geklont..." + }, + "buttons": { + "cancel": "Abbrechen", + "back": "Zurück", + "next": "Weiter", + "createProject": "Projekt erstellen", + "creating": "Wird erstellt...", + "cloning": "Wird geklont..." + }, + "errors": { + "selectType": "Bitte wähl aus, ob du einen vorhandenen Arbeitsbereich hast oder einen neuen erstellen möchtest", + "providePath": "Bitte gib einen Arbeitsbereichspfad an", + "failedToCreate": "Arbeitsbereich konnte nicht erstellt werden", + "failedToCreateFolder": "Ordner konnte nicht erstellt werden" + } + }, + "versionUpdate": { + "title": "Update verfügbar", + "newVersionReady": "Eine neue Version ist verfügbar", + "currentVersion": "Aktuelle Version", + "latestVersion": "Neueste Version", + "whatsNew": "Neuigkeiten:", + "viewFullRelease": "Vollständige Version anzeigen", + "updateProgress": "Update-Fortschritt:", + "manualUpgrade": "Manuelles Upgrade:", + "npmUpgradeCommand": "npm install -g @siteboon/claude-code-ui@latest", + "manualUpgradeHint": "Oder klick auf \"Jetzt aktualisieren\", um das Update automatisch durchzuführen.", + "updateCompleted": "Update erfolgreich abgeschlossen!", + "restartServer": "Bitte starte den Server neu, um die Änderungen anzuwenden.", + "updateFailed": "Update fehlgeschlagen", + "buttons": { + "close": "Schließen", + "later": "Später", + "copyCommand": "Befehl kopieren", + "updateNow": "Jetzt aktualisieren", + "updating": "Wird aktualisiert..." + }, + "ariaLabels": { + "closeModal": "Versions-Update-Modal schließen", + "showSidebar": "Seitenleiste anzeigen", + "settings": "Einstellungen", + "updateAvailable": "Update verfügbar", + "closeSidebar": "Seitenleiste schließen" + } + } +} diff --git a/src/i18n/locales/de/settings.json b/src/i18n/locales/de/settings.json new file mode 100644 index 0000000..25c289d --- /dev/null +++ b/src/i18n/locales/de/settings.json @@ -0,0 +1,474 @@ +{ + "title": "Einstellungen", + "tabs": { + "account": "Konto", + "permissions": "Berechtigungen", + "mcpServers": "MCP-Server", + "appearance": "Darstellung" + }, + "account": { + "title": "Konto", + "language": "Sprache", + "languageLabel": "Anzeigesprache", + "languageDescription": "Wähl deine bevorzugte Sprache für die Oberfläche", + "username": "Benutzername", + "email": "E-Mail", + "profile": "Profil", + "changePassword": "Passwort ändern" + }, + "mcp": { + "title": "MCP-Server", + "addServer": "Server hinzufügen", + "editServer": "Server bearbeiten", + "deleteServer": "Server löschen", + "serverName": "Servername", + "serverType": "Servertyp", + "config": "Konfiguration", + "testConnection": "Verbindung testen", + "status": "Status", + "connected": "Verbunden", + "disconnected": "Getrennt", + "scope": { + "label": "Geltungsbereich", + "user": "Benutzer:in", + "project": "Projekt" + } + }, + "appearance": { + "title": "Darstellung", + "theme": "Design", + "codeEditor": "Code-Editor", + "editorTheme": "Editor-Design", + "wordWrap": "Zeilenumbruch", + "showMinimap": "Minimap anzeigen", + "lineNumbers": "Zeilennummern", + "fontSize": "Schriftgröße" + }, + "actions": { + "saveChanges": "Änderungen speichern", + "resetToDefaults": "Auf Standardwerte zurücksetzen", + "cancelChanges": "Änderungen abbrechen" + }, + "quickSettings": { + "title": "Schnelleinstellungen", + "sections": { + "appearance": "Darstellung", + "toolDisplay": "Werkzeuganzeige", + "viewOptions": "Anzeigeoptionen", + "inputSettings": "Eingabeeinstellungen", + "whisperDictation": "Whisper-Diktat" + }, + "darkMode": "Darkmode", + "autoExpandTools": "Werkzeuge automatisch erweitern", + "showRawParameters": "Rohe Parameter anzeigen", + "showThinking": "Denken anzeigen", + "autoScrollToBottom": "Automatisch nach unten scrollen", + "sendByCtrlEnter": "Mit Strg+Enter senden", + "sendByCtrlEnterDescription": "Wenn aktiviert, sendet Strg+Enter die Nachricht anstelle von Enter. Dies ist nützlich für IME-Benutzer:innen, um versehentliches Senden zu vermeiden.", + "dragHandle": { + "dragging": "Handle wird gezogen", + "closePanel": "Einstellungspanel schließen", + "openPanel": "Einstellungspanel öffnen", + "draggingStatus": "Wird gezogen...", + "toggleAndMove": "Klicken zum Umschalten, ziehen zum Verschieben" + }, + "whisper": { + "modes": { + "default": "Standardmodus", + "defaultDescription": "Direkte Transkription deiner Sprache", + "prompt": "Prompt-Verbesserung", + "promptDescription": "Rohe Ideen in klare, detaillierte KI-Prompts umwandeln", + "vibe": "Vibe-Modus", + "vibeDescription": "Ideen als klare Agentenanweisungen mit Details formatieren" + } + } + }, + "terminalShortcuts": { + "title": "Terminal-Tastenkürzel", + "sectionKeys": "Tasten", + "sectionNavigation": "Navigation", + "escape": "Escape", + "tab": "Tab", + "shiftTab": "Shift+Tab", + "arrowUp": "Pfeil oben", + "arrowDown": "Pfeil unten", + "scrollDown": "Nach unten scrollen", + "handle": { + "closePanel": "Tastenkürzel-Panel schließen", + "openPanel": "Tastenkürzel-Panel öffnen" + } + }, + "mainTabs": { + "label": "Einstellungen", + "agents": "Agenten", + "appearance": "Darstellung", + "git": "Git", + "apiTokens": "API & Token", + "tasks": "Aufgaben", + "plugins": "Plugins" + }, + "appearanceSettings": { + "darkMode": { + "label": "Darkmode", + "description": "Zwischen hellem und dunklem Design wechseln" + }, + "projectSorting": { + "label": "Projektsortierung", + "description": "Wie Projekte in der Seitenleiste angeordnet werden", + "alphabetical": "Alphabetisch", + "recentActivity": "Letzte Aktivität" + }, + "codeEditor": { + "title": "Code-Editor", + "theme": { + "label": "Editor-Design", + "description": "Standarddesign für den Code-Editor" + }, + "wordWrap": { + "label": "Zeilenumbruch", + "description": "Zeilenumbruch standardmäßig im Editor aktivieren" + }, + "showMinimap": { + "label": "Minimap anzeigen", + "description": "Minimap zur einfacheren Navigation in der Diff-Ansicht anzeigen" + }, + "lineNumbers": { + "label": "Zeilennummern anzeigen", + "description": "Zeilennummern im Editor anzeigen" + }, + "fontSize": { + "label": "Schriftgröße", + "description": "Editor-Schriftgröße in Pixeln" + } + } + }, + "mcpForm": { + "title": { + "add": "MCP-Server hinzufügen", + "edit": "MCP-Server bearbeiten" + }, + "importMode": { + "form": "Formulareingabe", + "json": "JSON-Import" + }, + "scope": { + "label": "Geltungsbereich", + "userGlobal": "Benutzer:in (Global)", + "projectLocal": "Projekt (Lokal)", + "userDescription": "Benutzerbereich: Auf allen Projekten deines Computers verfügbar", + "projectDescription": "Lokaler Bereich: Nur im ausgewählten Projekt verfügbar", + "cannotChange": "Der Geltungsbereich kann beim Bearbeiten eines vorhandenen Servers nicht geändert werden" + }, + "fields": { + "serverName": "Servername", + "transportType": "Transporttyp", + "command": "Befehl", + "arguments": "Argumente (eines pro Zeile)", + "jsonConfig": "JSON-Konfiguration", + "url": "URL", + "envVars": "Umgebungsvariablen (SCHLÜSSEL=Wert, eine pro Zeile)", + "headers": "Header (SCHLÜSSEL=Wert, eine pro Zeile)", + "selectProject": "Projekt auswählen..." + }, + "placeholders": { + "serverName": "mein-server" + }, + "validation": { + "missingType": "Pflichtfeld fehlt: type", + "stdioRequiresCommand": "stdio-Typ erfordert ein Befehlsfeld", + "httpRequiresUrl": "{{type}}-Typ erfordert ein URL-Feld", + "invalidJson": "Ungültiges JSON-Format", + "jsonHelp": "Füge deine MCP-Server-Konfiguration im JSON-Format ein. Beispielformate:", + "jsonExampleStdio": "• stdio: {\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"@upstash/context7-mcp\"]}", + "jsonExampleHttp": "• http/sse: {\"type\":\"http\",\"url\":\"https://api.example.com/mcp\"}" + }, + "configDetails": "Konfigurationsdetails (aus {{configFile}})", + "projectPath": "Pfad: {{path}}", + "actions": { + "cancel": "Abbrechen", + "saving": "Wird gespeichert...", + "addServer": "Server hinzufügen", + "updateServer": "Server aktualisieren" + } + }, + "saveStatus": { + "success": "Einstellungen erfolgreich gespeichert!", + "error": "Einstellungen konnten nicht gespeichert werden", + "saving": "Wird gespeichert..." + }, + "footerActions": { + "save": "Einstellungen speichern", + "cancel": "Abbrechen" + }, + "git": { + "title": "Git-Konfiguration", + "description": "Konfiguriere deine Git-Identität für Commits. Diese Einstellungen werden global über git config --global angewendet", + "name": { + "label": "Git-Name", + "help": "Dein Name für Git-Commits" + }, + "email": { + "label": "Git-E-Mail", + "help": "Deine E-Mail-Adresse für Git-Commits" + }, + "actions": { + "save": "Konfiguration speichern", + "saving": "Wird gespeichert..." + }, + "status": { + "success": "Erfolgreich gespeichert" + } + }, + "apiKeys": { + "title": "API-Schlüssel", + "description": "Generiere API-Schlüssel, um von anderen Anwendungen auf die externe API zuzugreifen.", + "newKey": { + "alertTitle": "⚠️ API-Schlüssel speichern", + "alertMessage": "Dies ist das einzige Mal, dass du diesen Schlüssel siehst. Speichere ihn sicher.", + "iveSavedIt": "Ich habe ihn gespeichert" + }, + "form": { + "placeholder": "API-Schlüsselname (z. B. Produktionsserver)", + "createButton": "Erstellen", + "cancelButton": "Abbrechen" + }, + "newButton": "Neuer API-Schlüssel", + "empty": "Noch keine API-Schlüssel erstellt.", + "list": { + "created": "Erstellt:", + "lastUsed": "Zuletzt verwendet:" + }, + "confirmDelete": "Möchtest du diesen API-Schlüssel wirklich löschen?", + "status": { + "active": "Aktiv", + "inactive": "Inaktiv" + }, + "github": { + "title": "GitHub-Token", + "description": "Füge GitHub Personal Access Tokens hinzu, um private Repositories über die externe API zu klonen.", + "descriptionAlt": "Füge GitHub Personal Access Tokens hinzu, um private Repositories zu klonen. Du kannst Token auch direkt in API-Anfragen übergeben, ohne sie zu speichern.", + "addButton": "Token hinzufügen", + "form": { + "namePlaceholder": "Token-Name (z. B. Persönliche Repos)", + "tokenPlaceholder": "GitHub Personal Access Token (ghp_...)", + "descriptionPlaceholder": "Beschreibung (optional)", + "addButton": "Token hinzufügen", + "cancelButton": "Abbrechen", + "howToCreate": "Wie man einen GitHub Personal Access Token erstellt →" + }, + "empty": "Noch keine GitHub-Token hinzugefügt.", + "added": "Hinzugefügt:", + "confirmDelete": "Möchtest du diesen GitHub-Token wirklich löschen?" + }, + "apiDocsLink": "API-Dokumentation", + "documentation": { + "title": "Externe API-Dokumentation", + "description": "Erfahre, wie du die externe API nutzen kannst, um Claude/Cursor-Sitzungen aus deinen Anwendungen heraus zu starten.", + "viewLink": "API-Dokumentation anzeigen →" + }, + "loading": "Lädt...", + "version": { + "updateAvailable": "Update verfügbar: v{{version}}" + } + }, + "tasks": { + "checking": "TaskMaster-Installation wird überprüft...", + "notInstalled": { + "title": "TaskMaster AI CLI nicht installiert", + "description": "TaskMaster CLI ist erforderlich, um Aufgabenverwaltungsfunktionen zu nutzen. Installiere es, um loszulegen:", + "installCommand": "npm install -g task-master-ai", + "viewOnGitHub": "Auf GitHub anzeigen", + "afterInstallation": "Nach der Installation:", + "steps": { + "restart": "Diese Anwendung neu starten", + "autoAvailable": "TaskMaster-Funktionen werden automatisch verfügbar", + "initCommand": "task-master init in deinem Projektverzeichnis verwenden" + } + }, + "settings": { + "enableLabel": "TaskMaster-Integration aktivieren", + "enableDescription": "TaskMaster-Aufgaben, Banner und Seitenleisten-Indikatoren in der gesamten Oberfläche anzeigen" + } + }, + "agents": { + "authStatus": { + "checking": "Wird überprüft...", + "connected": "Verbunden", + "notConnected": "Nicht verbunden", + "disconnected": "Getrennt", + "checkingAuth": "Authentifizierungsstatus wird überprüft...", + "loggedInAs": "Angemeldet als {{email}}", + "authenticatedUser": "authentifizierte:r Benutzer:in" + }, + "account": { + "claude": { + "description": "Anthropic Claude KI-Assistent" + }, + "cursor": { + "description": "Cursor KI-gestützter Code-Editor" + }, + "codex": { + "description": "OpenAI Codex KI-Assistent" + }, + "gemini": { + "description": "Google Gemini KI-Assistent" + } + }, + "connectionStatus": "Verbindungsstatus", + "login": { + "title": "Anmelden", + "reAuthenticate": "Erneut authentifizieren", + "description": "Meld dich bei deinem {{agent}}-Konto an, um KI-Funktionen zu aktivieren", + "reAuthDescription": "Mit einem anderen Konto anmelden oder Anmeldedaten aktualisieren", + "button": "Anmelden", + "reLoginButton": "Erneut anmelden" + }, + "error": "Fehler: {{error}}" + }, + "permissions": { + "title": "Berechtigungseinstellungen", + "skipPermissions": { + "label": "Berechtigungsaufforderungen überspringen (mit Vorsicht verwenden)", + "claudeDescription": "Entspricht dem Flag --dangerously-skip-permissions", + "cursorDescription": "Entspricht dem Flag -f in der Cursor CLI" + }, + "allowedTools": { + "title": "Erlaubte Werkzeuge", + "description": "Werkzeuge, die automatisch ohne Berechtigungsaufforderung erlaubt werden", + "placeholder": "z. B. \"Bash(git log:*)\" oder \"Write\"", + "quickAdd": "Häufige Werkzeuge schnell hinzufügen:", + "empty": "Keine erlaubten Werkzeuge konfiguriert" + }, + "blockedTools": { + "title": "Gesperrte Werkzeuge", + "description": "Werkzeuge, die automatisch ohne Berechtigungsaufforderung gesperrt werden", + "placeholder": "z. B. \"Bash(rm:*)\"", + "empty": "Keine gesperrten Werkzeuge konfiguriert" + }, + "allowedCommands": { + "title": "Erlaubte Shell-Befehle", + "description": "Shell-Befehle, die automatisch ohne Aufforderung erlaubt werden", + "placeholder": "z. B. \"Shell(ls)\" oder \"Shell(git status)\"", + "quickAdd": "Häufige Befehle schnell hinzufügen:", + "empty": "Keine erlaubten Befehle konfiguriert" + }, + "blockedCommands": { + "title": "Gesperrte Shell-Befehle", + "description": "Shell-Befehle, die automatisch gesperrt werden", + "placeholder": "z. B. \"Shell(rm -rf)\" oder \"Shell(sudo)\"", + "empty": "Keine gesperrten Befehle konfiguriert" + }, + "toolExamples": { + "title": "Werkzeugmuster-Beispiele:", + "bashGitLog": "- Alle git log-Befehle erlauben", + "bashGitDiff": "- Alle git diff-Befehle erlauben", + "write": "- Alle Write-Werkzeugnutzungen erlauben", + "bashRm": "- Alle rm-Befehle sperren (gefährlich)" + }, + "shellExamples": { + "title": "Shell-Befehl-Beispiele:", + "ls": "- ls-Befehl erlauben", + "gitStatus": "- git status erlauben", + "npmInstall": "- npm install erlauben", + "rmRf": "- Rekursives Löschen sperren" + }, + "codex": { + "permissionMode": "Berechtigungsmodus", + "description": "Steuert, wie Codex Dateiänderungen und Befehlsausführung handhabt", + "modes": { + "default": { + "title": "Standard", + "description": "Nur vertrauenswürdige Befehle (ls, cat, grep, git status usw.) werden automatisch ausgeführt. Andere Befehle werden übersprungen. Kann in den Arbeitsbereich schreiben." + }, + "acceptEdits": { + "title": "Bearbeitungen akzeptieren", + "description": "Alle Befehle werden automatisch innerhalb des Arbeitsbereichs ausgeführt. Vollautomatischer Modus mit isolierter Ausführung." + }, + "bypassPermissions": { + "title": "Berechtigungen umgehen", + "description": "Vollständiger Systemzugriff ohne Einschränkungen. Alle Befehle werden automatisch mit vollem Festplatten- und Netzwerkzugriff ausgeführt. Mit Vorsicht verwenden." + } + }, + "technicalDetails": "Technische Details", + "technicalInfo": { + "default": "sandboxMode=workspace-write, approvalPolicy=untrusted. Vertrauenswürdige Befehle: cat, cd, grep, head, ls, pwd, tail, git status/log/diff/show, find (ohne -exec) usw.", + "acceptEdits": "sandboxMode=workspace-write, approvalPolicy=never. Alle Befehle werden automatisch innerhalb des Projektverzeichnisses ausgeführt.", + "bypassPermissions": "sandboxMode=danger-full-access, approvalPolicy=never. Vollständiger Systemzugriff, nur in vertrauenswürdigen Umgebungen verwenden.", + "overrideNote": "Du kannst dies pro Sitzung über die Modusschaltfläche in der Chat-Oberfläche überschreiben." + } + }, + "actions": { + "add": "Hinzufügen" + } + }, + "mcpServers": { + "title": "MCP-Server", + "description": { + "claude": "Model Context Protocol-Server stellen Claude zusätzliche Werkzeuge und Datenquellen zur Verfügung", + "cursor": "Model Context Protocol-Server stellen Cursor zusätzliche Werkzeuge und Datenquellen zur Verfügung", + "codex": "Model Context Protocol-Server stellen Codex zusätzliche Werkzeuge und Datenquellen zur Verfügung" + }, + "addButton": "MCP-Server hinzufügen", + "empty": "Keine MCP-Server konfiguriert", + "serverType": "Typ", + "scope": { + "local": "lokal", + "user": "benutzer" + }, + "config": { + "command": "Befehl", + "url": "URL", + "args": "Argumente", + "environment": "Umgebung" + }, + "tools": { + "title": "Werkzeuge", + "count": "({{count}}):", + "more": "+{{count}} weitere" + }, + "actions": { + "edit": "Server bearbeiten", + "delete": "Server löschen" + }, + "help": { + "title": "Über Codex MCP", + "description": "Codex unterstützt stdio-basierte MCP-Server. Du kannst Server hinzufügen, die die Fähigkeiten von Codex mit zusätzlichen Werkzeugen und Ressourcen erweitern." + } + }, + "pluginSettings": { + "title": "Plugins", + "description": "Erweitere die Oberfläche mit eigenen Plugins. Installiere sie von Git oder lege einen Ordner in ~/.claude-code-ui/plugins/ ab.", + "installPlaceholder": "https://github.com/benutzer/mein-plugin", + "installButton": "Installieren", + "installing": "Wird installiert…", + "securityWarning": "Installiere nur Plugins, deren Quellcode du geprüft hast oder die von Autoren stammen, denen du vertraust.", + "scanningPlugins": "Plugins werden durchsucht…", + "noPluginsInstalled": "Keine Plugins installiert", + "pullLatest": "Neueste Version von Git laden", + "noGitRemote": "Kein Git-Remote — Update nicht verfügbar", + "uninstallPlugin": "Plugin deinstallieren", + "confirmUninstall": "Zum Bestätigen erneut klicken", + "confirmUninstallMessage": "{{name}} entfernen? Das kann nicht rückgängig gemacht werden.", + "cancel": "Abbrechen", + "remove": "Entfernen", + "updateFailed": "Update fehlgeschlagen", + "installFailed": "Installation fehlgeschlagen", + "uninstallFailed": "Deinstallation fehlgeschlagen", + "toggleFailed": "Umschalten fehlgeschlagen", + "buildYourOwn": "Eigenes Plugin erstellen", + "starter": "Starter", + "docs": "Dokumentation", + "starterPlugin": { + "name": "Projektstatistiken", + "badge": "starter", + "description": "Dateianzahl, Codezeilen, Dateityp-Aufschlüsselung und aktuelle Aktivitäten für dein Projekt.", + "install": "Installieren" + }, + "morePlugins": "Mehr", + "enable": "Aktivieren", + "disable": "Deaktivieren", + "installAriaLabel": "Git-Repository-URL des Plugins", + "tab": "Tab", + "runningStatus": "läuft" + } +} diff --git a/src/i18n/locales/de/sidebar.json b/src/i18n/locales/de/sidebar.json new file mode 100644 index 0000000..8727f10 --- /dev/null +++ b/src/i18n/locales/de/sidebar.json @@ -0,0 +1,128 @@ +{ + "projects": { + "title": "Projekte", + "newProject": "Neues Projekt", + "deleteProject": "Projekt löschen", + "renameProject": "Projekt umbenennen", + "noProjects": "Keine Projekte gefunden", + "loadingProjects": "Projekte werden geladen...", + "searchPlaceholder": "Projekte durchsuchen...", + "projectNamePlaceholder": "Projektname", + "starred": "Favoriten", + "all": "Alle", + "untitledSession": "Unbenannte Sitzung", + "newSession": "Neue Sitzung", + "codexSession": "Codex-Sitzung", + "fetchingProjects": "Deine Claude-Projekte und -Sitzungen werden abgerufen", + "projects": "Projekte", + "noMatchingProjects": "Keine passenden Projekte", + "tryDifferentSearch": "Versuch, den Suchbegriff anzupassen", + "runClaudeCli": "Führ Claude CLI in einem Projektverzeichnis aus, um zu beginnen" + }, + "app": { + "title": "Claude Code UI", + "subtitle": "KI-Programmierassistent-Oberfläche" + }, + "sessions": { + "title": "Sitzungen", + "newSession": "Neue Sitzung", + "deleteSession": "Sitzung löschen", + "renameSession": "Sitzung umbenennen", + "noSessions": "Noch keine Sitzungen", + "loadingSessions": "Sitzungen werden geladen...", + "unnamed": "Unbenannt", + "loading": "Lädt...", + "showMore": "Weitere Sitzungen anzeigen" + }, + "tooltips": { + "viewEnvironments": "Umgebungen anzeigen", + "hideSidebar": "Seitenleiste ausblenden", + "createProject": "Neues Projekt erstellen", + "refresh": "Projekte und Sitzungen aktualisieren (Strg+R)", + "renameProject": "Projekt umbenennen (F2)", + "deleteProject": "Leeres Projekt löschen (Entf)", + "addToFavorites": "Zu Favoriten hinzufügen", + "removeFromFavorites": "Aus Favoriten entfernen", + "editSessionName": "Sitzungsname manuell bearbeiten", + "deleteSession": "Diese Sitzung dauerhaft löschen", + "save": "Speichern", + "cancel": "Abbrechen", + "clearSearch": "Suche leeren" + }, + "navigation": { + "chat": "Chat", + "files": "Dateien", + "git": "Git", + "terminal": "Terminal", + "tasks": "Aufgaben" + }, + "actions": { + "refresh": "Aktualisieren", + "settings": "Einstellungen", + "collapseAll": "Alle einklappen", + "expandAll": "Alle ausklappen", + "cancel": "Abbrechen", + "save": "Speichern", + "delete": "Löschen", + "rename": "Umbenennen", + "joinCommunity": "Community beitreten" + }, + "status": { + "active": "Aktiv", + "inactive": "Inaktiv", + "thinking": "Denkt nach...", + "error": "Fehler", + "aborted": "Abgebrochen", + "unknown": "Unbekannt" + }, + "time": { + "justNow": "Gerade eben", + "oneMinuteAgo": "vor 1 Min.", + "minutesAgo": "vor {{count}} Min.", + "oneHourAgo": "vor 1 Std.", + "hoursAgo": "vor {{count}} Std.", + "oneDayAgo": "vor 1 Tag", + "daysAgo": "vor {{count}} Tagen" + }, + "messages": { + "deleteConfirm": "Möchtest du das wirklich löschen?", + "renameSuccess": "Erfolgreich umbenannt", + "deleteSuccess": "Erfolgreich gelöscht", + "errorOccurred": "Ein Fehler ist aufgetreten", + "deleteSessionConfirm": "Möchtest du diese Sitzung wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.", + "deleteProjectConfirm": "Möchtest du dieses leere Projekt wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.", + "enterProjectPath": "Bitte gib einen Projektpfad ein", + "deleteSessionFailed": "Sitzung konnte nicht gelöscht werden. Bitte erneut versuchen.", + "deleteSessionError": "Fehler beim Löschen der Sitzung. Bitte erneut versuchen.", + "renameSessionFailed": "Sitzung konnte nicht umbenannt werden. Bitte erneut versuchen.", + "renameSessionError": "Fehler beim Umbenennen der Sitzung. Bitte erneut versuchen.", + "deleteProjectFailed": "Projekt konnte nicht gelöscht werden. Bitte erneut versuchen.", + "deleteProjectError": "Fehler beim Löschen des Projekts. Bitte erneut versuchen.", + "createProjectFailed": "Projekt konnte nicht erstellt werden. Bitte erneut versuchen.", + "createProjectError": "Fehler beim Erstellen des Projekts. Bitte erneut versuchen." + }, + "version": { + "updateAvailable": "Update verfügbar" + }, + "search": { + "modeProjects": "Projekte", + "modeConversations": "Unterhaltungen", + "conversationsPlaceholder": "In Unterhaltungen suchen...", + "searching": "Sucht...", + "noResults": "Keine Ergebnisse gefunden", + "tryDifferentQuery": "Versuch eine andere Suchanfrage", + "matches_one": "{{count}} Treffer", + "matches_other": "{{count}} Treffer", + "projectsScanned_one": "{{count}} Projekt durchsucht", + "projectsScanned_other": "{{count}} Projekte durchsucht" + }, + "deleteConfirmation": { + "deleteProject": "Projekt löschen", + "deleteSession": "Sitzung löschen", + "confirmDelete": "Möchtest du wirklich löschen", + "sessionCount_one": "Dieses Projekt enthält {{count}} Unterhaltung.", + "sessionCount_other": "Dieses Projekt enthält {{count}} Unterhaltungen.", + "allConversationsDeleted": "Alle Unterhaltungen werden dauerhaft gelöscht.", + "cannotUndo": "Diese Aktion kann nicht rückgängig gemacht werden." + } +} diff --git a/src/i18n/locales/de/tasks.json b/src/i18n/locales/de/tasks.json new file mode 100644 index 0000000..0d8ea01 --- /dev/null +++ b/src/i18n/locales/de/tasks.json @@ -0,0 +1,142 @@ +{ + "notConfigured": { + "title": "TaskMaster AI ist nicht konfiguriert", + "description": "TaskMaster hilft dabei, komplexe Projekte mit KI-Unterstützung in überschaubare Aufgaben aufzuteilen", + "whatIsTitle": "🎯 Was ist TaskMaster?", + "features": { + "aiPowered": "KI-gestütztes Aufgabenmanagement: Komplexe Projekte in handhabbare Unteraufgaben aufteilen", + "prdTemplates": "PRD-Vorlagen: Aufgaben aus Produktanforderungsdokumenten generieren", + "dependencyTracking": "Abhängigkeitsverfolgung: Aufgabenbeziehungen und Ausführungsreihenfolge verstehen", + "progressVisualization": "Fortschrittsvisualisierung: Kanban-Boards und detaillierte Aufgabenanalysen", + "cliIntegration": "CLI-Integration: Taskmaster-Befehle für erweiterte Workflows verwenden" + }, + "initializeButton": "TaskMaster AI initialisieren" + }, + "gettingStarted": { + "title": "Erste Schritte mit TaskMaster", + "subtitle": "TaskMaster ist initialisiert! Hier ist, was du als Nächstes tun kannst:", + "steps": { + "createPRD": { + "title": "Produktanforderungsdokument (PRD) erstellen", + "description": "Besprich deine Projektidee und erstelle ein PRD, das beschreibt, was du bauen möchtest.", + "addButton": "PRD hinzufügen", + "existingPRDs": "Vorhandene PRDs:" + }, + "generateTasks": { + "title": "Aufgaben aus PRD generieren", + "description": "Sobald du ein PRD hast, bitte deinen KI-Assistenten, es zu analysieren. TaskMaster wird es automatisch in überschaubare Aufgaben mit Implementierungsdetails aufteilen." + }, + "analyzeTasks": { + "title": "Aufgaben analysieren und erweitern", + "description": "Bitte deinen KI-Assistenten, die Aufgabenkomplexität zu analysieren und sie in detaillierte Unteraufgaben für eine einfachere Implementierung zu erweitern." + }, + "startBuilding": { + "title": "Mit dem Bauen beginnen", + "description": "Bitte deinen KI-Assistenten, mit der Bearbeitung von Aufgaben zu beginnen, deren Status zu aktualisieren und neue Aufgaben hinzuzufügen, wenn dein Projekt sich weiterentwickelt." + } + }, + "tip": "💡 Tipp: Beginne mit einem PRD, um das Beste aus TaskMasters KI-gestützter Aufgabengenerierung herauszuholen" + }, + "setupModal": { + "title": "TaskMaster-Einrichtung", + "subtitle": "Interaktives CLI für {{projectName}}", + "willStart": "Die TaskMaster-Initialisierung startet automatisch", + "completed": "TaskMaster-Einrichtung abgeschlossen! Du kannst dieses Fenster jetzt schließen.", + "closeButton": "Schließen", + "closeContinueButton": "Schließen & Fortfahren" + }, + "helpGuide": { + "title": "Erste Schritte mit TaskMaster", + "subtitle": "Dein Leitfaden für produktives Aufgabenmanagement", + "examples": { + "parsePRD": "💬 Beispiel:\n\"Ich habe gerade ein neues Projekt mit Claude Task Master initialisiert. Ich habe ein PRD unter .taskmaster/docs/prd.txt. Kannst du mir helfen, es zu analysieren und die ersten Aufgaben einzurichten?\"", + "expandTask": "💬 Beispiel:\n\"Aufgabe 5 scheint komplex. Kannst du sie in Unteraufgaben aufteilen?\"", + "addTask": "💬 Beispiel:\n\"Bitte füge eine neue Aufgabe hinzu, um Benutzerprofilbild-Uploads mit Cloudinary zu implementieren, und recherchiere den besten Ansatz.\"" + }, + "moreExamples": "Weitere Beispiele und Verwendungsmuster anzeigen →", + "proTips": { + "title": "💡 Profi-Tipps", + "search": "Verwende die Suchleiste, um bestimmte Aufgaben schnell zu finden", + "views": "Wechsle mit den Ansichts-Umschaltern zwischen Kanban-, Listen- und Rasteransicht", + "filters": "Verwende Filter, um dich auf bestimmte Aufgabenstatus oder Prioritäten zu konzentrieren", + "details": "Klicke auf eine Aufgabe, um detaillierte Informationen anzuzeigen und Unteraufgaben zu verwalten" + }, + "learnMore": { + "title": "📚 Mehr erfahren", + "description": "TaskMaster AI ist ein fortschrittliches Aufgabenmanagementsystem für Entwickler:innen. Dokumentation, Beispiele und Möglichkeiten zur Mitarbeit am Projekt.", + "githubButton": "Auf GitHub ansehen" + } + }, + "search": { + "placeholder": "Aufgaben suchen..." + }, + "filters": { + "button": "Filter", + "status": "Status", + "priority": "Priorität", + "sortBy": "Sortieren nach", + "allStatuses": "Alle Status", + "allPriorities": "Alle Prioritäten", + "showing": "{{filtered}} von {{total}} Aufgaben werden angezeigt", + "clearFilters": "Filter zurücksetzen" + }, + "sort": { + "id": "ID", + "status": "Status", + "priority": "Priorität", + "idAsc": "ID (aufsteigend)", + "idDesc": "ID (absteigend)", + "titleAsc": "Titel (A-Z)", + "titleDesc": "Titel (Z-A)", + "statusAsc": "Status (Ausstehend zuerst)", + "statusDesc": "Status (Erledigt zuerst)", + "priorityAsc": "Priorität (Hoch zuerst)", + "priorityDesc": "Priorität (Niedrig zuerst)" + }, + "views": { + "kanban": "Kanban-Ansicht", + "list": "Listenansicht", + "grid": "Rasteransicht" + }, + "kanban": { + "pending": "📋 Ausstehend", + "inProgress": "🚀 In Bearbeitung", + "done": "✅ Erledigt", + "blocked": "🚫 Blockiert", + "deferred": "⏳ Zurückgestellt", + "cancelled": "❌ Abgebrochen", + "noTasksYet": "Noch keine Aufgaben", + "tasksWillAppear": "Aufgaben werden hier angezeigt", + "moveTasksHere": "Aufgaben hierher verschieben, wenn sie gestartet werden", + "completedTasksHere": "Abgeschlossene Aufgaben erscheinen hier", + "statusTasksHere": "Aufgaben mit diesem Status werden hier angezeigt" + }, + "buttons": { + "help": "TaskMaster-Leitfaden für Erste Schritte", + "prds": "PRDs", + "addPRD": "PRD hinzufügen", + "addTask": "Aufgabe hinzufügen", + "createNewPRD": "Neues PRD erstellen", + "prdsAvailable": "{{count}} PRD(s) verfügbar" + }, + "prd": { + "modified": "Geändert: {{date}}" + }, + "statuses": { + "pending": "Ausstehend", + "in-progress": "In Bearbeitung", + "done": "Erledigt", + "blocked": "Blockiert", + "deferred": "Zurückgestellt", + "cancelled": "Abgebrochen" + }, + "priorities": { + "high": "Hoch", + "medium": "Mittel", + "low": "Niedrig" + }, + "noMatchingTasks": { + "title": "Keine Aufgaben entsprechen deinen Filtern", + "description": "Versuche, deine Such- oder Filterkriterien anzupassen." + } +}