Files
SnapOtter/packages/shared/src/i18n/pl.ts
T
SnapOtter 71fefc05b0 feat(modality): rename "file" modality label "Data" -> "Files"
The fifth user-facing group is now Image, Video, Audio, PDF, Files
(internal modality id stays "file"; section.ts "files" was already
"Files"). Updates modality.ts label + comment, all 21 i18n locales
(categories.data "Data Files"->"Files", modalities.documentsAndFiles
"PDF & Data"->"PDF & Files", dead homePage.data), landing cards/hero
search/tools filter, docs headings, and e2e modality-tab assertions
(/^Data/ -> /^Files/, which had been failing).
2026-06-21 02:45:56 +08:00

3482 lines
121 KiB
TypeScript

import type { TranslationKeys } from "./en.js";
export const pl: TranslationKeys = {
common: {
upload: "Prześlij z komputera",
process: "Przetwórz",
download: "Pobierz",
cancel: "Anuluj",
save: "Zapisz",
delete: "Usuń",
settings: "Ustawienia",
search: "Szukaj narzędzi...",
dropFiles: "Przeciągnij pliki tutaj lub kliknij przycisk przesyłania",
loading: "Ładowanie...",
saving: "Saving...",
error: "Wystąpił błąd",
confirm: "Potwierdź",
close: "Zamknij",
back: "Wstecz",
next: "Dalej",
clear: "Wyczyść",
copy: "Kopiuj",
copied: "Skopiowano!",
noResults: "Nie znaleziono wyników",
showLess: "Pokaż mniej",
showMore: "Pokaż jeszcze {count}",
experimental: "Eksperymentalne",
enabled: "Włączone",
disabled: "Wyłączone",
rename: "Zmień nazwę",
edit: "Edytuj",
actions: "Akcje",
create: "Utwórz",
or: "lub",
goHome: "Strona główna",
somethingWentWrong: "Coś poszło nie tak",
unexpectedError: "Wystąpił nieoczekiwany błąd.",
retry: "Ponów",
privacyPolicy: "Polityka prywatności",
pageNotFound: "Page not found",
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
},
categories: {
essentials: "Podstawowe",
adjustments: "Korekta",
enhance: "Enhance & AI",
watermark: "Znak wodny i nakładka",
layout: "Układ i kompozycja",
utilities: "Narzędzia",
optimization: "Optymalizacja",
format: "Format i konwersja",
"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: "Files",
archives: "Archives",
},
modalities: {
image: "Image",
video: "Video",
audio: "Audio",
documentsAndFiles: "PDF & Files",
},
tools: {
resize: {
name: "Zmiana rozmiaru",
description:
"Zmiana rozmiaru w pikselach, procentach lub według szablonów mediów społecznościowych",
},
crop: {
name: "Kadrowanie",
description: "Kadrowanie dowolne, szablony proporcji, kadrowanie kształtowe",
},
rotate: {
name: "Obrót i odbicie",
description: "Obracanie, odbijanie i prostowanie obrazów",
},
convert: { name: "Konwersja", description: "Konwersja między formatami obrazów" },
compress: {
name: "Kompresja",
description: "Zmniejszenie rozmiaru pliku przez jakość lub docelowy rozmiar",
},
"optimize-for-web": {
name: "Optymalizacja dla sieci",
description:
"Optymalizacja obrazów dla sieci z konwersją formatu, kontrolą jakości i podglądem na żywo",
},
"strip-metadata": {
name: "Usuwanie metadanych",
description: "Usuwanie EXIF, GPS i informacji o aparacie",
},
"edit-metadata": {
name: "Edycja metadanych",
description: "Edycja EXIF, IPTC, XMP, GPS, słów kluczowych i dat",
},
"bulk-rename": {
name: "Masowa zmiana nazw",
description: "Zmiana nazw wielu plików według wzorca",
},
"image-to-pdf": {
name: "Obraz do PDF",
description: "Łączenie obrazów w dokument PDF",
},
"pdf-to-image": {
name: "PDF do obrazu",
description: "Konwersja stron PDF na obrazy",
},
favicon: {
name: "Generator Favicon",
description: "Generowanie wszystkich rozmiarów Favicon i ikon aplikacji",
},
"adjust-colors": {
name: "Korekta kolorów",
description: "Jasność, kontrast, ekspozycja, nasycenie, temperatura, ostrość i efekty",
},
sharpening: {
name: "Wyostrzanie",
description: "Wyostrzanie adaptacyjne, maska wyostrzająca i górnoprzepustowe z szablonami",
},
"replace-color": {
name: "Zamiana i inwersja koloru",
description: "Zamiana określonych kolorów lub inwersja",
},
"color-blindness": {
name: "Symulacja daltonizmu",
description: "Symulacja postrzegania obrazów przy różnych typach zaburzeń widzenia kolorów",
},
"remove-background": {
name: "Usuwanie tła",
description: "Usuwanie tła za pomocą AI",
},
upscale: {
name: "Powiększanie obrazu",
description: "Powiększanie z super-rozdzielczością AI",
},
"erase-object": {
name: "Usuwanie obiektów",
description: "Usuwanie niechcianych obiektów za pomocą AI",
},
ocr: {
name: "OCR / Wyodrębnianie tekstu",
description: "Wyodrębnianie tekstu z obrazów z dokładnością AI",
},
"ocr-pdf": {
name: "PDF OCR",
description: "Wyodrebnianie tekstu z dokumentów PDF za pomoca OCR opartego na AI",
},
"blur-faces": {
name: "Rozmywanie twarzy / danych",
description: "Automatyczne wykrywanie i rozmywanie twarzy oraz danych wrażliwych",
},
"enhance-faces": {
name: "Ulepszanie twarzy",
description: "Odtwarzanie i ulepszanie twarzy za pomocą AI",
},
"smart-crop": {
name: "Inteligentne kadrowanie",
description: "Inteligentne kadrowanie według obiektu, twarzy lub przycinania krawędzi",
},
"image-enhancement": {
name: "Ulepszanie obrazu",
description:
"Automatyczne ulepszanie jednym kliknięciem: inteligentna korekta ekspozycji, kontrastu, koloru i ostrości",
},
"noise-removal": {
name: "Usuwanie szumu",
description: "Usuwanie szumu i ziarnistości za pomocą AI",
},
"red-eye-removal": {
name: "Usuwanie czerwonych oczu",
description:
"Wykrywanie i korekcja efektu czerwonych oczu na zdjęciach z lampą błyskową za pomocą AI",
},
"restore-photo": {
name: "Restauracja zdjęć",
description: "Naprawa rys, rozdarć i uszkodzeń na starych zdjęciach za pomocą AI",
},
"content-aware-resize": {
name: "Zmiana rozmiaru z uwzględnieniem treści",
description: "Inteligentna zmiana rozmiaru z zachowaniem istotnej treści",
},
"ai-canvas-expand": {
name: "AI-rozszerzanie płótna",
description: "Rozszerzanie płótna z wypełnianiem AI",
},
colorize: {
name: "Koloryzacja AI",
description:
"Konwersja zdjęć czarno-białych na kolorowe za pomocą modeli głębokiego uczenia AI",
},
"passport-photo": {
name: "Zdjęcie paszportowe",
description:
"Tworzenie zdjęć paszportowych, wizowych i do dowodów zgodnych z wymogami z automatycznym wykrywaniem twarzy",
},
"transcribe-audio": {
name: "Transkrypcja audio",
description: "Zamien mowe na tekst za pomoca transkrypcji opartej na AI",
},
"auto-subtitles": {
name: "Automatyczne napisy",
description: "Generuj pliki napisow ze sciezek dzwiekowych wideo",
},
"transparency-fixer": {
name: "Naprawa przezroczystości PNG",
description: "Naprawa fałszywej przezroczystości PNG jednym kliknięciem",
},
"background-replace": {
name: "Zamiana tla",
description: "Zamien tlo obrazu na jednolity kolor",
},
"blur-background": {
name: "Rozmycie tla",
description: "Rozmyj tlo zachowujac ostrosc obiektu",
},
"watermark-text": {
name: "Tekstowy znak wodny",
description: "Dodawanie tekstowego znaku wodnego",
},
"watermark-image": {
name: "Graficzny znak wodny",
description: "Nakładanie logo jako znaku wodnego",
},
"text-overlay": {
name: "Nakładka tekstowa",
description: "Dodawanie stylizowanego tekstu na obrazy",
},
compose: {
name: "Kompozycja obrazów",
description: "Nakładanie obrazów z ustawieniem pozycji i przezroczystości",
},
"meme-generator": {
name: "Generator Meme",
description:
"Tworzenie memów z popularnymi szablonami lub własnymi obrazami. Klasyczny tekst w stylu Impact z konfigurowalnymi czcionkami, kolorami i pozycjonowaniem.",
},
info: {
name: "Informacje o obrazie",
description: "Podgląd wszystkich metadanych i właściwości obrazu",
},
compare: {
name: "Porównanie obrazów",
description: "Porównanie dwóch obrazów obok siebie",
},
"find-duplicates": {
name: "Wyszukiwanie duplikatów",
description: "Wykrywanie dokładnych i przybliżonych duplikatów obrazów",
},
"color-palette": {
name: "Paleta kolorów",
description: "Wyodrębnianie dominujących kolorów z obrazu",
},
"qr-generate": {
name: "Generator kodów QR",
description:
"Generowanie stylizowanych kodów QR z konfigurowalnymi kolorami, wzorami i logotypami",
},
"html-to-image": {
name: "HTML to Image",
description: "Capture webpages as high-quality images",
},
"barcode-read": {
name: "Czytnik kodów kreskowych",
description: "Skanowanie obrazów w poszukiwaniu kodów QR, kreskowych i 2D",
},
collage: {
name: "Kolaż / Siatka",
description: "Łączenie obrazów w piękne kolaże siatkowe z ponad 25 szablonami",
},
stitch: {
name: "Łączenie / Scalanie",
description: "Łączenie obrazów obok siebie, w stos lub w siatkę",
},
split: {
name: "Dzielenie obrazu",
description:
"Dzielenie obrazów na kafelki siatki lub według rozmiaru w pikselach z podglądem na żywo",
},
border: {
name: "Ramka i obramowanie",
description:
"Dodawanie ramek, marginesów, zaokrąglonych rogów i cieni z szablonami jednym kliknięciem",
},
beautify: {
name: "Upiększanie zrzutu ekranu",
description:
"Dodawanie gradientowych teł, ramek urządzeń, cieni i rozmiarów dla mediów społecznościowych do zrzutów ekranu",
},
"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 do rastra",
description:
"Konwersja SVG do PNG, JPEG, WebP, AVIF, TIFF, GIF lub HEIF z konfigurowalną skalą i DPI",
},
vectorize: {
name: "Obraz do SVG",
description: "Konwersja obrazów na skalowalną grafikę wektorową",
},
"gif-tools": {
name: "Narzędzia GIF",
description:
"Zmiana rozmiaru, optymalizacja, zmiana prędkości, odwracanie, wyodrębnianie klatek i obracanie animowanych GIF",
},
"image-to-base64": {
name: "Obraz do Base64",
description: "Konwersja obrazów na ciągi Base64 do osadzania w HTML, CSS i nie tylko",
},
"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: "Konstruktor Pipeline",
description: "Łączenie wielu narzędzi w przepływ pracy",
},
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",
inputNotPreviewable: "Preview not available for this file type",
},
},
toolSettings: {
compress: {
compressionMode: "Tryb kompresji",
targetSize: "Docelowy rozmiar",
quality: "Jakość",
smallestFile: "Najmniejszy plik",
bestQuality: "Najlepsza jakość",
submit: "Kompresuj",
submitBatch: "Kompresuj ({count} plików)",
progressLabel: "Kompresja",
original: "Oryginał: {size} KB",
processed: "Przetworzono: {size} KB",
saved: "Zaoszczędzono: {percent}%",
},
resize: {
customSize: "Rozmiar niestandardowy",
scale: "Skala",
presets: "Szablony",
contentAware: "Z uwzględnieniem treści",
widthPx: "Szerokość (px)",
heightPx: "Wysokość (px)",
fitMode: "Tryb dopasowania",
cropToFit: "Kadruj do rozmiaru",
fitInside: "Wpasuj wewnątrz",
stretch: "Rozciągnij",
limitToOriginalSize: "Ogranicz do oryginalnego rozmiaru",
limitToOriginalSizeHint:
"Jeśli obraz jest już mniejszy niż docelowy rozmiar, pozostaw go bez zmian zamiast powiększać",
scalePercent: "Skala (%)",
resizeToSquare: "Zmień na kwadrat",
protectFaces: "Chroń twarze",
smoothing: "Wygładzanie",
edgeSensitivity: "Czułość krawędzi",
submit: "Zmień rozmiar",
submitBatch: "Zmień rozmiar ({count} plików)",
progressLabel: "Zmiana rozmiaru",
},
crop: {
aspectRatio: "Proporcje",
custom: "Niestandardowe",
positionAndSize: "Pozycja i rozmiar",
ruleOfThirds: "Reguła trzecich",
leftOffsetPx: "Przesunięcie od lewej (px)",
topOffsetPx: "Przesunięcie od góry (px)",
submit: "Kadruj",
submitBatch: "Kadruj ({count} plików)",
progressLabel: "Kadrowanie",
},
rotate: {
rotate: "Obróć",
angle: "Kąt",
straighten: "Wyprostuj",
flip: "Odbij",
horizontal: "Poziomo",
vertical: "Pionowo",
resetAllChanges: "Resetuj wszystkie zmiany",
submit: "Zastosuj",
submitBatch: "Zastosuj ({count} plików)",
progressLabel: "Stosowanie",
},
convert: {
targetFormat: "Format docelowy",
sourceFormat: "Format źródłowy",
quality: "Jakość",
submit: "Konwertuj",
submitBatch: "Konwertuj ({count} plików)",
progressLabel: "Konwersja",
},
"optimize-for-web": {
outputFormat: "Format wyjściowy",
quality: "Jakość",
smallestFile: "Najmniejszy plik",
bestQuality: "Najlepsza jakość",
maxDimensions: "Maks. wymiary",
maxWidth: "Maks. szerokość",
maxHeight: "Maks. wysokość",
stripMetadata: "Usuń metadane",
sizeComparison: "Porównanie rozmiarów",
optimized: "Zoptymalizowano:",
smaller: "O {percent}% mniejszy",
larger: "O {percent}% większy",
submit: "Przetwórz i pobierz",
submitBatch: "Przetwórz i pobierz ({count} plików)",
progressLabel: "Optymalizacja",
},
"strip-metadata": {
currentMetadata: "Bieżące metadane",
readingMetadata: "Odczytywanie metadanych...",
noMetadataFound: "Nie znaleziono metadanych w tym obrazie.",
removeAllMetadata: "Usuń wszystkie metadane",
selectSpecific: "Lub wybierz konkretne metadane:",
stripExif: "Usuń EXIF (informacje o aparacie, data, ekspozycja)",
stripGps: "Usuń GPS (dane lokalizacyjne)",
stripIcc: "Usuń ICC (profil kolorów)",
stripXmp: "Usuń XMP (rozszerzalne metadane)",
locationFound: "znaleziono lokalizację",
locationWarning:
"Ten obraz zawiera Państwa dokładną lokalizację. Zalecamy usunięcie danych GPS przed udostępnieniem.",
metadataSections: "Znaleziono {count} sekcję metadanych",
metadataSectionsPlural: "Znaleziono {count} sekcji metadanych",
metadataRemoved: "Usunięto metadane: {size} KB",
submit: "Usuń metadane",
progressLabel: "Usuwanie metadanych",
},
"edit-metadata": {
readingMetadata: "Odczytywanie metadanych...",
couldNotReadMetadata: "Nie udało się odczytać metadanych. Pola będą puste.",
basicInfo: "Informacje podstawowe",
description: "Opis",
artist: "Autor",
copyright: "Prawa autorskie",
software: "Oprogramowanie",
iptc: "IPTC",
title: "Tytuł",
headline: "Nagłówek",
city: "Miasto",
stateProvince: "Województwo/Region",
country: "Kraj",
dateAndTime: "Data i czas",
editDates: "Edytuj daty",
shiftAllDates: "Przesuń wszystkie daty",
dateModified: "Data modyfikacji",
dateTaken: "Data wykonania",
shiftHint:
"Przesuń wszystkie pola dat o podany interwał (przydatne do korekty stref czasowych)",
direction: "Kierunek",
forward: "+ Do przodu",
backward: "- Do tyłu",
hoursMinutes: "Godziny:Minuty",
locationGps: "Lokalizacja (GPS)",
locationDataFound: "Znaleziono dane lokalizacyjne",
noGpsData: "Brak danych GPS. Dodaj współrzędne poniżej.",
latitude: "Szerokość geograficzna",
longitude: "Długość geograficzna",
altitudeMeters: "Wysokość (metry)",
removeAllGpsData: "Usuń wszystkie dane GPS",
keywords: "Słowa kluczowe",
addKeywordPlaceholder: "Dodaj słowo kluczowe i naciśnij Enter",
addToExisting: "Dodaj do istniejących",
replaceAll: "Zamień wszystkie",
allMetadata: "Wszystkie metadane",
templates: "Szablony",
templateNamePlaceholder: "Nazwa szablonu",
uploadPrompt: "Prześlij obraz, aby edytować jego metadane.",
changes: "Zmian: {count}:",
modified: "Zmodyfikowano: {count}",
removed: "Usunięto: {count}",
gpsCleared: "GPS usunięto",
gpsAdded: "GPS dodano",
datesShifted: "daty przesunięte",
submit: "Zastosuj metadane",
progressLabel: "Zapisywanie metadanych",
},
"bulk-rename": {
pattern: "Wzorzec",
patternHint: "Zmienne: {{index}}, {{padded}}, {{original}}",
startIndex: "Indeks początkowy",
preview: "Podgląd",
andMore: "... i jeszcze {count}",
renaming: "Zmiana nazw...",
submit: "Zmień nazwę {count} plików",
zipDownloaded: "Archiwum ZIP pobrane pomyślnie",
},
"image-to-pdf": {
imageCount: "{count} obraz zostanie skonwertowany do {mode}",
imageCountPlural: "{count} obrazów zostanie skonwertowanych do {mode}",
singlePdfMode: "jednego PDF, jeden obraz na stronę",
separatePdfMode: "oddzielnych plików PDF, po jednym na obraz",
combineAllImages: "Połącz wszystkie obrazy w jeden PDF",
pageSize: "Rozmiar strony",
orientation: "Orientacja",
portrait: "Pionowa",
landscape: "Pozioma",
margin: "Margines",
targetSizeLabel: "Docelowy rozmiar pliku (opcjonalnie)",
targetSizePlaceholder: "np. 2",
targetSizeHint: "Pozostaw puste dla maksymalnej jakości",
targetSizeMet: "Osiągnięto docelowy rozmiar",
targetSizeNotMet:
"Nie udało się osiągnąć docelowego rozmiaru. Plik skompresowany do minimalnej jakości.",
targetSizeTooSmall: "Docelowy rozmiar musi wynosić co najmniej 50KB",
jpegQualityLabel: "Użyta jakość JPEG",
noImage: "Brak obrazu",
submitCollate: "Utwórz PDF ({count} stron)",
submitSeparate: "Utwórz {count} plików PDF",
downloadPdf: "Pobierz PDF",
downloadZip: "Pobierz ZIP",
progressLabel: "Tworzenie PDF",
uploadingImages: "Przesyłanie obrazów...",
processingPages: "Przetwarzanie {count} stron...",
},
"pdf-to-image": {
dropPdf: "Przeciągnij PDF tutaj lub kliknij, aby wybrać",
readingPdf: "Odczytywanie PDF...",
pageCount: "{count} strona",
pageCountPlural: "{count} stron",
outputFormat: "Format wyjściowy",
quality: "Jakość",
resolutionDpi: "Rozdzielczość (DPI)",
dpiScreen: "Ekran",
dpiStandard: "Standard",
dpiPrint: "Druk",
dpiHighQuality: "Wysoka jakość",
colorMode: "Tryb koloru",
colorModeColor: "Kolorowy",
colorModeGrayscale: "Skala szarości",
colorModeBw: "Czarno-biały",
pages: "Strony",
allPages: "Wszystkie strony",
pagesHint: "np. 1-3, 5, 8-10 (dokument ma {count} stron)",
converting: "Konwersja...",
submit: "Konwertuj {count} stronę",
submitPlural: "Konwertuj {count} stron",
downloadAllZip: "Pobierz wszystko (ZIP)",
},
favicon: {
uploadHint:
"Prześlij kwadratowe obrazy (zalecane 512x512 lub większe), aby wygenerować wszystkie rozmiary Favicon i ikon aplikacji.",
multipleHint: "Każdy z {count} obrazów otrzyma własny folder w archiwum ZIP.",
generatedSizes: "Generowane rozmiary (na obraz)",
plusManifest: "+ manifest.json + fragment HTML",
submit: "Generuj Favicon ({count} obraz)",
submitPlural: "Generuj Favicon ({count} obrazów)",
downloadZip: "Pobierz ZIP z Favicon",
progressLabel: "Generowanie Favicon",
},
"adjust-colors": {
light: "Światło",
brightness: "Jasność",
contrast: "Kontrast",
exposure: "Ekspozycja",
color: "Kolor",
saturation: "Nasycenie",
temperature: "Temperatura",
temperatureHint: "chłodna / ciepła",
tint: "Odcień",
tintHint: "zielony / magenta",
hue: "Barwa",
detail: "Szczegóły",
sharpness: "Ostrość",
effects: "Efekty",
none: "brak",
grayscale: "skala szarości",
sepia: "sepia",
invert: "inwersja",
colorChannels: "Kanały kolorów",
channelModified: "zmodyfikowany",
red: "Czerwony",
green: "Zielony",
blue: "Niebieski",
resetAll: "Resetuj wszystko",
submit: "Zastosuj",
submitBatch: "Zastosuj ({count} plików)",
progressLabel: "Korekta kolorów",
},
sharpening: {
method: "Metoda",
adaptive: "Adaptacyjna",
unsharpMask: "Maska wyostrzająca",
highPass: "Górnoprzepustowa",
presets: "Szablony",
textureAmount: "Ilość tekstury",
amount: "Ilość",
strength: "Siła",
noiseReduction: "Redukcja szumu",
off: "wył.",
lightDenoise: "lekka",
mediumDenoise: "średnia",
strongDenoise: "silna",
advancedControls: "Zaawansowane ustawienia",
radius: "Promień",
flatProtection: "Ochrona płaskich obszarów",
detailThreshold: "Próg szczegółów",
haloLimitLight: "Limit poświaty (jasny)",
haloLimitDark: "Limit poświaty (ciemny)",
threshold: "Próg",
kernelSize: "Rozmiar jądra",
submit: "Wyostrz",
submitBatch: "Wyostrz ({count} plików)",
progressLabel: "Wyostrzanie",
},
"replace-color": {
sourceColor: "Kolor źródłowy (do zamiany)",
targetColor: "Kolor docelowy (zamiennik)",
makeTransparent: "Zrób przezroczystym",
tolerance: "Tolerancja",
exactMatch: "Dokładne dopasowanie",
wideRange: "Szeroki zakres",
submit: "Zamień kolor",
submitBatch: "Zamień kolor ({count} plików)",
progressLabel: "Zamiana koloru",
},
"color-blindness": {
simulationType: "Typ symulacji",
redGreen: "Czerwono-zielony",
blueYellow: "Niebiesko-żółty",
monochromatic: "Monochromatyczny",
submit: "Symuluj",
submitBatch: "Symuluj ({count} plików)",
progressLabel: "Symulacja daltonizmu",
},
"remove-background": {
subject: "Obiekt",
people: "Ludzie",
products: "Produkty",
general: "Ogólne",
passportIdPhoto: "Paszport / Dowód osobisty",
quality: "Jakość",
fast: "Szybko",
hd: "HD",
max: "Maks.",
ultra: "Ultra",
background: "Tło",
transparent: "Przezroczyste",
bgColor: "Kolor",
gradient: "Gradient",
image: "Obraz",
gradientDirection: "Kierunek",
chooseBackgroundImage: "Wybierz obraz tła",
effectsSection: "Efekty",
effectsActive: "aktywne",
blurBackground: "Rozmycie tła",
intensity: "Intensywność",
addShadow: "Dodaj cień",
opacity: "Krycie",
outputFormat: "Output Format",
edgeSmoothing: "Edge Smoothing",
edgeSmoothingOff: "Off",
edgeSmoothingLight: "Light",
edgeSmoothingMedium: "Medium",
edgeSmoothingStrong: "Strong",
colorDecontamination: "Color Decontamination",
rendering: "Renderowanie...",
submit: "Usuń tło",
submitBatch: "Usuń tło ({count} plików)",
progressLabel: "Usuwanie tła",
},
upscale: {
scaleFactor: "Współczynnik skali",
quality: "Jakość",
enhanceFaces: "Ulepsz twarze",
noiseReduction: "Redukcja szumu",
noiseReductionHint:
"Wygładza ziarnistość i szum. Wyższe wartości usuwają więcej szumu, ale mogą zmiękczyć szczegóły.",
outputFormat: "Format wyjściowy",
submit: "Powiększ {scale}x",
submitBatch: "Powiększ {scale}x ({count} plików)",
progressLabel: "Powiększanie obrazu",
progressLabelBatch: "Powiększanie {count} obrazów",
},
"erase-object": {
brushSize: "Rozmiar pędzla",
fine: "Cienki",
wide: "Szeroki",
undo: "Cofnij",
clear: "Wyczyść",
outputFormat: "Format wyjściowy",
quality: "Jakość",
paintHint: "Zamaluj obiekty, które chcesz usunąć. Naciśnij Ctrl+Z, aby cofnąć.",
submit: "Usuń obiekt",
submitBatch: "Usuń wszystko ({count})",
progressLabel: "Usuwanie obiektu",
},
ocr: {
quality: "Jakość",
enhanceBeforeScanning: "Ulepsz przed skanowaniem",
enhanceHint:
"Automatycznie prostuje, poprawia kontrast, usuwa szum i powiększa obraz przed skanowaniem w celu lepszej dokładności.",
language: "Język",
autoDetect: "Automatyczne wykrywanie",
extractedText: "Wyodrębniony tekst",
noTextDetected: "Nie wykryto tekstu w tym obrazie",
characters: "{count} znaków",
submit: "Wyodrębnij tekst",
submitBatch: "Wyodrębnij tekst ({count} plików)",
progressLabel: "Wyodrębnianie tekstu",
},
"ocr-pdf": {
quality: "Jakosc",
language: "Jezyk",
autoDetect: "Automatyczne wykrywanie",
pages: "Strony",
pagesPlaceholder: "all, 1-3, 5",
pagesHint: "Wprowadz numery stron lub zakresy (np. 1-3, 5, 8-10). Maks. 50 stron.",
submit: "Wyodrebnij tekst",
submitBatch: "Wyodrebnij tekst ({count} plików)",
progressLabel: "Wyodrębnianie tekstu z PDF",
},
"blur-faces": {
blurRadius: "Promień rozmycia",
blurLight: "Lekkie",
blurHeavy: "Silne",
detectionSensitivity: "Czułość wykrywania",
moreFaces: "Więcej twarzy",
fewerFaces: "Mniej twarzy",
submit: "Rozmyj twarze",
progressLabel: "Rozmywanie twarzy",
},
"enhance-faces": {
quality: "Jakość",
enhancementStrength: "Siła ulepszenia",
onlyCenterFace: "Tylko centralna twarz",
detectionSensitivity: "Czułość wykrywania",
submit: "Ulepsz twarze",
submitBatch: "Ulepsz twarze ({count} plików)",
progressLabel: "Ulepszanie twarzy",
},
"smart-crop": {
subjectFocus: "Skupienie na obiekcie",
faceFocus: "Skupienie na twarzy",
autoTrim: "Automatyczne przycinanie",
customSize: "Rozmiar niestandardowy",
socialPresets: "Szablony mediów społecznościowych",
detectionStrategy: "Strategia wykrywania",
detectionStrategyHint:
"Uwaga wyszukuje najbardziej wizualnie wyrazisty region. Entropia wyszukuje obszar z największą ilością szczegółów i informacji.",
attention: "Uwaga",
entropy: "Entropia",
padding: "Margines wewnętrzny",
paddingHint: "Dodatkowa przestrzeń wokół obszaru skupienia",
outputQuality: "Jakość wyjściowa",
outputQualityHint: "Dla wyników w formacie JPEG i WebP. PNG jest zawsze bezstratny.",
subjectDescription:
"Wykrywa najciekawszy region za pomocą analizy wyrazistości i kadruje do docelowego rozmiaru.",
framing: "Kadrowanie",
facePadding: "Margines wokół twarzy",
facePaddingHint: "Dodatkowa przestrzeń wokół wykrytych twarzy",
fewerFalsePositives: "Mniej fałszywych wykryć",
faceDescription:
"Wykorzystuje wykrywanie twarzy AI do prawidłowego kadrowania. W przypadku braku twarzy przełącza się na skupienie na obiekcie.",
trimTolerance: "Tolerancja",
trimDescription:
"Jak bardzo piksel krawędzi może się różnić od koloru brzegu i nadal zostać przycięty. Wyżej = agresywniej.",
padToSquare: "Dopełnij do kwadratu",
targetSizePx: "Docelowy rozmiar (px)",
padColor: "Kolor wypełnienia",
trimHint:
'Usuwa jednokolorowe obramowania wokół obiektu. Włącz "Dopełnij do kwadratu" dla obrazów gotowych do e-commerce.',
submitSubject: "Inteligentne kadrowanie",
submitFace: "Kadrowanie twarzy",
submitTrim: "Przytnij krawędzie",
},
imageEnhancement: {
enhancementMode: "Tryb ulepszenia",
auto: "Auto",
portrait: "Portret",
landscape: "Krajobraz",
lowLight: "Słabe oświetlenie",
food: "Jedzenie",
document: "Dokument",
intensity: "Intensywność",
deepEnhance: "Głębokie ulepszenie (AI)",
deepEnhanceDescription: "Usuwa szum i artefakty za pomocą AI",
deepEnhanceRequires: "Wymaga pakietu powiększania i ulepszania",
analyzingImage: "Analiza obrazu...",
detectedIssues: "Wykryte problemy",
imageLooksGood: "Obraz wygląda dobrze. Dostosuj za pomocą suwaka intensywności.",
issueUnderexposed: "Niska ekspozycja",
issueOverexposed: "Prześwietlony",
issueLowContrast: "Płaski kontrast",
issueColorCast: "Przebarwienie",
issueDesaturated: "Odbarwiony",
issueSoftFocus: "Miękki fokus",
issueNoisy: "Zaszumiony",
submit: "Ulepsz",
submitDeep: "Głębokie ulepszenie",
submitBatch: "Ulepsz ({count} plików)",
submitDeepBatch: "Głębokie ulepszenie ({count} plików)",
progressLabel: "Ulepszanie obrazu",
progressLabelBatch: "Ulepszanie {count} obrazów",
},
"noise-removal": {
denoisingTier: "Poziom odszumiania",
quick: "Szybki",
balanced: "Zrównoważony",
quality: "Jakość",
maximum: "Maksymalny",
quickDesc: "Szybki, lekki",
balancedDesc: "Dobra jakość, umiarkowana prędkość",
qualityDesc: "Oparty na AI, wolny",
maximumDesc: "Najlepszy model AI, najwolniejszy",
strength: "Siła",
subtle: "Delikatna",
aggressive: "Agresywna",
detailPreservation: "Zachowanie szczegółów",
smooth: "Gładkie",
sharp: "Ostre",
colorNoise: "Szum chromatyczny",
heavy: "Silny",
outputFormat: "Format wyjściowy",
gifAiWarning:
"Odszumianie AI dla plików GIF przetwarza tylko pierwszą klatkę. Dla animowanych GIF użyj poziomu szybkiego lub zrównoważonego.",
submit: "Usuń szum",
submitBatch: "Usuń szum ({count} plików)",
progressLabel: "Usuwanie szumu",
progressLabelBatch: "Usuwanie szumu z {count} obrazów",
},
"red-eye-removal": {
sensitivity: "Czułość",
strict: "Ścisła",
aggressive: "Agresywna",
correctionStrength: "Siła korekcji",
subtle: "Delikatna",
dark: "Ciemna",
outputFormat: "Format wyjściowy",
quality: "Jakość",
submit: "Napraw czerwone oczy",
submitBatch: "Napraw czerwone oczy ({count} plików)",
progressLabel: "Naprawianie czerwonych oczu",
progressLabelBatch: "Naprawianie czerwonych oczu na {count} obrazach",
},
"restore-photo": {
scratchRemoval: "Usuwanie rys",
scratchRemovalDesc: "Wykrywanie i naprawa rys, rozdarć i plam",
faceEnhancement: "Ulepszanie twarzy",
faceEnhancementDesc: "Odtwarzanie zniszczonych twarzy za pomocą CodeFormer AI",
faceFidelity: "Wierność twarzy",
enhanced: "Ulepszona",
faithful: "Wierna",
noiseReduction: "Redukcja szumu",
noiseReductionDesc: "Usuwanie ziarnistości i szumu ze starych zdjęć",
denoiseStrength: "Siła odszumiania",
autoColorize: "Automatyczna koloryzacja",
autoColorizeDesc: "Dodawanie koloru do zdjęć czarno-białych za pomocą DDColor AI",
colorizeStrength: "Siła koloryzacji",
vivid: "Żywy",
submit: "Restauruj zdjęcie",
submitBatch: "Restauruj zdjęcia ({count})",
progressLabel: "Restauracja zdjęcia",
progressLabelBatch: "Restauracja {count} zdjęć",
},
"content-aware-resize": {
widthPx: "Szerokość (px)",
heightPx: "Wysokość (px)",
resizeToSquare: "Zmień na kwadrat",
protectFaces: "Chroń twarze",
protectFacesHint:
"Wykrywanie i ochrona regionów twarzy przed usuwaniem szwów za pomocą wykrywania twarzy",
smoothing: "Wygładzanie",
edgeSensitivity: "Czułość krawędzi",
submit: "Zmień rozmiar",
submitBatch: "Zmień rozmiar ({count} plików)",
progressLabel: "Zmiana rozmiaru z uwzględnieniem treści",
},
"ai-canvas-expand": {
quality: "Jakość",
fast: "Szybko",
balanced: "Zrównoważone",
highQuality: "Wysoka jakość",
fastDesc: "Szybki podgląd, mniej przejść AI",
balancedDesc: "Dobra jakość, umiarkowana prędkość",
highQualityDesc: "Najlepsze wyniki, wolniejsze",
extendToAspectRatio: "Rozszerz do proporcji",
extendByPixels: "Rozszerz o (piksele)",
top: "Góra",
right: "Prawo",
bottom: "Dół",
left: "Lewo",
newSize: "Nowy rozmiar: {width} x {height}",
submit: "Rozszerz płótno",
submitBatch: "Rozszerz ({count} plików)",
progressLabel: "Rozszerzanie płótna",
},
colorize: {
aiModel: "Model AI",
fast: "Szybki",
fastDesc: "Szybkie wyniki",
balanced: "Zrównoważony",
balancedDesc: "Najlepszy dostępny",
best: "Najlepszy",
bestDesc: "Najwyższa jakość",
colorIntensity: "Intensywność koloru",
grayscaleLabel: "Skala szarości",
subtleLabel: "Delikatny",
naturalLabel: "Naturalny",
vividLabel: "Żywy",
intensityHint: "Niższe wartości dają bardziej stonowane, vintage'owe kolory.",
strength: "Siła koloryzacji",
submit: "Koloryzuj",
submitBatch: "Koloryzuj ({count} plików)",
progressLabel: "Koloryzacja",
progressLabelBatch: "Koloryzacja {count} obrazów",
},
"passport-photo": {
country: "Kraj",
searchCountries: "Szukaj krajów...",
noCountriesFound: "Nie znaleziono krajów",
customDimensions: "Wymiary niestandardowe",
documentType: "Typ dokumentu",
dimensionsMm: "Wymiary (mm)",
dpi: "DPI",
pixelsPerInch: "pikseli na cal",
backgroundColor: "Kolor tła",
maxFileSize: "Maks. rozmiar pliku",
noLimit: "Bez limitu",
customKb: "Własne KB...",
uploadPortrait: "Prześlij zdjęcie portretowe",
uploadHint:
"Przeciągnij lub prześlij obraz w lewym panelu, aby zobaczyć podgląd zdjęcia paszportowego",
analyzingPhoto: "Analiza zdjęcia",
detectingLandmarks: "Wykrywanie punktów orientacyjnych twarzy i usuwanie tła...",
generatePassportPhoto: "Generuj zdjęcie paszportowe",
generating: "Generowanie...",
downloadPhoto: "Pobierz zdjęcie",
faceCentered: "Twarz wycentrowana",
headLevel: "Głowa prosto",
lookingStraight: "Wzrok na wprost",
faceSize: "Rozmiar twarzy",
whatYouSee: "Pobierasz to, co widzisz",
dragToAdjust: "Przeciągnij, aby dostosować",
scrollToZoom: "Przewiń, aby powiększyć",
photoGenerated: "Zdjęcie wygenerowane. Pobierz z lewego panelu.",
},
"transcribe-audio": {
language: "Jezyk",
autoDetect: "Automatyczne wykrywanie",
outputFormat: "Format wyjsciowy",
plainText: "Zwykly tekst",
submit: "Transkrybuj",
submitBatch: "Transkrybuj ({count} plikow)",
progressLabel: "Transkrypcja audio",
},
"auto-subtitles": {
language: "Jezyk",
autoDetect: "Automatyczne wykrywanie",
format: "Format napisow",
submit: "Generuj napisy",
submitBatch: "Generuj napisy ({count} plikow)",
progressLabel: "Generowanie napisow",
},
"transparency-fixer": {
description: "Prześlij PNG z fałszywą przezroczystością, a naprawimy to jednym kliknięciem.",
removeWatermark: "Usuń znak wodny",
removeWatermarkHelp: "Wykryj i usuń półprzezroczyste znaki wodne",
requiresEraser: "Wymaga pakietu usuwania obiektów",
advanced: "Zaawansowane",
defringe: "Usuwanie obwódki",
outputFormat: "Format wyjściowy",
submit: "Napraw przezroczystość",
submitBatch: "Napraw przezroczystość ({count} plików)",
progressLabel: "Naprawa przezroczystości",
},
"background-replace": {
color: "Kolor tla",
submit: "Zamien tlo",
submitBatch: "Zamien tlo ({count} plikow)",
progressLabel: "Zamiana tla",
},
"blur-background": {
intensity: "Intensywnosc rozmycia",
submit: "Rozmyj tlo",
submitBatch: "Rozmyj tlo ({count} plikow)",
progressLabel: "Rozmywanie tla",
},
"watermark-text": {
watermarkText: "Tekst znaku wodnego",
fontSize: "Rozmiar czcionki",
color: "Kolor",
opacity: "Krycie",
position: "Pozycja",
rotation: "Obrót",
center: "Środek",
topLeft: "Lewy górny",
topRight: "Prawy górny",
bottomLeft: "Lewy dolny",
bottomRight: "Prawy dolny",
tiled: "Kafelki",
submit: "Dodaj znak wodny",
submitBatch: "Dodaj znak wodny ({count} plików)",
progressLabel: "Dodawanie znaku wodnego",
},
"watermark-image": {
uploadWatermark: "Prześlij obraz znaku wodnego",
position: "Pozycja",
opacity: "Krycie",
scale: "Skala",
submit: "Zastosuj znak wodny",
submitBatch: "Zastosuj znak wodny ({count} plików)",
},
"text-overlay": {
text: "Tekst",
fontSize: "Rozmiar czcionki",
color: "Kolor",
position: "Pozycja",
top: "Góra",
center: "Środek",
bottom: "Dół",
backgroundBox: "Pole tła",
backgroundColor: "Kolor tła",
shadow: "Cień",
submit: "Dodaj tekst",
submitBatch: "Dodaj tekst ({count} plików)",
progressLabel: "Dodawanie nakładki tekstowej",
download: "Download",
defaultText: "Your Text Here",
},
compose: {
uploadOverlay: "Prześlij obraz nakładki",
xPosition: "Pozycja X",
yPosition: "Pozycja Y",
opacity: "Krycie",
blendMode: "Tryb mieszania",
submit: "Złóż",
},
"meme-generator": {
selectTemplate: "Wybierz szablon z galerii lub prześlij własny obraz, aby rozpocząć.",
chooseLayout: "Wybierz układ tekstu dla swojego obrazu.",
textContent: "Tekst",
textStyle: "Styl tekstu",
font: "Czcionka",
fontSize: "Rozmiar czcionki",
textColor: "Kolor tekstu",
strokeColor: "Kolor obrysu",
allCaps: "WIELKIE LITERY",
generate: "Generuj Meme",
generating: "Generowanie...",
downloadMeme: "Pobierz Meme",
backToGallery: "Powrót do galerii",
},
info: {
loadingInfo: "Ładowanie informacji...",
filename: "Nazwa pliku",
fileSize: "Rozmiar pliku",
dimensions: "Wymiary",
format: "Format",
channels: "Kanały",
colorSpace: "Przestrzeń kolorów",
density: "Gęstość",
bitDepth: "Głębia bitowa",
progressive: "Progresywny",
pages: "Strony",
hasAlpha: "Kanał alfa",
hasProfile: "Profil",
hasExif: "EXIF",
hasIcc: "ICC",
hasXmp: "XMP",
readInfo: "Read Info",
reading: "Reading...",
channelStats: "Channel Stats",
yes: "Yes",
no: "No",
na: "N/A",
failedToRead: "Failed to read info",
},
compare: {
uploadSecondImage: "Prześlij drugi obraz",
similarity: "Podobieństwo: {percent}%",
submit: "Porównaj",
downloadDiff: "Pobierz różnicę",
},
"find-duplicates": {
preset: "Szablon",
exact: "Dokładne",
similar: "Podobne",
loose: "Przybliżone",
exactDesc: "Identyczne kopie, ten sam obraz w różnych formatach.",
similarDesc: "Przeskalowane, przekompresowane lub lekko edytowane kopie.",
looseDesc: "Wizualnie powiązane obrazy, niewielkie kadrowania, różna ekspozycja.",
threshold: "Próg",
submit: "Szukaj duplikatów",
scanning: "Skanowanie...",
},
"color-palette": {
submit: "Wyodrębnij paletę",
extracting: "Wyodrębnianie...",
dominantColors: "Dominujące kolory",
clickToCopy: "Kliknij, aby skopiować",
},
"qr-generate": {
contentType: "Typ treści",
url: "URL",
text: "Tekst",
wifi: "WiFi",
vcard: "vCard",
email: "Email",
phone: "Telefon",
sms: "SMS",
styling: "Stylizacja",
dotStyle: "Styl kropek",
cornerSquareStyle: "Styl kwadratów narożnych",
cornerDotStyle: "Styl kropek narożnych",
foregroundColor: "Kolor pierwszego planu",
bgColor: "Kolor tła",
logo: "Logo",
downloadFormat: "Format pobierania",
submit: "Generuj kod QR",
download: "Pobierz kod QR",
},
"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: "Skanuj kody kreskowe",
submitBatch: "Skanuj ({count} plików)",
scanning: "Skanowanie...",
noBarcodesFound: "Nie znaleziono kodów kreskowych",
barcodesFound: "Znaleziono {count} kod kreskowy",
barcodesFoundPlural: "Znaleziono {count} kodów kreskowych",
},
collage: {
template: "Szablon",
aspectRatio: "Proporcje",
gap: "Odstęp",
cornerRadius: "Zaokrąglenie rogów",
backgroundColor: "Kolor tła",
outputFormat: "Format wyjściowy",
quality: "Jakość",
submit: "Utwórz kolaż",
downloadCollage: "Pobierz kolaż",
},
stitch: {
direction: "Kierunek",
horizontal: "Poziomo",
vertical: "Pionowo",
grid: "Siatka",
gridColumns: "Kolumny siatki",
resizeMode: "Tryb skalowania",
fit: "Wpasuj",
original: "Oryginał",
stretchMode: "Rozciągnij",
cropMode: "Kadruj",
alignment: "Wyrównanie",
start: "Początek",
center: "Środek",
end: "Koniec",
gap: "Odstęp",
border: "Ramka",
cornerRadius: "Zaokrąglenie rogów",
backgroundColor: "Kolor tła",
outputFormat: "Format wyjściowy",
quality: "Jakość",
submit: "Połącz obrazy",
},
split: {
modeGrid: "Siatka",
modeTileSize: "Rozmiar kafelka",
presets: "Szablony",
columns: "Kolumny",
rows: "Wiersze",
tileWidth: "Szerokość kafelka",
tileHeight: "Wysokość kafelka",
outputFormat: "Format wyjściowy",
quality: "Jakość",
submit: "Podziel obraz",
downloadAll: "Pobierz wszystko (ZIP)",
},
border: {
presets: "Szablony",
borderWidth: "Szerokość ramki",
borderColor: "Kolor ramki",
padding: "Margines wewnętrzny",
paddingColor: "Kolor marginesu",
cornerRadius: "Zaokrąglenie rogów",
shadow: "Cień",
shadowBlur: "Rozmycie cienia",
shadowOffsetX: "Przesunięcie cienia X",
shadowOffsetY: "Przesunięcie cienia Y",
shadowColor: "Kolor cienia",
shadowOpacity: "Krycie cienia",
submit: "Dodaj ramkę",
submitBatch: "Dodaj ramkę ({count} plików)",
progressLabel: "Dodawanie ramki",
},
beautify: {
preset: "Szablon",
backgroundType: "Typ tła",
solidColor: "Jednolity kolor",
linearGradient: "Gradient liniowy",
radialGradient: "Gradient radialny",
customImage: "Własny obraz",
gradientAngle: "Kąt gradientu",
padding: "Margines wewnętrzny",
borderRadius: "Zaokrąglenie rogów",
shadowPreset: "Szablon cienia",
deviceFrame: "Ramka urządzenia",
submit: "Upiększ",
submitBatch: "Upiększ ({count} plików)",
progressLabel: "Upiększanie zrzutu ekranu",
},
"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: "Format wyjściowy",
sizing: "Rozmiar",
scaleMode: "Skala",
customMode: "Niestandardowy",
scalePresets: "Szablony skali",
dpiPresets: "Szablony DPI",
customWidth: "Szerokość (px)",
customHeight: "Wysokość (px)",
background: "Tło",
bgTransparent: "Przezroczyste",
bgColor: "Kolor",
quality: "Jakość",
submit: "Konwertuj SVG",
submitBatch: "Konwertuj ({count} plików)",
progressLabel: "Konwersja SVG",
},
vectorize: {
preset: "Szablon",
logo: "Logo",
illustration: "Ilustracja",
photo: "Zdjęcie",
sketch: "Szkic",
customPreset: "Niestandardowy",
colorMode: "Tryb koloru",
bw: "Czarno-biały",
colorModeColor: "Kolorowy",
threshold: "Próg",
colorPrecision: "Precyzja koloru",
layerDifference: "Różnica warstw",
filterSpeckle: "Filtr artefaktów",
pathMode: "Tryb ścieżek",
cornerThreshold: "Próg rogów",
invertColors: "Odwróć kolory",
submit: "Wektoryzuj",
submitBatch: "Wektoryzuj ({count} plików)",
progressLabel: "Wektoryzacja",
},
"gif-tools": {
mode: "Tryb",
resize: "Zmień rozmiar",
optimize: "Optymalizuj",
speed: "Prędkość",
reverse: "Odwróć",
extract: "Wyodrębnij",
rotateMode: "Obróć",
pixel: "Piksele",
percentage: "Procent",
colors: "Kolory",
dither: "Dithering",
effort: "Nakład",
speedFactor: "Współczynnik prędkości",
loopControl: "Sterowanie pętlą",
infinite: "Nieskończona",
once: "Raz",
customLoop: "Niestandardowa",
loopCount: "Liczba pętli",
extractSingle: "Pojedyncza",
extractRange: "Zakres",
extractAll: "Wszystkie",
frameNumber: "Numer klatki",
frameStart: "Klatka początkowa",
frameEnd: "Klatka końcowa",
extractFormat: "Format",
submit: "Przetwórz GIF",
submitBatch: "Przetwórz ({count} plików)",
progressLabel: "Przetwarzanie GIF",
},
"image-to-base64": {
outputFormat: "Format wyjściowy",
keepOriginal: "Zachowaj oryginał",
quality: "Jakość",
maxWidth: "Maks. szerokość",
maxHeight: "Maks. wysokość",
submit: "Konwertuj na Base64",
submitBatch: "Konwertuj ({count} plików)",
copyBase64: "Kopiuj Base64",
copyDataUri: "Kopiuj Data URI",
copyImgTag: "Kopiuj <img>",
copyCssUrl: "Kopiuj CSS url()",
},
"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: "Szybki",
balanced: "Zrównoważony",
best: "Najlepszy",
},
"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: "Import z adresów URL",
placeholder: "Wklej adresy URL obrazów, po jednym w wierszu...",
importButton: "Importuj adresy URL",
addButton: "Dodaj {count} plików",
adding: "Dodawanie...",
retryButton: "Ponów",
cancelButton: "Anuluj",
readyCount: "{count} gotowe",
failedStatus: "Niepowodzenie",
},
comparison: {
original: "Oryginał",
processed: "Przetworzony",
before: "Przed",
after: "Po",
savings: "Oszczędność",
},
toolPage: {
emptyPrompt: "Przeciągnij lub prześlij obraz, aby rozpocząć",
filesCount: "Pliki ({count})",
addMore: "+ Dodaj więcej",
clearAll: "Wyczyść wszystko",
acceptDescription: "Tylko pliki {exts}",
notFound: "Nie znaleziono narzędzia",
configureAndGenerate: "Skonfiguruj ustawienia i wygeneruj.",
processingFailed: "Przetwarzanie tego pliku nie powiodło się",
conversionComplete: "Konwersja zakończona",
cannotPreviewDownload:
"Plików {type} nie można podejrzeć w przeglądarce. Użyj przycisku pobierania, aby zapisać plik.",
generatingPreview: "Generowanie podglądu...",
cannotPreviewWillProcess:
"Plików {ext} nie można podejrzeć w przeglądarce. Narzędzie nadal przetworzy ten plik.",
previousImage: "Poprzedni plik",
nextImage: "Następny plik",
imageCounter: "{current} / {total}",
settingsLabel: "Ustawienia",
downloadAllZip: "Pobierz wszystko (ZIP)",
hideSettings: "Ukryj ustawienia",
imageArea: "Obszar podglądu",
disabledByAdmin: "This tool has been disabled by your administrator",
browseOtherTools: "Browse other tools",
privacyNote: "Files are processed on your server and never leave your network",
applyAndDownload: "Zastosuj i pobierz",
andMore: "and {count} more",
importFromFiles: "Import from Files",
saveToFiles: "Save to Files",
savedToFiles: "Saved to Files",
adjustSettings: "Adjust settings",
startOver: "Start over with a new file",
newFile: "New file",
previewUnavailable: "Preview will be available after processing",
generatePreview: "Generate Preview",
previewFailed: "Preview generation failed",
backToTools: "Back to Tools",
original: "Original",
processed: "Processed",
saved: "Saved",
noChange: "no change",
download: "Download",
settingsSaved: "Twoje ustawienia zostaly zapisane.",
tryAgain: "Sprobuj ponownie",
tryDifferentFile: "Sprobuj inny plik",
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
downloadAsFile: "Download as file",
downloadAll: "Download All",
downloadFiles: "Download {count} files",
audioDecodeUnsupported: "This audio format cannot be previewed in the browser",
},
homePage: {
generatingPreview: "Generowanie podglądu...",
loadingPreview: "Ładowanie podglądu...",
changeFile: "Zmień plik",
quickActions: "Szybkie akcje",
allTools: "Wszystkie narzędzia",
searchPlaceholder: "Search {count} tools...",
recent: "Recent",
popular: "Popular",
browseByCategory: "Browse by Category",
gettingStarted: "Getting Started",
noToolsMatch: "No tools match '{query}'",
clearSearch: "Clear search",
all: "All",
documents: "PDF",
data: "Files",
pdf: "PDF",
files: "Files",
toolCount: "{count} tools",
heading: "SnapOtter Tools",
},
fullscreenGrid: {
searchPlaceholder: "Szukaj narzędzi...",
hideDetails: "Ukryj szczegóły",
showDetails: "Pokaż szczegóły",
switchToSidebar: "Przełącz na widok paska bocznego",
sidebarButton: "Pasek boczny",
noToolsFound: "Nie znaleziono narzędzi",
tryDifferent: "Spróbuj innej frazy wyszukiwania",
},
editor: {
menu: {
file: {
label: "Plik",
new: "Nowy",
open: "Otwórz",
save: "Zapisz",
exportAs: "Eksportuj jako...",
quickExportPng: "Szybki eksport jako PNG",
close: "Zamknij",
},
edit: {
label: "Edycja",
undo: "Cofnij",
redo: "Ponów",
cut: "Wytnij",
copy: "Kopiuj",
copyMerged: "Kopiuj scalone",
paste: "Wklej",
pasteInPlace: "Wklej w miejscu",
delete: "Usuń",
freeTransform: "Swobodna transformacja",
transform: {
label: "Transformacja",
scale: "Skala",
rotate: "Obrót",
skew: "Pochylenie",
flipHorizontal: "Odbij poziomo",
flipVertical: "Odbij pionowo",
},
},
image: {
label: "Obraz",
imageSize: "Rozmiar obrazu...",
canvasSize: "Rozmiar płótna...",
rotation: {
label: "Obrót obrazu",
cw90: "90° w prawo",
ccw90: "90° w lewo",
r180: "180°",
flipHorizontal: "Odbij poziomo",
flipVertical: "Odbij pionowo",
},
trim: "Przytnij",
adjustments: {
label: "Korekta",
brightnessContrast: "Jasność/Kontrast",
hueSaturation: "Barwa/Nasycenie",
colorBalance: "Balans kolorów",
levels: "Poziomy",
curves: "Krzywe",
},
},
layer: {
label: "Warstwa",
newLayer: "Nowa warstwa",
duplicateLayer: "Duplikuj warstwę",
deleteLayer: "Usuń warstwę",
arrange: {
label: "Rozmieszczenie",
bringToFront: "Przesuń na wierzch",
bringForward: "Przesuń do przodu",
sendBackward: "Przesuń do tyłu",
sendToBack: "Przesuń na spód",
},
mergeDown: "Scal w dół",
flattenImage: "Spłaszcz obraz",
},
select: {
label: "Zaznaczenie",
all: "Zaznacz wszystko",
deselect: "Odznacz",
inverse: "Odwróć",
colorRange: "Zakres kolorów...",
},
filter: {
label: "Filtr",
blur: {
label: "Rozmycie",
gaussian: "Rozmycie gaussowskie",
motion: "Rozmycie ruchu",
radial: "Rozmycie radialne",
surface: "Rozmycie powierzchniowe",
},
sharpen: {
label: "Wyostrzanie",
sharpen: "Wyostrz",
unsharpMask: "Maska wyostrzająca",
},
noise: {
label: "Szum",
addNoise: "Dodaj szum",
reduceNoise: "Zmniejsz szum",
},
pixelate: {
label: "Pikselizacja",
pixelate: "Pikselizacja",
mosaic: "Mozaika",
},
stylize: {
label: "Stylizacja",
emboss: "Wytłoczenie",
solarize: "Solaryzacja",
posterize: "Posteryzacja",
},
grayscale: "Skala szarości",
sepia: "Sepia",
invert: "Inwersja",
},
view: {
label: "Widok",
zoomIn: "Powiększ",
zoomOut: "Pomniejsz",
fitOnScreen: "Dopasuj do ekranu",
actualPixels: "Rzeczywiste piksele",
rulers: "Linijki",
grid: "Siatka",
guides: "Prowadnice",
snap: "Przyciąganie",
panels: "Panele",
},
},
menuBar: {
backTitle: "Powrót do SnapOtter",
},
welcome: {
ariaLabel: "Strefa upuszczania obrazów",
heading: "Edytor obrazów",
dropDescription: "Przeciągnij tutaj obraz, aby rozpocząć",
openImageButton: "Otwórz obraz",
newDocumentButton: "Nowy dokument",
pasteHint: "Lub wklej ze schowka (Ctrl+V)",
},
mobile: {
heading: "Zalecany komputer stacjonarny",
description:
"Edytor obrazów najlepiej działa na dużych ekranach. Przełącz się na urządzenie z większym wyświetlaczem, aby korzystać z pełni możliwości edytora.",
},
errors: {
serverDecodeFailed: "Błąd dekodowania na serwerze",
},
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: "Ustawienia",
nav: {
general: "Ogólne",
systemSettings: "Ustawienia systemowe",
security: "Bezpieczeństwo",
people: "Użytkownicy",
teams: "Zespoły",
roles: "Role",
auditLog: "Dziennik audytu",
usage: "Usage",
apiKeys: "Klucze API",
aiFeatures: "Funkcje AI",
tools: "Narzędzia",
productAnalytics: "Analityka",
about: "Informacje",
},
general: {
heading: "Ogólne",
description: "Preferencje użytkownika i ustawienia wyświetlania.",
loading: "Ładowanie...",
logOut: "Wyloguj",
defaultToolViewLabel: "Domyślny widok narzędzi",
defaultToolViewDescription: "Sposób wyświetlania narzędzi na stronie głównej",
sidebarOption: "Pasek boczny",
fullscreenGridOption: "Siatka pełnoekranowa",
appVersionLabel: "Wersja aplikacji",
appVersionDescription: "Bieżąca wersja SnapOtter",
saveButton: "Zapisz ustawienia",
saveSuccess: "Ustawienia zapisane.",
saveFailed: "Nie udało się zapisać ustawień.",
},
system: {
heading: "Ustawienia systemowe",
description: "Konfiguracja serwera i limity.",
fileUploadLimitLabel: "Limit przesyłania plików (MB)",
fileUploadLimitDescription: "Maksymalny rozmiar pliku na przesłanie",
defaultThemeLabel: "Domyślny motyw",
defaultThemeDescription: "Motyw stosowany dla nowych sesji",
lightOption: "Jasny",
darkOption: "Ciemny",
systemOption: "Systemowy",
languageLabel: "Język",
languageDescription: "Język interfejsu",
loginAttemptLimitLabel: "Limit prób logowania",
loginAttemptLimitDescription:
"Maksymalna liczba nieudanych prób logowania na minutę przed blokadą",
fileManagementHeading: "Zarządzanie plikami",
maxFileAgeLabel: "Maks. czas przechowywania plików (godziny)",
maxFileAgeDescription:
"Jak długo przetworzone pliki są przechowywane przed automatycznym usunięciem",
startupCleanupLabel: "Czyszczenie przy uruchomieniu",
startupCleanupDescription: "Usuwanie starych plików tymczasowych przy uruchomieniu serwera",
saveButton: "Zapisz ustawienia",
saveSuccess: "Ustawienia zapisane.",
saveFailed: "Nie udało się zapisać ustawień.",
limitsAndResources: "Limity i zasoby",
maxFileSize: "Maks. rozmiar pliku",
maxBatchSize: "Maks. rozmiar partii",
concurrentJobs: "Zadania równoległe",
workerThreads: "Wątki robocze",
maxPipelineSteps: "Maks. kroków Pipeline",
processingTimeout: "Limit czasu przetwarzania",
rateLimitPerMin: "Limit zapytań (zapytań/min)",
unlimited: "Bez limitu",
auto: "Auto",
envOverride: "Ustawione przez zmienną środowiskową",
maxCanvasPixels: "Maks. pikseli płótna",
maxSvgSize: "Maks. rozmiar SVG",
maxSplitGrid: "Maks. siatka podziału",
maxPdfPages: "Maks. stron PDF",
sessionDuration: "Czas trwania sesji",
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: "Bezpieczeństwo",
description: "Ustawienia hasła i uwierzytelniania.",
changePasswordHeading: "Zmiana hasła",
currentPasswordPlaceholder: "Bieżące hasło",
newPasswordPlaceholder: "Nowe hasło",
confirmPasswordPlaceholder: "Potwierdź nowe hasło",
passwordsMismatch: "Hasła nie są zgodne",
passwordTooShort: "Hasło musi mieć co najmniej 4 znaki",
changeSuccess: "Hasło zostało zmienione",
changeFailed: "Nie udało się zmienić hasła",
currentPasswordIncorrect: "Bieżące hasło jest nieprawidłowe",
changePasswordButton: "Zmień hasło",
loginAttemptLimitNote:
"Limity prób logowania można skonfigurować w Ustawieniach systemowych.",
adminHeading: "Admin Security Settings",
adminDescription: "Enterprise security policy settings. These apply to all users.",
sessionIdleTimeout: "Session Idle Timeout (minutes)",
sessionIdleTimeoutDesc: "Automatically log out idle sessions. 0 = disabled.",
maxSessionsPerUser: "Max Sessions Per User",
maxSessionsPerUserDesc: "Limit concurrent sessions per user. 0 = unlimited.",
mfaPolicy: "MFA Policy",
mfaPolicyDesc: "Require multi-factor authentication for users.",
mfaPolicyOptional: "Optional",
mfaPolicyAdminsOnly: "Required for admins",
mfaPolicyRequired: "Required for all users",
ssoEnforcement: "SSO Enforcement",
ssoEnforcementDesc: "Require SSO login for all non-break-glass users.",
ssoBreakGlassUsername: "Break Glass Admin Username",
ssoBreakGlassUsernameDesc:
"This admin can still log in with local credentials when SSO is enforced.",
passwordMinLength: "Minimum Password Length",
passwordMinLengthDesc: "Minimum number of characters required for passwords.",
passwordRequireUppercase: "Require Uppercase",
passwordRequireUppercaseDesc: "Require at least one uppercase letter.",
passwordRequireNumber: "Require Number",
passwordRequireNumberDesc: "Require at least one number.",
passwordRequireSpecial: "Require Special Character",
passwordRequireSpecialDesc: "Require at least one special character.",
passwordPolicyHeading: "Password Policy",
securitySettingsSaved: "Security settings saved",
securitySettingsFailed: "Failed to save security settings",
},
people: {
heading: "Użytkownicy",
description: "Zarządzanie członkami przestrzeni roboczej i ich uprawnieniami",
userCount: "{count} użytkownik",
userCountPlural: "{count} użytkowników",
searchPlaceholder: "Szukaj członków...",
addMembersButton: "Dodaj członków",
newMemberHeading: "Nowy członek",
usernamePlaceholder: "Nazwa użytkownika",
passwordPlaceholder: "Hasło",
roleUserOption: "Użytkownik",
roleEditorOption: "Edytor",
roleAdminOption: "Administrator",
roleUserDescription: "Podstawowy dostęp do narzędzi",
roleEditorDescription: "Wszystkie pliki i Pipeline",
roleAdminDescription: "Pełny dostęp",
noDescription: "Brak opisu",
defaultTeamOption: "Domyślny",
createButton: "Utwórz",
cancelButton: "Anuluj",
createSuccess: "Użytkownik utworzony pomyślnie",
createFailed: "Nie udało się utworzyć użytkownika",
userLimitReached: "Osiągnięto limit użytkowników (maks. {max})",
deleteConfirm: 'Usunąć użytkownika "{username}"? Tej operacji nie można cofnąć.',
deleteSuccess: 'Użytkownik "{username}" usunięty',
deleteFailed: "Nie udało się usunąć użytkownika",
editHeading: "Edycja {username}",
updateSuccess: "Użytkownik zaktualizowany",
updateFailed: "Nie udało się zaktualizować użytkownika",
cannotRemoveOwnAdmin: "Nie można usunąć własnej roli administratora",
resetPasswordHeading: "Resetowanie hasła dla {username}",
newPasswordLabel: "Nowe hasło (min. 8 znaków)",
resetPasswordButton: "Resetuj hasło",
resetPasswordWarning:
"Spowoduje to unieważnienie wszystkich sesji i kluczy API tego użytkownika.",
resetSuccess: "Hasło zresetowane pomyślnie",
resetFailed: "Nie udało się zresetować hasła",
tableHeaderUser: "Użytkownik",
tableHeaderRole: "Rola",
tableHeaderTeam: "Zespół",
noSearchResults: "Brak członków pasujących do wyszukiwania.",
noUsersFound: "Nie znaleziono użytkowników.",
authBadgeLocalOidc: "Lokalny + OIDC",
authBadgeOidc: "OIDC",
editRoleTeamAction: "Zmień rolę / zespół",
resetPasswordAction: "Resetuj hasło",
deleteUserAction: "Usuń użytkownika",
saveButton: "Zapisz",
copyPasswordButton: "Kopiuj haslo",
passwordCopied: "Skopiowano!",
copyPasswordWarning:
"Skopiuj to haslo teraz. Nie bedziesz mogl go zobaczyc po utworzeniu uzytkownika.",
},
teams: {
heading: "Zespoły",
description: "Organizuj członków w zespoły dla lepszego zarządzania.",
createButton: "Utwórz nowy zespół",
newTeamHeading: "Nowy zespół",
teamNamePlaceholder: "Nazwa zespołu",
createSubmitButton: "Utwórz",
cancelButton: "Anuluj",
createSuccess: "Zespół utworzony pomyślnie",
createFailed: "Nie udało się utworzyć zespołu",
duplicateTeamError: "Zespół o takiej nazwie już istnieje",
renameSuccess: "Nazwa zespołu zmieniona",
renameFailed: "Nie udało się zmienić nazwy zespołu",
deleteConfirm: 'Usunąć zespół "{name}"? Członkowie zostaną odpięci.',
deleteSuccess: 'Zespół "{name}" usunięty',
deleteFailed: "Nie udało się usunąć zespołu",
cannotDeleteDefault: "Nie można usunąć domyślnego zespołu ani zespołu z członkami",
tableHeaderTeamName: "Nazwa zespołu",
tableHeaderMembers: "Członkowie",
emptyState: "Nie znaleziono zespołów.",
renameSaveButton: "Zapisz",
renameCancelButton: "Anuluj",
renameAction: "Zmień nazwę",
deleteAction: "Usuń",
totalMembers: "Łączna liczba członków",
nameRequired: "Nazwa zespołu jest wymagana",
nameTooLong: "Nazwa zespołu nie może przekraczać 50 znaków",
duplicateName: "Zespół o takiej nazwie już istnieje",
teamStorageQuota: "Storage Quota (MB)",
teamStorageQuotaDesc: "Maximum storage for this team in MB. Leave empty for no limit.",
teamRetentionHours: "Retention (hours)",
teamRetentionHoursDesc:
"Processing file retention for this team. Leave empty to use global default.",
quotaSaved: "Team settings saved",
},
roles: {
heading: "Role",
description: "Zarządzanie rolami i ich uprawnieniami. Ról wbudowanych nie można modyfikować.",
createButton: "Utwórz niestandardową rolę",
newRoleHeading: "Nowa rola",
roleNamePlaceholder: "Nazwa roli",
descriptionPlaceholder: "Opis (opcjonalnie)",
permissionsLabel: "Uprawnienia",
createSubmitButton: "Utwórz",
cancelButton: "Anuluj",
createSuccess: "Rola utworzona pomyślnie",
createFailed: "Nie udało się utworzyć roli",
duplicateRoleError: "Rola o takiej nazwie już istnieje",
editHeading: "Edycja roli: {name}",
editSaveButton: "Zapisz",
editCancelButton: "Anuluj",
updateSuccess: "Rola zaktualizowana",
updateFailed: "Nie udało się zaktualizować roli",
deleteConfirm:
'Usunąć rolę "{name}"? {count} użytkownik(ów) będzie wymagać ponownego przypisania.',
deleteConfirmSimple: 'Usunąć rolę "{name}"?',
deleteSuccess: 'Rola "{name}" usunięta',
deleteFailed: "Nie udało się usunąć roli",
emptyState: "Nie znaleziono ról.",
builtInBadge: "Wbudowana",
userCountBadge: "{count} użytkownik(ów)",
editRoleTitle: "Edytuj rolę",
deleteRoleTitle: "Usuń rolę",
permGroup: {
tools: "Narzędzia",
files: "Pliki",
apiKeys: "Klucze API",
pipelines: "Pipeline",
settings: "Ustawienia",
users: "Użytkownicy",
teams: "Zespoły",
system: "System",
},
},
auditLog: {
heading: "Dziennik audytu",
allActionsFilter: "Wszystkie akcje",
emptyState: "Brak wpisów w dzienniku audytu.",
tableHeaderTime: "Czas",
tableHeaderUser: "Użytkownik",
tableHeaderAction: "Akcja",
tableHeaderTarget: "Cel",
paginationInfo: "Strona {page} z {totalPages} ({total} wpisów)",
previousButton: "Poprzednia",
nextButton: "Następna",
justNow: "przed chwilą",
minutesAgo: "{mins} min temu",
hoursAgo: "{hrs} godz. temu",
daysAgo: "{days} dn. temu",
},
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)",
storageByTeam: "Storage by Team",
teamColumn: "Team",
storageColumn: "Storage",
usersColumn: "Users",
},
apiKeys: {
heading: "Klucze API",
description: "Zarządzanie kluczami API do programowego dostępu do SnapOtter.",
keyNamePlaceholder: "Nazwa klucza (opcjonalnie)",
generateButton: "Wygeneruj klucz API",
removeScopingLabel: "Usuń ograniczenie uprawnień",
restrictPermissionsLabel: "Ogranicz uprawnienia (opcjonalnie)",
expiresLabel: "Wygasa:",
clearButton: "Wyczyść",
copyTitle: "Kopiuj",
keyWarning: "Przechowuj ten klucz w bezpiecznym miejscu. Nie będzie ponownie wyświetlony.",
existingKeysHeading: "Istniejące klucze",
createdPrefix: "Utworzono {date}",
scopedPrefix: "Zakres:",
expiresPrefix: "Wygasa {date}",
deleteKeyTitle: "Usuń klucz",
deleteConfirm:
"Usunąć ten klucz API? Wszystkie integracje korzystające z niego przestaną działać.",
emptyState: "Brak kluczy API. Wygeneruj jeden, aby rozpocząć.",
},
tools: {
heading: "Narzędzia",
description:
"Włączanie i wyłączanie poszczególnych narzędzi. Wyłączone narzędzia są ukryte dla wszystkich użytkowników.",
restartBanner: "Aby zmiany zaczęły obowiązywać, wymagane jest ponowne uruchomienie.",
searchPlaceholder: "Szukaj narzędzi...",
noSearchResults: "Nie znaleziono narzędzi.",
loadFailedError:
"Nie udało się załadować ustawień narzędzi. Zapisywanie jest wyłączone, aby zapobiec utracie danych.",
saveButton: "Zapisz ustawienia narzędzi",
disabledCount: "Wyłączono {count} narzędzi",
},
experimental: {
label: "Włącz eksperymentalne narzędzia",
description: "Pokaż narzędzia będące w fazie rozwoju. Mogą działać niestabilnie.",
},
fileManagement: {
title: "Zarządzanie plikami",
maxAge: "Maks. czas przechowywania plików (godziny)",
maxAgeDescription:
"Jak długo przetworzone pliki są przechowywane przed automatycznym usunięciem",
startupCleanup: "Czyszczenie przy uruchomieniu",
startupCleanupDescription: "Usuwanie starych plików tymczasowych przy uruchomieniu serwera",
},
dataRetention: {
title: "Data Retention",
fileMaxAgeHours: "Processing file retention (hours)",
fileMaxAgeHoursDesc: "How long to keep uploaded and processed files. Default: 72 hours.",
jobsRetentionDays: "Job record retention (days)",
jobsRetentionDaysDesc: "How long to keep job metadata. 0 = keep forever. Default: 30 days.",
auditRetentionDays: "Audit log retention (days)",
auditRetentionDaysDesc:
"How long to keep audit log entries. 0 = keep forever. Default: forever.",
},
analytics: {
heading: "Analityka",
description: "Udostępnianie anonimowych danych o użytkowaniu w celu ulepszenia SnapOtter.",
privacyNote: "Państwa pliki nigdy nie opuszczają komputera.",
disabledByAdmin: "Analityka została wyłączona przez administratora serwera.",
enabledLabel: "Analityka włączona",
disabledLabel: "Analityka wyłączona",
learnMore: "Dowiedz się więcej",
},
aiFeatures: {
title: "AI Features",
description: "Zarządzanie pakietami modeli AI do zaawansowanego przetwarzania plików.",
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: "Informacje",
appName: "SnapOtter",
appDescription:
"Samoobsługowy pakiet narzędzi do przetwarzania plików z priorytetem prywatności. 157 narzędzi. Konwersja, kompresja, edycja, transkrypcja, OCR i automatyzacja procesów obrazów, wideo, audio, dokumentów i danych bez wysyłania danych do chmury.",
versionLabel: "Wersja:",
linksHeading: "Odnośniki",
githubLink: "Repozytorium GitHub",
docsLink: "Dokumentacja",
apiRefLink: "Dokumentacja API (Swagger)",
licenseLabel: "License:",
licenseDescription:
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).",
},
},
auth: {
login: "Logowanie",
logout: "Wyloguj",
username: "Nazwa użytkownika",
password: "Hasło",
loginButton: "Zaloguj",
loggingIn: "Logowanie...",
invalidCredentials: "Nieprawidłowa nazwa użytkownika lub hasło",
connectionError: "Błąd połączenia",
signInWith: "Zaloguj przez {provider}",
signInWithSso: "Zaloguj przez SSO",
or: "lub",
methodLocal: "Lokalny",
methodOidc: "OIDC",
methodBoth: "Lokalny + OIDC",
oidcAuthFailed: "Uwierzytelnianie nie powiodło się. Spróbuj ponownie.",
oidcProviderUnreachable:
"Nie udało się połączyć z dostawcą tożsamości. Spróbuj ponownie później.",
oidcSessionExpired: "Sesja logowania wygasła. Spróbuj ponownie.",
oidcUserNotAuthorized:
"Państwa konto nie ma uprawnień do korzystania z tej aplikacji. Skontaktuj się z administratorem.",
oidcUserLimitReached: "Osiągnięto limit użytkowników. Skontaktuj się z administratorem.",
oidcGenericError: "Błąd uwierzytelniania. Spróbuj ponownie.",
samlAuthFailed: "SAML authentication failed. Please try again.",
samlUserNotAuthorized:
"Your account is not authorized to access this application. Contact your administrator.",
samlUserLimitReached: "User limit reached. Contact your administrator.",
ssoEnforcedLocalRestricted: "Local login is restricted to authorized administrators.",
mfaRequired: "Enter your authentication code",
mfaRecoveryHint: "You can also use a recovery code",
verify: "Verify",
verifying: "Verifying...",
mfaInvalidCode: "Invalid code. Please try again.",
mfaEnrollmentRequired:
"Your organization requires multi-factor authentication. Please set up MFA in your account settings.",
methodSaml: "SAML",
passwordManagedByProvider: "Zarządzanie hasłem odbywa się przez dostawcę tożsamości.",
enterUsername: "Wprowadź nazwę użytkownika",
enterPassword: "Wprowadź hasło",
heroTitle: "Twoje pliki. Zostają Twoje.",
heroSubtitle: "Wszystkie narzędzia, jakich potrzebujesz.",
rotatingPhrases: [
"Bez rejestracji. Bez konta.",
"Żadnych przesyłek do chmury. Nigdy.",
"100% przetwarzanie lokalne.",
"Za darmo. Na zawsze.",
"Bez ograniczeń. Bez ukrytych limitów.",
"Działa w pełni offline.",
"Przetwarzanie wsadowe bez ograniczeń.",
"157 narzędzi.",
"15 modeli AI. Na Twoim sprzęcie.",
"Błyskawiczna szybkość. Oparte na Sharp.",
"Gotowe do sieci izolowanych.",
"Jeden kontener Docker.",
"Otwartoźródłowe. Zawsze.",
"Każdy piksel zostaje na Twoim sprzęcie.",
"Twój serwer. Twoje zasady.",
"Wdrożenie jednym poleceniem docker pull.",
"Alternatywa dla usług chmurowych.",
"Zmiana rozmiaru, kompresja, konwersja. Lokalnie.",
"Darmowy edytor. Bez znaków wodnych.",
"Wsadowe przetwarzanie plików. Bez limitów.",
"Usuwanie tła offline.",
"Samoobsługowa alternatywa dla Canva.",
"Klucze API nie są potrzebne.",
"Zgodność z GDPR z założenia.",
"Działa bez internetu.",
],
},
changePassword: {
title: "Zmiana hasła",
description:
"Przed kontynuowaniem należy ustawić nowe hasło. Hasło musi mieć co najmniej 8 znaków, w tym wielkie i małe litery oraz cyfrę.",
usernameLabel: "Nazwa użytkownika",
currentPasswordLabel: "Bieżące hasło",
currentPasswordPlaceholder: "Wprowadź bieżące hasło",
newPasswordLabel: "Nowe hasło",
generateButton: "Wygeneruj silne hasło",
newPasswordPlaceholder: "Co najmniej 8 znaków",
confirmPasswordLabel: "Potwierdź nowe hasło",
confirmPasswordPlaceholder: "Powtórz nowe hasło",
passwordsMismatch: "Hasła nie są zgodne",
failedError: "Nie udało się zmienić hasła",
connectionError: "Błąd połączenia",
changingButton: "Zmiana...",
changeButton: "Zmień hasło",
sidebarTitle: "Prawie gotowe",
sidebarDescription:
"Ustaw silne hasło, aby zabezpieczyć swoje konto, a następnie możesz zaczynać.",
},
automate: {
title: "Automatyzacja",
invalidPipelineFile: "Nieprawidłowy plik Pipeline SnapOtter",
newerVersion: "Ten Pipeline został utworzony w nowszej wersji SnapOtter",
missingName: "W pliku Pipeline brakuje nazwy",
noSteps: "Plik Pipeline nie zawiera kroków",
importFailed: "Import nie powiódł się",
couldNotRead: "Nie udało się odczytać pliku Pipeline",
fileCount: "{count} plik",
fileCountPlural: "{count} plików",
importFromLibrary: "Importuj z biblioteki",
addButton: "+ Dodaj",
libraryButton: "Biblioteka",
clearButton: "Wyczyść",
processingFailed: "Przetwarzanie tego pliku nie powiodło się",
processingMultiple: "Przetwarzanie {count} plików...",
processingPipeline: "Wykonywanie Pipeline...",
processButton: "Przetwórz",
processButtonMultiple: "Przetwórz ({count})",
processAllButton: "Przetwórz wszystko ({count})",
addTool: "Dodaj narzędzie",
toolPalette: "Paleta narzędzi",
clickToAdd: "Kliknij, aby dodać do Pipeline",
savedLabel: "Zapisane",
importButton: "Importuj",
noSavedPipelines: "Brak zapisanych Pipeline",
stepCount: "({count} krok)",
stepCountPlural: "({count} kroków)",
exportPipeline: "Eksportuj Pipeline",
deletePipeline: "Usuń Pipeline",
moreCount: "+{count} więcej",
pipelineBuilder: "Konstruktor Pipeline",
addToolsPrompt: "Dodaj narzędzia z palety, aby rozpocząć",
stepsConfigured: "Skonfigurowano {count} krok",
stepsConfiguredPlural: "Skonfigurowano {count} kroków",
noFilesLoaded: "Nie załadowano plików",
downloadZip: "Pobierz ZIP",
saveButton: "Zapisz",
pipelineNamePlaceholder: "Nazwa Pipeline",
descriptionPlaceholder: "Opis",
savingIndicator: "...",
cancelButton: "Anuluj",
preview: "Podgląd",
previousImage: "Poprzedni plik",
nextImage: "Następny plik",
imageCounter: "{current} / {total}",
imageArea: "Obszar podglądu",
templateSocialMedia: "Gotowe dla mediów społecznościowych",
templatePrivacyClean: "Czyszczenie prywatności",
templateWebOptimization: "Optymalizacja webowa",
templateProfilePicture: "Zdjęcie profilowe",
templateWatermarkBatch: "Wsadowe znaki wodne",
createNew: "Utwórz nową automatyzację",
savedAutomations: "Zapisane automatyzacje",
templates: "Szablony",
addStep: "Dodaj krok",
removeStep: "Usuń",
moveUp: "Przesuń w górę",
moveDown: "Przesuń w dół",
savePipeline: "Zapisz Pipeline",
runPipeline: "Przetwórz",
pipelineName: "Nazwa Pipeline",
pipelineDescription: "Opis (opcjonalnie)",
noStepsPrompt: "Dodaj kroki, aby zbudować automatyzację",
noStepsHeading: "No steps yet",
searchToolsPlaceholder: "Search tools...",
step: "Krok",
},
nav: {
tools: "Narzędzia",
reader: "Czytnik",
automate: "Automatyzacja",
editor: "Edytor",
files: "Pliki",
help: "Pomoc",
settings: "Ustawienia",
grid: "Siatka",
},
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",
selectFile: "Select File",
openInPipeline: "Open in Pipeline",
dropFilesHere: "Drop files here",
orClickToSelect: "or click to select files",
name: "Name",
format: "Format",
size: "Size",
dimensions: "Dimensions",
version: "Version",
toolsUsed: "Tools Used",
none: "None",
delete: "Delete",
pipeline: "Pipeline",
download: "Download",
},
dropzone: {
unsupportedFileType: "Ten typ pliku nie jest obsługiwany przez to narzędzie",
urlFetchFailed: "Nie udało się pobrać obrazu z URL",
ariaLabel: "Strefa upuszczania plików",
dropPrompt: "Przeciągnij tutaj swoje obrazy",
browseOrPaste: "kliknij gdziekolwiek, aby przeglądać, lub wklej ze schowka",
uploadButton: "Prześlij",
defaultFormats: "PNG, JPG, WebP, HEIC, RAW, PSD i ponad 65 formatów",
orSeparator: "lub",
urlPlaceholder: "Wklej adres URL obrazu...",
urlLoadingIndicator: "...",
addUrlButton: "Dodaj",
importMultipleUrls: "Importuj wiele adresów URL...",
filesSelected: "Wybrano plików: {count}",
dropToAdd: "Upusc, aby dodac pliki",
dropToReplace: "Upusc, aby zastapic plik",
},
reviewPanel: {
processedResultAlt: "Wynik przetwarzania",
sizeLabel: "Rozmiar: {size}",
typeLabel: "Typ: {type}",
processedLabel: "Przetworzono: {time}",
undoButton: "Cofnij",
downloadButton: "Pobierz",
openInEditor: "Otwórz w edytorze",
reviewHeading: "Przegląd",
continueEditing: "Kontynuuj edycję",
},
features: {
notEnabledTitle: "Funkcja nieaktywna",
notEnabledDescription:
"Ta funkcja nie jest aktywna. Poproś administratora o jej włączenie w Ustawieniach.",
requiresDownload: "Ta funkcja wymaga dodatkowego pobrania (~{size})",
retryButton: "Ponów",
queued: "W kolejce do instalacji...",
enableButton: "Włącz {name}",
repairRequired: "Repair Required",
repairDescription: "Some model files are missing or corrupted. Repair will re-download them.",
repairButton: "Repair {name}",
lessThanMinute: "Mniej niż minuta do końca",
oneMinuteLeft: "Pozostała ~1 minuta",
minutesLeft: "Pozostało ~{mins} minut",
progressMessages: [
"Prawie gotowe... chyba...",
"Dobre rzeczy wymagają czasu...",
"I tak szybciej niż czekanie na schnięcie farby...",
"Pańska cierpliwość jest godna podziwu...",
"Pracujemy ciężej, niż się wydaje...",
"To jest ta ekscytująca część, zaufaj nam...",
"Za kulisami dzieją się ważne rzeczy...",
"Skoro to czytasz, to działa...",
"Przygotowujemy coś wspaniałego...",
"Warto na to czekać, słowo harcerza...",
"Napięcie jest częścią doświadczenia...",
"Uczymy Twój komputer nowych sztuczek...",
"Konfigurujemy Twoje supermoce...",
"Twoje pliki podziękują Ci później...",
"Ładowanie... ale z klasą...",
"Idealny moment na kawę...",
"Kraków też nie w jeden dzień zbudowano...",
"Ciii... geniusz przy pracy...",
"Twoje projekty już zazdroszczą temu, co nadchodzi...",
"Montujemy drużynę marzeń...",
"Rozpakowujemy wspaniałość...",
"Prawie skończyliśmy myśleć o rozpoczęciu... żartujemy...",
"Zwrot akcji: tu naprawdę coś się dzieje...",
"Rozgrzewamy silniki kreatywności...",
"Wyobraźnia się ładuje...",
"To nie wygaszacz ekranu, obiecujemy...",
"Wielka sztuka potrzebuje czasu na instalację...",
"Twoje przyszłe ja będzie Ci wdzięczne...",
"Pobieramy naprawdę mądre pliki...",
"Czekaj, najlepsze dopiero nadchodzi...",
],
},
help: {
heading: "Pomoc",
gettingStarted: {
heading: "Pierwsze kroki",
description:
"Wybierz narzędzie z paska bocznego lub wyszukaj je. Prześlij plik, przeciągając go na stronę lub klikając strefę przesyłania. Dostosuj ustawienia i pobierz wynik.",
},
keyboardShortcuts: {
heading: "Skróty klawiaturowe",
focusSearchBar: "Fokus na pasku wyszukiwania",
goToTools: "Przejdź do narzędzi",
toggleTheme: "Przełącz motyw",
goToResize: "Przejdź do zmiany rozmiaru",
goToCrop: "Przejdź do kadrowania",
goToCompress: "Przejdź do kompresji",
goToConvert: "Przejdź do konwersji",
goToRemoveBackground: "Przejdź do usuwania tła",
goToWatermarkText: "Przejdź do tekstowego znaku wodnego",
goToStripMetadata: "Przejdź do usuwania metadanych",
goToImageInfo: "Przejdź do informacji o obrazie",
processFile: "Przetwórz plik",
downloadResult: "Pobierz wynik",
},
resources: {
heading: "Zasoby",
githubLink: "Repozytorium GitHub",
reportIssueLink: "Zgłoś problem",
docsLink: "Dokumentacja",
apiRefLink: "Dokumentacja API (Swagger)",
},
versionLabel: "SnapOtter v{version}",
},
errors: {
generic: "Wystąpił błąd",
offline: "Jesteś offline",
reconnecting: "Ponowne łączenie z serwerem...",
connected: "Połączono",
processingFailed: "Przetwarzanie tego pliku nie powiodło się",
timeout: "Upłynął limit czasu żądania. Serwer może być przeciążony. Spróbuj ponownie.",
networkError: "Błąd sieci. Sprawdź połączenie.",
invalidCredentials: "Nieprawidłowa nazwa użytkownika lub hasło",
connectionError: "Błąd połączenia",
},
analytics: {
consentTitle: "Pomóż ulepszyć SnapOtter",
consentDescription:
"Anonimowe statystyki użytkowania pomagają nam naprawiać błędy i tworzyć narzędzia, których naprawdę potrzebujesz. Twoje pliki pozostają na Twoim komputerze.",
consentChangeable: "Możesz to wyłączyć w każdej chwili w Ustawieniach.",
acceptButton: "Jasne, brzmi dobrze",
declineButton: "Nie teraz",
settingsTitle: "Analityka",
settingsDescription:
"Udostępnianie anonimowych danych o użytkowaniu w celu ulepszenia SnapOtter.",
settingsPrivacy: "Państwa pliki nigdy nie opuszczają komputera.",
settingsDisabledByAdmin: "Analityka została wyłączona przez administratora serwera.",
learnMore: "Dowiedz się więcej",
},
sidebar: {
tools: "Narzędzia",
grid: "Siatka",
automate: "Automatyzacja",
editor: "Edytor",
files: "Pliki",
help: "Pomoc",
settings: "Ustawienia",
},
toolCard: {
addToFavourites: "Dodaj do ulubionych",
},
appLayout: {
mobileNavTools: "Narzędzia",
mobileNavAutomate: "Automatyzacja",
mobileNavEditor: "Edytor",
mobileNavFiles: "Pliki",
mobileNavSettings: "Ustawienia",
},
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: "Poprzedni plik",
nextImage: "Następny plik",
imageArea: "Obszar podglądu",
imageViewer: "Przeglądarka plików",
fileDropZone: "File drop zone",
imageDropZone: "Strefa upuszczania plików",
beforeAfterSlider: "Before/after comparison slider",
imageControls: "Sterowanie podglądem",
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",
homeLink: "SnapOtter home",
},
} as const;