export default { // Navigation nav: { printers: 'Drucker', archives: 'Archiv', queue: 'Warteschlange', stats: 'Statistiken', profiles: 'Profile', maintenance: 'Wartung', projects: 'Projekte', inventory: 'Filament', files: 'Dateimanager', settings: 'Einstellungen', system: 'System', collapseSidebar: 'Seitenleiste einklappen', expandSidebar: 'Seitenleiste ausklappen', update: 'Update', updateAvailable: 'Update verfügbar: v{{version}}', updateAvailableBanner: 'Version {{version}} ist verfügbar!', viewUpdate: 'Update anzeigen', viewOnGithub: 'Auf GitHub ansehen', keyboardShortcuts: 'Tastaturkürzel (?)', switchToLight: 'Zum hellen Modus wechseln', switchToDark: 'Zum dunklen Modus wechseln', smartSwitches: 'Smart Switches', logout: 'Abmelden', }, // Common common: { save: 'Speichern', saving: 'Speichern...', cancel: 'Abbrechen', delete: 'Löschen', edit: 'Bearbeiten', add: 'Hinzufügen', close: 'Schließen', confirm: 'Bestätigen', loading: 'Lädt...', error: 'Fehler', success: 'Erfolg', warning: 'Warnung', enabled: 'Aktiviert', disabled: 'Deaktiviert', yes: 'Ja', no: 'Nein', on: 'An', off: 'Aus', all: 'Alle', none: 'Keine', search: 'Suchen', filter: 'Filtern', sort: 'Sortieren', refresh: 'Aktualisieren', download: 'Herunterladen', upload: 'Hochladen', uploading: 'Hochladen...', uploadFailed: 'Hochladen fehlgeschlagen', actions: 'Aktionen', status: 'Status', name: 'Name', description: 'Beschreibung', date: 'Datum', time: 'Zeit', hours: 'Stunden', minutes: 'Minuten', seconds: 'Sekunden', days: 'Tage', enable: 'Aktivieren', disable: 'Deaktivieren', permissions: 'Berechtigungen', noPrinters: 'Keine Drucker konfiguriert', noData: 'Keine Daten verfügbar', linkNotFound: 'Link nicht gefunden', required: 'Erforderlich', optional: 'Optional', dismiss: 'Schließen', apply: 'Anwenden', reset: 'Zurücksetzen', export: 'Exportieren', import: 'Importieren', clear: 'Leeren', selectAll: 'Alle auswählen', deselectAll: 'Auswahl aufheben', noChange: '— Keine Änderung —', unchanged: 'Unverändert', unassigned: 'Nicht zugewiesen', unknown: 'Unbekannt', unknownError: 'Unbekannter Fehler', today: 'Heute', tomorrow: 'Morgen', asap: 'Sofort', overdue: 'Überfällig', now: 'Jetzt', collapse: 'Einklappen', expand: 'Ausklappen', viewArchive: 'Archiv anzeigen', viewInFileManager: 'Im Dateimanager anzeigen', addedBy: 'Hinzugefügt von {{username}}', prints: 'Drucke', more: '+{{count}} weitere', ascending: 'Aufsteigend', descending: 'Absteigend', printer: 'Drucker', remove: 'Entfernen', type: 'Typ', print: 'Drucken', rename: 'Umbenennen', move: 'Verschieben', create: 'Erstellen', duplicate: 'Duplizieren', left: 'Links', right: 'Rechts', }, // Printers page printers: { title: 'Drucker', addPrinter: 'Drucker hinzufügen', editPrinter: 'Drucker bearbeiten', deletePrinter: 'Drucker löschen', printerName: 'Druckername', serialNumber: 'Seriennummer', ipAddress: 'IP-Adresse / Hostname', accessCode: 'Zugangscode', model: 'Modell', nozzleCount: 'Düsenanzahl', autoArchive: 'Automatische Archivierung', status: { available: 'Verfügbar', idle: 'Bereit', printing: 'Druckt', paused: 'Pausiert', offline: 'Offline', error: 'Fehler', finished: 'Fertig', unknown: 'Unbekannt', }, temperatures: { nozzle: 'Düse', bed: 'Druckbett', chamber: 'Kammer', }, progress: '{{percent}}% abgeschlossen', timeRemaining: 'Noch {{time}}', deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?', maintenanceOk: 'Wartung OK', maintenanceWarning: '{{count}} Warnung', maintenanceWarning_plural: '{{count}} Warnungen', maintenanceDue: '{{count}} fällig', maintenanceDue_plural: '{{count}} fällig', // Sort options sort: { name: 'Name', status: 'Status', model: 'Modell', location: 'Standort', ascending: 'Aufsteigend sortieren', descending: 'Absteigend sortieren', }, // Card size cardSize: { small: 'Kleine Karten', medium: 'Mittlere Karten', large: 'Große Karten', extraLarge: 'Extra große Karten', }, // Controls hideOffline: 'Offline ausblenden', nextAvailable: 'Nächster verfügbar', powerOn: 'Einschalten', offlinePrintersWithPlugs: 'Offline-Drucker mit Smart-Plugs', noPrintersConfigured: 'Noch keine Drucker konfiguriert', // Printer card readyToPrint: 'Druckbereit', external: 'Extern', extL: 'Ext-L', extR: 'Ext-R', deleteArchives: 'Druckarchive löschen', noLabel: 'Keine Bezeichnung', printPreview: 'Druckvorschau', width: 'Breite', height: 'Höhe', noObjectsFound: 'Keine Objekte gefunden', objectsLoadedOnPrintStart: 'Objekte werden beim Druckstart geladen', willBeSkipped: 'Wird übersprungen', name: 'Name', serialCannotBeChanged: 'Seriennummer kann nicht geändert werden', locationHelp: 'Dient zur Gruppierung von Druckern und zum Filtern von Warteschlangenaufträgen', // WiFi signal strength wifiSignal: { veryWeak: 'Sehr schwach', weak: 'Schwach', fair: 'Ausreichend', good: 'Gut', excellent: 'Ausgezeichnet', }, // Maintenance maintenanceUpToDate: 'Alle Wartungen aktuell - Klicken zum Anzeigen', // Chamber light chamberLightOn: 'Kammerbeleuchtung einschalten', chamberLightOff: 'Kammerbeleuchtung ausschalten', // Files files: 'Dateien', browseFiles: 'Druckerdateien durchsuchen', // Smart plug autoOffAfterPrint: 'Automatisches Ausschalten nach Druck', autoOffExecuted: 'Auto-off wurde ausgeführt - Drucker einschalten zum Zurücksetzen', // HMS errors hmsErrors: 'HMS-Fehler', viewHmsErrors: '{{count}} HMS-Fehler anzeigen', // Actions resume: 'Fortsetzen', pause: 'Pausieren', stop: 'Stoppen', camera: 'Kamera', skipObject: 'Objekt überspringen', reconnect: 'Neu verbinden', mqttDebug: 'MQTT-Debug', printerInformation: 'Druckerinformationen', copyToClipboard: 'Kopieren', copied: 'Kopiert!', state: 'Zustand', wifiSignalLabel: 'WLAN-Signal', developerMode: 'Entwicklermodus', enabled: 'Aktiviert', disabled: 'Deaktiviert', addedOn: 'Hinzugefügt', sdCard: 'SD-Karte', inserted: 'Eingelegt', notInserted: 'Nicht eingelegt', totalPrintHours: 'Druckstunden', activeNozzle: 'Aktiv: {{nozzle}} Düse', nozzleRack: 'Düsenhalter', nozzleDocked: 'Angedockt', nozzleMounted: 'Montiert', nozzleActive: 'Aktiv', nozzleIdle: 'Inaktiv', nozzleDiameter: 'Durchmesser', nozzleType: 'Typ', nozzleStatus: 'Status', nozzleFilament: 'Filament', nozzleWear: 'Verschleiß', nozzleMaxTemp: 'Max Temp', nozzleSerial: 'Seriennr.', nozzleHardenedSteel: 'Gehärteter Stahl', nozzleStainlessSteel: 'Edelstahl', nozzleTungstenCarbide: 'Wolframkarbid', nozzleFlow: 'Durchfluss', nozzleHighFlow: 'High Flow', nozzleStandardFlow: 'Standard', // Firmware firmwareUpdate: 'Firmware-Update', firmwareInstructions: 'Gehen Sie auf dem Touchscreen des Druckers zu', firmwareNav: 'Navigieren Sie zu', settings: 'Einstellungen', firmware: 'Firmware', // Discovery discoverPrinters: 'Drucker entdecken', searching: 'Suche...', manualEntry: 'Manuelle Eingabe', addFromCloud: 'Aus Cloud hinzufügen', // Toast messages toast: { printerDeleted: 'Drucker gelöscht', printerAdded: 'Drucker hinzugefügt', printerUpdated: 'Drucker aktualisiert', failedToDelete: 'Drucker konnte nicht gelöscht werden', failedToAdd: 'Drucker konnte nicht hinzugefügt werden', failedToUpdate: 'Drucker konnte nicht aktualisiert werden', commandSent: 'Befehl gesendet', failedToSendCommand: 'Befehl konnte nicht gesendet werden', turnedOn: '{{name}} eingeschaltet', failedToPowerOn: '{{name}} konnte nicht eingeschaltet werden', scriptTriggered: 'Skript ausgelöst', printStopped: 'Druck gestoppt', printPaused: 'Druck pausiert', printResumed: 'Druck fortgesetzt', referenceDeleted: 'Referenz gelöscht', detectionAreaSaved: 'Erkennungsbereich gespeichert', failedToRunScript: 'Skript konnte nicht ausgeführt werden', failedToStopPrint: 'Druck konnte nicht gestoppt werden', failedToPausePrint: 'Druck konnte nicht pausiert werden', failedToResumePrint: 'Druck konnte nicht fortgesetzt werden', failedToControlChamberLight: 'Kammerbeleuchtung konnte nicht gesteuert werden', failedToUpdateSetting: 'Einstellung konnte nicht aktualisiert werden', failedToSkipObjects: 'Objekte konnten nicht übersprungen werden', failedToRereadRfid: 'RFID konnte nicht erneut gelesen werden', failedToCheckPlate: 'Platte konnte nicht überprüft werden', failedToUpdateLabel: 'Bezeichnung konnte nicht aktualisiert werden', failedToDeleteReference: 'Referenz konnte nicht gelöscht werden', failedToSaveDetectionArea: 'Erkennungsbereich konnte nicht gespeichert werden', plateCheckEnabled: 'Plattenprüfung aktiviert', plateCheckDisabled: 'Plattenprüfung deaktiviert', calibrationSaved: 'Kalibrierung gespeichert!', calibrationFailed: 'Kalibrierung fehlgeschlagen', rfidRereadInitiated: 'RFID-Neueinlesen gestartet', }, // Connection status connection: { connected: 'Verbunden', offline: 'Offline', }, // Queue info queue: { inQueue: '{{count}} Druck in Warteschlange', inQueue_plural: '{{count}} Drucke in Warteschlange', }, // Controls section controls: 'Steuerung', // RFID rfid: { reread: 'RFID neu lesen', }, // Permissions permission: { noAdd: 'Sie haben keine Berechtigung, Drucker hinzuzufügen', noEdit: 'Sie haben keine Berechtigung, Drucker zu bearbeiten', noDelete: 'Sie haben keine Berechtigung, Drucker zu löschen', noControl: 'Sie haben keine Berechtigung, Drucker zu steuern', noFiles: 'Sie haben keine Berechtigung, auf Druckerdateien zuzugreifen', noAmsRfid: 'Sie haben keine Berechtigung, AMS-RFID erneut zu lesen', noSmartPlugControl: 'Sie haben keine Berechtigung, Smart Plugs zu steuern', noCamera: 'Sie haben keine Berechtigung, Kameras anzuzeigen', }, // Add/Edit modal modal: { addTitle: 'Drucker hinzufügen', editTitle: 'Drucker bearbeiten', myPrinter: 'Mein Drucker', selectModel: 'Modell auswählen...', locationGroup: 'Standort / Gruppe (optional)', locationPlaceholder: 'z.B. Werkstatt, Büro, Keller', autoArchiveLabel: 'Abgeschlossene Drucke automatisch archivieren', fromPrinterSettings: 'Aus Druckereinstellungen', modelOptional: 'Modell (optional)', saveChanges: 'Änderungen speichern', }, // Skip objects skipObjects: { tooltip: 'Objekte überspringen', onlyWhilePrinting: 'Objekte überspringen (nur während des Drucks)', requiresMultiple: 'Objekte überspringen (erfordert 2+ Objekte)', title: 'Objekte überspringen', matchIdsInfo: 'IDs mit Drucker-Display abgleichen', printerShowsIds: 'Der Druckerbildschirm zeigt Objekt-IDs auf der Bauplatte', skipSelected: 'Ausgewählte überspringen', skipping: 'Überspringe...', noObjectsSelected: 'Keine Objekte ausgewählt', selectObjectsToSkip: 'Wählen Sie Objekte aus, die Sie vom aktuellen Druck überspringen möchten', skipped: 'übersprungen', objectsSkipped: 'Objekte übersprungen', activeCount: '{{count}} aktiv', waitForLayer: 'Warten Sie auf Schicht 2+ zum Überspringen von Objekten (aktuell Schicht {{layer}})', skip: 'Überspringen', confirmTitle: 'Objekt überspringen?', confirmMessage: 'Möchten Sie "{{name}}" wirklich überspringen? Dies kann nicht rückgängig gemacht werden.', }, // Confirm modals confirm: { deleteTitle: 'Drucker löschen', deleteMessage: 'Möchten Sie "{{name}}" wirklich löschen? Alle Verbindungseinstellungen werden entfernt.', deleteArchivesNote: 'Der gesamte Druckverlauf für diesen Drucker wird dauerhaft gelöscht.', keepArchivesNote: 'Der Druckverlauf wird beibehalten, aber nicht mehr mit diesem Drucker verknüpft.', stopTitle: 'Druck stoppen', stopMessage: 'Möchten Sie den aktuellen Druck auf "{{name}}" wirklich stoppen? Der Druckauftrag wird abgebrochen.', stopButton: 'Druck stoppen', pauseTitle: 'Druck pausieren', pauseMessage: 'Möchten Sie den aktuellen Druck auf "{{name}}" wirklich pausieren?', pauseButton: 'Druck pausieren', resumeTitle: 'Druck fortsetzen', resumeMessage: 'Möchten Sie den Druck auf "{{name}}" fortsetzen?', resumeButton: 'Druck fortsetzen', powerOnTitle: 'Drucker einschalten', powerOnMessage: 'Möchten Sie die Stromversorgung für "{{name}}" wirklich EINSCHALTEN?', powerOnButton: 'Einschalten', powerOffTitle: 'Drucker ausschalten', powerOffMessage: 'Möchten Sie die Stromversorgung für "{{name}}" wirklich AUSSCHALTEN?', powerOffWarning: 'WARNUNG: "{{name}}" druckt gerade! Möchten Sie die Stromversorgung wirklich AUSSCHALTEN? Dies unterbricht den Druck und kann den Drucker beschädigen.', powerOffButton: 'Ausschalten', }, // Discovery discovery: { title: 'Drucker entdecken', searching: 'Suche...', scanning: 'Scanne...', scanProgress: 'Scanne... {{scanned}}/{{total}}', foundPrinters: '{{count}} Drucker gefunden', noPrintersFound: 'Keine Drucker gefunden', noPrintersFoundSubnet: 'Keine Drucker im angegebenen Subnetz gefunden.', noPrintersFoundNetwork: 'Keine Drucker im Netzwerk gefunden.', allConfigured: 'Alle erkannten Drucker sind bereits konfiguriert.', alreadyAdded: 'Bereits hinzugefügt', select: 'Auswählen', manualEntry: 'Manuelle Eingabe', addFromCloud: 'Aus Cloud hinzufügen', subnetToScan: 'Zu scannendes Subnetz', dockerNote: 'Docker erkannt. Geben Sie das Subnetz Ihres Druckers in CIDR-Notation ein. Erfordert network_mode: host in docker-compose.yml.', scanSubnet: 'Subnetz nach Druckern scannen', discoverNetwork: 'Drucker im Netzwerk suchen', scanningSubnet: 'Subnetz wird nach Bambu-Druckern gescannt...', scanningNetwork: 'Netzwerk wird gescannt...', serialRequired: 'Seriennummer erforderlich', unknown: 'Unbekannt', failedToStart: 'Erkennung konnte nicht gestartet werden', }, // Filaments section filaments: 'Filamente', // Camera openCameraOverlay: 'Kamera-Overlay öffnen', openCameraWindow: 'Kamera in neuem Fenster öffnen', // Firmware firmwareUpdateAvailable: 'Firmware-Update verfügbar: {{current}} → {{latest}}', firmwareUpToDate: 'Firmware {{version}} — Aktuell', firmwareUpdateButton: 'Update', // Plate detection plateDetection: { noPermission: 'Sie haben keine Berechtigung, Drucker zu aktualisieren', enabledClick: 'Plattenprüfung aktiviert - Klicken zum Deaktivieren', disabledClick: 'Plattenprüfung deaktiviert - Klicken zum Aktivieren', manageCalibration: 'Platten-Erkennungskalibrierung verwalten', calibrationRequired: 'Kalibrierung erforderlich', calibrationInstructions: 'Bitte stellen Sie sicher, dass die Druckplatte vollständig leer ist, und klicken Sie dann auf Kalibrieren.', calibrationDescription: 'Die Kalibrierung erfasst ein Referenzbild der leeren Platte. Zukünftige Prüfungen vergleichen mit dieser Referenz, um Objekte zu erkennen.', calibrationTip: 'Tipp: Sie können bis zu 5 Kalibrierungen für verschiedene Platten speichern. Das System verwendet automatisch die beste Übereinstimmung bei der Prüfung.', plateEmpty: 'Platte erscheint leer', objectsDetected: 'Objekte auf Platte erkannt', confidence: 'Konfidenz', difference: 'Differenz', analysisPreview: 'Analysevorschau:', analysisLegend: 'Grüner Rahmen = Erkennungsbereich, Rote Überlagerung = Unterschiede zur Kalibrierung', savedReferences: 'Gespeicherte Referenzen ({{count}}/{{max}})', deleteReference: 'Referenz löschen', labelPlaceholder: 'Bezeichnung...', clickToEdit: '{{label}} - Zum Bearbeiten klicken', clickToAddLabel: 'Zum Hinzufügen einer Bezeichnung klicken', }, // Fans fans: { partCooling: 'Bauteilkühlung', auxiliary: 'Hilfsventilator', chamber: 'Kammerventilator', }, // HMS errors clickToViewHmsErrors: 'Klicken, um HMS-Fehler anzuzeigen', estimatedCompletion: 'Geschätzte Fertigstellungszeit', slotOptions: 'Slot-Optionen', // AMS hover popup amsPopup: { friendlyName: 'AMS-Name', friendlyNamePlaceholder: 'z. B. AMS-Anzeigename', serialNumber: 'Seriennummer', firmwareVersion: 'Firmware', save: 'Speichern', clear: 'Löschen', noEditPermission: 'Sie haben keine Berechtigung, AMS-Einheiten umzubenennen', }, // Firmware modal firmwareModal: { title: 'Firmware-Update', titleUpToDate: 'Firmware-Info', currentVersion: 'Aktuell:', latestVersion: 'Neueste:', releaseNotes: 'Versionshinweise', checkingPrereqs: 'Prüfe Voraussetzungen...', sdCardReady: 'SD-Karte bereit. Klicken Sie unten, um die Firmware hochzuladen.', uploadedSuccess: 'Firmware auf SD-Karte hochgeladen!', applyInstructions: 'So wenden Sie das Update auf Ihrem Drucker an:', step1: 'Gehen Sie auf dem Touchscreen des Druckers zu Einstellungen', step2: 'Navigieren Sie zu Firmware', step3: 'Wählen Sie Update von SD-Karte', step4: 'Das Update dauert 10-20 Minuten', done: 'Fertig', starting: 'Starte...', uploadFirmware: 'Firmware hochladen', uploadFailed: 'Upload fehlgeschlagen: {{error}}', uploadedToast: 'Firmware hochgeladen! Starten Sie das Update vom Druckerbildschirm.', }, accessCodePlaceholder: 'Leer lassen, um den aktuellen zu behalten', // ROI editor roi: { title: 'Erkennungsbereich (ROI)', xStart: 'X-Start', yStart: 'Y-Start', width: 'Breite', height: 'Höhe', instruction: 'Passen Sie den Erkennungsbereich an, um sich auf die Druckplatte zu konzentrieren. Der grüne Rahmen in der Vorschau zeigt den aktuellen Bereich.', }, developerModeWarning: 'Der Entwickler-LAN-Modus ist nicht aktiviert auf: {{names}}. Einige Funktionen funktionieren möglicherweise nicht.', howToEnable: 'Aktivieren', incompatibleFile: 'Diese Datei wurde für {{slicedFor}} geslicet, aber dieser Drucker ist ein {{printerModel}}', dropNotPrintable: 'Nur .gcode- und .gcode.3mf-Dateien können gedruckt werden', dropToPrint: 'Zum Drucken ablegen', cannotPrint: 'Drucker beschäftigt', }, // Archives page archives: { title: 'Druckarchiv', searchPlaceholder: 'Archiv durchsuchen...', filterByPrinter: 'Nach Drucker filtern', filterByStatus: 'Nach Status filtern', sortBy: 'Sortieren nach', sortNewest: 'Neueste zuerst', sortOldest: 'Älteste zuerst', sortName: 'Name', sortDuration: 'Dauer', sortLargest: 'Größte zuerst', sortSmallest: 'Kleinste zuerst', sortSize: 'Größe', noArchives: 'Keine Archive gefunden', noArchivesSearch: 'Keine Archive entsprechen Ihrer Suche', noArchivesYet: 'Noch keine Archive', loadingArchives: 'Lade Archive...', releaseToUpload: 'Loslassen zum Hochladen', showAll: 'Alle anzeigen', showFavoritesOnly: 'Nur Favoriten anzeigen', gridView: 'Rasteransicht', listView: 'Listenansicht', calendarView: 'Kalenderansicht', logView: 'Druckprotokoll', manageTags: 'Tags verwalten', showFailedPrints: 'Fehlgeschlagene Drucke anzeigen', hideFailedPrints: 'Fehlgeschlagene Drucke ausblenden', printTime: 'Druckzeit', filamentUsed: 'Verbrauchtes Filament', cost: 'Kosten', reprint: 'Drucken', preview: 'Vorschau', deleteArchive: 'Archiv löschen', deleteConfirm: 'Möchten Sie dieses Archiv wirklich löschen?', favorite: 'Favorit', unfavorite: 'Aus Favoriten entfernen', viewDetails: 'Details anzeigen', status: { completed: 'Abgeschlossen', failed: 'Fehlgeschlagen', stopped: 'Gestoppt', }, toast: { source3mfAttached: 'Quell-3MF angehängt: {{filename}}', failedUploadSource3mf: 'Fehler beim Hochladen der Quell-3MF', source3mfRemoved: 'Quell-3MF entfernt', failedRemoveSource3mf: 'Fehler beim Entfernen der Quell-3MF', f3dAttached: 'F3D angehängt: {{filename}}', failedUploadF3d: 'Fehler beim Hochladen der F3D', f3dRemoved: 'F3D entfernt', failedRemoveF3d: 'Fehler beim Entfernen der F3D', timelapseAttached: 'Zeitraffer angehängt: {{filename}}', timelapseAlreadyAttached: 'Zeitraffer bereits angehängt', noMatchingTimelapse: 'Kein passender Zeitraffer gefunden', failedScanTimelapse: 'Fehler beim Suchen nach Zeitraffer', failedAttachTimelapse: 'Fehler beim Anhängen des Zeitraffers', timelapseRemoved: 'Zeitraffer entfernt', failedRemoveTimelapse: 'Fehler beim Entfernen des Zeitraffers', timelapseUploaded: 'Zeitraffer hochgeladen: {{filename}}', failedUploadTimelapse: 'Fehler beim Hochladen des Zeitraffers', archiveDeleted: 'Archiv gelöscht', failedDeleteArchive: 'Fehler beim Löschen des Archivs', addedToFavorites: 'Zu Favoriten hinzugefügt', removedFromFavorites: 'Aus Favoriten entfernt', projectUpdated: 'Projekt aktualisiert', failedUpdateProject: 'Fehler beim Aktualisieren des Projekts', linkCopied: 'Link in die Zwischenablage kopiert', failedCopyLink: 'Fehler beim Kopieren des Links', photoDeleted: 'Foto gelöscht', failedDeletePhoto: 'Fehler beim Löschen des Fotos', failedDeleteArchives: 'Fehler beim Löschen der Archive', failedUpdateFavorites: 'Fehler beim Aktualisieren der Favoriten', exportDownloaded: 'Export heruntergeladen', exportFailed: 'Export fehlgeschlagen', }, menu: { print: 'Drucken', schedule: 'Planen', openInBambuStudio: 'Im Slicer öffnen', slice: 'Slicen', externalLink: 'Externer Link', viewOnMakerWorld: 'Auf MakerWorld ansehen', preview3d: '3D-Vorschau', viewTimelapse: 'Zeitraffer ansehen', scanForTimelapse: 'Nach Zeitraffer suchen', uploadTimelapse: 'Zeitraffer hochladen', removeTimelapse: 'Zeitraffer entfernen', downloadSource3mf: 'Quell-3MF herunterladen', uploadSource3mf: 'Quell-3MF hochladen', replaceSource3mf: 'Quell-3MF ersetzen', removeSource3mf: 'Quell-3MF entfernen', uploadF3d: 'F3D hochladen', replaceF3d: 'F3D ersetzen', downloadF3d: 'F3D herunterladen', removeF3d: 'F3D entfernen', download: 'Herunterladen', copyDownloadLink: 'Download-Link kopieren', qrCode: 'QR-Code', viewPhotos: 'Fotos ansehen', viewPhotosCount: 'Fotos ansehen ({{count}})', projectPage: 'Projektseite', addToFavorites: 'Zu Favoriten hinzufügen', removeFromFavorites: 'Aus Favoriten entfernen', edit: 'Bearbeiten', goToProject: 'Zum Projekt: {{name}}', addToProject: 'Zu Projekt hinzufügen', removeFromProject: 'Aus Projekt entfernen', loading: 'Laden...', noProjectsAvailable: 'Keine Projekte verfügbar', select: 'Auswählen', deselect: 'Abwählen', delete: 'Löschen', }, permission: { noReprint: 'Sie haben keine Berechtigung, dieses Archiv erneut zu drucken', noAddToQueue: 'Sie haben keine Berechtigung, zur Warteschlange hinzuzufügen', noUpdateArchives: 'Sie haben keine Berechtigung, Archive zu aktualisieren', noUploadFiles: 'Sie haben keine Berechtigung, Dateien hochzuladen', noDownload: 'Sie haben keine Berechtigung, Archive herunterzuladen', noCopyLink: 'Sie haben keine Berechtigung, Download-Links zu kopieren', noDelete: 'Sie haben keine Berechtigung, dieses Archiv zu löschen', noCreate: 'Sie haben keine Berechtigung, Archive zu erstellen', }, card: { previousPlate: 'Vorherige Platte', nextPlate: 'Nächste Platte', plateNumber: 'Platte {{index}}', moreOptions: 'Rechtsklick für mehr Optionen', addToFavorites: 'Zu Favoriten hinzufügen', removeFromFavorites: 'Aus Favoriten entfernen', cancelled: 'abgebrochen', failed: 'fehlgeschlagen', duplicate: 'Duplikat', duplicateTitle: 'Dieses Modell wurde bereits zuvor gedruckt', openSource3mf: 'Quell-3MF in Bambu Studio öffnen (Rechtsklick für mehr Optionen)', downloadF3d: 'Fusion 360 Designdatei herunterladen', viewTimelapse: 'Zeitraffer ansehen', viewPhoto: '1 Foto ansehen', viewPhotos: '{{count}} Fotos ansehen', openFolder: 'Ordner öffnen: {{name}}', slicedFile: 'Geslicte Datei - druckbereit', sourceFile: 'Nur Quelldatei - keine AMS-Zuordnung verfügbar', gcode: 'GCODE', source: 'QUELLE', project: 'Projekt: {{name}}', estimated: 'Geschätzt: {{time}}', actual: 'Tatsächlich: {{time}}', accuracy: 'Genauigkeit: {{percent}}%', filament: '{{weight}}g', layer: '{{count}} Schicht', layers: '{{count}} Schichten', object: '{{count}} Objekt', objects: '{{count}} Objekte', slicedFor: 'Geslict für {{model}}', uploadedBy: 'Hochgeladen von', noPermissionReprint: 'Sie haben keine Berechtigung, erneut zu drucken', noFileForReprint: 'Keine 3MF-Datei verfügbar — die Datei konnte beim Aufzeichnen des Drucks nicht vom Drucker heruntergeladen werden', noPermissionEdit: 'Sie haben keine Berechtigung, Archive zu bearbeiten', noPermissionDelete: 'Sie haben keine Berechtigung, Archive zu löschen', reprint: 'Drucken', schedulePrint: 'Druck planen', schedule: 'Planen', openInBambuStudio: 'Im Slicer öffnen', openInBambuStudioToSlice: 'Im Slicer öffnen zum Slicen', slice: 'Slicen', externalLink: 'Externer Link', makerWorld: 'MakerWorld: {{designer}}', viewProject: 'Projekt ansehen', noExternalLink: 'Kein externer Link', preview3d: '3D-Vorschau', download: 'Herunterladen', edit: 'Bearbeiten', delete: 'Löschen', }, modal: { deleteArchive: 'Archiv löschen', deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.', deleteButton: 'Löschen', removeSource3mf: 'Quell-3MF entfernen', removeSource3mfConfirm: 'Möchten Sie die Quell-3MF-Datei wirklich von "{{name}}" entfernen? Die ursprüngliche Slicer-Projektdatei wird gelöscht.', removeButton: 'Entfernen', removeF3d: 'F3D entfernen', removeF3dConfirm: 'Möchten Sie die Fusion 360 Designdatei wirklich von "{{name}}" entfernen?', removeTimelapse: 'Zeitraffer entfernen', removeTimelapseConfirm: 'Möchten Sie das Zeitraffervideo wirklich von "{{name}}" entfernen?', timelapse: '{{name}} - Zeitraffer', selectTimelapse: 'Zeitraffer auswählen', selectTimelapseDesc: 'Keine automatische Übereinstimmung gefunden. Wählen Sie den Zeitraffer für diesen Druck:', deleteArchives: 'Archive löschen', deleteArchivesConfirm: 'Möchten Sie wirklich {{count}} Archiv(e) löschen? Diese Aktion kann nicht rückgängig gemacht werden.', deleteCount: '{{count}} löschen', }, page: { title: 'Archive', printsCount: '{{filtered}} von {{total}} Drucken', dropFilesHere: '.3mf-Dateien hier ablegen', releaseToUpload: 'Loslassen zum Hochladen', only3mfSupported: 'Nur .3mf-Dateien werden unterstützt', close: 'Schließen', selected: '{{count}} ausgewählt', selectAll: 'Alle auswählen', tags: 'Tags', project: 'Projekt', favorite: 'Favorit', delete: 'Löschen', toggledFavorites: 'Favoriten für {{count}} Archiv(e) umgeschaltet', failedUpdateFavorites: 'Fehler beim Aktualisieren der Favoriten', archivesDeleted: '{{count}} Archiv(e) gelöscht', failedDeleteArchives: 'Fehler beim Löschen der Archive', photoDeleted: 'Foto gelöscht', failedDeletePhoto: 'Fehler beim Löschen des Fotos', }, list: { name: 'Name', printer: 'Drucker', date: 'Datum', size: 'Größe', actions: 'Aktionen', hasTimelapse: 'Hat Zeitraffer', }, log: { date: 'Datum', printName: 'Druckname', printer: 'Drucker', user: 'Benutzer', status: 'Status', duration: 'Dauer', filament: 'Filament', allPrinters: 'Alle Drucker', allUsers: 'Alle Benutzer', allStatuses: 'Alle Status', cancelled: 'Abgebrochen', skipped: 'Übersprungen', dateFrom: 'Von', dateTo: 'Bis', noEntries: 'Keine Druckprotokolleinträge gefunden', showing: '{{count}} von {{total}} Einträgen', rowsPerPage: 'Zeilen', page: 'Seite', prev: 'Zurück', next: 'Weiter', clearLog: 'Protokoll löschen', clearLogTitle: 'Druckprotokoll löschen', clearLogConfirm: 'Alle Druckprotokolleinträge werden dauerhaft gelöscht. Archive und Warteschlangeneinträge sind nicht betroffen. Diese Aktion kann nicht rückgängig gemacht werden. Sind Sie sicher?', clearLogButton: 'Alle löschen', cleared: '{{count}} Protokolleinträge gelöscht', clearFailed: 'Druckprotokoll konnte nicht gelöscht werden', }, }, // Queue page queue: { title: 'Druckwarteschlange', subtitle: 'Planen und verwalten Sie Ihre Druckaufträge', addToQueue: 'Zur Warteschlange hinzufügen', // Print modal print: 'Drucken', reprint: 'Erneut drucken', schedulePrint: 'Druck planen', editQueueItem: 'Warteschlangeneintrag bearbeiten', printToPrinters: 'Auf {{count}} Druckern drucken', queueToPrinters: 'Zu {{count}} Druckern hinzufügen', sending: 'Wird gesendet...', sendingProgress: 'Sende {{current}}/{{total}}...', adding: 'Wird hinzugefügt...', addingProgress: 'Füge hinzu {{current}}/{{total}}...', savingProgress: 'Speichere {{current}}/{{total}}...', clearQueue: 'Warteschlange leeren', clearHistory: 'Verlauf löschen', emptyQueue: 'Warteschlange ist leer', position: 'Position', scheduledTime: 'Geplante Zeit', moveUp: 'Nach oben', moveDown: 'Nach unten', startNow: 'Jetzt starten', printingInProgress: 'Druck läuft...', viewArchive: 'Archiv anzeigen', viewInFileManager: 'Im Dateimanager anzeigen', itemCount: '{{count}} Element', itemCount_plural: '{{count}} Elemente', dragToReorder: 'Ziehen zum Neuordnen (nur Sofort)', reorderHint: 'Position betrifft nur Sofort-Elemente. Geplante Elemente werden zur festgelegten Zeit ausgeführt.', addedBy: 'Hinzugefügt von {{name}}', nextInQueue: 'Nächster in der Warteschlange', clearPlate: 'Druckplatte freigeben & Nächsten starten', clearPlateSuccess: 'Druckplatte freigegeben — bereit für nächsten Druck', plateReady: 'Druckplatte freigegeben — bereit für nächsten Druck', plateNumber: 'Platte {{index}}', // Sections sections: { currentlyPrinting: 'Aktuell druckend', queued: 'In Warteschlange', history: 'Verlauf', }, // Status status: { pending: 'Ausstehend', waiting: 'Wartend', printing: 'Druckt', paused: 'Pausiert', completed: 'Abgeschlossen', failed: 'Fehlgeschlagen', skipped: 'Übersprungen', cancelled: 'Abgebrochen', }, // Summary cards summary: { printing: 'Druckt', queued: 'In Warteschlange', totalTime: 'Gesamte Wartezeit', totalWeight: 'Gesamtgewicht der Warteschlange', history: 'Verlauf', }, // Filters filter: { allPrinters: 'Alle Drucker', unassigned: 'Nicht zugewiesen', allStatus: 'Alle Status', allLocations: 'Alle Standorte', any: 'Beliebig', }, // Sort sort: { byPosition: 'Nach Position sortieren', byName: 'Nach Name sortieren', byPrinter: 'Nach Drucker sortieren', bySchedule: 'Nach Zeitplan sortieren', byDate: 'Nach Datum sortieren', ascendingOldest: 'Aufsteigend (älteste zuerst)', descendingNewest: 'Absteigend (neueste zuerst)', }, // Badges badges: { staged: 'Bereitgestellt', requiresPrevious: 'Erfordert vorherigen Erfolg', autoPowerOff: 'Automatisch ausschalten', }, // Empty state empty: { title: 'Keine Drucke geplant', description: 'Planen Sie einen Druck von der Archivseite über die Option "Planen" im Kontextmenü oder ziehen Sie Dateien hierher.', }, // Time time: { asap: 'Sofort', overdue: 'Überfällig', now: 'Jetzt', lessThanMinute: 'In weniger als einer Minute', inMinutes: 'In {{count}} Min', inHours: 'In {{count}} Stunden', }, // Actions actions: { stopPrint: 'Druck stoppen', startPrint: 'Druck starten', requeue: 'Erneut einreihen', }, // Bulk edit bulkEdit: { title: '{{count}} Element bearbeiten', title_plural: '{{count}} Elemente bearbeiten', description: 'Nur geänderte Einstellungen werden auf ausgewählte Elemente angewendet.', printer: 'Drucker', noChange: '— Keine Änderung —', queueOptions: 'Warteschlangenoptionen', staged: 'Bereitgestellt (manueller Start)', autoPowerOff: 'Nach Druck automatisch ausschalten', requirePrevious: 'Vorherigen Erfolg erfordern', printOptions: 'Druckoptionen', bedLevelling: 'Bett-Nivellierung', flowCalibration: 'Fluss-Kalibrierung', vibrationCalibration: 'Vibrations-Kalibrierung', layerInspection: 'Erste-Schicht-Prüfung', timelapse: 'Zeitraffer', useAms: 'AMS verwenden', applyChanges: 'Änderungen übernehmen', selectAll: 'Alle auswählen', deselectAll: 'Auswahl aufheben', selected: '{{count}} ausgewählt', editSelected: 'Ausgewählte bearbeiten', cancelSelected: 'Ausgewählte abbrechen', }, // Confirmations confirm: { cancelTitle: 'Geplanten Druck abbrechen', cancelMessage: 'Möchten Sie "{{name}}" wirklich abbrechen?', stopTitle: 'Druck stoppen', stopMessage: 'Möchten Sie den aktuellen Druck "{{name}}" wirklich stoppen? Der Druckauftrag wird am Drucker abgebrochen.', removeTitle: 'Aus Verlauf entfernen', removeMessage: 'Möchten Sie "{{name}}" wirklich aus dem Warteschlangenverlauf entfernen?', clearHistoryTitle: 'Verlauf löschen', clearHistoryMessage: 'Möchten Sie alle {{count}} Element(e) aus dem Verlauf entfernen?', cancelButton: 'Druck abbrechen', stopButton: 'Druck stoppen', thisPrint: 'diesen Druck', thisItem: 'dieses Element', }, // Toast messages toast: { cancelled: 'Warteschlangenelement abgebrochen', cancelFailed: 'Element konnte nicht abgebrochen werden', removed: 'Warteschlangenelement entfernt', removeFailed: 'Element konnte nicht entfernt werden', stopped: 'Druck gestoppt', stopFailed: 'Druck konnte nicht gestoppt werden', released: 'Druck in Warteschlange freigegeben', startFailed: 'Druck konnte nicht gestartet werden', reorderFailed: 'Warteschlange konnte nicht neu geordnet werden', historyCleared: '{{count}} Verlaufselement(e) gelöscht', clearHistoryFailed: 'Verlauf konnte nicht gelöscht werden', updateFailed: 'Elemente konnten nicht aktualisiert werden', bulkCancelled: '{{count}} Element(e) abgebrochen', bulkCancelFailed: 'Elemente konnten nicht abgebrochen werden', }, // Permissions permissions: { noStopPrint: 'Sie haben keine Berechtigung, Drucke zu stoppen', noStartPrint: 'Sie haben keine Berechtigung, Drucke zu starten', noEdit: 'Sie haben keine Berechtigung, dieses Warteschlangenelement zu bearbeiten', noCancel: 'Sie haben keine Berechtigung, dieses Warteschlangenelement abzubrechen', noRequeue: 'Sie haben keine Berechtigung, Elemente erneut einzureihen', noRemove: 'Sie haben keine Berechtigung, dieses Warteschlangenelement zu entfernen', noClearHistory: 'Sie haben keine Berechtigung, den gesamten Verlauf zu löschen', noEditItems: 'Sie haben keine Berechtigung, Warteschlangenelemente zu bearbeiten', noCancelItems: 'Sie haben keine Berechtigung, Warteschlangenelemente abzubrechen', }, }, backgroundDispatch: { unknownFile: 'Unbekannte Datei', unknownPrinter: 'Unbekannter Drucker', startingPrints: 'Starte Drucke', progressSummary: '{{complete}}/{{total}} abgeschlossen • Geplant: {{dispatched}} • In Bearbeitung: {{processing}}', expandDetails: 'Dispatch-Details ausklappen', collapseDetails: 'Dispatch-Details einklappen', dismissToast: 'Dispatch-Hinweis schließen', cancelDispatchJob: 'Dispatch-Job abbrechen', cancel: 'Abbrechen', cancelling: 'Wird abgebrochen…', status: { dispatched: 'Geplant', processing: 'In Bearbeitung', completed: 'Abgeschlossen', failed: 'Fehlgeschlagen', cancelled: 'Abgebrochen', }, toast: { cancellingUpload: 'Upload wird abgebrochen...', cancelled: 'Dispatch abgebrochen', cancelFailed: 'Dispatch konnte nicht abgebrochen werden', completeWithFailures: 'Background Dispatch abgeschlossen: {{completed}} erfolgreich, {{failed}} fehlgeschlagen', completeSuccess: 'Background Dispatch abgeschlossen: {{completed}} erfolgreich', printStartedRemaining: '{{completed}} Druck(e) gestartet, {{remaining}} weitere werden gesendet...', }, }, // Statistics page stats: { title: 'Dashboard', subtitle: 'Widgets zum Neuanordnen ziehen. Auf das Augensymbol klicken zum Ausblenden.', overview: 'Übersicht', totalPrints: 'Gesamtdrucke', successRate: 'Erfolgsrate', totalPrintTime: 'Gesamtdruckzeit', printTime: 'Druckzeit', totalFilament: 'Gesamtverbrauch Filament', filamentUsed: 'Filamentverbrauch', filamentCost: 'Filamentkosten', totalCost: 'Gesamtkosten', energyUsed: 'Energieverbrauch', energyCost: 'Energiekosten', averagePrintTime: 'Durchschnittliche Druckzeit', printsPerDay: 'Drucke pro Tag', byPrinter: 'Nach Drucker', printsByPrinter: 'Drucke nach Drucker', byMaterial: 'Nach Material', byMonth: 'Nach Monat', last7Days: 'Letzte 7 Tage', last30Days: 'Letzte 30 Tage', last90Days: 'Letzte 90 Tage', allTime: 'Gesamt', // Widgets quickStats: 'Schnellstatistiken', printActivity: 'Druckaktivität', filamentTypes: 'Filamenttypen', filamentTrends: 'Filamenttrends', failureAnalysis: 'Fehleranalyse', timeAccuracy: 'Zeitgenauigkeit', successful: 'Erfolgreich:', failed: 'Fehlgeschlagen:', perfectEstimate: '100% = perfekte Schätzung', noTimeAccuracyData: 'Noch keine Zeitgenauigkeitsdaten', noFilamentData: 'Keine Filamentdaten verfügbar', noPrinterData: 'Keine Druckerdaten verfügbar', noPrintData: 'Keine Druckdaten verfügbar', noPrintDataLast30Days: 'Keine Druckdaten in den letzten 30 Tagen', failureReasons: 'Fehlerursachen', topFailureReasons: 'Häufigste Fehlerursachen', failedPrintsCount: '{{failed}} / {{total}} Drucke fehlgeschlagen', lastWeekRate: 'Letzte Woche: {{rate}}%', // Actions resetLayout: 'Layout zurücksetzen', recalculateCosts: 'Kosten neu berechnen', recalculateCostsHint: 'Alle Archivkosten mit aktuellen Filamentpreisen neu berechnen', exportStats: 'Statistiken exportieren', exportAsCsv: 'Als CSV exportieren', exportAsExcel: 'Als Excel exportieren', hiddenCount: '{{count}} ausgeblendet', // Toast exportDownloaded: 'Export heruntergeladen', exportFailed: 'Export fehlgeschlagen', layoutReset: 'Layout zurückgesetzt', recalculatedCosts: 'Kosten für {{count}} Archive neu berechnet', recalculateFailed: 'Kosten konnten nicht neu berechnet werden', // Loading loadingStats: 'Statistiken werden geladen...', // Permissions noPermissionResetLayout: 'Sie haben keine Berechtigung, das Layout zurückzusetzen', noPermissionRecalculate: 'Sie haben keine Berechtigung, Kosten neu zu berechnen', noPrintDataInRange: 'Keine Druckdaten im ausgewählten Zeitraum', periodFilament: 'Filamentverbrauch', periodCost: 'Kosten', avgPerPrint: 'Durchschnitt pro Druck', usageOverTime: 'Verbrauch im Zeitverlauf', filamentByWeight: 'Gewicht', printDuration: 'Druckdauer', printerUtilization: 'Druckerauslastung', filamentSuccess: 'Erfolg nach Material', printHabits: 'Druckgewohnheiten', printTimeOfDay: 'Druck-Tageszeit', colorDistribution: 'Farbverteilung', noColorData: 'Keine Farbdaten verfügbar', records: 'Rekorde', longestPrint: 'Längster Druck', heaviestPrint: 'Schwerster Druck', mostExpensivePrint: 'Teuerster Druck', busiestDay: 'Aktivster Tag', successStreak: 'Erfolgsserie', streakPrint: 'aufeinanderfolgender Druck', streakPrints: '{{count}} aufeinanderfolgende Drucke', printerStats: 'Druckerstatistiken', hours: 'Stunden', avgPrints: 'Ø Drucke', noArchiveData: 'Keine Druckdaten verfügbar', filamentByTime: 'Zeitverlauf', avgWeight: 'Ø Gewicht', avgTime: 'Ø Zeit', filamentByPrints: 'Drucke', timeframe: { 'today': 'Heute', 'this-week': 'Diese Woche', 'this-month': 'Dieser Monat', 'last-7': 'Letzte 7 Tage', 'last-30': 'Letzte 30 Tage', 'last-90': 'Letzte 90 Tage', 'this-year': 'Dieses Jahr', 'all-time': 'Gesamt', 'custom': 'Benutzerdefiniert', from: 'Von', to: 'Bis', }, }, // Maintenance page maintenance: { title: 'Wartung', overview: 'Übersicht', allOk: 'Alle Wartungen aktuell', dueCount: '{{count}} Aufgabe fällig', dueCount_plural: '{{count}} Aufgaben fällig', warningCount: '{{count}} Warnung', warningCount_plural: '{{count}} Warnungen', totalPrintTime: 'Gesamtdruckzeit', nextMaintenance: 'Nächste Wartung', nothingDue: 'Nichts fällig', tasks: 'Aufgaben', lastPerformed: 'Zuletzt durchgeführt', interval: 'Intervall', hoursRemaining: '{{hours}}h verbleibend', hoursOverdue: '{{hours}}h überfällig', markDone: 'Als erledigt markieren', performMaintenance: 'Wartung durchführen', history: 'Verlauf', noHistory: 'Kein Wartungsverlauf', editPrintHours: 'Druckstunden bearbeiten', currentHours: 'Aktuelle Stunden', // Tabs statusTab: 'Status', settingsTab: 'Einstellungen', // Status overdueCount: '{{count}} überfällig', dueSoonCount: '{{count}} bald fällig', dueSoon: 'Bald fällig', allGood: 'Alles in Ordnung', overdueBy: 'Überfällig um {{duration}}', dueIn: 'Fällig in {{duration}}', timeLeft: '{{duration}} verbleibend', // Duration formats day: '1 Tag', days: '{{count}} Tage', week: '1 Woche', weeks: '{{count}} Wochen', month: '1 Monat', months: '{{count}} Monate', year: '1 Jahr', // Settings maintenanceTypes: 'Wartungstypen', maintenanceTypesDescription: 'Systemtypen und Ihre benutzerdefinierten Wartungsaufgaben', addCustomType: 'Benutzerdefinierten Typ hinzufügen', restoreDefaults: 'Standardaufgaben wiederherstellen', intervalType: 'Intervalltyp', intervalValue: 'Intervall ({{type}})', icon: 'Symbol', documentationLink: 'Dokumentationslink (optional)', assignToPrinters: 'Druckern zuweisen', selectAtLeastOnePrinter: 'Wählen Sie mindestens einen Drucker', addType: 'Typ hinzufügen', custom: 'Benutzerdefiniert', printHours: 'Druckstunden', calendarDays: 'Kalendertage', exampleName: 'z.B. HEPA-Filter ersetzen', viewDocumentation: 'Dokumentation anzeigen', timeBasedInterval: 'Zeitbasiertes Intervall', // Interval overrides intervalOverrides: 'Intervall-Überschreibungen', intervalOverridesDescription: 'Intervalle für bestimmte Drucker anpassen', // Printer assignment assignedToPrinters: 'Druckern zugewiesen:', noPrintersAssigned: 'Keine Drucker zugewiesen', addPrinterShort: 'Hinzufügen:', printersAssignedClick: '{{count}} Drucker zugewiesen - klicken zum Verwalten', removeFromPrinter: 'Von diesem Drucker entfernen', // Types types: { lubricateCarbonRods: 'Karbonstäbe schmieren', lubricateRails: 'Linearschienen schmieren', cleanNozzle: 'Düse/Hotend reinigen', checkBelts: 'Riemenspannung prüfen', cleanBuildPlate: 'Druckbett reinigen', checkExtruder: 'Extruderzahnräder prüfen', checkCooling: 'Kühlungslüfter prüfen', generalInspection: 'Allgemeine Inspektion', cleanCarbonRods: 'Kohlenstoffstangen reinigen', lubricateSteelRods: 'Stahlstangen schmieren', cleanSteelRods: 'Stahlstangen reinigen', cleanLinearRails: 'Linearschienen reinigen', checkPtfeTube: 'PTFE-Schlauch prüfen', replaceHepaFilter: 'HEPA-Filter ersetzen', replaceCarbonFilter: 'Aktivkohlefilter ersetzen', lubricateLeftNozzleRail: 'Linke Düsenschiene schmieren', }, // Toast maintenanceComplete: 'Wartung als abgeschlossen markiert', typeUpdated: 'Wartungstyp aktualisiert', typeDeleted: 'Wartungstyp gelöscht', defaultsRestored: '{{count}} Standardaufgabe(n) wiederhergestellt', printHoursUpdated: 'Druckstunden aktualisiert', printerAssigned: 'Drucker zugewiesen', printerRemoved: 'Drucker entfernt', // Confirmation deleteTypeConfirm: '"{{name}}" löschen?', deleteSystemTypeTitle: 'Standard-Wartungsaufgabe löschen?', deleteSystemTypeMessage: 'Möchten Sie die Standard-Wartungsaufgabe "{{name}}" wirklich löschen?', // Permissions noPermissionUpdate: 'Sie haben keine Berechtigung, Wartungselemente zu aktualisieren', noPermissionPerform: 'Sie haben keine Berechtigung, Wartungen durchzuführen', noPermissionEditTypes: 'Sie haben keine Berechtigung, Wartungstypen zu bearbeiten', noPermissionDeleteTypes: 'Sie haben keine Berechtigung, Wartungstypen zu löschen', noPermissionEditHours: 'Sie haben keine Berechtigung, Druckstunden zu bearbeiten', noPermissionRemovePrinter: 'Sie haben keine Berechtigung, Druckerzuweisungen zu entfernen', noPermissionAssignPrinter: 'Sie haben keine Berechtigung, Drucker zuzuweisen', noPermissionEditIntervals: 'Sie haben keine Berechtigung, Intervalle zu bearbeiten', // Configure link configureSettings: 'Wartungstypen und Intervalle konfigurieren', }, // Settings page settings: { title: 'Einstellungen', general: 'Allgemein', // Tab names tabs: { general: 'Allgemein', smartPlugs: 'Smart Plugs', notifications: 'Benachrichtigungen', filament: 'Filament', network: 'Netzwerk', apiKeys: 'API-Schlüssel', virtualPrinter: 'Virtueller Drucker', users: 'Authentifizierung', backup: 'Sicherung', emailAuth: 'E-Mail-Authentifizierung', }, // Email settings email: { smtpSettings: 'SMTP-Konfiguration', smtpHost: 'SMTP-Server', smtpPort: 'SMTP-Port', security: 'Sicherheit', authentication: 'Authentifizierung', username: 'Benutzername', password: 'Passwort', fromEmail: 'Absender-E-Mail', fromName: 'Absendername', testConnection: 'SMTP-Verbindung testen', testRecipient: 'Test-Empfänger-E-Mail', sendTest: 'Test-E-Mail senden', sending: 'Wird gesendet...', save: 'Einstellungen speichern', saving: 'Wird gespeichert...', advancedAuth: 'Erweiterte Authentifizierung', advancedAuthEnabled: 'Erweiterte Authentifizierung ist aktiviert', advancedAuthEnabledDesc: 'E-Mail-basierte Benutzerverwaltungsfunktionen sind aktiv. Neue Benutzer erhalten automatisch generierte Passwörter per E-Mail und können ihr Passwort über die Passwort vergessen Funktion zurücksetzen.', advancedAuthDisabled: 'Erweiterte Authentifizierung ist deaktiviert', advancedAuthDisabledDesc: 'Aktivieren Sie die erweiterte Authentifizierung, um E-Mail-basierte Funktionen für die Benutzerverwaltung zu aktivieren.', enable: 'Aktivieren', disable: 'Deaktivieren', feature1: 'Passwörter werden automatisch generiert und an neue Benutzer gesendet', feature2: 'Benutzer können sich mit Benutzername oder E-Mail anmelden', feature3: 'Passwort vergessen Funktion ist verfügbar', feature4: 'Administratoren können Benutzerpasswörter per E-Mail zurücksetzen', // Error messages errors: { requiredFields: 'Bitte füllen Sie alle Pflichtfelder aus', usernameRequired: 'Benutzername ist erforderlich, wenn Authentifizierung aktiviert ist', enterTestEmail: 'Bitte geben Sie eine Test-E-Mail-Adresse ein', smtpServerAndEmail: 'Bitte füllen Sie SMTP-Server und Absender-E-Mail aus, bevor Sie testen', usernamePasswordRequired: 'Benutzername und Passwort sind erforderlich, wenn Authentifizierung aktiviert ist', configureSmtpFirst: 'Bitte konfigurieren und testen Sie zuerst die SMTP-Einstellungen', }, // Success messages success: { settingsSaved: 'SMTP-Einstellungen erfolgreich gespeichert', }, // Security options securityOptions: { starttls: 'STARTTLS (Port 587)', ssl: 'SSL/TLS (Port 465)', none: 'Keine (Port 25)', }, // Authentication options authOptions: { enabled: 'Aktiviert', disabled: 'Deaktiviert', }, }, appearance: 'Erscheinungsbild', notifications: 'Benachrichtigungen', smartPlugs: 'Smart Plugs', spoolman: 'Spoolman', updates: 'Updates', language: 'Sprache', languageDescription: 'Wählen Sie Ihre bevorzugte Sprache', theme: 'Design', themeLight: 'Hell', themeDark: 'Dunkel', themeSystem: 'System', defaultView: 'Standardansicht', defaultViewDescription: 'Seite, die beim Öffnen der App angezeigt wird', checkForUpdates: 'Nach Updates suchen', autoUpdate: 'Automatische Updates', currentVersion: 'Aktuelle Version', latestVersion: 'Neueste Version', upToDate: 'Sie sind auf dem neuesten Stand', updateAvailable: 'Update verfügbar', // Notifications notificationLanguage: 'Benachrichtigungssprache', notificationLanguageDescription: 'Sprache für Push-Benachrichtigungen', bedCooledThreshold: 'Bett-Abkühlung Schwellenwert', bedCooledThresholdDescription: 'Temperatur, unter der das Bett nach einem Druck als abgekühlt gilt', notificationProviders: 'Benachrichtigungsanbieter', addProvider: 'Anbieter hinzufügen', editProvider: 'Anbieter bearbeiten', providerType: 'Anbietertyp', testNotification: 'Testbenachrichtigung', testSuccess: 'Testbenachrichtigung erfolgreich gesendet', testFailed: 'Testbenachrichtigung konnte nicht gesendet werden', quietHours: 'Ruhezeiten', quietHoursDescription: 'Keine Störungen während dieser Zeiten', quietHoursStart: 'Beginn', quietHoursEnd: 'Ende', events: { title: 'Benachrichtigungsereignisse', printStart: 'Druck gestartet', printComplete: 'Druck abgeschlossen', printFailed: 'Druck fehlgeschlagen', printStopped: 'Druck gestoppt', printProgress: 'Fortschrittsmeldungen', printProgressDescription: 'Bei 25%, 50%, 75% benachrichtigen', printerOffline: 'Drucker offline', printerError: 'Druckerfehler', filamentLow: 'Filament niedrig', maintenanceDue: 'Wartung fällig', maintenanceDueDescription: 'Benachrichtigen, wenn Wartung erforderlich', }, // Smart Plugs smartPlug: { title: 'Smart Plugs', add: 'Smart Plug hinzufügen', edit: 'Smart Plug bearbeiten', name: 'Name', ipAddress: 'IP-Adresse', linkedPrinter: 'Verknüpfter Drucker', autoOn: 'Automatisch einschalten', autoOnDescription: 'Einschalten beim Druckstart', autoOff: 'Automatisch ausschalten', autoOffDescription: 'Ausschalten nach Druckende', offDelay: 'Ausschaltverzögerung', offDelayMinutes: 'Minuten nach Druck', offDelayTemp: 'Wenn Düse unter Temperatur', currentState: 'Aktueller Status', turnOn: 'Einschalten', turnOff: 'Ausschalten', }, // Filament Tracking Mode filamentTracking: 'Filament-Verfolgung', filamentTrackingDesc: 'Wählen Sie, wie Sie Ihre Filamentspulen verfolgen möchten. Sie können das integrierte Inventar oder einen externen Spoolman-Server verwenden.', trackingModeBuiltIn: 'Integriertes Inventar', trackingModeBuiltInDesc: 'RFID-Erkennung und Verbrauchserfassung inklusive', trackingModeSpoolmanDesc: 'Externer Filament-Management-Server', builtInFeatureRfid: 'Erkennt automatisch Bambu Lab RFID-Spulen im AMS', builtInFeatureUsage: 'Erfasst den Filamentverbrauch pro Druck', builtInFeatureCatalog: 'Spulen, Farben und K-Faktor-Profile verwalten', builtInFeatureThirdParty: 'Drittanbieter-Spulen können Inventarspulen zugewiesen werden', amsSyncButton: 'Gewichte vom AMS synchronisieren', amsSyncTitle: 'Spulengewichte vom AMS synchronisieren', amsSyncMessage: 'Alle Inventar-Spulengewichte werden mit den aktuellen AMS-Restwerten der verbundenen Drucker überschrieben. Verwenden Sie dies zur Wiederherstellung beschädigter Gewichtsdaten. Drucker müssen online sein.', amsSyncing: 'Synchronisiere...', amsSyncSuccess: '{{synced}} Spule(n) synchronisiert, {{skipped}} übersprungen', amsSyncError: 'Synchronisierung der Gewichte vom AMS fehlgeschlagen', // Spoolman settings spoolmanUrl: 'Spoolman URL', spoolmanUrlHint: 'URL Ihres Spoolman-Servers (z.B. http://localhost:7912)', spoolmanConnected: 'Verbunden', spoolmanDisconnected: 'Nicht verbunden', status: 'Status', connect: 'Verbinden', disconnect: 'Trennen', howSyncWorks: 'So funktioniert die Synchronisierung', syncInfoRfidOnly: 'Nur offizielle Bambu Lab Spulen mit RFID werden synchronisiert', syncInfoAutoCreate: 'Neue Spulen werden bei der ersten Synchronisierung automatisch in Spoolman erstellt', syncInfoThirdPartySkipped: 'Nicht-Bambu-Lab-Spulen (Drittanbieter, nachgefüllt) werden übersprungen', linkingExistingSpools: 'Vorhandene Spulen verknüpfen', linkingExistingSpoolsDesc: 'Um vorhandene Spoolman-Spulen mit Ihrem AMS zu verknüpfen, fahren Sie über einen AMS-Slot und klicken Sie auf "Mit Spoolman verknüpfen".', syncMode: 'Synchronisierungsmodus', syncModeAuto: 'Automatisch', syncModeManual: 'Nur manuell', syncModeAutoDesc: 'AMS-Daten werden automatisch synchronisiert, wenn Änderungen erkannt werden', syncModeManualDesc: 'Nur bei manueller Auslösung synchronisieren', syncAmsData: 'AMS-Daten synchronisieren', syncAmsDataDesc: 'AMS-Daten des Druckers manuell mit Spoolman synchronisieren', allPrinters: 'Alle Drucker', // Default printer noDefaultPrinter: 'Kein Standard (jedes Mal fragen)', // Sidebar sidebarOrder: 'Seitenleisten-Reihenfolge', // Camera saveThumbnails: 'Vorschaubilder speichern', captureFinishPhoto: 'Abschlussfoto aufnehmen', noPrintersConfigured: 'Keine Drucker konfiguriert', // Archive settings archiveMode: { always: 'Immer Archiveintrag erstellen', never: 'Nie Archiveintrag erstellen', ask: 'Jedes Mal fragen', }, // Updates checkForUpdatesLabel: 'Nach Updates suchen', checkPrinterFirmware: 'Drucker-Firmware prüfen', includeBetaUpdates: 'Beta-Versionen einschließen', includeBetaUpdatesDesc: 'Über Beta- und Vorabversionen bei der Updateprüfung benachrichtigen', // Queue enableRetry: 'Wiederholung aktivieren', // Home Assistant homeAssistantDescription: 'Smart Plugs über Home Assistant steuern', environmentManagedLabel: '(Umgebungsvariable)', autoEnabledViaEnv: 'Automatisch über Umgebungsvariablen aktiviert', urlFromEnvReadOnly: 'Wert wird über HA_URL Umgebungsvariable gesetzt (schreibgeschützt)', tokenFromEnvReadOnly: 'Wert wird über HA_TOKEN Umgebungsvariable gesetzt (schreibgeschützt)', // MQTT mqttConnectedTo: 'Verbunden mit', // Prometheus prometheusDescription: 'Druckerdaten im Prometheus-Format bereitstellen', // Smart plugs empty state noSmartPlugsTitle: 'Keine Smart Plugs konfiguriert', noSmartPlugsDescription: 'Fügen Sie einen Tasmota-basierten Smart Plug hinzu, um den Energieverbrauch zu verfolgen und die Stromsteuerung zu automatisieren.', // Notifications empty state noProvidersTitle: 'Keine Anbieter konfiguriert', noProvidersDescription: 'Fügen Sie einen Anbieter hinzu, um Benachrichtigungen zu erhalten.', noTemplatesAvailable: 'Keine Vorlagen verfügbar. Starten Sie das Backend neu, um Standardvorlagen zu laden.', // API permissions apiPermissionView: 'Druckerstatus und Warteschlange anzeigen', apiPermissionEdit: 'Elemente zur Druckwarteschlange hinzufügen und entfernen', // API keys apiKeysEmptyTitle: 'Keine API-Schlüssel', apiKeysEmptyDescription: 'Erstellen Sie einen API-Schlüssel zur Integration mit externen Diensten.', // Users noUsersFound: 'Keine Benutzer gefunden', noGroupsFound: 'Keine Gruppen gefunden', noGroupsAvailable: 'Keine Gruppen verfügbar', passwordsDoNotMatch: 'Passwörter stimmen nicht überein', systemGroupWarning: 'System-Gruppennamen können nicht geändert werden', // Auth disabled authDisabledTitle: 'Authentifizierung ist deaktiviert', authDisabledFeature1: 'Anmeldung zum Zugriff auf das System erforderlich', authDisabledFeature2: 'Mehrere Benutzer mit gruppenbasierten Berechtigungen erstellen', authDisabledFeature3: 'Zugriff mit über 50 granularen Berechtigungen steuern', // User deletion userHasCreated: 'Dieser Benutzer hat erstellt:', userItemsQuestion: 'Was möchten Sie mit diesen Elementen tun?', deleteUserConfirm: 'Möchten Sie diesen Benutzer wirklich löschen?', actionCannotBeUndone: 'Diese Aktion kann nicht rückgängig gemacht werden.', // Smart plugs addFirstSmartPlug: 'Ersten Smart Plug hinzufügen', // Notifications providers: 'Anbieter', log: 'Protokoll', testAll: 'Alle testen', testResults: 'Testergebnisse', testPassedCount: '{{count}} bestanden', testFailedCount: '{{count}} fehlgeschlagen', messageTemplates: 'Nachrichtenvorlagen', messageTemplatesDescription: 'Passen Sie Benachrichtigungen für jedes Ereignis an.', // API Keys section apiKeys: 'API-Schlüssel', apiKeysDescription: 'Erstellen Sie API-Schlüssel für externe Integrationen und Webhooks.', createKey: 'Schlüssel erstellen', apiKeyCreated: 'API-Schlüssel erfolgreich erstellt', apiKeyCopyWarning: 'Kopieren Sie diesen Schlüssel jetzt - er wird nicht mehr angezeigt!', useInApiBrowser: 'Im API-Browser verwenden', createNewApiKey: 'Neuen API-Schlüssel erstellen', keyName: 'Schlüsselname', keyNamePlaceholder: 'z.B. Home Assistant, OctoPrint', readStatus: 'Status lesen', readStatusDescription: 'Druckerstatus und Warteschlange anzeigen', manageQueue: 'Warteschlange verwalten', manageQueueDescription: 'Elemente zur Druckwarteschlange hinzufügen und entfernen', controlPrinter: 'Drucker steuern', controlPrinterDescription: 'Drucke pausieren, fortsetzen und stoppen', unnamedKey: 'Unbenannter Schlüssel', lastUsed: 'Zuletzt verwendet', read: 'Lesen', control: 'Steuern', createFirstKey: 'Ersten Schlüssel erstellen', webhookEndpoints: 'Webhook-Endpunkte', webhookApiKeyHint: 'Verwenden Sie Ihren API-Schlüssel im X-API-Key-Header.', webhook: { getAllStatus: 'Alle Druckerstatus abrufen', getSpecificStatus: 'Spezifischen Druckerstatus abrufen', addToQueue: 'Zur Druckwarteschlange hinzufügen', pausePrint: 'Druck pausieren', resumePrint: 'Druck fortsetzen', stopPrint: 'Druck stoppen', }, apiBrowser: 'API-Browser', apiBrowserDescription: 'Erkunden und testen Sie alle verfügbaren API-Endpunkte.', apiKeyForTesting: 'API-Schlüssel zum Testen', apiKeyPlaceholder: 'Fügen Sie hier Ihren API-Schlüssel ein, um authentifizierte Endpunkte zu testen...', apiKeyHint: 'Dieser Schlüssel wird als X-API-Key-Header mit Anfragen gesendet.', deleteApiKeyTitle: 'API-Schlüssel löschen', deleteApiKeyMessage: 'Möchten Sie diesen API-Schlüssel wirklich löschen? Alle Integrationen, die diesen Schlüssel verwenden, funktionieren nicht mehr.', deleteKey: 'Schlüssel löschen', // Filament tab amsDisplayThresholds: 'AMS-Anzeigeschwellenwerte', amsThresholdsDescription: 'Konfigurieren Sie Farbschwellenwerte für AMS-Feuchtigkeits- und Temperaturanzeigen.', humidity: 'Luftfeuchtigkeit', goodGreen: 'Gut (grün)', fairOrange: 'Mittel (orange)', aboveFairBad: 'Über dem mittleren Schwellenwert wird rot angezeigt (schlecht)', temperature: 'Temperatur', goodBlue: 'Gut (blau)', aboveFairHot: 'Über dem mittleren Schwellenwert wird rot angezeigt (heiß)', historyRetention: 'Verlaufsaufbewahrung', keepSensorHistory: 'Sensorverlauf behalten für', historyRetentionDescription: 'Ältere Feuchtigkeits- und Temperaturdaten werden automatisch gelöscht', printModal: 'Druckdialog', expandCustomMapping: 'Benutzerdefinierte Zuordnung standardmäßig erweitern', expandCustomMappingDescription: 'Bei Druck auf mehrere Drucker die AMS-Zuordnung pro Drucker erweitert anzeigen', // User management authentication: 'Authentifizierung', authEnabledDescription: 'Ihre Instanz ist mit Benutzerauthentifizierung gesichert', authDisabledDescription: 'Aktivieren Sie die Anmeldepflicht und verwalten Sie den Benutzerzugriff', authDisabledMessage: 'Aktivieren Sie die Authentifizierung, um Benutzerkonten zu erstellen, Berechtigungen zu verwalten und Ihre Bambuddy-Instanz zu sichern.', enableAuthentication: 'Authentifizierung aktivieren', currentUser: 'Aktueller Benutzer', changePassword: 'Passwort ändern', admin: 'Admin', users: 'Benutzer', addUser: 'Benutzer hinzufügen', groups: 'Gruppen', addGroup: 'Gruppe hinzufügen', system: 'System', noDescription: 'Keine Beschreibung', userCount: '{{count}} Benutzer', permissionCount: '{{count}} Berechtigungen', createUser: 'Benutzer erstellen', username: 'Benutzername', enterUsername: 'Benutzername eingeben', password: 'Passwort', enterPassword: 'Passwort eingeben (min. 6 Zeichen)', confirmPassword: 'Passwort bestätigen', confirmPasswordPlaceholder: 'Passwort bestätigen', // Title tooltips viewReleaseOnGitHub: 'Release auf GitHub anzeigen', turnAllPlugsOn: 'Alle Stecker einschalten', turnAllPlugsOff: 'Alle Stecker ausschalten', // Modal: Clear logs clearNotificationLogs: 'Benachrichtigungsprotokolle löschen', clearLogsMessage: 'Dadurch werden alle Benachrichtigungsprotokolle, die älter als 30 Tage sind, dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.', clearLogs: 'Protokolle löschen', // Modal: Reset UI resetUiPreferences: 'UI-Einstellungen zurücksetzen', resetUiPreferencesMessage: 'Dadurch werden alle UI-Einstellungen auf Standardwerte zurückgesetzt: Seitenleisten-Reihenfolge, Theme, Dashboard-Layout, Ansichtsmodi und Sortiereinstellungen. Ihre Drucker, Archive und Servereinstellungen werden NICHT beeinträchtigt. Die Seite wird nach dem Löschen neu geladen.', resetPreferences: 'Einstellungen zurücksetzen', // Modal: Delete group deleteGroupTitle: 'Gruppe löschen', deleteGroupMessage: 'Möchten Sie diese Gruppe wirklich löschen? Benutzer in dieser Gruppe verlieren diese Berechtigungen.', deleteGroup: 'Gruppe löschen', // Modal: Disable auth disableAuthenticationTitle: 'Authentifizierung deaktivieren', disableAuthenticationMessage: 'Möchten Sie die Authentifizierung wirklich deaktivieren? Dadurch wird Ihre Bambuddy-Instanz ohne Anmeldung zugänglich. Alle Benutzer bleiben in der Datenbank, aber die Authentifizierung wird deaktiviert.', disableAuthentication: 'Authentifizierung deaktivieren', // Additional settings configureBambuddy: 'Bambuddy konfigurieren', systemDefault: 'Systemstandard', archiveSettings: 'Archiv-Einstellungen', newWindow: 'Neues Fenster', embeddedOverlay: 'Eingebettetes Overlay', preferredSlicer: 'Bevorzugter Slicer', preferredSlicerDescription: 'Wähle die Slicer-Anwendung zum Öffnen von Dateien', externalCameras: 'Externe Kameras', costTracking: 'Kostenverfolgung', printsOnly: 'Nur Drucke', totalConsumption: 'Gesamtverbrauch', dataManagement: 'Datenverwaltung', storageUsage: 'Speichernutzung', storageUsageDescription: 'Aufschlüsselung der Datennutzung nach Kategorie', storageUsageTotal: 'Gesamt', storageUsageErrors: 'Fehler', storageUsageOtherBreakdown: 'Sonstiges (enthält statische Assets, Skripte und Konfigurationsdateien)', storageUsageSystem: 'System', storageUsageData: 'Daten', storageUsageUnavailable: 'Speichernutzungsinformationen nicht verfügbar', clearNotificationLogsDescription: 'Benachrichtigungsprotokolle älter als 30 Tage löschen', resetUiPreferencesDescription: 'Seitenleisten-Reihenfolge, Theme, Ansichtsmodi und Layout-Einstellungen zurücksetzen. Drucker, Archive und Einstellungen werden nicht beeinflusst.', enableHomeAssistant: 'Home Assistant aktivieren', enableMqtt: 'MQTT aktivieren', useTls: 'TLS verwenden', enableMetricsEndpoint: 'Metrik-Endpunkt aktivieren', availableMetrics: 'Verfügbare Metriken', editUser: 'Benutzer bearbeiten', deleteUserTitle: 'Benutzer löschen', groupName: 'Gruppenname', // Placeholders leaveEmptyForAnonymous: 'Leer lassen für anonym', leaveEmptyForNoAuth: 'Leer lassen für keine Authentifizierung', enterNewPassword: 'Neues Passwort eingeben', confirmNewPassword: 'Neues Passwort bestätigen', enterGroupName: 'Gruppenname eingeben', enterDescriptionOptional: 'Beschreibung eingeben (optional)', enterCurrentPassword: 'Aktuelles Passwort eingeben', enterNewPasswordMin6: 'Neues Passwort eingeben (min. 6 Zeichen)', toast: { keyCopied: 'Schlüssel in Zwischenablage kopiert', copyFailed: 'Schlüssel konnte nicht kopiert werden', keyAddedToBrowser: 'Schlüssel zum API-Browser hinzugefügt', clearLogsFailed: 'Protokolle konnten nicht gelöscht werden', uiPreferencesReset: 'UI-Einstellungen zurückgesetzt. Wird neu geladen...', authDisabled: 'Authentifizierung erfolgreich deaktiviert', authDisableFailed: 'Authentifizierung konnte nicht deaktiviert werden', apiKeyCreated: 'API-Schlüssel erstellt', apiKeyDeleted: 'API-Schlüssel gelöscht', userCreated: 'Benutzer erfolgreich erstellt', userUpdated: 'Benutzer erfolgreich aktualisiert', userDeleted: 'Benutzer erfolgreich gelöscht', groupCreated: 'Gruppe erfolgreich erstellt', groupUpdated: 'Gruppe erfolgreich aktualisiert', groupDeleted: 'Gruppe erfolgreich gelöscht', fillRequiredFields: 'Bitte füllen Sie alle erforderlichen Felder aus', passwordsDoNotMatch: 'Passwörter stimmen nicht überein', passwordTooShort: 'Passwort muss mindestens 6 Zeichen lang sein', enterGroupName: 'Bitte geben Sie einen Gruppennamen ein', settingsSaved: 'Einstellungen gespeichert', cameraSettingsSaved: 'Kamera-Einstellungen gespeichert', enterCameraUrl: 'Bitte geben Sie eine Kamera-URL ein', passwordChanged: 'Passwort erfolgreich geändert', connectionFailed: 'Verbindung fehlgeschlagen', testFailed: 'Test fehlgeschlagen', cameraConnected: 'Kamera verbunden{{resolution}}', }, testConnection: 'Verbindung testen', catalog: { spoolCatalog: 'Spulenkatalog', spoolCatalogDescription: 'Leerspulengewichte nach Marke/Typ. Wird für die automatische Gewichtssuche beim Hinzufügen von Spulen verwendet.', searchCatalog: 'Katalog durchsuchen...', addNewEntry: 'Neuen Eintrag hinzufügen', namePlaceholder: 'Name (z.B. Bambu Lab - Plastik)', weight: 'Gewicht', type: 'Typ', default: 'Standard', custom: 'Benutzerdefiniert', noMatch: 'Keine Einträge entsprechen Ihrer Suche', empty: 'Keine Einträge im Katalog', deleteEntry: 'Eintrag löschen', deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?', resetCatalog: 'Katalog zurücksetzen', resetConfirm: 'Katalog auf Standardwerte zurücksetzen? Alle benutzerdefinierten Einträge werden entfernt.', loadFailed: 'Spulenkatalog konnte nicht geladen werden', nameWeightRequired: 'Name und Gewicht sind erforderlich', entryAdded: 'Eintrag hinzugefügt', addFailed: 'Eintrag konnte nicht hinzugefügt werden', entryUpdated: 'Eintrag aktualisiert', updateFailed: 'Eintrag konnte nicht aktualisiert werden', entryDeleted: 'Eintrag gelöscht', deleteFailed: 'Eintrag konnte nicht gelöscht werden', resetSuccess: 'Katalog auf Standardwerte zurückgesetzt', resetFailed: 'Katalog konnte nicht zurückgesetzt werden', exported: '{{count}} Einträge exportiert', imported: '{{added}} Einträge importiert ({{skipped}} übersprungen)', importFailed: 'Import fehlgeschlagen: ungültiges JSON-Format', exportTooltip: 'Katalog als JSON exportieren', importTooltip: 'Katalog aus JSON importieren', resetTooltip: 'Auf Standardwerte zurücksetzen', }, colorCatalog: { title: 'Farbkatalog', description: 'Filamentfarben nach Hersteller/Material. Wird für die automatische Farbsuche beim Hinzufügen von Spulen verwendet.', searchColors: 'Farben durchsuchen...', allManufacturers: 'Alle Hersteller', addNewColor: 'Neue Farbe hinzufügen', manufacturer: 'Hersteller', colorName: 'Farbname', hex: 'Hex', materialOptional: 'Material (optional)', showing: '{{filtered}} von {{total}} Farben angezeigt', noMatch: 'Keine Farben entsprechen Ihrer Suche', empty: 'Keine Farben im Katalog', deleteColor: 'Farbe löschen', deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?', resetCatalog: 'Farbkatalog zurücksetzen', resetConfirm: 'Katalog auf Standardwerte zurücksetzen? Alle benutzerdefinierten Farben werden entfernt.', sync: 'Sync', starting: 'Starten...', syncTooltip: 'Von FilamentColors.xyz synchronisieren (2000+ Farben)', loadFailed: 'Farbkatalog konnte nicht geladen werden', fieldsRequired: 'Hersteller, Farbname und Hex-Farbe sind erforderlich', colorAdded: 'Farbe hinzugefügt', addFailed: 'Farbe konnte nicht hinzugefügt werden', colorUpdated: 'Farbe aktualisiert', updateFailed: 'Farbe konnte nicht aktualisiert werden', colorDeleted: 'Farbe gelöscht', deleteFailed: 'Farbe konnte nicht gelöscht werden', resetSuccess: 'Farbkatalog auf Standardwerte zurückgesetzt', resetFailed: 'Katalog konnte nicht zurückgesetzt werden', syncUpToDate: 'Bereits aktuell ({{count}} Farben geprüft)', syncComplete: '{{added}} neue Farben hinzugefügt ({{skipped}} bereits vorhanden)', syncError: 'Sync-Fehler', syncFailed: 'Synchronisierung von FilamentColors.xyz fehlgeschlagen', exported: '{{count}} Farben exportiert', imported: '{{added}} Farben importiert ({{skipped}} übersprungen)', importFailed: 'Import fehlgeschlagen: ungültiges JSON-Format', }, // General tab dateFormat: 'Datumsformat', dateFormatUs: 'US (MM/TT/JJJJ)', dateFormatEu: 'EU (TT/MM/JJJJ)', dateFormatIso: 'ISO (JJJJ-MM-TT)', timeFormat: 'Zeitformat', timeFormat12: '12-Stunden (3:30 PM)', timeFormat24: '24-Stunden (15:30)', defaultPrinter: 'Standarddrucker', defaultPrinterDescription: 'Diesen Drucker für Uploads, Nachdrucke und andere Vorgänge vorauswählen.', slicerBambuStudio: 'Bambu Studio', slicerOrcaSlicer: 'OrcaSlicer', sidebarOrderDescription: 'Elemente in der Seitenleiste per Drag & Drop neu anordnen. Hier auf Standardreihenfolge zurücksetzen.', reset: 'Zurücksetzen', // Appearance darkMode: 'Dunkelmodus', lightMode: 'Hellmodus', active: '(aktiv)', background: 'Hintergrund', accent: 'Akzent', style: 'Stil', bgNeutral: 'Neutral', bgWarm: 'Warm', bgCool: 'Kühl', bgOled: 'OLED Schwarz', bgSlate: 'Schieferblau', bgForest: 'Waldgrün', accentGreen: 'Grün', accentTeal: 'Türkis', accentBlue: 'Blau', accentOrange: 'Orange', accentPurple: 'Lila', accentRed: 'Rot', styleClassic: 'Klassisch', styleGlow: 'Leuchtend', styleVibrant: 'Lebendig', themeToggleHint: 'Zwischen Hell- und Dunkelmodus mit dem Sonnen-/Mondsymbol in der Seitenleiste wechseln.', // Archive autoArchivePrints: 'Drucke automatisch archivieren', autoArchiveDescription: '3MF-Dateien automatisch speichern, wenn Drucke abgeschlossen sind', saveThumbnailsDescription: 'Vorschaubilder aus 3MF-Dateien extrahieren und speichern', captureFinishPhotoDescription: 'Foto von der Druckerkamera aufnehmen, wenn der Druck abgeschlossen ist', ffmpegNotInstalled: 'ffmpeg nicht installiert', ffmpegRequired: 'Kameraaufnahme benötigt ffmpeg. Installieren über brew install ffmpeg (macOS) oder apt install ffmpeg (Linux).', // Camera camera: 'Kamera', cameraViewMode: 'Kamera-Ansichtsmodus', cameraOverlayDescription: 'Kamera öffnet sich als größenveränderbares Overlay auf dem Hauptbildschirm', cameraWindowDescription: 'Kamera öffnet sich in einem separaten Browserfenster', externalCamerasDescription: 'Externe Kameras konfigurieren, um die eingebaute Druckerkamera zu ersetzen. Unterstützt MJPEG-Streams, RTSP, HTTP-Snapshots und USB-Kameras (V4L2). Wenn aktiviert, wird die externe Kamera für Live-Ansicht und Abschlussfotos verwendet.', cameraPlaceholderUsb: 'Gerätepfad (/dev/video0)', cameraPlaceholderUrl: 'Kamera-URL (rtsp://... oder http://...)', cameraTypeMjpeg: 'MJPEG-Stream', cameraTypeRtsp: 'RTSP-Stream', cameraTypeSnapshot: 'HTTP-Snapshot', cameraTypeUsb: 'USB-Kamera (V4L2)', test: 'Testen', connected: 'Verbunden', disconnected: 'Getrennt', // Cost tracking currency: 'Währung', defaultFilamentCost: 'Standard-Filamentkosten (pro kg)', electricityCost: 'Stromkosten pro kWh', energyDisplayMode: 'Energieanzeige-Modus', energyModePrintDescription: 'Dashboard zeigt Summe der während Drucken verbrauchten Energie', energyModeTotalDescription: 'Dashboard zeigt Gesamtenergie der Smart Plugs', // File Manager fileManager: 'Dateimanager', createArchiveEntry: 'Archiveintrag beim Drucken erstellen', createArchiveEntryDescription: 'Beim Drucken aus dem Dateimanager optional einen Archiveintrag erstellen', lowDiskSpaceWarning: 'Warnung bei wenig Speicherplatz', lowDiskSpaceDescription: 'Warnung anzeigen, wenn freier Speicherplatz unter diesen Schwellenwert fällt', // Updates printerFirmware: 'Drucker-Firmware', checkFirmwareDescription: 'Nach Firmware-Updates von Bambu Lab suchen', bambuddySoftware: 'Bambuddy Software', autoCheckDescription: 'Automatisch beim Start nach neuen Versionen suchen', checkNow: 'Jetzt prüfen', updateAvailableVersion: 'Update verfügbar: v{{version}}', releaseNotes: 'Versionshinweise', updateViaDocker: 'Update über Docker Compose:', installUpdate: 'Update installieren', latestVersionRunning: 'Sie verwenden die neueste Version', failedToCheckUpdates: 'Update-Prüfung fehlgeschlagen: {{error}}', // Data Management backupRestore: 'Sicherung & Wiederherstellung', backupRestoreDescription: 'Einstellungen exportieren/importieren und GitHub-Backup konfigurieren', goToBackup: 'Zur Sicherung', // Network tab externalUrl: 'Externe URL', externalUrlDescription: 'Die externe URL, unter der Bambuddy erreichbar ist. Wird für Benachrichtigungsbilder und externe Integrationen verwendet.', bambuddyUrl: 'Bambuddy-URL', externalUrlHint: 'Protokoll und Port angeben (z.B. http://192.168.1.100:8000)', ftpRetry: 'FTP-Wiederholung', ftpRetryDescription: 'FTP-Operationen bei unzuverlässigem Drucker-WLAN wiederholen. Gilt für 3MF-Downloads, Druck-Uploads, Zeitraffer-Downloads und Firmware-Updates.', autoRetryDescription: 'Fehlgeschlagene FTP-Operationen automatisch wiederholen', retryAttempts: 'Wiederholungsversuche', retryDelay: 'Wiederholungsverzögerung', connectionTimeout: 'Verbindungs-Timeout', time_one: '{{count}} Mal', time_other: '{{count}} Mal', second_one: '{{count}} Sekunde', second_other: '{{count}} Sekunden', nSeconds: '{{count}} Sekunden', increaseForWeakWifi: 'Erhöhen für Drucker mit schwachem WLAN', // Home Assistant homeAssistant: 'Home Assistant', homeAssistantFullDescription: 'Mit Home Assistant verbinden, um Smart Plugs über die HA REST-API zu steuern. Unterstützt Switch-, Light-, Input_Boolean- und Script-Entitäten.', homeAssistantUrl: 'Home Assistant URL', longLivedAccessToken: 'Langlebiges Zugriffstoken', haTokenHint: 'Token in HA erstellen: Profil → Langlebige Zugriffstoken → Token erstellen', connectionSuccessful: 'Verbindung erfolgreich', connectionFailed: 'Verbindung fehlgeschlagen', haConnectionSuccess: 'Erfolgreich mit Home Assistant verbunden.', haConnectionFailed: 'Verbindung zu Home Assistant fehlgeschlagen.', // MQTT mqttPublishing: 'MQTT-Veröffentlichung', mqttDescription: 'BamBuddy-Ereignisse an einen externen MQTT-Broker zur Integration mit Node-RED, Home Assistant und anderen Automatisierungssystemen veröffentlichen.', mqttEnableDescription: 'Ereignisse an externen MQTT-Broker veröffentlichen', brokerHostname: 'Broker-Hostname', port: 'Port', usernameOptional: 'Benutzername (optional)', passwordOptional: 'Passwort (optional)', topicPrefix: 'Topic-Präfix', topicPrefixHint: 'Topics werden sein: {{prefix}}/printers//status, etc.', // Prometheus prometheusMetrics: 'Prometheus-Metriken', prometheusEndpointDescription: 'Druckermetriken unter /api/v1/metrics für Prometheus/Grafana-Überwachung bereitstellen.', bearerTokenOptional: 'Bearer-Token (optional)', bearerTokenHint: 'Wenn gesetzt, müssen Anfragen Authorization: Bearer enthalten', metricsConnectionStatus: 'Verbindungsstatus', metricsPrinterState: 'Druckerstatus (idle/printing/etc)', metricsPrintProgress: 'Druckfortschritt 0-100%', metricsBedTemp: 'Betttemperatur', metricsNozzleTemp: 'Düsentemperatur', metricsPrintsTotal: 'Gesamtdrucke nach Ergebnis', metricsMore: '...und mehr (Schichten, Lüfter, Warteschlange, Filamentverbrauch)', // Smart Plugs smartPlugsDescription: 'Smart Plugs (Tasmota oder Home Assistant) verbinden, um Stromsteuerung zu automatisieren und Energieverbrauch für Ihre Drucker zu verfolgen.', allOn: 'Alle Ein', allOff: 'Alle Aus', addSmartPlug: 'Smart Plug hinzufügen', energySummary: 'Energieübersicht', currentPower: 'Aktuelle Leistung', plugsOnline: '{{reachable}}/{{total}} Plugs online', today: 'Heute', yesterday: 'Gestern', total: 'Gesamt', enablePlugsForSummary: 'Plugs aktivieren, um Energieübersicht zu sehen', addNotificationProvider: 'Hinzufügen', // Users systemBadge: '(System)', creating: 'Erstellen...', changing: 'Ändern...', deleteUserAndItems: 'Benutzer UND dessen Elemente löschen', deleteUserKeepItems: 'Benutzer löschen, Elemente behalten (werden herrenlos)', ok: 'OK', }, // Notifications (for push notifications) notification: { printStarted: { title: 'Druck gestartet', body: '{{printer}}: {{filename}} wird gedruckt', }, printCompleted: { title: 'Druck abgeschlossen', body: '{{printer}}: {{filename}} erfolgreich abgeschlossen', }, printFailed: { title: 'Druck fehlgeschlagen', body: '{{printer}}: {{filename}} ist fehlgeschlagen', }, printStopped: { title: 'Druck gestoppt', body: '{{printer}}: {{filename}} wurde gestoppt', }, printProgress: { title: 'Druckfortschritt', body: '{{printer}}: {{filename}} ist zu {{percent}}% abgeschlossen', }, printerOffline: { title: 'Drucker offline', body: '{{printer}} ist offline', }, printerError: { title: 'Druckerfehler', body: '{{printer}}: {{error}}', }, filamentLow: { title: 'Filament niedrig', body: '{{printer}}: Filament geht zur Neige', }, maintenanceDue: { title: 'Wartung fällig', body: '{{printer}}: {{items}} benötigen Aufmerksamkeit', }, }, // Errors errors: { generic: 'Etwas ist schiefgelaufen', networkError: 'Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.', notFound: 'Nicht gefunden', unauthorized: 'Nicht autorisiert', serverError: 'Serverfehler', validationError: 'Bitte überprüfen Sie Ihre Eingabe', printerConnectionFailed: 'Verbindung zum Drucker fehlgeschlagen', saveFailed: 'Speichern fehlgeschlagen', deleteFailed: 'Löschen fehlgeschlagen', loadFailed: 'Laden der Daten fehlgeschlagen', }, // HMS Errors modal hmsErrors: { title: 'Fehler - {{name}}', noErrors: 'Keine Fehler', viewOnWiki: 'Im Bambu Lab Wiki ansehen', clearInstructions: 'Löschen Sie die Fehler am Drucker, um sie hier zu entfernen.', clearErrors: 'Fehler löschen', clearSuccess: 'HMS-Fehler gelöscht', clearFailed: 'HMS-Fehler konnten nicht gelöscht werden', }, // MQTT Debug modal mqttDebug: { title: 'MQTT-Debug-Protokoll', searchPlaceholder: 'Topic oder Payload suchen...', noMessages: 'Noch keine Nachrichten protokolliert', startLoggingHint: 'Klicken Sie auf "Protokollierung starten", um MQTT-Nachrichten aufzuzeichnen', noMessagesMatch: 'Keine Nachrichten entsprechen Ihrem Filter', adjustFilterHint: 'Versuchen Sie, Ihre Such- oder Filterkriterien anzupassen', incoming: 'Eingehend', outgoing: 'Ausgehend', loggingStopped: 'Protokollierung gestoppt', loggingActive: 'Protokollierung aktiv - Nachrichten werden automatisch aktualisiert', startLogging: 'Protokollierung starten', stopLogging: 'Protokollierung stoppen', clearLog: 'Protokoll löschen', topic: 'Topic', timestamp: 'Zeitstempel', direction: 'Richtung', all: 'Alle', }, // Printer File Manager modal (printer internal storage) printerFiles: { title: 'Dateimanager', storageUsed: 'Belegt:', storageFree: 'Frei:', filterPlaceholder: 'Dateien filtern...', deleteButton: 'Löschen', deleteFiles: '{{count}} Dateien löschen', deleteFileConfirm: '"{{name}}" löschen? Dies kann nicht rückgängig gemacht werden.', deleteFilesConfirm: '{{count}} ausgewählte Dateien löschen? Dies kann nicht rückgängig gemacht werden.', noFiles: 'Keine Dateien auf dem Drucker', loadingFiles: 'Dateien werden geladen...', failedToLoad: 'Dateien konnten nicht geladen werden', toast: { filesDeleted: '{{count}} Datei(en) gelöscht', deleteFailed: 'Löschen fehlgeschlagen: {{error}}', }, }, // Confirmations confirm: { delete: 'Möchten Sie dies wirklich löschen?', unsavedChanges: 'Sie haben ungespeicherte Änderungen. Möchten Sie wirklich verlassen?', clearQueue: 'Möchten Sie die Warteschlange wirklich leeren?', }, // Login page login: { title: 'Bambuddy Anmeldung', subtitle: 'Melden Sie sich bei Ihrem Konto an', username: 'Benutzername', usernamePlaceholder: 'Benutzername eingeben', usernameOrEmail: 'Benutzername oder E-Mail', usernameOrEmailPlaceholder: 'Benutzername oder @ E-Mail', password: 'Passwort', passwordPlaceholder: 'Passwort eingeben', signIn: 'Anmelden', signingIn: 'Anmeldung läuft...', forgotPassword: 'Passwort vergessen?', loginSuccess: 'Erfolgreich angemeldet', loginFailed: 'Anmeldung fehlgeschlagen', enterCredentials: 'Bitte Benutzername und Passwort eingeben', forgotPasswordTitle: 'Passwort vergessen', forgotPasswordMessage: 'Wenn Sie Ihr Passwort vergessen haben, wenden Sie sich bitte an Ihren Systemadministrator.', forgotPasswordEmailMessage: 'Geben Sie Ihre E-Mail-Adresse ein und wir senden Ihnen ein neues Passwort.', emailAddress: 'E-Mail-Adresse', emailPlaceholder: 'ihre.email@beispiel.de', cancel: 'Abbrechen', sending: 'Wird gesendet...', sendResetEmail: 'Zurücksetzungs-E-Mail senden', howToReset: 'So setzen Sie Ihr Passwort zurück:', resetStep1: 'Kontaktieren Sie Ihren Bambuddy-Administrator', resetStep2: 'Bitten Sie ihn, Ihr Passwort in der Benutzerverwaltung zurückzusetzen', resetStep3: 'Er kann ein neues temporäres Passwort für Sie festlegen', resetStep4: 'Melden Sie sich mit dem neuen Passwort an und ändern Sie es in den Einstellungen', gotIt: 'Verstanden', }, // Setup page setup: { title: 'Bambuddy Einrichtung', subtitle: 'Konfigurieren Sie die Authentifizierung für Ihre Bambuddy-Instanz', enableAuth: 'Authentifizierung aktivieren', adminAccount: 'Admin-Konto', adminAccountDesc: 'Wenn bereits Admin-Benutzer existieren, wird die Authentifizierung mit den vorhandenen Admin-Konten aktiviert. Lassen Sie die Felder unten leer, um vorhandene Admins zu verwenden, oder geben Sie neue Anmeldedaten ein, um einen neuen Admin-Benutzer zu erstellen.', adminUsername: 'Admin-Benutzername', adminPassword: 'Admin-Passwort', optionalIfAdminExists: '(optional, wenn Admin-Benutzer existieren)', adminUsernamePlaceholder: 'Admin-Benutzernamen eingeben (optional)', adminPasswordPlaceholder: 'Admin-Passwort eingeben (optional)', confirmPassword: 'Passwort bestätigen', confirmPasswordPlaceholder: 'Admin-Passwort bestätigen', settingUp: 'Einrichtung läuft...', completeSetup: 'Einrichtung abschließen', toast: { authEnabledAdminCreated: 'Authentifizierung aktiviert und Admin-Benutzer erstellt', authEnabledExistingAdmins: 'Authentifizierung mit vorhandenen Admin-Benutzern aktiviert', setupCompleted: 'Einrichtung abgeschlossen', enterBothCredentials: 'Bitte geben Sie sowohl Admin-Benutzernamen als auch Passwort ein, oder lassen Sie beide leer, um vorhandene Admin-Benutzer zu verwenden', passwordsDoNotMatch: 'Passwörter stimmen nicht überein', passwordTooShort: 'Passwort muss mindestens 6 Zeichen lang sein', }, }, // Password change changePassword: { title: 'Passwort ändern', currentPassword: 'Aktuelles Passwort', currentPasswordPlaceholder: 'Aktuelles Passwort eingeben', newPassword: 'Neues Passwort', newPasswordPlaceholder: 'Neues Passwort eingeben (min. 6 Zeichen)', confirmPassword: 'Neues Passwort bestätigen', confirmPasswordPlaceholder: 'Neues Passwort bestätigen', passwordsDoNotMatch: 'Passwörter stimmen nicht überein', passwordTooShort: 'Passwort muss mindestens 6 Zeichen lang sein', changing: 'Wird geändert...', success: 'Passwort erfolgreich geändert', failed: 'Passwortänderung fehlgeschlagen', }, // Plate detection alert plateAlert: { title: 'Druck pausiert!', message: 'Objekte auf dem Druckbett erkannt. Der Druck wurde automatisch pausiert. Bitte räumen Sie das Druckbett und setzen Sie den Druck fort.', understand: 'Verstanden', }, // Camera page camera: { title: 'Kameraansicht', invalidPrinterId: 'Ungültige Drucker-ID', live: 'Live', snapshot: 'Schnappschuss', restartStream: 'Stream neu starten', refreshSnapshot: 'Schnappschuss aktualisieren', fullscreen: 'Vollbild', exitFullscreen: 'Vollbild beenden', connectingToCamera: 'Verbinde mit Kamera...', capturingSnapshot: 'Schnappschuss wird aufgenommen...', connectionLost: 'Verbindung verloren', connectionFailed: 'Kameraverbindung fehlgeschlagen', reconnecting: 'Neuverbindung in {{countdown}}s... (Versuch {{attempt}}/{{max}})', reconnectNow: 'Jetzt verbinden', cameraUnavailable: 'Kamera nicht verfügbar', cameraUnavailableDesc: 'Stellen Sie sicher, dass der Drucker eingeschaltet und verbunden ist.', noCamera: 'Keine Kamera verfügbar', retry: 'Erneut versuchen', cameraStream: 'Kamera-Stream', zoomOut: 'Verkleinern', zoomIn: 'Vergrößern', resetZoom: 'Zoom zurücksetzen', recording: 'Aufnahme', startRecording: 'Aufnahme starten', stopRecording: 'Aufnahme stoppen', chamberLight: 'Kammerbeleuchtung umschalten', }, // Groups management groups: { title: 'Gruppenverwaltung', subtitle: 'Berechtigungsgruppen für Zugriffskontrolle verwalten', backToSettings: 'Zurück zu Einstellungen', createGroup: 'Gruppe erstellen', noPermission: 'Sie haben keine Berechtigung, auf diese Seite zuzugreifen.', system: 'System', noDescription: 'Keine Beschreibung', usersCount: '{{count}} Benutzer', permissionsCount: '{{count}} Berechtigungen', edit: 'Bearbeiten', delete: 'Löschen', toast: { created: 'Gruppe erfolgreich erstellt', updated: 'Gruppe erfolgreich aktualisiert', deleted: 'Gruppe erfolgreich gelöscht', enterGroupName: 'Bitte geben Sie einen Gruppennamen ein', }, modal: { editGroup: 'Gruppe bearbeiten', createGroup: 'Gruppe erstellen', cancel: 'Abbrechen', saving: 'Speichern...', creating: 'Erstellen...', saveChanges: 'Änderungen speichern', }, form: { groupName: 'Gruppenname', groupNamePlaceholder: 'Gruppennamen eingeben', systemGroupWarning: 'Systemgruppennamen können nicht geändert werden', description: 'Beschreibung', descriptionPlaceholder: 'Beschreibung eingeben (optional)', permissions: 'Berechtigungen ({{count}} ausgewählt)', }, deleteModal: { title: 'Gruppe löschen', message: 'Sind Sie sicher, dass Sie diese Gruppe löschen möchten? Benutzer in dieser Gruppe verlieren diese Berechtigungen.', confirm: 'Gruppe löschen', }, editor: { title: 'Gruppe bearbeiten', createTitle: 'Gruppe erstellen', search: 'Berechtigungen suchen...', selectAll: 'Alle auswählen', clearAll: 'Alle abwählen', permissionsSelected: '{{count}} ausgewählt', noResults: 'Keine Berechtigungen entsprechen Ihrer Suche', }, }, // Users management users: { title: 'Benutzerverwaltung', subtitle: 'Benutzer und deren Zugriff auf Ihre Bambuddy-Instanz verwalten', backToSettings: 'Zurück zu Einstellungen', createUser: 'Benutzer erstellen', noPermission: 'Sie haben keine Berechtigung, auf diese Seite zuzugreifen.', admin: 'Admin', noGroups: 'Keine Gruppen', active: 'Aktiv', inactive: 'Inaktiv', edit: 'Bearbeiten', delete: 'Löschen', system: 'System', noGroupsAvailable: 'Keine Gruppen verfügbar', table: { username: 'Benutzername', groups: 'Gruppen', status: 'Status', actions: 'Aktionen', }, toast: { created: 'Benutzer erfolgreich erstellt', updated: 'Benutzer erfolgreich aktualisiert', deleted: 'Benutzer erfolgreich gelöscht', fillRequired: 'Bitte füllen Sie alle Pflichtfelder aus', passwordsDoNotMatch: 'Passwörter stimmen nicht überein', passwordTooShort: 'Passwort muss mindestens 6 Zeichen lang sein', }, modal: { createUser: 'Benutzer erstellen', editUser: 'Benutzer bearbeiten', cancel: 'Abbrechen', creating: 'Erstellen...', saving: 'Speichern...', saveChanges: 'Änderungen speichern', advancedAuthSubtitle: 'mit erweiterter Authentifizierung', }, form: { username: 'Benutzername', usernamePlaceholder: 'Benutzernamen eingeben', email: 'E-Mail', emailPlaceholder: 'benutzer@beispiel.de', password: 'Passwort', passwordPlaceholder: 'Passwort eingeben', confirmPassword: 'Passwort bestätigen', confirmPasswordPlaceholder: 'Passwort bestätigen', newPasswordPlaceholder: 'Neues Passwort eingeben', confirmNewPasswordPlaceholder: 'Neues Passwort bestätigen', leaveBlankToKeep: 'leer lassen, um das aktuelle zu behalten', groups: 'Gruppen', optional: 'optional', autoGeneratedPassword: 'Ein sicheres Passwort wird automatisch generiert und per E-Mail an den Benutzer gesendet.', passwordManagedByAdvancedAuth: 'Das Passwort wird durch erweiterte Authentifizierung verwaltet. Verwenden Sie "Passwort zurücksetzen", um ein neues Passwort per E-Mail an den Benutzer zu senden.', resetPassword: 'Passwort zurücksetzen', resettingPassword: 'Passwort wird zurückgesetzt...', }, deleteModal: { title: 'Benutzer löschen', message: 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.', confirm: 'Benutzer löschen', }, }, // Stream overlay streamOverlay: { title: 'Stream-Overlay', invalidPrinterId: 'Ungültige Drucker-ID', cameraStream: 'Kamera-Stream', progress: 'Fortschritt', eta: 'ETA', printerIdle: 'Drucker ist inaktiv', printerOffline: 'Drucker offline', status: { printing: 'Druckt', paused: 'Pausiert', finished: 'Fertig', failed: 'Fehlgeschlagen', idle: 'Inaktiv', unknown: 'Unbekannt', }, }, // Profiles profiles: { title: 'Profile', subtitle: 'Verwalten Sie Ihre Slicer-Voreinstellungen und Druckvorschub-Kalibrierungen', tabs: { cloud: 'Cloud-Profile', local: 'Lokale Profile', kprofiles: 'K-Profile', }, localProfiles: { title: 'Lokale Profile', subtitle: 'Slicer-Voreinstellungen aus OrcaSlicer importieren und verwalten', import: 'Profile importieren', importDesc: '.bbscfg-, .bbsflmt-, .orca_filament-, .zip- oder .json-Dateien hier ablegen', importing: 'Importiere...', search: 'Lokale Voreinstellungen durchsuchen...', noPresets: 'Noch keine lokalen Voreinstellungen', badge: 'Lokal', edit: 'Bearbeiten', delete: 'Löschen', cancel: 'Abbrechen', deleteConfirmTitle: 'Voreinstellung löschen', deleteConfirm: 'Möchten Sie diese Voreinstellung wirklich löschen? Dies kann nicht rückgängig gemacht werden.', source: 'Quelle', inheritsFrom: 'Erbt von', filamentType: 'Typ', vendor: 'Hersteller', compatiblePrinters: 'Drucker', nozzleTemp: 'Düsentemperatur', cost: 'Kosten', density: 'Dichte', pressureAdvance: 'Druckvorschub', filament: 'Filament', process: 'Prozess', printer: 'Drucker', toast: { importSuccess: '{{count}} Voreinstellung(en) importiert', importSkipped: '{{count}} Voreinstellung(en) übersprungen (Duplikate)', importError: '{{count}} Fehler beim Import', deleted: 'Voreinstellung gelöscht', updated: 'Voreinstellung aktualisiert', }, }, connectedAs: 'Verbunden als', logout: 'Abmelden', noLogoutPermission: 'Sie haben keine Berechtigung zum Abmelden', failedToLoad: 'Profile konnten nicht geladen werden', retry: 'Erneut versuchen', time: { justNow: 'Gerade eben', minsAgo: 'vor {{count}}m', hoursAgo: 'vor {{count}}h', daysAgo: 'vor {{count}}d', }, toast: { loggedOut: 'Abgemeldet', }, login: { title: 'Mit Bambu Cloud verbinden', subtitle: 'Synchronisieren Sie Ihre Slicer-Voreinstellungen geräteübergreifend', email: 'E-Mail', password: 'Passwort', region: 'Region', regionGlobal: 'Global', regionChina: 'China', verificationCode: 'Bestätigungscode', totpCode: 'Authenticator-Code', checkEmail: 'Prüfen Sie Ihre E-Mail ({{email}}) für einen 6-stelligen Code', enterTotpHint: 'Geben Sie den 6-stelligen Code aus Ihrer Authenticator-App ein', accessToken: 'Zugriffstoken', accessTokenHint: 'Fügen Sie Ihr Bambu Lab Zugriffstoken ein (aus Bambu Studio)', back: 'Zurück', loginButton: 'Anmelden', verifyButton: 'Bestätigen', setTokenButton: 'Token setzen', useToken: 'Stattdessen Zugriffstoken verwenden', useEmail: 'Stattdessen mit E-Mail anmelden', toast: { loggedIn: 'Erfolgreich angemeldet', codeSent: 'Bestätigungscode an Ihre E-Mail gesendet', enterTotp: 'Geben Sie den Code aus Ihrer Authenticator-App ein', tokenSet: 'Token erfolgreich gesetzt', }, }, presets: { myPreset: 'Mein Profil (bearbeitbar)', duplicate: 'Duplizieren', editable: 'Bearbeitbar', failedToLoadDetails: 'Profil-Details konnten nicht geladen werden', deleteConfirm: 'Dieses Profil löschen?', deleteWarning: '"{{name}}" wird dauerhaft aus Bambu Cloud gelöscht. Dies kann nicht rückgängig gemacht werden.', noDuplicatePermission: 'Sie haben keine Berechtigung zum Duplizieren von Profilen', noEditPermission: 'Sie haben keine Berechtigung zum Bearbeiten von Profilen', noDeletePermission: 'Sie haben keine Berechtigung zum Löschen von Profilen', types: { filament: 'Filament-Profil', printer: 'Drucker-Profil', process: 'Prozess-Profil', }, toast: { deleted: 'Profil gelöscht', created: 'Profil erstellt', updated: 'Profil aktualisiert', duplicated: 'Profil dupliziert', fieldAdded: 'Feld "{{key}}" hinzugefügt', exported: 'Profil exportiert', }, baseLabel: 'Basis: {{name}}', currentLabel: 'Aktuell: {{name}}', newPreset: 'Neues Profil', editPreset: 'Profil bearbeiten', duplicatePreset: 'Profil duplizieren', createNewPreset: 'Neues Profil erstellen', customizeSettings: 'Passen Sie die Einstellungen für Ihr neues Profil an', compareWithBase: 'Mit Basis-Profil vergleichen', compare: 'Vergleichen', // CreatePresetModal - Basic Info basePreset: 'Basis-Profil', selectBasePreset: 'Basis-Profil auswählen...', presetName: 'Profilname', myCustomPreset: 'Mein eigenes Profil', inheritsFrom: 'Erbt von', dropJsonToImport: 'JSON zum Importieren ablegen', // CreatePresetModal - Tabs tabs: { common: 'Allgemein', allFields: 'Alle Felder', }, // CreatePresetModal - All Fields Tab availableFields: 'Verfügbare Felder', searchFieldsPlaceholder: 'Felder suchen...', noMatchingFields: 'Keine passenden Felder', allFieldsAdded: 'Alle Felder hinzugefügt', addCustomField: 'Eigenes Feld hinzufügen', yourOverrides: 'Ihre Überschreibungen', noOverridesYet: 'Noch keine Überschreibungen', clickFieldsToAdd: 'Klicken Sie links auf Felder, um sie hinzuzufügen', saveAsTemplate: 'Als Vorlage speichern', jsonTip: 'Tipp: Ziehen Sie eine .json-Datei auf dieses Fenster, um Einstellungen zu importieren', }, cloudView: { searchPlaceholder: 'Profile suchen...', templates: 'Vorlagen', refresh: 'Aktualisieren', newPreset: 'Neues Profil', clearFilters: 'Filter zurücksetzen', // Compare mode compareMode: 'Vergleichsmodus', selectAnotherPreset: 'Wählen Sie ein weiteres {{type}}-Profil', clickTwoPresets: 'Klicken Sie auf zwei Profile des gleichen Typs zum Vergleichen', selectFirst: '1. Erstes auswählen', selectSecond: '2. Zweites auswählen', compareNow: 'Jetzt vergleichen', // Status row lastSynced: 'Zuletzt synchronisiert:', showingCount: '{{showing}} von {{total}} Profilen', noPresetsFound: 'Keine Profile gefunden', // Column headers columns: { filament: 'Filament', process: 'Prozess', printer: 'Drucker', }, noFilamentPresets: 'Keine Filament-Profile', noProcessPresets: 'Keine Prozess-Profile', noPrinterPresets: 'Keine Drucker-Profile', // Filters filters: { type: 'Typ', owner: 'Besitzer', printer: 'Drucker', nozzle: 'Düse', filament: 'Filament', layer: 'Schicht', all: 'Alle', myPresets: 'Meine Profile', builtIn: 'Voreingestellt', process: 'Prozess', }, // Permissions noTemplatesPermission: 'Sie haben keine Berechtigung, Vorlagen zu verwalten', noRefreshPermission: 'Sie haben keine Berechtigung, Profile zu aktualisieren', noCreatePermission: 'Sie haben keine Berechtigung, Profile zu erstellen', }, templates: { title: 'Schnellvorlagen', noTemplates: 'Noch keine Vorlagen', createFirst: 'Erstellen Sie Vorlagen aus dem Preset-Editor', typeFilter: 'Typ:', deleteTitle: 'Vorlage löschen', deleteWarning: 'Diese Aktion kann nicht rückgängig gemacht werden', deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?', namePlaceholder: 'Vorlagenname', descriptionPlaceholder: 'Beschreibung', settingsJson: 'Einstellungen (JSON)', fieldsCount: '{{count}} Felder', shownInModals: 'In Dialogen angezeigt', hiddenInModals: 'In Dialogen ausgeblendet', apply: 'Anwenden', toast: { deleted: 'Vorlage gelöscht', updated: 'Vorlage aktualisiert', created: 'Vorlage erstellt', applied: 'Vorlage angewendet', }, }, }, // Support/Debug support: { debugLoggingActive: 'Debug-Protokollierung ist aktiv', manageLogs: 'Verwalten', collectItem7: 'Drucker-Verbindungsstatus und Firmware-Versionen', collectItem8: 'Integrationsstatus (Spoolman, MQTT, HA)', collectItem9: 'Netzwerkschnittstellen (nur Subnetze)', collectItem10: 'Python-Paketversionen', collectItem11: 'Datenbankzustandsprüfungen', collectItem12: 'Docker-Umgebungsdetails', }, // File manager fileManager: { title: 'Dateimanager', subtitle: 'Organisieren und verwalten Sie Ihre Druckdateien', uploadFiles: 'Dateien hochladen', newFolder: 'Neuer Ordner', folderName: 'Ordnername', folderNamePlaceholder: 'z.B. Funktionsteile', renameFile: 'Datei umbenennen', renameFolder: 'Ordner umbenennen', moveFiles: '{{count}} Datei(en) verschieben', rootNoFolder: 'Stammverzeichnis (Kein Ordner)', current: 'aktuell', linkFolder: 'Ordner verknüpfen', linkFolderDescription: '"{{name}}" mit einem Projekt oder Archiv verknüpfen für schnellen Zugriff.', project: 'Projekt', archive: 'Archiv', noProjectsFound: 'Keine Projekte gefunden', noArchivesFound: 'Keine Archive gefunden', unlink: 'Verknüpfung aufheben', link: 'Verknüpfen', dragDropFiles: 'Dateien hierher ziehen', dropFilesHere: 'Dateien hier ablegen', orClickToBrowse: 'oder klicken zum Durchsuchen', allFileTypesSupported: 'Alle Dateitypen werden unterstützt. ZIP-Dateien werden extrahiert.', zipFilesDetected: 'ZIP-Dateien erkannt', zipExtractOptions: 'ZIP-Dateien werden extrahiert. Wählen Sie, wie die Ordnerstruktur behandelt werden soll:', preserveZipStructure: 'Ordnerstruktur aus ZIP beibehalten', createFolderFromZip: 'Ordner aus ZIP-Dateiname erstellen', stlThumbnailGeneration: 'STL-Vorschaubildgenerierung', zipMayContainStl: 'ZIP-Dateien können STL-Dateien enthalten. Vorschaubilder können während der Extraktion generiert werden.', thumbnailsCanBeGenerated: 'Vorschaubilder können für STL-Dateien generiert werden. Große Modelle benötigen möglicherweise mehr Zeit.', generateThumbnailsForStl: 'Vorschaubilder für STL-Dateien generieren', threemfDetected: '3MF-Dateien erkannt', threemfExtractionInfo: 'Druckermodell, Material, Farbe und Druckeinstellungen werden automatisch aus 3MF-Dateien extrahiert.', willBeExtracted: 'Wird extrahiert', filesExtracted: '{{count}} Dateien extrahiert', uploadComplete: 'Upload abgeschlossen: {{succeeded}} erfolgreich', uploadFailed: 'Hochladen fehlgeschlagen', zipFilesFailed: '{{count}} Dateien fehlgeschlagen', uploading: 'Hochladen...', changeLink: 'Verknüpfung ändern...', linkTo: 'Verknüpfen mit...', linkToProjectOrArchive: 'Mit Projekt oder Archiv verknüpfen', addToQueue: 'Zur Warteschlange', schedulePrint: 'Planen', generateThumbnail: 'Vorschaubild generieren', generateThumbnails: 'Vorschaubilder generieren', generateThumbnailsForMissing: 'Vorschaubilder für STL-Dateien ohne Vorschau generieren', gridView: 'Rasteransicht', listView: 'Listenansicht', lowDiskSpaceWarning: 'Warnung: Wenig Speicherplatz', lowDiskSpaceDetails: 'Nur {{free}} frei von {{total}} gesamt. Schwellenwert ist auf {{threshold}} GB eingestellt.', files: 'Dateien', folders: 'Ordner', size: 'Größe', free: 'Frei', allFiles: 'Alle Dateien', wrap: 'Umbrechen', enableTextWrapping: 'Textumbruch aktivieren', disableTextWrapping: 'Textumbruch deaktivieren', dragToResizeTooltip: 'Ziehen zum Ändern der Größe, Doppelklick zum Zurücksetzen', searchFiles: 'Dateien suchen...', allTypes: 'Alle Typen', prints: 'Drucke', ascending: 'Aufsteigend', descending: 'Absteigend', resultsCount: '{{showing}} von {{total}} Dateien', selectAll: 'Alle auswählen', deselectAll: 'Auswahl aufheben', selected: '{{count}} ausgewählt', adding: 'Hinzufügen...', loadingFiles: 'Dateien werden geladen...', folderIsEmpty: 'Ordner ist leer', noFilesYet: 'Noch keine Dateien', folderEmptyDescription: 'Laden Sie Dateien hoch oder verschieben Sie Dateien in diesen Ordner.', noFilesDescription: 'Laden Sie Dateien hoch, um Ihre Druckdateien zu organisieren.', noMatchingFiles: 'Keine passenden Dateien', noMatchingFilesDescription: 'Keine Dateien entsprechen Ihren aktuellen Such- oder Filterkriterien.', clearFilters: 'Filter zurücksetzen', printedCount: '{{count}}x gedruckt', uploadedBy: 'Hochgeladen von', deleteFolder: 'Ordner löschen', deleteFile: 'Datei löschen', deleteFilesCount: '{{count}} Dateien löschen', deleteFolderConfirm: 'Möchten Sie diesen Ordner wirklich löschen? Alle Dateien darin werden ebenfalls gelöscht.', deleteFileConfirm: 'Möchten Sie diese Datei wirklich löschen?', deleteFilesConfirm: 'Möchten Sie {{count}} ausgewählte Dateien wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.', deleting: 'Wird gelöscht...', noPermissionRenameFolder: 'Sie haben keine Berechtigung, Ordner umzubenennen', noPermissionLinkFolder: 'Sie haben keine Berechtigung, Ordner zu verknüpfen', noPermissionDeleteFolder: 'Sie haben keine Berechtigung, Ordner zu löschen', noPermissionPrint: 'Sie haben keine Berechtigung zum Drucken', noPermissionAddToQueue: 'Sie haben keine Berechtigung, zur Warteschlange hinzuzufügen', noPermissionDownload: 'Sie haben keine Berechtigung, Dateien herunterzuladen', noPermissionRenameFile: 'Sie haben keine Berechtigung, diese Datei umzubenennen', noPermissionGenerateThumbnail: 'Sie haben keine Berechtigung, Vorschaubilder zu generieren', noPermissionDeleteFile: 'Sie haben keine Berechtigung, diese Datei zu löschen', noPermissionCreateFolder: 'Sie haben keine Berechtigung, Ordner zu erstellen', noPermissionUpload: 'Sie haben keine Berechtigung, Dateien hochzuladen', noPermissionMoveFiles: 'Sie haben keine Berechtigung, Dateien zu verschieben', noPermissionDeleteFiles: 'Sie haben keine Berechtigung, Dateien zu löschen', toast: { folderCreated: 'Ordner erstellt', folderDeleted: 'Ordner gelöscht', fileDeleted: 'Datei gelöscht', filesDeleted: '{{count}} Dateien gelöscht', filesMoved: 'Dateien verschoben', folderLinked: 'Ordner verknüpft', folderUnlinked: 'Ordnerverknüpfung aufgehoben', addedToQueue: '{{count}} Datei(en) zur Warteschlange hinzugefügt', addedToQueuePartial: '{{added}} Datei(en) hinzugefügt, {{failed}} fehlgeschlagen', failedToAddToQueue: 'Fehler beim Hinzufügen: {{error}}', fileRenamed: 'Datei umbenannt', folderRenamed: 'Ordner umbenannt', thumbnailsGenerated: '{{count}} Vorschaubild(er) generiert', thumbnailsGeneratedPartial: '{{succeeded}} Vorschaubild(er) generiert, {{failed}} fehlgeschlagen', noStlMissingThumbnails: 'Keine STL-Dateien ohne Vorschaubild', failedToGenerateThumbnails: 'Fehler beim Generieren der Vorschaubilder: {{error}}', thumbnailGenerated: 'Vorschaubild generiert', failedToGenerateThumbnail: 'Fehler beim Generieren des Vorschaubildes: {{error}}', }, }, // Projects projects: { title: 'Projekte', subtitle: 'Organisieren und verfolgen Sie Ihre 3D-Druckprojekte', newProject: 'Neues Projekt', editProject: 'Projekt bearbeiten', deleteProject: 'Projekt löschen', projectName: 'Projektname', description: 'Beschreibung', noProjects: 'Noch keine Projekte', noProjectsFiltered: 'Keine {{status}} Projekte', noProjectsFilteredHelp: 'Sie haben keine {{status}} Projekte. Projekte werden hier angezeigt, wenn sich ihr Status ändert.', createFirst: 'Erstellen Sie Ihr erstes Projekt, um verwandte Drucke zu organisieren, den Fortschritt zu verfolgen und Ihre Builds zu verwalten.', createFirstButton: 'Erstes Projekt erstellen', create: 'Erstellen', files: 'Dateien', prints: 'Drucke', plates: 'Platten', parts: 'Teile', lastModified: 'Zuletzt geändert', deleteConfirm: 'Möchten Sie dieses Projekt wirklich löschen? Archive und Warteschlangenelemente werden getrennt, aber nicht gelöscht.', addFiles: 'Dateien hinzufügen', removeFile: 'Datei entfernen', viewDetails: 'Details anzeigen', // Modal fields namePlaceholder: 'z.B. Voron 2.4 Build', descriptionPlaceholder: 'Optionale Beschreibung...', color: 'Farbe', targetPlates: 'Ziel-Platten', targetPlatesPlaceholder: 'z.B. 25', targetPlatesHelp: 'Anzahl der Druckaufträge', targetParts: 'Ziel-Teile', targetPartsPlaceholder: 'z.B. 150', targetPartsHelp: 'Benötigte Objekte insgesamt', tagsLabel: 'Tags (kommagetrennt)', tagsPlaceholder: 'z.B. voron, funktional, geschenk', dueDate: 'Fälligkeitsdatum', priority: 'Priorität', priorityLow: 'Niedrig', priorityNormal: 'Normal', priorityHigh: 'Hoch', priorityUrgent: 'Dringend', // Status statusActive: 'Aktiv', statusCompleted: 'Abgeschlossen', statusArchived: 'Archiviert', done: 'Fertig', completed: 'abgeschlossen', failed: 'fehlgeschlagen', inQueue: 'in Warteschlange', noPrintsYet: 'Noch keine Drucke', // Footer stats printJobs: 'Druckaufträge (Platten)', partsPrinted: 'Gedruckte Teile', failedParts: 'Fehlgeschlagene Teile', // Actions import: 'Importieren', export: 'Exportieren', importProject: 'Projekt importieren', exportAll: 'Alle Projekte exportieren', loading: 'Projekte werden geladen...', // Permissions noEditPermission: 'Sie haben keine Berechtigung, Projekte zu bearbeiten', noDeletePermission: 'Sie haben keine Berechtigung, Projekte zu löschen', noCreatePermission: 'Sie haben keine Berechtigung, Projekte zu erstellen', noImportPermission: 'Sie haben keine Berechtigung, Projekte zu importieren', noExportPermission: 'Sie haben keine Berechtigung, Projekte zu exportieren', // Toast toast: { created: 'Projekt erstellt', updated: 'Projekt aktualisiert', deleted: 'Projekt gelöscht', imported: 'Projekt importiert', multipleImported: '{{count}} Projekte importiert', importFailed: 'Import fehlgeschlagen', exported: 'Projekte exportiert (nur Metadaten)', }, }, // Project detail page projectDetail: { notFound: 'Projekt nicht gefunden', backToProjects: 'Zurück zu Projekten', export: 'Exportieren', exportProject: 'Projekt exportieren', noExportPermission: 'Sie haben keine Berechtigung, Projekte zu exportieren', noEditPermission: 'Sie haben keine Berechtigung, Projekte zu bearbeiten', partOf: 'Teil von:', priorityLabel: 'Priorität:', noPrints: 'Noch keine Drucke in diesem Projekt', status: { active: 'Aktiv', completed: 'Abgeschlossen', archived: 'Archiviert', }, priority: { low: 'Niedrig', normal: 'Normal', high: 'Hoch', urgent: 'Dringend', }, dueDate: { overdue: 'Überfällig', today: 'Heute fällig', daysLeft: '{{count}} Tage übrig', }, progress: { platesProgress: 'Platten-Fortschritt', partsProgress: 'Teile-Fortschritt', printJobs: 'Druckaufträge', parts: 'Teile', percentComplete: '{{percent}}% abgeschlossen', remaining: '{{count}} verbleibend', }, stats: { printJobs: 'Druckaufträge', total: 'gesamt', failed: '{{count}} fehlgeschlagen', partsPrinted: '{{count}} Teile gedruckt', printTime: 'Druckzeit', filamentUsed: 'Filament verbraucht', }, cost: { title: 'Kostenverfolgung', filamentCost: 'Filamentkosten', energy: 'Energie', budget: 'Budget', remaining: 'Verbleibend', }, subProjects: { title: 'Unterprojekte ({{count}})', }, notes: { title: 'Notizen', noEditPermission: 'Sie haben keine Berechtigung, Notizen zu bearbeiten', placeholder: 'Notizen zu diesem Projekt hinzufügen...', empty: 'Noch keine Notizen. Klicken Sie auf Bearbeiten, um Notizen hinzuzufügen.', }, files: { title: 'Dateien', linkFolders: 'Ordner aus dem Dateimanager verknüpfen', forQuickAccess: 'für schnellen Zugriff auf dieses Projekt.', fileCount: '{{count}} Datei(en)', empty: 'Keine Ordner verknüpft. Gehen Sie zum Dateimanager und verknüpfen Sie einen Ordner mit diesem Projekt.', }, bom: { title: 'Stückliste', acquired: '{{completed}}/{{total}} beschafft', showAll: 'Alle anzeigen', hideDone: 'Erledigte ausblenden', addPart: 'Teil hinzufügen', noAddPermission: 'Sie haben keine Berechtigung, Teile hinzuzufügen', partNamePlaceholder: 'Teilename (z.B. M3x8 Schrauben)', partName: 'Teilename', qty: 'Menge', price: 'Preis ({{currency}})', sourcingUrlPlaceholder: 'Bezugsquelle-URL (optional)', remarksPlaceholder: 'Bemerkungen (optional)', deletePart: 'Teil löschen', deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?', noUpdatePermission: 'Sie haben keine Berechtigung, Teile zu aktualisieren', noEditPermission: 'Sie haben keine Berechtigung, Teile zu bearbeiten', noDeletePermission: 'Sie haben keine Berechtigung, Teile zu löschen', totalCost: 'Gesamtkosten:', empty: 'Keine Teile in der Stückliste. Fügen Sie Hardware, Elektronik oder andere Komponenten hinzu, um zu verfolgen, was beschafft werden muss.', }, timeline: { title: 'Aktivitätsverlauf', empty: 'Noch keine Aktivität.', }, template: { saveAsTemplate: 'Als Vorlage speichern', noCreatePermission: 'Sie haben keine Berechtigung, Vorlagen zu erstellen', }, queue: { title: 'Warteschlange', viewAll: 'Alle anzeigen', printing: '{{count}} druckend', queued: '{{count}} in Warteschlange', }, prints: { title: 'Drucke ({{count}})', }, toast: { projectUpdated: 'Projekt aktualisiert', partAdded: 'Teil hinzugefügt', partRemoved: 'Teil entfernt', exportFailed: 'Export fehlgeschlagen', projectExported: 'Projekt exportiert', templateCreated: 'Vorlage erstellt', }, }, // System info system: { title: 'Systeminformationen', version: 'Version', uptime: 'Laufzeit', cpuUsage: 'CPU-Auslastung', memoryUsage: 'Speicherauslastung', diskUsage: 'Festplattenauslastung', networkInfo: 'Netzwerkinformationen', logs: 'Protokolle', debugMode: 'Debug-Modus', enableDebug: 'Debug-Protokollierung aktivieren', disableDebug: 'Debug-Protokollierung deaktivieren', downloadLogs: 'Protokolle herunterladen', clearLogs: 'Protokolle löschen', dockerInfo: 'Docker-Info', containerName: 'Container-Name', imageName: 'Image-Name', platform: 'Plattform', architecture: 'Architektur', }, // Library (K Profiles) library: { title: 'Filament-Bibliothek', addFilament: 'Filament hinzufügen', editFilament: 'Filament bearbeiten', deleteFilament: 'Filament löschen', vendor: 'Hersteller', material: 'Material', color: 'Farbe', kFactor: 'K-Faktor', temperature: 'Temperatur', noFilaments: 'Keine Filamente in der Bibliothek', deleteConfirm: 'Möchten Sie dieses Filament wirklich löschen?', importFromPrinter: 'Vom Drucker importieren', exportToFile: 'In Datei exportieren', }, // Spoolman spoolman: { title: 'Spoolman-Integration', enabled: 'Spoolman aktiviert', url: 'Spoolman URL', connected: 'Verbunden', disconnected: 'Nicht verbunden', testConnection: 'Verbindung testen', sync: 'Synchronisieren', syncing: 'Synchronisiert...', lastSync: 'Letzte Synchronisierung', linkToSpoolman: 'Mit Spoolman verknüpfen', openInSpoolman: 'In Spoolman öffnen', unlinkSpool: 'Spule trennen', selectSpool: 'Spule auswählen', noUnlinkedSpools: 'Keine nicht verknüpften Spulen verfügbar', linkSuccess: 'Spule erfolgreich mit Spoolman verknüpft', linkFailed: 'Verknüpfung mit Spoolman fehlgeschlagen', spoolId: 'Spulen-ID', fillSourceLabel: '(Spoolman)', weight: 'Gewicht', remaining: 'Verbleibend', disableWeightSync: 'AMS-Gewichtsschätzung deaktivieren', disableWeightSyncDesc: 'Verbleibende Kapazität nicht aus AMS-Schätzungen aktualisieren. Verwenden Sie dies, wenn Sie die Verbrauchserfassung von Spoolman gegenüber den prozentualen AMS-Schätzungen bevorzugen. Neue Spulen verwenden weiterhin die AMS-Schätzung als Anfangsgewicht.', reportPartialUsage: 'Teilverbrauch bei fehlgeschlagenen Drucken melden', reportPartialUsageDesc: 'Wenn ein Druck fehlschlägt oder abgebrochen wird, den geschätzten Filamentverbrauch bis zu diesem Zeitpunkt basierend auf dem Schichtfortschritt melden.', }, // Inventar inventory: { title: 'Spulen-Inventar', addSpool: 'Spule hinzufügen', editSpool: 'Spule bearbeiten', material: 'Material', selectMaterial: 'Material auswählen...', subtype: 'Untertyp', brand: 'Marke', searchBrand: 'Marke suchen...', useCustomBrand: '"{{brand}}" verwenden', useCustomMaterial: 'Benutzerdefiniertes Material verwenden: {{material}}', colorName: 'Farbname', colorNamePlaceholder: 'Jade White, Fire Red...', color: 'Farbe', hexColor: 'Hex-Farbe', pickColor: 'Benutzerdefinierte Farbe wählen', labelWeight: 'Nenngewicht', coreWeight: 'Leergewicht der Spule', searchSpoolWeight: 'Spulengewicht suchen...', weightUsed: 'Verbraucht', currentWeight: 'Restgewicht', measuredWeight: 'Gemessenes Gewicht', costPerKg: 'Kosten pro kg', measuredWeightError: 'Das gemessene Gewicht muss zwischen {{min}}g und {{max}}g liegen.', slicerFilament: 'Slicer-Filament', slicerFilamentName: 'Slicer-Preset-Name', slicerPreset: 'Slicer-Preset', searchPresets: 'Filament-Presets suchen...', selectedPreset: 'Ausgewählt', noPresetsFound: 'Keine Presets gefunden', tempOverrides: 'Temperatur-Überschreibungen', note: 'Notiz', notePlaceholder: 'Zusätzliche Notizen zu dieser Spule...', archive: 'Archivieren', restore: 'Wiederherstellen', noSpools: 'Noch keine Spulen. Fügen Sie Ihre erste Spule hinzu.', noManualSpools: 'Keine manuell hinzugefügten Spulen verfügbar. Fügen Sie zuerst eine Spule zum Inventar hinzu.', kProfiles: 'K-Profile', addKProfile: 'K-Profil hinzufügen', assignSpool: 'Spule zuweisen', unassignSpool: 'Zuweisung aufheben', assignSuccess: 'Spule zugewiesen und AMS-Slot konfiguriert', assignFailed: 'Spulenzuweisung fehlgeschlagen', selectSpool: 'Wählen Sie eine Spule für diesen Slot', assigned: 'Zugewiesen', assigning: 'Wird zugewiesen...', searchSpools: 'Spulen suchen...', allMaterials: 'Alle Materialien', filterByBrand: 'Nach Marke filtern...', showArchived: 'Archivierte anzeigen', quickAdd: 'Schnellerfassung (Lager)', quantity: 'Menge', stock: 'Lager', configured: 'Konfiguriert', spoolsCreated: '{{count}} Spulen erstellt', spoolCreated: 'Spule erstellt', spoolUpdated: 'Spule aktualisiert', spoolDeleted: 'Spule gelöscht', spoolArchived: 'Spule archiviert', spoolRestored: 'Spule wiederhergestellt', deleteConfirm: 'Möchten Sie diese Spule wirklich löschen? Dies kann nicht rückgängig gemacht werden.', archiveConfirm: 'Möchten Sie diese Spule wirklich archivieren?', advancedSettings: 'Erweiterte Einstellungen', filamentInfoTab: 'Filament-Info', paProfileTab: 'PA-Profil', filamentInfo: 'Filament', additional: 'Zusätzlich', loadingPresets: 'Cloud-Presets werden geladen...', cloudConnected: 'Cloud verbunden', cloudNotConnected: 'Cloud nicht verbunden (Standardwerte)', recentColors: 'Zuletzt', searchColors: 'Farben suchen...', searchResults: 'Suchergebnisse', allColors: 'Alle Farben', commonColors: 'Häufige Farben', showLess: 'Weniger', showAll: 'Alle', noColorsFound: 'Keine Farben gefunden', noResults: 'Keine Ergebnisse', selectMaterialFirst: 'Bitte zuerst ein Material im Filament-Info Tab auswählen.', noPrintersConfigured: 'Keine Drucker konfiguriert. Fügen Sie Drucker hinzu.', matchingFilter: 'Filter', anyBrand: 'Jede Marke', anyVariant: 'Jede Variante', autoSelect: 'Auto-Auswahl', matches: 'Treffer', match: 'Treffer', noMatches: 'Keine Treffer', connected: 'Verbunden', offline: 'Offline', printerOffline: 'Drucker ist offline. Verbinden Sie ihn, um Kalibrierungsprofile anzuzeigen.', noKProfilesMatch: 'Keine K-Profile stimmen mit dem gewählten Filament überein.', leftNozzle: 'Linke Düse', rightNozzle: 'Rechte Düse', profilesSelected: 'Kalibrierungsprofil(e) ausgewählt', // Stats & enhanced table totalInventory: 'Gesamtbestand', totalConsumed: 'Gesamtverbrauch', byMaterial: 'Nach Material', inPrinter: 'Im Drucker', lowStock: 'Niedriger Bestand', sinceTracking: 'Seit Beginn der Erfassung', loadedInAms: 'Im AMS/Ext geladen', remaining: 'Verbleibend', weightCheck: 'Gewichtskontrolle', lastWeighed: 'Zuletzt gewogen', neverWeighed: 'Nie gewogen', search: 'Spulen suchen...', showing: 'Zeige', to: 'bis', of: 'von', show: 'Zeige', spools: 'Spulen', spool: 'Spule', page: 'Seite', noSpoolsMatch: 'Keine Ergebnisse', noSpoolsMatchDesc: 'Versuchen Sie, Ihre Suche oder Filter anzupassen.', active: 'Aktiv', archived: 'Archiviert', all: 'Alle', used: 'Verwendet', new: 'Neu', clearFilters: 'Filter löschen', table: 'Tabelle', cards: 'Karten', net: 'Netto', // Grouping groupSimilar: 'Gruppieren', groupedSpools: '{{count}} identische Spulen', groupedRows: 'Zeilen', // Column config columns: 'Spalten', configureColumns: 'Spalten konfigurieren', configureColumnsDesc: 'Ziehen zum Neuordnen oder Pfeile verwenden. Sichtbarkeit mit dem Augensymbol umschalten.', visible: 'sichtbar', reset: 'Zurücksetzen', cancel: 'Abbrechen', applyChanges: 'Änderungen anwenden', moveUp: 'Nach oben', moveDown: 'Nach unten', hideColumn: 'Spalte ausblenden', showColumn: 'Spalte einblenden', // Tag-Verknüpfung linkToSpool: 'Mit Spule verknüpfen', tagLinked: 'Tag mit Spule verknüpft', tagLinkFailed: 'Tag-Verknüpfung fehlgeschlagen', tagAlreadyLinked: 'Tag bereits mit anderer Spule verknüpft', unknownTag: 'Unbekannter RFID-Tag erkannt', // Verbrauchshistorie usageHistory: 'Verbrauchshistorie', noUsageHistory: 'Noch kein Verbrauch erfasst', printName: 'Druckname', weightConsumed: 'Verbrauchtes Gewicht', clearHistory: 'Löschen', historyCleared: 'Verbrauchshistorie gelöscht', fillSourceLabel: '(Inv)', lowStockThresholdError: 'Der Schwellenwert muss zwischen 0.1 und 99.9 liegen', }, // Timelapse timelapse: { title: 'Zeitraffer', create: 'Zeitraffer erstellen', download: 'Herunterladen', delete: 'Löschen', preview: 'Vorschau', frameRate: 'Bildrate', quality: 'Qualität', processing: 'Wird verarbeitet...', noTimelapses: 'Keine Zeitraffer verfügbar', }, // AMS ams: { title: 'AMS', slot: 'Slot', empty: 'Leer', emptySlot: 'Leerer Slot', unknown: 'Unbekannt', humidity: 'Luftfeuchtigkeit', temperature: 'Temperatur', filamentType: 'Filamenttyp', filamentColor: 'Farbe', remaining: 'Verbleibend', history: 'AMS-Verlauf', noHistory: 'Kein Verlauf verfügbar', configureSlot: 'Slot konfigurieren', externalSpool: 'Externe Spule', profile: 'Profil', kFactor: 'K-Faktor', fill: 'Füllstand', configure: 'Konfigurieren', used: 'verwendet', remainingUnit: 'verbleibend', }, // Print modal printModal: { title: 'Druck starten', selectPrinter: 'Drucker auswählen', selectPlate: 'Platte auswählen', filamentMapping: 'Filamentzuordnung', totalCost: 'Gesamtkosten:', slotRemainingShort: ' - {{grams}}g übrig', printSettings: 'Druckeinstellungen', bedLeveling: 'Bett-Nivellierung', flowCalibration: 'Fluss-Kalibrierung', vibrationCalibration: 'Vibrations-Kalibrierung', layerInspection: 'Erste-Schicht-Prüfung', timelapse: 'Zeitraffer', startPrint: 'Druck starten', addToQueue: 'Zur Warteschlange hinzufügen', cancel: 'Abbrechen', noPrintersAvailable: 'Keine Drucker verfügbar', printerBusy: 'Drucker ist beschäftigt', printerOffline: 'Drucker ist offline', sameTypeDifferentColor: 'Gleicher Typ, andere Farbe', filamentTypeNotLoaded: 'Filamenttyp nicht geladen', openCalendar: 'Kalender öffnen', leftNozzle: 'L', rightNozzle: 'R', leftNozzleTooltip: 'Linke Düse', rightNozzleTooltip: 'Rechte Düse', filamentOverride: 'Filament-Überschreibung', filamentOverrideHint: 'Filamente für modellbasierte Zuweisung optional überschreiben. Der Planer wird gegen die ausgewählten Filamente statt der ursprünglichen 3MF-Werte abgleichen.', originalFilament: 'Original', overrideWith: 'Ersetzen mit', resetToOriginal: 'Auf Original zurücksetzen', }, // Backup backup: { title: 'Sichern & Wiederherstellen', createBackup: 'Sicherung erstellen', restoreBackup: 'Sicherung wiederherstellen', restoreDescription: 'Alle Daten aus einer Sicherungsdatei ersetzen', downloadBackup: 'Sicherung herunterladen', uploadBackup: 'Sicherung hochladen', lastBackup: 'Letzte Sicherung', autoBackup: 'Automatische Sicherung', backupNow: 'Jetzt sichern', restoreWarning: 'Warnung: Das Wiederherstellen einer Sicherung überschreibt alle aktuellen Daten.', includeArchives: 'Archive einschließen', includeSettings: 'Einstellungen einschließen', includeProfiles: 'Profile einschließen', backupSuccess: 'Sicherung erfolgreich erstellt', restoreSuccess: 'Sicherung erfolgreich wiederhergestellt', backupFailed: 'Sicherung fehlgeschlagen', restoreFailed: 'Wiederherstellung fehlgeschlagen', restoreNote: 'Virtueller Drucker wird während der Wiederherstellung gestoppt', // GitHub Backup githubBackup: 'GitHub Backup', enabled: 'Aktiviert', cloudLoginRequired: 'Bambu Cloud Login erforderlich. Melden Sie sich unter Profile → Cloud-Profile an, um GitHub-Backup zu aktivieren.', githubDescription: 'Synchronisieren Sie Ihre Profile automatisch mit einem privaten GitHub-Repository für Backup und Versionsverlauf.', repositoryUrl: 'Repository-URL', personalAccessToken: 'Persönlicher Zugriffstoken', tokenSaved: '(gespeichert)', enterNewToken: 'Neuen Token eingeben zum Aktualisieren', tokenHint: 'Feingranularer Token mit Lese-/Schreibberechtigung für Inhalte', branch: 'Branch', manualOnly: 'Nur manuell', hourly: 'Stündlich', daily: 'Täglich', weekly: 'Wöchentlich', includeInBackup: 'In Sicherung einschließen', kProfiles: 'K-Profile', kProfilesDescription: 'Druckvorschub-Kalibrierung von verbundenen Druckern', noPrintersConnected: 'Keine Drucker verbunden', printersConnected: '{{connected}}/{{total}} verbunden', cloudProfiles: 'Cloud-Profile', cloudProfilesDescription: 'Filament-, Drucker- und Prozessprofile aus der Bambu Cloud', appSettings: 'App-Einstellungen', appSettingsDescription: 'Bambuddy-Konfiguration (komplette Datenbank)', lastBackupAt: 'Letzte Sicherung:', noBackupsYet: 'Noch keine Sicherungen', next: 'Nächste:', startingBackup: 'Sicherung wird gestartet...', test: 'Test', enableBackup: 'Sicherung aktivieren', testConnection: 'Verbindung testen', enterRepoUrl: 'Repository-URL eingeben', enterRepoAndToken: 'Repository-URL und Zugriffstoken eingeben', repoRequired: 'Repository-URL ist erforderlich', tokenRequired: 'Zugriffstoken ist erforderlich', githubBackupEnabled: 'GitHub-Backup aktiviert', tokenUpdated: 'Token aktualisiert', settingsSaved: 'Einstellungen gespeichert', failedToSave: 'Speichern fehlgeschlagen: {{message}}', backupCompleteFiles: 'Sicherung abgeschlossen - {{count}} Dateien aktualisiert', backupSkippedNoChanges: 'Sicherung übersprungen - keine Änderungen', backupFailed2: 'Sicherung fehlgeschlagen: {{message}}', clearedLogs: '{{count}} Protokolle gelöscht', failedToClearLogs: 'Protokolle löschen fehlgeschlagen: {{message}}', // History history: 'Verlauf', clear: 'Löschen', date: 'Datum', status: 'Status', commit: 'Commit', // Local Backup localBackup: 'Lokale Sicherung', localBackupDescription: 'Erstellen Sie eine vollständige Sicherung Ihrer Bambuddy-Daten einschließlich Datenbank, Archive, Uploads und aller Dateien.', downloadBackupLabel: 'Sicherung herunterladen', completeBackupZip: 'Vollständige Sicherung: Datenbank + alle Dateien (ZIP)', download: 'Herunterladen', preparingBackup: 'Sicherung wird vorbereitet...', creatingArchive: 'Sicherungsarchiv wird erstellt... Dies kann bei großen Archiven eine Weile dauern.', downloadingFile: 'Sicherungsdatei wird heruntergeladen...', backupDownloaded: 'Sicherung erfolgreich heruntergeladen', failedToCreateBackup: 'Sicherung erstellen fehlgeschlagen: {{message}}', restore: 'Wiederherstellen', restoreReplacesAll: 'Wiederherstellung ersetzt alle Daten.', restoreReplacesAllDetail: 'Ihre aktuelle Datenbank und Dateien werden vollständig ersetzt. Nach der Wiederherstellung ist ein Neustart erforderlich.', restoreConfirmTitle: 'Sicherung wiederherstellen', restoreConfirmMessage: 'Sind Sie sicher, dass Sie von "{{filename}}" wiederherstellen möchten? Dies ersetzt Ihre aktuelle Datenbank und alle Dateien vollständig. Die Anwendung muss nach der Wiederherstellung neu gestartet werden.', restoreConfirmButton: 'Sicherung wiederherstellen', uploadingFile: 'Sicherungsdatei wird hochgeladen...', backupRestoredRestart: 'Sicherung wiederhergestellt. Bitte starten Sie Bambuddy neu.', failedToRestore: 'Sicherung wiederherstellen fehlgeschlagen. Bitte überprüfen Sie das Dateiformat.', reloadNow: 'Jetzt neu laden', creatingBackup: 'Sicherung erstellen', restoringBackup: 'Sicherung wiederherstellen', preparing: 'Vorbereiten...', processing: 'Verarbeiten...', doNotClosePage: 'Bitte schließen Sie diese Seite nicht und navigieren Sie nicht weg. Dieser Vorgang kann bei großen Sicherungen mehrere Minuten dauern.', // RestoreModal restoring: 'Wiederherstellen...', restoreComplete: 'Wiederherstellung abgeschlossen', restoreFailed2: 'Wiederherstellung fehlgeschlagen', importSettings: 'Einstellungen aus einer Sicherungsdatei importieren', pleaseWaitRestoring: 'Bitte warten Sie, während Ihre Daten wiederhergestellt werden', selectBackupFile: 'Klicken Sie, um eine Sicherungsdatei auszuwählen (.json oder .zip)', duplicateHandling: 'So funktioniert die Duplikatbehandlung:', matchPrinters: 'Drucker', matchPrintersBy: 'abgeglichen nach Seriennummer', matchSmartPlugs: 'Smart Plugs', matchSmartPlugsBy: 'abgeglichen nach IP-Adresse', matchNotificationProviders: 'Benachrichtigungsanbieter', matchNotificationProvidersBy: 'abgeglichen nach Name', matchFilaments: 'Filamente', matchFilamentsBy: 'abgeglichen nach Name + Typ + Marke', matchArchives: 'Archive', matchArchivesBy: 'abgeglichen nach Inhaltshash (immer übersprungen)', matchPendingUploads: 'Ausstehende Uploads', matchPendingUploadsBy: 'abgeglichen nach Dateiname', matchSettingsTemplates: 'Einstellungen & Vorlagen', matchSettingsTemplatesBy: 'immer überschrieben', replaceExisting: 'Vorhandene Daten ersetzen', keepExisting: 'Vorhandene Daten behalten', overwriteDescription: 'Bereits vorhandene Elemente mit Sicherungsdaten überschreiben', keepDescription: 'Nur Elemente wiederherstellen, die noch nicht vorhanden sind', overwriteCaution: 'Achtung:', overwriteWarning: 'Das Überschreiben ersetzt Ihre aktuellen Konfigurationen durch Daten aus der Sicherung. Drucker-Zugangscodes werden aus Sicherheitsgründen nie überschrieben.', cancel: 'Abbrechen', processingBackup: 'Sicherungsdatei wird verarbeitet...', itemsRestored: 'Wiederhergestellt', itemsSkipped: 'Übersprungen', restored: 'Wiederhergestellt', skippedAlreadyExist: 'Übersprungen (bereits vorhanden)', filesCategory: 'Dateien (3MF, Thumbnails, etc.)', andMore: '...und {{count}} weitere', newApiKeysGenerated: 'Neue API-Schlüssel generiert', keysShownOnce: 'Diese Schlüssel werden nur einmal angezeigt. Kopieren Sie sie jetzt!', copy: 'Kopieren', noDataFound: 'In der Sicherungsdatei wurden keine Daten zur Wiederherstellung gefunden.', close: 'Schließen', // Category labels categories: { settings: 'Einstellungen', notification_providers: 'Benachrichtigungsanbieter', notification_templates: 'Benachrichtigungsvorlagen', smart_plugs: 'Smart Plugs', printers: 'Drucker', filaments: 'Filamente', maintenance_types: 'Wartungstypen', archives: 'Archive', projects: 'Projekte', pending_uploads: 'Ausstehende Uploads', external_links: 'Externe Links', api_keys: 'API-Schlüssel', }, }, // Tags tags: { title: 'Tags', addTag: 'Tag hinzufügen', editTag: 'Tag bearbeiten', deleteTag: 'Tag löschen', tagName: 'Tag-Name', tagColor: 'Tag-Farbe', noTags: 'Keine Tags', deleteConfirm: 'Möchten Sie diesen Tag wirklich löschen?', manageTags: 'Tags verwalten', }, // Upload modal (archives) uploadModal: { title: '3MF-Dateien hochladen', dragDrop: '3MF-Dateien hierher ziehen', or: 'oder', browseFiles: 'Dateien durchsuchen', extractionInfo: 'Das Druckermodell wird automatisch aus den 3MF-Datei-Metadaten extrahiert.', uploaded: 'hochgeladen', failed: 'fehlgeschlagen', uploading: 'Wird hochgeladen...', upload: 'Hochladen', uploadFailed: 'Hochladen fehlgeschlagen', }, // Edit archive modal editArchive: { title: 'Archiv bearbeiten', name: 'Name', namePlaceholder: 'Druckname', printer: 'Drucker', noPrinter: 'Kein Drucker', project: 'Projekt', noProject: 'Kein Projekt', itemsPrinted: 'Gedruckte Teile', itemsPrintedHelp: 'Anzahl der in diesem Druckauftrag produzierten Teile', notes: 'Notizen', notesPlaceholder: 'Notizen zu diesem Druck hinzufügen...', externalLink: 'Externer Link', externalLinkPlaceholder: 'https://printables.com/model/...', externalLinkHelp: 'Link zu Printables, Thingiverse oder anderer Quelle', tags: 'Tags', tagsPlaceholder: 'Tags hinzufügen...', addMoreTags: 'Weitere Tags hinzufügen...', matchingTags: 'Übereinstimmend mit "{{query}}"', existingTags: 'Vorhandene Tags', clickToAdd: '(zum Hinzufügen klicken)', status: 'Status', failureReason: 'Fehlergrund', selectReason: 'Grund auswählen...', photos: 'Fotos des Druckergebnisses', photosHelp: 'Klicken Sie auf + um Fotos Ihres Druckergebnisses hinzuzufügen', printResult: 'Druckergebnis', saving: 'Wird gespeichert...', // Failure reasons failureReasons: { adhesionFailure: 'Haftungsfehler', spaghettiDetached: 'Spaghetti / Abgelöst', layerShift: 'Schichtversatz', cloggedNozzle: 'Verstopfte Düse', filamentRunout: 'Filament aufgebraucht', warping: 'Verformung', stringing: 'Fadenziehen', underExtrusion: 'Unterextrusion', powerFailure: 'Stromausfall', userCancelled: 'Vom Benutzer abgebrochen', other: 'Sonstiges', }, // Archive statuses statuses: { completed: 'Abgeschlossen', failed: 'Fehlgeschlagen', aborted: 'Abgebrochen', printing: 'Druckt', }, }, // K-Profiles kProfiles: { title: 'K-Profile', noPrintersConfigured: 'Keine Drucker konfiguriert', addPrinterInSettings: 'Fügen Sie einen Drucker in den Einstellungen hinzu, um K-Profile zu verwalten', noActivePrinters: 'Keine aktiven Drucker', enablePrinterConnection: 'Aktivieren Sie eine Druckerverbindung, um K-Profile anzuzeigen', loadingProfiles: 'Lade K-Profile...', printerOffline: 'Drucker offline', printerOfflineDesc: 'Der ausgewählte Drucker ist nicht verbunden. Schalten Sie ihn ein, um K-Profile anzuzeigen.', noMatchingProfiles: 'Keine passenden Profile', noMatchingProfilesDesc: 'Keine Profile entsprechen Ihren Suchkriterien', noKProfiles: 'Keine K-Profile', noKProfilesDesc: 'Keine Druckvorschub-Profile für {{diameter}}mm Düse gefunden', createFirstProfile: 'Erstes Profil erstellen', // Controls printer: 'Drucker', nozzle: 'Düse', refresh: 'Aktualisieren', addProfile: 'Profil hinzufügen', export: 'Exportieren', import: 'Importieren', select: 'Auswählen', selectAll: 'Alle auswählen', delete: 'Löschen', // Filters searchPlaceholder: 'Nach Name oder Filament suchen...', allExtruders: 'Alle Extruder', leftOnly: 'Nur links', rightOnly: 'Nur rechts', allFlow: 'Alle Flusstypen', hfOnly: 'Nur HF', sOnly: 'Nur S', sortName: 'Sortieren: Name', sortKValue: 'Sortieren: K-Wert', sortFilament: 'Sortieren: Filament', // Dual extruder labels leftExtruder: 'Linker Extruder', rightExtruder: 'Rechter Extruder', // Modal modal: { addTitle: 'K-Profil hinzufügen', editTitle: 'K-Profil bearbeiten', profileName: 'Profilname', profileNamePlaceholder: 'Mein PLA-Profil', kValue: 'K-Wert', kValuePlaceholder: '0,020', kValueHelp: 'Typischer Bereich: 0,01 - 0,06 für PLA, 0,02 - 0,10 für PETG', filament: 'Filament', selectFilament: 'Filament auswählen...', noFilamentsHelp: 'Keine Filamente gefunden. Erstellen Sie zuerst ein K-Profil in Bambu Studio.', flowType: 'Flusstyp', highFlow: 'High Flow', standard: 'Standard', nozzleSize: 'Düsengröße', extruder: 'Extruder', extruders: 'Extruder', left: 'Links', right: 'Rechts', notes: 'Notizen (lokal gespeichert)', notesPlaceholder: 'Notizen zu diesem Profil hinzufügen...', notesHelp: 'Notizen werden in Bambuddy gespeichert, nicht auf dem Drucker', syncing: 'Synchronisiert mit Drucker...', savingExtruder: 'Speichern auf Extruder {{current}}/{{total}}...', pleaseWait: 'Bitte warten', }, // Delete confirmation deleteConfirm: { title: 'Profil löschen', cannotUndo: 'Dies kann nicht rückgängig gemacht werden', message: 'Möchten Sie "{{name}}" wirklich vom Drucker löschen?', }, // Bulk delete bulkDelete: { title: 'Profile löschen', cannotUndo: 'Dies kann nicht rückgängig gemacht werden', message: 'Möchten Sie wirklich {{count}} ausgewählte Profile vom Drucker löschen?', }, // Toast toast: { profileSaved: 'K-Profil gespeichert', profilesSaved: 'K-Profil auf {{count}} Extrudern gespeichert', selectAtLeastOneExtruder: 'Bitte wählen Sie mindestens einen Extruder aus', profileDeleted: 'K-Profil gelöscht', profilesDeleted: '{{count}} Profile gelöscht', exportedProfiles: '{{count}} Profile exportiert', importedProfiles: '{{count}} von {{total}} Profilen importiert', noProfilesToExport: 'Keine Profile zum Exportieren', invalidFileFormat: 'Ungültiges Dateiformat', failedToParseImport: 'Import-Datei konnte nicht gelesen werden', failedToSaveBatch: 'K-Profile konnten nicht gespeichert werden', noteSaved: 'Notiz gespeichert', failedToSaveNote: 'Notiz konnte nicht gespeichert werden', }, // Permissions permission: { noRead: 'Sie haben keine Berechtigung, Profile zu aktualisieren', noCreate: 'Sie haben keine Berechtigung, Profile hinzuzufügen', noUpdate: 'Sie haben keine Berechtigung, K-Profile zu aktualisieren', noDelete: 'Sie haben keine Berechtigung, K-Profile zu löschen', noExport: 'Sie haben keine Berechtigung, Profile zu exportieren', noImport: 'Sie haben keine Berechtigung, Profile zu importieren', }, }, // Virtual Printer virtualPrinter: { title: 'Virtueller Drucker', running: 'Läuft', stopped: 'Gestoppt', description: { default: 'Aktiviere einen virtuellen Drucker, der in Bambu Studio und OrcaSlicer erscheint. Dateien, die an diesen Drucker gesendet werden, werden direkt archiviert ohne zu drucken.', proxy: 'Aktiviere einen Proxy, der Slicer-Datenverkehr an einen echten Drucker weiterleitet, um Ferndruck über jedes Netzwerk zu ermöglichen.', }, enable: { title: 'Virtuellen Drucker aktivieren', visibleInSlicer: 'Sichtbar als "Bambuddy" in der Slicer-Erkennung', proxyingTo: 'Proxy zu {{name}}', notActive: 'Nicht aktiv', }, model: { title: 'Druckermodell', description: 'Wähle welches Druckermodell emuliert werden soll.', restartWarning: 'Das Ändern des Modells startet den virtuellen Drucker neu', }, accessCode: { title: 'Zugangscode', isSet: 'Zugangscode ist gesetzt', notSet: 'Kein Zugangscode gesetzt - erforderlich zum Aktivieren', placeholder: '8-Zeichen-Code eingeben', placeholderChange: 'Neuen Code eingeben zum Ändern', hint: 'Muss genau 8 Zeichen lang sein. Wird von Slicern zur Authentifizierung verwendet.', charCount: '({{count}}/8)', }, targetPrinter: { title: 'Zieldrucker', configured: 'Proxy-Ziel konfiguriert', notConfigured: 'Kein Zieldrucker ausgewählt - erforderlich für Proxy-Modus', placeholder: 'Drucker auswählen...', hint: 'Wähle den Drucker aus, an den der Slicer-Datenverkehr weitergeleitet werden soll. Der Drucker muss im LAN-Modus sein.', noPrinters: 'Keine Drucker konfiguriert. Füge zuerst einen Drucker hinzu, um den Proxy-Modus zu verwenden.', }, remoteInterface: { title: 'Netzwerkschnittstelle überschreiben', configured: 'Schnittstellenüberschreibung aktiv', optional: 'Optional - verwenden wenn die automatisch erkannte IP falsch ist (z.B. mehrere NICs, Docker, VPN)', placeholder: 'Automatisch erkennen (Standard)...', hint: 'Überschreibt die per SSDP beworbene und im TLS-Zertifikat verwendete IP-Adresse. Nützlich wenn Bambuddy mehrere Netzwerkschnittstellen hat.', }, mode: { title: 'Modus', archive: 'Archivieren', archiveDesc: 'Dateien sofort archivieren', review: 'Überprüfen', reviewDesc: 'Vor dem Archivieren überprüfen', queue: 'Warteschlange', queueDesc: 'Archivieren und zur Warteschlange hinzufügen', proxy: 'Proxy', proxyDesc: 'An echten Drucker weiterleiten', }, setupRequired: { title: 'Einrichtung erforderlich', description: 'Die virtuelle Druckerfunktion erfordert zusätzliche Systemkonfiguration, bevor sie funktioniert. Dies beinhaltet Portweiterleitung, Firewall-Regeln und plattformspezifische Einstellungen.', readGuide: 'Lese die Einrichtungsanleitung vor dem Aktivieren', }, howItWorks: { title: 'So funktioniert es', step1: 'Im selben LAN erscheinen virtuelle Drucker automatisch in deinem Slicer (Bambu Studio / OrcaSlicer). Aus anderen Netzwerken füge sie manuell per IP-Adresse und Zugangscode hinzu.', step2: 'Im Archiv-, Überprüfungs- und Warteschlangen-Modus verwende die "Senden"-Funktion im Slicer, um 3MF-Dateien an Bambuddy zu senden. Der Slicer zeigt "Druck erfolgreich" — die Datei wird gespeichert, nicht gedruckt.', step3: 'Im Proxy-Modus leitet der virtuelle Drucker den gesamten Datenverkehr an einen echten Drucker weiter — Drucke starten sofort wie bei einer direkten Verbindung.', }, status: { title: 'Status-Details', printerName: 'Druckername', model: 'Modell', serialNumber: 'Seriennummer', mode: 'Modus', pendingFiles: 'Ausstehende Dateien', targetPrinter: 'Zieldrucker', ftpPort: 'FTP-Port', mqttPort: 'MQTT-Port', ftpConnections: 'FTP-Verbindungen', mqttConnections: 'MQTT-Verbindungen', }, toast: { updated: 'Virtuelle Druckereinstellungen aktualisiert', failedToUpdate: 'Einstellungen konnten nicht aktualisiert werden', accessCodeRequired: 'Bitte zuerst einen Zugangscode setzen', targetPrinterRequired: 'Bitte zuerst einen Zieldrucker auswählen', bindIpRequired: 'Bitte zuerst eine Bind-IP setzen', accessCodeEmpty: 'Zugangscode darf nicht leer sein', accessCodeLength: 'Zugangscode muss genau 8 Zeichen lang sein', created: 'Virtueller Drucker erstellt', failedToCreate: 'Virtueller Drucker konnte nicht erstellt werden', deleted: 'Virtueller Drucker gelöscht', failedToDelete: 'Virtueller Drucker konnte nicht gelöscht werden', }, list: { title: 'Virtuelle Drucker', add: 'Hinzufügen', addFirst: 'Virtuellen Drucker hinzufügen', empty: 'Keine virtuellen Drucker konfiguriert. Fügen Sie einen hinzu, um zu beginnen.', }, bindIp: { title: 'Bind-Interface', placeholder: 'Interface auswählen...', hint: 'Netzwerkinterface, an das dieser virtuelle Drucker gebunden wird. Muss pro Drucker eindeutig sein.', }, proxy: { accessCodeHint: 'Im Proxy-Modus den Zugangscode des Zieldruckers im Slicer verwenden. Die Verbindung wird transparent zum echten Drucker weitergeleitet.', }, addDialog: { title: 'Virtuellen Drucker hinzufügen', name: 'Name', hint: 'Sie können Zugangscode, Zieldrucker und andere Einstellungen nach dem Erstellen konfigurieren.', create: 'Erstellen', }, deleteConfirm: { title: 'Virtuellen Drucker löschen', message: 'Möchten Sie "{{name}}" wirklich löschen? Dies stoppt alle Dienste für diesen Drucker.', }, }, // Model Viewer modelViewer: { openInSlicer: 'Im Slicer öffnen', tabs: { model: '3D-Modell', gcode: 'G-Code Vorschau', }, notAvailable: 'nicht verfügbar', notSliced: 'nicht geslicet', plates: 'Platten', allPlates: 'Alle Platten', plateNumber: 'Platte {{number}}', plateCount: '{{count}} Platte', plateCount_other: '{{count}} Platten', objectCount: '{{count}} Objekt', objectCount_other: '{{count}} Objekte', filamentCount: '{{count}} Filament', filamentCount_other: '{{count}} Filamente', eta: 'ETA {{minutes}} Min', noPreview: 'Keine Vorschau für diese Datei verfügbar', pagination: { pageOf: 'Seite {{current}} von {{total}}', prev: 'Zurück', next: 'Weiter', }, errors: { failedToLoad: 'Datei konnte nicht geladen werden', noMeshes: 'Keine Meshes in 3MF-Datei gefunden', unsupportedFormat: 'Nicht unterstütztes Dateiformat', }, }, // Maintenance type descriptions (built-in) maintenanceDescriptions: { lubricateCarbonRods: 'Schmiermittel auf Karbonstäbe für sanfte Bewegung auftragen', lubricateRails: 'Schmiermittel auf Linearschienen für sanfte Bewegung auftragen', cleanNozzle: 'Hotend und Düse reinigen, um Verstopfungen zu verhindern', checkBelts: 'Riemenspannung für präzise Drucke überprüfen', cleanBuildPlate: 'Druckplatte für bessere Haftung reinigen', checkExtruder: 'Extruderzahnräder auf Verschleiß prüfen', checkCooling: 'Sicherstellen, dass Lüfter ordnungsgemäß funktionieren', generalInspection: 'Allgemeine Druckerinspektion', cleanCarbonRods: 'Karbonstäbe reinigen, um Reibung zu reduzieren', lubricateSteelRods: 'Schmiermittel auf Stahlstangen für sanfte Bewegung auftragen', cleanSteelRods: 'Stahlstangen reinigen, um Reibung zu reduzieren', cleanLinearRails: 'Linearschienen abwischen, um Staub und Schmutz zu entfernen', checkPtfeTube: 'PTFE-Schlauch auf Verschleiß oder Beschädigung prüfen', replaceHepaFilter: 'HEPA-Filter für Luftqualität ersetzen', replaceCarbonFilter: 'Aktivkohlefilter ersetzen', lubricateLeftNozzleRail: 'Linke Düsenschiene schmieren (H2-Serie)', }, // Smart Plugs smartPlugs: { offline: 'Offline', admin: 'Admin', openPlugAdminPage: 'Plug-Admin-Seite öffnen', deleteSmartPlug: 'Smart Plug löschen', turnOnSmartPlug: 'Smart Plug einschalten', turnOffSmartPlug: 'Smart Plug ausschalten', turnOn: 'Einschalten', turnOff: 'Ausschalten', addSmartPlug: { scanningNetwork: 'Netzwerk wird durchsucht...', chooseEntity: 'Entität auswählen...', connectionFailed: 'Verbindung fehlgeschlagen', searchEntities: 'Entitäten suchen...', searchPowerSensors: 'Leistungssensoren suchen...', searchEnergySensors: 'Energiesensoren suchen...', placeholders: { plugName: 'Wohnzimmer Steckdose', mqttStateOnValue: 'ON, true, 1', mqttSameAsPower: 'Gleich wie Leistungs-Topic oder anders', }, }, // SmartPlugCard linkedTo: 'Verbunden mit:', monitorOnly: 'Nur Überwachung', alerts: 'Alarme', scheduleOn: 'Ein {{time}}', scheduleOff: 'Aus {{time}}', on: 'Ein', off: 'Aus', power: 'Leistung', kwhToday: 'kWh Heute', settings: 'Einstellungen', automationSettings: 'Automatisierungseinstellungen', showInSwitchbar: 'In Schaltleiste anzeigen', quickAccessSidebar: 'Schnellzugriff über Seitenleiste', enabled: 'Aktiviert', enableAutomation: 'Automatisierung für diesen Stecker aktivieren', autoOn: 'Auto Ein', autoOnDescription: 'Einschalten wenn Druck startet', autoOff: 'Auto Aus', autoOffDescription: 'Ausschalten wenn Druck abgeschlossen (einmalig)', turnOffDelayMode: 'Ausschaltverzögerungsmodus', time: 'Zeit', temp: 'Temp', delayMinutes: 'Verzögerung (Minuten)', tempThreshold: 'Temperaturschwelle (°C)', tempThresholdDescription: 'Schaltet aus wenn die Düse unter diese Temperatur abkühlt', edit: 'Bearbeiten', deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen? Dies kann nicht rückgängig gemacht werden.', turnOnConfirm: 'Möchten Sie "{{name}}" wirklich einschalten?', turnOffConfirm: 'Möchten Sie "{{name}}" wirklich ausschalten? Dies unterbricht die Stromversorgung des angeschlossenen Geräts.', failedToTurn: '{{name}}" konnte nicht {{action}} werden', unknown: 'Unbekannt', // AddSmartPlugModal addTitle: 'Smart Plug hinzufügen', editTitle: 'Smart Plug bearbeiten', stopScanning: 'Suche beenden', discoverTasmota: 'Tasmota Geräte suchen', foundDevices: '{{count}} Gerät(e) gefunden - zum Auswählen klicken:', noDevicesFound: 'Keine Tasmota Geräte in Ihrem Netzwerk gefunden', haNotConfigured: 'Home Assistant ist nicht konfiguriert. Einrichtung unter', haSettingsPath: 'Einstellungen → Netzwerk → Home Assistant', selectEntity: 'Entität auswählen *', ipAddress: 'IP-Adresse *', nameLabel: 'Name *', username: 'Benutzername', password: 'Passwort', authHint: 'Leer lassen, wenn Ihr Tasmota-Gerät keine Authentifizierung benötigt', linkToPrinter: 'Mit Drucker verbinden', noPrinter: 'Kein Drucker (nur manuelle Steuerung)', linkingDescription: 'Verknüpfung ermöglicht automatisches Ein-/Ausschalten bei Druckstart/-ende', powerAlerts: 'Leistungsalarme', alertAbove: 'Alarm wenn über (W)', alertBelow: 'Alarm wenn unter (W)', alertDescription: 'Benachrichtigung wenn der Stromverbrauch diese Schwellenwerte überschreitet. Leer lassen um diese Richtung zu deaktivieren.', dailySchedule: 'Tagesplan', turnOnAt: 'Einschalten um', turnOffAt: 'Ausschalten um', scheduleDescription: 'Den Stecker automatisch täglich zu diesen Zeiten ein-/ausschalten. Leer lassen um diese Aktion zu überspringen.', showOnPrinterCard: 'Auf Druckerkarte anzeigen', displayOnPrinterCard: 'Schaltfläche auf Druckerkarte anzeigen', connectedResult: 'Verbunden!', deviceLabel: 'Gerät: {{name}} - ', stateLabel: 'Status: {{state}}', test: 'Test', delete: 'Löschen', save: 'Speichern', add: 'Hinzufügen', cancel: 'Abbrechen', failedToStartScan: 'Suche konnte nicht gestartet werden', nameRequired: 'Name ist erforderlich', entityRequired: 'Entität ist für Home Assistant Stecker erforderlich', mqttTopicRequired: 'Mindestens ein MQTT-Topic muss für Leistung, Energie oder Statusüberwachung konfiguriert sein', loadingEntities: 'Entitäten werden geladen...', loading: 'Laden...', failedToLoadEntities: 'Entitäten konnten nicht geladen werden: {{error}}', noEntitiesMatching: 'Keine Entitäten gefunden die "{{search}}" entsprechen', noEntitiesAvailable: 'Keine Entitäten verfügbar', searchingEntities: 'Alle Entitäten durchsuchen ({{count}} gefunden)', showingEntities: 'Zeige switch, light, input_boolean ({{count}} verfügbar)', energyMonitoringOptional: 'Energieüberwachung (Optional)', energyMonitoringHint: 'Sensoren suchen und auswählen, die Leistungs-/Energiedaten liefern.', powerSensorW: 'Leistungssensor (W)', energyTodayKwh: 'Energie Heute (kWh)', totalEnergyKwh: 'Gesamtenergie (kWh)', noMatchingSensors: 'Keine passenden Sensoren', none: 'Keine', mqttNotConfigured: 'MQTT-Broker nicht konfiguriert. Broker-Adresse einstellen unter', mqttSettingsPath: 'Einstellungen → Netzwerk → MQTT-Veröffentlichung', mqttNotConfiguredSuffix: '(Sie müssen die Veröffentlichung nicht aktivieren, nur die Broker-Details ausfüllen).', mqttMonitorOnlyDescription: 'MQTT-Stecker empfangen Leistungs-/Energiedaten über MQTT-Abonnement. Ein-/Ausschalten ist nicht verfügbar - verwenden Sie Ihren MQTT-Broker oder Ihr Home-Automation-System.', powerMonitoring: 'Leistungsüberwachung', energyMonitoring: 'Energieüberwachung', stateMonitoring: 'Statusüberwachung', optional: 'optional', topic: 'Topic', jsonPath: 'JSON-Pfad', multiplier: 'Multiplikator', onValue: 'EIN-Wert', mqttPowerHint: 'JSON-Pfad extrahiert Wert aus JSON-Payload (z.B. "power_l1"). Leer lassen wenn Topic rohe numerische Werte sendet.\nMultiplikator 0.001 für mW→W, 1000 für kW→W verwenden.', mqttEnergyHint: 'JSON-Pfad extrahiert Wert aus JSON-Payload. Leer lassen für rohe Werte.\nMultiplikator 0.001 für Wh→kWh, 1000 für MWh→kWh verwenden.', mqttStateHint: 'JSON-Pfad extrahiert Wert aus JSON-Payload. Leer lassen für rohe Werte.\nEIN-Wert: der genaue String der "EIN" bedeutet. Leer lassen für Auto-Erkennung (ON, true, 1).', noSwitchesInSwitchbar: 'Keine Schalter in der Schaltleiste', enableSwitchbarHint: '"In Schaltleiste anzeigen" unter Einstellungen > Smart Plugs aktivieren', }, // Notifications notifications: { // Provider types providerTypes: { callmebot: 'CallMeBot/WhatsApp', ntfy: 'ntfy', pushover: 'Pushover', telegram: 'Telegram', email: 'E-Mail', discord: 'Discord', webhook: 'Webhook', }, // Provider descriptions providerDescriptions: { email: 'SMTP-E-Mail-Benachrichtigungen', telegram: 'Benachrichtigungen über Telegram-Bot', discord: 'An Discord-Kanal per Webhook senden', ntfy: 'Kostenlose, selbst-hostbare Push-Benachrichtigungen', pushover: 'Einfache, zuverlässige Push-Benachrichtigungen', callmebot: 'Kostenlose WhatsApp-Benachrichtigungen über CallMeBot', webhook: 'Generischer HTTP-POST an beliebige URL', }, // NotificationProviderCard lastSuccess: 'Zuletzt: {{date}}', error: 'Fehler', printer: 'Drucker:', allPrinters: 'Alle Drucker', sendTestNotification: 'Testbenachrichtigung senden', eventSettings: 'Ereigniseinstellungen', enabled: 'Aktiviert', sendFromProvider: 'Benachrichtigungen von diesem Anbieter senden', // Event categories printEvents: 'Druckereignisse', printerStatus: 'Druckerstatus', amsAlarms: 'AMS-Alarme', amsHtAlarms: 'AMS-HT-Alarme', printQueue: 'Druckwarteschlange', // Event tags (badges) start: 'Start', plateCheck: 'Plattenkontrolle', complete: 'Abgeschlossen', failed: 'Fehlgeschlagen', stopped: 'Gestoppt', progress: 'Fortschritt', offline: 'Offline', lowFilament: 'Filament niedrig', maintenance: 'Wartung', amsHumidity: 'AMS-Feuchtigkeit', amsTemp: 'AMS-Temperatur', amsHtHumidity: 'AMS-HT-Feuchtigkeit', amsHtTemp: 'AMS-HT-Temperatur', bedCooled: 'Bett abgekühlt', quiet: 'Ruhe', digest: 'Zusammenfassung {{time}}', // Event labels (expanded settings) printStarted: 'Druck gestartet', plateNotEmpty: 'Platte nicht leer', plateNotEmptyDescription: 'Objekte vor dem Druck erkannt', printCompleted: 'Druck abgeschlossen', bedCooledLabel: 'Bett abgekühlt', bedCooledDescription: 'Bett nach dem Druck unter Schwellenwert abgekühlt', printFailed: 'Druck fehlgeschlagen', printStopped: 'Druck gestoppt', progressMilestones: 'Fortschrittsmeilensteine', progressMilestonesDescription: 'Benachrichtigung bei 25%, 50%, 75%', printerOffline: 'Drucker offline', printerError: 'Druckerfehler', lowFilamentLabel: 'Filament niedrig', maintenanceDue: 'Wartung fällig', maintenanceDueDescription: 'Benachrichtigen, wenn Wartung erforderlich ist', amsHumidityHigh: 'AMS-Feuchtigkeit hoch', amsHumidityHighDescription: 'Normale AMS-Feuchtigkeit überschreitet Schwellenwert', amsTemperatureHigh: 'AMS-Temperatur hoch', amsTemperatureHighDescription: 'Normale AMS-Temperatur überschreitet Schwellenwert', amsHtHumidityHigh: 'AMS-HT-Feuchtigkeit hoch', amsHtHumidityHighDescription: 'AMS-HT-Feuchtigkeit überschreitet Schwellenwert', amsHtTemperatureHigh: 'AMS-HT-Temperatur hoch', amsHtTemperatureHighDescription: 'AMS-HT-Temperatur überschreitet Schwellenwert', // Queue events jobAdded: 'Auftrag hinzugefügt', jobAddedDescription: 'Auftrag zur Warteschlange hinzugefügt', jobAssigned: 'Auftrag zugewiesen', jobAssignedDescription: 'Modellbasierter Auftrag einem Drucker zugewiesen', jobStarted: 'Auftrag gestartet', jobStartedDescription: 'Warteschlangenauftrag hat Druck begonnen', jobWaiting: 'Auftrag wartet', jobWaitingDescription: 'Auftrag wartet auf Filament', jobSkipped: 'Auftrag übersprungen', jobSkippedDescription: 'Auftrag übersprungen (vorheriger fehlgeschlagen)', jobFailed: 'Auftrag fehlgeschlagen', jobFailedDescription: 'Auftrag konnte nicht gestartet werden', queueComplete: 'Warteschlange abgeschlossen', queueCompleteDescription: 'Alle Warteschlangenaufträge beendet', // Quiet hours quietHours: 'Ruhezeiten', noNotificationsDuring: 'Keine Benachrichtigungen während dieser Zeiten', editProviderToChangeQuietHours: 'Anbieter bearbeiten, um Ruhezeiten zu ändern', // Daily digest dailyDigest: 'Tägliche Zusammenfassung', batchNotifications: 'Benachrichtigungen zu einer täglichen Zusammenfassung bündeln', sendAt: 'Senden um {{time}}', editProviderToChangeDigestTime: 'Anbieter bearbeiten, um Zusammenfassungszeit zu ändern', // Actions edit: 'Bearbeiten', deleteProvider: 'Benachrichtigungsanbieter löschen', deleteConfirm: 'Sind Sie sicher, dass Sie "{{name}}" löschen möchten? Dies kann nicht rückgängig gemacht werden.', delete: 'Löschen', // AddNotificationModal addTitle: 'Benachrichtigungsanbieter hinzufügen', editTitle: 'Benachrichtigungsanbieter bearbeiten', nameLabel: 'Name *', namePlaceholder: 'Meine Benachrichtigungen', providerTypeLabel: 'Anbietertyp *', configuration: 'Konfiguration', testConfiguration: 'Konfiguration testen', printerFilter: 'Druckerfilter', onlyFromPrinter: 'Nur Benachrichtigungen für Ereignisse von diesem Drucker senden', quietHoursDnd: 'Ruhezeiten (Nicht stören)', quietStart: 'Start', quietEnd: 'Ende', dailyDigestLabel: 'Tägliche Zusammenfassung', sendDigestAt: 'Zusammenfassung senden um', digestCollected: 'Ereignisse werden gesammelt und als einzelne Zusammenfassung zu dieser Zeit gesendet', notificationEvents: 'Benachrichtigungsereignisse', progressPercent: '(25%, 50%, 75%)', bedCooledAfterPrint: '(nach Druckabschluss)', cancel: 'Abbrechen', save: 'Speichern', add: 'Hinzufügen', nameRequired: 'Name ist erforderlich', fieldRequired: '{{field}} ist erforderlich', // Config field labels phoneNumber: 'Telefonnummer', apiKey: 'API-Schlüssel', serverUrl: 'Server-URL', topic: 'Thema', authToken: 'Auth-Token', userKey: 'Benutzerschlüssel', appToken: 'App-Token', priority: 'Priorität', botToken: 'Bot-Token', chatId: 'Chat-ID', smtpServer: 'SMTP-Server', smtpPort: 'SMTP-Port', security: 'Sicherheit', authentication: 'Authentifizierung', username: 'Benutzername', password: 'Passwort', fromEmail: 'Absender-E-Mail', toEmail: 'Empfänger-E-Mail', webhookUrl: 'Webhook-URL', payloadFormat: 'Payload-Format', authorization: 'Autorisierung', titleFieldName: 'Titel-Feldname', messageFieldName: 'Nachrichten-Feldname', // NotificationTemplateEditor editTemplate: 'Vorlage bearbeiten: {{name}}', titleLabel: 'Titel', bodyLabel: 'Inhalt', titlePlaceholder: 'Benachrichtigungstitel...', bodyPlaceholder: 'Benachrichtigungsinhalt...', availableVariables: 'Verfügbare Variablen', clickToInsert: 'Klicken, um an Cursorposition im Inhalt einzufügen', livePreview: 'Live-Vorschau', hide: 'Ausblenden', show: 'Anzeigen', loadingPreview: 'Vorschau wird geladen...', enterTemplateContent: 'Vorlageninhalt eingeben, um Vorschau zu sehen', titlePreview: 'Titel:', bodyPreview: 'Inhalt:', resetToDefault: 'Auf Standard zurücksetzen', titleRequired: 'Titel ist erforderlich', bodyRequired: 'Inhalt ist erforderlich', // NotificationLogViewer notificationLog: 'Benachrichtigungsprotokoll', showFailedOnly: 'Nur fehlgeschlagene', last24Hours: 'Letzte 24 Stunden', last7Days: 'Letzte 7 Tage', last30Days: 'Letzte 30 Tage', last90Days: 'Letzte 90 Tage', justNow: 'Gerade eben', noFailedNotifications: 'Keine fehlgeschlagenen Benachrichtigungen', noNotificationsLogged: 'Keine Benachrichtigungen protokolliert', unknownProvider: 'Unbekannter Anbieter', logTitle: 'Titel', logMessage: 'Nachricht', logError: 'Fehler', logProvider: 'Anbieter: {{type}}', logTime: 'Zeit: {{time}}', refresh: 'Aktualisieren', clearOld: 'Alte löschen', statsSummary: 'Letzte {{days}} Tage:', statsNotifications: 'Benachrichtigungen', statsSent: '{{count}} gesendet', statsFailed: '{{count}} fehlgeschlagen', // Event type labels (for log viewer) eventTypes: { print_start: 'Druck gestartet', print_complete: 'Druck abgeschlossen', print_failed: 'Druck fehlgeschlagen', print_stopped: 'Druck gestoppt', print_progress: 'Fortschritt', printer_offline: 'Drucker offline', printer_error: 'Druckerfehler', filament_low: 'Filament niedrig', maintenance_due: 'Wartung fällig', test: 'Test', }, }, // Rich Text Editor richTextEditor: { bold: 'Fett', italic: 'Kursiv', underline: 'Unterstrichen', bulletList: 'Aufzählungsliste', numberedList: 'Nummerierte Liste', alignLeft: 'Linksbündig', alignCenter: 'Zentriert', alignRight: 'Rechtsbündig', addLink: 'Link hinzufügen', removeLink: 'Link entfernen', }, // External Links externalLinks: { noLinksConfigured: 'Keine externen Links konfiguriert', deleteLink: 'Link löschen', removeCustomIcon: 'Benutzerdefiniertes Symbol entfernen', openInNewTab: 'In neuem Tab öffnen', placeholders: { linkName: 'Mein Link', }, }, // Keyboard Shortcuts Modal keyboardShortcuts: { title: 'Tastaturkürzel', navigation: 'Navigation', archivesSection: 'Archive', kProfilesSection: 'K-Profile', generalSection: 'Allgemein', shortcuts: { goToPrinters: 'Zu Drucker gehen', goToArchives: 'Zu Archiv gehen', goToQueue: 'Zur Warteschlange gehen', goToStats: 'Zu Statistiken gehen', goToProfiles: 'Zu Cloud-Profilen gehen', goToSettings: 'Zu Einstellungen gehen', focusSearch: 'Suche fokussieren', openUploadModal: 'Upload-Modal öffnen', clearSelection: 'Auswahl löschen / Eingabe aufheben', contextMenu: 'Kontextmenü auf Karten', refreshProfiles: 'Profile aktualisieren', newProfile: 'Neues Profil', exitSelectionMode: 'Auswahlmodus beenden', showHelp: 'Diese Hilfe anzeigen', }, footer: 'Drücken Sie Esc oder klicken Sie außerhalb, um zu schließen', }, // Notification Log notificationLog: { title: 'Benachrichtigungsprotokoll', events: { printStarted: 'Druck gestartet', printComplete: 'Druck abgeschlossen', printFailed: 'Druck fehlgeschlagen', printStopped: 'Druck gestoppt', progress: 'Fortschritt', printerOffline: 'Drucker offline', printerError: 'Druckerfehler', lowFilament: 'Wenig Filament', maintenanceDue: 'Wartung fällig', test: 'Test', }, timeAgo: { justNow: 'Gerade eben', minutesAgo: 'vor {{minutes}}m', hoursAgo: 'vor {{hours}}h', }, }, // Restore/Backup Modal restoreBackup: { title: 'Backup wiederherstellen', restoring: 'Wird wiederhergestellt...', restoreComplete: 'Wiederherstellung abgeschlossen', restoreFailed: 'Wiederherstellung fehlgeschlagen', importSettings: 'Einstellungen aus Backup-Datei importieren', pleaseWait: 'Bitte warten Sie, während Ihre Daten wiederhergestellt werden', clickToSelect: 'Klicken Sie, um Backup-Datei auszuwählen (.json oder .zip)', howDuplicateHandling: 'So funktioniert die Duplikatbehandlung:', categories: { printers: 'Drucker', smartPlugs: 'Smart Plugs', notificationProviders: 'Benachrichtigungsanbieter', filaments: 'Filamente', archives: 'Archive', pendingUploads: 'Ausstehende Uploads', settingsTemplates: 'Einstellungen & Vorlagen', }, matchingInfo: { printers: 'abgeglichen nach Seriennummer', smartPlugs: 'abgeglichen nach IP-Adresse', notificationProviders: 'abgeglichen nach Name', filaments: 'abgeglichen nach Name + Typ + Marke', archives: 'abgeglichen nach Inhalts-Hash', pendingUploads: 'abgeglichen nach Dateiname', settingsTemplates: 'immer überschrieben', }, replaceExisting: 'Vorhandene Daten ersetzen', keepExisting: 'Vorhandene Daten behalten', replaceDescription: 'Bereits vorhandene Elemente mit Backup-Daten überschreiben', keepDescription: 'Nur Elemente wiederherstellen, die noch nicht existieren', caution: 'Vorsicht:', cautionText: 'Das Überschreiben ersetzt Ihre aktuellen Konfigurationen durch Backup-Daten. Drucker-Zugangscodes werden aus Sicherheitsgründen niemals überschrieben.', itemsRestored: 'Wiederhergestellte Elemente', itemsSkipped: 'Übersprungene Elemente', restored: 'Wiederhergestellt', skipped: 'Übersprungen (existieren bereits)', filesLabel: 'Dateien (3MF, Thumbnails, etc.)', newApiKeysGenerated: 'Neue API-Schlüssel generiert', newApiKeysWarning: 'Diese Schlüssel werden nur einmal angezeigt. Kopieren Sie sie jetzt!', processingBackup: 'Backup-Datei wird verarbeitet...', noDataFound: 'In der Backup-Datei wurden keine wiederherzustellenden Daten gefunden.', failedToRestore: 'Backup konnte nicht wiederhergestellt werden. Bitte überprüfen Sie das Dateiformat.', }, // Backup Export Modal backupExport: { title: 'Backup exportieren', selectData: 'Zu exportierende Daten auswählen', selectAll: 'Alle auswählen', selectNone: 'Keine auswählen', categoryDescriptions: { settings: 'Sprache, Theme, Update-Einstellungen', notifications: 'ntfy, Pushover, Discord, usw.', templates: 'Benutzerdefinierte Nachrichtenvorlagen', smartPlugs: 'Tasmota-Plug-Konfigurationen', externalLinks: 'Seitenleiste Links zu externen Diensten', printers: 'Druckerinformationen (Zugangscodes ausgeschlossen)', plateDetection: 'Leere Platten-Referenzbilder', filaments: 'Filamenttypen und -kosten', maintenance: 'Benutzerdefinierte Wartungspläne', archives: 'Alle Druckdaten + Dateien (3MF, Thumbnails, Fotos)', projects: 'Projekte, BOM-Elemente und Anhänge', pendingUploads: 'Virtueller Drucker-Uploads zur Überprüfung', apiKeys: 'Webhook-API-Schlüssel (neue Schlüssel bei Import generiert)', }, requiresPrinters: 'Drucker müssen ausgewählt sein', zipFileWarning: 'ZIP-Datei wird erstellt.', zipFileDescription: 'Enthält alle 3MF-Dateien, Thumbnails, Zeitraffer und Fotos. Dies kann eine Weile dauern und zu einer großen Datei führen.', includeAccessCodes: 'Zugangscodes einschließen', includeAccessCodesDescription: 'Für die Übertragung auf eine andere Maschine', includeAccessCodesWarning: 'Zugangscodes werden im Klartext eingeschlossen. Bewahren Sie diese Backup-Datei sicher auf!', categoriesSelected: '{{selectedCount}} Kategorien ausgewählt', }, // Pending Uploads Panel pendingUploads: { placeholders: { notes: 'Notizen zu diesem Druck hinzufügen...', }, discardUpload: 'Upload verwerfen', archiveAllUploads: 'Alle Uploads archivieren', discardAllUploads: 'Alle Uploads verwerfen', archive: 'Archivieren', timeAgo: { justNow: 'Gerade eben', minutesAgo: 'vor {{minutes}}m', hoursAgo: 'vor {{hours}}h', daysAgo: 'vor {{days}}d', }, }, // API Browser apiBrowser: { placeholders: { requestBody: 'JSON-Anforderungstext...', searchEndpoints: 'Endpunkte suchen...', }, }, // Configure AMS Slot Modal configureAmsSlot: { title: 'AMS-Slot konfigurieren', slotConfigured: 'Slot konfiguriert!', configuringSlot: 'Slot wird konfiguriert:', slotLabel: '{{ams}} Slot {{slot}}', searchPresets: 'Voreinstellungen suchen...', colorPlaceholder: 'Farbname oder Hex (z.B. braun, FF8800)', clearCustomColor: 'Benutzerdefinierte Farbe löschen', noCloudPresets: 'Keine Cloud-Voreinstellungen. Melden Sie sich bei Bambu Cloud an, um zu synchronisieren.', noPresetsAvailable: 'Keine Voreinstellungen verfügbar. Melden Sie sich bei Bambu Cloud an oder importieren Sie lokale Profile.', noMatchingPresets: 'Keine passenden Voreinstellungen gefunden.', custom: 'Benutzerdefiniert', builtin: 'Integriert', settingsSentToPrinter: 'Einstellungen an Drucker gesendet', filamentProfile: 'Filamentprofil', kProfileLabel: 'K-Profil (Pressure Advance)', filteringFor: 'Filtern nach: {{material}}', noKProfile: 'Kein K-Profil (Standard 0.020 verwenden)', noMatchingKProfiles: 'Keine passenden K-Profile gefunden. Standard K=0.020 wird verwendet.', selectFilamentFirst: 'Zuerst ein Filamentprofil auswählen', kFromCalibration: 'K={{value}} aus Druckerkalibrierung', customColorLabel: 'Benutzerdefinierte Farbe (optional)', presetColors: '{{name}} Farben:', showLessColors: 'Weniger Farben anzeigen', showMoreColors: 'Mehr Farben anzeigen', clear: 'Löschen', hexLabel: 'Hex: #{{hex}}', resetting: 'Wird zurückgesetzt...', resetSlot: 'Slot zurücksetzen', cancel: 'Abbrechen', configuring: 'Wird konfiguriert...', configureSlot: 'Slot konfigurieren', }, // GitHub Backup Settings githubBackup: { title: 'GitHub-Backup', history: 'Verlauf', downloadBackup: 'Backup herunterladen', restoreBackup: 'Backup wiederherstellen', noBackupsYet: 'Noch keine Backups', }, // Email Settings emailSettings: { placeholders: { fromName: 'BamBuddy', }, }, // Tag Management Modal tagManagement: { searchTags: 'Tags suchen...', renameTag: 'Tag umbenennen', deleteTag: 'Tag löschen', }, // Notification Template Editor notificationTemplates: { placeholders: { title: 'Benachrichtigungstitel...', body: 'Benachrichtigungstext...', }, }, // Batch Tag Modal batchTag: { placeholders: { newTag: 'Neuen Tag eingeben...', }, }, // Photo Gallery Modal photoGallery: { deletePhoto: 'Foto löschen', }, // Filament Hover Card filamentHoverCard: { copySpoolUuid: 'Spulen-UUID kopieren', }, // K Profiles View kProfilesView: { hasNote: 'Hat Notiz', copyProfile: 'Profil kopieren', }, // Layout/Navigation layout: { openMenu: 'Menü öffnen', noPermissionSystemInfo: 'Sie haben keine Berechtigung zum Anzeigen von Systeminformationen', }, // Dashboard dashboard: { dragToReorder: 'Ziehen zum Neuordnen', hideWidget: 'Widget ausblenden', }, // Notification Provider Card notificationProviderCard: { deleteNotificationProvider: 'Benachrichtigungsanbieter löschen', }, // File Manager Modal fileManagerModal: { closeFileManager: 'Dateimanager schließen', sortFiles: 'Dateien sortieren', goToParentFolder: 'Zum übergeordneten Ordner gehen', threeView: '3D-Ansicht', }, // Embedded Camera Viewer embeddedCameraViewer: { refreshStream: 'Stream aktualisieren', close: 'Schließen', zoomOut: 'Verkleinern', resetZoom: 'Zoom zurücksetzen', zoomIn: 'Vergrößern', dragToResize: 'Ziehen zum Größe ändern', }, // Timelapse Viewer timelapseViewer: { skipBack5s: '5s zurückspringen', skipForward5s: '5s vorspringen', }, // Notification Providers notificationProviders: { descriptions: { email: 'SMTP-E-Mail-Benachrichtigungen', telegram: 'Benachrichtigungen über Telegram-Bot', discord: 'An Discord-Kanal über Webhook senden', ntfy: 'Kostenlose, selbst hostbare Push-Benachrichtigungen', pushover: 'Einfache, zuverlässige Push-Benachrichtigungen', callmebot: 'Kostenlose WhatsApp-Benachrichtigungen über CallMeBot', webhook: 'Generischer HTTP POST zu beliebiger URL', }, }, // Log Viewer logViewer: { searchPlaceholder: 'Nachricht oder Logger-Name suchen...', noLogEntries: 'Keine Logeinträge gefunden', }, // Switchbar Popover switchbarPopover: { noSwitchesInSwitchbar: 'Keine Schalter in Schalterleiste', }, // Project Page Modal projectPageModal: { placeholders: { title: 'Titel', designer: 'Designer', license: 'Lizenz', description: 'Beschreibung eingeben...', profileTitle: 'Profil-Titel', profileDescription: 'Profilbeschreibung...', }, }, // Spoolman Settings spoolmanSettings: {}, // Time time: { unknown: '-', waiting: 'Wartend', justNow: 'Gerade eben', now: 'Jetzt', minsAgo: 'vor {{count}}m', inMins: 'in {{count}}m', hoursAgo: 'vor {{count}}h', inHours: 'in {{count}}h', daysAgo: 'vor {{count}}d', inDays: 'in {{count}}d', }, // SpoolBuddy Kiosk spoolbuddy: { nav: { dashboard: 'Dashboard', ams: 'AMS', inventory: 'Inventar', writeTag: 'Schreiben', settings: 'Einstellungen', }, status: { nfcReady: 'NFC bereit', nfcOff: 'NFC aus', offline: 'Offline', online: 'Online', noPrinters: 'Keine Drucker', deviceOffline: 'Gerät offline', waitingConnection: 'Warte auf Geräteverbindung...', systemReady: 'System bereit', status: 'Status', }, dashboard: { readyToScan: 'Bereit zum Scannen', idleMessage: 'Spule auf die Waage legen zum Identifizieren', nfcHint: 'NFC-Tag wird automatisch gelesen', device: 'Gerät', syncWeight: 'Gewicht sync.', weightSynced: 'Synchronisiert!', unknownTag: 'Unbekannter Tag', newTag: 'Neuer Tag erkannt', onScale: 'auf der Waage', linkSpool: 'Mit Spule verknüpfen', linkTagTitle: 'Tag mit Spule verknüpfen', linkTag: 'Tag verknüpfen', selectSpool: 'Spule zum Verknüpfen auswählen:', noUntagged: 'Keine Spulen ohne Tags gefunden', tagDetected: 'Tag erkannt', noTag: 'Kein Tag', tagId: 'Tag', grossWeight: 'Bruttogewicht', spoolSize: 'Spulengröße', close: 'Schließen', currentSpool: 'Aktuelle Spule', }, modal: { spoolDetected: 'Spule erkannt', assignToAms: 'AMS zuweisen', syncWeight: 'Gewicht sync.', weightSynced: 'Synchronisiert!', syncing: 'Synchronisiere...', newTagDetected: 'Neuer Tag erkannt', addToInventory: 'Zum Inventar hinzufügen', assignToAmsTitle: 'AMS zuweisen', selectSlot: 'Slot auswählen', assign: 'Zuweisen', assigning: 'Zuweisen...', assignSuccess: 'Zugewiesen!', assignError: 'Fehler beim Zuweisen. Bitte erneut versuchen.', noPrinterSelected: 'Drucker auswählen...', noAmsDetected: 'Kein AMS an diesem Drucker erkannt', slot: 'Slot', }, weight: { noReading: 'Kein Messwert', stable: 'Stabil', measuring: 'Messen...', tare: 'Tarieren', calibrate: 'Kalibrieren', }, spool: { remaining: 'Verbleibend', material: 'Material', brand: 'Marke', color: 'Farbe', coreWeight: 'Kern', labelWeight: 'Etikett', scaleWeight: 'Waage', netWeight: 'Netto', lastUsed: 'Zuletzt verwendet', }, ams: { noData: 'Kein AMS erkannt', connectAms: 'AMS anschließen um Filament-Slots zu sehen', noPrinter: 'Kein Drucker ausgewählt', selectPrinter: 'Drucker in der oberen Leiste auswählen', printerDisconnected: 'Drucker getrennt', humidity: 'Feuchtigkeit', level: 'Stufe', active: 'Aktiv', slot: 'Slot', empty: 'Leer', }, inventory: { search: 'Spulen suchen...', empty: 'Keine Spulen im Inventar', noResults: 'Keine passenden Spulen', spools: 'Spulen', addSpool: 'Spule hinzufügen', }, settings: { // Tabs tabDevice: 'Gerät', tabDisplay: 'Anzeige', tabScale: 'Waage', tabUpdates: 'Updates', // Device tab nfcReader: 'NFC-Leser', type: 'Typ', connection: 'Verbindung', notConnected: 'N/A', deviceInfo: 'Geräteinfo', hostname: 'Host', uptime: 'Betriebszeit', // Display tab brightness: 'Helligkeit', saved: 'Gespeichert', noBacklight: 'Keine DSI-Hintergrundbeleuchtung erkannt. Helligkeitssteuerung erfordert ein DSI-Display.', screenBlank: 'Bildschirm-Abschaltzeit', screenBlankDesc: 'Bildschirm schaltet sich nach Inaktivität ab. Zum Aufwecken berühren.', displayNote: 'Helligkeit wird als Software-Filter angewendet.', // Scale tab scaleCalibration: 'Waagen-Kalibrierung', currentWeight: 'Aktuelles Gewicht', tareOffset: 'Tara', calFactor: 'Faktor', knownWeight: 'Bekanntes Gewicht', calStep1: 'Alle Gegenstände von der Waage entfernen und Nullpunkt setzen.', calStep2: 'Bekanntes Gewicht auf die Waage legen.', setZero: 'Nullpunkt setzen', calibrateNow: 'Kalibrieren', calibrated: 'Kalibriert', tareSet: 'Tara-Befehl gesendet. Warte auf Gerät...', tareFailed: 'Tara-Befehl fehlgeschlagen', zeroSet: 'Nullpunkt gesetzt. Bekanntes Gewicht auf die Waage legen.', calibrationDone: 'Kalibrierung abgeschlossen!', calibrationFailed: 'Kalibrierung fehlgeschlagen', lastCalibrated: 'Zuletzt kalibriert', stable: 'Stabil', settling: 'Stabilisierung...', firmware: 'Firmware', scale: 'Waage', noDevice: 'Kein SpoolBuddy-Gerät gefunden', // Updates tab daemonVersion: 'Daemon-Version', currentVersion: 'Aktuell', versionPending: 'Warte auf Daemon...', checking: 'Prüfe...', checkUpdates: 'Nach Updates suchen', updateAvailable: 'Update verfügbar', updateInstructions: 'Update per SSH: SpoolBuddy-Installationsskript ausführen.', upToDate: 'Aktuell', includeBeta: 'Beta-Versionen einschließen', }, writeTag: { tabExisting: 'Vorhandene Spule', tabNew: 'Neue Spule', tabReplace: 'Tag ersetzen', searchPlaceholder: 'Suche nach Material, Farbe, Marke...', noUntaggedSpools: 'Keine Spulen ohne Tags', noTaggedSpools: 'Keine Spulen mit Tags', selectSpool: 'Spule auswählen, dann einen NTAG auf den Leser legen', placeTag: 'NTAG auf den Leser legen', tagReady: 'Tag erkannt — bereit zum Schreiben', writeTag: 'Tag beschreiben', replaceTag: 'Tag ersetzen', writing: 'Tag wird beschrieben...', waiting: 'Warte auf SpoolBuddy...', writeSuccess: 'Tag erfolgreich beschrieben!', writeFailed: 'Schreiben fehlgeschlagen', queueFailed: 'Schreibbefehl konnte nicht eingereiht werden', tryAgain: 'Erneut versuchen', cancel: 'Abbrechen', replaceWarning: 'Alter Tag wird getrennt. Neuer Tag ersetzt ihn.', deviceOffline: 'SpoolBuddy ist offline', material: 'Material', colorName: 'Farbname', color: 'Farbe', brand: 'Marke', weight: 'Gewicht (g)', createSpool: 'Spule erstellen', creating: 'Wird erstellt...', spoolCreated: 'Spule erstellt! Bereit zum Schreiben.', createFailed: 'Spule konnte nicht erstellt werden', }, }, bugReport: { title: 'Fehler melden', description: 'Beschreibung', descriptionPlaceholder: 'Was ist schiefgelaufen? Bitte beschreiben Sie das Problem...', email: 'E-Mail (optional)', emailPlaceholder: 'ihre@email.de', emailPrivacy: 'Falls angegeben, wird Ihre E-Mail in einem eingeklappten Abschnitt des GitHub-Issues aufgeführt, damit der Betreuer sich melden kann.', screenshot: 'Screenshot', uploadOrPaste: 'Bild hochladen, einfügen oder ziehen', dataCollectedSummary: 'Welche Daten werden im Bericht gesendet?', dataIncluded: 'Enthalten:', dataIncludedList: 'App-Version, Betriebssystem, Architektur, Python-Version, Datenbankstatistiken (nur Anzahl), Druckermodelle, Düsenanzahl, Firmware-Versionen, Verbindungsstatus, Integrationsstatus (Spoolman, MQTT, HA), nicht-sensible Einstellungen, Netzwerkschnittstellenanzahl, Docker-Details, Abhängigkeitsversionen.', dataNeverIncluded: 'Nie enthalten:', dataNeverIncludedList: 'Druckernamen, Seriennummern, Zugangscodes, Passwörter, IP-Adressen, E-Mail-Adressen, API-Schlüssel, Tokens, Webhook-URLs, Hostnamen oder Benutzernamen.', submit: 'Absenden', collectingLogs: 'Diagnoseprotokolle werden gesammelt...', collectingLogsHint: 'Debug-Protokollierung aktiviert, Drucker werden nach aktuellen Daten abgefragt.', submitting: 'Fehlerbericht wird gesendet...', submitSuccess: 'Fehlerbericht erfolgreich gesendet!', submitFailed: 'Fehlerbericht konnte nicht gesendet werden', thankYou: 'Vielen Dank!', submitted: 'Ihr Fehlerbericht wurde eingereicht.', viewIssue: 'Issue ansehen', unexpectedError: 'Ein unerwarteter Fehler ist aufgetreten', countdownSeconds: '{{seconds}}s', }, };