import type { TranslationKeys } from './en';

const de: TranslationKeys = {
  // ── Common ──
  'common.rename': 'Umbenennen',
  'common.duplicate': 'Duplizieren',
  'common.delete': 'Löschen',
  'common.cancel': 'Abbrechen',
  'common.save': 'Speichern',
  'common.close': 'Schließen',
  'common.connect': 'Verbinden',
  'common.disconnect': 'Trennen',
  'common.yes': 'Ja',
  'common.no': 'Nein',
  'common.import': 'Importieren',
  'common.export': 'Exportieren',
  'common.name': 'Name',
  'common.untitled': 'Unbenannt',
  'common.best': 'Beste',
  'common.selected': '{{count}} ausgewählt',

  // ── Toolbar ──
  'toolbar.select': 'Auswählen',
  'toolbar.text': 'Text',
  'toolbar.frame': 'Rahmen',
  'toolbar.hand': 'Hand',
  'toolbar.undo': 'Rückgängig',
  'toolbar.redo': 'Wiederherstellen',
  'toolbar.variables': 'Variablen',
  'toolbar.uikitBrowser': 'UIKit-Browser',

  // ── Shapes ──
  'shapes.rectangle': 'Rechteck',
  'shapes.ellipse': 'Ellipse',
  'shapes.polygon': 'Polygon',
  'shapes.line': 'Linie',
  'shapes.icon': 'Symbol',
  'shapes.importImageSvg': 'Bild oder SVG importieren\u2026',
  'shapes.pen': 'Stift',
  'shapes.shapeTools': 'Formwerkzeuge',
  'shapes.moreShapeTools': 'Weitere Formwerkzeuge',

  // ── Top Bar ──
  'topbar.hideLayers': 'Ebenen ausblenden',
  'topbar.showLayers': 'Ebenen einblenden',
  'topbar.new': 'Neu',
  'topbar.open': 'Öffnen',
  'topbar.save': 'Speichern',
  'topbar.importFigma': 'Figma importieren',
  'topbar.codePanel': 'Code',
  'topbar.lightMode': 'Heller Modus',
  'topbar.darkMode': 'Dunkler Modus',
  'topbar.fullscreen': 'Vollbild',
  'topbar.exitFullscreen': 'Vollbild beenden',
  'topbar.edited': '— Bearbeitet',
  'topbar.closeConfirmMessage': 'Möchten Sie die Änderungen vor dem Schließen speichern?',
  'topbar.closeConfirmDetail': 'Ihre Änderungen gehen verloren, wenn Sie sie nicht speichern.',
  'topbar.dontSave': 'Nicht speichern',
  'topbar.agentsAndMcp': 'Agenten & MCP',
  'topbar.setupAgentsMcp': 'Agenten & MCP einrichten',
  'topbar.connected': 'verbunden',
  'topbar.agentStatus': '{{agents}} Agent{{agentSuffix}} · {{mcp}} MCP',

  // ── Git-Panel ──
  'git.openPanel': 'Git-Panel öffnen',
  'git.closePanel': 'Git-Panel schließen',
  'git.title': 'Git · {{fileName}}',
  'git.titleNoFile': 'Git · (Keine Datei)',
  'git.close': 'Schließen',
  'git.initializing': 'Repository wird initialisiert…',
  'git.conflict.title': 'Merge-Konflikt',
  'git.conflict.description':
    'Löse jeden Konflikt mithilfe der Karten unten auf, dann wende den Merge an.',
  'git.conflict.abort': 'Merge abbrechen',
  'git.conflict.nonOp.title': 'Zusammenführung wegen Nicht-.op-Dateien pausiert',
  'git.conflict.nonOp.description':
    'Die .op-Zusammenführung ist abgeschlossen, aber andere Dateien im Repository sind noch nicht aufgelöst. Beheben Sie sie außerhalb von OpenPencil und fahren Sie dann fort.',
  'git.conflict.nonOp.unresolvedHeading_one': '1 Datei benötigt Aufmerksamkeit',
  'git.conflict.nonOp.unresolvedHeading_other': '{{count}} Dateien benötigen Aufmerksamkeit',
  'git.conflict.nonOp.continue': 'Zusammenführung fortsetzen',
  'git.conflict.nonOp.abort': 'Zusammenführung abbrechen',
  // ── Git Konflikt-Banner (Phase 7b) ──
  'git.conflict.banner.progress': 'Gelöst {{resolved}} / {{total}}',
  'git.conflict.banner.apply': 'Merge anwenden',
  'git.conflict.banner.continue': 'Fortfahren',
  'git.conflict.banner.finalizeError': 'Konnte nicht anwenden: {{message}}',
  'git.conflict.banner.pollError': 'Status-Polling wegen eines Fehlers pausiert: {{message}}',
  // placeholder — future localization
  'git.conflict.banner.reopenMessage':
    'Panel wurde mitten im Merge neu geöffnet — bitte abbrechen und erneut pullen.',

  // ── Git Konflikt-Liste (Phase 7c) ──
  'git.conflict.list.heading': 'Alle Konflikte',
  'git.conflict.list.progress': '{{resolved}} / {{total}} gelöst',
  'git.conflict.list.allResolved': 'Alle gelöst',
  'git.conflict.list.allOurs': 'Alles meins',
  'git.conflict.list.allTheirs': 'Alles ihres',

  // ── Git Konflikt-Element (Phase 7c) ──
  'git.conflict.item.nodeConflict': 'Elementkonflikt',
  'git.conflict.item.fieldConflict': 'Feldkonflikt',
  'git.conflict.item.resolved': 'Gelöst',

  // ── Git Konflikt-Karte (Phase 7c) ──
  'git.conflict.card.ours': 'Meins',
  'git.conflict.card.theirs': 'Ihres',
  'git.conflict.card.base': 'Basis',
  'git.conflict.card.keepMine': 'Meine Version behalten',
  'git.conflict.card.keepTheirs': 'Ihre Version behalten',
  'git.conflict.card.oursThumbnailAlt': 'Meine Version',
  'git.conflict.card.theirsThumbnailAlt': 'Ihre Version',

  // ── Git Konflikt JSON-Editor (Phase 7c) ──
  'git.conflict.editor.editManually': 'Manuell bearbeiten',
  'git.conflict.editor.cancel': 'Abbrechen',
  'git.conflict.editor.apply': 'Anwenden',
  'git.conflict.editor.invalidJson': 'Ungültiges JSON',
  'git.conflict.editor.textareaLabel': 'JSON-Wert bearbeiten',

  'git.error.dismiss': 'Verwerfen',
  'git.error.retry': 'Erneut versuchen',
  'git.error.title': 'Ein Fehler ist aufgetreten',

  // ── Git Leerer Zustand ──
  'git.empty.heading': 'Noch keine Versionshistorie',
  'git.empty.optional': 'Git ist optional — Überspringen ist in Ordnung',
  'git.empty.requireSavedFile': 'Speichern Sie die .op-Datei zuerst, um die Historie zu aktivieren',
  'git.empty.newCard': 'Neu',
  'git.empty.newCardDescription': 'Lokale Historie erstellen',
  'git.empty.openCard': 'Öffnen',
  'git.empty.openCardDescription': 'Vorhandenes Repository',
  'git.empty.cloneCard': 'Klonen',
  'git.empty.cloneCardDescription': 'Von einem Remote',

  // ── Git Autor-Formular ──
  'git.author.heading': 'Commit-Autor',
  'git.author.subheading': 'Der erste Commit benötigt Name und E-Mail',
  'git.author.nameLabel': 'Name',
  'git.author.namePlaceholder': 'Ihr Name',
  'git.author.emailLabel': 'E-Mail',
  'git.author.emailPlaceholder': 'sie@beispiel.de',
  'git.author.submit': 'Speichern',
  'git.author.cancel': 'Abbrechen',
  'git.author.validationName': 'Name ist erforderlich',
  'git.author.validationEmail': 'Eine gültige E-Mail ist erforderlich',

  // ── Git Auswahl (Phase 4b) ──
  'git.picker.heading': '{{count}} .op-Dateien in diesem Repository:',
  'git.picker.milestoneCount': '{{count}} Meilensteine',
  'git.picker.noHistory': 'Keine Historie',
  'git.picker.lastCommit': '{{message}} · {{time}}',
  'git.picker.bindButton': 'Diese Datei verfolgen',
  'git.picker.bindAndOpenButton': 'Verfolgen und öffnen',
  // Phase 7b: back/cancel navigation
  'git.picker.back': 'Zurück',
  'git.picker.backClose': 'Abbrechen',
  'git.picker.empty.heading': 'Keine .op-Dateien in diesem Repository',
  'git.picker.empty.body': 'Das Git-Panel benötigt mindestens eine .op-Datei.',
  'git.picker.empty.close': 'Panel schließen',

  // ── Auto-Bind Banner (Phase 4b) ──
  'git.autoBind.confirmHeading': '{{fileName}} gefunden — öffnen?',
  'git.autoBind.openButton': 'Öffnen',
  'git.autoBind.dismissButton': 'Überspringen',

  // ── Relative Zeit (Phase 4b) ──
  'git.relativeTime.justNow': 'gerade eben',
  'git.relativeTime.minutesAgo': 'vor {{count}}m',
  'git.relativeTime.hoursAgo': 'vor {{count}}h',
  'git.relativeTime.daysAgo': 'vor {{count}}d',

  // ── Git Commit Input (Phase 4c) ──
  'git.commit.placeholder': 'Diese Änderung beschreiben…',
  'git.commit.submitButton': 'Meilenstein speichern',
  'git.commit.saveRequiredTitle': 'Dokument zuerst speichern',
  'git.commit.saveRequiredBody':
    'Sie haben ungespeicherte Änderungen. Speichern Sie das Dokument, um fortzufahren: {{label}}',
  'git.commit.saveRequiredSave': 'Speichern',
  'git.commit.saveRequiredCancel': 'Abbrechen',

  // ── Git Header (Phase 4c → 6c) ──
  'git.header.autosaveError': 'Auto-Speichern-Fehler',
  'git.header.autosaveErrorTitle': 'Letztes Auto-Speichern fehlgeschlagen',
  'git.header.authorMissingWarning': 'Commit-Autor festlegen',
  'git.header.overflowSwitchTracked': 'Verfolgte Datei wechseln…',
  'git.header.overflowClearAuthor': 'Commit-Autor löschen',
  'git.header.overflowCloseRepo': 'Repository schließen',
  'git.header.overflowRemoteSettings': 'Remote-Einstellungen…',
  'git.header.overflowSshKeys': 'SSH-Schlüssel…',
  'git.header.overflowMoreActions': 'Weitere Aktionen',

  // ── Git History List (Phase 4c) ──
  'git.history.empty': 'Noch kein Verlauf',
  'git.history.autosaveGroup_one': '1 Auto-Speicherung',
  'git.history.autosaveGroup_other': '{{count}} Auto-Speicherungen',
  'git.history.autosaveLabel': 'auto {{time}}',
  'git.history.milestoneDetailTitle': 'Meilenstein-Details',
  'git.history.restoreButton': 'Wiederherstellen',
  'git.history.copyHashButton': 'Hash kopieren',
  'git.history.copiedToast': 'Kopiert',
  // Phase 7b: inline diff block
  'git.history.diff.loading': 'Diff wird geladen…',
  'git.history.diff.initialCommit': 'Erster Commit — kein übergeordneter Diff',
  'git.history.diff.noChanges': 'Keine Änderungen erkannt',
  'git.history.diff.error': 'Diff nicht verfügbar: {{message}}',
  'git.history.diff.framesChanged_one': '1 Frame geändert',
  'git.history.diff.framesChanged_other': '{{count}} Frames geändert',
  'git.history.diff.nodesAdded_one': '1 Element hinzugefügt',
  'git.history.diff.nodesAdded_other': '{{count}} Elemente hinzugefügt',
  'git.history.diff.nodesRemoved_one': '1 Element entfernt',
  'git.history.diff.nodesRemoved_other': '{{count}} Elemente entfernt',
  'git.history.diff.nodesModified_one': '1 Element geändert',
  'git.history.diff.nodesModified_other': '{{count}} Elemente geändert',
  'git.history.promoteButton': 'Zu Meilenstein befördern',
  'git.history.promoteSuccessToast': 'Zu Meilenstein befördert',
  'git.history.loadMore': 'Mehr laden',
  'git.autosave.messagePrefix': 'auto',
  'git.autosave.messageDiffSuffix': '',

  // ── Git Branch-Auswahl (Phase 5) ──
  'git.branch.listHeading': 'Branches',
  'git.branch.createAction': 'Neuer Branch',
  'git.branch.createPlaceholder': 'feature/login-redesign',
  'git.branch.createSubmit': 'Branch erstellen',
  'git.branch.createEmpty': 'Branch-Namen eingeben',
  'git.branch.createExists': 'Branch {{name}} existiert bereits',
  'git.branch.mergeAction': 'Branch mergen…',
  'git.branch.mergeHeading': 'In {{name}} mergen',
  'git.branch.deletePrompt': 'Branch {{name}} löschen?',
  'git.branch.deleteLabel': 'Branch {{name}} löschen',
  'git.branch.deleteWarning': 'Branch {{name}} hat nicht gemergte Commits',
  'git.branch.deleteConfirm': 'Löschen',
  'git.branch.deleteForce': 'Löschen erzwingen',
  'git.branch.cancel': 'Abbrechen',
  'git.branch.conflictDisabled': 'Merge abschließen, bevor der Branch gewechselt wird',
  'git.branch.noCommits': 'Noch keine Commits',

  // ── Git Clone Wizard (Phase 6a) ──
  'git.wizard.clone.heading': 'Remote-Repository klonen',
  'git.wizard.clone.subheading': 'Wähle eine Remote-URL und einen Zielordner.',
  'git.wizard.clone.urlLabel': 'Remote-URL',
  'git.wizard.clone.urlPlaceholder': 'https://github.com/owner/repo.git',
  'git.wizard.clone.destLabel': 'Zielordner',
  'git.wizard.clone.destPlaceholder': '/pfad/zum/klon',
  'git.wizard.clone.destPickButton': 'Durchsuchen…',
  'git.wizard.clone.usernameLabel': 'Benutzername (optional)',
  'git.wizard.clone.tokenLabel': 'Zugriffstoken (optional)',
  'git.wizard.clone.tokenPlaceholder': 'ghp_… für öffentliche Repos leer lassen',
  'git.wizard.clone.anonymousHint': 'Leer lassen für anonymes Klonen (nur öffentliche Repos).',
  'git.wizard.clone.sshHint': 'Diese URL erfordert SSH-Schlüssel-Authentifizierung.',
  'git.wizard.clone.hostDetected': 'Erkannt: {{host}} · {{mode}}',
  'git.wizard.clone.authMode.token-or-anon': 'Token oder anonym',
  'git.wizard.clone.authMode.ssh': 'SSH-Schlüssel',
  'git.wizard.clone.cancel': 'Abbrechen',
  'git.wizard.clone.submit': 'Klonen',
  'git.wizard.clone.validationUrl': 'Remote-URL ist erforderlich',
  'git.wizard.clone.validationDest': 'Zielordner ist erforderlich',
  'git.wizard.clone.validationTokenUsername':
    'Benutzername ist erforderlich, wenn ein Token angegeben wird',
  'git.wizard.clone.error.clone-network':
    'Netzwerkfehler beim Klonen. Verbindung prüfen und erneut versuchen.',
  'git.wizard.clone.error.network': 'Netzwerkfehler. Verbindung prüfen und erneut versuchen.',
  'git.wizard.clone.error.timeout':
    'Zeitüberschreitung beim Klonen. Erneut versuchen oder ein kleineres Repository verwenden.',
  'git.wizard.clone.error.auth-required': 'Dieses Repository erfordert eine Authentifizierung.',
  'git.wizard.clone.error.auth-failed':
    'Authentifizierung fehlgeschlagen. Benutzername und Token prüfen.',
  'git.wizard.clone.error.auth-token-invalid':
    'Zugriffstoken wurde abgelehnt. Neues Token erstellen und erneut versuchen.',
  'git.wizard.clone.error.clone-failed':
    'Klonen fehlgeschlagen. Stelle sicher, dass die URL auf ein echtes Repository zeigt.',
  'git.wizard.clone.error.clone-target-exists':
    'Der Zielordner existiert bereits oder ist nicht leer.',

  // ── Git Pull / Push (Phase 6b) ──
  'git.pull.label': 'Pull',
  'git.pull.tooltip': 'Von origin pullen',
  'git.pull.noRemote': 'Kein Remote konfiguriert — fügen Sie eines in den Git-Einstellungen hinzu',
  'git.pull.retry': 'Pull erneut versuchen',
  'git.push.label': 'Push',
  'git.push.tooltip_one': '1 Commit zu origin pushen',
  'git.push.tooltip_other': '{{count}} Commits zu origin pushen',
  'git.push.noRemote': 'Kein Remote konfiguriert — fügen Sie eines in den Git-Einstellungen hinzu',
  'git.push.upToDate': 'Nichts zu pushen — Sie sind auf dem neuesten Stand',
  'git.push.retry': 'Push erneut versuchen',
  'git.push.rejectedBody':
    'Das Remote hat Commits, die Sie noch nicht haben. Pullen Sie zuerst, dann pushen Sie erneut.',
  'git.push.rejectedDismiss': 'Schließen',
  'git.push.rejectedPull': 'Jetzt pullen',
  'git.remote.dismissError': 'Schließen',

  // ── Git Remote-Einstellungen (Phase 6c) ──
  'git.remote.settingsLabel': 'Remote-Einstellungen',
  'git.remote.settingsHeading': 'Remote',
  'git.remote.back': 'Zurück',
  'git.remote.cancel': 'Abbrechen',
  'git.remote.emptyNoOrigin': 'Noch kein Remote konfiguriert. Eines hinzufügen:',
  'git.remote.urlLabel': 'Origin-URL',
  'git.remote.urlPlaceholder': 'https://github.com/owner/repo.git',
  'git.remote.saveButton': 'Speichern',
  'git.remote.clearButton': 'Löschen',
  'git.remote.clearConfirmHeading': 'Origin löschen?',
  'git.remote.clearConfirmBody': 'Dadurch wird das Origin-Remote aus diesem Repository entfernt.',
  'git.remote.clearConfirmAction': 'Bestätigen',
  'git.remote.aheadBehind': '{{ahead}} voraus · {{behind}} zurück',
  'git.remote.fetchButton': 'Abrufen',
  'git.remote.sshIsoUnsupported':
    'SSH-Transport wird von der integrierten Engine nicht unterstützt. Installieren Sie System-Git oder wechseln Sie zu einer HTTPS-Remote-URL.',
  'git.remote.storedAuthLabel': 'Gespeicherte Anmeldedaten',
  'git.remote.storedAuth.token': 'Token',
  'git.remote.storedAuth.ssh': 'SSH-Schlüssel',
  'git.remote.storedAuth.none': 'Keine',
  'git.remote.storedAuth.loading': 'Wird geladen…',
  'git.remote.storedAuth.noHost': 'Kein Host erkannt',
  'git.remote.clearAuthButton': 'Gespeicherte Anmeldedaten löschen',

  // ── Git SSH-Schlüssel (Phase 6c) ──
  'git.ssh.label': 'SSH-Schlüssel',
  'git.ssh.heading': 'SSH-Schlüssel',
  'git.ssh.back': 'Zurück',
  'git.ssh.cancel': 'Abbrechen',
  'git.ssh.isoUnsupported':
    'Das aktuelle Remote verwendet SSH, aber die integrierte Engine kann keinen SSH-Transport ausführen. Installieren Sie System-Git oder ändern Sie die Remote-URL in HTTPS.',
  'git.ssh.emptyList': 'Noch keine SSH-Schlüssel.',
  'git.ssh.generateAction': 'Neuen erzeugen',
  'git.ssh.importAction': 'Vorhandenen importieren',
  'git.ssh.copyPublicKey': 'Öffentlichen Schlüssel kopieren',
  'git.ssh.copiedHint': 'Kopiert',
  'git.ssh.copyUnsupported':
    'Zwischenablage nicht verfügbar – diesen Schlüssel bitte manuell kopieren.',
  'git.ssh.deleteKey': '{{name}} löschen',
  'git.ssh.deletePrompt': 'SSH-Schlüssel {{name}} löschen?',
  'git.ssh.deleteConfirm': 'Löschen',
  'git.ssh.currentHostBadge': 'aktueller Host',
  'git.ssh.hostLabel': 'Host',
  'git.ssh.hostPlaceholder': 'github.com',
  'git.ssh.commentLabel': 'Kommentar',
  'git.ssh.commentPlaceholder': 'laptop@home',
  'git.ssh.generateSubmit': 'Erzeugen',
  'git.ssh.importPathLabel': 'Pfad zum privaten Schlüssel',
  'git.ssh.importPathPlaceholder': '/path/to/id_ed25519',
  'git.ssh.importBrowse': 'Durchsuchen…',
  'git.ssh.importSubmit': 'Importieren',
  'git.ssh.validationHost': 'Host ist erforderlich',
  'git.ssh.validationComment': 'Kommentar ist erforderlich',
  'git.ssh.validationImportPath': 'Wählen Sie eine private Schlüsseldatei zum Importieren',
  'git.ssh.providerLink': '{{host}} SSH-Schlüssel-Einstellungen öffnen',
  'git.ssh.genericGuidance':
    'Kopiere den öffentlichen Schlüssel und füge ihn in den SSH-Schlüssel-Einstellungen deines Git-Anbieters hinzu.',

  // ── Git-Authentifizierungsformular (Phase 6b) ──
  'git.auth.formLabel': 'Git-Anmeldedaten',
  'git.auth.heading': 'Bei {{host}} authentifizieren',
  'git.auth.headingUnknown': 'Bei diesem Remote authentifizieren',
  'git.auth.modeToggleLabel': 'Anmeldetyp',
  'git.auth.modeToken': 'Token',
  'git.auth.modeSsh': 'SSH',
  'git.auth.usernameLabel': 'Benutzername (optional)',
  'git.auth.tokenLabel': 'Zugriffstoken',
  'git.auth.tokenPlaceholder': 'ghp_… oder PAT',
  'git.auth.sshKeyLabel': 'SSH-Schlüssel',
  'git.auth.sshNoKeys':
    'Keine SSH-Schlüssel verfügbar. Importieren oder generieren Sie zuerst einen in den Git-Einstellungen.',
  'git.auth.rememberLabel': 'Diese Anmeldedaten für diesen Host merken',
  'git.auth.rememberHint': 'Diese Anmeldedaten für diesen Host merken',
  'git.auth.cancel': 'Abbrechen',
  'git.auth.validationToken': 'Zugriffstoken ist erforderlich',
  'git.auth.validationSshKey': 'Wählen Sie einen SSH-Schlüssel',
  'git.auth.error.auth-required': 'Dieses Remote erfordert eine Authentifizierung.',
  'git.auth.error.auth-failed':
    'Authentifizierung fehlgeschlagen. Überprüfen Sie Ihre Anmeldedaten und versuchen Sie es erneut.',
  'git.auth.error.auth-token-invalid':
    'Das Zugriffstoken wurde abgelehnt. Generieren Sie ein neues und versuchen Sie es erneut.',
  // ── Right Panel ──
  'rightPanel.design': 'Design',
  'rightPanel.code': 'Code',
  'rightPanel.noSelection': 'Element auswählen',

  // ── Pages ──
  'pages.title': 'Seiten',
  'pages.addPage': 'Seite hinzufügen',
  'pages.moveUp': 'Nach oben',
  'pages.moveDown': 'Nach unten',

  // ── Status Bar ──
  'statusbar.zoomOut': 'Herauszoomen',
  'statusbar.zoomIn': 'Hineinzoomen',
  'statusbar.resetZoom': 'Zoom zurücksetzen',
  'statusbar.focusContent': 'Gesamten Inhalt einpassen',
  'statusbar.focusSelection': 'Auswahl fokussieren',

  // ── Updater ──
  'updater.softwareUpdate': 'Software-Update',
  'updater.dismiss': 'Schließen',
  'updater.current': 'Aktuell',
  'updater.latest': 'Neueste',
  'updater.unknown': 'Unbekannt',
  'updater.checking': 'Prüfe...',
  'updater.downloadProgress': 'Downloadfortschritt',
  'updater.checkAgain': 'Erneut prüfen',
  'updater.restartInstall': 'Neustart & Installieren',
  'updater.installing': 'Installiere...',
  'updater.releaseDate': 'Veröffentlichungsdatum: {{date}}',
  'updater.restartHint':
    'Neustart zum Anwenden des Updates. Der Neustart dauert in der Regel 10–15 Sekunden.',
  'updater.unknownError': 'Unbekannter Updater-Fehler.',
  'updater.title.checking': 'Suche nach Updates',
  'updater.title.available': 'Update gefunden',
  'updater.title.downloading': 'Update wird heruntergeladen',
  'updater.title.downloaded': 'Bereit zur Installation',
  'updater.title.error': 'Update fehlgeschlagen',
  'updater.subtitle.checking': 'Suche nach der neuesten Version...',
  'updater.subtitle.available': 'Version {{version}} ist verfügbar.',
  'updater.subtitle.availableGeneric': 'Eine neue Version ist verfügbar.',
  'updater.subtitle.downloading': 'Version {{version}} wird im Hintergrund heruntergeladen.',
  'updater.subtitle.downloadingGeneric': 'Update-Paket wird im Hintergrund heruntergeladen.',
  'updater.subtitle.downloaded': 'Version {{version}} wurde heruntergeladen.',
  'updater.subtitle.downloadedGeneric': 'Das Update wurde heruntergeladen.',
  'updater.subtitle.error': 'Das Update konnte nicht geprüft oder heruntergeladen werden.',

  // ── Layers ──
  'layers.title': 'Ebenen',
  'layers.empty': 'Noch keine Ebenen. Verwende die Werkzeugleiste, um Formen zu zeichnen.',

  // ── Layer Context Menu ──
  'layerMenu.groupSelection': 'Auswahl gruppieren',
  'layerMenu.createComponent': 'Komponente erstellen',
  'layerMenu.detachComponent': 'Komponente lösen',
  'layerMenu.detachInstance': 'Instanz lösen',
  'layerMenu.booleanUnion': 'Vereinigung',
  'layerMenu.booleanSubtract': 'Subtraktion',
  'layerMenu.booleanIntersect': 'Schnittmenge',
  'layerMenu.toggleLock': 'Sperren umschalten',
  'layerMenu.toggleVisibility': 'Sichtbarkeit umschalten',

  // ── Property Panel ──
  'property.createComponent': 'Komponente erstellen',
  'property.detachComponent': 'Komponente lösen',
  'property.goToComponent': 'Zur Komponente gehen',
  'property.detachInstance': 'Instanz lösen',

  // ── Fill ──
  'fill.title': 'Füllung',
  'fill.solid': 'Vollton',
  'fill.linear': 'Linear',
  'fill.radial': 'Radial',
  'fill.image': 'Bild',
  'fill.stops': 'Stops',
  'fill.angle': 'Winkel',

  // ── Image ──
  'image.title': 'Bild',
  'image.fit': 'Anpassungsmodus',
  'image.fill': 'Füllen',
  'image.fitMode': 'Anpassen',
  'image.crop': 'Zuschneiden',
  'image.tile': 'Kacheln',
  'image.clickToUpload': 'Zum Hochladen klicken',
  'image.changeImage': 'Bild ändern',
  'image.adjustments': 'Anpassungen',
  'image.exposure': 'Belichtung',
  'image.contrast': 'Kontrast',
  'image.saturation': 'Sättigung',
  'image.temperature': 'Temperatur',
  'image.tint': 'Farbton',
  'image.highlights': 'Lichter',
  'image.shadows': 'Schatten',
  'image.reset': 'Zurücksetzen',

  // ── Stroke ──
  'stroke.title': 'Kontur',

  // ── Appearance ──
  'appearance.layer': 'Ebene',
  'appearance.opacity': 'Deckkraft',

  // ── Layout ──
  'layout.flexLayout': 'Flex-Layout',
  'layout.freedom': 'Frei (kein Layout)',
  'layout.vertical': 'Vertikales Layout',
  'layout.horizontal': 'Horizontales Layout',
  'layout.alignment': 'Ausrichtung',
  'layout.gap': 'Abstand',
  'layout.spaceBetween': 'Zwischenraum',
  'layout.spaceAround': 'Umgebungsraum',
  'layout.dimensions': 'Abmessungen',
  'layout.fillWidth': 'Breite füllen',
  'layout.fillHeight': 'Höhe füllen',
  'layout.hugWidth': 'Breite anpassen',
  'layout.hugHeight': 'Höhe anpassen',
  'layout.clipContent': 'Inhalt beschneiden',

  // ── Padding ──
  'padding.title': 'Innenabstand',
  'padding.paddingMode': 'Innenabstandmodus',
  'padding.paddingValues': 'Innenabstandwerte',
  'padding.oneValue': 'Ein Wert für alle Seiten',
  'padding.horizontalVertical': 'Horizontal/Vertikal',
  'padding.topRightBottomLeft': 'Oben/Rechts/Unten/Links',

  // ── Typography ──
  'text.typography': 'Typografie',
  'text.lineHeight': 'Zeilenhöhe',
  'text.letterSpacing': 'Zeichenabstand',
  'text.horizontal': 'Horizontal',
  'text.vertical': 'Vertikal',
  'text.alignLeft': 'Linksbündig',
  'text.alignCenter': 'Zentriert',
  'text.alignRight': 'Rechtsbündig',
  'text.justify': 'Blocksatz',
  'text.top': 'Oben',
  'text.middle': 'Mitte',
  'text.bottom': 'Unten',
  'text.weight.thin': 'Dünn',
  'text.weight.light': 'Leicht',
  'text.weight.regular': 'Normal',
  'text.weight.medium': 'Mittel',
  'text.weight.semibold': 'Halbfett',
  'text.weight.bold': 'Fett',
  'text.weight.black': 'Schwarz',
  'text.font.search': 'Schriften suchen\u2026',
  'text.font.bundled': 'Mitgeliefert',
  'text.font.system': 'System',
  'text.font.loading': 'Schriften werden geladen\u2026',
  'text.font.noResults': 'Keine Schriften gefunden',

  // ── Text Layout ──
  'textLayout.title': 'Layout',
  'textLayout.dimensions': 'Abmessungen',
  'textLayout.resizing': 'Größenanpassung',
  'textLayout.autoWidth': 'Auto B',
  'textLayout.autoWidthDesc': 'Auto Breite — Text dehnt sich horizontal aus',
  'textLayout.autoHeight': 'Auto H',
  'textLayout.autoHeightDesc': 'Auto Höhe — feste Breite, Höhe passt sich an',
  'textLayout.fixed': 'Fest',
  'textLayout.fixedDesc': 'Feste Größe — Breite und Höhe sind festgelegt',
  'textLayout.fillWidth': 'Breite füllen',
  'textLayout.fillHeight': 'Höhe füllen',

  // ── Effects ──
  'effects.title': 'Effekte',
  'effects.dropShadow': 'Schlagschatten',
  'effects.blur': 'Unschärfe',
  'effects.spread': 'Ausdehnung',
  'effects.color': 'Farbe',

  // ── Export ──
  'export.title': 'Exportieren',
  'export.format': 'Format',
  'export.scale': 'Skalierung',
  'export.selectedOnly': 'Nur Auswahl exportieren',
  'export.exportFormat': '{{format}} exportieren',
  'export.exportLayer': 'Ebene exportieren',
  'export.pdfMultiPage': 'Die PDF enthält alle {{count}} Seiten.',

  // ── Polygon ──
  'polygon.sides': 'Seiten',

  // ── Ellipse ──
  'ellipse.start': 'Start',
  'ellipse.sweep': 'Bogen',
  'ellipse.innerRadius': 'Innen',

  // ── Corner Radius ──
  'cornerRadius.title': 'Eckenradius',

  // ── Size / Position ──
  'size.position': 'Position',

  // ── Icon ──
  'icon.title': 'Symbol',
  'icon.searchIcons': 'Symbole suchen...',
  'icon.noIconsFound': 'Keine Symbole gefunden',
  'icon.typeToSearch': 'Tippen, um Iconify-Symbole zu suchen',
  'icon.iconsCount': '{{count}} Symbole',

  // ── Variables Panel ──
  'variables.addTheme': 'Theme hinzufügen',
  'variables.addVariant': 'Variante hinzufügen',
  'variables.addVariable': 'Variable hinzufügen',
  'variables.searchVariables': 'Variablen suchen...',
  'variables.noMatch': 'Keine Variablen entsprechen Ihrer Suche',
  'variables.noDefined': 'Keine Variablen definiert',
  'variables.closeShortcut': 'Schließen (\u2318\u21e7V)',
  'variables.presets': 'Vorlagen',
  'variables.savePreset': 'Aktuelles als Vorlage speichern…',
  'variables.loadPreset': 'Vorlage laden',
  'variables.importPreset': 'Aus Datei importieren…',
  'variables.exportPreset': 'In Datei exportieren…',
  'variables.presetName': 'Vorlagenname',
  'variables.noPresets': 'Keine gespeicherten Vorlagen',

  // ── Design System (design.md) ──
  'designMd.title': 'Designsystem',
  'designMd.import': 'design.md importieren',
  'designMd.export': 'design.md exportieren',
  'designMd.autoGenerate': 'Automatisch aus Design generieren',
  'designMd.empty': 'Kein Designsystem geladen',
  'designMd.importCta': 'design.md importieren',
  'designMd.autoGenerateCta': 'Automatisch generieren',
  'designMd.visualTheme': 'Visuelles Thema',
  'designMd.colors': 'Farben',
  'designMd.typography': 'Typografie',
  'designMd.font': 'Schriftart',
  'designMd.headings': 'Überschriften',
  'designMd.body': 'Fließtext',
  'designMd.componentStyles': 'Komponentenstile',
  'designMd.layoutPrinciples': 'Layout-Prinzipien',
  'designMd.generationNotes': 'Generierungshinweise',
  'designMd.syncAllToVariables': 'Alle mit Variablen synchronisieren',
  'designMd.addAsVariable': '+Var',
  'designMd.copyHex': 'Hex-Wert kopieren',
  'designMd.remove': 'Designsystem entfernen',
  'toolbar.designSystem': 'Designsystem',

  // ── AI Chat ──
  'ai.newChat': 'Neuer Chat',
  'ai.collapse': 'Einklappen',
  'ai.tryExample': 'Probiere ein Beispiel zum Gestalten...',
  'ai.tipSelectElements':
    'Tipp: Wähle Elemente auf der Arbeitsfläche aus, bevor du chattest, um Kontext zu geben.',
  'ai.generating': 'Generiere...',
  'ai.designWithAgent': 'Mit Agent gestalten...',
  'ai.attachImage': 'Bild anhängen',
  'ai.stopGenerating': 'Generierung stoppen',
  'ai.sendMessage': 'Nachricht senden',
  'ai.loadingModels': 'Modelle werden geladen...',
  'ai.noModelsConnected': 'Keine Modelle verbunden',
  'ai.searchModels': 'Modelle suchen...',
  'ai.noModelsFound': 'Keine Modelle gefunden',
  'ai.quickAction.loginScreen': 'Einen mobilen Anmeldebildschirm gestalten',
  'ai.quickAction.loginScreenPrompt':
    'Design a modern mobile login screen with email input, password input, login button, and social login options',
  'ai.quickAction.foodApp': 'Food-App Startseite',
  'ai.quickAction.foodAppPrompt': 'Generate a well-designed food mobile app homepage',
  'ai.quickAction.bottomNav': 'Eine untere Navigationsleiste gestalten',
  'ai.quickAction.bottomNavPrompt':
    'Design a mobile app bottom navigation bar with 5 tabs: Home, Search, Add, Messages, Profile',
  'ai.quickAction.colorPalette': 'Eine Farbpalette für meine App vorschlagen',
  'ai.quickAction.colorPalettePrompt': 'Suggest a modern color palette for a pet care app',
  'ai.startDesigning': 'Start designing with AI',
  'ai.maximize': 'Maximize',
  'ai.restore': 'Restore',
  'ai.quickAction.loginScreenDesc': 'Mobile login with social auth',
  'ai.quickAction.foodAppDesc': 'App homepage design',
  'ai.quickAction.bottomNavDesc': '5-tab navigation bar',
  'ai.quickAction.colorPaletteDesc': 'Color palette recommendation',

  // ── File Menu ──
  'fileMenu.newFile': 'New file',
  'fileMenu.openFile': 'Open file...',
  'fileMenu.save': 'Save',
  'fileMenu.saveAs': 'Save as...',
  'fileMenu.exportImage': 'Bild exportieren...',
  'fileMenu.recentFiles': 'Recent files',
  'fileMenu.clearHistory': 'Clear history',
  'fileMenu.noRecentFiles': 'No recent files',
  'fileMenu.saved': 'Saved',
  'fileMenu.justNow': 'just now',
  'fileMenu.minutesAgo': '{{count}}m ago',
  'fileMenu.hoursAgo': '{{count}}h ago',
  'fileMenu.yesterday': 'yesterday',
  'fileMenu.daysAgo': '{{count}}d ago',

  // ── Unsaved Changes ──
  'unsaved.title': 'Unsaved changes',
  'unsaved.message': 'Save changes to "{{name}}"?',
  'unsaved.dontSave': "Don't Save",

  // ── Code Panel ──
  'code.reactTailwind': 'React + Tailwind',
  'code.htmlCss': 'HTML + CSS',
  'code.cssVariables': 'CSS Variables',
  'code.copyClipboard': 'In Zwischenablage kopieren',
  'code.copied': 'Kopiert!',
  'code.download': 'Code-Datei herunterladen',
  'code.closeCodePanel': 'Code-Panel schließen',
  'code.genCssVars': 'CSS-Variablen für das gesamte Dokument generieren',
  'code.genSelected': 'Code für {{count}} ausgewählte(s) Element(e) generieren',
  'code.genDocument': 'Code für das gesamte Dokument generieren',
  'code.aiEnhance': 'KI-Verbesserung',
  'code.cancelEnhance': 'Verbesserung abbrechen',
  'code.resetEnhance': 'Zurücksetzen',
  'code.enhancing': 'KI verbessert den Code...',
  'code.enhanced': 'Von KI verbessert',

  // ── Save Dialog ──
  'save.saveAs': 'Speichern unter',
  'save.fileName': 'Dateiname',

  // ── Agent Settings ──
  'agents.title': 'Agenten & MCP einrichten',
  'agents.agentsOnCanvas': 'Agenten auf der Arbeitsfläche',
  'agents.mcpIntegrations': 'MCP-Integrationen im Terminal',
  'agents.transport': 'Transport',
  'agents.port': 'Port',
  'agents.mcpRestart': 'MCP-Integrationen werden nach einem Neustart des Terminals wirksam.',
  'agents.mcpReinstallHint':
    'Bitte installieren Sie die MCP-Integrationen nach einem OpenPencil-Upgrade erneut, um die Kompatibilität sicherzustellen.',
  'agents.modelCount': '{{count}} Modell(e)',
  'agents.connectionFailed': 'Verbindung fehlgeschlagen',
  'agents.serverError': 'Serverfehler {{status}}',
  'agents.failedTo': '{{action}} fehlgeschlagen',
  'agents.failedToMcp': 'MCP-Server {{action}} fehlgeschlagen',
  'agents.failedTransport': 'Transport konnte nicht aktualisiert werden',
  'agents.failedMcpTransport': 'MCP-Transport konnte nicht aktualisiert werden',
  'agents.claudeCode': 'Claude Code',
  'agents.claudeModels': 'Claude-Modelle',
  'agents.codexCli': 'Codex CLI',
  'agents.openaiModels': 'OpenAI-Modelle',
  'agents.opencode': 'OpenCode',
  'agents.opencodeDesc': '75+ LLM-Anbieter',
  'agents.copilot': 'GitHub Copilot',
  'agents.copilotDesc': 'GitHub Copilot-Modelle',
  'agents.geminiCli': 'Gemini CLI',
  'agents.geminiDesc': 'Google Gemini-Modelle',
  'agents.mcpServer': 'MCP-Server',
  'agents.mcpServerStart': 'Starten',
  'agents.mcpServerStop': 'Stoppen',
  'agents.mcpServerRunning': 'Läuft',
  'agents.mcpServerStopped': 'Gestoppt',
  'agents.mcpLanAccess': 'LAN-Zugriff',
  'agents.mcpClientConfig': 'Client-Konfiguration',
  'agents.stdio': 'stdio',
  'agents.http': 'http',
  'agents.stdioHttp': 'stdio + http',
  'agents.autoUpdate': 'Automatisch nach Updates suchen',
  'agents.notInstalled': 'Nicht installiert',
  'agents.install': 'Installieren',
  'agents.installing': 'Installiere...',
  'agents.installFailed': 'Installation fehlgeschlagen',
  'agents.viewDocs': 'Doku',
  'settings.title': 'Einstellungen',
  'settings.agents': 'Agents',
  'settings.mcp': 'MCP',
  'settings.images': 'Images',
  'settings.system': 'System',
  'settings.autoUpdateDesc': 'Beim Start automatisch nach neuen Versionen suchen',
  'settings.systemDesktopOnly': 'Systemeinstellungen sind in der Desktop-App verfügbar.',
  'settings.envHint': 'Sie können zusätzliche Umgebungsvariablen in {{path}} festlegen.',

  // ── Builtin Providers ──
  'builtin.title': 'Integrierte Anbieter',
  'builtin.description': 'API-Schlüssel direkt konfigurieren — keine CLI-Tools erforderlich.',
  'builtin.addProvider': 'Anbieter hinzufügen',
  'builtin.empty': 'Noch keine integrierten Anbieter konfiguriert.',
  'builtin.displayName': 'Anzeigename',
  'builtin.displayNamePlaceholder': 'z.B. Mein Anthropic-Schlüssel',
  'builtin.provider': 'Anbieter',
  'builtin.region': 'Region',
  'builtin.regionChina': 'China',
  'builtin.regionGlobal': 'Global',
  'builtin.apiKey': 'API Key',
  'builtin.model': 'Modell',
  'builtin.searchModels': 'Verfügbare Modelle durchsuchen',
  'builtin.filterModels': 'Modelle filtern...',
  'builtin.noModels': 'Keine Modelle gefunden',
  'builtin.baseUrl': 'Base URL',
  'builtin.baseUrlRequired': 'Base URL (erforderlich)',
  'builtin.apiFormat': 'API-Format',
  'builtin.openaiCompat': 'OpenAI Compatible',
  'builtin.ready': 'Bereit',
  'builtin.add': 'Hinzufügen',
  'builtin.searchError': 'Base URL ist erforderlich, um Modelle zu durchsuchen',
  'builtin.custom': 'Benutzerdefiniert',
  'builtin.apiKeyBadge': 'API Key',
  'builtin.viaApiKey': 'über {{name}} API Key',
  'builtin.errorProviderNotFound':
    'Integrierter Anbieter nicht gefunden. Bitte überprüfen Sie Ihre Einstellungen.',
  'builtin.errorApiKeyEmpty':
    'API Key ist leer. Bitte fügen Sie Ihren API Key in den Einstellungen hinzu.',
  'builtin.parallelAgents': 'Parallele Sub-Agenten: {{count}}x (klicken zum Wechseln)',
  'builtin.baseUrlPlaceholder': 'https://api.example.com/v1',
  'builtin.teamDescription':
    'Wählen Sie ein Modell für die Designgenerierung. Wenn gesetzt, werden Designaufgaben automatisch an einen spezialisierten Agenten mit diesem Modell delegiert.',
  'builtin.teamDesignModel': 'Design-Modell',
  'builtin.teamSelectModel': 'Keins (Einzelagent)',

  // ── ACP Agents ──
  'acp.title': 'ACP Agent',
  'acp.description': 'Externe ACP-kompatible Agent verbinden.',
  'acp.addAgent': 'Agent hinzufügen',
  'acp.empty': 'Keine ACP Agent konfiguriert.',
  'acp.displayName': 'Anzeigename',
  'acp.displayNamePlaceholder': 'z.B. Mein Design-Agent',
  'acp.connectionType': 'Verbindungstyp',
  'acp.local': 'Lokal',
  'acp.remote': 'Remote',
  'acp.command': 'Befehl',
  'acp.commandPlaceholder': '/usr/bin/myagent',
  'acp.args': 'Argumente',
  'acp.argsPlaceholder': '--stdio',
  'acp.env': 'Umgebungsvariablen',
  'acp.envPlaceholder': 'KEY=VALUE (eine pro Zeile)',
  'acp.url': 'URL',
  'acp.urlPlaceholder': 'ws://localhost:8100',
  'acp.connected': 'Verbunden',
  'acp.notConnected': 'Nicht verbunden',
  'acp.connect': 'Verbinden',
  'acp.disconnect': 'Trennen',
  'acp.localDesktopOnly': 'Lokale Agent sind nur in der Desktop-App verfügbar.',

  // ── Figma Import ──
  'figma.title': 'Aus Figma importieren',
  'figma.dropFile': '.fig-Datei hier ablegen',
  'figma.orBrowse': 'oder zum Durchsuchen klicken',
  'figma.exportTip': 'Aus Figma exportieren: Datei \u2192 Lokale Kopie speichern (.fig)',
  'figma.selectFigFile': 'Bitte eine .fig-Datei auswählen',
  'figma.noPages': 'Keine Seiten in der .fig-Datei gefunden',
  'figma.parseFailed': '.fig-Datei konnte nicht gelesen werden',
  'figma.convertFailed': 'Figma-Datei konnte nicht konvertiert werden',
  'figma.parsing': '.fig-Datei wird gelesen...',
  'figma.converting': 'Knoten werden konvertiert...',
  'figma.selectPage': 'Diese Datei hat {{count}} Seiten. Wähle, welche importiert werden sollen:',
  'figma.layers': '{{count}} Ebenen',
  'figma.importAll': 'Alle Seiten importieren',
  'figma.importComplete': 'Import abgeschlossen!',
  'figma.moreWarnings': '...und {{count}} weitere Warnungen',
  'figma.tryAgain': 'Erneut versuchen',
  'figma.layoutMode': 'Layout-Modus:',
  'figma.preserveLayout': 'Figma-Layout beibehalten',
  'figma.autoLayout': 'OpenPencil Auto-Layout',
  'figma.comingSoon': 'Demnächst',

  // ── Landing Page ──
  'landing.open': 'Open',
  'landing.pencil': 'Pencil',
  'landing.tagline': 'Open-Source-Vektordesign-Werkzeug. Design as Code.',
  'landing.newDesign': 'Neues Design',
  'landing.shortcutHint': 'Drücke {{key1}} + {{key2}} für ein neues Design',

  // ── 404 ──
  'notFound.message': 'Seite nicht gefunden',

  // ── Component Browser ──
  'componentBrowser.title': 'UIKit-Browser',
  'componentBrowser.exportKit': 'Kit exportieren',
  'componentBrowser.importKit': 'Kit importieren',
  'componentBrowser.kit': 'Kit:',
  'componentBrowser.all': 'Alle',
  'componentBrowser.imported': '(importiert)',
  'componentBrowser.components': 'Komponenten',
  'componentBrowser.searchComponents': 'Komponenten suchen...',
  'componentBrowser.deleteKit': '{{name}} löschen',
  'componentBrowser.category.all': 'Alle',
  'componentBrowser.category.buttons': 'Schaltflächen',
  'componentBrowser.category.inputs': 'Eingabefelder',
  'componentBrowser.category.cards': 'Karten',
  'componentBrowser.category.nav': 'Navigation',
  'componentBrowser.category.layout': 'Layout',
  'componentBrowser.category.feedback': 'Feedback',
  'componentBrowser.category.data': 'Daten',
  'componentBrowser.category.other': 'Sonstige',

  // ── Variable Picker ──
  'variablePicker.boundTo': 'Gebunden an --{{name}}',
  'variablePicker.bindToVariable': 'An Variable binden',
  'variablePicker.unbind': 'Variable lösen',
  'variablePicker.noVariables': 'Keine {{type}}-Variablen definiert',
} as const;

export default de;
