Files
SnapOtter/packages/shared/src/i18n/de.ts
T

2623 lines
92 KiB
TypeScript

import type { TranslationKeys } from "./en.js";
export const de: TranslationKeys = {
common: {
upload: "Vom Computer hochladen",
process: "Verarbeiten",
download: "Herunterladen",
cancel: "Abbrechen",
save: "Speichern",
delete: "Loeschen",
settings: "Einstellungen",
search: "Werkzeuge suchen...",
dropFiles: "Dateien hierher ziehen oder auf die Schaltflaeche klicken",
loading: "Wird geladen...",
error: "Ein Fehler ist aufgetreten",
confirm: "Bestaetigen",
close: "Schliessen",
back: "Zurueck",
next: "Weiter",
clear: "Leeren",
copy: "Kopieren",
copied: "Kopiert!",
noResults: "Keine Ergebnisse gefunden",
showLess: "Weniger anzeigen",
showMore: "{count} weitere anzeigen",
experimental: "Experimentell",
enabled: "Aktiviert",
disabled: "Deaktiviert",
rename: "Umbenennen",
edit: "Bearbeiten",
actions: "Aktionen",
create: "Erstellen",
or: "oder",
goHome: "Zur Startseite",
somethingWentWrong: "Etwas ist schiefgelaufen",
unexpectedError: "Ein unerwarteter Fehler ist aufgetreten.",
retry: "Erneut versuchen",
privacyPolicy: "Datenschutzerklaerung",
pageNotFound: "Page not found",
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
},
categories: {
essentials: "Grundlagen",
optimization: "Optimierung",
adjustments: "Anpassungen",
watermark: "Wasserzeichen & Overlay",
utilities: "Hilfswerkzeuge",
layout: "Layout & Komposition",
format: "Format & Konvertierung",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
data: "Data Files",
ai: "AI-Werkzeuge",
},
modalities: {
image: "Image",
video: "Video",
audio: "Audio",
documentsAndFiles: "Documents & Files",
},
tools: {
resize: {
name: "Groesse aendern",
description: "Groesse nach Pixeln, Prozent oder Social-Media-Vorlagen aendern",
},
crop: {
name: "Zuschneiden",
description: "Freies Zuschneiden, Seitenverhaeltnis-Vorlagen, Formzuschnitt",
},
rotate: {
name: "Drehen & Spiegeln",
description: "Bilder drehen, spiegeln und begradigen",
},
convert: {
name: "Konvertieren",
description: "Zwischen Bildformaten konvertieren",
},
compress: {
name: "Komprimieren",
description: "Dateigroeße durch Qualitaet oder Zielgroesse reduzieren",
},
"optimize-for-web": {
name: "Fuer Web optimieren",
description:
"Bilder fuer das Web optimieren mit Formatkonvertierung, Qualitaetssteuerung und Vorschau",
},
"strip-metadata": {
name: "Metadaten entfernen",
description: "EXIF-, GPS- und Kamerainformationen entfernen",
},
"edit-metadata": {
name: "Metadaten bearbeiten",
description: "EXIF, IPTC, XMP, GPS, Schluesselwoerter und Daten bearbeiten",
},
"bulk-rename": {
name: "Massenumbenennung",
description: "Mehrere Dateien mit Mustern umbenennen",
},
"image-to-pdf": {
name: "Bild zu PDF",
description: "Bilder zu einem PDF-Dokument zusammenfuegen",
},
"pdf-to-image": {
name: "PDF zu Bild",
description: "PDF-Seiten in Bilder konvertieren",
},
favicon: {
name: "Favicon-Generator",
description: "Alle Favicon- und App-Symbolgroessen generieren",
},
"adjust-colors": {
name: "Farben anpassen",
description: "Helligkeit, Kontrast, Belichtung, Saettigung, Temperatur, Schaerfe und Effekte",
},
sharpening: {
name: "Schaerfen",
description: "Adaptives, Unscharf-Maskieren- und Hochpass-Schaerfen mit Vorlagen",
},
"replace-color": {
name: "Farbe ersetzen & invertieren",
description: "Bestimmte Farben ersetzen oder invertieren",
},
"color-blindness": {
name: "Farbenblindheit-Simulation",
description: "Simulieren Sie, wie Bilder bei verschiedenen Farbsehschwaechen erscheinen",
},
"remove-background": {
name: "Hintergrund entfernen",
description: "AI-gestuetzte Hintergrundentfernung",
},
upscale: {
name: "Bildskalierung",
description: "AI-Superaufloesung zur Bildverbesserung",
},
"erase-object": {
name: "Objektentferner",
description: "Unerwuenschte Objekte mit AI entfernen",
},
ocr: {
name: "OCR / Texterkennung",
description: "Text aus Bildern mit AI-gestuetzter Genauigkeit extrahieren",
},
"blur-faces": {
name: "Gesichter / PII weichzeichnen",
description: "Gesichter und sensible Daten automatisch erkennen und weichzeichnen",
},
"enhance-faces": {
name: "Gesichtsverbesserung",
description: "Gesichter mit AI wiederherstellen und verbessern",
},
"smart-crop": {
name: "Intelligenter Zuschnitt",
description: "Intelligenter Motiv-, Gesichts- oder Randzuschnitt",
},
"image-enhancement": {
name: "Bildverbesserung",
description:
"Ein-Klick-Verbesserung mit intelligenter Belichtungs-, Kontrast-, Farb- und Schaerfekorrektur",
},
"noise-removal": {
name: "Rauschentfernung",
description: "AI-gestuetzte Rausch- und Koernungsentfernung",
},
"red-eye-removal": {
name: "Rote-Augen-Korrektur",
description: "AI-gestuetzte Rote-Augen-Erkennung und -Korrektur fuer Blitzfotos",
},
"restore-photo": {
name: "Fotorestaurierung",
description: "Kratzer, Risse und Schaeden an alten Fotos mit AI reparieren",
},
"content-aware-resize": {
name: "Inhaltsabhaengige Groessenaenderung",
description: "Bilder intelligent skalieren und wichtige Inhalte beibehalten",
},
"ai-canvas-expand": {
name: "AI-Leinwanderweiterung",
description: "Leinwand mit AI-gestuetzter Fuellung erweitern",
},
colorize: {
name: "AI-Kolorierung",
description: "Schwarz-Weiss-Fotos mit AI-Deep-Learning-Modellen in Vollfarbe umwandeln",
},
"passport-photo": {
name: "Passfoto",
description:
"Normgerechte Pass-, Visa- und Ausweisfotos mit automatischer Gesichtserkennung erstellen",
},
"transparency-fixer": {
name: "PNG-Transparenzkorrektur",
description: "Unechte transparente PNGs mit einem Klick reparieren",
},
"watermark-text": {
name: "Text-Wasserzeichen",
description: "Text-Wasserzeichen hinzufuegen",
},
"watermark-image": {
name: "Bild-Wasserzeichen",
description: "Logo als Wasserzeichen ueberlagern",
},
"text-overlay": {
name: "Textueberlagerung",
description: "Formatierten Text auf Bilder legen",
},
compose: {
name: "Bildkomposition",
description: "Bilder mit Position und Deckkraft uebereinanderlegen",
},
"meme-generator": {
name: "Meme-Generator",
description:
"Memes mit beliebten Vorlagen oder eigenen Bildern erstellen. Klassischer Impact-Stil mit anpassbaren Schriftarten, Farben und Positionen.",
},
info: {
name: "Bildinformationen",
description: "Alle Metadaten und Bildeigenschaften anzeigen",
},
compare: {
name: "Bildvergleich",
description: "Zwei Bilder nebeneinander vergleichen",
},
"find-duplicates": {
name: "Duplikate finden",
description: "Doppelte und nahezu identische Bilder erkennen",
},
"color-palette": {
name: "Farbpalette",
description: "Dominante Farben aus dem Bild extrahieren",
},
"qr-generate": {
name: "QR-Code-Generator",
description: "QR-Codes mit individuellen Farben, Mustern und Logos erstellen",
},
"html-to-image": {
name: "HTML to Image",
description: "Capture webpages as high-quality images",
},
"barcode-read": {
name: "Barcode-Leser",
description: "Bilder nach QR-Codes, Barcodes und 2D-Codes scannen",
},
collage: {
name: "Collage / Raster",
description: "Bilder in Rastercollages mit ueber 25 Vorlagen zusammenfuegen",
},
stitch: {
name: "Zusammenfuegen / Kombinieren",
description: "Bilder nebeneinander, gestapelt oder im Raster verbinden",
},
split: {
name: "Bildaufteilung",
description: "Bilder in Rasterkacheln oder nach Pixelgroesse aufteilen mit Vorschau",
},
border: {
name: "Rahmen & Rand",
description:
"Raender, Abstande, abgerundete Ecken und Schatten mit Ein-Klick-Vorlagen hinzufuegen",
},
beautify: {
name: "Screenshot verschoenern",
description:
"Verlaufshintergruende, Geraeterahmen, Schatten und Social-Media-Formate fuer Screenshots",
},
"svg-to-raster": {
name: "SVG zu Raster",
description:
"SVG in PNG, JPEG, WebP, AVIF, TIFF, GIF oder HEIF mit individueller Skalierung und DPI konvertieren",
},
vectorize: {
name: "Bild zu SVG",
description: "Bilder in skalierbare Vektorgrafiken konvertieren",
},
"gif-tools": {
name: "GIF-Werkzeuge",
description:
"Animierte GIFs skalieren, optimieren, Geschwindigkeit aendern, umkehren, Frames extrahieren und drehen",
},
"image-to-base64": {
name: "Bild zu Base64",
description:
"Bilder in Base64-Zeichenketten zum Einbetten in HTML, CSS und mehr konvertieren",
},
"convert-video": {
name: "Convert Video",
description: "Convert videos between MP4, MOV, and WebM",
},
"compress-video": {
name: "Compress Video",
description: "Shrink video file size with quality control",
},
"trim-video": {
name: "Trim Video",
description: "Cut a clip out of a video",
},
"mute-video": {
name: "Mute Video",
description: "Remove the audio track from a video",
},
"video-to-gif": {
name: "Video to GIF",
description: "Turn a video clip into an animated GIF",
},
"convert-audio": {
name: "Convert Audio",
description: "Convert audio between MP3, WAV, OGG, and more",
},
"trim-audio": {
name: "Trim Audio",
description: "Cut a section out of an audio file",
},
"extract-audio": {
name: "Extract Audio",
description: "Pull the audio track out of a video",
},
"merge-pdf": {
name: "Merge PDFs",
description: "Combine multiple PDFs into one",
},
"split-pdf": {
name: "Split PDF",
description: "Extract pages or split into parts",
},
"compress-pdf": {
name: "Compress PDF",
description: "Shrink PDF file size",
},
"rotate-pdf": {
name: "Rotate PDF",
description: "Rotate pages in a PDF",
},
"word-to-pdf": {
name: "Word to PDF",
description: "Convert Word documents to PDF",
},
"extract-pages": {
name: "Extract Pages",
description: "Pull selected pages into a new PDF",
},
"remove-pages": {
name: "Remove Pages",
description: "Delete specific pages from a PDF",
},
"organize-pdf": {
name: "Organize PDF",
description: "Reorder pages with an explicit page order",
},
"protect-pdf": {
name: "Protect PDF",
description: "Add password protection (AES-256 encryption)",
},
"unlock-pdf": {
name: "Unlock PDF",
description: "Remove password protection from a PDF",
},
"repair-pdf": {
name: "Repair PDF",
description: "Attempt to repair a damaged or corrupted PDF",
},
"linearize-pdf": {
name: "Web-Optimize PDF",
description: "Linearize a PDF for fast web viewing",
},
"grayscale-pdf": {
name: "Grayscale PDF",
description: "Convert all colors to grayscale",
},
"pdfa-convert": {
name: "PDF/A Convert",
description: "Convert to archival PDF/A-2",
},
"crop-pdf": {
name: "Crop PDF",
description: "Crop all pages with a uniform margin",
},
"nup-pdf": {
name: "N-up PDF",
description: "Arrange multiple pages per sheet",
},
"booklet-pdf": {
name: "Booklet PDF",
description: "Arrange pages for folding into a booklet",
},
"watermark-pdf": {
name: "Watermark PDF",
description: "Add a text watermark to every page",
},
"pdf-page-numbers": {
name: "PDF Page Numbers",
description: "Add page numbers to every page",
},
"flatten-pdf": {
name: "Flatten PDF",
description: "Bake forms and annotations into page content",
},
"redact-pdf": {
name: "Redact PDF",
description: "Permanently remove text occurrences (verified true redaction)",
},
"pdf-to-text": {
name: "PDF to Text",
description: "Extract plain text from a PDF",
},
"pdf-to-word": {
name: "PDF to Word",
description: "Best for text-based PDFs; scanned pages need OCR",
},
"pdf-metadata": {
name: "PDF Metadata",
description: "Read and write PDF document metadata",
},
"html-to-pdf": {
name: "HTML to PDF",
description: "Convert an HTML file to PDF. Remote resources are disabled for privacy.",
},
"markdown-to-pdf": {
name: "Markdown to PDF",
description:
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy.",
},
"csv-excel": {
name: "CSV to Excel",
description: "Convert between CSV and Excel (XLSX), both directions",
},
"csv-json": {
name: "CSV to JSON",
description: "Convert between CSV and JSON, both directions",
},
"json-xml": {
name: "JSON to XML",
description: "Convert between JSON and XML, both directions",
},
"split-csv": {
name: "Split CSV",
description: "Split a CSV into smaller files by row count",
},
pipeline: {
name: "Pipeline-Builder",
description: "Mehrere Werkzeuge zu einem Workflow verketten",
},
processing: { canceled: "Processing canceled" },
mediaPlayer: {
unsupported: "Your browser does not support this media format.",
},
documentView: {
loadFailed: "Failed to load document.",
previousPage: "Previous page",
nextPage: "Next page",
},
},
toolSettings: {
compress: {
compressionMode: "Komprimierungsmodus",
targetSize: "Zielgroesse",
quality: "Qualitaet",
smallestFile: "Kleinste Datei",
bestQuality: "Beste Qualitaet",
submit: "Komprimieren",
submitBatch: "Komprimieren ({count} Dateien)",
progressLabel: "Wird komprimiert",
original: "Original: {size} KB",
processed: "Verarbeitet: {size} KB",
saved: "Gespart: {percent}%",
},
resize: {
customSize: "Benutzerdefinierte Groesse",
scale: "Skalierung",
presets: "Vorlagen",
contentAware: "Inhaltsabhaengig",
widthPx: "Breite (px)",
heightPx: "Hoehe (px)",
fitMode: "Anpassungsmodus",
cropToFit: "Zuschneiden",
fitInside: "Einpassen",
stretch: "Strecken",
limitToOriginalSize: "Auf Originalgroesse begrenzen",
limitToOriginalSizeHint:
"Wenn Ihr Bild bereits kleiner als die Zielgroesse ist, bleibt es unveraendert statt hochskaliert zu werden",
scalePercent: "Skalierung (%)",
resizeToSquare: "Quadratisch skalieren",
protectFaces: "Gesichter schuetzen",
smoothing: "Glaettung",
edgeSensitivity: "Kantenempfindlichkeit",
submit: "Groesse aendern",
submitBatch: "Groesse aendern ({count} Dateien)",
progressLabel: "Groesse wird geaendert",
},
crop: {
aspectRatio: "Seitenverhaeltnis",
custom: "Benutzerdefiniert",
positionAndSize: "Position & Groesse",
ruleOfThirds: "Drittelregel",
leftOffsetPx: "Linker Versatz (px)",
topOffsetPx: "Oberer Versatz (px)",
submit: "Zuschneiden",
submitBatch: "Zuschneiden ({count} Dateien)",
progressLabel: "Wird zugeschnitten",
},
rotate: {
rotate: "Drehen",
angle: "Winkel",
straighten: "Begradigen",
flip: "Spiegeln",
horizontal: "Horizontal",
vertical: "Vertikal",
resetAllChanges: "Alle Aenderungen zuruecksetzen",
submit: "Anwenden",
submitBatch: "Anwenden ({count} Dateien)",
progressLabel: "Wird angewendet",
},
convert: {
targetFormat: "Zielformat",
sourceFormat: "Quellformat",
quality: "Qualitaet",
submit: "Konvertieren",
submitBatch: "Konvertieren ({count} Dateien)",
progressLabel: "Wird konvertiert",
},
"optimize-for-web": {
outputFormat: "Ausgabeformat",
quality: "Qualitaet",
smallestFile: "Kleinste Datei",
bestQuality: "Beste Qualitaet",
maxDimensions: "Maximale Abmessungen",
maxWidth: "Maximale Breite",
maxHeight: "Maximale Hoehe",
stripMetadata: "Metadaten entfernen",
sizeComparison: "Groessenvergleich",
optimized: "Optimiert:",
smaller: "{percent}% kleiner",
larger: "{percent}% groesser",
submit: "Verarbeiten & Herunterladen",
submitBatch: "Verarbeiten & Herunterladen ({count} Dateien)",
progressLabel: "Wird optimiert",
},
"strip-metadata": {
currentMetadata: "Aktuelle Metadaten",
readingMetadata: "Metadaten werden gelesen...",
noMetadataFound: "Keine Metadaten in diesem Bild gefunden.",
removeAllMetadata: "Alle Metadaten entfernen",
selectSpecific: "Oder bestimmte Metadaten auswaehlen:",
stripExif: "EXIF entfernen (Kamerainformationen, Datum, Belichtung)",
stripGps: "GPS entfernen (Standortdaten)",
stripIcc: "ICC entfernen (Farbprofil)",
stripXmp: "XMP entfernen (erweiterte Metadaten)",
locationFound: "Standort gefunden",
locationWarning:
"Dieses Bild enthaelt Ihren genauen Standort. Erwagen Sie, GPS-Daten vor dem Teilen zu entfernen.",
metadataSections: "{count} Metadaten-Abschnitt gefunden",
metadataSectionsPlural: "{count} Metadaten-Abschnitte gefunden",
metadataRemoved: "Metadaten entfernt: {size} KB",
submit: "Metadaten entfernen",
progressLabel: "Metadaten werden entfernt",
},
"edit-metadata": {
readingMetadata: "Metadaten werden gelesen...",
couldNotReadMetadata: "Metadaten konnten nicht gelesen werden. Felder starten leer.",
basicInfo: "Grundinformationen",
description: "Beschreibung",
artist: "Kuenstler",
copyright: "Urheberrecht",
software: "Software",
iptc: "IPTC",
title: "Titel",
headline: "Schlagzeile",
city: "Stadt",
stateProvince: "Bundesland/Provinz",
country: "Land",
dateAndTime: "Datum & Uhrzeit",
editDates: "Daten bearbeiten",
shiftAllDates: "Alle Daten verschieben",
dateModified: "Aenderungsdatum",
dateTaken: "Aufnahmedatum",
shiftHint:
"Alle Datumsfelder um einen Versatz verschieben (nuetzlich fuer Zeitzonenkorrekturen)",
direction: "Richtung",
forward: "+ Vorwaerts",
backward: "- Rueckwaerts",
hoursMinutes: "Stunden:Minuten",
locationGps: "Standort (GPS)",
locationDataFound: "Standortdaten gefunden",
noGpsData: "Keine GPS-Daten. Koordinaten unten hinzufuegen.",
latitude: "Breitengrad",
longitude: "Laengengrad",
altitudeMeters: "Hoehe (Meter)",
removeAllGpsData: "Alle GPS-Daten entfernen",
keywords: "Schluesselwoerter",
addKeywordPlaceholder: "Schluesselwort eingeben und Enter druecken",
addToExisting: "Zu vorhandenen hinzufuegen",
replaceAll: "Alle ersetzen",
allMetadata: "Alle Metadaten",
templates: "Vorlagen",
templateNamePlaceholder: "Vorlagenname",
uploadPrompt: "Laden Sie ein Bild hoch, um seine Metadaten zu bearbeiten.",
changes: "{count} Aenderungen:",
modified: "{count} geaendert",
removed: "{count} entfernt",
gpsCleared: "GPS geloescht",
gpsAdded: "GPS hinzugefuegt",
datesShifted: "Daten verschoben",
submit: "Metadaten anwenden",
progressLabel: "Metadaten werden geschrieben",
},
"bulk-rename": {
pattern: "Muster",
patternHint: "Variablen: {{index}}, {{padded}}, {{original}}",
startIndex: "Startindex",
preview: "Vorschau",
andMore: "... und {count} weitere",
renaming: "Umbenennung laeuft...",
submit: "{count} Dateien umbenennen",
zipDownloaded: "ZIP erfolgreich heruntergeladen",
},
"image-to-pdf": {
imageCount: "{count} Bild wird in {mode} konvertiert",
imageCountPlural: "{count} Bilder werden in {mode} konvertiert",
singlePdfMode: "ein einzelnes PDF, ein Bild pro Seite",
separatePdfMode: "separate PDFs, eines pro Bild",
combineAllImages: "Alle Bilder in ein PDF zusammenfuegen",
pageSize: "Seitengroesse",
orientation: "Ausrichtung",
portrait: "Hochformat",
landscape: "Querformat",
margin: "Rand",
targetSizeLabel: "Zieldateigroesse (optional)",
targetSizePlaceholder: "z. B. 2",
targetSizeHint: "Leer lassen fuer maximale Qualitaet",
targetSizeMet: "Ziel erreicht",
targetSizeNotMet:
"Ziel konnte nicht erreicht werden. Datei auf minimale Qualitaet komprimiert.",
targetSizeTooSmall: "Zielgroesse muss mindestens 50KB betragen",
jpegQualityLabel: "Verwendete JPEG-Qualitaet",
noImage: "Kein Bild",
submitCollate: "PDF erstellen ({count} Seiten)",
submitSeparate: "{count} PDFs erstellen",
downloadPdf: "PDF herunterladen",
downloadZip: "ZIP herunterladen",
progressLabel: "PDF wird erstellt",
uploadingImages: "Bilder werden hochgeladen...",
processingPages: "{count} Seiten werden verarbeitet...",
},
"pdf-to-image": {
dropPdf: "PDF hierher ziehen oder zum Auswaehlen klicken",
readingPdf: "PDF wird gelesen...",
pageCount: "{count} Seite",
pageCountPlural: "{count} Seiten",
outputFormat: "Ausgabeformat",
quality: "Qualitaet",
resolutionDpi: "Aufloesung (DPI)",
dpiScreen: "Bildschirm",
dpiStandard: "Standard",
dpiPrint: "Druck",
dpiHighQuality: "Hohe Qualitaet",
colorMode: "Farbmodus",
colorModeColor: "Farbe",
colorModeGrayscale: "Graustufen",
colorModeBw: "S/W",
pages: "Seiten",
allPages: "Alle Seiten",
pagesHint: "z. B. 1-3, 5, 8-10 (Dokument hat {count} Seiten)",
converting: "Wird konvertiert...",
submit: "{count} Seite konvertieren",
submitPlural: "{count} Seiten konvertieren",
downloadAllZip: "Alle herunterladen (ZIP)",
},
favicon: {
uploadHint:
"Laden Sie quadratische Bilder hoch (empfohlen 512x512 oder groesser), um alle Favicon- und App-Symbolgroessen zu generieren.",
multipleHint: "Jedes der {count} Bilder erhaelt einen eigenen Ordner im ZIP.",
generatedSizes: "Generierte Groessen (pro Bild)",
plusManifest: "+ manifest.json + HTML-Snippet",
submit: "Favicons generieren ({count} Bild)",
submitPlural: "Favicons generieren ({count} Bilder)",
downloadZip: "Favicons-ZIP herunterladen",
progressLabel: "Favicons werden generiert",
},
"adjust-colors": {
light: "Licht",
brightness: "Helligkeit",
contrast: "Kontrast",
exposure: "Belichtung",
color: "Farbe",
saturation: "Saettigung",
temperature: "Temperatur",
temperatureHint: "kuehl / warm",
tint: "Tonung",
tintHint: "gruen / magenta",
hue: "Farbton",
detail: "Detail",
sharpness: "Schaerfe",
effects: "Effekte",
none: "Keine",
grayscale: "Graustufen",
sepia: "Sepia",
invert: "Invertieren",
colorChannels: "Farbkanaele",
channelModified: "geaendert",
red: "Rot",
green: "Gruen",
blue: "Blau",
resetAll: "Alles zuruecksetzen",
submit: "Anwenden",
submitBatch: "Anwenden ({count} Dateien)",
progressLabel: "Farben werden angepasst",
},
sharpening: {
method: "Methode",
adaptive: "Adaptiv",
unsharpMask: "Unscharf maskieren",
highPass: "Hochpass",
presets: "Vorlagen",
textureAmount: "Texturmenge",
amount: "Staerke",
strength: "Intensitaet",
noiseReduction: "Rauschreduzierung",
off: "Aus",
lightDenoise: "Leicht",
mediumDenoise: "Mittel",
strongDenoise: "Stark",
advancedControls: "Erweiterte Steuerung",
radius: "Radius",
flatProtection: "Flaechenschutz",
detailThreshold: "Detailschwelle",
haloLimitLight: "Halogrenze (Hell)",
haloLimitDark: "Halogrenze (Dunkel)",
threshold: "Schwellenwert",
kernelSize: "Kerngroesse",
submit: "Schaerfen",
submitBatch: "Schaerfen ({count} Dateien)",
progressLabel: "Wird geschaerft",
},
"replace-color": {
sourceColor: "Quellfarbe (zu ersetzen)",
targetColor: "Zielfarbe (Ersatz)",
makeTransparent: "Stattdessen transparent machen",
tolerance: "Toleranz",
exactMatch: "Exakte Uebereinstimmung",
wideRange: "Breiter Bereich",
submit: "Farbe ersetzen",
submitBatch: "Farbe ersetzen ({count} Dateien)",
progressLabel: "Farbe wird ersetzt",
},
"color-blindness": {
simulationType: "Simulationstyp",
redGreen: "Rot-Gruen",
blueYellow: "Blau-Gelb",
monochromatic: "Monochromatisch",
submit: "Simulieren",
submitBatch: "Simulieren ({count} Dateien)",
progressLabel: "Farbenblindheit wird simuliert",
},
"remove-background": {
subject: "Motiv",
people: "Personen",
products: "Produkte",
general: "Allgemein",
passportIdPhoto: "Pass- / Ausweisfoto",
quality: "Qualitaet",
fast: "Schnell",
hd: "HD",
max: "Max",
ultra: "Ultra",
background: "Hintergrund",
transparent: "Transparent",
bgColor: "Farbe",
gradient: "Verlauf",
image: "Bild",
gradientDirection: "Richtung",
chooseBackgroundImage: "Hintergrundbild auswaehlen",
effectsSection: "Effekte",
effectsActive: "aktiv",
blurBackground: "Hintergrund weichzeichnen",
intensity: "Intensitaet",
addShadow: "Schatten hinzufuegen",
opacity: "Deckkraft",
outputFormat: "Output Format",
edgeSmoothing: "Edge Smoothing",
edgeSmoothingOff: "Off",
edgeSmoothingLight: "Light",
edgeSmoothingMedium: "Medium",
edgeSmoothingStrong: "Strong",
colorDecontamination: "Color Decontamination",
rendering: "Wird gerendert...",
submit: "Hintergrund entfernen",
submitBatch: "Hintergrund entfernen ({count} Dateien)",
progressLabel: "Hintergrund wird entfernt",
},
upscale: {
scaleFactor: "Skalierungsfaktor",
quality: "Qualitaet",
enhanceFaces: "Gesichter verbessern",
noiseReduction: "Rauschreduzierung",
noiseReductionHint:
"Glaettet Koernung und Rauschen. Hoehere Werte entfernen mehr Rauschen, koennen aber Details aufweichen.",
outputFormat: "Ausgabeformat",
submit: "Hochskalieren {scale}x",
submitBatch: "Hochskalieren {scale}x ({count} Dateien)",
progressLabel: "Bild wird hochskaliert",
progressLabelBatch: "{count} Bilder werden hochskaliert",
},
"erase-object": {
brushSize: "Pinselgroesse",
fine: "Fein",
wide: "Breit",
undo: "Rueckgaengig",
clear: "Leeren",
outputFormat: "Ausgabeformat",
quality: "Qualitaet",
paintHint:
"Malen Sie ueber die Objekte, die Sie entfernen moechten. Strg+Z zum Rueckgaengigmachen.",
submit: "Objekt entfernen",
submitBatch: "Alle entfernen ({count})",
progressLabel: "Objekt wird entfernt",
},
ocr: {
quality: "Qualitaet",
enhanceBeforeScanning: "Vor dem Scannen verbessern",
enhanceHint:
"Entzerrt, verbessert Kontrast, entfernt Rauschen und skaliert das Bild automatisch vor dem Scannen fuer bessere Genauigkeit.",
language: "Sprache",
autoDetect: "Automatisch erkennen",
extractedText: "Extrahierter Text",
noTextDetected: "Kein Text in diesem Bild erkannt",
characters: "{count} Zeichen",
submit: "Text extrahieren",
submitBatch: "Text extrahieren ({count} Dateien)",
progressLabel: "Text wird extrahiert",
},
"blur-faces": {
blurRadius: "Weichzeichnerradius",
blurLight: "Leicht",
blurHeavy: "Stark",
detectionSensitivity: "Erkennungsempfindlichkeit",
moreFaces: "Mehr Gesichter",
fewerFaces: "Weniger Gesichter",
submit: "Gesichter weichzeichnen",
progressLabel: "Gesichter werden weichgezeichnet",
},
"enhance-faces": {
quality: "Qualitaet",
enhancementStrength: "Verbesserungsstaerke",
onlyCenterFace: "Nur zentrales Gesicht",
detectionSensitivity: "Erkennungsempfindlichkeit",
submit: "Gesichter verbessern",
submitBatch: "Gesichter verbessern ({count} Dateien)",
progressLabel: "Gesichter werden verbessert",
},
"smart-crop": {
subjectFocus: "Motivfokus",
faceFocus: "Gesichtsfokus",
autoTrim: "Automatisch beschneiden",
customSize: "Benutzerdefinierte Groesse",
socialPresets: "Social-Media-Vorlagen",
detectionStrategy: "Erkennungsstrategie",
detectionStrategyHint:
"Aufmerksamkeit findet den visuell auffaelligsten Bereich. Entropie findet den Bereich mit den meisten Details.",
attention: "Aufmerksamkeit",
entropy: "Entropie",
padding: "Abstand",
paddingHint: "Zusaetzlicher Freiraum um den Fokusbereich",
outputQuality: "Ausgabequalitaet",
outputQualityHint: "Fuer JPEG- und WebP-Ausgaben. PNG ist immer verlustfrei.",
subjectDescription:
"Erkennt den interessantesten Bereich per Salienzanalyse und schneidet auf die Zielgroesse zu.",
framing: "Bildausschnitt",
facePadding: "Gesichtsabstand",
facePaddingHint: "Zusaetzlicher Raum um erkannte Gesichter",
fewerFalsePositives: "Weniger Fehlerkennungen",
faceDescription:
"Verwendet AI-Gesichtserkennung, um Gesichter korrekt im Bild zu halten. Bei fehlender Erkennung wird auf Motivfokus zurueckgegriffen.",
trimTolerance: "Toleranz",
trimDescription:
"Wie stark sich ein Randpixel von der Kantenfarbe unterscheiden darf und trotzdem beschnitten wird. Hoeher = aggressiver.",
padToSquare: "Auf Quadrat auffuellen",
targetSizePx: "Zielgroesse (px)",
padColor: "Auffuellfarbe",
trimHint:
'Entfernt einfarbige Raender um Ihr Motiv. Aktivieren Sie "Auf Quadrat auffuellen" fuer E-Commerce-Bilder.',
submitSubject: "Intelligenter Zuschnitt",
submitFace: "Gesichtszuschnitt",
submitTrim: "Raender beschneiden",
},
imageEnhancement: {
enhancementMode: "Verbesserungsmodus",
auto: "Automatisch",
portrait: "Portraet",
landscape: "Landschaft",
lowLight: "Schwaches Licht",
food: "Lebensmittel",
document: "Dokument",
intensity: "Intensitaet",
deepEnhance: "Tiefenverbesserung (AI)",
deepEnhanceDescription: "Entfernt Rauschen und Artefakte mit AI",
deepEnhanceRequires: "Erfordert das Bundle Hochskalierung & Verbesserung",
analyzingImage: "Bild wird analysiert...",
detectedIssues: "Erkannte Probleme",
imageLooksGood: "Das Bild sieht gut aus. Feinabstimmung mit dem Intensitaetsregler.",
issueUnderexposed: "Unterbelichtet",
issueOverexposed: "Ueberbelichtet",
issueLowContrast: "Flacher Kontrast",
issueColorCast: "Farbstich",
issueDesaturated: "Entsaettigt",
issueSoftFocus: "Unscharfer Fokus",
issueNoisy: "Verrauscht",
submit: "Verbessern",
submitDeep: "Tiefenverbesserung",
submitBatch: "Verbessern ({count} Dateien)",
submitDeepBatch: "Tiefenverbesserung ({count} Dateien)",
progressLabel: "Bild wird verbessert",
progressLabelBatch: "{count} Bilder werden verbessert",
},
"noise-removal": {
denoisingTier: "Entrauschungsstufe",
quick: "Schnell",
balanced: "Ausgewogen",
quality: "Qualitaet",
maximum: "Maximum",
quickDesc: "Schnell, ressourcenschonend",
balancedDesc: "Gute Qualitaet, moderate Geschwindigkeit",
qualityDesc: "AI-gestuetzt, langsam",
maximumDesc: "Bestes AI-Modell, am langsamsten",
strength: "Staerke",
subtle: "Dezent",
aggressive: "Aggressiv",
detailPreservation: "Detailerhaltung",
smooth: "Weich",
sharp: "Scharf",
colorNoise: "Farbrauschen",
heavy: "Stark",
outputFormat: "Ausgabeformat",
gifAiWarning:
"AI-Entrauschung bei GIF-Dateien verarbeitet nur das erste Bild. Fuer animierte GIFs verwenden Sie die Stufe Schnell oder Ausgewogen.",
submit: "Rauschen entfernen",
submitBatch: "Rauschen entfernen ({count} Dateien)",
progressLabel: "Rauschen wird entfernt",
progressLabelBatch: "Rauschen wird aus {count} Bildern entfernt",
},
"red-eye-removal": {
sensitivity: "Empfindlichkeit",
strict: "Streng",
aggressive: "Aggressiv",
correctionStrength: "Korrekturstaerke",
subtle: "Dezent",
dark: "Dunkel",
outputFormat: "Ausgabeformat",
quality: "Qualitaet",
submit: "Rote Augen korrigieren",
submitBatch: "Rote Augen korrigieren ({count} Dateien)",
progressLabel: "Rote Augen werden korrigiert",
progressLabelBatch: "Rote Augen werden in {count} Bildern korrigiert",
},
"restore-photo": {
scratchRemoval: "Kratzerentfernung",
scratchRemovalDesc: "Kratzer, Risse und Flecken erkennen und reparieren",
faceEnhancement: "Gesichtsverbesserung",
faceEnhancementDesc: "Beschaedigte Gesichter mit CodeFormer-AI wiederherstellen",
faceFidelity: "Gesichtstreue",
enhanced: "Verbessert",
faithful: "Originalgetreu",
noiseReduction: "Rauschreduzierung",
noiseReductionDesc: "Koernung und Rauschen aus alten Fotos entfernen",
denoiseStrength: "Entrauschungsstaerke",
autoColorize: "Automatisch kolorieren",
autoColorizeDesc: "Farbe zu S/W-Fotos mit DDColor-AI hinzufuegen",
colorizeStrength: "Kolorierungsstaerke",
vivid: "Lebhaft",
submit: "Foto restaurieren",
submitBatch: "Fotos restaurieren ({count})",
progressLabel: "Foto wird restauriert",
progressLabelBatch: "{count} Fotos werden restauriert",
},
"content-aware-resize": {
widthPx: "Breite (px)",
heightPx: "Hoehe (px)",
resizeToSquare: "Quadratisch skalieren",
protectFaces: "Gesichter schuetzen",
protectFacesHint:
"Gesichtsbereiche per Gesichtserkennung erkennen und vor Nahtentfernung schuetzen",
smoothing: "Glaettung",
edgeSensitivity: "Kantenempfindlichkeit",
submit: "Groesse aendern",
submitBatch: "Groesse aendern ({count} Dateien)",
progressLabel: "Inhaltsabhaengige Groessenaenderung",
},
"ai-canvas-expand": {
quality: "Qualitaet",
fast: "Schnell",
balanced: "Ausgewogen",
highQuality: "Hohe Qualitaet",
fastDesc: "Schnelle Vorschau, weniger AI-Durchlaeufe",
balancedDesc: "Gute Qualitaet, moderate Geschwindigkeit",
highQualityDesc: "Beste Ergebnisse, langsamer",
extendToAspectRatio: "Auf Seitenverhaeltnis erweitern",
extendByPixels: "Erweitern um (Pixel)",
top: "Oben",
right: "Rechts",
bottom: "Unten",
left: "Links",
newSize: "Neue Groesse: {width} x {height}",
submit: "Leinwand erweitern",
submitBatch: "Erweitern ({count} Dateien)",
progressLabel: "Leinwand wird erweitert",
},
colorize: {
aiModel: "AI-Modell",
fast: "Schnell",
fastDesc: "Schnelle Ergebnisse",
balanced: "Ausgewogen",
balancedDesc: "Bestmoegliche Qualitaet",
best: "Beste",
bestDesc: "Hoechste Qualitaet",
colorIntensity: "Farbintensitaet",
grayscaleLabel: "Graustufen",
subtleLabel: "Dezent",
naturalLabel: "Natuerlich",
vividLabel: "Lebhaft",
intensityHint: "Niedrigere Werte erzeugen gedaempftere Farben im Vintage-Stil.",
strength: "Kolorierungsstaerke",
submit: "Kolorieren",
submitBatch: "Kolorieren ({count} Dateien)",
progressLabel: "Wird koloriert",
progressLabelBatch: "{count} Bilder werden koloriert",
},
"passport-photo": {
country: "Land",
searchCountries: "Laender suchen...",
noCountriesFound: "Keine Laender gefunden",
customDimensions: "Benutzerdefinierte Masse",
documentType: "Dokumenttyp",
dimensionsMm: "Abmessungen (mm)",
dpi: "DPI",
pixelsPerInch: "Pixel pro Zoll",
backgroundColor: "Hintergrundfarbe",
maxFileSize: "Maximale Dateigroesse",
noLimit: "Kein Limit",
customKb: "Benutzerdefiniert (KB)...",
uploadPortrait: "Portraetfoto hochladen",
uploadHint:
"Laden Sie ein Bild im linken Bereich hoch, um eine Vorschau Ihres Passfotos zu sehen",
analyzingPhoto: "Foto wird analysiert",
detectingLandmarks: "Gesichtsmerkmale werden erkannt und Hintergrund wird entfernt...",
generatePassportPhoto: "Passfoto generieren",
generating: "Wird generiert...",
downloadPhoto: "Foto herunterladen",
faceCentered: "Gesicht zentriert",
headLevel: "Kopf gerade",
lookingStraight: "Blickrichtung frontal",
faceSize: "Gesichtsgroesse",
whatYouSee: "Was Sie sehen, wird heruntergeladen",
dragToAdjust: "Ziehen zum Anpassen",
scrollToZoom: "Scrollen zum Zoomen",
photoGenerated: "Foto generiert. Laden Sie es im linken Bereich herunter.",
},
"transparency-fixer": {
description:
"Laden Sie ein PNG mit unechtem transparentem Hintergrund hoch. Wir reparieren es mit einem Klick.",
removeWatermark: "Wasserzeichen entfernen",
removeWatermarkHelp: "Halbtransparente Wasserzeichen erkennen und entfernen",
requiresEraser: "Erfordert das Objektentferner-Bundle",
advanced: "Erweitert",
defringe: "Randbereinigung",
outputFormat: "Ausgabeformat",
submit: "Transparenz reparieren",
submitBatch: "Transparenz reparieren ({count} Dateien)",
progressLabel: "Transparenz wird repariert",
},
"watermark-text": {
watermarkText: "Wasserzeichen-Text",
fontSize: "Schriftgroesse",
color: "Farbe",
opacity: "Deckkraft",
position: "Position",
rotation: "Drehung",
center: "Mitte",
topLeft: "Oben links",
topRight: "Oben rechts",
bottomLeft: "Unten links",
bottomRight: "Unten rechts",
tiled: "Gekachelt",
submit: "Wasserzeichen hinzufuegen",
submitBatch: "Wasserzeichen hinzufuegen ({count} Dateien)",
progressLabel: "Wasserzeichen wird hinzugefuegt",
},
"watermark-image": {
uploadWatermark: "Wasserzeichen-Bild hochladen",
position: "Position",
opacity: "Deckkraft",
scale: "Skalierung",
submit: "Wasserzeichen anwenden",
submitBatch: "Wasserzeichen anwenden ({count} Dateien)",
},
"text-overlay": {
text: "Text",
fontSize: "Schriftgroesse",
color: "Farbe",
position: "Position",
top: "Oben",
center: "Mitte",
bottom: "Unten",
backgroundBox: "Hintergrundfeld",
backgroundColor: "Hintergrundfarbe",
shadow: "Schatten",
submit: "Text hinzufuegen",
submitBatch: "Text hinzufuegen ({count} Dateien)",
progressLabel: "Textueberlagerung wird hinzugefuegt",
download: "Download",
defaultText: "Your Text Here",
},
compose: {
uploadOverlay: "Overlay-Bild hochladen",
xPosition: "X-Position",
yPosition: "Y-Position",
opacity: "Deckkraft",
blendMode: "Mischmodus",
submit: "Zusammenfuegen",
},
"meme-generator": {
selectTemplate:
"Waehlen Sie eine Vorlage aus der Galerie oder laden Sie Ihr eigenes Bild hoch.",
chooseLayout: "Waehlen Sie ein Textlayout fuer Ihr Bild.",
textContent: "Textinhalt",
textStyle: "Textstil",
font: "Schriftart",
fontSize: "Schriftgroesse",
textColor: "Textfarbe",
strokeColor: "Konturfarbe",
allCaps: "GROSSBUCHSTABEN",
generate: "Meme erstellen",
generating: "Wird erstellt...",
downloadMeme: "Meme herunterladen",
backToGallery: "Zurueck zur Galerie",
},
info: {
loadingInfo: "Informationen werden geladen...",
filename: "Dateiname",
fileSize: "Dateigroesse",
dimensions: "Abmessungen",
format: "Format",
channels: "Kanaele",
colorSpace: "Farbraum",
density: "Dichte",
bitDepth: "Bittiefe",
progressive: "Progressiv",
pages: "Seiten",
hasAlpha: "Hat Alpha",
hasProfile: "Hat Profil",
hasExif: "Hat EXIF",
hasIcc: "Hat ICC",
hasXmp: "Hat XMP",
readInfo: "Read Info",
reading: "Reading...",
channelStats: "Channel Stats",
yes: "Yes",
no: "No",
na: "N/A",
failedToRead: "Failed to read info",
},
compare: {
uploadSecondImage: "Zweites Bild hochladen",
similarity: "Aehnlichkeit: {percent}%",
submit: "Vergleichen",
downloadDiff: "Differenz herunterladen",
},
"find-duplicates": {
preset: "Vorlage",
exact: "Exakt",
similar: "Aehnlich",
loose: "Locker",
exactDesc: "Pixelidentische Kopien, gleiches Bild in unterschiedlichen Formaten.",
similarDesc: "Skalierte, neu komprimierte oder leicht bearbeitete Kopien.",
looseDesc: "Visuell verwandte Bilder, leichte Zuschnitte, unterschiedliche Belichtungen.",
threshold: "Schwellenwert",
submit: "Nach Duplikaten suchen",
scanning: "Wird gescannt...",
},
"color-palette": {
submit: "Palette extrahieren",
extracting: "Wird extrahiert...",
dominantColors: "Dominante Farben",
clickToCopy: "Zum Kopieren klicken",
},
"qr-generate": {
contentType: "Inhaltstyp",
url: "URL",
text: "Text",
wifi: "WiFi",
vcard: "vCard",
email: "E-Mail",
phone: "Telefon",
sms: "SMS",
styling: "Gestaltung",
dotStyle: "Punktstil",
cornerSquareStyle: "Eckquadrat-Stil",
cornerDotStyle: "Eckpunkt-Stil",
foregroundColor: "Vordergrundfarbe",
bgColor: "Hintergrundfarbe",
logo: "Logo",
downloadFormat: "Downloadformat",
submit: "QR-Code generieren",
download: "QR-Code herunterladen",
},
"html-to-image": {
modeUrl: "URL",
modeHtml: "HTML File",
htmlFile: "HTML File",
url: "URL",
urlPlaceholder: "https://snapotter.com",
format: "Output Format",
quality: "Quality",
devicePreset: "Device",
viewportWidth: "Width",
viewportHeight: "Height",
fullPage: "Full Page",
submit: "Capture",
download: "Download Screenshot",
capturing: "Capturing webpage...",
errorTimeout: "Page took too long to load",
errorBlocked: "This URL cannot be captured",
errorUnavailable: "Screenshot service is not available",
errorFailed: "Failed to capture the page",
placeholder: "Enter a URL and click Capture",
presets: {
desktop: "Desktop",
tablet: "Tablet",
mobile: "Mobile",
custom: "Custom",
},
},
"barcode-read": {
submit: "Barcodes scannen",
submitBatch: "Scannen ({count} Dateien)",
scanning: "Wird gescannt...",
noBarcodesFound: "Keine Barcodes gefunden",
barcodesFound: "{count} Barcode gefunden",
barcodesFoundPlural: "{count} Barcodes gefunden",
},
collage: {
template: "Vorlage",
aspectRatio: "Seitenverhaeltnis",
gap: "Abstand",
cornerRadius: "Eckenradius",
backgroundColor: "Hintergrundfarbe",
outputFormat: "Ausgabeformat",
quality: "Qualitaet",
submit: "Collage erstellen",
downloadCollage: "Collage herunterladen",
},
stitch: {
direction: "Richtung",
horizontal: "Horizontal",
vertical: "Vertikal",
grid: "Raster",
gridColumns: "Rasterspalten",
resizeMode: "Skalierungsmodus",
fit: "Einpassen",
original: "Original",
stretchMode: "Strecken",
cropMode: "Zuschneiden",
alignment: "Ausrichtung",
start: "Anfang",
center: "Mitte",
end: "Ende",
gap: "Abstand",
border: "Rand",
cornerRadius: "Eckenradius",
backgroundColor: "Hintergrundfarbe",
outputFormat: "Ausgabeformat",
quality: "Qualitaet",
submit: "Bilder zusammenfuegen",
},
split: {
modeGrid: "Raster",
modeTileSize: "Kachelgroesse",
presets: "Vorlagen",
columns: "Spalten",
rows: "Zeilen",
tileWidth: "Kachelbreite",
tileHeight: "Kachelhoehe",
outputFormat: "Ausgabeformat",
quality: "Qualitaet",
submit: "Bild aufteilen",
downloadAll: "Alle herunterladen (ZIP)",
},
border: {
presets: "Vorlagen",
borderWidth: "Randbreite",
borderColor: "Randfarbe",
padding: "Abstand",
paddingColor: "Abstandsfarbe",
cornerRadius: "Eckenradius",
shadow: "Schatten",
shadowBlur: "Schattenunschaerfe",
shadowOffsetX: "Schattenversatz X",
shadowOffsetY: "Schattenversatz Y",
shadowColor: "Schattenfarbe",
shadowOpacity: "Schattendeckkraft",
submit: "Rand hinzufuegen",
submitBatch: "Rand hinzufuegen ({count} Dateien)",
progressLabel: "Rand wird hinzugefuegt",
},
beautify: {
preset: "Vorlage",
backgroundType: "Hintergrundtyp",
solidColor: "Volltonfarbe",
linearGradient: "Linearer Verlauf",
radialGradient: "Radialer Verlauf",
customImage: "Eigenes Bild",
gradientAngle: "Verlaufswinkel",
padding: "Abstand",
borderRadius: "Randradius",
shadowPreset: "Schattenvorlage",
deviceFrame: "Geraeterahmen",
submit: "Verschoenern",
submitBatch: "Verschoenern ({count} Dateien)",
progressLabel: "Screenshot wird verschoenert",
},
"svg-to-raster": {
outputFormat: "Ausgabeformat",
sizing: "Groesse",
scaleMode: "Skalierung",
customMode: "Benutzerdefiniert",
scalePresets: "Skalierungsvorlagen",
dpiPresets: "DPI-Vorlagen",
customWidth: "Breite (px)",
customHeight: "Hoehe (px)",
background: "Hintergrund",
bgTransparent: "Transparent",
bgColor: "Farbe",
quality: "Qualitaet",
submit: "SVG konvertieren",
submitBatch: "Konvertieren ({count} Dateien)",
progressLabel: "SVG wird konvertiert",
},
vectorize: {
preset: "Vorlage",
logo: "Logo",
illustration: "Illustration",
photo: "Foto",
sketch: "Skizze",
customPreset: "Benutzerdefiniert",
colorMode: "Farbmodus",
bw: "S/W",
colorModeColor: "Farbe",
threshold: "Schwellenwert",
colorPrecision: "Farbpraezision",
layerDifference: "Ebenenunterschied",
filterSpeckle: "Flecken filtern",
pathMode: "Pfadmodus",
cornerThreshold: "Eckenschwelle",
invertColors: "Farben invertieren",
submit: "Vektorisieren",
submitBatch: "Vektorisieren ({count} Dateien)",
progressLabel: "Wird vektorisiert",
},
"gif-tools": {
mode: "Modus",
resize: "Groesse aendern",
optimize: "Optimieren",
speed: "Geschwindigkeit",
reverse: "Umkehren",
extract: "Extrahieren",
rotateMode: "Drehen",
pixel: "Pixel",
percentage: "Prozent",
colors: "Farben",
dither: "Dithering",
effort: "Aufwand",
speedFactor: "Geschwindigkeitsfaktor",
loopControl: "Schleifensteuerung",
infinite: "Endlos",
once: "Einmal",
customLoop: "Benutzerdefiniert",
loopCount: "Schleifenanzahl",
extractSingle: "Einzeln",
extractRange: "Bereich",
extractAll: "Alle",
frameNumber: "Bildnummer",
frameStart: "Startbild",
frameEnd: "Endbild",
extractFormat: "Format",
submit: "GIF verarbeiten",
submitBatch: "Verarbeiten ({count} Dateien)",
progressLabel: "GIF wird verarbeitet",
},
"image-to-base64": {
outputFormat: "Ausgabeformat",
keepOriginal: "Original beibehalten",
quality: "Qualitaet",
maxWidth: "Maximale Breite",
maxHeight: "Maximale Hoehe",
submit: "In Base64 konvertieren",
submitBatch: "Konvertieren ({count} Dateien)",
copyBase64: "Base64 kopieren",
copyDataUri: "Data-URI kopieren",
copyImgTag: "<img>-Tag kopieren",
copyCssUrl: "CSS url() kopieren",
},
"enhance-faces-standalone": {
model: "Modell",
fast: "Schnell",
balanced: "Ausgewogen",
best: "Beste",
},
"convert-video": {
format: "Output format",
quality: "Quality",
high: "High",
balanced: "Balanced",
small: "Smallest",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"compress-video": {
quality: "Compression",
light: "Light",
balanced: "Balanced",
strong: "Strong",
resolution: "Resolution",
original: "Original",
submit: "Compress",
submitBatch: "Compress ({count} files)",
progressLabel: "Compressing",
},
"trim-video": {
start: "Start (seconds)",
end: "End (seconds)",
precise: "Frame-accurate (re-encodes)",
submit: "Trim",
submitBatch: "Trim ({count} files)",
progressLabel: "Trimming",
},
"mute-video": {
submit: "Remove audio",
submitBatch: "Remove audio ({count} files)",
progressLabel: "Muting",
},
"video-to-gif": {
fps: "Frames per second",
width: "Width (px)",
start: "Start (seconds)",
duration: "Duration (seconds)",
submit: "Create GIF",
submitBatch: "Create GIFs ({count} files)",
progressLabel: "Creating GIF",
},
"convert-audio": {
format: "Output format",
bitrate: "Bitrate (kbps)",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"trim-audio": {
start: "Start (seconds)",
end: "End (seconds)",
submit: "Trim",
submitBatch: "Trim ({count} files)",
progressLabel: "Trimming",
},
"extract-audio": {
format: "Output format",
submit: "Extract",
submitBatch: "Extract ({count} files)",
progressLabel: "Extracting",
},
"merge-pdf": {
addFiles: "Add PDFs to merge",
needTwo: "At least two PDFs are required",
orderHint: "{count} PDFs will merge in this order",
submit: "Merge",
submitBatch: "Merge ({count} files)",
progressLabel: "Merging",
},
"split-pdf": {
mode: "Split mode",
range: "Page range",
rangeHint: "e.g. 1-3, 5, 7-z",
everyN: "Pages per part",
submit: "Split",
submitBatch: "Split ({count} files)",
progressLabel: "Splitting",
},
"compress-pdf": {
preset: "Quality preset",
screen: "Screen (smallest)",
ebook: "Ebook (balanced)",
printer: "Printer (best quality)",
submit: "Compress",
submitBatch: "Compress ({count} files)",
progressLabel: "Compressing",
},
"rotate-pdf": {
angle: "Rotation angle",
range: "Page range",
rangeHint: "e.g. 1-3, 5, 1-z (all pages)",
submit: "Rotate",
submitBatch: "Rotate ({count} files)",
progressLabel: "Rotating",
},
"word-to-pdf": {
submit: "Convert to PDF",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"extract-pages": {
range: "Page range",
rangeHint: "e.g. 1-3, 5, 7-z",
submit: "Extract",
submitBatch: "Extract ({count} files)",
progressLabel: "Extracting",
},
"remove-pages": {
pages: "Pages to remove",
pagesHint: "e.g. 2, 4-6, z (last page)",
submit: "Remove",
submitBatch: "Remove ({count} files)",
progressLabel: "Removing",
},
"organize-pdf": {
order: "Page order",
orderHint: "e.g. 3,1,2 or 1-z (identity)",
submit: "Reorder",
submitBatch: "Reorder ({count} files)",
progressLabel: "Reordering",
},
"protect-pdf": {
userPassword: "User password",
ownerPassword: "Owner password (optional)",
ownerPasswordHint: "Defaults to user password if empty",
submit: "Protect",
submitBatch: "Protect ({count} files)",
progressLabel: "Encrypting",
},
"unlock-pdf": {
password: "Password",
submit: "Unlock",
submitBatch: "Unlock ({count} files)",
progressLabel: "Decrypting",
},
"repair-pdf": {
submit: "Repair",
submitBatch: "Repair ({count} files)",
progressLabel: "Repairing",
},
"linearize-pdf": {
submit: "Optimize",
submitBatch: "Optimize ({count} files)",
progressLabel: "Linearizing",
},
"grayscale-pdf": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"pdfa-convert": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"crop-pdf": {
margin: "Margin (points)",
submit: "Crop",
submitBatch: "Crop ({count} files)",
progressLabel: "Cropping",
},
"nup-pdf": {
perSheet: "Pages per sheet",
submit: "Arrange",
submitBatch: "Arrange ({count} files)",
progressLabel: "Arranging",
},
"booklet-pdf": {
perSheet: "Pages per sheet",
submit: "Create Booklet",
submitBatch: "Create Booklet ({count} files)",
progressLabel: "Creating booklet",
},
"watermark-pdf": {
text: "Watermark text",
position: "Position",
fontSize: "Font size",
opacity: "Opacity",
rotation: "Rotation",
submit: "Watermark",
submitBatch: "Watermark ({count} files)",
progressLabel: "Watermarking",
},
"pdf-page-numbers": {
position: "Position",
fontSize: "Font size",
submit: "Add Numbers",
submitBatch: "Add Numbers ({count} files)",
progressLabel: "Numbering",
},
"flatten-pdf": {
submit: "Flatten",
submitBatch: "Flatten ({count} files)",
progressLabel: "Flattening",
},
"redact-pdf": {
terms: "Terms to redact",
termsHint: "One term per line (max 50)",
caseSensitive: "Case sensitive",
submit: "Redact",
submitBatch: "Redact ({count} files)",
progressLabel: "Redacting",
},
"pdf-to-text": {
submit: "Extract Text",
submitBatch: "Extract Text ({count} files)",
progressLabel: "Extracting",
},
"pdf-to-word": {
hint: "Best for text-based PDFs; scanned pages need OCR",
submit: "Convert to Word",
submitBatch: "Convert to Word ({count} files)",
progressLabel: "Converting",
},
"pdf-metadata": {
title: "Title",
author: "Author",
subject: "Subject",
keywords: "Keywords",
submit: "Set Metadata",
submitBatch: "Set Metadata ({count} files)",
progressLabel: "Setting metadata",
},
"html-to-pdf": {
hint: "Remote resources are disabled for privacy.",
submit: "Convert to PDF",
submitBatch: "Convert to PDF ({count} files)",
progressLabel: "Converting",
},
"markdown-to-pdf": {
hint: "Remote resources are disabled for privacy.",
submit: "Convert to PDF",
submitBatch: "Convert to PDF ({count} files)",
progressLabel: "Converting",
},
"csv-excel": {
sheet: "Worksheet number",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"csv-json": {
pretty: "Pretty print",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"json-xml": {
pretty: "Pretty print",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"split-csv": {
rowsPerFile: "Rows per file",
keepHeader: "Keep header in each file",
submit: "Split",
submitBatch: "Split ({count} files)",
progressLabel: "Splitting",
},
},
urlImport: {
title: "Von URLs importieren",
placeholder: "Bild-URLs einfuegen, eine pro Zeile...",
importButton: "URLs importieren",
addButton: "{count} Dateien hinzufuegen",
adding: "Wird hinzugefuegt...",
retryButton: "Erneut versuchen",
cancelButton: "Abbrechen",
readyCount: "{count} bereit",
failedStatus: "Fehlgeschlagen",
},
comparison: {
original: "Original",
processed: "Verarbeitet",
before: "Vorher",
after: "Nachher",
savings: "Ersparnis",
},
toolPage: {
emptyPrompt: "Bild hierher ziehen oder hochladen",
filesCount: "Dateien ({count})",
addMore: "+ Weitere hinzufuegen",
clearAll: "Alle entfernen",
acceptDescription: "Nur {exts}-Dateien",
notFound: "Werkzeug nicht gefunden",
configureAndGenerate: "Einstellungen konfigurieren und generieren.",
processingFailed: "Verarbeitung fuer diese Datei fehlgeschlagen",
conversionComplete: "Konvertierung abgeschlossen",
cannotPreviewDownload:
"{type}-Dateien koennen im Browser nicht angezeigt werden. Verwenden Sie die Download-Schaltflaeche, um Ihre Datei zu speichern.",
generatingPreview: "Vorschau wird generiert...",
cannotPreviewWillProcess:
"{ext}-Dateien koennen im Browser nicht angezeigt werden. Das Werkzeug verarbeitet diese Datei trotzdem.",
previousImage: "Vorheriges Bild",
nextImage: "Naechstes Bild",
imageCounter: "{current} / {total}",
settingsLabel: "Einstellungen",
downloadAllZip: "Alle herunterladen (ZIP)",
hideSettings: "Einstellungen ausblenden",
imageArea: "Bildbereich",
},
homePage: {
generatingPreview: "Vorschau wird generiert...",
loadingPreview: "Vorschau wird geladen...",
changeFile: "Datei aendern",
quickActions: "Schnellaktionen",
allTools: "Alle Werkzeuge",
},
fullscreenGrid: {
searchPlaceholder: "Werkzeuge suchen...",
hideDetails: "Details ausblenden",
showDetails: "Details anzeigen",
switchToSidebar: "Zur Seitenleisten-Ansicht wechseln",
sidebarButton: "Seitenleiste",
noToolsFound: "Keine Werkzeuge gefunden",
tryDifferent: "Versuchen Sie einen anderen Suchbegriff",
},
editor: {
menu: {
file: {
label: "Datei",
new: "Neu",
open: "Oeffnen",
save: "Speichern",
exportAs: "Exportieren als...",
quickExportPng: "Schnellexport als PNG",
close: "Schliessen",
},
edit: {
label: "Bearbeiten",
undo: "Rueckgaengig",
redo: "Wiederholen",
cut: "Ausschneiden",
copy: "Kopieren",
copyMerged: "Zusammengefuegt kopieren",
paste: "Einfuegen",
pasteInPlace: "An gleicher Stelle einfuegen",
delete: "Loeschen",
freeTransform: "Frei transformieren",
transform: {
label: "Transformieren",
scale: "Skalieren",
rotate: "Drehen",
skew: "Neigen",
flipHorizontal: "Horizontal spiegeln",
flipVertical: "Vertikal spiegeln",
},
},
image: {
label: "Bild",
imageSize: "Bildgroesse...",
canvasSize: "Leinwandgroesse...",
rotation: {
label: "Bilddrehung",
cw90: "90° im Uhrzeigersinn",
ccw90: "90° gegen Uhrzeigersinn",
r180: "180°",
flipHorizontal: "Horizontal spiegeln",
flipVertical: "Vertikal spiegeln",
},
trim: "Beschneiden",
adjustments: {
label: "Anpassungen",
brightnessContrast: "Helligkeit/Kontrast",
hueSaturation: "Farbton/Saettigung",
colorBalance: "Farbbalance",
levels: "Tonwerte",
curves: "Gradationskurven",
},
},
layer: {
label: "Ebene",
newLayer: "Neue Ebene",
duplicateLayer: "Ebene duplizieren",
deleteLayer: "Ebene loeschen",
arrange: {
label: "Anordnen",
bringToFront: "In den Vordergrund",
bringForward: "Eine Ebene nach vorne",
sendBackward: "Eine Ebene nach hinten",
sendToBack: "In den Hintergrund",
},
mergeDown: "Nach unten zusammenfuegen",
flattenImage: "Bild reduzieren",
},
select: {
label: "Auswahl",
all: "Alles",
deselect: "Auswahl aufheben",
inverse: "Umkehren",
colorRange: "Farbbereich...",
},
filter: {
label: "Filter",
blur: {
label: "Weichzeichnen",
gaussian: "Gauss'scher Weichzeichner",
motion: "Bewegungsunschaerfe",
radial: "Radialer Weichzeichner",
surface: "Oberflaechenweichzeichner",
},
sharpen: {
label: "Schaerfen",
sharpen: "Schaerfen",
unsharpMask: "Unscharf maskieren",
},
noise: {
label: "Rauschen",
addNoise: "Rauschen hinzufuegen",
reduceNoise: "Rauschen reduzieren",
},
pixelate: {
label: "Pixeln",
pixelate: "Pixeln",
mosaic: "Mosaik",
},
stylize: {
label: "Stilisieren",
emboss: "Relief",
solarize: "Solarisieren",
posterize: "Posterisieren",
},
grayscale: "Graustufen",
sepia: "Sepia",
invert: "Invertieren",
},
view: {
label: "Ansicht",
zoomIn: "Vergroessern",
zoomOut: "Verkleinern",
fitOnScreen: "An Bildschirm anpassen",
actualPixels: "Tatsaechliche Pixel",
rulers: "Lineale",
grid: "Raster",
guides: "Hilfslinien",
snap: "Einrasten",
panels: "Bedienfelder",
},
},
menuBar: {
backTitle: "Zurueck zu SnapOtter",
},
welcome: {
ariaLabel: "Bild-Ablagezone",
heading: "Bild-Editor",
dropDescription: "Ziehen Sie ein Bild hierher, um zu beginnen",
openImageButton: "Bild oeffnen",
newDocumentButton: "Neues Dokument",
pasteHint: "Oder aus der Zwischenablage einfuegen (Strg+V)",
},
mobile: {
heading: "Desktop empfohlen",
description:
"Der Bild-Editor funktioniert am besten auf Desktopbildschirmen. Bitte wechseln Sie fuer das volle Bearbeitungserlebnis zu einem Geraet mit groesserem Display.",
},
errors: {
serverDecodeFailed: "Server-Dekodierung fehlgeschlagen",
},
shapes: {
shape: "Shape",
fill: "Fill",
stroke: "Stroke",
strokeWidth: "Width",
cornerRadius: "Radius",
sides: "Sides",
points: "Points",
dashStyle: "Dash",
solid: "Solid",
dashed: "Dashed",
dotted: "Dotted",
none: "None",
opacity: "Opacity",
rectangle: "Rectangle",
ellipse: "Ellipse",
line: "Line",
arrow: "Arrow",
polygon: "Polygon",
star: "Star",
},
},
settings: {
heading: "Einstellungen",
nav: {
general: "Allgemein",
systemSettings: "Systemeinstellungen",
security: "Sicherheit",
people: "Personen",
teams: "Teams",
roles: "Rollen",
auditLog: "Audit-Protokoll",
usage: "Usage",
apiKeys: "API-Schluessel",
aiFeatures: "AI-Funktionen",
tools: "Werkzeuge",
productAnalytics: "Produktanalytik",
about: "Info",
},
general: {
heading: "Allgemein",
description: "Benutzereinstellungen und Anzeigeoptionen.",
loading: "Wird geladen...",
logOut: "Abmelden",
defaultToolViewLabel: "Standard-Werkzeugansicht",
defaultToolViewDescription: "Wie Werkzeuge auf der Startseite angezeigt werden",
sidebarOption: "Seitenleiste",
fullscreenGridOption: "Vollbild-Raster",
appVersionLabel: "App-Version",
appVersionDescription: "Aktuelle Version von SnapOtter",
saveButton: "Einstellungen speichern",
saveSuccess: "Einstellungen gespeichert.",
saveFailed: "Einstellungen konnten nicht gespeichert werden.",
},
system: {
heading: "Systemeinstellungen",
description: "Serverseitige Konfiguration und Limits.",
fileUploadLimitLabel: "Dateiupload-Limit (MB)",
fileUploadLimitDescription: "Maximale Dateigroesse pro Upload",
defaultThemeLabel: "Standard-Farbschema",
defaultThemeDescription: "Farbschema fuer neue Sitzungen",
lightOption: "Hell",
darkOption: "Dunkel",
systemOption: "System",
languageLabel: "Sprache",
languageDescription: "Sprache der Benutzeroberflaeche",
loginAttemptLimitLabel: "Anmeldeversuchslimit",
loginAttemptLimitDescription:
"Maximale fehlgeschlagene Anmeldeversuche pro Minute vor Sperrung",
fileManagementHeading: "Dateiverwaltung",
maxFileAgeLabel: "Maximales Dateialter (Stunden)",
maxFileAgeDescription:
"Wie lange verarbeitete Dateien vor automatischer Bereinigung aufbewahrt werden",
startupCleanupLabel: "Bereinigung beim Start",
startupCleanupDescription: "Alte temporaere Dateien beim Serverstart bereinigen",
saveButton: "Einstellungen speichern",
saveSuccess: "Einstellungen gespeichert.",
saveFailed: "Einstellungen konnten nicht gespeichert werden.",
limitsAndResources: "Limits & Ressourcen",
maxFileSize: "Maximale Dateigroesse",
maxBatchSize: "Maximale Stapelgroesse",
concurrentJobs: "Gleichzeitige Auftraege",
workerThreads: "Arbeitsthreads",
maxPipelineSteps: "Maximale Pipeline-Schritte",
processingTimeout: "Verarbeitungs-Timeout",
rateLimitPerMin: "Ratenlimit (Anfragen/Min.)",
unlimited: "Unbegrenzt",
auto: "Automatisch",
envOverride: "Durch Umgebungsvariable gesetzt",
maxCanvasPixels: "Maximale Leinwandpixel",
maxSvgSize: "Maximale SVG-Groesse",
maxSplitGrid: "Maximales Aufteilungsraster",
maxPdfPages: "Maximale PDF-Seiten",
sessionDuration: "Sitzungsdauer",
supportBundleButton: "Download Support Bundle",
supportBundleDescription:
"Download a diagnostic zip with redacted config, logs, and job data for troubleshooting.",
supportBundleFailed: "Failed to download support bundle.",
},
security: {
heading: "Sicherheit",
description: "Passwort- und Authentifizierungseinstellungen.",
changePasswordHeading: "Passwort aendern",
currentPasswordPlaceholder: "Aktuelles Passwort",
newPasswordPlaceholder: "Neues Passwort",
confirmPasswordPlaceholder: "Neues Passwort bestaetigen",
passwordsMismatch: "Passwoerter stimmen nicht ueberein",
passwordTooShort: "Passwort muss mindestens 4 Zeichen lang sein",
changeSuccess: "Passwort erfolgreich geaendert",
changeFailed: "Passwort konnte nicht geaendert werden",
currentPasswordIncorrect: "Aktuelles Passwort ist falsch",
changePasswordButton: "Passwort aendern",
loginAttemptLimitNote:
"Anmeldeversuchslimits koennen in den Systemeinstellungen konfiguriert werden.",
},
people: {
heading: "Personen",
description: "Arbeitsbereich-Mitglieder und deren Berechtigungen verwalten",
userCount: "{count} Benutzer",
userCountPlural: "{count} Benutzer",
searchPlaceholder: "Mitglieder suchen...",
addMembersButton: "Mitglieder hinzufuegen",
newMemberHeading: "Neues Mitglied",
usernamePlaceholder: "Benutzername",
passwordPlaceholder: "Passwort",
roleUserOption: "Benutzer",
roleEditorOption: "Redakteur",
roleAdminOption: "Administrator",
roleUserDescription: "Grundlegender Werkzeugzugriff",
roleEditorDescription: "Alle Dateien & Pipelines",
roleAdminDescription: "Vollzugriff",
noDescription: "Keine Beschreibung",
defaultTeamOption: "Standard",
createButton: "Erstellen",
cancelButton: "Abbrechen",
createSuccess: "Benutzer erfolgreich erstellt",
createFailed: "Benutzer konnte nicht erstellt werden",
userLimitReached: "Benutzerlimit erreicht (maximal {max})",
deleteConfirm: 'Benutzer "{username}" loeschen? Dies kann nicht rueckgaengig gemacht werden.',
deleteSuccess: 'Benutzer "{username}" geloescht',
deleteFailed: "Benutzer konnte nicht geloescht werden",
editHeading: "{username} bearbeiten",
updateSuccess: "Benutzer aktualisiert",
updateFailed: "Benutzer konnte nicht aktualisiert werden",
cannotRemoveOwnAdmin: "Sie koennen Ihre eigene Administratorrolle nicht entfernen",
resetPasswordHeading: "Passwort zuruecksetzen fuer {username}",
newPasswordLabel: "Neues Passwort (mind. 8 Zeichen)",
resetPasswordButton: "Passwort zuruecksetzen",
resetPasswordWarning:
"Dadurch werden alle Sitzungen und API-Schluessel dieses Benutzers ungueltig.",
resetSuccess: "Passwort erfolgreich zurueckgesetzt",
resetFailed: "Passwort konnte nicht zurueckgesetzt werden",
tableHeaderUser: "Benutzer",
tableHeaderRole: "Rolle",
tableHeaderTeam: "Team",
noSearchResults: "Keine Mitglieder entsprechen Ihrer Suche.",
noUsersFound: "Keine Benutzer gefunden.",
authBadgeLocalOidc: "Lokal + OIDC",
authBadgeOidc: "OIDC",
editRoleTeamAction: "Rolle / Team bearbeiten",
resetPasswordAction: "Passwort zuruecksetzen",
deleteUserAction: "Benutzer loeschen",
saveButton: "Speichern",
copyPasswordButton: "Passwort kopieren",
passwordCopied: "Kopiert!",
copyPasswordWarning:
"Kopieren Sie dieses Passwort jetzt. Nach dem Erstellen des Benutzers ist es nicht mehr sichtbar.",
},
teams: {
heading: "Teams",
description: "Mitglieder in Teams organisieren fuer bessere Verwaltung.",
createButton: "Neues Team erstellen",
newTeamHeading: "Neues Team",
teamNamePlaceholder: "Teamname",
createSubmitButton: "Erstellen",
cancelButton: "Abbrechen",
createSuccess: "Team erfolgreich erstellt",
createFailed: "Team konnte nicht erstellt werden",
duplicateTeamError: "Ein Team mit diesem Namen existiert bereits",
renameSuccess: "Team umbenannt",
renameFailed: "Team konnte nicht umbenannt werden",
deleteConfirm: 'Team "{name}" loeschen? Mitglieder werden abgemeldet.',
deleteSuccess: 'Team "{name}" geloescht',
deleteFailed: "Team konnte nicht geloescht werden",
cannotDeleteDefault:
"Das Standardteam oder ein Team mit Mitgliedern kann nicht geloescht werden",
tableHeaderTeamName: "Teamname",
tableHeaderMembers: "Mitglieder",
emptyState: "Keine Teams gefunden.",
renameSaveButton: "Speichern",
renameCancelButton: "Abbrechen",
renameAction: "Umbenennen",
deleteAction: "Loeschen",
totalMembers: "Mitglieder gesamt",
nameRequired: "Teamname ist erforderlich",
nameTooLong: "Teamname darf maximal 50 Zeichen lang sein",
duplicateName: "Ein Team mit diesem Namen existiert bereits",
},
roles: {
heading: "Rollen",
description:
"Rollen und deren Berechtigungen verwalten. Integrierte Rollen koennen nicht geaendert werden.",
createButton: "Benutzerdefinierte Rolle erstellen",
newRoleHeading: "Neue Rolle",
roleNamePlaceholder: "Rollenname",
descriptionPlaceholder: "Beschreibung (optional)",
permissionsLabel: "Berechtigungen",
createSubmitButton: "Erstellen",
cancelButton: "Abbrechen",
createSuccess: "Rolle erfolgreich erstellt",
createFailed: "Rolle konnte nicht erstellt werden",
duplicateRoleError: "Eine Rolle mit diesem Namen existiert bereits",
editHeading: "Rolle bearbeiten: {name}",
editSaveButton: "Speichern",
editCancelButton: "Abbrechen",
updateSuccess: "Rolle aktualisiert",
updateFailed: "Rolle konnte nicht aktualisiert werden",
deleteConfirm: 'Rolle "{name}" loeschen? {count} Benutzer muessen neu zugewiesen werden.',
deleteConfirmSimple: 'Rolle "{name}" loeschen?',
deleteSuccess: 'Rolle "{name}" geloescht',
deleteFailed: "Rolle konnte nicht geloescht werden",
emptyState: "Keine Rollen gefunden.",
builtInBadge: "Integriert",
userCountBadge: "{count} Benutzer",
editRoleTitle: "Rolle bearbeiten",
deleteRoleTitle: "Rolle loeschen",
permGroup: {
tools: "Werkzeuge",
files: "Dateien",
apiKeys: "API-Schluessel",
pipelines: "Pipelines",
settings: "Einstellungen",
users: "Benutzer",
teams: "Teams",
system: "System",
},
},
auditLog: {
heading: "Audit-Protokoll",
allActionsFilter: "Alle Aktionen",
emptyState: "Keine Audit-Protokolleintraege.",
tableHeaderTime: "Zeit",
tableHeaderUser: "Benutzer",
tableHeaderAction: "Aktion",
tableHeaderTarget: "Ziel",
paginationInfo: "Seite {page} von {totalPages} ({total} Eintraege)",
previousButton: "Zurueck",
nextButton: "Weiter",
justNow: "Gerade eben",
minutesAgo: "Vor {mins} Min.",
hoursAgo: "Vor {hrs} Std.",
daysAgo: "Vor {days} Tagen",
},
usage: {
heading: "Usage",
description: "Local usage statistics from jobs and file storage.",
periodLabel: "Period",
days7: "7 days",
days30: "30 days",
days90: "90 days",
jobsPerDayHeading: "Jobs per day",
topToolsHeading: "Top tools",
perUserHeading: "Per-user volume",
durationsHeading: "Duration percentiles",
noData: "No data for this period.",
dayColumn: "Day",
totalColumn: "Total",
completedColumn: "Completed",
failedColumn: "Failed",
toolColumn: "Tool",
runsColumn: "Runs",
userColumn: "User",
bytesInColumn: "Bytes in",
poolColumn: "Pool",
p50Column: "p50",
p95Column: "p95",
storageHeading: "Library storage",
storageFiles: "{count} files",
unknownUser: "(unknown)",
},
apiKeys: {
heading: "API-Schluessel",
description: "API-Schluessel fuer programmatischen Zugriff auf SnapOtter verwalten.",
keyNamePlaceholder: "Schluesselname (optional)",
generateButton: "API-Schluessel generieren",
removeScopingLabel: "Berechtigungsbeschraenkung entfernen",
restrictPermissionsLabel: "Berechtigungen einschraenken (optional)",
expiresLabel: "Laeuft ab:",
clearButton: "Leeren",
copyTitle: "Kopieren",
keyWarning: "Bewahren Sie diesen Schluessel sicher auf. Er wird nicht erneut angezeigt.",
existingKeysHeading: "Vorhandene Schluessel",
createdPrefix: "Erstellt {date}",
scopedPrefix: "Beschraenkt:",
expiresPrefix: "Laeuft ab {date}",
deleteKeyTitle: "Schluessel loeschen",
deleteConfirm:
"Diesen API-Schluessel loeschen? Alle Integrationen, die ihn nutzen, werden nicht mehr funktionieren.",
emptyState: "Noch keine API-Schluessel. Generieren Sie einen, um zu beginnen.",
},
tools: {
heading: "Werkzeuge",
description:
"Einzelne Werkzeuge aktivieren oder deaktivieren. Deaktivierte Werkzeuge sind fuer alle Benutzer ausgeblendet.",
restartBanner: "Neustart erforderlich, damit Aenderungen wirksam werden.",
searchPlaceholder: "Werkzeuge suchen...",
noSearchResults: "Keine Werkzeuge entsprechen Ihrer Suche.",
loadFailedError:
"Werkzeugeinstellungen konnten nicht geladen werden. Speichern ist deaktiviert, um Datenverlust zu vermeiden.",
saveButton: "Werkzeugeinstellungen speichern",
disabledCount: "{count} Werkzeug(e) deaktiviert",
},
experimental: {
label: "Experimentelle Werkzeuge aktivieren",
description:
"Werkzeuge anzeigen, die sich noch in der Entwicklung befinden. Diese koennen instabil sein.",
},
fileManagement: {
title: "Dateiverwaltung",
maxAge: "Maximales Dateialter (Stunden)",
maxAgeDescription:
"Wie lange verarbeitete Dateien vor automatischer Bereinigung aufbewahrt werden",
startupCleanup: "Bereinigung beim Start",
startupCleanupDescription: "Alte temporaere Dateien beim Serverstart bereinigen",
},
analytics: {
heading: "Produktanalytik",
description: "Anonyme Nutzungsdaten teilen, um SnapOtter zu verbessern.",
privacyNote: "Ihre Bilder verlassen niemals Ihren Rechner.",
disabledByAdmin: "Produktanalytik wurde vom Serveradministrator deaktiviert.",
enabledLabel: "Analytik aktiviert",
disabledLabel: "Analytik deaktiviert",
learnMore: "Mehr erfahren",
},
aiFeatures: {
title: "AI Features",
description: "Manage AI model bundles for advanced image processing.",
installAll: "Install All",
diskUsage: "Disk usage:",
installed: "Installed",
notInstalled: "Not installed",
queued: "Queued",
install: "Install",
repair: "Repair",
uninstall: "Uninstall",
installing: "Installing...",
importBundle: "Import Bundle",
importDescription: "Upload a .tar.gz bundle archive exported from another installation.",
importButton: "Import from file",
importing: "Importing...",
importSuccess: "Bundle imported successfully.",
importError: "Bundle import failed: {error}",
},
about: {
heading: "Info",
appName: "SnapOtter",
appDescription:
"Eine selbst gehostete, datenschutzorientierte Bildverarbeitungssuite mit 70+ Werkzeugen. Skalieren, komprimieren, konvertieren, mit Wasserzeichen versehen und Bildablaeufe automatisieren, ohne Daten in die Cloud zu senden.",
versionLabel: "Version:",
linksHeading: "Links",
githubLink: "GitHub-Repository",
docsLink: "Dokumentation",
apiRefLink: "API-Referenz (Swagger)",
licenseLabel: "License:",
licenseDescription:
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).",
},
},
auth: {
login: "Anmelden",
logout: "Abmelden",
username: "Benutzername",
password: "Passwort",
loginButton: "Anmelden",
loggingIn: "Anmeldung laeuft...",
invalidCredentials: "Ungueltiger Benutzername oder Passwort",
connectionError: "Verbindungsfehler",
signInWith: "Anmelden mit {provider}",
signInWithSso: "Anmelden mit SSO",
or: "oder",
methodLocal: "Lokal",
methodOidc: "OIDC",
methodBoth: "Lokal + OIDC",
oidcAuthFailed: "Authentifizierung fehlgeschlagen. Bitte versuchen Sie es erneut.",
oidcProviderUnreachable:
"Der Identitaetsanbieter ist nicht erreichbar. Bitte versuchen Sie es spaeter erneut.",
oidcSessionExpired: "Anmeldesitzung abgelaufen. Bitte versuchen Sie es erneut.",
oidcUserNotAuthorized:
"Ihr Konto ist nicht fuer den Zugriff auf diese Anwendung autorisiert. Kontaktieren Sie Ihren Administrator.",
oidcUserLimitReached: "Benutzerlimit erreicht. Kontaktieren Sie Ihren Administrator.",
oidcGenericError: "Authentifizierungsfehler. Bitte versuchen Sie es erneut.",
passwordManagedByProvider:
"Passwortaenderungen werden von Ihrem Identitaetsanbieter verwaltet.",
enterUsername: "Benutzernamen eingeben",
enterPassword: "Passwort eingeben",
heroTitle: "Ihre Bilder. Bleiben Ihre.",
heroSubtitle: "Jedes Bildwerkzeug, das Sie brauchen.",
rotatingPhrases: [
"Keine Registrierung. Keine Konten.",
"Kein Upload in die Cloud. Niemals.",
"100% lokale Verarbeitung.",
"Kostenlos. Fuer immer.",
"Keine Limits. Keine versteckten Grenzen.",
"Funktioniert komplett offline.",
"Unbegrenzte Stapelverarbeitung.",
"70+ Bildwerkzeuge.",
"16 AI-Modelle. Ihre Hardware.",
"Blitzschnell. Basiert auf Sharp.",
"Geeignet fuer abgeschottete Netzwerke.",
"Ein einziger Docker-Container.",
"Open Source. Immer.",
"Jedes Pixel bleibt auf Ihrer Hardware.",
"Ihr Server. Ihre Regeln.",
"Ein einziger docker pull.",
"Die selbst gehostete Alternative.",
"Skalieren, komprimieren, konvertieren. Lokal.",
"Kostenloser Bild-Editor. Ohne Wasserzeichen.",
"Massenbildverarbeitung. Unbegrenzt.",
"Hintergrund offline entfernen.",
"Die selbst gehostete Canva-Alternative.",
"Keine API-Schluessel noetig.",
"DSGVO-konform von Grund auf.",
"Funktioniert ohne Internet.",
],
},
changePassword: {
title: "Passwort aendern",
description:
"Sie muessen ein neues Passwort festlegen, bevor Sie fortfahren koennen. Ihr Passwort muss mindestens 8 Zeichen mit Gross- und Kleinbuchstaben sowie einer Zahl enthalten.",
usernameLabel: "Benutzername",
currentPasswordLabel: "Aktuelles Passwort",
currentPasswordPlaceholder: "Aktuelles Passwort eingeben",
newPasswordLabel: "Neues Passwort",
generateButton: "Sicheres Passwort generieren",
newPasswordPlaceholder: "Mindestens 8 Zeichen",
confirmPasswordLabel: "Neues Passwort bestaetigen",
confirmPasswordPlaceholder: "Neues Passwort wiederholen",
passwordsMismatch: "Passwoerter stimmen nicht ueberein",
failedError: "Passwort konnte nicht geaendert werden",
connectionError: "Verbindungsfehler",
changingButton: "Wird geaendert...",
changeButton: "Passwort aendern",
sidebarTitle: "Fast geschafft",
sidebarDescription:
"Legen Sie ein sicheres Passwort fest, um Ihr Konto zu schuetzen. Dann kann es losgehen.",
},
automate: {
title: "Automatisieren",
invalidPipelineFile: "Keine gueltige SnapOtter-Pipeline-Datei",
newerVersion: "Diese Pipeline wurde mit einer neueren Version von SnapOtter erstellt",
missingName: "Pipeline-Datei hat keinen Namen",
noSteps: "Pipeline-Datei hat keine Schritte",
importFailed: "Import fehlgeschlagen",
couldNotRead: "Pipeline-Datei konnte nicht gelesen werden",
fileCount: "{count} Datei",
fileCountPlural: "{count} Dateien",
importFromLibrary: "Aus Bibliothek importieren",
addButton: "+ Hinzufuegen",
libraryButton: "Bibliothek",
clearButton: "Leeren",
processingFailed: "Verarbeitung fuer diese Datei fehlgeschlagen",
processingMultiple: "{count} Dateien werden verarbeitet...",
processingPipeline: "Pipeline wird verarbeitet...",
processButton: "Verarbeiten",
processButtonMultiple: "Verarbeiten ({count})",
processAllButton: "Alle verarbeiten ({count})",
addTool: "Werkzeug hinzufuegen",
toolPalette: "Werkzeugpalette",
clickToAdd: "Zum Hinzufuegen zur Pipeline klicken",
savedLabel: "Gespeichert",
importButton: "Importieren",
noSavedPipelines: "Keine gespeicherten Pipelines",
stepCount: "({count} Schritt)",
stepCountPlural: "({count} Schritte)",
exportPipeline: "Pipeline exportieren",
deletePipeline: "Pipeline loeschen",
moreCount: "+{count} weitere",
pipelineBuilder: "Pipeline-Builder",
addToolsPrompt: "Fuegen Sie Werkzeuge aus der Palette hinzu, um zu beginnen",
stepsConfigured: "{count} Schritt konfiguriert",
stepsConfiguredPlural: "{count} Schritte konfiguriert",
noFilesLoaded: "Keine Dateien geladen",
downloadZip: "ZIP herunterladen",
saveButton: "Speichern",
pipelineNamePlaceholder: "Pipeline-Name",
descriptionPlaceholder: "Beschreibung",
savingIndicator: "...",
cancelButton: "Abbrechen",
preview: "Vorschau",
previousImage: "Vorheriges Bild",
nextImage: "Naechstes Bild",
imageCounter: "{current} / {total}",
imageArea: "Bildbereich",
templateSocialMedia: "Social Media fertig",
templatePrivacyClean: "Datenschutzbereinigung",
templateWebOptimization: "Weboptimierung",
templateProfilePicture: "Profilbild",
templateWatermarkBatch: "Wasserzeichen-Stapel",
createNew: "Neue Automatisierung erstellen",
savedAutomations: "Gespeicherte Automatisierungen",
templates: "Vorlagen",
addStep: "Schritt hinzufuegen",
removeStep: "Entfernen",
moveUp: "Nach oben",
moveDown: "Nach unten",
savePipeline: "Pipeline speichern",
runPipeline: "Verarbeiten",
pipelineName: "Pipeline-Name",
pipelineDescription: "Beschreibung (optional)",
noStepsPrompt: "Fuegen Sie Schritte hinzu, um Ihre Automatisierung zu erstellen",
noStepsHeading: "No steps yet",
searchToolsPlaceholder: "Search tools...",
step: "Schritt",
},
nav: {
tools: "Werkzeuge",
reader: "Reader",
automate: "Automatisieren",
editor: "Editor",
files: "Dateien",
help: "Hilfe",
settings: "Einstellungen",
grid: "Raster",
},
files: {
myFiles: "My Files",
recentTab: "Recent",
uploadTab: "Upload Files",
fileDetailsAriaLabel: "File Details",
fileDetailsHeading: "File Details",
searchPlaceholder: "Search files...",
selectedCount: "{count} selected",
fileCount: "{count} files",
fileCountSingular: "{count} file",
noFilesFound: "No files found",
selectFilePrompt: "Select a file to view details",
openFile: "Open File",
openInPipeline: "Open in Pipeline",
name: "Name",
format: "Format",
size: "Size",
dimensions: "Dimensions",
version: "Version",
toolsUsed: "Tools Used",
none: "None",
delete: "Delete",
pipeline: "Pipeline",
download: "Download",
},
dropzone: {
unsupportedFileType: "Dieser Dateityp wird von diesem Werkzeug nicht unterstuetzt",
urlFetchFailed: "Bild konnte nicht von URL abgerufen werden",
ariaLabel: "Datei-Ablagezone",
dropPrompt: "Bilder hierher ziehen",
browseOrPaste: "Klicken Sie zum Durchsuchen oder fuegen Sie aus der Zwischenablage ein",
uploadButton: "Hochladen",
defaultFormats: "PNG, JPG, WebP, HEIC, RAW, PSD und 65+ Formate",
orSeparator: "oder",
urlPlaceholder: "Bild-URL einfuegen...",
urlLoadingIndicator: "...",
addUrlButton: "Hinzufuegen",
importMultipleUrls: "Mehrere URLs importieren...",
filesSelected: "{count} Dateien ausgewaehlt",
},
reviewPanel: {
processedResultAlt: "Verarbeitetes Ergebnis",
sizeLabel: "Groesse: {size}",
typeLabel: "Typ: {type}",
processedLabel: "Verarbeitet: {time}",
undoButton: "Rueckgaengig",
downloadButton: "Herunterladen",
openInEditor: "Im Editor oeffnen",
reviewHeading: "Ueberpruefen",
continueEditing: "Weiter bearbeiten",
},
features: {
notEnabledTitle: "Funktion nicht aktiviert",
notEnabledDescription:
"Diese Funktion ist nicht aktiviert. Bitten Sie Ihren Administrator, sie in den Einstellungen zu aktivieren.",
requiresDownload: "Diese Funktion erfordert einen zusaetzlichen Download (~{size})",
retryButton: "Erneut versuchen",
queued: "Zur Installation vorgemerkt...",
enableButton: "{name} aktivieren",
repairRequired: "Repair Required",
repairDescription: "Some model files are missing or corrupted. Repair will re-download them.",
repairButton: "Repair {name}",
lessThanMinute: "Weniger als eine Minute verbleibend",
oneMinuteLeft: "~1 Minute verbleibend",
minutesLeft: "~{mins} Minuten verbleibend",
progressMessages: [
"Fast geschafft... wahrscheinlich...",
"Gute Dinge brauchen ihre Zeit...",
"Immer noch schneller als Farbe beim Trocknen zuzusehen...",
"Ihre Geduld ist wirklich bewundernswert...",
"Arbeitet haerter als es aussieht...",
"Jetzt kommt der spannende Teil, versprochen...",
"Wichtige Dinge passieren im Hintergrund...",
"Wenn Sie das hier lesen, funktioniert es...",
"Etwas Grossartiges wird vorbereitet...",
"Jede Sekunde wert, kleiner Finger drauf...",
"Die Spannung gehoert zum Erlebnis...",
"Ihrem Computer werden neue Tricks beigebracht...",
"Ihre Superkraefte werden eingerichtet...",
"Ihre Bilder werden es Ihnen spaeter danken...",
"Laden... aber mit Stil...",
"Perfekter Moment fuer einen Kaffee...",
"Rom wurde auch nicht an einem Tag erbaut...",
"Psst... hier arbeitet ein Genie...",
"Ihre Fotos werden neidisch auf das, was kommt...",
"Das Dreamteam wird zusammengestellt...",
"Grossartiges wird ausgepackt...",
"Fast fertig mit dem Nachdenken ueber den Anfang... kleiner Scherz...",
"Plottwist: Hier passiert tatsaechlich etwas...",
"Die kreativen Motoren werden warmgelaufen...",
"Fantasie wird geladen...",
"Kein Bildschirmschoner, versprochen...",
"Grosse Kunst braucht Zeit zum Installieren...",
"Ihr zukuenftiges Ich wird es Ihnen danken...",
"Ziemlich schlaue Dateien werden geholt...",
"Durchhalten, das Beste kommt noch...",
],
},
help: {
heading: "Hilfe",
gettingStarted: {
heading: "Erste Schritte",
description:
"Waehlen Sie ein Werkzeug aus der Seitenleiste oder suchen Sie nach einem. Laden Sie ein Bild hoch, indem Sie es auf die Seite ziehen oder den Upload-Bereich anklicken. Passen Sie die Einstellungen an und laden Sie Ihr Ergebnis herunter.",
},
keyboardShortcuts: {
heading: "Tastenkombinationen",
focusSearchBar: "Suchleiste fokussieren",
goToTools: "Zu Werkzeugen",
toggleTheme: "Farbschema wechseln",
goToResize: "Zu Groesse aendern",
goToCrop: "Zu Zuschneiden",
goToCompress: "Zu Komprimieren",
goToConvert: "Zu Konvertieren",
goToRemoveBackground: "Zu Hintergrund entfernen",
goToWatermarkText: "Zu Text-Wasserzeichen",
goToStripMetadata: "Zu Metadaten entfernen",
goToImageInfo: "Zu Bildinformationen",
},
resources: {
heading: "Ressourcen",
githubLink: "GitHub-Repository",
reportIssueLink: "Problem melden",
docsLink: "Dokumentation",
apiRefLink: "API-Referenz (Swagger)",
},
versionLabel: "SnapOtter v{version}",
},
errors: {
generic: "Ein Fehler ist aufgetreten",
offline: "Sie sind offline",
reconnecting: "Verbindung zum Server wird wiederhergestellt...",
connected: "Verbunden",
processingFailed: "Verarbeitung fuer diese Datei fehlgeschlagen",
timeout:
"Zeitlimit ueberschritten. Der Server ist moeglicherweise ueberlastet. Versuchen Sie es erneut.",
networkError: "Netzwerkfehler. Ueberpruefen Sie Ihre Verbindung.",
invalidCredentials: "Ungueltiger Benutzername oder Passwort",
connectionError: "Verbindungsfehler",
},
analytics: {
consentTitle: "Helfen Sie, SnapOtter zu verbessern",
consentDescription:
"Anonyme Nutzungsstatistiken helfen uns, Fehler zu beheben und die Werkzeuge zu entwickeln, die Sie wirklich brauchen. Ihre Bilder und Dateien bleiben auf Ihrem Rechner.",
consentChangeable: "Sie koennen dies jederzeit in den Einstellungen deaktivieren.",
acceptButton: "Klar, einverstanden",
declineButton: "Jetzt nicht",
settingsTitle: "Produktanalytik",
settingsDescription: "Anonyme Nutzungsdaten teilen, um SnapOtter zu verbessern.",
settingsPrivacy: "Ihre Bilder verlassen niemals Ihren Rechner.",
settingsDisabledByAdmin: "Produktanalytik wurde vom Serveradministrator deaktiviert.",
learnMore: "Mehr erfahren",
},
sidebar: {
tools: "Werkzeuge",
grid: "Raster",
automate: "Automatisieren",
editor: "Editor",
files: "Dateien",
help: "Hilfe",
settings: "Einstellungen",
},
toolCard: {
addToFavourites: "Zu Favoriten hinzufuegen",
},
appLayout: {
mobileNavTools: "Werkzeuge",
mobileNavAutomate: "Automatisieren",
mobileNavEditor: "Editor",
mobileNavFiles: "Dateien",
mobileNavSettings: "Einstellungen",
},
a11y: {
skipToContent: "Skip to main content",
openSidebar: "Open sidebar",
closeSidebar: "Close sidebar",
closeSettings: "Close settings",
closeHelp: "Close help",
closeDialog: "Close dialog",
zoomIn: "Zoom in",
zoomOut: "Zoom out",
fitToView: "Fit to view",
actualSize: "Actual size",
previousImage: "Previous image",
nextImage: "Next image",
imageArea: "Image area",
imageViewer: "Image viewer",
fileDropZone: "File drop zone",
imageDropZone: "Image drop zone",
beforeAfterSlider: "Before/after comparison slider",
imageControls: "Image controls",
zoomControls: "Zoom controls",
dragToReorder: "Drag to reorder",
whiteBackground: "White background",
blackBackground: "Black background",
expandPanel: "Expand panel",
collapsePanel: "Collapse panel",
swapDimensions: "Swap dimensions",
applyCrop: "Apply crop",
cancelCrop: "Cancel crop",
fontFamily: "Font family",
textColor: "Text color",
flipHorizontal: "Flip horizontal",
flipVertical: "Flip vertical",
hexColorValue: "Hex color value",
backgroundColor: "Background color",
foregroundColor: "Foreground color",
swapColors: "Swap foreground and background colors",
resetColors: "Reset to default black and white",
foregroundHex: "Foreground color hex value",
undo: "Undo",
redo: "Redo",
layers: "Layers",
addLayer: "Add layer",
deleteLayer: "Delete layer",
cancelOperation: "Cancel operation",
fill: "Fill",
fileDetails: "File details",
language: "Language",
selected: "Selected",
deleteKey: "Delete key",
editRole: "Edit role",
deleteRole: "Delete role",
notInstalled: "Not installed",
queued: "Queued for install",
installing: "Installing",
imageNOfTotal: "Image {n} of {total}",
processingComplete: "Image processed successfully",
processingFailed: "Processing failed",
settingsDialog: "Settings",
helpDialog: "Help",
navigationMenu: "Navigation",
},
} as const;