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: "Zapisywanie...",
    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: "Nie znaleziono strony",
    pageNotFoundDescription: "Strona, której szukasz, nie istnieje lub została przeniesiona.",
  },
  categories: {
    essentials: "Podstawowe",
    adjustments: "Korekta",
    enhance: "Poprawa i 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": "Konwersja",
    "video-effects": "Efekty i montaż",
    "video-subtitles": "Napisy",
    "video-metadata": "Metadane",
    "audio-edit": "Edycja",
    "audio-convert": "Konwersja",
    "audio-effects": "Efekty i montaż",
    "audio-metadata": "Metadane",
    "pdf-organize": "Organizacja",
    "pdf-edit": "Edycja i adnotacje",
    "pdf-security": "Zabezpieczenia",
    "pdf-optimize": "Optymalizacja",
    "doc-convert": "Konwersja",
    data: "Pliki",
    archives: "Archiwa",
  },
  modalities: {
    image: "Obraz",
    video: "Wideo",
    audio: "Audio",
    documentsAndFiles: "PDF i pliki",
  },
  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: "Wyodrębnianie tekstu z dokumentów PDF za pomocą 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: "Zamień mowę na tekst za pomocą transkrypcji opartej na AI",
    },
    "auto-subtitles": {
      name: "Automatyczne napisy",
      description: "Generuj pliki napisów ze ścieżek dźwiękowych wideo",
    },
    "transparency-fixer": {
      name: "Naprawa przezroczystości PNG",
      description: "Naprawa fałszywej przezroczystości PNG jednym kliknięciem",
    },
    "background-replace": {
      name: "Zamiana tła",
      description: "Zamień tło obrazu na jednolity kolor",
    },
    "blur-background": {
      name: "Rozmycie tła",
      description: "Rozmyj tło zachowując ostrość 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 na obraz",
      description: "Przechwytuj strony internetowe jako obrazy wysokiej jakości",
    },
    "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: "Kadrowanie do koła",
      description: "Przytnij obraz do koła z przezroczystymi rogami",
    },
    duotone: {
      name: "Duotone",
      description: "Zastosuj dwukolorowy efekt duotone z wybranymi kolorami cieni i świateł",
    },
    "image-pad": {
      name: "Dopełnienie obrazu",
      description: "Dopełnij obraz do wybranej proporcji jednolitym kolorem tła",
    },
    pixelate: {
      name: "Pikselizacja",
      description: "Zastosuj efekt pikselizacji na całym obrazie lub wybranym obszarze",
    },
    vignette: {
      name: "Winieta",
      description: "Dodaj efekt winiety z regulowaną siłą i kolorem",
    },
    "gif-webp": {
      name: "Konwerter GIF/WebP",
      description: "Konwertuj animowany GIF na WebP i odwrotnie, zachowując wszystkie klatki",
    },
    histogram: {
      name: "Histogram",
      description: "Wygeneruj wykres histogramu RGB z obrazu",
    },
    "lqip-placeholder": {
      name: "Placeholder LQIP",
      description: "Wygeneruj miniaturowy obraz zastępczy niskiej jakości z URI danych base64",
    },
    "sprite-sheet": {
      name: "Sprite Sheet",
      description: "Połącz wiele obrazów w jedną siatkę sprite sheet",
    },
    "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: "Generator kodów kreskowych",
      description:
        "Generuj kody kreskowe w formatach Code 128, EAN-13, UPC-A, Code 39, ITF-14 i Data Matrix",
    },
    "chart-maker": {
      name: "Kreator wykresów",
      description: "Twórz wykresy słupkowe, liniowe lub kołowe z danych CSV lub JSON",
    },
    "convert-video": {
      name: "Konwertuj wideo",
      description: "Konwertuj wideo pomiędzy MP4, MOV i WebM",
    },
    "compress-video": {
      name: "Kompresuj wideo",
      description: "Zmniejsz rozmiar pliku wideo z kontrolą jakości",
    },
    "trim-video": {
      name: "Przytnij wideo",
      description: "Wytnij fragment z wideo",
    },
    "mute-video": {
      name: "Wycisz wideo",
      description: "Usuń ścieżkę audio z wideo",
    },
    "video-to-gif": {
      name: "Wideo na GIF",
      description: "Zamień klip wideo w animowany GIF",
    },
    "resize-video": {
      name: "Zmień rozmiar wideo",
      description: "Skaluj wideo do nowej rozdzielczości lub predefiniowanego rozmiaru",
    },
    "crop-video": {
      name: "Kadruj wideo",
      description: "Wykadruj wybrany obszar z wideo",
    },
    "rotate-video": {
      name: "Obróć wideo",
      description: "Obróć lub odbij wideo",
    },
    "change-fps": {
      name: "Zmień FPS",
      description: "Zmień liczbę klatek na sekundę wideo",
    },
    "video-color": {
      name: "Kolor wideo",
      description: "Dostosuj jasność, kontrast, nasycenie i gammę",
    },
    "video-speed": {
      name: "Prędkość wideo",
      description: "Przyspiesz lub zwolnij wideo",
    },
    "reverse-video": {
      name: "Odwróć wideo",
      description: "Odtwórz klip wideo od tyłu",
    },
    "video-loudnorm": {
      name: "Normalizuj audio",
      description: "Znormalizuj głośność audio wideo do standardu emisyjnego",
    },
    "aspect-pad": {
      name: "Dopełnienie proporcji",
      description: "Dodaj jednolite paski, aby dopasować do docelowej proporcji",
    },
    "blur-pad": {
      name: "Rozmyte dopełnienie",
      description: "Wypełnij paski rozmytą kopią wideo",
    },
    "watermark-video": {
      name: "Znak wodny wideo",
      description: "Wypal tekstowy znak wodny na klatkach wideo",
    },
    "stabilize-video": {
      name: "Stabilizuj wideo",
      description: "Zredukuj drgania kamery dwuprzebiegową stabilizacją",
    },
    "gif-to-video": {
      name: "GIF na wideo",
      description: "Konwertuj animowany GIF na wideo MP4 lub WebM",
    },
    "video-to-webp": {
      name: "Wideo na WebP",
      description: "Konwertuj klip wideo na animowany obraz WebP",
    },
    "video-to-frames": {
      name: "Wideo na klatki",
      description: "Wyodrębnij klatki z wideo jako ZIP z obrazami",
    },
    "merge-videos": {
      name: "Scal wideo",
      description: "Połącz wiele klipów wideo w jeden plik",
    },
    "replace-audio": {
      name: "Zamień audio",
      description: "Zamień ścieżkę audio wideo na inny plik",
    },
    "burn-subtitles": {
      name: "Wypal napisy",
      description: "Trwale wyrenderuj napisy na klatkach wideo",
    },
    "embed-subtitles": {
      name: "Osadź napisy",
      description: "Dodaj ścieżkę napisów do kontenera wideo",
    },
    "extract-subtitles": {
      name: "Wyodrębnij napisy",
      description: "Wyodrębnij ścieżkę napisów z wideo jako plik SRT",
    },
    "images-to-video": {
      name: "Obrazy na wideo",
      description: "Zamień zestaw obrazów w wideo z pokazem slajdów",
    },
    "video-metadata": {
      name: "Wyczyść metadane wideo",
      description: "Usuń metadane z wideo i wyświetl raport znalezionych danych",
    },
    "convert-audio": {
      name: "Konwertuj audio",
      description: "Konwertuj audio pomiędzy MP3, WAV, OGG i innymi formatami",
    },
    "trim-audio": {
      name: "Przytnij audio",
      description: "Wytnij fragment z pliku audio",
    },
    "extract-audio": {
      name: "Wyodrębnij audio",
      description: "Wyodrębnij ścieżkę audio z wideo",
    },
    "volume-adjust": {
      name: "Regulacja głośności",
      description: "Zwiększ lub zmniejsz głośność audio o stałą wartość",
    },
    "normalize-audio": {
      name: "Normalizuj audio",
      description: "Wyrównaj głośność do standardu emisyjnego",
    },
    "fade-audio": {
      name: "Wygaszanie audio",
      description: "Dodaj efekty narastania i wygaszania do audio",
    },
    "reverse-audio": {
      name: "Odwróć audio",
      description: "Odtwórz audio od tyłu",
    },
    "audio-speed": {
      name: "Prędkość audio",
      description: "Przyspiesz lub zwolnij odtwarzanie audio",
    },
    "pitch-shift": {
      name: "Zmiana tonacji",
      description: "Podnieś lub obniż tonację o półtony bez zmiany prędkości",
    },
    "audio-channels": {
      name: "Kanały audio",
      description: "Konwertuj między mono, stereo lub zamień lewy i prawy kanał",
    },
    "silence-removal": {
      name: "Usuwanie ciszy",
      description: "Usuń ciche fragmenty z audio",
    },
    "noise-reduction": {
      name: "Redukcja szumu",
      description: "Zredukuj szum tła za pomocą odszumiania opartego na FFT",
    },
    "merge-audio": {
      name: "Scal audio",
      description: "Połącz wiele plików audio w jeden",
    },
    "split-audio": {
      name: "Podziel audio",
      description: "Podziel audio według czasu, równych części lub wykrywania ciszy",
    },
    "ringtone-maker": {
      name: "Kreator dzwonków",
      description: "Utwórz dzwonek z dowolnego pliku audio",
    },
    "waveform-image": {
      name: "Obraz fali dźwiękowej",
      description: "Wygeneruj wizualizację fali dźwiękowej jako obraz PNG",
    },
    "audio-metadata": {
      name: "Metadane audio",
      description: "Wyświetl, edytuj lub usuń tagi audio (ID3)",
    },
    "merge-pdf": {
      name: "Scal pliki PDF",
      description: "Połącz wiele plików PDF w jeden",
    },
    "split-pdf": {
      name: "Podziel PDF",
      description: "Wyodrębnij strony lub podziel na części",
    },
    "compress-pdf": {
      name: "Kompresuj PDF",
      description: "Zmniejsz rozmiar pliku PDF",
    },
    "rotate-pdf": {
      name: "Obróć PDF",
      description: "Obróć strony w pliku PDF",
    },
    "convert-document": {
      name: "Konwertuj dokument",
      description: "Konwertuj pomiędzy formatami Word, OpenDocument, RTF i zwykłym tekstem",
    },
    "convert-presentation": {
      name: "Konwertuj prezentację",
      description: "Konwertuj pomiędzy formatami prezentacji PowerPoint i OpenDocument",
    },
    "convert-spreadsheet": {
      name: "Konwertuj arkusz",
      description:
        "Konwertuj pomiędzy formatami Excel, OpenDocument i CSV. Skoroszyty wieloarkuszowe eksportują pierwszy arkusz do CSV.",
    },
    "excel-to-pdf": {
      name: "Excel na PDF",
      description:
        "Konwertuj arkusze kalkulacyjne na PDF. Szerokie arkusze mogą zostać podzielone na wiele stron.",
    },
    "word-to-pdf": {
      name: "Word na PDF",
      description: "Konwertuj dokumenty Word na PDF",
    },
    "extract-pages": {
      name: "Wyodrębnij strony",
      description: "Wyodrębnij wybrane strony do nowego pliku PDF",
    },
    "remove-pages": {
      name: "Usuń strony",
      description: "Usuń wybrane strony z pliku PDF",
    },
    "organize-pdf": {
      name: "Organizuj PDF",
      description: "Uporządkuj strony w podanej kolejności",
    },
    "protect-pdf": {
      name: "Chroń PDF",
      description: "Dodaj ochronę hasłem (szyfrowanie AES-256)",
    },
    "unlock-pdf": {
      name: "Odblokuj PDF",
      description: "Usuń ochronę hasłem z pliku PDF",
    },
    "repair-pdf": {
      name: "Napraw PDF",
      description: "Spróbuj naprawić uszkodzony plik PDF",
    },
    "linearize-pdf": {
      name: "Optymalizuj PDF dla WWW",
      description: "Zlinearyzuj PDF do szybkiego wyświetlania w przeglądarce",
    },
    "grayscale-pdf": {
      name: "PDF w skali szarości",
      description: "Konwertuj wszystkie kolory na skalę szarości",
    },
    "pdfa-convert": {
      name: "Konwersja PDF/A",
      description: "Konwertuj do archiwalnego formatu PDF/A-2",
    },
    "crop-pdf": {
      name: "Kadruj PDF",
      description: "Przytnij wszystkie strony z jednolitym marginesem",
    },
    "nup-pdf": {
      name: "N-up PDF",
      description: "Rozmieść wiele stron na jednym arkuszu",
    },
    "booklet-pdf": {
      name: "Broszura PDF",
      description: "Rozmieść strony do złożenia w broszurę",
    },
    "watermark-pdf": {
      name: "Znak wodny PDF",
      description: "Dodaj tekstowy znak wodny do każdej strony",
    },
    "pdf-page-numbers": {
      name: "Numeracja stron PDF",
      description: "Dodaj numery stron do każdej strony",
    },
    "flatten-pdf": {
      name: "Spłaszcz PDF",
      description: "Scal formularze i adnotacje z treścią strony",
    },
    "redact-pdf": {
      name: "Zaciemnij PDF",
      description: "Trwale usuń wystąpienia tekstu (zweryfikowana prawdziwa redakcja)",
    },
    "pdf-to-text": {
      name: "PDF na tekst",
      description: "Wyodrębnij tekst z pliku PDF",
    },
    "pdf-to-word": {
      name: "PDF na Word",
      description: "Najlepszy dla tekstowych PDF; zeskanowane strony wymagają OCR",
    },
    "pdf-metadata": {
      name: "Metadane PDF",
      description: "Odczytuj i zapisuj metadane dokumentu PDF",
    },
    "powerpoint-to-pdf": {
      name: "PowerPoint na PDF",
      description: "Konwertuj prezentacje na PDF",
    },
    "html-to-pdf": {
      name: "HTML na PDF",
      description:
        "Konwertuj plik HTML na PDF. Zdalne zasoby są wyłączone ze względu na prywatność.",
    },
    "markdown-to-docx": {
      name: "Markdown na Word",
      description: "Konwertuj plik Markdown na dokument Word (DOCX)",
    },
    "markdown-to-html": {
      name: "Markdown na HTML",
      description:
        "Konwertuj plik Markdown na samodzielną stronę HTML. Zdalne obrazy ze źródła pozostają bez zmian.",
    },
    "markdown-to-pdf": {
      name: "Markdown na PDF",
      description:
        "Konwertuj plik Markdown na stylizowany PDF. Zdalne zasoby są wyłączone ze względu na prywatność.",
    },
    "epub-convert": {
      name: "Konwertuj EPUB",
      description:
        "Konwertuj EPUB na PDF, DOCX, HTML lub Markdown. Zdalne zasoby w książce nie są pobierane.",
    },
    "to-epub": {
      name: "Konwertuj na EPUB",
      description: "Konwertuj pliki Word, Markdown, HTML lub zwykły tekst na EPUB",
    },
    "csv-excel": {
      name: "CSV na Excel",
      description: "Konwertuj pomiędzy CSV i Excel (XLSX) w obu kierunkach",
    },
    "csv-json": {
      name: "CSV na JSON",
      description: "Konwertuj pomiędzy CSV i JSON w obu kierunkach",
    },
    "json-xml": {
      name: "JSON na XML",
      description: "Konwertuj pomiędzy JSON i XML w obu kierunkach",
    },
    "split-csv": {
      name: "Podziel CSV",
      description: "Podziel CSV na mniejsze pliki według liczby wierszy",
    },
    "merge-csvs": {
      name: "Scal pliki CSV",
      description: "Połącz wiele plików CSV lub TSV z pasującymi kolumnami w jeden",
    },
    "yaml-json": {
      name: "YAML / JSON",
      description: "Konwertuj pomiędzy YAML i JSON w obu kierunkach",
    },
    "xml-to-csv": {
      name: "XML na CSV",
      description: "Wyodrębnij powtarzające się elementy z XML do tabeli CSV",
    },
    "create-zip": {
      name: "Utwórz ZIP",
      description: "Spakuj wiele plików do jednego archiwum ZIP",
    },
    "extract-zip": {
      name: "Wypakuj ZIP",
      description:
        "Bezpiecznie wypakuj pliki z archiwum ZIP z ochroną przed bombą. Archiwa z jednym plikiem zwracają plik bezpośrednio.",
    },
    pipeline: {
      name: "Konstruktor Pipeline",
      description: "Łączenie wielu narzędzi w przepływ pracy",
    },
    processing: { canceled: "Przetwarzanie anulowane" },
    mediaPlayer: {
      unsupported: "Twoja przeglądarka nie obsługuje tego formatu multimediów.",
    },
    documentView: {
      loadFailed: "Nie udało się załadować dokumentu.",
      previousPage: "Poprzednia strona",
      nextPage: "Następna strona",
      inputNotPreviewable: "Podgląd niedostępny dla tego typu pliku",
    },
  },
  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: "Standardowa",
      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: "Format wyjściowy",
      edgeSmoothing: "Wygładzanie krawędzi",
      edgeSmoothingOff: "Wył.",
      edgeSmoothingLight: "Lekkie",
      edgeSmoothingMedium: "Średnie",
      edgeSmoothingStrong: "Mocne",
      colorDecontamination: "Oczyszczanie kolorów",
      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: "Jakość",
      language: "Język",
      autoDetect: "Automatyczne wykrywanie",
      pages: "Strony",
      pagesPlaceholder: "wszystkie, 1-3, 5",
      pagesHint: "Wprowadź numery stron lub zakresy (np. 1-3, 5, 8-10). Maks. 50 stron.",
      submit: "Wyodrębnij tekst",
      submitBatch: "Wyodrębnij 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: "Język",
      autoDetect: "Automatyczne wykrywanie",
      outputFormat: "Format wyjściowy",
      plainText: "Zwykły tekst",
      submit: "Transkrybuj",
      submitBatch: "Transkrybuj ({count} plików)",
      progressLabel: "Transkrypcja audio",
    },
    "auto-subtitles": {
      language: "Język",
      autoDetect: "Automatyczne wykrywanie",
      format: "Format napisów",
      submit: "Generuj napisy",
      submitBatch: "Generuj napisy ({count} plików)",
      progressLabel: "Generowanie napisów",
    },
    "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 tła",
      submit: "Zamień tło",
      submitBatch: "Zamień tło ({count} plików)",
      progressLabel: "Zamiana tła",
    },
    "blur-background": {
      intensity: "Intensywność rozmycia",
      submit: "Rozmyj tło",
      submitBatch: "Rozmyj tło ({count} plików)",
      progressLabel: "Rozmywanie tła",
    },
    "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: "Pobierz",
      defaultText: "Twój tekst tutaj",
    },
    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: "Odczytaj info",
      reading: "Odczytywanie...",
      channelStats: "Statystyki kanałów",
      yes: "Tak",
      no: "Nie",
      na: "nd.",
      failedToRead: "Nie udało się odczytać informacji",
    },
    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: "E-mail",
      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: "Plik HTML",
      htmlFile: "Plik HTML",
      url: "URL",
      urlPlaceholder: "https://snapotter.com",
      format: "Format wyjściowy",
      quality: "Jakość",
      devicePreset: "Urządzenie",
      viewportWidth: "Szerokość",
      viewportHeight: "Wysokość",
      fullPage: "Cała strona",
      submit: "Przechwyć",
      download: "Pobierz zrzut ekranu",
      capturing: "Przechwytywanie strony...",
      errorTimeout: "Ładowanie strony trwało zbyt długo",
      errorBlocked: "Nie można przechwycić tego URL",
      errorUnavailable: "Usługa zrzutów ekranu jest niedostępna",
      errorFailed: "Nie udało się przechwycić strony",
      placeholder: "Wpisz URL i kliknij Przechwyć",
      presets: {
        desktop: "Komputer",
        tablet: "Tablet",
        mobile: "Telefon",
        custom: "Własne",
      },
    },
    "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: "Przytnij do koła",
      submitBatch: "Przytnij do koła ({count} plików)",
      progressLabel: "Przycinanie do koła",
    },
    duotone: {
      shadow: "Kolor cieni",
      highlight: "Kolor świateł",
      submit: "Zastosuj duotone",
      submitBatch: "Zastosuj duotone ({count} plików)",
      progressLabel: "Stosowanie duotone",
    },
    "image-pad": {
      target: "Docelowe proporcje",
      color: "Kolor tła",
      submit: "Dodaj wypełnienie",
      submitBatch: "Dodaj wypełnienie ({count} plików)",
      progressLabel: "Dodawanie wypełnienia",
    },
    pixelate: {
      blockSize: "Rozmiar bloku",
      submit: "Pikselizuj",
      submitBatch: "Pikselizuj ({count} plików)",
      progressLabel: "Pikselizacja",
    },
    vignette: {
      strength: "Siła",
      color: "Kolor winiety",
      submit: "Zastosuj winietę",
      submitBatch: "Zastosuj winietę ({count} plików)",
      progressLabel: "Stosowanie winiety",
    },
    "gif-webp": {
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwertowanie animacji",
    },
    histogram: {
      submit: "Generuj histogram",
      submitBatch: "Generuj histogram ({count} plików)",
      progressLabel: "Generowanie histogramu",
    },
    "lqip-placeholder": {
      width: "Szerokość",
      blur: "Rozmycie",
      submit: "Generuj placeholder",
      submitBatch: "Generuj placeholder ({count} plików)",
      progressLabel: "Generowanie placeholdera",
    },
    "sprite-sheet": {
      columns: "Kolumny",
      padding: "Odstęp",
      background: "Kolor tła",
      submit: "Utwórz sprite sheet",
      submitBatch: "Utwórz sprite sheet",
      progressLabel: "Tworzenie 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: "Tekst",
      type: "Typ kodu kreskowego",
      scale: "Skala",
      includeText: "Dołącz tekst",
      submit: "Generuj kod kreskowy",
      download: "Pobierz kod kreskowy",
    },
    "chart-maker": {
      kind: "Typ wykresu",
      title: "Tytuł",
      width: "Szerokość",
      height: "Wysokość",
      submit: "Utwórz wykres",
      submitBatch: "Utwórz wykres ({count} plików)",
      progressLabel: "Tworzenie wykresu",
    },
    "enhance-faces-standalone": {
      model: "Model",
      fast: "Szybki",
      balanced: "Zrównoważony",
      best: "Najlepszy",
    },
    "convert-video": {
      format: "Format wyjściowy",
      quality: "Jakość",
      high: "Wysoka",
      balanced: "Zrównoważona",
      small: "Najmniejsza",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwertowanie",
    },
    "compress-video": {
      quality: "Kompresja",
      light: "Lekka",
      balanced: "Zrównoważona",
      strong: "Silna",
      resolution: "Rozdzielczość",
      original: "Oryginalna",
      submit: "Kompresuj",
      submitBatch: "Kompresuj ({count} plików)",
      progressLabel: "Kompresowanie",
    },
    "trim-video": {
      start: "Początek (sekundy)",
      end: "Koniec (sekundy)",
      precise: "Dokładność klatkowa (ponowne kodowanie)",
      submit: "Przytnij",
      submitBatch: "Przytnij ({count} plików)",
      progressLabel: "Przycinanie",
    },
    "mute-video": {
      submit: "Usuń dźwięk",
      submitBatch: "Usuń dźwięk ({count} plików)",
      progressLabel: "Wyciszanie",
    },
    "video-to-gif": {
      fps: "Klatki na sekundę",
      width: "Szerokość (px)",
      start: "Początek (sekundy)",
      duration: "Czas trwania (sekundy)",
      submit: "Utwórz GIF",
      submitBatch: "Utwórz GIF ({count} plików)",
      progressLabel: "Tworzenie GIF",
    },
    "resize-video": {
      preset: "Szablon",
      width: "Szerokość (px)",
      height: "Wysokość (px)",
      hint: "Pozostaw jeden wymiar pusty, aby zachować proporcje",
      submit: "Zmień rozmiar",
      submitBatch: "Zmień rozmiar ({count} plików)",
      progressLabel: "Zmiana rozmiaru",
    },
    "crop-video": {
      width: "Szerokość (px)",
      height: "Wysokość (px)",
      x: "Przesunięcie X",
      y: "Przesunięcie Y",
      submit: "Przytnij",
      submitBatch: "Przytnij ({count} plików)",
      progressLabel: "Przycinanie",
    },
    "rotate-video": {
      transform: "Przekształcenie",
      cw90: "Obróć 90 w prawo",
      ccw90: "Obróć 90 w lewo",
      rotate180: "Obróć o 180",
      hflip: "Odbij poziomo",
      vflip: "Odbij pionowo",
      submit: "Obróć",
      submitBatch: "Obróć ({count} plików)",
      progressLabel: "Obracanie",
    },
    "change-fps": {
      fps: "Klatki na sekundę",
      submit: "Zmień FPS",
      submitBatch: "Zmień FPS ({count} plików)",
      progressLabel: "Zmiana FPS",
    },
    "video-color": {
      brightness: "Jasność",
      contrast: "Kontrast",
      saturation: "Nasycenie",
      gamma: "Gamma",
      submit: "Zastosuj",
      submitBatch: "Zastosuj ({count} plików)",
      progressLabel: "Dostosowywanie kolorów",
    },
    "video-speed": {
      factor: "Współczynnik prędkości",
      keepPitch: "Zachowaj oryginalną tonację",
      submit: "Zmień prędkość",
      submitBatch: "Zmień prędkość ({count} plików)",
      progressLabel: "Zmiana prędkości",
    },
    "reverse-video": {
      hint: "Ograniczone do klipów do 5 minut",
      submit: "Odwróć",
      submitBatch: "Odwróć ({count} plików)",
      progressLabel: "Odwracanie",
    },
    "video-loudnorm": {
      hint: "Normalizuje dźwięk do standardu EBU R128",
      submit: "Normalizuj",
      submitBatch: "Normalizuj ({count} plików)",
      progressLabel: "Normalizacja",
    },
    "aspect-pad": {
      target: "Docelowe proporcje",
      color: "Kolor tła",
      colorHint: "Kolor HEX, np. #000000",
      submit: "Dodaj wypełnienie",
      submitBatch: "Dodaj wypełnienie ({count} plików)",
      progressLabel: "Dodawanie wypełnienia",
    },
    "blur-pad": {
      target: "Docelowe proporcje",
      blur: "Siła rozmycia",
      submit: "Dodaj wypełnienie",
      submitBatch: "Dodaj wypełnienie ({count} plików)",
      progressLabel: "Dodawanie wypełnienia",
    },
    "watermark-video": {
      text: "Tekst znaku wodnego",
      position: "Pozycja",
      fontSize: "Rozmiar czcionki",
      opacity: "Przezroczystość",
      color: "Kolor",
      colorHint: "Kolor HEX, np. #ffffff",
      submit: "Dodaj znak wodny",
      submitBatch: "Dodaj znak wodny ({count} plików)",
      progressLabel: "Dodawanie znaku wodnego",
    },
    "stabilize-video": {
      smoothing: "Wygładzanie",
      hint: "Wymaga dwóch przebiegów i trwa dłużej niż inne narzędzia",
      submit: "Stabilizuj",
      submitBatch: "Stabilizuj ({count} plików)",
      progressLabel: "Stabilizacja",
    },
    "gif-to-video": {
      format: "Format wyjściowy",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwertowanie",
    },
    "video-to-webp": {
      fps: "Klatki na sekundę",
      width: "Szerokość (px)",
      quality: "Jakość",
      loop: "Zapętl animację",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwertowanie",
    },
    "video-to-frames": {
      mode: "Tryb ekstrakcji",
      modeAll: "Wszystkie klatki",
      modeNth: "Co N-ta klatka",
      modeTimestamps: "Określone momenty",
      n: "Pobierz co N-tą klatkę",
      timestamps: "Momenty (sekundy)",
      timestampsHint: "Oddzielone przecinkami, np. 0.5, 2, 4.5",
      format: "Format obrazu",
      submit: "Wyodrębnij klatki",
      submitBatch: "Wyodrębnij klatki ({count} plików)",
      progressLabel: "Wyodrębnianie klatek",
    },
    "merge-videos": {
      hint: "Pliki są łączone w kolejności przesyłania",
      submit: "Scal",
      submitBatch: "Scal ({count} plików)",
      progressLabel: "Scalanie",
    },
    "replace-audio": {
      hint: "Najpierw prześlij wideo, potem audio",
      submit: "Zamień dźwięk",
      submitBatch: "Zamień dźwięk ({count} plików)",
      progressLabel: "Zamiana dźwięku",
    },
    "burn-subtitles": {
      fontSize: "Rozmiar czcionki",
      hint: "Prześlij wideo i plik napisów (.srt lub .vtt)",
      submit: "Wypal napisy",
      submitBatch: "Wypal napisy ({count} plików)",
      progressLabel: "Wypalanie napisów",
    },
    "embed-subtitles": {
      language: "Kod języka",
      languageHint: "Trzyliterowy kod ISO 639-2, np. eng, spa, fra",
      submit: "Osadź napisy",
      submitBatch: "Osadź napisy ({count} plików)",
      progressLabel: "Osadzanie napisów",
    },
    "extract-subtitles": {
      submit: "Wyodrębnij napisy",
      submitBatch: "Wyodrębnij napisy ({count} plików)",
      progressLabel: "Wyodrębnianie napisów",
    },
    "images-to-video": {
      secondsPerImage: "Sekundy na obraz",
      resolution: "Rozdzielczość",
      fps: "Klatki na sekundę",
      submit: "Utwórz wideo",
      submitBatch: "Utwórz wideo ({count} plików)",
      progressLabel: "Tworzenie pokazu slajdów",
    },
    "video-metadata": {
      hint: "Raport metadanych pojawi się w wyniku",
      submit: "Usuń metadane",
      submitBatch: "Usuń metadane ({count} plików)",
      progressLabel: "Usuwanie metadanych",
    },
    "convert-audio": {
      format: "Format wyjściowy",
      bitrate: "Przepływność (kbps)",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwertowanie",
    },
    "trim-audio": {
      start: "Początek (sekundy)",
      end: "Koniec (sekundy)",
      submit: "Przytnij",
      submitBatch: "Przytnij ({count} plików)",
      progressLabel: "Przycinanie",
    },
    "extract-audio": {
      format: "Format wyjściowy",
      submit: "Wyodrębnij",
      submitBatch: "Wyodrębnij ({count} plików)",
      progressLabel: "Wyodrębnianie",
    },
    "volume-adjust": {
      "gain-db": "Wzmocnienie (dB)",
      submit: "Dostosuj głośność",
      submitBatch: "Dostosuj głośność ({count} plików)",
      progressLabel: "Dostosowywanie głośności",
    },
    "normalize-audio": {
      hint: "Normalizacja głośności EBU R128",
      submit: "Normalizuj",
      submitBatch: "Normalizuj ({count} plików)",
      progressLabel: "Normalizacja",
    },
    "fade-audio": {
      "fade-in-s": "Narastanie (sekundy)",
      "fade-out-s": "Zanikanie (sekundy)",
      submit: "Zastosuj zanikanie",
      submitBatch: "Zastosuj zanikanie ({count} plików)",
      progressLabel: "Stosowanie zanikania",
    },
    "reverse-audio": {
      submit: "Odwróć",
      submitBatch: "Odwróć ({count} plików)",
      progressLabel: "Odwracanie",
    },
    "audio-speed": {
      factor: "Współczynnik prędkości",
      submit: "Zmień prędkość",
      submitBatch: "Zmień prędkość ({count} plików)",
      progressLabel: "Zmiana prędkości",
    },
    "pitch-shift": {
      semitones: "Półtony",
      hint: "Wartość 0 półtonów jest niedozwolona",
      submit: "Zmień tonację",
      submitBatch: "Zmień tonację ({count} plików)",
      progressLabel: "Zmiana tonacji",
    },
    "audio-channels": {
      mode: "Tryb kanałów",
      "stereo-to-mono": "Stereo na mono",
      "mono-to-stereo": "Mono na stereo",
      swap: "Zamień lewy/prawy",
      submit: "Konwertuj kanały",
      submitBatch: "Konwertuj kanały ({count} plików)",
      progressLabel: "Konwersja kanałów",
    },
    "silence-removal": {
      "threshold-db": "Próg ciszy (dB)",
      "min-silence-s": "Minimalny czas ciszy (sekundy)",
      submit: "Usuń ciszę",
      submitBatch: "Usuń ciszę ({count} plików)",
      progressLabel: "Usuwanie ciszy",
    },
    "noise-reduction": {
      strength: "Siła",
      light: "Lekka",
      medium: "Średnia",
      strong: "Silna",
      submit: "Zredukuj szum",
      submitBatch: "Zredukuj szum ({count} plików)",
      progressLabel: "Redukcja szumu",
    },
    "merge-audio": {
      format: "Format wyjściowy",
      mp3: "MP3",
      wav: "WAV",
      flac: "FLAC",
      m4a: "M4A",
      "order-hint": "Pliki zostaną połączone w kolejności przesyłania",
      submit: "Scal audio",
      submitBatch: "Scal audio ({count} plików)",
      progressLabel: "Scalanie audio",
    },
    "split-audio": {
      mode: "Tryb podziału",
      time: "Według czasu",
      parts: "Równe części",
      silence: "Według ciszy",
      "segment-s": "Długość segmentu (sekundy)",
      "num-parts": "Liczba części",
      "threshold-db": "Próg ciszy (dB)",
      "min-silence-s": "Minimalny czas ciszy (sekundy)",
      submit: "Podziel audio",
      submitBatch: "Podziel audio ({count} plików)",
      progressLabel: "Dzielenie audio",
    },
    "ringtone-maker": {
      "start-s": "Czas rozpoczęcia (sekundy)",
      "duration-s": "Czas trwania (sekundy)",
      "max-hint": "Maksymalnie 30 sekund",
      submit: "Utwórz dzwonek",
      submitBatch: "Utwórz dzwonek ({count} plików)",
      progressLabel: "Tworzenie dzwonka",
    },
    "waveform-image": {
      width: "Szerokość (px)",
      height: "Wysokość (px)",
      color: "Kolor przebiegu fali",
      submit: "Generuj przebieg fali",
      submitBatch: "Generuj przebieg fali ({count} plików)",
      progressLabel: "Generowanie przebiegu fali",
    },
    "audio-metadata": {
      strip: "Usuń wszystkie metadane",
      title: "Tytuł",
      artist: "Artysta",
      album: "Album",
      submit: "Zastosuj metadane",
      submitBatch: "Zastosuj metadane ({count} plików)",
      progressLabel: "Stosowanie metadanych",
    },
    "merge-pdf": {
      addFiles: "Dodaj pliki PDF do scalenia",
      needTwo: "Wymagane są co najmniej dwa pliki PDF",
      orderHint: "{count} plików PDF zostanie scalonych w tej kolejności",
      submit: "Scal",
      submitBatch: "Scal ({count} plików)",
      progressLabel: "Scalanie",
    },
    "split-pdf": {
      mode: "Tryb podziału",
      range: "Zakres stron",
      rangeHint: "np. 1-3, 5, 7-z",
      everyN: "Stron na część",
      submit: "Podziel",
      submitBatch: "Podziel ({count} plików)",
      progressLabel: "Dzielenie",
    },
    "compress-pdf": {
      preset: "Ustawienie jakości",
      screen: "Ekran (najmniejszy)",
      ebook: "E-book (zrównoważony)",
      printer: "Drukarka (najlepsza jakość)",
      submit: "Kompresuj",
      submitBatch: "Kompresuj ({count} plików)",
      progressLabel: "Kompresja",
    },
    "rotate-pdf": {
      angle: "Kąt obrotu",
      range: "Zakres stron",
      rangeHint: "np. 1-3, 5, 1-z (wszystkie strony)",
      submit: "Obróć",
      submitBatch: "Obróć ({count} plików)",
      progressLabel: "Obracanie",
    },
    "convert-document": {
      format: "Format wyjściowy",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "convert-presentation": {
      format: "Format wyjściowy",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "convert-spreadsheet": {
      format: "Format wyjściowy",
      hint: "Skoroszyty z wieloma arkuszami eksportują do CSV tylko pierwszy arkusz.",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "excel-to-pdf": {
      submit: "Konwertuj do PDF",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "powerpoint-to-pdf": {
      submit: "Konwertuj do PDF",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "word-to-pdf": {
      submit: "Konwertuj do PDF",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "extract-pages": {
      range: "Zakres stron",
      rangeHint: "np. 1-3, 5, 7-z",
      submit: "Wyodrębnij",
      submitBatch: "Wyodrębnij ({count} plików)",
      progressLabel: "Wyodrębnianie",
    },
    "remove-pages": {
      pages: "Strony do usunięcia",
      pagesHint: "np. 2, 4-6, z (ostatnia strona)",
      submit: "Usuń",
      submitBatch: "Usuń ({count} plików)",
      progressLabel: "Usuwanie",
    },
    "organize-pdf": {
      order: "Kolejność stron",
      orderHint: "np. 3,1,2 lub 1-z (bez zmian)",
      submit: "Zmień kolejność",
      submitBatch: "Zmień kolejność ({count} plików)",
      progressLabel: "Zmiana kolejności",
    },
    "protect-pdf": {
      userPassword: "Hasło użytkownika",
      ownerPassword: "Hasło właściciela (opcjonalne)",
      ownerPasswordHint: "Domyślnie ustawiane na hasło użytkownika",
      submit: "Zabezpiecz",
      submitBatch: "Zabezpiecz ({count} plików)",
      progressLabel: "Szyfrowanie",
    },
    "unlock-pdf": {
      password: "Hasło",
      submit: "Odblokuj",
      submitBatch: "Odblokuj ({count} plików)",
      progressLabel: "Odszyfrowywanie",
    },
    "repair-pdf": {
      submit: "Napraw",
      submitBatch: "Napraw ({count} plików)",
      progressLabel: "Naprawianie",
    },
    "linearize-pdf": {
      submit: "Optymalizuj",
      submitBatch: "Optymalizuj ({count} plików)",
      progressLabel: "Linearyzacja",
    },
    "grayscale-pdf": {
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "pdfa-convert": {
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "crop-pdf": {
      margin: "Margines (punkty)",
      submit: "Przytnij",
      submitBatch: "Przytnij ({count} plików)",
      progressLabel: "Przycinanie",
    },
    "nup-pdf": {
      perSheet: "Stron na arkusz",
      submit: "Rozmieść",
      submitBatch: "Rozmieść ({count} plików)",
      progressLabel: "Rozmieszczanie",
    },
    "booklet-pdf": {
      perSheet: "Stron na arkusz",
      submit: "Utwórz broszurę",
      submitBatch: "Utwórz broszurę ({count} plików)",
      progressLabel: "Tworzenie broszury",
    },
    "watermark-pdf": {
      text: "Tekst znaku wodnego",
      position: "Pozycja",
      fontSize: "Rozmiar czcionki",
      opacity: "Przezroczystość",
      rotation: "Obrót",
      submit: "Dodaj znak wodny",
      submitBatch: "Dodaj znak wodny ({count} plików)",
      progressLabel: "Dodawanie znaku wodnego",
    },
    "pdf-page-numbers": {
      position: "Pozycja",
      fontSize: "Rozmiar czcionki",
      submit: "Dodaj numerację",
      submitBatch: "Dodaj numerację ({count} plików)",
      progressLabel: "Numerowanie",
    },
    "flatten-pdf": {
      submit: "Spłaszcz",
      submitBatch: "Spłaszcz ({count} plików)",
      progressLabel: "Spłaszczanie",
    },
    "redact-pdf": {
      terms: "Frazy do zredagowania",
      termsHint: "Jedna fraza na wiersz (maks. 50)",
      caseSensitive: "Rozróżniaj wielkość liter",
      submit: "Zredaguj",
      submitBatch: "Zredaguj ({count} plików)",
      progressLabel: "Redagowanie",
    },
    "pdf-to-text": {
      submit: "Wyodrębnij tekst",
      submitBatch: "Wyodrębnij tekst ({count} plików)",
      progressLabel: "Wyodrębnianie",
    },
    "pdf-to-word": {
      hint: "Najlepiej dla PDF tekstowych; zeskanowane strony wymagają OCR",
      submit: "Konwertuj do Word",
      submitBatch: "Konwertuj do Word ({count} plików)",
      progressLabel: "Konwersja",
    },
    "pdf-metadata": {
      title: "Tytuł",
      author: "Autor",
      subject: "Temat",
      keywords: "Słowa kluczowe",
      submit: "Ustaw metadane",
      submitBatch: "Ustaw metadane ({count} plików)",
      progressLabel: "Ustawianie metadanych",
    },
    "html-to-pdf": {
      hint: "Zasoby zdalne są wyłączone ze względu na prywatność.",
      submit: "Konwertuj do PDF",
      submitBatch: "Konwertuj do PDF ({count} plików)",
      progressLabel: "Konwersja",
    },
    "markdown-to-docx": {
      submit: "Konwertuj do DOCX",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "markdown-to-html": {
      hint: "Zdalne obrazy w źródle pozostają bez zmian w wynikowym pliku.",
      submit: "Konwertuj do HTML",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "markdown-to-pdf": {
      hint: "Zasoby zdalne są wyłączone ze względu na prywatność.",
      submit: "Konwertuj do PDF",
      submitBatch: "Konwertuj do PDF ({count} plików)",
      progressLabel: "Konwersja",
    },
    "epub-convert": {
      format: "Format wyjściowy",
      hint: "Zasoby zdalne wewnątrz książki nie są pobierane.",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "to-epub": {
      submit: "Konwertuj do EPUB",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "csv-excel": {
      sheet: "Numer arkusza",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "csv-json": {
      pretty: "Formatowanie czytelne",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "json-xml": {
      pretty: "Formatowanie czytelne",
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "split-csv": {
      rowsPerFile: "Wierszy na plik",
      keepHeader: "Zachowaj nagłówek w każdym pliku",
      submit: "Podziel",
      submitBatch: "Podziel ({count} plików)",
      progressLabel: "Dzielenie",
    },
    "merge-csvs": {
      submit: "Scal",
      submitBatch: "Scal ({count} plików)",
      progressLabel: "Scalanie",
    },
    "yaml-json": {
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "xml-to-csv": {
      submit: "Konwertuj",
      submitBatch: "Konwertuj ({count} plików)",
      progressLabel: "Konwersja",
    },
    "create-zip": {
      submit: "Utwórz ZIP",
      submitBatch: "Utwórz ZIP ({count} plików)",
      progressLabel: "Kompresowanie",
    },
    "extract-zip": {
      submit: "Wypakuj",
      submitBatch: "Wypakuj ({count} plików)",
      progressLabel: "Wypakowywanie",
    },
  },
  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: "To narzędzie zostało wyłączone przez administratora",
    browseOtherTools: "Przeglądaj inne narzędzia",
    privacyNote: "Pliki są przetwarzane na Twoim serwerze i nigdy nie opuszczają Twojej sieci",
    applyAndDownload: "Zastosuj i pobierz",
    andMore: "i {count} więcej",
    importFromFiles: "Importuj z Plików",
    saveToFiles: "Zapisz do Plików",
    savedToFiles: "Zapisano do Plików",
    adjustSettings: "Dostosuj ustawienia",
    startOver: "Zacznij od nowa z nowym plikiem",
    newFile: "Nowy plik",
    previewUnavailable: "Podgląd będzie dostępny po przetworzeniu",
    generatePreview: "Generuj podgląd",
    previewFailed: "Generowanie podglądu nie powiodło się",
    backToTools: "Powrót do narzędzi",
    original: "Oryginał",
    processed: "Przetworzony",
    saved: "Zapisano",
    noChange: "bez zmian",
    download: "Pobierz",
    settingsSaved: "Twoje ustawienia zostały zapisane.",
    tryAgain: "Spróbuj ponownie",
    tryDifferentFile: "Spróbuj inny plik",
    batchPartialSuccess: "{success} z {total} przetworzono. {failed} nie powiodło się.",
    dataResultsHint: "Wyniki widoczne powyżej. Użyj przycisku kopiowania w panelu wyników.",
    downloadAsFile: "Pobierz jako plik",
    downloadAll: "Pobierz wszystko",
    downloadFiles: "Pobierz {count} plików",
    audioDecodeUnsupported: "Ten format audio nie może być odtworzony w przeglądarce",
  },
  homePage: {
    generatingPreview: "Generowanie podglądu...",
    loadingPreview: "Ładowanie podglądu...",
    changeFile: "Zmień plik",
    quickActions: "Szybkie akcje",
    allTools: "Wszystkie narzędzia",
    searchPlaceholder: "Szukaj wśród {count} narzędzi...",
    recent: "Ostatnie",
    popular: "Popularne",
    browseByCategory: "Przeglądaj wg kategorii",
    gettingStarted: "Pierwsze kroki",
    noToolsMatch: "Brak narzędzi pasujących do '{query}'",
    clearSearch: "Wyczyść wyszukiwanie",
    all: "Wszystkie",
    documents: "PDF",
    data: "Pliki",
    pdf: "PDF",
    files: "Pliki",
    toolCount: "{count} narzędzi",
    heading: "Narzędzia SnapOtter",
  },
  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: "Kształt",
      fill: "Wypełnienie",
      stroke: "Obrys",
      strokeWidth: "Szerokość",
      cornerRadius: "Promień",
      sides: "Boki",
      points: "Punkty",
      dashStyle: "Kreska",
      solid: "Ciągły",
      dashed: "Kreskowany",
      dotted: "Kropkowany",
      none: "Brak",
      opacity: "Krycie",
      rectangle: "Prostokąt",
      ellipse: "Elipsa",
      line: "Linia",
      arrow: "Strzałka",
      polygon: "Wielokąt",
      star: "Gwiazda",
    },
  },
  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: "Użycie",
      apiKeys: "Klucze API",
      aiFeatures: "Funkcje AI",
      tools: "Narzędzia",
      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: "Pobierz pakiet diagnostyczny",
      supportBundleDescription:
        "Pobierz archiwum diagnostyczne z zanonimizowaną konfiguracją, logami i danymi zadań do rozwiązywania problemów.",
      supportBundleFailed: "Nie udało się pobrać pakietu diagnostycznego.",
    },
    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: "Ustawienia zabezpieczeń administratora",
      adminDescription:
        "Ustawienia polityki bezpieczeństwa dla organizacji. Dotyczą wszystkich użytkowników.",
      sessionIdleTimeout: "Limit bezczynności sesji (minuty)",
      sessionIdleTimeoutDesc: "Automatyczne wylogowanie nieaktywnych sesji. 0 = wyłączone.",
      maxSessionsPerUser: "Maks. sesji na użytkownika",
      maxSessionsPerUserDesc: "Limit jednoczesnych sesji na użytkownika. 0 = bez limitu.",
      mfaPolicy: "Polityka MFA",
      mfaPolicyDesc: "Wymagaj uwierzytelniania wieloskładnikowego od użytkowników.",
      mfaPolicyOptional: "Opcjonalne",
      mfaPolicyAdminsOnly: "Wymagane dla administratorów",
      mfaPolicyRequired: "Wymagane dla wszystkich użytkowników",
      ssoEnforcement: "Wymuszanie SSO",
      ssoEnforcementDesc:
        "Wymagaj logowania przez SSO dla wszystkich użytkowników poza kontami awaryjnymi.",
      ssoBreakGlassUsername: "Nazwa awaryjnego konta administratora",
      ssoBreakGlassUsernameDesc:
        "Ten administrator może logować się lokalnymi danymi, gdy SSO jest wymuszone.",
      passwordMinLength: "Minimalna długość hasła",
      passwordMinLengthDesc: "Minimalna liczba znaków wymagana dla haseł.",
      passwordRequireUppercase: "Wymagaj wielkich liter",
      passwordRequireUppercaseDesc: "Wymagaj co najmniej jednej wielkiej litery.",
      passwordRequireNumber: "Wymagaj cyfry",
      passwordRequireNumberDesc: "Wymagaj co najmniej jednej cyfry.",
      passwordRequireSpecial: "Wymagaj znaku specjalnego",
      passwordRequireSpecialDesc: "Wymagaj co najmniej jednego znaku specjalnego.",
      passwordPolicyHeading: "Polityka haseł",
      securitySettingsSaved: "Ustawienia zabezpieczeń zapisane",
      securitySettingsFailed: "Nie udało się zapisać ustawień zabezpieczeń",
    },
    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 hasło",
      passwordCopied: "Skopiowano!",
      copyPasswordWarning:
        "Skopiuj to hasło teraz. Nie będziesz mógł go zobaczyć po utworzeniu użytkownika.",
    },
    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: "Limit przestrzeni (MB)",
      teamStorageQuotaDesc:
        "Maksymalna przestrzeń dla tego zespołu w MB. Pozostaw puste, aby nie ograniczać.",
      teamRetentionHours: "Przechowywanie (godziny)",
      teamRetentionHoursDesc:
        "Czas przechowywania przetworzonych plików dla tego zespołu. Pozostaw puste, aby użyć domyślnej wartości.",
      quotaSaved: "Ustawienia zespołu zapisane",
    },
    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: "Użycie",
      description: "Lokalne statystyki użycia z zadań i przechowywania plików.",
      periodLabel: "Okres",
      days7: "7 dni",
      days30: "30 dni",
      days90: "90 dni",
      jobsPerDayHeading: "Zadania dziennie",
      topToolsHeading: "Najczęściej używane narzędzia",
      perUserHeading: "Aktywność użytkowników",
      durationsHeading: "Percentyle czasu trwania",
      noData: "Brak danych dla tego okresu.",
      dayColumn: "Dzień",
      totalColumn: "Razem",
      completedColumn: "Ukończone",
      failedColumn: "Nieudane",
      toolColumn: "Narzędzie",
      runsColumn: "Uruchomienia",
      userColumn: "Użytkownik",
      bytesInColumn: "Bajty wejściowe",
      poolColumn: "Pula",
      p50Column: "p50",
      p95Column: "p95",
      storageHeading: "Przestrzeń biblioteki",
      storageFiles: "{count} plików",
      unknownUser: "(nieznany)",
      storageByTeam: "Przestrzeń wg zespołu",
      teamColumn: "Zespół",
      storageColumn: "Przestrzeń",
      usersColumn: "Użytkownicy",
    },
    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: "Przechowywanie danych",
      fileMaxAgeHours: "Przechowywanie przetworzonych plików (godziny)",
      fileMaxAgeHoursDesc:
        "Jak długo przechowywać przesłane i przetworzone pliki. Domyślnie: 72 godziny.",
      jobsRetentionDays: "Przechowywanie rekordów zadań (dni)",
      jobsRetentionDaysDesc:
        "Jak długo przechowywać metadane zadań. 0 = zachowaj na zawsze. Domyślnie: 30 dni.",
      auditRetentionDays: "Przechowywanie dziennika audytu (dni)",
      auditRetentionDaysDesc:
        "Jak długo przechowywać wpisy dziennika audytu. 0 = zachowaj na zawsze. Domyślnie: na zawsze.",
    },
    aiFeatures: {
      title: "Funkcje AI",
      description: "Zarządzanie pakietami modeli AI do zaawansowanego przetwarzania plików.",
      installAll: "Zainstaluj wszystkie",
      diskUsage: "Wykorzystanie dysku: {size}",
      installed: "Zainstalowane",
      notInstalled: "Niezainstalowane",
      queued: "W kolejce",
      install: "Zainstaluj",
      repair: "Napraw",
      uninstall: "Odinstaluj",
      installing: "Instalowanie...",
      importBundle: "Importuj pakiet",
      importDescription: "Prześlij archiwum .tar.gz wyeksportowane z innej instalacji.",
      importButton: "Importuj z pliku",
      importing: "Importowanie...",
      importSuccess: "Pakiet zaimportowany pomyślnie.",
      importError: "Import pakietu nie powiódł się: {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: "Licencja:",
      licenseDescription:
        "SnapOtter to oprogramowanie open-source na licencji 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: "Uwierzytelnianie SAML nie powiodło się. Spróbuj ponownie.",
    samlUserNotAuthorized:
      "Twoje konto nie ma uprawnień do tej aplikacji. Skontaktuj się z administratorem.",
    samlUserLimitReached: "Osiągnięto limit użytkowników. Skontaktuj się z administratorem.",
    ssoEnforcedLocalRestricted:
      "Logowanie lokalne jest ograniczone do uprawnionych administratorów.",
    mfaRequired: "Wprowadź kod uwierzytelniający",
    mfaRecoveryHint: "Możesz też użyć kodu odzyskiwania",
    verify: "Zweryfikuj",
    verifying: "Weryfikowanie...",
    mfaInvalidCode: "Nieprawidłowy kod. Spróbuj ponownie.",
    mfaEnrollmentRequired:
      "Twoja organizacja wymaga uwierzytelniania wieloskładnikowego. Skonfiguruj MFA w ustawieniach konta.",
    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: "Brak kroków",
    searchToolsPlaceholder: "Szukaj narzędzi...",
    step: "Krok",
    modalityWarning: "Niezgodność modalności",
    modalityWarningTooltip:
      "Ten krok oczekuje {expected}, ale otrzymuje {received}; może się nie powieść podczas uruchamiania potoku.",
  },
  nav: {
    tools: "Narzędzia",
    reader: "Czytnik",
    automate: "Automatyzacja",
    editor: "Edytor",
    files: "Pliki",
    help: "Pomoc",
    settings: "Ustawienia",
    grid: "Siatka",
  },
  files: {
    myFiles: "Moje pliki",
    recentTab: "Ostatnie",
    uploadTab: "Prześlij pliki",
    fileDetailsAriaLabel: "Szczegóły pliku",
    fileDetailsHeading: "Szczegóły pliku",
    searchPlaceholder: "Szukaj plików...",
    selectedCount: "{count} zaznaczonych",
    fileCount: "{count} plików",
    fileCountSingular: "{count} plik",
    noFilesFound: "Nie znaleziono plików",
    selectFilePrompt: "Wybierz plik, aby zobaczyć szczegóły",
    openFile: "Otwórz plik",
    selectFile: "Wybierz plik",
    openInPipeline: "Otwórz w potoku",
    dropFilesHere: "Upuść pliki tutaj",
    orClickToSelect: "lub kliknij, aby wybrać pliki",
    name: "Nazwa",
    format: "Format",
    size: "Rozmiar",
    dimensions: "Wymiary",
    version: "Wersja",
    toolsUsed: "Użyte narzędzia",
    none: "Brak",
    delete: "Usuń",
    pipeline: "Pipeline",
    download: "Pobierz",
  },
  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: "Upuść, aby dodać pliki",
    dropToReplace: "Upuść, aby zastąpić 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: "Wymagana naprawa",
    repairDescription:
      "Niektóre pliki modeli są brakujące lub uszkodzone. Naprawa pobierze je ponownie.",
    repairButton: "Napraw {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",
  },
  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: "Przejdź do treści",
    openSidebar: "Otwórz panel boczny",
    closeSidebar: "Zamknij panel boczny",
    closeSettings: "Zamknij ustawienia",
    closeHelp: "Zamknij pomoc",
    closeDialog: "Zamknij okno",
    zoomIn: "Powiększ",
    zoomOut: "Pomniejsz",
    fitToView: "Dopasuj do widoku",
    actualSize: "Rzeczywisty rozmiar",
    pan: "Przesuń",
    previousImage: "Poprzedni plik",
    nextImage: "Następny plik",
    imageArea: "Obszar podglądu",
    imageViewer: "Przeglądarka plików",
    fileDropZone: "Strefa upuszczania plików",
    imageDropZone: "Strefa upuszczania plików",
    beforeAfterSlider: "Suwak porównania przed/po",
    imageControls: "Sterowanie podglądem",
    zoomControls: "Kontrolki powiększenia",
    dragToReorder: "Przeciągnij, aby zmienić kolejność",
    whiteBackground: "Białe tło",
    blackBackground: "Czarne tło",
    expandPanel: "Rozwiń panel",
    collapsePanel: "Zwiń panel",
    swapDimensions: "Zamień wymiary",
    applyCrop: "Zastosuj kadrowanie",
    cancelCrop: "Anuluj kadrowanie",
    fontFamily: "Rodzina czcionek",
    textColor: "Kolor tekstu",
    flipHorizontal: "Odbij poziomo",
    flipVertical: "Odbij pionowo",
    hexColorValue: "Wartość koloru HEX",
    backgroundColor: "Kolor tła",
    foregroundColor: "Kolor pierwszego planu",
    swapColors: "Zamień kolory pierwszego planu i tła",
    resetColors: "Przywróć domyślne czarny i biały",
    foregroundHex: "Wartość HEX koloru pierwszego planu",
    undo: "Cofnij",
    redo: "Ponów",
    layers: "Warstwy",
    addLayer: "Dodaj warstwę",
    deleteLayer: "Usuń warstwę",
    cancelOperation: "Anuluj operację",
    fill: "Wypełnienie",
    fileDetails: "Szczegóły pliku",
    language: "Język",
    selected: "Zaznaczone",
    deleteKey: "Usuń klucz",
    editRole: "Edytuj rolę",
    deleteRole: "Usuń rolę",
    notInstalled: "Niezainstalowane",
    queued: "W kolejce do instalacji",
    installing: "Instalowanie",
    imageNOfTotal: "Obraz {n} z {total}",
    processingComplete: "Obraz przetworzony pomyślnie",
    processingFailed: "Przetwarzanie nie powiodło się",
    settingsDialog: "Ustawienia",
    helpDialog: "Pomoc",
    navigationMenu: "Nawigacja",
    homeLink: "Strona główna SnapOtter",
  },
} as const;
