Files
SnapOtter/packages/shared/src/i18n/nl.ts
T
SnapOtter 7daaa11e7d refactor(shared): modality-scoped tool categories, dissolve ai category
Replace the flat 12-category structure with 27 modality-scoped
sub-categories. The cross-modality "ai" category is dissolved: each
AI tool moves into its natural modality's sub-category (e.g.
remove-background -> image/enhance, auto-subtitles -> video/subtitles,
ocr -> documents/convert, transcribe-audio -> audio/convert).

New category hierarchy:
- Image (8): essentials, adjustments, enhance, watermark, layout,
  utilities, optimization, format
- Video (5): video-edit, video-convert, video-effects,
  video-subtitles, video-metadata
- Audio (4): audio-edit, audio-convert, audio-effects, audio-metadata
- Documents (5): pdf-organize, pdf-edit, pdf-security, pdf-optimize,
  doc-convert
- Data (2): data, archives

No tool IDs, routes, or backend behavior changed. Category labels
updated across all 21 locales.
2026-06-13 14:45:06 +08:00

3361 lines
113 KiB
TypeScript

import type { TranslationKeys } from "./en.js";
export const nl: TranslationKeys = {
common: {
upload: "Upload van computer",
process: "Verwerken",
download: "Downloaden",
cancel: "Annuleren",
save: "Opslaan",
delete: "Verwijderen",
settings: "Instellingen",
search: "Gereedschap zoeken...",
dropFiles: "Sleep bestanden hierheen of klik op de uploadknop",
loading: "Laden...",
error: "Er is een fout opgetreden",
confirm: "Bevestigen",
close: "Sluiten",
back: "Terug",
next: "Volgende",
clear: "Wissen",
copy: "Kopieren",
copied: "Gekopieerd!",
noResults: "Geen resultaten gevonden",
showLess: "Minder tonen",
showMore: "{count} meer tonen",
experimental: "Experimenteel",
enabled: "Ingeschakeld",
disabled: "Uitgeschakeld",
rename: "Hernoemen",
edit: "Bewerken",
actions: "Acties",
create: "Aanmaken",
or: "of",
goHome: "Naar startpagina",
somethingWentWrong: "Er ging iets mis",
unexpectedError: "Er is een onverwachte fout opgetreden.",
retry: "Opnieuw proberen",
privacyPolicy: "Privacybeleid",
pageNotFound: "Page not found",
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
},
categories: {
essentials: "Basistools",
adjustments: "Aanpassingen",
enhance: "Enhance & AI",
watermark: "Watermerk & Overlay",
layout: "Lay-out & Compositie",
utilities: "Hulptools",
optimization: "Optimalisatie",
format: "Formaat & Conversie",
"video-edit": "Video",
"video-convert": "Convert",
"video-effects": "Effects & Compose",
"video-subtitles": "Subtitles",
"video-metadata": "Metadata",
"audio-edit": "Edit",
"audio-convert": "Convert",
"audio-effects": "Effects & Compose",
"audio-metadata": "Metadata",
"pdf-organize": "Organize",
"pdf-edit": "Edit & Annotate",
"pdf-security": "Security",
"pdf-optimize": "Optimize",
"doc-convert": "Convert",
data: "Data Files",
archives: "Archives",
},
modalities: {
image: "Image",
video: "Video",
audio: "Audio",
documentsAndFiles: "Documents & Files",
},
tools: {
resize: {
name: "Formaat wijzigen",
description: "Formaat wijzigen op pixels, percentage of social media-presets",
},
crop: {
name: "Bijsnijden",
description: "Vrij bijsnijden, beeldverhouding-presets, vormsnit",
},
rotate: {
name: "Draaien & Spiegelen",
description: "Afbeeldingen draaien, spiegelen en rechtzetten",
},
convert: {
name: "Converteren",
description: "Tussen afbeeldingsformaten converteren",
},
compress: {
name: "Comprimeren",
description: "Bestandsgrootte verkleinen op kwaliteit of doelgrootte",
},
"optimize-for-web": {
name: "Optimaliseren voor web",
description:
"Afbeeldingen optimaliseren voor web met formaatconversie, kwaliteitsregeling en live preview",
},
"strip-metadata": {
name: "Metadata verwijderen",
description: "EXIF-, GPS- en camera-info verwijderen",
},
"edit-metadata": {
name: "Metadata bewerken",
description: "EXIF, IPTC, XMP, GPS, trefwoorden en datums bewerken",
},
"bulk-rename": {
name: "Bulk hernoemen",
description: "Meerdere bestanden hernoemen met patronen",
},
"image-to-pdf": {
name: "Afbeelding naar PDF",
description: "Afbeeldingen samenvoegen tot een PDF-document",
},
"pdf-to-image": {
name: "PDF naar afbeelding",
description: "PDF-pagina's converteren naar afbeeldingen",
},
favicon: {
name: "Favicon-generator",
description: "Alle favicon- en app-pictogramformaten genereren",
},
"adjust-colors": {
name: "Kleuren aanpassen",
description:
"Helderheid, contrast, belichting, verzadiging, temperatuur, scherpte en effecten",
},
sharpening: {
name: "Verscherpen",
description: "Adaptief, onscherpmasker en high-pass verscherpen met presets",
},
"replace-color": {
name: "Kleur vervangen & inverteren",
description: "Specifieke kleuren vervangen of inverteren",
},
"color-blindness": {
name: "Kleurenblindheid-simulatie",
description:
"Simuleer hoe afbeeldingen eruitzien bij verschillende vormen van kleurenblindheid",
},
"remove-background": {
name: "Achtergrond verwijderen",
description: "AI-aangedreven achtergrondverwijdering",
},
upscale: {
name: "Afbeelding opschalen",
description: "AI-superresolutie verbetering",
},
"erase-object": {
name: "Object verwijderen",
description: "Ongewenste objecten verwijderen met AI",
},
ocr: {
name: "OCR / Tekstherkenning",
description: "Tekst uit afbeeldingen halen met AI-nauwkeurigheid",
},
"ocr-pdf": {
name: "PDF OCR",
description: "Tekst uit PDF-documenten extraheren met AI-gestuurde OCR",
},
"blur-faces": {
name: "Gezichten / PII vervagen",
description: "Gezichten en gevoelige info automatisch detecteren en vervagen",
},
"enhance-faces": {
name: "Gezichtsverbetering",
description: "Gezichten herstellen en verbeteren met AI",
},
"smart-crop": {
name: "Slim bijsnijden",
description: "Slim bijsnijden op onderwerp, gezicht of randen",
},
"image-enhancement": {
name: "Beeldverbetering",
description:
"Eenkliksverbetering met slimme belichting, contrast, kleur en scherpte-correctie",
},
"noise-removal": {
name: "Ruisverwijdering",
description: "AI-aangedreven ruis- en korrelverwijdering",
},
"red-eye-removal": {
name: "Rode-ogenverwijdering",
description: "AI-aangedreven rode-ogendetectie en -correctie voor flitsfoto's",
},
"restore-photo": {
name: "Foto restaureren",
description: "Krassen, scheuren en schade op oude foto's repareren met AI",
},
"content-aware-resize": {
name: "Inhoudsbewust schalen",
description: "Afbeeldingen intelligent schalen met behoud van belangrijke inhoud",
},
"ai-canvas-expand": {
name: "AI-canvas uitbreiden",
description: "Canvas uitbreiden met AI-aangedreven opvulling",
},
colorize: {
name: "AI-inkleuren",
description: "Zwart-witfoto's omzetten naar kleur met AI-deep-learning-modellen",
},
"passport-photo": {
name: "Pasfoto",
description:
"Officieel geldige pas-, visum- en ID-foto's maken met automatische gezichtsdetectie",
},
"transcribe-audio": {
name: "Audio transcriberen",
description: "Spraak naar tekst omzetten met AI-aangedreven transcriptie",
},
"auto-subtitles": {
name: "Automatische ondertiteling",
description: "Ondertitelingsbestanden genereren uit video-audiotracks",
},
"transparency-fixer": {
name: "PNG-transparantie repareren",
description: "Nep-transparante PNGs met een klik repareren",
},
"background-replace": {
name: "Achtergrond vervangen",
description: "Afbeeldingsachtergrond vervangen door een effen kleur",
},
"blur-background": {
name: "Achtergrond vervagen",
description: "Achtergrond vervagen terwijl het onderwerp scherp blijft",
},
"watermark-text": {
name: "Tekst-watermerk",
description: "Tekst als watermerk toevoegen",
},
"watermark-image": {
name: "Afbeelding-watermerk",
description: "Logo als watermerk plaatsen",
},
"text-overlay": {
name: "Tekstoverlay",
description: "Opgemaakte tekst op afbeeldingen plaatsen",
},
compose: {
name: "Beeldcompositie",
description: "Afbeeldingen stapelen met positie en dekking",
},
"meme-generator": {
name: "Meme-generator",
description:
"Maak memes met populaire templates of je eigen afbeeldingen. Klassieke Impact-stijl tekst met aanpasbare lettertypen, kleuren en positionering.",
},
info: {
name: "Beeldinformatie",
description: "Alle metadata en beeldeigenschappen bekijken",
},
compare: {
name: "Beeldvergelijking",
description: "Twee afbeeldingen naast elkaar vergelijken",
},
"find-duplicates": {
name: "Duplicaten vinden",
description: "Dubbele en bijna-identieke afbeeldingen detecteren",
},
"color-palette": {
name: "Kleurenpalet",
description: "Dominante kleuren uit afbeelding halen",
},
"qr-generate": {
name: "QR-code generator",
description: "QR-codes maken met aangepaste kleuren, patronen en logo's",
},
"html-to-image": {
name: "HTML to Image",
description: "Capture webpages as high-quality images",
},
"barcode-read": {
name: "Barcodelezer",
description: "Afbeeldingen scannen op QR-codes, barcodes en 2D-codes",
},
collage: {
name: "Collage / Raster",
description: "Afbeeldingen samenvoegen in rastercollages met 25+ templates",
},
stitch: {
name: "Samenvoegen / Combineren",
description: "Afbeeldingen naast elkaar, gestapeld of in een raster samenvoegen",
},
split: {
name: "Afbeelding splitsen",
description: "Afbeeldingen opsplitsen in rastertegels of op pixelgrootte met live preview",
},
border: {
name: "Rand & Kader",
description: "Randen, opvulling, afgeronde hoeken en schaduwen toevoegen met eenklik-presets",
},
beautify: {
name: "Screenshot verfraaien",
description:
"Achtergrondverlopen, apparaatframes, schaduwen en social media-formaten voor screenshots",
},
"circle-crop": {
name: "Circle Crop",
description: "Crop image to a centered circle with transparent corners",
},
duotone: {
name: "Duotone",
description: "Apply a two-color duotone effect with custom shadow and highlight colors",
},
"image-pad": {
name: "Image Pad",
description: "Pad image to a target aspect ratio with a solid color background",
},
pixelate: {
name: "Pixelate",
description: "Apply a pixelation effect to the full image or a specific region",
},
vignette: {
name: "Vignette",
description: "Add a vignette effect with adjustable strength and color",
},
"gif-webp": {
name: "GIF/WebP Converter",
description: "Convert animated GIF to WebP and vice versa, preserving all frames",
},
histogram: {
name: "Histogram",
description: "Generate an RGB histogram chart from an image",
},
"lqip-placeholder": {
name: "LQIP Placeholder",
description: "Generate a tiny low-quality image placeholder with base64 data URI",
},
"sprite-sheet": {
name: "Sprite Sheet",
description: "Combine multiple images into a single sprite sheet grid",
},
"svg-to-raster": {
name: "SVG naar raster",
description:
"SVG converteren naar PNG, JPEG, WebP, AVIF, TIFF, GIF of HEIF op aangepaste schaal en DPI",
},
vectorize: {
name: "Afbeelding naar SVG",
description: "Afbeeldingen converteren naar schaalbare vectorafbeeldingen",
},
"gif-tools": {
name: "GIF-tools",
description:
"Geanimeerde GIFs schalen, optimaliseren, snelheid wijzigen, omkeren, frames extraheren en draaien",
},
"image-to-base64": {
name: "Afbeelding naar Base64",
description: "Afbeeldingen converteren naar Base64-strings voor gebruik in HTML, CSS en meer",
},
"barcode-generate": {
name: "Barcode Generator",
description: "Generate barcodes in Code 128, EAN-13, UPC-A, Code 39, ITF-14, and Data Matrix",
},
"chart-maker": {
name: "Chart Maker",
description: "Create bar, line, or pie charts from CSV or JSON data",
},
"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",
},
"resize-video": {
name: "Resize Video",
description: "Scale a video to a new resolution or preset size",
},
"crop-video": {
name: "Crop Video",
description: "Crop a region out of a video",
},
"rotate-video": {
name: "Rotate Video",
description: "Rotate or flip a video",
},
"change-fps": {
name: "Change FPS",
description: "Change the frame rate of a video",
},
"video-color": {
name: "Video Color",
description: "Adjust brightness, contrast, saturation, and gamma",
},
"video-speed": {
name: "Video Speed",
description: "Speed up or slow down a video",
},
"reverse-video": {
name: "Reverse Video",
description: "Play a video clip backwards",
},
"video-loudnorm": {
name: "Normalize Audio",
description: "Normalize video audio volume to broadcast standard",
},
"aspect-pad": {
name: "Aspect Pad",
description: "Add solid-color bars to fit a target aspect ratio",
},
"blur-pad": {
name: "Blur Pad",
description: "Fill bars with a blurred copy of the video",
},
"watermark-video": {
name: "Watermark Video",
description: "Burn a text watermark onto video frames",
},
"stabilize-video": {
name: "Stabilize Video",
description: "Reduce camera shake with two-pass stabilization",
},
"gif-to-video": {
name: "GIF to Video",
description: "Convert an animated GIF into an MP4 or WebM video",
},
"video-to-webp": {
name: "Video to WebP",
description: "Convert a video clip into an animated WebP image",
},
"video-to-frames": {
name: "Video to Frames",
description: "Extract frames from a video as a ZIP of images",
},
"merge-videos": {
name: "Merge Videos",
description: "Join multiple video clips into one file",
},
"replace-audio": {
name: "Replace Audio",
description: "Swap the audio track of a video with another file",
},
"burn-subtitles": {
name: "Burn Subtitles",
description: "Permanently render subtitles onto video frames",
},
"embed-subtitles": {
name: "Embed Subtitles",
description: "Mux a subtitle track into the video container",
},
"extract-subtitles": {
name: "Extract Subtitles",
description: "Pull the subtitle track out of a video as an SRT file",
},
"images-to-video": {
name: "Images to Video",
description: "Turn a set of images into a slideshow video",
},
"video-metadata": {
name: "Clean Video Metadata",
description: "Strip metadata from a video and report what was found",
},
"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",
},
"volume-adjust": {
name: "Volume Adjust",
description: "Increase or decrease audio volume by a fixed gain",
},
"normalize-audio": {
name: "Normalize Audio",
description: "Even out loudness to broadcast standard levels",
},
"fade-audio": {
name: "Fade Audio",
description: "Add fade-in and fade-out effects to audio",
},
"reverse-audio": {
name: "Reverse Audio",
description: "Play audio backwards",
},
"audio-speed": {
name: "Audio Speed",
description: "Speed up or slow down audio playback",
},
"pitch-shift": {
name: "Pitch Shift",
description: "Raise or lower pitch by semitones without changing speed",
},
"audio-channels": {
name: "Audio Channels",
description: "Convert between mono, stereo, or swap left and right channels",
},
"silence-removal": {
name: "Silence Removal",
description: "Strip silent sections from audio",
},
"noise-reduction": {
name: "Noise Reduction",
description: "Reduce background noise with FFT-based denoising",
},
"merge-audio": {
name: "Merge Audio",
description: "Combine multiple audio files into one",
},
"split-audio": {
name: "Split Audio",
description: "Split audio by time, equal parts, or silence detection",
},
"ringtone-maker": {
name: "Ringtone Maker",
description: "Create a ringtone clip from any audio file",
},
"waveform-image": {
name: "Waveform Image",
description: "Generate a waveform visualization as a PNG image",
},
"audio-metadata": {
name: "Audio Metadata",
description: "View, edit, or strip audio tags (ID3)",
},
"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",
},
"convert-document": {
name: "Convert Document",
description: "Convert between Word, OpenDocument, RTF, and plain text formats",
},
"convert-presentation": {
name: "Convert Presentation",
description: "Convert between PowerPoint and OpenDocument presentation formats",
},
"convert-spreadsheet": {
name: "Convert Spreadsheet",
description:
"Convert between Excel, OpenDocument, and CSV formats. Multi-sheet workbooks export the first sheet to CSV.",
},
"excel-to-pdf": {
name: "Excel to PDF",
description: "Convert spreadsheets to PDF. Wide sheets may paginate across multiple pages.",
},
"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",
},
"powerpoint-to-pdf": {
name: "PowerPoint to PDF",
description: "Convert presentations to PDF",
},
"html-to-pdf": {
name: "HTML to PDF",
description: "Convert an HTML file to PDF. Remote resources are disabled for privacy.",
},
"markdown-to-docx": {
name: "Markdown to Word",
description: "Convert a Markdown file to a Word document (DOCX)",
},
"markdown-to-html": {
name: "Markdown to HTML",
description:
"Convert a Markdown file to a standalone HTML page. Remote images in the source are left as-is in the output.",
},
"markdown-to-pdf": {
name: "Markdown to PDF",
description:
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy.",
},
"epub-convert": {
name: "Convert EPUB",
description:
"Convert an EPUB to PDF, DOCX, HTML, or Markdown. Remote resources inside the book are not fetched.",
},
"to-epub": {
name: "Convert to EPUB",
description: "Convert Word, Markdown, HTML, or plain text files to EPUB",
},
"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",
},
"merge-csvs": {
name: "Merge CSVs",
description: "Combine multiple CSV or TSV files with matching columns into one",
},
"yaml-json": {
name: "YAML / JSON",
description: "Convert between YAML and JSON, both directions",
},
"xml-to-csv": {
name: "XML to CSV",
description: "Extract repeating elements from XML into a CSV table",
},
"create-zip": {
name: "Create ZIP",
description: "Bundle multiple files into a single ZIP archive",
},
"extract-zip": {
name: "Extract ZIP",
description:
"Safely extract files from a ZIP archive with bomb protection. Single-file archives return the file directly.",
},
pipeline: {
name: "Pipeline-builder",
description: "Meerdere tools koppelen tot een workflow",
},
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: "Compressiemodus",
targetSize: "Doelgrootte",
quality: "Kwaliteit",
smallestFile: "Kleinste bestand",
bestQuality: "Beste kwaliteit",
submit: "Comprimeren",
submitBatch: "Comprimeren ({count} bestanden)",
progressLabel: "Comprimeren",
original: "Origineel: {size} KB",
processed: "Verwerkt: {size} KB",
saved: "Bespaard: {percent}%",
},
resize: {
customSize: "Aangepast formaat",
scale: "Schaal",
presets: "Presets",
contentAware: "Inhoudsbewust",
widthPx: "Breedte (px)",
heightPx: "Hoogte (px)",
fitMode: "Pasmodus",
cropToFit: "Bijsnijden",
fitInside: "Inpassen",
stretch: "Uitrekken",
limitToOriginalSize: "Beperken tot origineel formaat",
limitToOriginalSizeHint:
"Als je afbeelding al kleiner is dan het doel, blijft deze ongewijzigd in plaats van opgeschaald",
scalePercent: "Schaal (%)",
resizeToSquare: "Vierkant maken",
protectFaces: "Gezichten beschermen",
smoothing: "Vloeiendheid",
edgeSensitivity: "Randgevoeligheid",
submit: "Formaat wijzigen",
submitBatch: "Formaat wijzigen ({count} bestanden)",
progressLabel: "Formaat wijzigen",
},
crop: {
aspectRatio: "Beeldverhouding",
custom: "Aangepast",
positionAndSize: "Positie & Formaat",
ruleOfThirds: "Derdenregel",
leftOffsetPx: "Linker offset (px)",
topOffsetPx: "Bovenste offset (px)",
submit: "Bijsnijden",
submitBatch: "Bijsnijden ({count} bestanden)",
progressLabel: "Bijsnijden",
},
rotate: {
rotate: "Draaien",
angle: "Hoek",
straighten: "Rechtzetten",
flip: "Spiegelen",
horizontal: "Horizontaal",
vertical: "Verticaal",
resetAllChanges: "Alle wijzigingen resetten",
submit: "Toepassen",
submitBatch: "Toepassen ({count} bestanden)",
progressLabel: "Toepassen",
},
convert: {
targetFormat: "Doelformaat",
sourceFormat: "Bronformaat",
quality: "Kwaliteit",
submit: "Converteren",
submitBatch: "Converteren ({count} bestanden)",
progressLabel: "Converteren",
},
"optimize-for-web": {
outputFormat: "Uitvoerformaat",
quality: "Kwaliteit",
smallestFile: "Kleinste bestand",
bestQuality: "Beste kwaliteit",
maxDimensions: "Maximale afmetingen",
maxWidth: "Max breedte",
maxHeight: "Max hoogte",
stripMetadata: "Metadata verwijderen",
sizeComparison: "Groottevergelijking",
optimized: "Geoptimaliseerd:",
smaller: "{percent}% kleiner",
larger: "{percent}% groter",
submit: "Verwerken & Downloaden",
submitBatch: "Verwerken & Downloaden ({count} bestanden)",
progressLabel: "Optimaliseren",
},
"strip-metadata": {
currentMetadata: "Huidige metadata",
readingMetadata: "Metadata lezen...",
noMetadataFound: "Geen metadata gevonden in deze afbeelding.",
removeAllMetadata: "Alle metadata verwijderen",
selectSpecific: "Of selecteer specifieke metadata:",
stripExif: "EXIF verwijderen (camera-info, datum, belichting)",
stripGps: "GPS verwijderen (locatiedata)",
stripIcc: "ICC verwijderen (kleurprofiel)",
stripXmp: "XMP verwijderen (uitgebreide metadata)",
locationFound: "locatie gevonden",
locationWarning:
"Deze afbeelding bevat je precieze locatie. Overweeg GPS-data te verwijderen voor het delen.",
metadataSections: "{count} metadata-sectie gevonden",
metadataSectionsPlural: "{count} metadata-secties gevonden",
metadataRemoved: "Metadata verwijderd: {size} KB",
submit: "Metadata verwijderen",
progressLabel: "Metadata verwijderen",
},
"edit-metadata": {
readingMetadata: "Metadata lezen...",
couldNotReadMetadata: "Metadata kon niet gelezen worden. Velden starten leeg.",
basicInfo: "Basisinformatie",
description: "Beschrijving",
artist: "Artiest",
copyright: "Copyright",
software: "Software",
iptc: "IPTC",
title: "Titel",
headline: "Koptekst",
city: "Stad",
stateProvince: "Staat/Provincie",
country: "Land",
dateAndTime: "Datum & Tijd",
editDates: "Datums bewerken",
shiftAllDates: "Alle datums verschuiven",
dateModified: "Wijzigingsdatum",
dateTaken: "Opnamedatum",
shiftHint: "Alle datumvelden verschuiven met een offset (handig voor tijdzonecorrecties)",
direction: "Richting",
forward: "+ Vooruit",
backward: "- Achteruit",
hoursMinutes: "Uren:Minuten",
locationGps: "Locatie (GPS)",
locationDataFound: "Locatiedata gevonden",
noGpsData: "Geen GPS-data. Voeg hieronder coordinaten toe.",
latitude: "Breedtegraad",
longitude: "Lengtegraad",
altitudeMeters: "Hoogte (meters)",
removeAllGpsData: "Alle GPS-data verwijderen",
keywords: "Trefwoorden",
addKeywordPlaceholder: "Trefwoord toevoegen en Enter drukken",
addToExisting: "Toevoegen aan bestaande",
replaceAll: "Alles vervangen",
allMetadata: "Alle metadata",
templates: "Templates",
templateNamePlaceholder: "Templatenaam",
uploadPrompt: "Upload een afbeelding om de metadata te bewerken.",
changes: "{count} wijzigingen:",
modified: "{count} gewijzigd",
removed: "{count} verwijderd",
gpsCleared: "GPS gewist",
gpsAdded: "GPS toegevoegd",
datesShifted: "datums verschoven",
submit: "Metadata toepassen",
progressLabel: "Metadata schrijven",
},
"bulk-rename": {
pattern: "Patroon",
patternHint: "Variabelen: {{index}}, {{padded}}, {{original}}",
startIndex: "Startindex",
preview: "Voorbeeld",
andMore: "... en {count} meer",
renaming: "Hernoemen...",
submit: "{count} bestanden hernoemen",
zipDownloaded: "ZIP succesvol gedownload",
},
"image-to-pdf": {
imageCount: "{count} afbeelding wordt geconverteerd naar {mode}",
imageCountPlural: "{count} afbeeldingen worden geconverteerd naar {mode}",
singlePdfMode: "een enkele PDF, een afbeelding per pagina",
separatePdfMode: "aparte PDFs, een per afbeelding",
combineAllImages: "Alle afbeeldingen samenvoegen in een PDF",
pageSize: "Paginaformaat",
orientation: "Orientatie",
portrait: "Staand",
landscape: "Liggend",
margin: "Marge",
targetSizeLabel: "Doelbestandsgrootte (optioneel)",
targetSizePlaceholder: "bijv. 2",
targetSizeHint: "Leeg laten voor maximale kwaliteit",
targetSizeMet: "Doel bereikt",
targetSizeNotMet: "Doel niet bereikt. Bestand gecomprimeerd op minimale kwaliteit.",
targetSizeTooSmall: "Doelgrootte moet minimaal 50KB zijn",
jpegQualityLabel: "Gebruikte JPEG-kwaliteit",
noImage: "Geen afbeelding",
submitCollate: "PDF aanmaken ({count} pagina's)",
submitSeparate: "{count} PDFs aanmaken",
downloadPdf: "PDF downloaden",
downloadZip: "ZIP downloaden",
progressLabel: "PDF aanmaken",
uploadingImages: "Afbeeldingen uploaden...",
processingPages: "{count} pagina's verwerken...",
},
"pdf-to-image": {
dropPdf: "Sleep een PDF hierheen of klik om te selecteren",
readingPdf: "PDF lezen...",
pageCount: "{count} pagina",
pageCountPlural: "{count} pagina's",
outputFormat: "Uitvoerformaat",
quality: "Kwaliteit",
resolutionDpi: "Resolutie (DPI)",
dpiScreen: "Scherm",
dpiStandard: "Standaard",
dpiPrint: "Print",
dpiHighQuality: "Hoge kwaliteit",
colorMode: "Kleurmodus",
colorModeColor: "Kleur",
colorModeGrayscale: "Grijstinten",
colorModeBw: "Z/W",
pages: "Pagina's",
allPages: "Alle pagina's",
pagesHint: "bijv. 1-3, 5, 8-10 (document heeft {count} pagina's)",
converting: "Converteren...",
submit: "{count} pagina converteren",
submitPlural: "{count} pagina's converteren",
downloadAllZip: "Alles downloaden (ZIP)",
},
favicon: {
uploadHint:
"Upload vierkante afbeeldingen (aanbevolen 512x512 of groter) om alle favicon- en app-pictogramformaten te genereren.",
multipleHint: "Elk van de {count} afbeeldingen krijgt een eigen map in het ZIP.",
generatedSizes: "Gegenereerde formaten (per afbeelding)",
plusManifest: "+ manifest.json + HTML-snippet",
submit: "Favicons genereren ({count} afbeelding)",
submitPlural: "Favicons genereren ({count} afbeeldingen)",
downloadZip: "Favicons-ZIP downloaden",
progressLabel: "Favicons genereren",
},
"adjust-colors": {
light: "Licht",
brightness: "Helderheid",
contrast: "Contrast",
exposure: "Belichting",
color: "Kleur",
saturation: "Verzadiging",
temperature: "Temperatuur",
temperatureHint: "koel / warm",
tint: "Tint",
tintHint: "groen / magenta",
hue: "Kleurtoon",
detail: "Detail",
sharpness: "Scherpte",
effects: "Effecten",
none: "geen",
grayscale: "grijstinten",
sepia: "sepia",
invert: "inverteren",
colorChannels: "Kleurkanalen",
channelModified: "gewijzigd",
red: "Rood",
green: "Groen",
blue: "Blauw",
resetAll: "Alles resetten",
submit: "Toepassen",
submitBatch: "Toepassen ({count} bestanden)",
progressLabel: "Kleuren aanpassen",
},
sharpening: {
method: "Methode",
adaptive: "Adaptief",
unsharpMask: "Onscherpmasker",
highPass: "High-pass",
presets: "Presets",
textureAmount: "Textuurniveau",
amount: "Sterkte",
strength: "Intensiteit",
noiseReduction: "Ruisonderdrukking",
off: "uit",
lightDenoise: "licht",
mediumDenoise: "gemiddeld",
strongDenoise: "sterk",
advancedControls: "Geavanceerde instellingen",
radius: "Radius",
flatProtection: "Vlakbescherming",
detailThreshold: "Detaildrempel",
haloLimitLight: "Halogrens (Licht)",
haloLimitDark: "Halogrens (Donker)",
threshold: "Drempel",
kernelSize: "Kernelgrootte",
submit: "Verscherpen",
submitBatch: "Verscherpen ({count} bestanden)",
progressLabel: "Verscherpen",
},
"replace-color": {
sourceColor: "Bronkleur (te vervangen)",
targetColor: "Doelkleur (vervanging)",
makeTransparent: "In plaats daarvan transparant maken",
tolerance: "Tolerantie",
exactMatch: "Exacte match",
wideRange: "Breed bereik",
submit: "Kleur vervangen",
submitBatch: "Kleur vervangen ({count} bestanden)",
progressLabel: "Kleur vervangen",
},
"color-blindness": {
simulationType: "Simulatietype",
redGreen: "Rood-Groen",
blueYellow: "Blauw-Geel",
monochromatic: "Monochromatisch",
submit: "Simuleren",
submitBatch: "Simuleren ({count} bestanden)",
progressLabel: "Kleurenblindheid simuleren",
},
"remove-background": {
subject: "Onderwerp",
people: "Mensen",
products: "Producten",
general: "Algemeen",
passportIdPhoto: "Pas- / ID-foto",
quality: "Kwaliteit",
fast: "Snel",
hd: "HD",
max: "Max",
ultra: "Ultra",
background: "Achtergrond",
transparent: "Transparant",
bgColor: "Kleur",
gradient: "Verloop",
image: "Afbeelding",
gradientDirection: "Richting",
chooseBackgroundImage: "Achtergrondafbeelding kiezen",
effectsSection: "Effecten",
effectsActive: "actief",
blurBackground: "Achtergrond vervagen",
intensity: "Intensiteit",
addShadow: "Schaduw toevoegen",
opacity: "Dekking",
outputFormat: "Output Format",
edgeSmoothing: "Edge Smoothing",
edgeSmoothingOff: "Off",
edgeSmoothingLight: "Light",
edgeSmoothingMedium: "Medium",
edgeSmoothingStrong: "Strong",
colorDecontamination: "Color Decontamination",
rendering: "Renderen...",
submit: "Achtergrond verwijderen",
submitBatch: "Achtergrond verwijderen ({count} bestanden)",
progressLabel: "Achtergrond verwijderen",
},
upscale: {
scaleFactor: "Schaalfactor",
quality: "Kwaliteit",
enhanceFaces: "Gezichten verbeteren",
noiseReduction: "Ruisonderdrukking",
noiseReductionHint:
"Vlakt korrel en ruis af. Hogere waarden verwijderen meer ruis maar kunnen details verzachten.",
outputFormat: "Uitvoerformaat",
submit: "Opschalen {scale}x",
submitBatch: "Opschalen {scale}x ({count} bestanden)",
progressLabel: "Afbeelding opschalen",
progressLabelBatch: "{count} afbeeldingen opschalen",
},
"erase-object": {
brushSize: "Penseelgrootte",
fine: "Fijn",
wide: "Breed",
undo: "Ongedaan maken",
clear: "Wissen",
outputFormat: "Uitvoerformaat",
quality: "Kwaliteit",
paintHint:
"Verf over de objecten die je wilt verwijderen. Gebruik Ctrl+Z om ongedaan te maken.",
submit: "Object verwijderen",
submitBatch: "Alles verwijderen ({count})",
progressLabel: "Object verwijderen",
},
ocr: {
quality: "Kwaliteit",
enhanceBeforeScanning: "Verbeteren voor het scannen",
enhanceHint:
"Corrigeert scheefstand, verbetert contrast, verwijdert ruis en schaalt de afbeelding automatisch op voor betere nauwkeurigheid.",
language: "Taal",
autoDetect: "Automatisch detecteren",
extractedText: "Geextraheerde tekst",
noTextDetected: "Geen tekst gedetecteerd in deze afbeelding",
characters: "{count} tekens",
submit: "Tekst extraheren",
submitBatch: "Tekst extraheren ({count} bestanden)",
progressLabel: "Tekst extraheren",
},
"ocr-pdf": {
quality: "Kwaliteit",
language: "Taal",
autoDetect: "Automatisch detecteren",
pages: "Pagina's",
pagesPlaceholder: "all, 1-3, 5",
pagesHint: "Voer paginanummers of bereiken in (bijv. 1-3, 5, 8-10). Max 50 pagina's.",
submit: "Tekst extraheren",
submitBatch: "Tekst extraheren ({count} bestanden)",
progressLabel: "Tekst uit PDF extraheren",
},
"blur-faces": {
blurRadius: "Vervagingsradius",
blurLight: "Licht",
blurHeavy: "Sterk",
detectionSensitivity: "Detectiegevoeligheid",
moreFaces: "Meer gezichten",
fewerFaces: "Minder gezichten",
submit: "Gezichten vervagen",
progressLabel: "Gezichten vervagen",
},
"enhance-faces": {
quality: "Kwaliteit",
enhancementStrength: "Verbeteringssterkte",
onlyCenterFace: "Alleen centraal gezicht",
detectionSensitivity: "Detectiegevoeligheid",
submit: "Gezichten verbeteren",
submitBatch: "Gezichten verbeteren ({count} bestanden)",
progressLabel: "Gezichten verbeteren",
},
"smart-crop": {
subjectFocus: "Onderwerpfocus",
faceFocus: "Gezichtsfocus",
autoTrim: "Automatisch bijsnijden",
customSize: "Aangepast formaat",
socialPresets: "Social media-presets",
detectionStrategy: "Detectiestrategie",
detectionStrategyHint:
"Aandacht vindt het visueel meest opvallende gebied. Entropie vindt het gebied met de meeste details.",
attention: "Aandacht",
entropy: "Entropie",
padding: "Opvulling",
paddingHint: "Extra ruimte rondom het focusgebied",
outputQuality: "Uitvoerkwaliteit",
outputQualityHint: "Voor JPEG- en WebP-uitvoer. PNG is altijd lossless.",
subjectDescription:
"Detecteert het meest interessante gebied via saliency-analyse en snijdt bij op je doelformaat.",
framing: "Kadrering",
facePadding: "Gezichtsopvulling",
facePaddingHint: "Extra ruimte rond gedetecteerde gezichten",
fewerFalsePositives: "Minder valse positieven",
faceDescription:
"Gebruikt AI-gezichtsdetectie om gezichten correct in beeld te houden. Valt terug op onderwerpfocus als geen gezichten worden gedetecteerd.",
trimTolerance: "Tolerantie",
trimDescription:
"Hoe veel een randpixel mag afwijken van de randkleur en toch wordt bijgesneden. Hoger = agressiever.",
padToSquare: "Opvullen tot vierkant",
targetSizePx: "Doelformaat (px)",
padColor: "Opvulkleur",
trimHint:
'Verwijdert effen randen rondom je onderwerp. Schakel "Opvullen tot vierkant" in voor e-commerce-afbeeldingen.',
submitSubject: "Slim bijsnijden",
submitFace: "Gezicht bijsnijden",
submitTrim: "Randen bijsnijden",
},
imageEnhancement: {
enhancementMode: "Verbeteringsmodus",
auto: "Automatisch",
portrait: "Portret",
landscape: "Landschap",
lowLight: "Weinig licht",
food: "Eten",
document: "Document",
intensity: "Intensiteit",
deepEnhance: "Diepte-verbetering (AI)",
deepEnhanceDescription: "Verwijdert ruis en artefacten met AI",
deepEnhanceRequires: "Vereist de Opschalen & Verbeteren-bundel",
analyzingImage: "Afbeelding analyseren...",
detectedIssues: "Gedetecteerde problemen",
imageLooksGood: "De afbeelding ziet er goed uit. Verfijn met de intensiteitsschuif.",
issueUnderexposed: "Onderbelicht",
issueOverexposed: "Overbelicht",
issueLowContrast: "Vlak contrast",
issueColorCast: "Kleurzweem",
issueDesaturated: "Onverzadigd",
issueSoftFocus: "Zachte focus",
issueNoisy: "Ruisig",
submit: "Verbeteren",
submitDeep: "Diepte-verbetering",
submitBatch: "Verbeteren ({count} bestanden)",
submitDeepBatch: "Diepte-verbetering ({count} bestanden)",
progressLabel: "Afbeelding verbeteren",
progressLabelBatch: "{count} afbeeldingen verbeteren",
},
"noise-removal": {
denoisingTier: "Ontruisingsniveau",
quick: "Snel",
balanced: "Gebalanceerd",
quality: "Kwaliteit",
maximum: "Maximaal",
quickDesc: "Snel, lichtgewicht",
balancedDesc: "Goede kwaliteit, gemiddelde snelheid",
qualityDesc: "AI-aangedreven, langzaam",
maximumDesc: "Beste AI-model, langzaamst",
strength: "Sterkte",
subtle: "Subtiel",
aggressive: "Agressief",
detailPreservation: "Detailbehoud",
smooth: "Zacht",
sharp: "Scherp",
colorNoise: "Kleurruis",
heavy: "Zwaar",
outputFormat: "Uitvoerformaat",
gifAiWarning:
"AI-ontruising op GIF-bestanden verwerkt alleen het eerste frame. Gebruik voor geanimeerde GIFs het Snelle of Gebalanceerde niveau.",
submit: "Ruis verwijderen",
submitBatch: "Ruis verwijderen ({count} bestanden)",
progressLabel: "Ruis verwijderen",
progressLabelBatch: "Ruis verwijderen uit {count} afbeeldingen",
},
"red-eye-removal": {
sensitivity: "Gevoeligheid",
strict: "Strikt",
aggressive: "Agressief",
correctionStrength: "Correctiesterkte",
subtle: "Subtiel",
dark: "Donker",
outputFormat: "Uitvoerformaat",
quality: "Kwaliteit",
submit: "Rode ogen corrigeren",
submitBatch: "Rode ogen corrigeren ({count} bestanden)",
progressLabel: "Rode ogen corrigeren",
progressLabelBatch: "Rode ogen corrigeren in {count} afbeeldingen",
},
"restore-photo": {
scratchRemoval: "Krasverwijdering",
scratchRemovalDesc: "Krassen, scheuren en vlekken detecteren en repareren",
faceEnhancement: "Gezichtsverbetering",
faceEnhancementDesc: "Beschadigde gezichten herstellen met CodeFormer AI",
faceFidelity: "Gezichtstrouwheid",
enhanced: "Verbeterd",
faithful: "Getrouw",
noiseReduction: "Ruisonderdrukking",
noiseReductionDesc: "Korrel en ruis verwijderen uit oude foto's",
denoiseStrength: "Ontruisingssterkte",
autoColorize: "Automatisch inkleuren",
autoColorizeDesc: "Kleur toevoegen aan Z/W-foto's met DDColor AI",
colorizeStrength: "Inkleuringssterkte",
vivid: "Levendig",
submit: "Foto restaureren",
submitBatch: "Foto's restaureren ({count})",
progressLabel: "Foto restaureren",
progressLabelBatch: "{count} foto's restaureren",
},
"content-aware-resize": {
widthPx: "Breedte (px)",
heightPx: "Hoogte (px)",
resizeToSquare: "Vierkant maken",
protectFaces: "Gezichten beschermen",
protectFacesHint:
"Gezichtregio's detecteren en beschermen tegen naadverwijdering via gezichtsdetectie",
smoothing: "Vloeiendheid",
edgeSensitivity: "Randgevoeligheid",
submit: "Formaat wijzigen",
submitBatch: "Formaat wijzigen ({count} bestanden)",
progressLabel: "Inhoudsbewust schalen",
},
"ai-canvas-expand": {
quality: "Kwaliteit",
fast: "Snel",
balanced: "Gebalanceerd",
highQuality: "Hoge kwaliteit",
fastDesc: "Snelle preview, minder AI-passes",
balancedDesc: "Goede kwaliteit, gemiddelde snelheid",
highQualityDesc: "Beste resultaten, langzamer",
extendToAspectRatio: "Uitbreiden naar beeldverhouding",
extendByPixels: "Uitbreiden met (pixels)",
top: "Boven",
right: "Rechts",
bottom: "Onder",
left: "Links",
newSize: "Nieuw formaat: {width} x {height}",
submit: "Canvas uitbreiden",
submitBatch: "Uitbreiden ({count} bestanden)",
progressLabel: "Canvas uitbreiden",
},
colorize: {
aiModel: "AI-model",
fast: "Snel",
fastDesc: "Snelle resultaten",
balanced: "Gebalanceerd",
balancedDesc: "Best beschikbaar",
best: "Beste",
bestDesc: "Hoogste kwaliteit",
colorIntensity: "Kleurintensiteit",
grayscaleLabel: "Grijstinten",
subtleLabel: "Subtiel",
naturalLabel: "Natuurlijk",
vividLabel: "Levendig",
intensityHint: "Lagere waarden produceren gedempte, vintage-achtige kleuren.",
strength: "Inkleuringssterkte",
submit: "Inkleuren",
submitBatch: "Inkleuren ({count} bestanden)",
progressLabel: "Inkleuren",
progressLabelBatch: "{count} afbeeldingen inkleuren",
},
"passport-photo": {
country: "Land",
searchCountries: "Landen zoeken...",
noCountriesFound: "Geen landen gevonden",
customDimensions: "Aangepaste afmetingen",
documentType: "Documenttype",
dimensionsMm: "Afmetingen (mm)",
dpi: "DPI",
pixelsPerInch: "pixels per inch",
backgroundColor: "Achtergrondkleur",
maxFileSize: "Max bestandsgrootte",
noLimit: "Geen limiet",
customKb: "Aangepast (KB)...",
uploadPortrait: "Upload een portretfoto",
uploadHint:
"Sleep of upload een afbeelding in het linkerpaneel voor een preview van je pasfoto",
analyzingPhoto: "Foto analyseren",
detectingLandmarks: "Gezichtskenmerken detecteren en achtergrond verwijderen...",
generatePassportPhoto: "Pasfoto genereren",
generating: "Genereren...",
downloadPhoto: "Foto downloaden",
faceCentered: "Gezicht gecentreerd",
headLevel: "Hoofd recht",
lookingStraight: "Recht kijkend",
faceSize: "Gezichtsgrootte",
whatYouSee: "Wat je ziet is wat je downloadt",
dragToAdjust: "Sleep om aan te passen",
scrollToZoom: "Scroll om te zoomen",
photoGenerated: "Foto gegenereerd. Download via het linkerpaneel.",
},
"transcribe-audio": {
language: "Taal",
autoDetect: "Automatisch detecteren",
outputFormat: "Uitvoerformaat",
plainText: "Platte tekst",
submit: "Transcriberen",
submitBatch: "Transcriberen ({count} bestanden)",
progressLabel: "Audio transcriberen",
},
"auto-subtitles": {
language: "Taal",
autoDetect: "Automatisch detecteren",
format: "Ondertitelingsformaat",
submit: "Ondertiteling genereren",
submitBatch: "Ondertiteling genereren ({count} bestanden)",
progressLabel: "Ondertiteling genereren",
},
"transparency-fixer": {
description:
"Upload een PNG met een nep-transparante achtergrond en we repareren het met een klik.",
removeWatermark: "Watermerk verwijderen",
removeWatermarkHelp: "Semi-transparante watermerken detecteren en verwijderen",
requiresEraser: "Vereist de Object Verwijderen-bundel",
advanced: "Geavanceerd",
defringe: "Randcorrectie",
outputFormat: "Uitvoerformaat",
submit: "Transparantie repareren",
submitBatch: "Transparantie repareren ({count} bestanden)",
progressLabel: "Transparantie repareren",
},
"background-replace": {
color: "Achtergrondkleur",
submit: "Achtergrond vervangen",
submitBatch: "Achtergrond vervangen ({count} bestanden)",
progressLabel: "Achtergrond vervangen",
},
"blur-background": {
intensity: "Vervagingsintensiteit",
submit: "Achtergrond vervagen",
submitBatch: "Achtergrond vervagen ({count} bestanden)",
progressLabel: "Achtergrond vervagen",
},
"watermark-text": {
watermarkText: "Watermerktekst",
fontSize: "Lettergrootte",
color: "Kleur",
opacity: "Dekking",
position: "Positie",
rotation: "Rotatie",
center: "Midden",
topLeft: "Linksboven",
topRight: "Rechtsboven",
bottomLeft: "Linksonder",
bottomRight: "Rechtsonder",
tiled: "Betegeld",
submit: "Watermerk toevoegen",
submitBatch: "Watermerk toevoegen ({count} bestanden)",
progressLabel: "Watermerk toevoegen",
},
"watermark-image": {
uploadWatermark: "Watermerkafbeelding uploaden",
position: "Positie",
opacity: "Dekking",
scale: "Schaal",
submit: "Watermerk toepassen",
submitBatch: "Watermerk toepassen ({count} bestanden)",
},
"text-overlay": {
text: "Tekst",
fontSize: "Lettergrootte",
color: "Kleur",
position: "Positie",
top: "Boven",
center: "Midden",
bottom: "Onder",
backgroundBox: "Achtergrondvak",
backgroundColor: "Achtergrondkleur",
shadow: "Schaduw",
submit: "Tekst toevoegen",
submitBatch: "Tekst toevoegen ({count} bestanden)",
progressLabel: "Tekstoverlay toevoegen",
download: "Download",
defaultText: "Your Text Here",
},
compose: {
uploadOverlay: "Overlay-afbeelding uploaden",
xPosition: "X-positie",
yPosition: "Y-positie",
opacity: "Dekking",
blendMode: "Overvloeimodus",
submit: "Samenvoegen",
},
"meme-generator": {
selectTemplate: "Kies een template uit de galerij of upload je eigen afbeelding.",
chooseLayout: "Kies een tekstindeling voor je afbeelding.",
textContent: "Tekstinhoud",
textStyle: "Tekststijl",
font: "Lettertype",
fontSize: "Lettergrootte",
textColor: "Tekstkleur",
strokeColor: "Lijnkleur",
allCaps: "HOOFDLETTERS",
generate: "Meme maken",
generating: "Genereren...",
downloadMeme: "Meme downloaden",
backToGallery: "Terug naar galerij",
},
info: {
loadingInfo: "Info laden...",
filename: "Bestandsnaam",
fileSize: "Bestandsgrootte",
dimensions: "Afmetingen",
format: "Formaat",
channels: "Kanalen",
colorSpace: "Kleurruimte",
density: "Dichtheid",
bitDepth: "Bitdiepte",
progressive: "Progressief",
pages: "Pagina's",
hasAlpha: "Heeft Alpha",
hasProfile: "Heeft profiel",
hasExif: "Heeft EXIF",
hasIcc: "Heeft ICC",
hasXmp: "Heeft XMP",
readInfo: "Read Info",
reading: "Reading...",
channelStats: "Channel Stats",
yes: "Yes",
no: "No",
na: "N/A",
failedToRead: "Failed to read info",
},
compare: {
uploadSecondImage: "Tweede afbeelding uploaden",
similarity: "Gelijkenis: {percent}%",
submit: "Vergelijken",
downloadDiff: "Verschil downloaden",
},
"find-duplicates": {
preset: "Preset",
exact: "Exact",
similar: "Vergelijkbaar",
loose: "Ruim",
exactDesc: "Pixel-identieke kopies, zelfde afbeelding in ander formaat.",
similarDesc: "Geschaalde, opnieuw gecomprimeerde of licht bewerkte kopies.",
looseDesc: "Visueel verwante afbeeldingen, lichte bijsnijdingen, andere belichtingen.",
threshold: "Drempel",
submit: "Scannen op duplicaten",
scanning: "Scannen...",
},
"color-palette": {
submit: "Palet extraheren",
extracting: "Extraheren...",
dominantColors: "Dominante kleuren",
clickToCopy: "Klik om te kopieren",
},
"qr-generate": {
contentType: "Inhoudstype",
url: "URL",
text: "Tekst",
wifi: "WiFi",
vcard: "vCard",
email: "E-mail",
phone: "Telefoon",
sms: "SMS",
styling: "Stijl",
dotStyle: "Puntstijl",
cornerSquareStyle: "Hoekvierkant-stijl",
cornerDotStyle: "Hoekpunt-stijl",
foregroundColor: "Voorgrondkleur",
bgColor: "Achtergrondkleur",
logo: "Logo",
downloadFormat: "Downloadformaat",
submit: "QR-code genereren",
download: "QR-code downloaden",
},
"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} bestanden)",
scanning: "Scannen...",
noBarcodesFound: "Geen barcodes gevonden",
barcodesFound: "{count} barcode gevonden",
barcodesFoundPlural: "{count} barcodes gevonden",
},
collage: {
template: "Template",
aspectRatio: "Beeldverhouding",
gap: "Tussenruimte",
cornerRadius: "Hoekradius",
backgroundColor: "Achtergrondkleur",
outputFormat: "Uitvoerformaat",
quality: "Kwaliteit",
submit: "Collage maken",
downloadCollage: "Collage downloaden",
},
stitch: {
direction: "Richting",
horizontal: "Horizontaal",
vertical: "Verticaal",
grid: "Raster",
gridColumns: "Rasterkolommen",
resizeMode: "Schaalmodus",
fit: "Inpassen",
original: "Origineel",
stretchMode: "Uitrekken",
cropMode: "Bijsnijden",
alignment: "Uitlijning",
start: "Begin",
center: "Midden",
end: "Einde",
gap: "Tussenruimte",
border: "Rand",
cornerRadius: "Hoekradius",
backgroundColor: "Achtergrondkleur",
outputFormat: "Uitvoerformaat",
quality: "Kwaliteit",
submit: "Afbeeldingen samenvoegen",
},
split: {
modeGrid: "Raster",
modeTileSize: "Tegelgrootte",
presets: "Presets",
columns: "Kolommen",
rows: "Rijen",
tileWidth: "Tegelbreedte",
tileHeight: "Tegelhoogte",
outputFormat: "Uitvoerformaat",
quality: "Kwaliteit",
submit: "Afbeelding splitsen",
downloadAll: "Alles downloaden (ZIP)",
},
border: {
presets: "Presets",
borderWidth: "Randbreedte",
borderColor: "Randkleur",
padding: "Opvulling",
paddingColor: "Opvulkleur",
cornerRadius: "Hoekradius",
shadow: "Schaduw",
shadowBlur: "Schaduwvervaging",
shadowOffsetX: "Schaduw-offset X",
shadowOffsetY: "Schaduw-offset Y",
shadowColor: "Schaduwkleur",
shadowOpacity: "Schaduwdekking",
submit: "Rand toevoegen",
submitBatch: "Rand toevoegen ({count} bestanden)",
progressLabel: "Rand toevoegen",
},
beautify: {
preset: "Preset",
backgroundType: "Achtergrondtype",
solidColor: "Egale kleur",
linearGradient: "Lineair verloop",
radialGradient: "Radiaal verloop",
customImage: "Eigen afbeelding",
gradientAngle: "Verloophoek",
padding: "Opvulling",
borderRadius: "Randradius",
shadowPreset: "Schaduw-preset",
deviceFrame: "Apparaatframe",
submit: "Verfraaien",
submitBatch: "Verfraaien ({count} bestanden)",
progressLabel: "Screenshot verfraaien",
},
"circle-crop": {
submit: "Circle Crop",
submitBatch: "Circle Crop ({count} files)",
progressLabel: "Cropping to circle",
},
duotone: {
shadow: "Shadow Color",
highlight: "Highlight Color",
submit: "Apply Duotone",
submitBatch: "Apply Duotone ({count} files)",
progressLabel: "Applying duotone",
},
"image-pad": {
target: "Target Ratio",
color: "Background Color",
submit: "Pad Image",
submitBatch: "Pad Image ({count} files)",
progressLabel: "Padding image",
},
pixelate: {
blockSize: "Block Size",
submit: "Pixelate",
submitBatch: "Pixelate ({count} files)",
progressLabel: "Pixelating",
},
vignette: {
strength: "Strength",
color: "Vignette Color",
submit: "Apply Vignette",
submitBatch: "Apply Vignette ({count} files)",
progressLabel: "Applying vignette",
},
"gif-webp": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting animation",
},
histogram: {
submit: "Generate Histogram",
submitBatch: "Generate Histogram ({count} files)",
progressLabel: "Generating histogram",
},
"lqip-placeholder": {
width: "Width",
blur: "Blur",
submit: "Generate Placeholder",
submitBatch: "Generate Placeholder ({count} files)",
progressLabel: "Generating placeholder",
},
"sprite-sheet": {
columns: "Columns",
padding: "Padding",
background: "Background Color",
submit: "Create Sprite Sheet",
submitBatch: "Create Sprite Sheet",
progressLabel: "Creating sprite sheet",
},
"svg-to-raster": {
outputFormat: "Uitvoerformaat",
sizing: "Grootte",
scaleMode: "Schaal",
customMode: "Aangepast",
scalePresets: "Schaalpresets",
dpiPresets: "DPI-presets",
customWidth: "Breedte (px)",
customHeight: "Hoogte (px)",
background: "Achtergrond",
bgTransparent: "Transparant",
bgColor: "Kleur",
quality: "Kwaliteit",
submit: "SVG converteren",
submitBatch: "Converteren ({count} bestanden)",
progressLabel: "SVG converteren",
},
vectorize: {
preset: "Preset",
logo: "Logo",
illustration: "Illustratie",
photo: "Foto",
sketch: "Schets",
customPreset: "Aangepast",
colorMode: "Kleurmodus",
bw: "Z/W",
colorModeColor: "Kleur",
threshold: "Drempel",
colorPrecision: "Kleurprecisie",
layerDifference: "Laagverschil",
filterSpeckle: "Spikkels filteren",
pathMode: "Padmodus",
cornerThreshold: "Hoekdrempel",
invertColors: "Kleuren inverteren",
submit: "Vectoriseren",
submitBatch: "Vectoriseren ({count} bestanden)",
progressLabel: "Vectoriseren",
},
"gif-tools": {
mode: "Modus",
resize: "Formaat wijzigen",
optimize: "Optimaliseren",
speed: "Snelheid",
reverse: "Omkeren",
extract: "Extraheren",
rotateMode: "Draaien",
pixel: "Pixel",
percentage: "Percentage",
colors: "Kleuren",
dither: "Dithering",
effort: "Inspanning",
speedFactor: "Snelheidsfactor",
loopControl: "Lusregeling",
infinite: "Oneindig",
once: "Eenmalig",
customLoop: "Aangepast",
loopCount: "Aantal lussen",
extractSingle: "Enkel",
extractRange: "Bereik",
extractAll: "Alles",
frameNumber: "Framenummer",
frameStart: "Startframe",
frameEnd: "Eindframe",
extractFormat: "Formaat",
submit: "GIF verwerken",
submitBatch: "Verwerken ({count} bestanden)",
progressLabel: "GIF verwerken",
},
"image-to-base64": {
outputFormat: "Uitvoerformaat",
keepOriginal: "Origineel behouden",
quality: "Kwaliteit",
maxWidth: "Max breedte",
maxHeight: "Max hoogte",
submit: "Converteren naar Base64",
submitBatch: "Converteren ({count} bestanden)",
copyBase64: "Base64 kopieren",
copyDataUri: "Data-URI kopieren",
copyImgTag: "<img>-tag kopieren",
copyCssUrl: "CSS url() kopieren",
},
"barcode-generate": {
text: "Text",
type: "Barcode Type",
scale: "Scale",
includeText: "Include Text",
submit: "Generate Barcode",
download: "Download Barcode",
},
"chart-maker": {
kind: "Chart Type",
title: "Title",
width: "Width",
height: "Height",
submit: "Create Chart",
submitBatch: "Create Chart ({count} files)",
progressLabel: "Creating chart",
},
"enhance-faces-standalone": {
model: "Model",
fast: "Snel",
balanced: "Gebalanceerd",
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",
},
"resize-video": {
preset: "Preset",
width: "Width (px)",
height: "Height (px)",
hint: "Leave one dimension empty to keep aspect ratio",
submit: "Resize",
submitBatch: "Resize ({count} files)",
progressLabel: "Resizing",
},
"crop-video": {
width: "Width (px)",
height: "Height (px)",
x: "X offset",
y: "Y offset",
submit: "Crop",
submitBatch: "Crop ({count} files)",
progressLabel: "Cropping",
},
"rotate-video": {
transform: "Transform",
cw90: "Rotate 90 clockwise",
ccw90: "Rotate 90 counter-clockwise",
rotate180: "Rotate 180",
hflip: "Flip horizontal",
vflip: "Flip vertical",
submit: "Rotate",
submitBatch: "Rotate ({count} files)",
progressLabel: "Rotating",
},
"change-fps": {
fps: "Frames per second",
submit: "Change FPS",
submitBatch: "Change FPS ({count} files)",
progressLabel: "Changing FPS",
},
"video-color": {
brightness: "Brightness",
contrast: "Contrast",
saturation: "Saturation",
gamma: "Gamma",
submit: "Apply",
submitBatch: "Apply ({count} files)",
progressLabel: "Adjusting color",
},
"video-speed": {
factor: "Speed factor",
keepPitch: "Keep original pitch",
submit: "Change speed",
submitBatch: "Change speed ({count} files)",
progressLabel: "Changing speed",
},
"reverse-video": {
hint: "Limited to clips up to 5 minutes",
submit: "Reverse",
submitBatch: "Reverse ({count} files)",
progressLabel: "Reversing",
},
"video-loudnorm": {
hint: "Normalizes audio to EBU R128 broadcast standard",
submit: "Normalize",
submitBatch: "Normalize ({count} files)",
progressLabel: "Normalizing",
},
"aspect-pad": {
target: "Target ratio",
color: "Background color",
colorHint: "Hex color, e.g. #000000",
submit: "Pad",
submitBatch: "Pad ({count} files)",
progressLabel: "Padding",
},
"blur-pad": {
target: "Target ratio",
blur: "Blur strength",
submit: "Pad",
submitBatch: "Pad ({count} files)",
progressLabel: "Padding",
},
"watermark-video": {
text: "Watermark text",
position: "Position",
fontSize: "Font size",
opacity: "Opacity",
color: "Color",
colorHint: "Hex color, e.g. #ffffff",
submit: "Watermark",
submitBatch: "Watermark ({count} files)",
progressLabel: "Watermarking",
},
"stabilize-video": {
smoothing: "Smoothing",
hint: "Runs two passes and takes longer than most tools",
submit: "Stabilize",
submitBatch: "Stabilize ({count} files)",
progressLabel: "Stabilizing",
},
"gif-to-video": {
format: "Output format",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"video-to-webp": {
fps: "Frames per second",
width: "Width (px)",
quality: "Quality",
loop: "Loop animation",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"video-to-frames": {
mode: "Extraction mode",
modeAll: "All frames",
modeNth: "Every Nth frame",
modeTimestamps: "Specific timestamps",
n: "Take every Nth frame",
timestamps: "Timestamps (seconds)",
timestampsHint: "Comma-separated, e.g. 0.5, 2, 4.5",
format: "Image format",
submit: "Extract Frames",
submitBatch: "Extract Frames ({count} files)",
progressLabel: "Extracting frames",
},
"merge-videos": {
hint: "Files are joined in upload order",
submit: "Merge",
submitBatch: "Merge ({count} files)",
progressLabel: "Merging",
},
"replace-audio": {
hint: "Upload the video first, then the audio",
submit: "Replace Audio",
submitBatch: "Replace Audio ({count} files)",
progressLabel: "Replacing audio",
},
"burn-subtitles": {
fontSize: "Font size",
hint: "Upload a video and a subtitle file (.srt or .vtt)",
submit: "Burn Subtitles",
submitBatch: "Burn Subtitles ({count} files)",
progressLabel: "Burning subtitles",
},
"embed-subtitles": {
language: "Language code",
languageHint: "Three-letter ISO 639-2 code, e.g. eng, spa, fra",
submit: "Embed Subtitles",
submitBatch: "Embed Subtitles ({count} files)",
progressLabel: "Embedding subtitles",
},
"extract-subtitles": {
submit: "Extract Subtitles",
submitBatch: "Extract Subtitles ({count} files)",
progressLabel: "Extracting subtitles",
},
"images-to-video": {
secondsPerImage: "Seconds per image",
resolution: "Resolution",
fps: "Frames per second",
submit: "Create Video",
submitBatch: "Create Video ({count} files)",
progressLabel: "Creating slideshow",
},
"video-metadata": {
hint: "Metadata report appears in the result",
submit: "Strip Metadata",
submitBatch: "Strip Metadata ({count} files)",
progressLabel: "Stripping metadata",
},
"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",
},
"volume-adjust": {
"gain-db": "Gain (dB)",
submit: "Adjust Volume",
submitBatch: "Adjust Volume ({count} files)",
progressLabel: "Adjusting volume",
},
"normalize-audio": {
hint: "EBU R128 loudness normalization",
submit: "Normalize",
submitBatch: "Normalize ({count} files)",
progressLabel: "Normalizing",
},
"fade-audio": {
"fade-in-s": "Fade in (seconds)",
"fade-out-s": "Fade out (seconds)",
submit: "Apply Fade",
submitBatch: "Apply Fade ({count} files)",
progressLabel: "Applying fade",
},
"reverse-audio": {
submit: "Reverse",
submitBatch: "Reverse ({count} files)",
progressLabel: "Reversing",
},
"audio-speed": {
factor: "Speed factor",
submit: "Change Speed",
submitBatch: "Change Speed ({count} files)",
progressLabel: "Changing speed",
},
"pitch-shift": {
semitones: "Semitones",
hint: "0 semitones is not allowed",
submit: "Shift Pitch",
submitBatch: "Shift Pitch ({count} files)",
progressLabel: "Shifting pitch",
},
"audio-channels": {
mode: "Channel mode",
"stereo-to-mono": "Stereo to mono",
"mono-to-stereo": "Mono to stereo",
swap: "Swap left/right",
submit: "Convert Channels",
submitBatch: "Convert Channels ({count} files)",
progressLabel: "Converting channels",
},
"silence-removal": {
"threshold-db": "Silence threshold (dB)",
"min-silence-s": "Minimum silence duration (seconds)",
submit: "Remove Silence",
submitBatch: "Remove Silence ({count} files)",
progressLabel: "Removing silence",
},
"noise-reduction": {
strength: "Strength",
light: "Light",
medium: "Medium",
strong: "Strong",
submit: "Reduce Noise",
submitBatch: "Reduce Noise ({count} files)",
progressLabel: "Reducing noise",
},
"merge-audio": {
format: "Output format",
mp3: "MP3",
wav: "WAV",
flac: "FLAC",
m4a: "M4A",
"order-hint": "Files will be joined in upload order",
submit: "Merge Audio",
submitBatch: "Merge Audio ({count} files)",
progressLabel: "Merging audio",
},
"split-audio": {
mode: "Split mode",
time: "By time",
parts: "Equal parts",
silence: "By silence",
"segment-s": "Segment length (seconds)",
"num-parts": "Number of parts",
"threshold-db": "Silence threshold (dB)",
"min-silence-s": "Minimum silence duration (seconds)",
submit: "Split Audio",
submitBatch: "Split Audio ({count} files)",
progressLabel: "Splitting audio",
},
"ringtone-maker": {
"start-s": "Start time (seconds)",
"duration-s": "Duration (seconds)",
"max-hint": "Maximum 30 seconds",
submit: "Create Ringtone",
submitBatch: "Create Ringtone ({count} files)",
progressLabel: "Creating ringtone",
},
"waveform-image": {
width: "Width (px)",
height: "Height (px)",
color: "Waveform color",
submit: "Generate Waveform",
submitBatch: "Generate Waveform ({count} files)",
progressLabel: "Generating waveform",
},
"audio-metadata": {
strip: "Strip all metadata",
title: "Title",
artist: "Artist",
album: "Album",
submit: "Apply Metadata",
submitBatch: "Apply Metadata ({count} files)",
progressLabel: "Applying metadata",
},
"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",
},
"convert-document": {
format: "Output format",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"convert-presentation": {
format: "Output format",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"convert-spreadsheet": {
format: "Output format",
hint: "Multi-sheet workbooks export the first sheet to CSV.",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"excel-to-pdf": {
submit: "Convert to PDF",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"powerpoint-to-pdf": {
submit: "Convert to PDF",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"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-docx": {
submit: "Convert to DOCX",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"markdown-to-html": {
hint: "Remote images in the source are left as-is in the output.",
submit: "Convert to HTML",
submitBatch: "Convert ({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",
},
"epub-convert": {
format: "Output format",
hint: "Remote resources inside the book are not fetched.",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"to-epub": {
submit: "Convert to EPUB",
submitBatch: "Convert ({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",
},
"merge-csvs": {
submit: "Merge",
submitBatch: "Merge ({count} files)",
progressLabel: "Merging",
},
"yaml-json": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"xml-to-csv": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"create-zip": {
submit: "Create ZIP",
submitBatch: "Create ZIP ({count} files)",
progressLabel: "Zipping",
},
"extract-zip": {
submit: "Extract",
submitBatch: "Extract ({count} files)",
progressLabel: "Extracting",
},
},
urlImport: {
title: "Importeren van URLs",
placeholder: "Plak afbeeldings-URLs, een per regel...",
importButton: "URLs importeren",
addButton: "{count} bestanden toevoegen",
adding: "Toevoegen...",
retryButton: "Opnieuw proberen",
cancelButton: "Annuleren",
readyCount: "{count} gereed",
failedStatus: "Mislukt",
},
comparison: {
original: "Origineel",
processed: "Verwerkt",
before: "Voor",
after: "Na",
savings: "Besparing",
},
toolPage: {
emptyPrompt: "Sleep of upload een afbeelding om te beginnen",
filesCount: "Bestanden ({count})",
addMore: "+ Meer toevoegen",
clearAll: "Alles wissen",
acceptDescription: "Alleen {exts}-bestanden",
notFound: "Gereedschap niet gevonden",
configureAndGenerate: "Stel instellingen in en genereer.",
processingFailed: "Verwerking mislukt voor dit bestand",
conversionComplete: "Conversie voltooid",
cannotPreviewDownload:
"{type}-bestanden kunnen niet in de browser worden bekeken. Gebruik de downloadknop om je bestand op te slaan.",
generatingPreview: "Preview genereren...",
cannotPreviewWillProcess:
"{ext}-bestanden kunnen niet in de browser worden bekeken. Het gereedschap verwerkt dit bestand gewoon.",
previousImage: "Vorige afbeelding",
nextImage: "Volgende afbeelding",
imageCounter: "{current} / {total}",
settingsLabel: "Instellingen",
downloadAllZip: "Alles downloaden (ZIP)",
hideSettings: "Instellingen verbergen",
imageArea: "Afbeeldingsgebied",
},
homePage: {
generatingPreview: "Preview genereren...",
loadingPreview: "Preview laden...",
changeFile: "Bestand wijzigen",
quickActions: "Snelle acties",
allTools: "Alle tools",
},
fullscreenGrid: {
searchPlaceholder: "Gereedschap zoeken...",
hideDetails: "Details verbergen",
showDetails: "Details tonen",
switchToSidebar: "Naar zijbalkweergave",
sidebarButton: "Zijbalk",
noToolsFound: "Geen gereedschap gevonden",
tryDifferent: "Probeer een andere zoekterm",
},
editor: {
menu: {
file: {
label: "Bestand",
new: "Nieuw",
open: "Openen",
save: "Opslaan",
exportAs: "Exporteren als...",
quickExportPng: "Snel exporteren als PNG",
close: "Sluiten",
},
edit: {
label: "Bewerken",
undo: "Ongedaan maken",
redo: "Opnieuw",
cut: "Knippen",
copy: "Kopieren",
copyMerged: "Samengevoegd kopieren",
paste: "Plakken",
pasteInPlace: "Op dezelfde plek plakken",
delete: "Verwijderen",
freeTransform: "Vrije transformatie",
transform: {
label: "Transformeren",
scale: "Schalen",
rotate: "Draaien",
skew: "Schuintrekken",
flipHorizontal: "Horizontaal spiegelen",
flipVertical: "Verticaal spiegelen",
},
},
image: {
label: "Afbeelding",
imageSize: "Afbeeldingsformaat...",
canvasSize: "Canvasformaat...",
rotation: {
label: "Beeldrotatie",
cw90: "90° rechtsom",
ccw90: "90° linksom",
r180: "180°",
flipHorizontal: "Horizontaal spiegelen",
flipVertical: "Verticaal spiegelen",
},
trim: "Bijsnijden",
adjustments: {
label: "Aanpassingen",
brightnessContrast: "Helderheid/Contrast",
hueSaturation: "Kleurtoon/Verzadiging",
colorBalance: "Kleurbalans",
levels: "Niveaus",
curves: "Curven",
},
},
layer: {
label: "Laag",
newLayer: "Nieuwe laag",
duplicateLayer: "Laag dupliceren",
deleteLayer: "Laag verwijderen",
arrange: {
label: "Rangschikken",
bringToFront: "Naar voren brengen",
bringForward: "Een laag naar voren",
sendBackward: "Een laag naar achteren",
sendToBack: "Naar achteren sturen",
},
mergeDown: "Samenvoegen met onderliggende",
flattenImage: "Afbeelding samenvoegen",
},
select: {
label: "Selecteren",
all: "Alles",
deselect: "Deselecteren",
inverse: "Omkeren",
colorRange: "Kleurbereik...",
},
filter: {
label: "Filter",
blur: {
label: "Vervagen",
gaussian: "Gaussiaans vervagen",
motion: "Bewegingsonscherpte",
radial: "Radiaal vervagen",
surface: "Oppervlaktevervaging",
},
sharpen: {
label: "Verscherpen",
sharpen: "Verscherpen",
unsharpMask: "Onscherpmasker",
},
noise: {
label: "Ruis",
addNoise: "Ruis toevoegen",
reduceNoise: "Ruis verminderen",
},
pixelate: {
label: "Pixeleren",
pixelate: "Pixeleren",
mosaic: "Mozaiek",
},
stylize: {
label: "Stileren",
emboss: "Reliefdruk",
solarize: "Solariseren",
posterize: "Posteriseren",
},
grayscale: "Grijstinten",
sepia: "Sepia",
invert: "Inverteren",
},
view: {
label: "Weergave",
zoomIn: "Inzoomen",
zoomOut: "Uitzoomen",
fitOnScreen: "Passend op scherm",
actualPixels: "Werkelijke pixels",
rulers: "Linialen",
grid: "Raster",
guides: "Hulplijnen",
snap: "Uitlijnen",
panels: "Panelen",
},
},
menuBar: {
backTitle: "Terug naar SnapOtter",
},
welcome: {
ariaLabel: "Afbeelding-dropzone",
heading: "Afbeeldingseditor",
dropDescription: "Sleep een afbeelding hierheen om te beginnen",
openImageButton: "Afbeelding openen",
newDocumentButton: "Nieuw document",
pasteHint: "Of plak vanuit het klembord (Ctrl+V)",
},
mobile: {
heading: "Desktop aanbevolen",
description:
"De afbeeldingseditor werkt het best op desktopschermen. Schakel over naar een apparaat met een groter scherm voor de volledige bewerkingservaring.",
},
errors: {
serverDecodeFailed: "Server-decodering mislukt",
},
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: "Instellingen",
nav: {
general: "Algemeen",
systemSettings: "Systeeminstellingen",
security: "Beveiliging",
people: "Personen",
teams: "Teams",
roles: "Rollen",
auditLog: "Auditlog",
usage: "Usage",
apiKeys: "API-sleutels",
aiFeatures: "AI-functies",
tools: "Gereedschap",
productAnalytics: "Productanalyse",
about: "Over",
},
general: {
heading: "Algemeen",
description: "Gebruikersvoorkeuren en weergave-instellingen.",
loading: "Laden...",
logOut: "Uitloggen",
defaultToolViewLabel: "Standaard gereedschapsweergave",
defaultToolViewDescription: "Hoe gereedschap wordt weergegeven op de startpagina",
sidebarOption: "Zijbalk",
fullscreenGridOption: "Volledig raster",
appVersionLabel: "App-versie",
appVersionDescription: "Huidige versie van SnapOtter",
saveButton: "Instellingen opslaan",
saveSuccess: "Instellingen opgeslagen.",
saveFailed: "Instellingen opslaan mislukt.",
},
system: {
heading: "Systeeminstellingen",
description: "Serverconfiguratie en limieten.",
fileUploadLimitLabel: "Uploadlimiet (MB)",
fileUploadLimitDescription: "Maximale bestandsgrootte per upload",
defaultThemeLabel: "Standaardthema",
defaultThemeDescription: "Thema voor nieuwe sessies",
lightOption: "Licht",
darkOption: "Donker",
systemOption: "Systeem",
languageLabel: "Taal",
languageDescription: "Taal van de interface",
loginAttemptLimitLabel: "Inlogpogingslimiet",
loginAttemptLimitDescription: "Max mislukte inlogpogingen per minuut voor vergrendeling",
fileManagementHeading: "Bestandsbeheer",
maxFileAgeLabel: "Max bestandsleeftijd (uren)",
maxFileAgeDescription:
"Hoe lang verwerkte bestanden bewaard worden voor automatisch opruimen",
startupCleanupLabel: "Opruimen bij opstarten",
startupCleanupDescription: "Oude tijdelijke bestanden opruimen wanneer de server start",
saveButton: "Instellingen opslaan",
saveSuccess: "Instellingen opgeslagen.",
saveFailed: "Instellingen opslaan mislukt.",
limitsAndResources: "Limieten & Bronnen",
maxFileSize: "Max bestandsgrootte",
maxBatchSize: "Max batchgrootte",
concurrentJobs: "Gelijktijdige taken",
workerThreads: "Werkthreads",
maxPipelineSteps: "Max Pipeline-stappen",
processingTimeout: "Verwerkingstimeout",
rateLimitPerMin: "Limiet (verzoeken/min)",
unlimited: "Onbeperkt",
auto: "Automatisch",
envOverride: "Ingesteld via omgevingsvariabele",
maxCanvasPixels: "Max canvaspixels",
maxSvgSize: "Max SVG-grootte",
maxSplitGrid: "Max splitraster",
maxPdfPages: "Max PDF-pagina's",
sessionDuration: "Sessieduur",
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: "Beveiliging",
description: "Wachtwoord- en authenticatie-instellingen.",
changePasswordHeading: "Wachtwoord wijzigen",
currentPasswordPlaceholder: "Huidig wachtwoord",
newPasswordPlaceholder: "Nieuw wachtwoord",
confirmPasswordPlaceholder: "Nieuw wachtwoord bevestigen",
passwordsMismatch: "Wachtwoorden komen niet overeen",
passwordTooShort: "Wachtwoord moet minimaal 4 tekens lang zijn",
changeSuccess: "Wachtwoord succesvol gewijzigd",
changeFailed: "Wachtwoord wijzigen mislukt",
currentPasswordIncorrect: "Huidig wachtwoord is onjuist",
changePasswordButton: "Wachtwoord wijzigen",
loginAttemptLimitNote: "Inlogpogingslimieten kun je instellen bij Systeeminstellingen.",
},
people: {
heading: "Personen",
description: "Werkruimteleden en hun rechten beheren",
userCount: "{count} gebruiker",
userCountPlural: "{count} gebruikers",
searchPlaceholder: "Leden zoeken...",
addMembersButton: "Leden toevoegen",
newMemberHeading: "Nieuw lid",
usernamePlaceholder: "Gebruikersnaam",
passwordPlaceholder: "Wachtwoord",
roleUserOption: "Gebruiker",
roleEditorOption: "Redacteur",
roleAdminOption: "Beheerder",
roleUserDescription: "Basis toegang tot gereedschap",
roleEditorDescription: "Alle bestanden & pipelines",
roleAdminDescription: "Volledige toegang",
noDescription: "Geen beschrijving",
defaultTeamOption: "Standaard",
createButton: "Aanmaken",
cancelButton: "Annuleren",
createSuccess: "Gebruiker succesvol aangemaakt",
createFailed: "Gebruiker aanmaken mislukt",
userLimitReached: "Gebruikerslimiet bereikt (max {max})",
deleteConfirm: 'Gebruiker "{username}" verwijderen? Dit kan niet ongedaan worden gemaakt.',
deleteSuccess: 'Gebruiker "{username}" verwijderd',
deleteFailed: "Gebruiker verwijderen mislukt",
editHeading: "{username} bewerken",
updateSuccess: "Gebruiker bijgewerkt",
updateFailed: "Gebruiker bijwerken mislukt",
cannotRemoveOwnAdmin: "Je kunt je eigen beheerdersrol niet verwijderen",
resetPasswordHeading: "Wachtwoord resetten voor {username}",
newPasswordLabel: "Nieuw wachtwoord (min. 8 tekens)",
resetPasswordButton: "Wachtwoord resetten",
resetPasswordWarning: "Dit maakt alle sessies en API-sleutels van deze gebruiker ongeldig.",
resetSuccess: "Wachtwoord succesvol gereset",
resetFailed: "Wachtwoord resetten mislukt",
tableHeaderUser: "Gebruiker",
tableHeaderRole: "Rol",
tableHeaderTeam: "Team",
noSearchResults: "Geen leden gevonden bij je zoekopdracht.",
noUsersFound: "Geen gebruikers gevonden.",
authBadgeLocalOidc: "Lokaal + OIDC",
authBadgeOidc: "OIDC",
editRoleTeamAction: "Rol / Team bewerken",
resetPasswordAction: "Wachtwoord resetten",
deleteUserAction: "Gebruiker verwijderen",
saveButton: "Opslaan",
copyPasswordButton: "Wachtwoord kopieren",
passwordCopied: "Gekopieerd!",
copyPasswordWarning:
"Kopieer dit wachtwoord nu. U kunt het niet meer zien na het aanmaken van de gebruiker.",
},
teams: {
heading: "Teams",
description: "Organiseer leden in teams voor beter beheer.",
createButton: "Nieuw team aanmaken",
newTeamHeading: "Nieuw team",
teamNamePlaceholder: "Teamnaam",
createSubmitButton: "Aanmaken",
cancelButton: "Annuleren",
createSuccess: "Team succesvol aangemaakt",
createFailed: "Team aanmaken mislukt",
duplicateTeamError: "Er bestaat al een team met die naam",
renameSuccess: "Team hernoemd",
renameFailed: "Team hernoemen mislukt",
deleteConfirm: 'Team "{name}" verwijderen? Leden worden ontkoppeld.',
deleteSuccess: 'Team "{name}" verwijderd',
deleteFailed: "Team verwijderen mislukt",
cannotDeleteDefault: "Het standaardteam of een team met leden kan niet worden verwijderd",
tableHeaderTeamName: "Teamnaam",
tableHeaderMembers: "Leden",
emptyState: "Geen teams gevonden.",
renameSaveButton: "Opslaan",
renameCancelButton: "Annuleren",
renameAction: "Hernoemen",
deleteAction: "Verwijderen",
totalMembers: "Totaal leden",
nameRequired: "Teamnaam is verplicht",
nameTooLong: "Teamnaam mag maximaal 50 tekens zijn",
duplicateName: "Er bestaat al een team met deze naam",
},
roles: {
heading: "Rollen",
description: "Beheer rollen en hun rechten. Ingebouwde rollen kunnen niet worden gewijzigd.",
createButton: "Aangepaste rol aanmaken",
newRoleHeading: "Nieuwe rol",
roleNamePlaceholder: "Rolnaam",
descriptionPlaceholder: "Beschrijving (optioneel)",
permissionsLabel: "Rechten",
createSubmitButton: "Aanmaken",
cancelButton: "Annuleren",
createSuccess: "Rol succesvol aangemaakt",
createFailed: "Rol aanmaken mislukt",
duplicateRoleError: "Er bestaat al een rol met die naam",
editHeading: "Rol bewerken: {name}",
editSaveButton: "Opslaan",
editCancelButton: "Annuleren",
updateSuccess: "Rol bijgewerkt",
updateFailed: "Rol bijwerken mislukt",
deleteConfirm:
'Rol "{name}" verwijderen? {count} gebruiker(s) moeten opnieuw worden toegewezen.',
deleteConfirmSimple: 'Rol "{name}" verwijderen?',
deleteSuccess: 'Rol "{name}" verwijderd',
deleteFailed: "Rol verwijderen mislukt",
emptyState: "Geen rollen gevonden.",
builtInBadge: "Ingebouwd",
userCountBadge: "{count} gebruiker(s)",
editRoleTitle: "Rol bewerken",
deleteRoleTitle: "Rol verwijderen",
permGroup: {
tools: "Gereedschap",
files: "Bestanden",
apiKeys: "API-sleutels",
pipelines: "Pipelines",
settings: "Instellingen",
users: "Gebruikers",
teams: "Teams",
system: "Systeem",
},
},
auditLog: {
heading: "Auditlog",
allActionsFilter: "Alle acties",
emptyState: "Geen auditlog-vermeldingen.",
tableHeaderTime: "Tijd",
tableHeaderUser: "Gebruiker",
tableHeaderAction: "Actie",
tableHeaderTarget: "Doel",
paginationInfo: "Pagina {page} van {totalPages} ({total} vermeldingen)",
previousButton: "Vorige",
nextButton: "Volgende",
justNow: "zojuist",
minutesAgo: "{mins} min geleden",
hoursAgo: "{hrs} uur geleden",
daysAgo: "{days} dagen geleden",
},
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-sleutels",
description: "Beheer API-sleutels voor programmatische toegang tot SnapOtter.",
keyNamePlaceholder: "Sleutelnaam (optioneel)",
generateButton: "API-sleutel genereren",
removeScopingLabel: "Rechtenbegrenzing verwijderen",
restrictPermissionsLabel: "Rechten beperken (optioneel)",
expiresLabel: "Verloopt:",
clearButton: "Wissen",
copyTitle: "Kopieren",
keyWarning: "Bewaar deze sleutel veilig. Hij wordt niet opnieuw getoond.",
existingKeysHeading: "Bestaande sleutels",
createdPrefix: "Aangemaakt {date}",
scopedPrefix: "Beperkt:",
expiresPrefix: "Verloopt {date}",
deleteKeyTitle: "Sleutel verwijderen",
deleteConfirm: "Deze API-sleutel verwijderen? Integraties die hem gebruiken zullen stoppen.",
emptyState: "Nog geen API-sleutels. Genereer er een om te beginnen.",
},
tools: {
heading: "Gereedschap",
description:
"Schakel individuele tools in of uit. Uitgeschakelde tools zijn verborgen voor alle gebruikers.",
restartBanner: "Herstart vereist om wijzigingen door te voeren.",
searchPlaceholder: "Gereedschap zoeken...",
noSearchResults: "Geen gereedschap gevonden bij je zoekopdracht.",
loadFailedError:
"Gereedschapsinstellingen laden mislukt. Opslaan is uitgeschakeld om dataverlies te voorkomen.",
saveButton: "Gereedschapsinstellingen opslaan",
disabledCount: "{count} tool(s) uitgeschakeld",
},
experimental: {
label: "Experimentele tools inschakelen",
description: "Toon tools die nog in ontwikkeling zijn. Deze kunnen instabiel zijn.",
},
fileManagement: {
title: "Bestandsbeheer",
maxAge: "Max bestandsleeftijd (uren)",
maxAgeDescription: "Hoe lang verwerkte bestanden bewaard worden voor automatisch opruimen",
startupCleanup: "Opruimen bij opstarten",
startupCleanupDescription: "Oude tijdelijke bestanden opruimen wanneer de server start",
},
analytics: {
heading: "Productanalyse",
description: "Deel anonieme gebruiksgegevens om SnapOtter te verbeteren.",
privacyNote: "Je afbeeldingen verlaten nooit je computer.",
disabledByAdmin: "Productanalyse is uitgeschakeld door de serverbeheerder.",
enabledLabel: "Analyse ingeschakeld",
disabledLabel: "Analyse uitgeschakeld",
learnMore: "Meer informatie",
},
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: "Over",
appName: "SnapOtter",
appDescription:
"Een zelf-gehoste, privacy-first beeldverwerkingssuite met 70+ tools. Schalen, comprimeren, converteren, watermerken en je beeldworkflows automatiseren zonder data naar de cloud te sturen.",
versionLabel: "Versie:",
linksHeading: "Links",
githubLink: "GitHub-repository",
docsLink: "Documentatie",
apiRefLink: "API-referentie (Swagger)",
licenseLabel: "License:",
licenseDescription:
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).",
},
},
auth: {
login: "Inloggen",
logout: "Uitloggen",
username: "Gebruikersnaam",
password: "Wachtwoord",
loginButton: "Inloggen",
loggingIn: "Inloggen...",
invalidCredentials: "Ongeldige gebruikersnaam of wachtwoord",
connectionError: "Verbindingsfout",
signInWith: "Inloggen met {provider}",
signInWithSso: "Inloggen met SSO",
or: "of",
methodLocal: "Lokaal",
methodOidc: "OIDC",
methodBoth: "Lokaal + OIDC",
oidcAuthFailed: "Authenticatie mislukt. Probeer het opnieuw.",
oidcProviderUnreachable: "Identiteitsprovider niet bereikbaar. Probeer het later opnieuw.",
oidcSessionExpired: "Inlogsessie verlopen. Probeer het opnieuw.",
oidcUserNotAuthorized:
"Je account heeft geen toegang tot deze applicatie. Neem contact op met je beheerder.",
oidcUserLimitReached: "Gebruikerslimiet bereikt. Neem contact op met je beheerder.",
oidcGenericError: "Authenticatiefout. Probeer het opnieuw.",
passwordManagedByProvider: "Wachtwoordwijzigingen worden beheerd door je identiteitsprovider.",
enterUsername: "Voer gebruikersnaam in",
enterPassword: "Voer je wachtwoord in",
heroTitle: "Jouw afbeeldingen. Blijven van jou.",
heroSubtitle: "Elke afbeeldingstool die je nodig hebt.",
rotatingPhrases: [
"Geen registratie. Geen accounts.",
"Geen uploads naar de cloud. Nooit.",
"100% lokale verwerking.",
"Gratis. Voor altijd.",
"Geen limieten. Geen verborgen plafonds.",
"Werkt volledig offline.",
"Onbeperkte batchverwerking.",
"70+ tools.",
"16 AI-modellen. Jouw hardware.",
"Razendsnel. Gebouwd op Sharp.",
"Geschikt voor air-gapped netwerken.",
"Een enkele Docker-container.",
"Open source. Altijd.",
"Elke pixel blijft op jouw hardware.",
"Jouw server. Jouw regels.",
"Klaar met een simpele docker pull.",
"Het zelf-gehoste alternatief.",
"Schalen, comprimeren, converteren. Lokaal.",
"Gratis beeldeditor. Zonder watermerken.",
"Bulk beeldverwerking. Onbeperkt.",
"Achtergrond offline verwijderen.",
"Het zelf-gehoste Canva-alternatief.",
"Geen API-sleutels nodig.",
"AVG-proof by design.",
"Werkt zonder internet.",
],
},
changePassword: {
title: "Wachtwoord wijzigen",
description:
"Je moet een nieuw wachtwoord instellen voordat je verder kunt. Je wachtwoord moet minimaal 8 tekens bevatten met hoofd- en kleine letters en een cijfer.",
usernameLabel: "Gebruikersnaam",
currentPasswordLabel: "Huidig wachtwoord",
currentPasswordPlaceholder: "Voer huidig wachtwoord in",
newPasswordLabel: "Nieuw wachtwoord",
generateButton: "Sterk wachtwoord genereren",
newPasswordPlaceholder: "Minimaal 8 tekens",
confirmPasswordLabel: "Nieuw wachtwoord bevestigen",
confirmPasswordPlaceholder: "Herhaal nieuw wachtwoord",
passwordsMismatch: "Wachtwoorden komen niet overeen",
failedError: "Wachtwoord wijzigen mislukt",
connectionError: "Verbindingsfout",
changingButton: "Wijzigen...",
changeButton: "Wachtwoord wijzigen",
sidebarTitle: "Bijna klaar",
sidebarDescription:
"Stel een sterk wachtwoord in om je account te beveiligen, dan ben je er klaar voor.",
},
automate: {
title: "Automatiseren",
invalidPipelineFile: "Geen geldig SnapOtter-pipelinebestand",
newerVersion: "Deze pipeline is gemaakt met een nieuwere versie van SnapOtter",
missingName: "Pipelinebestand mist een naam",
noSteps: "Pipelinebestand heeft geen stappen",
importFailed: "Importeren mislukt",
couldNotRead: "Pipelinebestand kon niet worden gelezen",
fileCount: "{count} bestand",
fileCountPlural: "{count} bestanden",
importFromLibrary: "Importeren uit bibliotheek",
addButton: "+ Toevoegen",
libraryButton: "Bibliotheek",
clearButton: "Wissen",
processingFailed: "Verwerking mislukt voor dit bestand",
processingMultiple: "{count} bestanden verwerken...",
processingPipeline: "Pipeline verwerken...",
processButton: "Verwerken",
processButtonMultiple: "Verwerken ({count})",
processAllButton: "Alles verwerken ({count})",
addTool: "Tool toevoegen",
toolPalette: "Gereedschapspalet",
clickToAdd: "Klik om toe te voegen aan pipeline",
savedLabel: "Opgeslagen",
importButton: "Importeren",
noSavedPipelines: "Geen opgeslagen pipelines",
stepCount: "({count} stap)",
stepCountPlural: "({count} stappen)",
exportPipeline: "Pipeline exporteren",
deletePipeline: "Pipeline verwijderen",
moreCount: "+{count} meer",
pipelineBuilder: "Pipeline-builder",
addToolsPrompt: "Voeg tools toe vanuit het palet om te beginnen",
stepsConfigured: "{count} stap geconfigureerd",
stepsConfiguredPlural: "{count} stappen geconfigureerd",
noFilesLoaded: "Geen bestanden geladen",
downloadZip: "ZIP downloaden",
saveButton: "Opslaan",
pipelineNamePlaceholder: "Pipeline-naam",
descriptionPlaceholder: "Beschrijving",
savingIndicator: "...",
cancelButton: "Annuleren",
preview: "Voorbeeld",
previousImage: "Vorige afbeelding",
nextImage: "Volgende afbeelding",
imageCounter: "{current} / {total}",
imageArea: "Afbeeldingsgebied",
templateSocialMedia: "Social media klaar",
templatePrivacyClean: "Privacyschoning",
templateWebOptimization: "Weboptimalisatie",
templateProfilePicture: "Profielfoto",
templateWatermarkBatch: "Watermerk-batch",
createNew: "Nieuwe automatisering aanmaken",
savedAutomations: "Opgeslagen automatiseringen",
templates: "Templates",
addStep: "Stap toevoegen",
removeStep: "Verwijderen",
moveUp: "Omhoog",
moveDown: "Omlaag",
savePipeline: "Pipeline opslaan",
runPipeline: "Verwerken",
pipelineName: "Pipeline-naam",
pipelineDescription: "Beschrijving (optioneel)",
noStepsPrompt: "Voeg stappen toe om je automatisering te bouwen",
noStepsHeading: "No steps yet",
searchToolsPlaceholder: "Search tools...",
step: "Stap",
},
nav: {
tools: "Tools",
reader: "Reader",
automate: "Automatiseren",
editor: "Editor",
files: "Bestanden",
help: "Help",
settings: "Instellingen",
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: "Dit bestandstype wordt niet ondersteund door deze tool",
urlFetchFailed: "Afbeelding kon niet worden opgehaald van URL",
ariaLabel: "Bestand-dropzone",
dropPrompt: "Sleep je afbeeldingen hierheen",
browseOrPaste: "klik om te bladeren, of plak vanuit het klembord",
uploadButton: "Uploaden",
defaultFormats: "PNG, JPG, WebP, HEIC, RAW, PSD en 65+ formaten",
orSeparator: "of",
urlPlaceholder: "Plak afbeeldings-URL...",
urlLoadingIndicator: "...",
addUrlButton: "Toevoegen",
importMultipleUrls: "Meerdere URLs importeren...",
filesSelected: "{count} bestanden geselecteerd",
},
reviewPanel: {
processedResultAlt: "Verwerkt resultaat",
sizeLabel: "Grootte: {size}",
typeLabel: "Type: {type}",
processedLabel: "Verwerkt: {time}",
undoButton: "Ongedaan maken",
downloadButton: "Downloaden",
openInEditor: "Openen in editor",
reviewHeading: "Beoordelen",
continueEditing: "Verder bewerken",
},
features: {
notEnabledTitle: "Functie niet ingeschakeld",
notEnabledDescription:
"Deze functie is niet ingeschakeld. Vraag je beheerder om het in te schakelen bij Instellingen.",
requiresDownload: "Deze functie vereist een extra download (~{size})",
retryButton: "Opnieuw proberen",
queued: "In wachtrij voor installatie...",
enableButton: "{name} inschakelen",
repairRequired: "Repair Required",
repairDescription: "Some model files are missing or corrupted. Repair will re-download them.",
repairButton: "Repair {name}",
lessThanMinute: "Minder dan een minuut resterend",
oneMinuteLeft: "~1 minuut resterend",
minutesLeft: "~{mins} minuten resterend",
progressMessages: [
"Bijna klaar... waarschijnlijk...",
"Goede dingen kosten tijd...",
"Nog altijd sneller dan verf zien drogen...",
"Je geduld is echt bewonderenswaardig...",
"Harder aan het werk dan het lijkt...",
"Dit is het spannende deel, echt waar...",
"Druk bezig achter de schermen...",
"Als je dit leest, werkt het...",
"Iets geweldigs wordt voorbereid...",
"Elke seconde waard, pinkzweer...",
"De spanning is onderdeel van de ervaring...",
"Je computer leert nieuwe trucjes...",
"Je superkrachten worden ingesteld...",
"Je afbeeldingen zullen je later bedanken...",
"Laden... maar dan met stijl...",
"Goed moment voor een kop koffie...",
"Rome is ook niet in een dag gebouwd...",
"Ssst... genie aan het werk...",
"Je foto's worden al jaloers...",
"Het dreamteam wordt samengesteld...",
"Geweldigheid wordt uitgepakt...",
"Bijna klaar met nadenken over beginnen... grapje...",
"Plot twist: er gebeurt echt iets...",
"De creatieve motoren draaien warm...",
"Verbeeldingskracht wordt geladen...",
"Geen screensaver, beloofd...",
"Kunst heeft installatietijd nodig...",
"Je toekomstige zelf zal je bedanken...",
"Heel slimme bestanden worden opgehaald...",
"Hou vol, het beste moet nog komen...",
],
},
help: {
heading: "Help",
gettingStarted: {
heading: "Aan de slag",
description:
"Kies een tool uit de zijbalk of zoek er een. Upload een afbeelding door het op de pagina te slepen of op het uploadgebied te klikken. Pas de instellingen aan en download je resultaat.",
},
keyboardShortcuts: {
heading: "Sneltoetsen",
focusSearchBar: "Zoekbalk focussen",
goToTools: "Naar gereedschap",
toggleTheme: "Thema wisselen",
goToResize: "Naar Formaat wijzigen",
goToCrop: "Naar Bijsnijden",
goToCompress: "Naar Comprimeren",
goToConvert: "Naar Converteren",
goToRemoveBackground: "Naar Achtergrond verwijderen",
goToWatermarkText: "Naar Tekst-watermerk",
goToStripMetadata: "Naar Metadata verwijderen",
goToImageInfo: "Naar Beeldinformatie",
},
resources: {
heading: "Bronnen",
githubLink: "GitHub-repository",
reportIssueLink: "Probleem melden",
docsLink: "Documentatie",
apiRefLink: "API-referentie (Swagger)",
},
versionLabel: "SnapOtter v{version}",
},
errors: {
generic: "Er is een fout opgetreden",
offline: "Je bent offline",
reconnecting: "Opnieuw verbinden met server...",
connected: "Verbonden",
processingFailed: "Verwerking mislukt voor dit bestand",
timeout: "Time-out. De server is mogelijk overbelast. Probeer het opnieuw.",
networkError: "Netwerkfout. Controleer je verbinding.",
invalidCredentials: "Ongeldige gebruikersnaam of wachtwoord",
connectionError: "Verbindingsfout",
},
analytics: {
consentTitle: "Help SnapOtter verbeteren",
consentDescription:
"Anonieme gebruiksstatistieken helpen ons bugs te fixen en tools te bouwen die je echt nodig hebt. Je afbeeldingen en bestanden blijven op je computer.",
consentChangeable: "Je kunt dit altijd uitschakelen bij Instellingen.",
acceptButton: "Ja, klinkt goed",
declineButton: "Nu even niet",
settingsTitle: "Productanalyse",
settingsDescription: "Deel anonieme gebruiksgegevens om SnapOtter te verbeteren.",
settingsPrivacy: "Je afbeeldingen verlaten nooit je computer.",
settingsDisabledByAdmin: "Productanalyse is uitgeschakeld door de serverbeheerder.",
learnMore: "Meer informatie",
},
sidebar: {
tools: "Tools",
grid: "Raster",
automate: "Automatiseren",
editor: "Editor",
files: "Bestanden",
help: "Help",
settings: "Instellingen",
},
toolCard: {
addToFavourites: "Aan favorieten toevoegen",
},
appLayout: {
mobileNavTools: "Tools",
mobileNavAutomate: "Automatiseren",
mobileNavEditor: "Editor",
mobileNavFiles: "Bestanden",
mobileNavSettings: "Instellingen",
},
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;