// de.ts
import type { PartialTranslations } from '../types';

export const t = {
  meta: {
    lang: 'Deutsch',
    testCallback: ({ name }: { name: string }) => {
      return `Hallo ${name}`;
    },
  },
  app: {
    common: {
      learnitiveLogoAlt: 'Learnitive Logo',
      newNote: 'Neue Datei',
      newWorkspace: 'Neues Projekt',
      unknown: 'Unbekannt',
      home: 'Startseite',
      dismiss: 'Verwerfen',
      report: 'Melden',
      somethingWentWrong: 'Etwas ist schiefgelaufen',
      viewAll: 'Alle anzeigen',
      backButton: 'Zurück',
      nextButton: 'Weiter',
      createButton: 'Erstellen',
      clearButton: 'Löschen',
      closeButton: 'Schließen',
      cancelButton: 'Abbrechen',
      continueButton: 'Fortfahren',
      searchLabel: 'Suche',
      searchInputPlaceholder: 'Suchen...',
      starItem: 'Als Favorit markieren',
      unstarItem: 'Favorit entfernen',
    },
    toolbar: {
      toggleMaxWidth: 'Maximale Breite umschalten',
    },
    editor: {
      selectionMenu: {
        label: 'Textformatierung',
        bold: 'Fett',
        italic: 'Kursiv',
        strike: 'Durchgestrichen',
        inlineCode: 'Inline-Code',
        link: 'Link',
      },
      linkEditor: {
        label: 'Link bearbeiten',
        inputLabel: 'Link-URL',
        placeholder: 'beispiel.de',
        copy: 'Link kopieren',
        copied: 'Kopiert!',
        copyFailed: 'Kopieren fehlgeschlagen',
        open: 'Link öffnen',
        remove: 'Link entfernen',
        invalidUrl: 'Webadresse oder Markdown-Pfad eingeben.',
      },
      codeBlock: {
        copy: 'Kopieren',
        copied: 'Kopiert',
        editLanguage: 'Sprache bearbeiten',
      },
      wikiLinkMenu: {
        label: 'Mit einer Notiz verknüpfen',
        empty: 'Keine Notizen gefunden',
        linkTo: ({ query }: { query: string }) => `Mit „${query}“ verknüpfen`,
      },
      wikiLink: {
        unresolvedLabel: ({ label }: { label: string }) =>
          `${label} (Notiz nicht gefunden)`,
      },
      linkedMentions: {
        heading: 'Verlinkte Erwähnungen',
        loading: 'Verlinkte Erwähnungen werden geladen...',
        empty: 'Keine verlinkten Erwähnungen',
        error: 'Verlinkte Erwähnungen konnten nicht geladen werden',
        collapse: 'Verlinkte Erwähnungen einklappen',
        expand: 'Verlinkte Erwähnungen ausklappen',
      },
      placeholder: {
        emptyDoc: "Schreib etwas oder drücke '/' für Befehle…",
        emptyBlock: "Drücke '/' für Befehle",
      },
      blockHandle: {
        addBlock: 'Block hinzufügen',
        addBelowHint: 'Klicken, um darunter einzufügen',
        addAboveHint: ({ modifier }: { modifier: string }) =>
          `${modifier}-Klick fügt darüber ein`,
        dragHandle: 'Ziehen zum Verschieben',
      },
      slashCommand: {
        groupBasic: 'Grundbausteine',
        groupLists: 'Listen',
        groupTime: 'Zeit',
        groupTable: 'Tabelle',
        empty: 'Keine Ergebnisse',
        paragraph: 'Text',
        paragraphDesc: 'Einfacher Absatztext',
        heading1: 'Überschrift 1',
        heading1Desc: 'Große Abschnittsüberschrift',
        heading2: 'Überschrift 2',
        heading2Desc: 'Mittlere Abschnittsüberschrift',
        heading3: 'Überschrift 3',
        heading3Desc: 'Kleine Abschnittsüberschrift',
        codeBlock: 'Codeblock',
        codeBlockDesc: 'Code mit Syntaxhervorhebung',
        mathBlock: 'Matheblock',
        mathBlockDesc: 'Bearbeitbare TeX-Gleichung',
        table: 'Tabelle',
        tableDesc: 'Einfache Tabelle einfügen',
        frontmatter: 'Frontmatter',
        frontmatterDesc: 'YAML-Eigenschaften am Anfang',
        bulletList: 'Aufzählung',
        bulletListDesc: 'Einfache Liste mit Punkten',
        numberedList: 'Nummerierte Liste',
        numberedListDesc: 'Liste mit Nummerierung',
        todoList: 'To-do-Liste',
        todoListDesc: 'Aufgaben mit Kontrollkästchen',
        date: 'Datum',
        dateDesc: 'Datum aus dem Kalender wählen',
        today: 'Heute',
        todayDesc: 'Heutiges Datum einfügen',
        yesterday: 'Gestern',
        yesterdayDesc: 'Gestriges Datum einfügen',
        nextWeek: 'Nächste Woche',
        nextWeekDesc: 'Datum der nächsten Woche einfügen',
        nextMonth: 'Nächster Monat',
        nextMonthDesc: 'Datum des nächsten Monats einfügen',
        hintSelect: 'Enter zum Auswählen',
        hintDismiss: 'Esc zum Schließen',
      },
      tableMenu: {
        label: 'Tabellenoptionen',
        addRowAbove: 'Zeile oberhalb einfügen',
        addRowBelow: 'Zeile unterhalb einfügen',
        addColumnLeft: 'Spalte links einfügen',
        addColumnRight: 'Spalte rechts einfügen',
        alignColumn: 'Spalte ausrichten',
        alignNone: 'Keine',
        alignLeft: 'Links',
        alignCenter: 'Zentriert',
        alignRight: 'Rechts',
        deleteRow: 'Zeile löschen',
        deleteColumn: 'Spalte löschen',
        deleteTable: 'Tabelle löschen',
      },
    },
    omniSearch: {
      dialogTitle: 'Omni-Befehlsleiste',
      inputPlaceholder: 'Befehl eingeben oder suchen...',
      viewAllCommands: 'Alle Befehle anzeigen',
      recentNotesHeading: 'Letzte Notizen',
      commandsHeading: '> Befehle',
      allFilesHeading: 'Alle Dateien',
      filteredHeading: 'Gefiltert',
      noResults: 'Keine Ergebnisse gefunden.',
    },
    sidebar: {
      newLabel: 'Neu',
      appActionsLabel: 'App-Aktionen',
      omniSearch: 'Omni-Suche',
      allCommands: 'Alle Befehle',
      settings: 'Einstellungen',
      linksLabel: 'Links',
      homepage: 'Startseite',
      githubProject: 'GitHub-Projekt',
      reportIssue: 'Problem melden',
      twitter: 'Twitter',
      discord: 'Discord',
      footerTitle: 'Learnitive',
      toggleSidebarSr: 'Seitenleiste umschalten',
      toggleSidebarRailTitle:
        'Seitenleiste skalieren. Doppelklicken zum Zurücksetzen.',
    },
    settings: {
      title: 'Einstellungen',
      backToApp: 'Zurück zur App',
      general: {
        title: 'Allgemein',
        appearanceSection: 'Darstellung',
        themeTitle: 'Theme',
        themeDescription: 'Wählen Sie, wie Learnitive auf diesem Gerät aussieht.',
        themeLabel: 'Theme-Einstellung',
        editorSection: 'Editor',
        assetLocationTitle: 'Asset-Speicherort',
        assetLocationDescription:
          'Waehle, wo eingefuegte und abgelegte Dateien neben Notizen gespeichert werden.',
        assetsFolder: 'Assets-Ordner',
        adjacentToNote: 'Neben der Notiz',
        wideEditorTitle: 'Editorbreite',
        wideEditorDescription:
          'Verfügbare Fensterbreite zum Bearbeiten von Notizen nutzen.',
        wideEditorToggle: 'Breiten Editor verwenden',
        defaultWidth: 'Standard',
        wideWidth: 'Breit',
        enabled: 'Aktiviert',
        disabled: 'Deaktiviert',
      },
      workspaces: {
        title: 'Arbeitsbereiche',
        sectionTitle: 'Arbeitsbereiche',
        newWorkspace: 'Neues Projekt',
        emptyTitle: 'Keine Arbeitsbereiche',
        emptyDescription:
          'Erstellen Sie einen Arbeitsbereich, um Notizen zu schreiben.',
        noteCount: ({ count }: { count: number }) =>
          count === 1 ? '1 Notiz' : `${count} Notizen`,
        noteCountLoading: 'Notizen werden geladen...',
        noteCountUnavailable: 'Notizen nicht verfügbar',
        lastOpened: 'Zuletzt geöffnet',
        neverOpened: 'Nie geöffnet',
        actionsLabel: ({ wsName }: { wsName: string }) =>
          `Arbeitsbereichsaktionen für ${wsName}`,
        openWorkspace: 'Arbeitsbereich öffnen',
        deleteWorkspace: 'Arbeitsbereich löschen',
      },
      recovery: {
        title: 'Wiederherstellen',
        description:
          'Learnitive speichert regelmäßig Schnappschüsse wiederherstellbarer Textdateien während der Bearbeitung. Stellen Sie jeden Schnappschuss als neue Datei wieder her — aktuelle Projektdateien werden nie überschrieben.',
        searchPlaceholder: 'Dateien durchsuchen...',
        searchLabel: 'Schnappschüsse durchsuchen',
        workspaceLabel: 'Arbeitsbereich',
        allWorkspaces: 'Alle Arbeitsbereiche',
        emptyTitle: 'Noch keine Schnappschüsse',
        emptyDescription:
          'Schnappschüsse werden automatisch erstellt, sobald Sie Markdown- oder TeX-Quelldateien in diesem Arbeitsbereich bearbeiten.',
        noMatches: 'Keine Schnappschüsse entsprechen Ihrer Suche.',
        noteColumn: 'Datei',
        timeColumn: 'Erstellt',
        wordCountColumn: 'Wörter',
        actionsColumn: 'Aktionen',
        recoverAction: 'Wiederherstellen',
        loading: 'Schnappschüsse werden geladen...',
        loadFailed: 'Schnappschüsse konnten nicht geladen werden.',
        noWorkspaces:
          'Erstellen Sie einen Arbeitsbereich, um Datei-Schnappschüsse zu sammeln.',
        previewTitle: ({ fileName }: { fileName: string }) =>
          `Schnappschuss von ${fileName}`,
        previewLoading: 'Schnappschuss wird geladen...',
        previewUnavailable:
          'Dieser Schnappschuss ist nicht mehr verfügbar. Er wurde möglicherweise bereinigt.',
        recoverAsNewNote: 'Als neue Datei wiederherstellen',
        closeButton: 'Schließen',
      },
      nav: {
        general: 'Allgemein',
        workspaces: 'Arbeitsbereiche',
        recovery: 'Wiederherstellen',
      },
    },
    pageAsset: {
      downloadButton: 'Download',
      openExternallyButton: 'In einer anderen App öffnen',
      openExternallyFailed:
        'Die App-Auswahl konnte nicht geöffnet werden. Laden Sie die Datei stattdessen herunter.',
      loading: 'Asset wird geladen...',
      unavailable: 'Dieses Asset kann nicht geladen werden.',
      noPreview:
        'Diese Datei kann hier nicht als Vorschau angezeigt werden. Laden Sie sie herunter, um den Inhalt zu sehen.',
      videoUnsupported: 'Ihr Browser kann dieses Videoformat nicht abspielen.',
      audioUnsupported: 'Ihr Browser kann dieses Audioformat nicht abspielen.',
    },
    dialogs: {
      staleTab: {
        title: 'Eine neuere Version von Learnitive läuft',
        description:
          'Ein anderer Tab hat eine neuere Version von Learnitive geöffnet. Laden Sie diesen Tab neu, um alles synchron zu halten — Ihre Notizen sind sicher.',
        reloadButton: 'Tab neu laden',
      },
      changeTheme: {
        searchPlaceholder: 'Wählen Sie eine Theme-Einstellung',
        title: 'Theme ändern',
        groupLabel: 'Themes',
        emptyMessage: 'Keine Themes verfügbar',
        options: {
          system: 'System',
          light: 'Hell',
          dark: 'Dunkel',
        },
      },
      createFile: {
        title: 'Projektdatei erstellen',
        description: 'Erstellt eine Datei mit exakt dem angegebenen Namen und der angegebenen Erweiterung.',
        inputLabel: 'Dateiname',
        placeholder: 'main.tex',
        submitText: 'Erstellen',
      },
      createNote: {
        title: 'Notiz erstellen',
        description:
          'Benennen Sie die Notiz, bevor sie diesem Arbeitsbereich hinzugefügt wird.',
        inputLabel: 'Notizname',
        placeholder: 'Unbenannte Notiz',
        submitText: 'Erstellen',
      },
      deleteNote: {
        placeholder: 'Wählen oder tippen Sie eine Notiz zum Löschen',
        badgeText: 'Notiz löschen',
        groupHeading: 'Notizen',
        emptyMessage: 'Keine Notizen gefunden',
        hintDelete: 'Wählen Sie eine Notiz aus, um das Löschen zu bestätigen',
      },
      confirmDelete: {
        title: 'Löschen bestätigen',
        description: ({ fileName }: { fileName: string }) =>
          `Sind Sie sicher, dass Sie "${fileName}" löschen möchten?`,
        continueText: 'Löschen',
      },
      confirmDeleteFiles: {
        title: 'Löschen bestätigen',
        description: ({
          count,
          fileNames,
        }: {
          count: number;
          fileNames: string[];
        }) =>
          `${count} Dateien löschen? ${fileNames.slice(0, 5).join(', ')}${
            fileNames.length > 5 ? ', ...' : ''
          } werden entfernt.`,
        continueText: 'Dateien löschen',
      },
      renameNote: {
        title: 'Notiz umbenennen',
        description: ({
          fileNameWithoutExtension,
        }: {
          fileNameWithoutExtension: string;
        }) => `Wählen Sie einen neuen Namen für „${fileNameWithoutExtension}“.`,
        inputLabel: 'Neuer Name',
        placeholder: 'Neuer Notizname',
        submitText: 'Umbenennen',
      },
      renameFile: {
        title: 'Datei umbenennen',
        description: ({ fileName }: { fileName: string }) =>
          `Wählen Sie einen neuen Namen für "${fileName}".`,
        inputLabel: 'Neuer Dateiname',
        placeholder: 'Neuer Dateiname',
        submitText: 'Umbenennen',
      },
      moveNote: {
        searchPlaceholder: 'Wählen Sie einen Pfad zum Verschieben der Notiz',
        title: ({
          fileNameWithoutExtension,
        }: {
          fileNameWithoutExtension: string;
        }) => `Verschieben von "${fileNameWithoutExtension}"`,
        emptyMessage:
          'Keine Ordner vorhanden, in die diese Notiz verschoben werden kann.',
        emptyActionText: 'Ordner erstellen',
        groupLabel: 'Verzeichnisse',
        hintClick: 'Enter drücken oder klicken',
        hintDrag:
          'Tipp: Versuchen Sie, eine Notiz in der Seitenleiste zu ziehen',
        hintCreateDirectory:
          'Erstellen Sie zuerst einen Ordner und verschieben Sie dann diese Notiz.',
      },
      createDirectory: {
        title: 'Ordner erstellen',
        description:
          'Fügen Sie einen Ordner hinzu, um Notizen in diesem Arbeitsbereich zu organisieren.',
        inputLabel: 'Ordnername',
        placeholder: 'Ordnername',
        submitText: 'Erstellen',
      },
      renameDirectory: {
        placeholder: 'Geben Sie einen neuen Ordnernamen an',
        badgeText: ({ directoryName }: { directoryName: string }) =>
          `"${directoryName}" umbenennen`,
        optionTitle: 'Ordnerumbenennung bestätigen',
      },
      confirmDeleteDirectory: {
        title: 'Löschen bestätigen',
        description: ({ directoryName }: { directoryName: string }) =>
          `"${directoryName}" und alle enthaltenen Notizen löschen?`,
        continueText: 'Ordner löschen',
      },
      switchWorkspace: {
        searchPlaceholder: 'Wählen Sie einen Arbeitsbereich zum Wechseln',
        title: 'Arbeitsbereich wechseln',
        groupLabel: 'Arbeitsbereiche',
        emptyMessage: 'Keine Arbeitsbereiche gefunden',
      },
      deleteWorkspace: {
        searchPlaceholder: 'Wählen Sie einen Arbeitsbereich zum Löschen',
        title: 'Arbeitsbereich löschen',
        groupLabel: 'Arbeitsbereiche',
        emptyMessage: 'Keine Arbeitsbereiche gefunden',
      },
      confirmDeleteWorkspace: {
        title: 'Löschen bestätigen',
        description: ({ wsName }: { wsName: string }) =>
          `Sind Sie sicher, dass Sie den Arbeitsbereich "${wsName}" löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.`,
        continueText: 'Löschen',
      },
      nativeFsAuth: {
        title: 'Berechtigung erteilen?',
        descriptionRetry: ({ wsName }: { wsName: string }) =>
          `Das hat nicht funktioniert. Learnitive benötigt Ihre Berechtigung für den Zugriff auf "${wsName}"`,
        continueTextRetry: 'Erneut versuchen',
        descriptionInitial: ({ wsName }: { wsName: string }) =>
          `Learnitive benötigt Ihre Berechtigung für den Zugriff auf "${wsName}"`,
        continueTextInitial: 'Erteilen',
      },
      createWorkspace: {
        invalidName: 'Ungültiger Arbeitsbereichsname',
        browserTitle: 'Browser',
        browserDescription: 'Arbeitsbereichsdaten im Browserspeicher speichern',
        nativeFsTitle: 'Natives Dateisystem',
        nativeFsDescription:
          'Arbeitsbereichsdaten im nativen Dateisystem speichern',
        errorTitle: 'Fehler',
        noStorageTypes: 'Keine Speicherarten verfügbar.',
        selectTypeTitle: 'Wählen Sie einen Arbeitsbereichstyp',
        selectTypeDescription:
          'Wählen Sie, wo dieser Arbeitsbereich seine Notizen speichert.',
        dataPrivacyLink: 'Ihre Daten bleiben bei Ihnen',
        enterNameTitle: 'Arbeitsbereichsnamen eingeben',
        enterNameDescription:
          'Bitte geben Sie einen Namen für Ihren Arbeitsbereich ein.',
        nameLabel: 'Arbeitsbereichsname',
        invalidNameDefault: 'Ungültiger Arbeitsbereichsname',
        selectDirectoryTitle: 'Verzeichnis auswählen',
        selectDirectoryDescription:
          'Wählen Sie ein Verzeichnis zum Speichern Ihrer Notizen.',
        directoryPickingUnsupported:
          'Verzeichnisauswahl wird nicht unterstützt.',
        pickDirectoryButton: 'Verzeichnis auswählen',
        invalidDirectoryDefault: 'Ungültige Verzeichnisauswahl',
      },
      allFiles: {
        title: 'Alle Dateien',
        searchPlaceholder: 'Dateien suchen...',
        emptyMessage: 'Keine Dateien gefunden.',
      },
      singleSelect: {
        placeholderDefault: 'Wählen Sie eine Option...',
        emptyMessageDefault: 'Keine Elemente gefunden.',
      },
      singleInput: {
        placeholderDefault: 'Eingabe..',
      },
    },
    errors: {
      workspace: {
        notOpened: 'Kein Arbeitsbereich geöffnet',
        noNoteOpenCannotToggleWideEditor:
          'Keine Notiz geöffnet, Breitbild-Editor kann nicht umgeschaltet werden.',
        noNotesToDelete:
          'Keine Notizen zum Löschen vorhanden oder bereitgestellt',
        invalidMetadata: ({ wsName }: { wsName: string }) =>
          `Ungültige Arbeitsbereichsmetadaten für ${wsName}. Fehlendes Root-Verzeichnis-Handle`,
        noNoteOpenToClone: 'Keine Notiz zum Klonen geöffnet',
        noWorkspaceForDailyNote:
          'Kein Arbeitsbereich geöffnet, um eine tägliche Notiz zu erstellen.',
        noNoteOpened: 'Derzeit ist keine Notiz geöffnet.',
      },
      file: {
        invalidNotePath: 'Ungültiger Notizpfad angegeben',
        invalidNoteName: 'Ungültiger Notizname angegeben',
        cannotMoveDuringRename:
          'Datei kann während des Umbenennens nicht verschoben werden. Verwenden Sie den Verschiebebefehl.',
        cannotRenameToDifferentWorkspace:
          'Notiz kann nicht in einen anderen Arbeitsbereich umbenannt werden',
        alreadyExistsInDest: ({ fileName }: { fileName: string }) =>
          `Eine Notiz mit dem Namen „${fileName}“ existiert bereits im Zielordner`,
        originalNoteNotFound: 'Originalnotiz nicht gefunden',
      },
      wsPath: {
        invalidNotePath: 'Ungültiger Notizpfad',
        absolutePathNotAllowed: 'Absolute Pfade sind nicht erlaubt',
        directoryTraversalNotAllowed: 'Verzeichniswechsel ist nicht erlaubt',
        invalidCharsInPath: 'Ungültige Zeichen im Pfad',
        pathTooLong: 'Pfad überschreitet maximale Länge',
        invalidDirectoryPath: 'Ungültiger Verzeichnispfad',
      },
      nativeFs: {
        errorOpening: {
          title: 'Fehler beim Öffnen Ihres Notizordners.',
          message:
            'Bitte stellen Sie sicher, dass sich Ihr Notizordner an einem üblichen Ort wie Dokumente oder Desktop befindet.',
        },
        clickedTooSoon: {
          title: 'Das hat nicht funktioniert',
          message:
            'Bitte versuchen Sie es erneut und wählen Sie Ihren Notizordner aus, wenn Sie dazu aufgefordert werden.',
        },
        accessDenied: {
          title: 'Zugriff verweigert',
          message:
            'Bitte erlauben Sie den Zugriff auf Ihren Ordner, um fortzufahren.',
        },
        unknown: {
          title: 'Unbekannter Fehler aufgetreten',
          message:
            'Bitte versuchen Sie es erneut oder laden Sie die Seite neu.',
        },
      },
      workspaceValidation: {
        typeRequired: 'Arbeitsbereichstyp ist erforderlich',
        nameRequired: 'Arbeitsbereichsname ist erforderlich',
        dirRequired: 'Verzeichnisauswahl ist erforderlich',
      },
    },
    toasts: {
      editorCommandUnavailable:
        'Dieser Editor-Befehl ist hier nicht möglich. Setze den Cursor in einen normalen Textblock und versuche es erneut.',
      assetSaveInProgress: ({
        fileName,
        remainingCount,
      }: {
        fileName: string;
        remainingCount: number;
      }) =>
        remainingCount > 0
          ? `${fileName} + ${remainingCount} weitere werden gespeichert...`
          : `${fileName} wird gespeichert...`,
      assetSavePartial: ({
        failedCount,
        failedFileName,
        failedRemainingCount,
        savedFileName,
        savedRemainingCount,
      }: {
        failedCount: number;
        failedFileName: string;
        failedRemainingCount: number;
        savedFileName?: string;
        savedRemainingCount: number;
      }) => {
        const failedLabel =
          failedRemainingCount > 0
            ? `${failedFileName} + ${failedRemainingCount} weitere`
            : failedFileName;
        if (!savedFileName) {
          return `${failedLabel} konnte nicht gespeichert werden.`;
        }
        const savedLabel =
          savedRemainingCount > 0
            ? `${savedFileName} + ${savedRemainingCount} weitere`
            : savedFileName;
        return `${savedLabel} gespeichert; ${failedCount} fehlgeschlagen.`;
      },
      assetSaveSucceeded: ({
        fileName,
        remainingCount,
      }: {
        fileName: string;
        remainingCount: number;
      }) =>
        remainingCount > 0
          ? `${fileName} + ${remainingCount} weitere gespeichert`
          : `${fileName} gespeichert`,
      assetTooLarge: ({
        fileName,
        maxFileSize,
      }: {
        fileName: string;
        maxFileSize: string;
      }) =>
        `${fileName} ist zu gross. Maximale Dateigroesse ist ${maxFileSize}.`,
      fileCreated: ({ fileName }: { fileName: string }) =>
        `${fileName} erstellt`,
      fileCreateFailed: 'Datei konnte nicht erstellt werden',
      snapshotNotFound:
        'Schnappschuss nicht gefunden. Er wurde möglicherweise bereinigt.',
      snapshotRecovered: ({ fileName }: { fileName: string }) =>
        `Schnappschuss als ${fileName} wiederhergestellt`,
      snapshotRecoverFailed:
        'Schnappschuss konnte nicht wiederhergestellt werden',
      fileDeleted: ({ fileName }: { fileName: string }) =>
        `${fileName} geloescht`,
      fileDeleteFailed: 'Datei konnte nicht geloescht werden',
      filesDeleted: ({ count }: { count: number }) =>
        count === 1 ? '1 Datei geloescht' : `${count} Dateien geloescht`,
      filesDeleteFailed: 'Dateien konnten nicht geloescht werden',
      fileMoved: ({ fileName }: { fileName: string }) =>
        `${fileName} verschoben`,
      fileMoveFailed: 'Datei konnte nicht verschoben werden',
      fileRenamed: ({ fileName }: { fileName: string }) =>
        `Umbenannt zu ${fileName}`,
      fileRenameFailed: 'Datei konnte nicht umbenannt werden',
      folderCreated: ({ folderName }: { folderName: string }) =>
        `${folderName} erstellt`,
      folderDeleted: ({ folderName }: { folderName: string }) =>
        `${folderName} geloescht`,
      folderDeleteFailed: 'Ordner konnte nicht geloescht werden',
      folderRenamed: ({ folderName }: { folderName: string }) =>
        `Umbenannt zu ${folderName}`,
      folderRenameFailed: 'Ordner konnte nicht umbenannt werden',
      openAsset: 'Öffnen',
      pathCopied: 'Pfad kopiert',
      pathCopyFailed: 'Pfad konnte nicht kopiert werden',
      sourceDownloaded: 'Quelldatei heruntergeladen',
      sourceDownloadFailed: 'Quelldatei konnte nicht heruntergeladen werden',
      permissionNotGranted: 'Berechtigung nicht erteilt',
      retrySave: 'Speichern erneut versuchen',
      saveFailed:
        'Änderungen konnten nicht gespeichert werden. Versuchen Sie es erneut, um Ihre letzte Änderung zu behalten.',
    },
    pageWelcome: {
      newUser: 'Willkommen bei Learnitive',
      regularUser: 'Willkommen zurück!',
      recentWorkspacesHeading: 'Zuletzt verwendete Arbeitsbereiche',
      createWorkspacePrompt:
        'Erstellen Sie einen Arbeitsbereich, um loszulegen.',
    },
    templates: {
      title: 'Learnitive-Vorlagen',
      description: 'Erstelle ein normales portables LaTeX-Projekt aus einer kuratierten Vorlage. Veröffentlichte Vorlagen sind in jedem Tarif verfügbar.',
      browseTemplates: 'Vorlagen durchsuchen',
      updated: 'aktualisiert',
      locked: 'gesperrt',
      proBadge: 'Pro',
      categories: {
        article: 'Artikel',
        report: 'Bericht',
        presentation: 'Präsentation',
        letter: 'Brief',
        thesis: 'Abschlussarbeit',
        cv: 'Lebenslauf',
      },
      workspaceName: 'Projektname',
      workspaceNamePlaceholder: 'forschungsarbeit',
      invalidWorkspaceName: 'Gib einen gültigen Projektnamen ein.',
      storage: 'Projektspeicher',
      browserStorage: 'Browserspeicher (OPFS)',
      localFolder: 'Lokaler Ordner',
      chooseFolder: 'Leeren lokalen Ordner auswählen',
      chooseFolderFirst: 'Wähle zuerst einen leeren lokalen Ordner aus.',
      emptyFolderNotice: 'Zur Sicherheit erstellt Learnitive Vorlagen nur in einem leeren Ordner.',
      proRequired: 'Dies ist eine Learnitive-Pro-Vorlage',
      proRequiredDescription: 'Aktiviere die lebenslange 19-$-Pro-Lizenz, um Premium-/aktuelle Vorlagen zu verwenden.',
      activatePro: 'Pro aktivieren',
      createProject: 'Projekt erstellen',
      created: ({ template }: { template: string }) => `Projekt aus ${template} erstellt.`,
      createFailed: 'Das Vorlagenprojekt konnte nicht erstellt werden. Vorhandene Dateien wurden nicht überschrieben.',
      catalog: {
        blankArticle: { title: 'Leerer Artikel', description: 'Ein sauberer Artikel mit sinnvoller Typografie und Bibliografiedatei.' },
        researchPaper: { title: 'Forschungsarbeit', description: 'Ein strukturierter wissenschaftlicher Artikel mit Abstract, Methoden, Ergebnissen und Referenzen.' },
        technicalReport: { title: 'Technischer Bericht', description: 'Ein mehrteiliger Bericht für technische, wissenschaftliche und betriebliche Dokumentation.' },
        beamerPresentation: { title: 'Beamer-Präsentation', description: 'Eine minimale Präsentation mit Standard-Beamer ohne externe Theme-Ressourcen.' },
        formalLetter: { title: 'Formeller Brief', description: 'Ein Standard-LaTeX-Brief mit Platzhaltern für Absender, Empfänger und Schlussformel.' },
        modernThesis: { title: 'Moderne Abschlussarbeit', description: 'Eine mehrteilige Thesis-Vorlage mit Vorspann, Kapiteln, Bibliografie und Anhängen.' },
        conferencePaper: { title: 'Konferenzbeitrag', description: 'Ein kompakter zweispaltiger Konferenzbeitrag mit Standard-LaTeX-Paketen.' },
        academicCv: { title: 'Akademischer Lebenslauf', description: 'Eine klare CV-Vorlage für akademische, Forschungs- und technische Profile.' },
      },
    },
    pageStartupError: {
      title: 'Learnitive konnte nicht gestartet werden',
      description:
        'Ein erforderlicher Dienst ist beim Start fehlgeschlagen. Ihre Notizen wurden nicht geändert.',
      detailsLabel: 'Details zum Startfehler',
      reloadButton: 'App neu laden',
    },
    pageNotFound: {
      title: 'Seite nicht gefunden',
      goHomeButton: 'Zur Willkommensseite',
      reportButton: 'Problem melden',
    },
    pageWorkspaceNotFound: {
      title: 'Arbeitsbereich nicht gefunden',
      createWorkspaceButton: 'Projekt erstellen',
      switchWorkspaceButton: 'Projekt wechseln',
    },
    pageWsHome: {
      noNotesMessage: 'Keine Projektdateien gefunden.',
      newNoteButton: 'Neue Datei',
      switchWorkspaceButton: 'Projekt wechseln',
      importProjectZipButton: 'Projekt-ZIP importieren',
      exportProjectZipButton: 'Projekt-ZIP exportieren',
      projectMenuButton: 'Projektmenü',
      importProjectMenuItem: 'Projekt importieren…',
      downloadProjectMenuItem: 'Projekt herunterladen',
      storageMenuItem: 'Speicher…',
      projectSettingsMenuItem: 'Projekteinstellungen…',
      projectZipImportSuccess: 'Projekt importiert',
      projectZipImportFailed:
        'Der Projekt-ZIP-Import ist fehlgeschlagen. Vorhandene Dateien wurden nicht ersetzt.',
      projectZipExportSuccess: 'Projekt-ZIP heruntergeladen',
      projectZipExportFailed: 'Der Projekt-ZIP-Download ist fehlgeschlagen.',
      projectZipTooLarge: 'Diese ZIP-Datei ist für den Browser-Import zu groß.',
      storageDialogTitle: 'Projektspeicher',
      storageDialogDescription:
        'Browser-Persistenz, ungefähre Nutzung und letzte Projektsicherung prüfen.',
      storageLoading: 'Projektspeicher wird geprüft…',
      storageLocalFolder: 'Lokaler Ordner',
      storageLocalFolderDescription:
        'Dieses Projekt wird direkt im lokalen Ordner gespeichert, den Sie Learnitive freigegeben haben.',
      storagePersistenceLabel: 'Browser-Persistenz',
      storagePersistentShort: 'Dauerhaft',
      storageNotPersistentShort: 'Nicht garantiert',
      storageUsageLabel: 'Ungefähr verwendeter Browserspeicher',
      lastBackupLabel: 'Letzte Projekt-ZIP-Sicherung',
      storagePersistent: 'Browserspeicher ist dauerhaft',
      storageNotPersistent:
        'Browserspeicher kann bereinigt werden; exportieren Sie regelmäßig ZIP-Backups',
      storageUsed: 'Speicher verwendet',
      lastExported: 'letzter ZIP-Export',
      neverExported: 'Noch keine Projekt-ZIP-Sicherung exportiert.',
      requestPersistentStorage: 'Dauerhaften Speicher anfordern',
      storagePersistenceGranted: 'Dauerhafter Browserspeicher wurde gewährt.',
      storagePersistenceNotGranted:
        'Der Browser hat keinen dauerhaften Speicher gewährt. Bewahren Sie ZIP-Backups auf.',
    },
    latexSourceEditor: {
      loading: 'Quelldatei wird geladen…',
      loadFailed:
        'Learnitive konnte diese Quelldatei nicht laden. Die Datei wurde nicht verändert.',
      reloadPage: 'Seite neu laden',
      editorLabel: 'LaTeX-Quelleditor',
      undo: 'Quelltextänderung rückgängig machen',
      redo: 'Quelltextänderung wiederholen',
      save: 'Quelldatei speichern',
      saving: 'Wird gespeichert…',
      saved: 'Gespeichert',
      saveFailed: 'Speichern fehlgeschlagen',
      externalConflict: 'Externe Änderung erkannt',
      externalConflictDescription:
        'Diese Datei wurde außerhalb von Learnitive geändert, während ungespeicherte Änderungen vorhanden waren. Wählen Sie die zu behaltende Version.',
      useDiskVersion: 'Dateiversion verwenden',
      keepMyVersion: 'Meine Version behalten',
      insertImage: 'Bild einfügen',
      imageInserted: ({ fileName }: { fileName: string }) =>
        `${fileName} wurde im Projekt gespeichert und in den Quelltext eingefügt.`,
      imageInsertFailed: 'Das Bild konnte nicht gespeichert und eingefügt werden.',
      loadingEquation: 'Gleichungseditor wird geladen…',
      insertInlineMath: 'Inline-Mathematik',
      insertDisplayMath: 'Gleichung',
      editEquation: 'Gleichung bearbeiten',
      insertEquation: 'Gleichung einfügen',
      equationPreview: 'Gleichungsvorschau',
      equationEditor: 'Gleichungseditor',
      equationSymbols: 'Gleichungssymbole',
      inlineEquation: 'Inline-Gleichung',
      displayEquation: 'Angezeigte Gleichung',
      closeEquationEditor: 'Gleichungseditor schließen',
      applyEquation: 'Übernehmen',
      cancelEquation: 'Abbrechen',
      equationSaveShortcut: 'Strg/Cmd+Enter zum Übernehmen',
      mathSourceChanged:
        'Der Quelltext wurde geändert, während der Gleichungseditor geöffnet war. Öffnen Sie die Gleichung erneut und versuchen Sie es noch einmal.',
      sourceOnlyEquation: 'Nur Quelltext',
      sourceOnlyEquationDescription:
        'Diese Gleichung enthält strukturelle LaTeX-Anweisungen, die Learnitive nicht durch MathLive verarbeitet.',
    },
    latexVisual: {
      source: 'Quelltext',
      visual: 'Visuell',
      loading: 'Visuelle Ansicht wird erstellt…',
      loadFailed: 'Learnitive konnte die visuelle Ansicht nicht erstellen. Der LaTeX-Quelltext wurde nicht verändert.',
      losslessNotice: 'Der visuelle Modus bearbeitet nur sichere Quellbereiche. Nicht unterstütztes LaTeX bleibt geschützt.',
      rawBlocks: ({ count }: { count: number }) => `${count} geschützte Rohblöcke`,
      sourceChanged: 'Der LaTeX-Quelltext wurde während der visuellen Gleichungsbearbeitung geändert. Öffnen Sie den visuellen Modus erneut und versuchen Sie es noch einmal.',
    },
    bibliography: {
      references: 'Literatur',
      entries: ({ count }: { count: number }) => `${count} Bibliografieeinträge`,
      loading: 'Bibliografie wird geladen…',
      loadFailed: 'Learnitive konnte die Projektbibliografie nicht laden.',
      empty: 'Keine BibTeX-/BibLaTeX-Einträge in dieser Datei gefunden.',
      losslessNotice: 'Die visuelle Bibliografie bearbeitet nur einzelne Feldbereiche. Kommentare, Reihenfolge und unbekannte Felder bleiben erhalten.',
      addField: ({ field }: { field: string }) => `${field} hinzufügen`,
      otherFields: 'Weitere Felder',
      entryChanged: 'Dieser Bibliografieeintrag wurde geändert. Öffnen Sie ihn erneut und versuchen Sie es noch einmal.',
      editFailed: 'Das Bibliografiefeld konnte nicht aktualisiert werden.',
      sourceChanged: 'Der Quelltext wurde geändert, während dieser visuelle Editor geöffnet war. Öffnen Sie das Element erneut und versuchen Sie es noch einmal.',
      insertCitation: 'Zitat einfügen',
      citationDescription: 'Durchsuchen Sie die Projektbibliografie und wählen Sie einen oder mehrere Zitationsschlüssel.',
      searchCitations: 'Titel, Autor, Jahr oder Zitationsschlüssel suchen',
      noCitations: 'Keine passenden Bibliografieeinträge.',
      applyCitation: ({ count }: { count: number }) => `${count} Zitat${count === 1 ? '' : 'e'} verwenden`,
      cancel: 'Abbrechen',
      apply: 'Übernehmen',
      editFootnote: 'Fußnote bearbeiten',
      footnoteDescription: 'Nur der Inhalt der Fußnote wird geändert; der umgebende LaTeX-Befehl bleibt erhalten.',
      footnote: 'Fußnote',
      sourceOnlyFootnote: 'Diese Fußnote enthält LaTeX und muss im Quellmodus bearbeitet werden.',
      referenceMissing: 'Die referenzierte Marke wurde in diesem Projekt nicht gefunden.',
      figure: 'Abbildung',
      table: 'Tabelle',
      figureTableDescription: 'Bearbeiten Sie die Beschriftung, ohne die umgebende LaTeX-Umgebung neu zu serialisieren.',
      caption: 'Beschriftung',
      label: 'Marke',
      widthPercent: 'Breite (% der Zeilenbreite)',
      heightPercent: 'Höhe (% der Texthöhe)',
      scale: 'Skalierung',
      keepAspectRatio: 'Seitenverhältnis beibehalten',
      centered: 'Abbildung zentrieren',
      placement: 'Platzierung',
      accessibilityDescription: 'Barrierefreie Beschreibung',
      accessibilityExistingOnly: 'Learnitive bearbeitet einen vorhandenen \\Description-Befehl, fügt aber keine klassenspezifische Barrierefreiheits-Syntax automatisch hinzu.',
      tableStructure: 'Tabellenstruktur',
      tableAlignment: 'Ausrichtung der ausgewählten Spalte',
      tableImport: 'CSV / tabulatorgetrennte Daten',
      replaceTableData: 'Tabellendaten ersetzen',
      sourceOnlyStructure: 'Diese Tabellenstruktur kann nur im Quellmodus sicher bearbeitet werden.',
      replaceImage: 'Bild ersetzen',
      replacementStored: ({ fileName }: { fileName: string }) => `${fileName} wurde als Ersatzbild gespeichert.`,
      imageReplaceFailed: 'Das Ersatzbild konnte nicht gespeichert werden.',
    },
    projectOutline: {
      title: 'Navigator',
      navigator: 'Projektnavigator',
      outline: 'Gliederung',
      labels: 'Labels',
      references: 'Referenzen',
      citations: 'Zitate',
      bibliography: 'Bibliografie',
      refresh: 'Projektnavigator aktualisieren',
      close: 'Schließen',
      loading: 'Projekt wird indiziert…',
      empty: 'Keine Dokumentüberschriften gefunden.',
      emptySection: 'Keine Einträge in diesem Bereich.',
      emptyBibliography: 'Keine Bibliografieeinträge gefunden.',
      warning: 'Nicht aufgelöster oder doppelter Eintrag',
      issues: ({ count }: { count: number }) => `${count} Projektprobleme`,
    },
    collaboration: {
      button: 'Zusammenarbeiten',
      title: 'Zusammenarbeit',
      description: 'Dieses Projekt live über die temporäre Learnitive-Yjs-Verbindung gemeinsam bearbeiten.',
      connected: 'Verbunden',
      connecting: 'Verbindung wird hergestellt…',
      host: 'Host',
      guest: 'Gast',
      shareCode: 'Projektlink',
      copyShareCode: 'Projektlink kopieren',
      copied: 'Projektlink kopiert',
      shareCodeHint: 'Jede Person mit diesem Live-Sitzungslink kann beitreten. Das rohe Geheimnis bleibt im URL-Fragment und wird nach dem Beitritt aus der Adressleiste entfernt.',
      collaborators: 'Mitarbeitende',
      you: 'Sie',
      waiting: 'Warten auf weitere Mitarbeitende…',
      missingAssets: 'Projektdateien werden beim Beitritt kopiert',
      missingAssetsDescription: 'Quelltext wird über Yjs synchronisiert. Binäre Dateien werden beim Beitritt als unveränderlicher Projektschnappschuss integritätsgeprüft in den Browser kopiert.',
      importAssets: 'Projektdateien',
      assetsImported: ({ fileCount }: { fileCount: number }) => `${fileCount} Projektdatei${fileCount === 1 ? '' : 'en'} importiert`,
      leave: 'Sitzung verlassen',
      yourName: 'Ihr Name',
      passwordOptional: 'Sitzungsgeheimnis',
      startTitle: 'Sitzung starten',
      startDescription: 'Das aktuelle Projekt über die gleichursprüngliche Yjs-Verbindung teilen. Live-Bearbeitung ist nur im Quellmodus verfügbar, die Projektstruktur bleibt gesperrt und die Kompilierung erfolgt lokal im Browser.',
      start: 'Zusammenarbeit starten',
      joinTitle: 'Sitzung beitreten',
      joinDescription: 'Beim ersten Beitritt einen leeren Learnitive-Arbeitsbereich verwenden, damit fremde lokale Dateien niemals überschrieben werden.',
      join: 'Zusammenarbeit beitreten',
      localFirstNotice: 'Dokumenttext bleibt browser-/lokal-first. Live-Yjs-Updates werden von Learnitive nur temporär weitergeleitet und fortlaufend in den gewählten Arbeitsbereichsspeicher jedes Teilnehmenden gespiegelt; der Relay-Dienst speichert keine Manuskriptdateien dauerhaft.',
      failed: 'Aktion zur Zusammenarbeit fehlgeschlagen',
      importBlocked: 'Verlassen Sie die Zusammenarbeit, bevor Sie ein Projekt-ZIP importieren.',
    },
    projectTools: {
      button: 'Werkzeuge',
      mobileButton: 'Werkzeuge',
      title: 'Projektwerkzeuge',
      description: 'Projektstruktur durchsuchen, Learnitive Doctor ausführen und sichere projektweite Refactorings anwenden.',
      search: 'Suchen',
      text: 'Text',
      symbols: 'Symbole',
      meaning: 'Bedeutung',
      meaningTitle: 'Bedeutungssuche · EmbeddingGemma',
      meaningDescription: 'Durchsucht die wissenschaftliche Bedeutung von Projektpassagen mit einem privaten, browserlokalen Embedding-Index. Exakte Symbole, Referenzen und Zitationsschlüssel bleiben deterministische Suchen.',
      meaningPrivacy: 'Projekttext und Vektoren bleiben in diesem Browser. Der Download von Embedding-Laufzeit und Modell nutzt das Netzwerk; Indexierung und Suche laden Projekt oder Anfrage nicht hoch.',
      meaningSearchPlaceholder: 'Wo diskutiere ich Robustheit?',
      downloadEmbedding: 'EmbeddingGemma herunterladen',
      removeEmbedding: 'EmbeddingGemma entfernen',
      indexMeaning: 'Projekt indexieren',
      clearMeaning: 'Bedeutungsindex löschen',
      meaningUnsupported: 'Lokale Embeddings sind in diesem Browser nicht verfügbar.',
      meaningFailed: 'Die Projekt-Bedeutung konnte diesen Vorgang nicht abschließen.',
      meaningModelReady: 'EmbeddingGemma ist bereit.',
      meaningModelRemoved: 'EmbeddingGemma wurde aus diesem Browser entfernt.',
      meaningIndexed: 'Projekt-Bedeutungsindex aktualisiert.',
      meaningIndexCleared: 'Projekt-Bedeutungsindex gelöscht.',
      meaningNoResults: 'Keine semantisch verwandten Projektpassagen gefunden.',
      meaningDownloading: ({ percent }: { percent: number }) => `EmbeddingGemma wird heruntergeladen… ${percent}%`,
      meaningProgress: ({ phase, completed, total, reused }: { phase: string; completed: number; total: number; reused: number }) => `${phase} · ${completed}/${total}${reused ? ` · ${reused} wiederverwendet` : ''}`,
      meaningIndexedPassages: ({ count }: { count: number }) => `${count} indexierte Passage${count === 1 ? '' : 'n'}`,
      cancel: 'Abbrechen',
      textSearchPlaceholder: 'Text im gesamten Projekt durchsuchen',
      searchPlaceholder: 'Überschriften, Labels, Referenzen, Zitate, Bibliografie, Umgebungen oder Dateien durchsuchen',
      scope: 'Bereich',
      wholeProject: 'Gesamtes Projekt',
      currentFolder: 'Aktueller Ordner',
      currentFile: 'Aktuelle Datei',
      includeGlobs: 'Einschlussmuster (kommagetrennt)',
      excludeGlobs: 'Ausschlussmuster (kommagetrennt)',
      caseSensitive: 'Groß-/Kleinschreibung beachten',
      wholeWord: 'Ganzes Wort',
      regex: 'Regulärer Ausdruck',
      replaceWith: 'Ersetzen durch…',
      replaceOne: 'Ersetzen',
      replaceSelected: 'Ausgewählte ersetzen',
      replaceAll: 'Alle ersetzen',
      selectAll: 'Alle auswählen',
      selectNone: 'Auswahl aufheben',
      noTextResults: 'Kein passender Projekttext.',
      affectedSummary: ({ matches, files }: { matches: number; files: number }) => `${matches} Treffer in ${files} Datei${files === 1 ? '' : 'en'}`,
      replaceComplete: ({ count, files }: { count: number; files: number }) => `${count} Treffer in ${files} Datei${files === 1 ? '' : 'en'} ersetzt.`,
      replaceFailed: 'Projektweites Ersetzen fehlgeschlagen.',
      searchFailed: 'Projektsuche fehlgeschlagen.',
      noResults: 'Keine passenden Projektelemente.',
      doctor: 'Doctor',
      doctorFailed: 'Learnitive Doctor konnte dieses Projekt nicht prüfen.',
      doctorRunning: 'Projektzustand wird geprüft…',
      healthScore: 'Projektzustand',
      errors: 'Fehler',
      warnings: 'Warnungen',
      healthy: 'Keine Projektprobleme gefunden.',
      refresh: 'Aktualisieren',
      refactor: 'Refaktorieren',
      renameLabel: 'Marke umbenennen',
      renameCitation: 'Zitationsschlüssel umbenennen',
      moveFile: 'Datei verschieben/umbenennen',
      currentName: 'Aktueller Name',
      newName: 'Neuer Name',
      currentPath: 'Aktueller Projektpfad',
      newPath: 'Neuer Projektpfad',
      symbolRefactorNotice: 'Alle indizierten Verwendungen werden gemeinsam aktualisiert. Kollisionen werden abgelehnt.',
      fileRefactorNotice: 'Learnitive verschiebt die Datei und aktualisiert indizierte LaTeX-Verweise gemeinsam; bei Fehlern wird zurückgerollt.',
      applyRefactor: 'Refactoring anwenden',
      refactorComplete: 'Projekt-Refactoring abgeschlossen.',
      refactorFailed: 'Projekt-Refactoring fehlgeschlagen.',
    },
    pro: {
      title: 'Learnitive Pro',
      description: 'Aktivieren Sie eine Learnitive Pro Lifetime- oder Pro Monthly-Lizenz in diesem Browser.',
      checking: 'Lokale Pro-Berechtigung wird geprüft…',
      active: 'Learnitive Pro ist aktiv',
      lifetime: '29 $ lebenslanges Pro',
      includes: 'Pro bietet unbegrenzte Projekte, sauberen PDF-Export und Priority Support. Die Kernfunktionen für Schreiben, Kompilieren, KI, Vorlagen und Zusammenarbeit bleiben im Free-Tarif verfügbar.',
      licenseKey: 'Lizenzschlüssel',
      activate: 'Pro aktivieren',
      activated: 'Learnitive Pro aktiviert.',
      activationFailed: 'Die Lizenz konnte nicht aktiviert werden.',
      source: 'Lizenzquelle',
      predefined: 'Learnitive-Lizenz',
      fingerprint: 'Fingerabdruck',
      offlineUntil: 'Offline-Berechtigung gültig bis',
      offlineExplanation: 'Beim normalen Start wird diese signierte Berechtigung lokal geprüft. Learnitive kontaktiert den Lizenzdienst nur zur Aktivierung oder regelmäßigen Aktualisierung.',
      keyPrivacy: 'Der Schlüssel wird nur zur Prüfung an den Learnitive-Lizenzendpunkt gesendet. Payhip-Geheimnisse bleiben serverseitig.',
      refresh: 'Lizenz aktualisieren',
      refreshed: 'Learnitive-Pro-Lizenz aktualisiert.',
      refreshFailed: 'Die Lizenz konnte derzeit nicht aktualisiert werden.',
      deactivate: 'In diesem Browser deaktivieren',
      manage: 'Learnitive-Pro-Lizenz',
      requiredForAi: 'Cloud-BYOK-Anbieter sind mit einem eigenen Anbieterschlüssel in jedem Tarif verfügbar. Lokale KI funktioniert ohne Cloud-Schlüssel.',
    },
    ai: {
      title: 'Learnitive AI',
      open: 'Learnitive AI öffnen',
      close: 'Learnitive AI schließen',
      settings: 'KI-Einstellungen',
      provider: 'Anbieter',
      model: 'Modell',
      modelPlaceholder: 'Modellnamen eingeben',
      baseUrl: 'Basis-URL',
      apiKey: 'API-Schlüssel',
      clearKey: 'API-Schlüssel löschen',
      rememberKey: 'API-Schlüssel in diesem Browser behalten',
      rememberKeyWarning: 'API-Schlüssel werden nur in IndexedDB dieses Browsers gespeichert, überstehen Neuladen und werden niemals in Ihrem Learnitive-Konto gespeichert. Löschen Sie den Schlüssel oder die Website-/Browserdaten, um sie zu entfernen.',
      saveConfig: 'KI-Einstellungen speichern',
      configSaved: 'KI-Einstellungen gespeichert.',
      newChat: 'Neuer Chat',
      welcome: 'Fragen Sie zum aktuellen Dokument oder fordern Sie eine Projektänderung an.',
      contextHint: 'Im Cloud-Modus werden nur der benötigte Kontext und angeforderte Projektdateien direkt an den gewählten Anbieter gesendet. Änderungen müssen vor der Anwendung geprüft werden.',
      inputPlaceholder: 'Learnitive AI fragen…',
      send: 'Nachricht senden',
      stop: 'KI-Anfrage stoppen',
      thinking: 'Denkt nach…',
      applying: 'Geprüfte Änderungen werden angewendet…',
      compiling: 'Geprüfte Änderungen werden kompiliert…',
      requestFailed: 'KI-Anfrage fehlgeschlagen.',
      applyFailed: 'KI-Änderungen konnten nicht angewendet werden.',
      reject: 'Ablehnen',
      apply: 'Anwenden',
      applyCompile: 'Anwenden & kompilieren',
      applied: 'KI-Änderungen angewendet.',
      appliedAndCompiled: 'KI-Änderungen angewendet und Kompilierung gestartet.',
      byokNotice: 'Cloud-BYOK: Anfragen gehen direkt von diesem Browser an den gewählten KI-Anbieter. Benutzerdefinierte Endpunkte erhalten Ihren API-Schlüssel und den ausdrücklich freigegebenen Kontext.',
    },
    aiPlaceholder: {
      title: 'Learnitive AI',
      open: 'Learnitive AI öffnen',
      close: 'Learnitive AI schließen',
      description: 'Hier befindet sich der schwebende PDF-Assistent für den BYOK-AI-Agenten aus R10.',
      contextHint: 'Er wird PDF-Seite, SyncTeX-Quellposition, Auswahl und semantischen Projektkontext verwenden, ohne das PDF zu verkleinern.',
      inputPlaceholder: 'Learnitive AI fragen…',
    },
    git: {
      button: 'Git',
      title: 'Browser-Git',
      repositoryDescription: ({ branch }: { branch: string }) =>
        `Lokales Browser-Repository · ${branch}`,
      notRepositoryDescription:
        'Initialisieren Sie Git für dieses Projekt. Projektdateien bleiben im gewählten Learnitive-Speicher; der Git-Verlauf wird lokal in diesem Browser gespeichert.',
      cloneRepository: 'Git-Repository klonen',
      cloneDescription: 'Direkt in den Browser-Projektspeicher klonen. Learnitive speichert das Repository nicht auf seinem Server.',
      cloneWorkspaceName: 'Workspace-Name',
      cloneInvalidName: 'Geben Sie einen gültigen Workspace-Namen ein.',
      cloneUrlRequired: 'Geben Sie eine Git-Repository-URL ein.',
      cloning: 'Wird geklont…',
      cloned: ({ workspace }: { workspace: string }) => `Repository nach ${workspace} geklont.`,
      cloneFailed: 'Klonen fehlgeschlagen. Der unvollständige Workspace wurde entfernt.',
      initialize: 'Git initialisieren',
      initialized: 'Git-Repository initialisiert.',
      refresh: 'Git-Status aktualisieren',
      tabs: {
        changes: 'Änderungen',
        history: 'Verlauf',
        branches: 'Branches',
        remote: 'Remote',
      },
      staged: 'Vorgemerkt',
      changes: 'Änderungen',
      noStagedChanges: 'Keine vorgemerkten Änderungen.',
      noChanges: 'Arbeitsbaum ist sauber.',
      stage: 'Vormerken',
      unstage: 'Zurücknehmen',
      stageAll: 'Alle vormerken',
      viewDiff: 'Diff',
      closeDiff: 'Schließen',
      binaryDiff: 'Binärdatei geändert',
      authorName: 'Autorname',
      authorEmail: 'Autor-E-Mail',
      commitMessage: 'Commit-Nachricht',
      commit: 'Commit',
      committed: 'Änderungen committed.',
      commitFieldsRequired: 'Autorname, E-Mail und Commit-Nachricht sind erforderlich.',
      noCommits: 'Noch keine Commits.',
      current: 'Aktuell',
      checkout: 'Auschecken',
      newBranch: 'Neuer Branch-Name',
      createBranch: 'Branch erstellen',
      branchNameRequired: 'Geben Sie einen Branch-Namen ein.',
      branchSwitched: ({ branch }: { branch: string }) => `Zu ${branch} gewechselt.`,
      remoteName: 'Remote-Name',
      remoteUrl: 'Remote-URL',
      addRemote: 'Remote hinzufügen',
      remoteFieldsRequired: 'Remote-Name und URL sind erforderlich.',
      token: 'Git-Zugriffstoken',
      tokenMemoryOnly: 'Das Token bleibt nur im Arbeitsspeicher und wird weder im Projekt noch auf Learnitive-Servern gespeichert.',
      corsProxy: 'Vertrauenswürdiger CORS-Proxy (optional)',
      fetch: 'Fetch',
      pull: 'Pull',
      push: 'Push',
      pulled: 'Remote-Änderungen übernommen.',
      pushed: 'Commits übertragen.',
    },
    noteNotFoundView: {
      title: 'Notiz nicht gefunden',
      description: 'Die gesuchte Notiz existiert nicht oder wurde verschoben.',
      viewAllNotesButton: 'Alle Notizen anzeigen',
      goBackButton: 'Zurück',
      goHomeButton: 'Startseite',
    },
    fileNotFoundView: {
      title: 'Datei nicht gefunden',
      description: 'Die gesuchte Datei existiert nicht oder wurde verschoben.',
      viewAllFilesButton: 'Alle Dateien anzeigen',
    },
    workspaceNotFoundView: {
      title: 'Arbeitsbereich nicht gefunden',
      description: ({ wsName }: { wsName: string }) =>
        `Der Arbeitsbereich "${wsName}" existiert nicht oder wurde umbenannt.`,
      genericDescription:
        'Dieser Arbeitsbereich existiert nicht oder wurde umbenannt.',
      goHomeButton: 'Zur Willkommensseite',
      switchWorkspaceButton: 'Projekt wechseln',
    },
    landingPage: 'Startseite',
    components: {
      appSidebar: {
        openedLabel: 'Geöffnet',
        filesLabel: 'Dateien',
        fileTreeLabel: 'Projektdateien',
        noteCount: ({ count }: { count: number }) =>
          count === 1 ? '1 Notiz' : `${count} Notizen`,
        newFileActionTitle: 'Neue Datei',
        newFileActionSr: 'Datei erstellen',
        newFolderActionTitle: 'Neuer Ordner',
        collapseAllFoldersActionTitle: 'Alle Ordner einklappen',
        showNoteFilesOnlyActionTitle: 'Nur Markdown anzeigen',
        newNoteHereActionTitle: 'Neue Datei hier',
        newFolderHereActionTitle: 'Neuer Ordner hier',
        searchFilesActionLabel: 'Dateien suchen',
        copyPathActionTitle: 'Pfad kopieren',
        downloadSourceActionTitle: 'Quelldatei herunterladen',
        openActionTitle: 'Öffnen',
        renameActionTitle: 'Umbenennen',
        moveActionTitle: 'Verschieben',
        deleteActionTitle: 'Löschen',
        deleteSelectedFilesActionTitle: ({ count }: { count: number }) =>
          `${count} Dateien löschen`,
        moveToWorkspaceRootLabel: 'In Projektstamm verschieben',
        workspacesLabel: 'Projekte',
        noWorkspaceSelectedTitle: 'Kein Projekt ausgewählt',
        noWorkspaceSelectedSubtitle:
          'Klicken Sie, um einen Arbeitsbereich auszuwählen',
        mobileTitle: 'Seitenleiste',
        mobileDescription:
          'Arbeitsbereiche, Notizen und App-Aktionen navigieren.',
      },
      notesTable: {
        searchPlaceholder: 'Projektdateien filtern',
        columnsButton: 'Spalten',
        nameColumn: 'Name',
        locationColumn: 'Ort',
        modifiedColumn: 'Geändert',
        lastOpenedColumn: 'Zuletzt geöffnet',
        noteCount: ({ count }: { count: number }) =>
          count === 1 ? '1 Notiz' : `${count} Notizen`,
        noResultsMessage: 'Keine Notizen entsprechen deinem Filter.',
        showMoreButton: ({ count }: { count: number }) =>
          `${count} weitere anzeigen`,
        starredIndicatorSr: 'Favorit',
        sortSr: ({ column }: { column: string }) => `Nach ${column} sortieren`,
        rowActionsSr: ({ fileName }: { fileName: string }) =>
          `Aktionen für ${fileName}`,
        openAction: 'Öffnen',
        starAction: 'Favorit hinzufügen',
        unstarAction: 'Favorit entfernen',
        renameAction: 'Umbenennen',
        moveAction: 'Verschieben',
        copyPathAction: 'Pfad kopieren',
        deleteAction: 'Löschen',
      },
      breadcrumb: {
        moreSr: 'Mehr',
      },
      dialog: {
        closeSr: 'Schließen',
        commandDescriptionSr:
          'Tippen Sie, um zu suchen und ein Element auszuwählen.',
      },
      sheet: {
        closeSr: 'Schließen',
      },
    },
    funMessages: [
      'Ups! Sieht aus, als hätten wir in Albuquerque falsch abgebogen!',
      'Houston, wir haben ein Problem - etwas ist im Weltraum verloren gegangen! 🚀',
      'Spielt Verstecken (und gewinnt!) 🙈',
      'Ist in den Urlaub gefahren, ohne eine Nachsendeadresse zu hinterlassen 🏖',
      'Praktiziert soziale Distanzierung 😷',
      'Plot Twist: Das existiert nicht! 🎬',
      'Von Außerirdischen entführt 👽',
      'Verloren in der Matrix',
      'Erkundet gerade Paralleluniversen 🌌',
      'Hoppla! Jagt gerade Schmetterlinge 🦋',
      'Nimmt gerade an einem Yoga-Retreat teil 🧘‍♀️',
      'Nicht gefunden: Holt wahrscheinlich Kaffee ☕',
      'Baut gerade einen Schneemann ⛄',
      'Zuletzt gesehen auf dem Weg nach Narnia 🦁',
      'Sucht nach Erleuchtung 🕯',
      'Ist Angeln! 🎣',
      'Lernt gerade jonglieren 🤹‍♂️',
      'Hat sich dem Zirkus angeschlossen 🎪',
      'Besteigt gerade den Mount Everest 🏔',
      'Nicht hier: Übt Tanzschritte 💃',
      'Hat auf der Datenautobahn falsch abgebogen 🛣',
      'Ist gerade im Ninja-Trainingslager 🥷',
      'Pflanzt gerade Bäume 🌱',
      'Vermisst: Erkundet den Marianengraben 🌊',
      'Jagt Regenbögen 🌈',
      'Nimmt an den Olympischen Spielen teil 🏅',
      'Erfindet gerade die Zeitreise ⏰',
      'Weg: Schreibt Memoiren 📚',
      'Auf der Suche nach dem Heiligen Gral 🏆',
      'Studiert Quantenmechanik 🔬',
      'Zählt gerade Sterne ⭐',
      'Vermisst: Lernt Ukulele spielen 🎸',
      'Nimmt an einem Pizza-Wettessen teil 🍕',
      'Trainiert für einen Marathon 🏃‍♀️',
      'Löst gerade den Weltfrieden ✌️',
    ],
  },
} satisfies PartialTranslations;
