2026-05-15 17:02:49 +08:00
import type { TranslationKeys } from "./en.js" ;
export const uk : TranslationKeys = {
common : {
upload : "Завантажити з комп'ютера" ,
process : "Обробити" ,
download : "Завантажити" ,
cancel : "Скасувати" ,
save : "Зберегти" ,
delete : "Видалити" ,
settings : "Налаштування" ,
search : "Пошук інструментів..." ,
dropFiles : "Перетягніть файли сюди або натисніть кнопку завантаження" ,
loading : "Завантаження..." ,
error : "Сталася помилка" ,
confirm : "Підтвердити" ,
close : "Закрити" ,
back : "Назад" ,
next : "Далі" ,
clear : "Очистити" ,
copy : "Копіювати" ,
copied : "Скопійовано!" ,
noResults : "Нічого не знайдено" ,
showLess : "Показати менше" ,
showMore : "Показати ще {count}" ,
experimental : "Експериментальний" ,
enabled : "Увімкнено" ,
disabled : "Вимкнено" ,
rename : "Перейменувати" ,
edit : "Редагувати" ,
actions : "Дії" ,
create : "Створити" ,
or : "або" ,
goHome : "На головну" ,
somethingWentWrong : "Щось пішло не так" ,
unexpectedError : "Сталася неочікувана помилка." ,
retry : "Повторити" ,
privacyPolicy : "Політика конфіденційності" ,
2026-06-05 22:31:28 +08:00
pageNotFound : "Page not found" ,
2026-06-06 20:47:08 +08:00
pageNotFoundDescription : "The page you are looking for does not exist or has been moved." ,
},
2026-05-15 17:02:49 +08:00
categories : {
essentials : "Основні" ,
adjustments : "Корекція" ,
2026-06-13 14:45:06 +08:00
enhance : "Enhance & AI" ,
2026-05-15 17:02:49 +08:00
watermark : "Водяний знак і накладання" ,
layout : "Компонування та композиція" ,
2026-06-13 14:45:06 +08:00
utilities : "Утиліти" ,
optimization : "Оптимізація" ,
2026-05-15 17:02:49 +08:00
format : "Формат і конвертація" ,
2026-06-13 14:45:06 +08:00
"video-edit" : "Video" ,
"video-convert" : "Convert" ,
"video-effects" : "Effects & Compose" ,
"video-subtitles" : "Subtitles" ,
"video-metadata" : "Metadata" ,
"audio-edit" : "Edit" ,
"audio-convert" : "Convert" ,
"audio-effects" : "Effects & Compose" ,
"audio-metadata" : "Metadata" ,
"pdf-organize" : "Organize" ,
"pdf-edit" : "Edit & Annotate" ,
"pdf-security" : "Security" ,
"pdf-optimize" : "Optimize" ,
"doc-convert" : "Convert" ,
2026-06-13 10:18:49 +08:00
data : "Data Files" ,
2026-06-13 14:45:06 +08:00
archives : "Archives" ,
2026-05-15 17:02:49 +08:00
},
2026-06-13 10:18:39 +08:00
modalities : {
image : "Image" ,
video : "Video" ,
audio : "Audio" ,
documentsAndFiles : "Documents & Files" ,
},
2026-05-15 17:02:49 +08:00
tools : {
resize : {
name : "Зміна розміру" ,
description : "Зміна розміру в пікселях, відсотках або за шаблонами соцмереж" ,
},
crop : {
name : "Обрізка" ,
description : "Довільна обрізка, шаблони пропорцій, фігурна обрізка" ,
},
rotate : {
name : "Обертання та відображення" ,
description : "Обертання, відображення та вирівнювання зображень" ,
},
convert : { name : "Конвертація" , description : "Конвертація між форматами зображень" },
compress : {
name : "Стиснення" ,
description : "Зменшення розміру файлу за якістю або цільовим розміром" ,
},
"optimize-for-web" : {
name : "Оптимізація для вебу" ,
description :
"Оптимізація зображень для вебу з конвертацією формату, контролем якості та попереднім переглядом" ,
},
"strip-metadata" : {
name : "Видалення метаданих" ,
description : "Видалення EXIF, GPS та інформації про камеру" ,
},
"edit-metadata" : {
name : "Редагування метаданих" ,
description : "Редагування EXIF, IPTC, XMP, GPS, ключових слів і дат" ,
},
"bulk-rename" : {
name : "Масове перейменування" ,
description : "Перейменування кількох файлів за шаблоном" ,
},
"image-to-pdf" : {
name : "Зображення у PDF" ,
description : "Об'єднання зображень у документ PDF" ,
},
"pdf-to-image" : {
name : "PDF у зображення" ,
description : "Конвертація сторінок PDF у зображення" ,
},
favicon : {
name : "Генератор Favicon" ,
description : "Генерація всіх розмірів Favicon та іконок застосунку" ,
},
"adjust-colors" : {
name : "Налаштування кольорів" ,
description :
"Яскравість, контрастність, експозиція, насиченість, температура, різкість та ефекти" ,
},
sharpening : {
name : "Підвищення різкості" ,
description : "Адаптивна, маска нерізкості та високочастотна різкість із шаблонами" ,
},
"replace-color" : {
name : "Заміна та інверсія кольору" ,
description : "Заміна окремих кольорів або інверсія" ,
},
"color-blindness" : {
name : "Симуляція дальтонізму" ,
description : "Симуляція сприйняття зображень за різних типів порушення кольорового зору" ,
},
"remove-background" : {
name : "Видалення фону" ,
description : "Видалення фону за допомогою AI" ,
},
upscale : {
name : "Збільшення зображення" ,
description : "AI-збільшення з надроздільністю" ,
},
"erase-object" : {
name : "Видалення об'єктів" ,
description : "Видалення небажаних об'єктів за допомогою AI" ,
},
ocr : {
name : "OCR / Витягування тексту" ,
description : "Витягування тексту із зображень з точністю AI" ,
},
2026-06-13 10:19:23 +08:00
"ocr-pdf" : {
name : "OCR PDF" ,
description : "Витягування тексту з PDF-документiв за допомогою OCR на базi ШI" ,
},
2026-05-15 17:02:49 +08:00
"blur-faces" : {
name : "Розмиття облич / ПД" ,
description : "Автоматичне виявлення та розмиття облич і конфіденційних даних" ,
},
"enhance-faces" : {
name : "Поліпшення облич" ,
description : "Відновлення та поліпшення облич за допомогою AI" ,
},
"smart-crop" : {
name : "Розумна обрізка" ,
description : "Розумна обрізка за об'єктом, обличчям або обрізка полів" ,
},
"image-enhancement" : {
name : "Поліпшення зображення" ,
description :
"Автоматичне поліпшення в один клік: розумна корекція експозиції, контрасту, кольору та різкості" ,
},
"noise-removal" : {
name : "Видалення шуму" ,
description : "Видалення шуму та зернистості за допомогою AI" ,
},
"red-eye-removal" : {
name : "Видалення червоних очей" ,
description : "Виявлення та корекція червоних очей на фото зі спалахом за допомогою AI" ,
},
"restore-photo" : {
name : "Відновлення фотографій" ,
description : "Виправлення подряпин, розривів і пошкоджень на старих фото за допомогою AI" ,
},
"content-aware-resize" : {
name : "Контентно-залежне масштабування" ,
description : "Інтелектуальна зміна розміру зі збереженням важливого вмісту" ,
},
"ai-canvas-expand" : {
name : "AI-розширення полотна" ,
description : "Розширення полотна з AI-заповненням" ,
},
colorize : {
name : "AI-колоризація" ,
description :
"Перетворення чорно-білих фотографій на кольорові за допомогою AI-моделей глибокого навчання" ,
},
"passport-photo" : {
name : "Фото на документи" ,
description :
"Створення фотографій для паспорта, візи та посвідчень з автоматичним виявленням обличчя" ,
},
2026-06-13 10:19:23 +08:00
"transcribe-audio" : {
name : "Транскрипцiя аудiо" ,
description : "Перетворення мовлення на текст за допомогою ШI" ,
},
"auto-subtitles" : {
name : "Автоматичнi субтитри" ,
description : "Генерацiя файлiв субтитрiв з аудiодорiжок вiдео" ,
},
2026-05-15 17:02:49 +08:00
"transparency-fixer" : {
name : "Виправлення прозорості PNG" ,
description : "Виправлення хибної прозорості PNG в один клік" ,
},
2026-06-13 10:19:23 +08:00
"background-replace" : {
name : "Заміна фону" ,
description : "Замінити фон зображення суцільним кольором" ,
},
"blur-background" : {
name : "Розмиття фону" ,
description : "Розмити фон зберігаючи різкість об'єкта" ,
},
2026-05-15 17:02:49 +08:00
"watermark-text" : {
name : "Текстовий водяний знак" ,
description : "Додавання текстового водяного знаку" ,
},
"watermark-image" : {
name : "Графічний водяний знак" ,
description : "Накладання логотипу як водяного знаку" ,
},
"text-overlay" : {
name : "Накладання тексту" ,
description : "Додавання стилізованого тексту на зображення" ,
},
compose : {
name : "Композиція зображень" ,
description : "Накладання зображень з налаштуванням позиції та прозорості" ,
},
"meme-generator" : {
name : "Генератор Meme" ,
description :
"Створення мемів із популярними шаблонами або власними зображеннями. Класичний текст у стилі Impact з налаштовуваними шрифтами, кольорами та розташуванням." ,
},
info : {
name : "Інформація про зображення" ,
description : "Перегляд усіх метаданих та властивостей зображення" ,
},
compare : {
name : "Порівняння зображень" ,
description : "Порівняння двох зображень пліч-о-пліч" ,
},
"find-duplicates" : {
name : "Пошук дублікатів" ,
description : "Виявлення точних та приблизних дублікатів зображень" ,
},
"color-palette" : {
name : "Кольорова палітра" ,
description : "Витягування домінуючих кольорів із зображення" ,
},
"qr-generate" : {
name : "Генератор QR-кодів" ,
description :
"Генерація стилізованих QR-кодів з налаштовуваними кольорами, візерунками та логотипами" ,
},
2026-06-06 20:47:08 +08:00
"html-to-image" : {
name : "HTML to Image" ,
description : "Capture webpages as high-quality images" ,
},
2026-05-15 17:02:49 +08:00
"barcode-read" : {
name : "Сканер штрихкодів" ,
description : "Сканування зображень на наявність QR-кодів, штрихкодів та 2D-кодів" ,
},
collage : {
name : "Колаж / Сітка" ,
description : "Об'єднання зображень у красиві колажі-сітки з 25+ шаблонами" ,
},
stitch : {
name : "Об'єднання / Склейка" ,
description : "З'єднання зображень поруч, стопкою або сіткою" ,
},
split : {
name : "Розділення зображення" ,
description :
"Розділення зображень на плитки сітки або за розміром у пікселях з попереднім переглядом" ,
},
border : {
name : "Рамка та обрамлення" ,
description :
"Додавання рамок, відступів, заокруглених кутів та тіней з шаблонами в один клік" ,
},
beautify : {
name : "Прикрашання знімку екрана" ,
description :
"Додавання градієнтних фонів, рамок пристроїв, тіней та розмірів для соцмереж до знімків екрана" ,
},
2026-06-13 10:19:16 +08:00
"circle-crop" : {
name : "Circle Crop" ,
description : "Crop image to a centered circle with transparent corners" ,
},
duotone : {
name : "Duotone" ,
description : "Apply a two-color duotone effect with custom shadow and highlight colors" ,
},
"image-pad" : {
name : "Image Pad" ,
description : "Pad image to a target aspect ratio with a solid color background" ,
},
pixelate : {
name : "Pixelate" ,
description : "Apply a pixelation effect to the full image or a specific region" ,
},
vignette : {
name : "Vignette" ,
description : "Add a vignette effect with adjustable strength and color" ,
},
"gif-webp" : {
name : "GIF/WebP Converter" ,
description : "Convert animated GIF to WebP and vice versa, preserving all frames" ,
},
histogram : {
name : "Histogram" ,
description : "Generate an RGB histogram chart from an image" ,
},
"lqip-placeholder" : {
name : "LQIP Placeholder" ,
description : "Generate a tiny low-quality image placeholder with base64 data URI" ,
},
"sprite-sheet" : {
name : "Sprite Sheet" ,
description : "Combine multiple images into a single sprite sheet grid" ,
},
2026-05-15 17:02:49 +08:00
"svg-to-raster" : {
name : "SVG у растр" ,
description :
"Конвертація SVG у PNG, JPEG, WebP, AVIF, TIFF, GIF або HEIF з налаштовуваним масштабом та DPI" ,
},
vectorize : {
name : "Зображення у SVG" ,
description : "Конвертація зображень у масштабовану векторну графіку" ,
},
"gif-tools" : {
name : "Інструменти GIF" ,
description :
"Зміна розміру, оптимізація, швидкості, реверс, витягування кадрів та обертання анімованих GIF" ,
},
"image-to-base64" : {
name : "Зображення у Base64" ,
description : "Конвертація зображень у рядки Base64 для вбудовування у HTML, CSS та інше" ,
},
2026-06-13 10:19:16 +08:00
"barcode-generate" : {
name : "Barcode Generator" ,
description : "Generate barcodes in Code 128, EAN-13, UPC-A, Code 39, ITF-14, and Data Matrix" ,
},
"chart-maker" : {
name : "Chart Maker" ,
description : "Create bar, line, or pie charts from CSV or JSON data" ,
},
2026-06-13 10:18:49 +08:00
"convert-video" : {
name : "Convert Video" ,
description : "Convert videos between MP4, MOV, and WebM" ,
},
"compress-video" : {
name : "Compress Video" ,
description : "Shrink video file size with quality control" ,
},
"trim-video" : {
name : "Trim Video" ,
description : "Cut a clip out of a video" ,
},
"mute-video" : {
name : "Mute Video" ,
description : "Remove the audio track from a video" ,
},
"video-to-gif" : {
name : "Video to GIF" ,
description : "Turn a video clip into an animated GIF" ,
},
2026-06-13 10:19:00 +08:00
"resize-video" : {
name : "Resize Video" ,
description : "Scale a video to a new resolution or preset size" ,
},
"crop-video" : {
name : "Crop Video" ,
description : "Crop a region out of a video" ,
},
"rotate-video" : {
name : "Rotate Video" ,
description : "Rotate or flip a video" ,
},
"change-fps" : {
name : "Change FPS" ,
description : "Change the frame rate of a video" ,
},
"video-color" : {
name : "Video Color" ,
description : "Adjust brightness, contrast, saturation, and gamma" ,
},
"video-speed" : {
name : "Video Speed" ,
description : "Speed up or slow down a video" ,
},
"reverse-video" : {
name : "Reverse Video" ,
description : "Play a video clip backwards" ,
},
"video-loudnorm" : {
name : "Normalize Audio" ,
description : "Normalize video audio volume to broadcast standard" ,
},
"aspect-pad" : {
name : "Aspect Pad" ,
description : "Add solid-color bars to fit a target aspect ratio" ,
},
"blur-pad" : {
name : "Blur Pad" ,
description : "Fill bars with a blurred copy of the video" ,
},
"watermark-video" : {
name : "Watermark Video" ,
description : "Burn a text watermark onto video frames" ,
},
"stabilize-video" : {
name : "Stabilize Video" ,
description : "Reduce camera shake with two-pass stabilization" ,
},
"gif-to-video" : {
name : "GIF to Video" ,
description : "Convert an animated GIF into an MP4 or WebM video" ,
},
"video-to-webp" : {
name : "Video to WebP" ,
description : "Convert a video clip into an animated WebP image" ,
},
"video-to-frames" : {
name : "Video to Frames" ,
description : "Extract frames from a video as a ZIP of images" ,
},
"merge-videos" : {
name : "Merge Videos" ,
description : "Join multiple video clips into one file" ,
},
"replace-audio" : {
name : "Replace Audio" ,
description : "Swap the audio track of a video with another file" ,
},
"burn-subtitles" : {
name : "Burn Subtitles" ,
description : "Permanently render subtitles onto video frames" ,
},
"embed-subtitles" : {
name : "Embed Subtitles" ,
description : "Mux a subtitle track into the video container" ,
},
"extract-subtitles" : {
name : "Extract Subtitles" ,
description : "Pull the subtitle track out of a video as an SRT file" ,
},
"images-to-video" : {
name : "Images to Video" ,
description : "Turn a set of images into a slideshow video" ,
},
"video-metadata" : {
name : "Clean Video Metadata" ,
description : "Strip metadata from a video and report what was found" ,
},
2026-06-13 10:18:49 +08:00
"convert-audio" : {
name : "Convert Audio" ,
description : "Convert audio between MP3, WAV, OGG, and more" ,
},
"trim-audio" : {
name : "Trim Audio" ,
description : "Cut a section out of an audio file" ,
},
"extract-audio" : {
name : "Extract Audio" ,
description : "Pull the audio track out of a video" ,
},
2026-06-13 10:19:06 +08:00
"volume-adjust" : {
name : "Volume Adjust" ,
description : "Increase or decrease audio volume by a fixed gain" ,
},
"normalize-audio" : {
name : "Normalize Audio" ,
description : "Even out loudness to broadcast standard levels" ,
},
"fade-audio" : {
name : "Fade Audio" ,
description : "Add fade-in and fade-out effects to audio" ,
},
"reverse-audio" : {
name : "Reverse Audio" ,
description : "Play audio backwards" ,
},
"audio-speed" : {
name : "Audio Speed" ,
description : "Speed up or slow down audio playback" ,
},
"pitch-shift" : {
name : "Pitch Shift" ,
description : "Raise or lower pitch by semitones without changing speed" ,
},
"audio-channels" : {
name : "Audio Channels" ,
description : "Convert between mono, stereo, or swap left and right channels" ,
},
"silence-removal" : {
name : "Silence Removal" ,
description : "Strip silent sections from audio" ,
},
"noise-reduction" : {
name : "Noise Reduction" ,
description : "Reduce background noise with FFT-based denoising" ,
},
"merge-audio" : {
name : "Merge Audio" ,
description : "Combine multiple audio files into one" ,
},
"split-audio" : {
name : "Split Audio" ,
description : "Split audio by time, equal parts, or silence detection" ,
},
"ringtone-maker" : {
name : "Ringtone Maker" ,
description : "Create a ringtone clip from any audio file" ,
},
"waveform-image" : {
name : "Waveform Image" ,
description : "Generate a waveform visualization as a PNG image" ,
},
"audio-metadata" : {
name : "Audio Metadata" ,
description : "View, edit, or strip audio tags (ID3)" ,
},
2026-06-13 10:18:49 +08:00
"merge-pdf" : {
name : "Merge PDFs" ,
description : "Combine multiple PDFs into one" ,
},
"split-pdf" : {
name : "Split PDF" ,
description : "Extract pages or split into parts" ,
},
"compress-pdf" : {
name : "Compress PDF" ,
description : "Shrink PDF file size" ,
},
"rotate-pdf" : {
name : "Rotate PDF" ,
description : "Rotate pages in a PDF" ,
},
2026-06-13 10:19:11 +08:00
"convert-document" : {
name : "Convert Document" ,
description : "Convert between Word, OpenDocument, RTF, and plain text formats" ,
},
"convert-presentation" : {
name : "Convert Presentation" ,
description : "Convert between PowerPoint and OpenDocument presentation formats" ,
},
"convert-spreadsheet" : {
name : "Convert Spreadsheet" ,
description :
"Convert between Excel, OpenDocument, and CSV formats. Multi-sheet workbooks export the first sheet to CSV." ,
},
"excel-to-pdf" : {
name : "Excel to PDF" ,
description : "Convert spreadsheets to PDF. Wide sheets may paginate across multiple pages." ,
},
2026-06-13 10:18:49 +08:00
"word-to-pdf" : {
name : "Word to PDF" ,
description : "Convert Word documents to PDF" ,
},
2026-06-13 10:18:55 +08:00
"extract-pages" : {
name : "Extract Pages" ,
description : "Pull selected pages into a new PDF" ,
},
"remove-pages" : {
name : "Remove Pages" ,
description : "Delete specific pages from a PDF" ,
},
"organize-pdf" : {
name : "Organize PDF" ,
description : "Reorder pages with an explicit page order" ,
},
"protect-pdf" : {
name : "Protect PDF" ,
description : "Add password protection (AES-256 encryption)" ,
},
"unlock-pdf" : {
name : "Unlock PDF" ,
description : "Remove password protection from a PDF" ,
},
"repair-pdf" : {
name : "Repair PDF" ,
description : "Attempt to repair a damaged or corrupted PDF" ,
},
"linearize-pdf" : {
name : "Web-Optimize PDF" ,
description : "Linearize a PDF for fast web viewing" ,
},
"grayscale-pdf" : {
name : "Grayscale PDF" ,
description : "Convert all colors to grayscale" ,
},
"pdfa-convert" : {
name : "PDF/A Convert" ,
description : "Convert to archival PDF/A-2" ,
},
"crop-pdf" : {
name : "Crop PDF" ,
description : "Crop all pages with a uniform margin" ,
},
"nup-pdf" : {
name : "N-up PDF" ,
description : "Arrange multiple pages per sheet" ,
},
"booklet-pdf" : {
name : "Booklet PDF" ,
description : "Arrange pages for folding into a booklet" ,
},
"watermark-pdf" : {
name : "Watermark PDF" ,
description : "Add a text watermark to every page" ,
},
"pdf-page-numbers" : {
name : "PDF Page Numbers" ,
description : "Add page numbers to every page" ,
},
"flatten-pdf" : {
name : "Flatten PDF" ,
description : "Bake forms and annotations into page content" ,
},
"redact-pdf" : {
name : "Redact PDF" ,
description : "Permanently remove text occurrences (verified true redaction)" ,
},
"pdf-to-text" : {
name : "PDF to Text" ,
description : "Extract plain text from a PDF" ,
},
"pdf-to-word" : {
name : "PDF to Word" ,
description : "Best for text-based PDFs; scanned pages need OCR" ,
},
"pdf-metadata" : {
name : "PDF Metadata" ,
description : "Read and write PDF document metadata" ,
},
2026-06-13 10:19:11 +08:00
"powerpoint-to-pdf" : {
name : "PowerPoint to PDF" ,
description : "Convert presentations to PDF" ,
},
2026-06-13 10:18:55 +08:00
"html-to-pdf" : {
name : "HTML to PDF" ,
description : "Convert an HTML file to PDF. Remote resources are disabled for privacy." ,
},
2026-06-13 10:19:11 +08:00
"markdown-to-docx" : {
name : "Markdown to Word" ,
description : "Convert a Markdown file to a Word document (DOCX)" ,
},
"markdown-to-html" : {
name : "Markdown to HTML" ,
description :
"Convert a Markdown file to a standalone HTML page. Remote images in the source are left as-is in the output." ,
},
2026-06-13 10:18:55 +08:00
"markdown-to-pdf" : {
name : "Markdown to PDF" ,
description :
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy." ,
},
2026-06-13 10:19:11 +08:00
"epub-convert" : {
name : "Convert EPUB" ,
description :
"Convert an EPUB to PDF, DOCX, HTML, or Markdown. Remote resources inside the book are not fetched." ,
},
"to-epub" : {
name : "Convert to EPUB" ,
description : "Convert Word, Markdown, HTML, or plain text files to EPUB" ,
},
2026-06-13 10:18:49 +08:00
"csv-excel" : {
name : "CSV to Excel" ,
description : "Convert between CSV and Excel (XLSX), both directions" ,
},
"csv-json" : {
name : "CSV to JSON" ,
description : "Convert between CSV and JSON, both directions" ,
},
"json-xml" : {
name : "JSON to XML" ,
description : "Convert between JSON and XML, both directions" ,
},
"split-csv" : {
name : "Split CSV" ,
description : "Split a CSV into smaller files by row count" ,
},
2026-06-13 10:19:11 +08:00
"merge-csvs" : {
name : "Merge CSVs" ,
description : "Combine multiple CSV or TSV files with matching columns into one" ,
},
"yaml-json" : {
name : "YAML / JSON" ,
description : "Convert between YAML and JSON, both directions" ,
},
"xml-to-csv" : {
name : "XML to CSV" ,
description : "Extract repeating elements from XML into a CSV table" ,
},
"create-zip" : {
name : "Create ZIP" ,
description : "Bundle multiple files into a single ZIP archive" ,
},
"extract-zip" : {
name : "Extract ZIP" ,
description :
"Safely extract files from a ZIP archive with bomb protection. Single-file archives return the file directly." ,
},
2026-05-15 17:02:49 +08:00
pipeline : {
name : "Конструктор Pipeline" ,
description : "Об'єднання кількох інструментів у робочий процес" ,
},
2026-06-13 10:17:13 +08:00
processing : { canceled : "Processing canceled" },
2026-06-13 10:18:39 +08:00
mediaPlayer : {
unsupported : "Your browser does not support this media format." ,
},
documentView : {
loadFailed : "Failed to load document." ,
previousPage : "Previous page" ,
nextPage : "Next page" ,
},
2026-05-15 17:02:49 +08:00
},
toolSettings : {
compress : {
compressionMode : "Режим стиснення" ,
targetSize : "Цільовий розмір" ,
quality : "Якість" ,
smallestFile : "Найменший файл" ,
bestQuality : "Найкраща якість" ,
submit : "Стиснути" ,
submitBatch : "Стиснути ({count} файлів)" ,
progressLabel : "Стиснення" ,
original : "Оригінал: {size} KB" ,
processed : "Оброблено: {size} KB" ,
saved : "Зекономлено: {percent}%" ,
},
resize : {
customSize : "Власний розмір" ,
scale : "Масштаб" ,
presets : "Шаблони" ,
contentAware : "Контентно-залежний" ,
widthPx : "Ширина (px)" ,
heightPx : "Висота (px)" ,
fitMode : "Режим вписування" ,
cropToFit : "Обрізати за розміром" ,
fitInside : "Вписати всередину" ,
stretch : "Розтягнути" ,
limitToOriginalSize : "Обмежити оригінальним розміром" ,
limitToOriginalSizeHint :
"Якщо зображення вже менше за цільовий розмір, залишити як є замість збільшення" ,
scalePercent : "Масштаб (%)" ,
resizeToSquare : "Привести до квадрату" ,
protectFaces : "Захистити обличчя" ,
smoothing : "Згладжування" ,
edgeSensitivity : "Чутливість до країв" ,
submit : "Змінити розмір" ,
submitBatch : "Змінити розмір ({count} файлів)" ,
progressLabel : "Зміна розміру" ,
},
crop : {
aspectRatio : "Пропорції" ,
custom : "Власне" ,
positionAndSize : "Позиція та розмір" ,
ruleOfThirds : "Правило третин" ,
leftOffsetPx : "Відступ зліва (px)" ,
topOffsetPx : "Відступ зверху (px)" ,
submit : "Обрізати" ,
submitBatch : "Обрізати ({count} файлів)" ,
progressLabel : "Обрізка" ,
},
rotate : {
rotate : "Обернути" ,
angle : "Кут" ,
straighten : "Вирівняти" ,
flip : "Відобразити" ,
horizontal : "Горизонтально" ,
vertical : "Вертикально" ,
resetAllChanges : "Скинути всі зміни" ,
submit : "Застосувати" ,
submitBatch : "Застосувати ({count} файлів)" ,
progressLabel : "Застосування" ,
},
convert : {
targetFormat : "Цільовий формат" ,
sourceFormat : "Вихідний формат" ,
quality : "Якість" ,
submit : "Конвертувати" ,
submitBatch : "Конвертувати ({count} файлів)" ,
progressLabel : "Конвертація" ,
},
"optimize-for-web" : {
outputFormat : "Формат виводу" ,
quality : "Якість" ,
smallestFile : "Найменший файл" ,
bestQuality : "Найкраща якість" ,
maxDimensions : "Макс. розміри" ,
maxWidth : "Макс. ширина" ,
maxHeight : "Макс. висота" ,
stripMetadata : "Видалити метадані" ,
sizeComparison : "Порівняння розмірів" ,
optimized : "Оптимізовано:" ,
smaller : "На {percent}% менше" ,
larger : "На {percent}% більше" ,
submit : "Обробити й завантажити" ,
submitBatch : "Обробити й завантажити ({count} файлів)" ,
progressLabel : "Оптимізація" ,
},
"strip-metadata" : {
currentMetadata : "Поточні метадані" ,
readingMetadata : "Читання метаданих..." ,
noMetadataFound : "Метадані у цьому зображенні не знайдено." ,
removeAllMetadata : "Видалити всі метадані" ,
selectSpecific : "Або оберіть конкретні метадані:" ,
stripExif : "Видалити EXIF (інформація про камеру, дата, експозиція)" ,
stripGps : "Видалити GPS (дані про місцезнаходження)" ,
stripIcc : "Видалити ICC (колірний профіль)" ,
stripXmp : "Видалити XMP (розширювані метадані)" ,
locationFound : "місцезнаходження знайдено" ,
locationWarning :
"Це зображення містить Ваше точне місцезнаходження. Рекомендуємо видалити GPS-дані перед публікацією." ,
metadataSections : "Знайдено {count} розділ метаданих" ,
metadataSectionsPlural : "Знайдено {count} розділів метаданих" ,
metadataRemoved : "Метадані видалено: {size} KB" ,
submit : "Видалити метадані" ,
progressLabel : "Видалення метаданих" ,
},
"edit-metadata" : {
readingMetadata : "Читання метаданих..." ,
couldNotReadMetadata : "Не вдалося прочитати метадані. Поля будуть порожніми." ,
basicInfo : "Основна інформація" ,
description : "Опис" ,
artist : "Автор" ,
copyright : "Авторські права" ,
software : "Програма" ,
iptc : "IPTC" ,
title : "Заголовок" ,
headline : "Підзаголовок" ,
city : "Місто" ,
stateProvince : "Область/Регіон" ,
country : "Країна" ,
dateAndTime : "Дата і час" ,
editDates : "Редагувати дати" ,
shiftAllDates : "Зсунути всі дати" ,
dateModified : "Дата зміни" ,
dateTaken : "Дата зйомки" ,
shiftHint : "Зсунути всі поля дат на вказаний інтервал (корисно для корекції часових поясів)" ,
direction : "Напрямок" ,
forward : "+ Уперед" ,
backward : "- Назад" ,
hoursMinutes : "Години:Хвилини" ,
locationGps : "Місцезнаходження (GPS)" ,
locationDataFound : "Дані про місцезнаходження знайдено" ,
noGpsData : "Немає GPS-даних. Додайте координати нижче." ,
latitude : "Широта" ,
longitude : "Довгота" ,
altitudeMeters : "Висота (метри)" ,
removeAllGpsData : "Видалити всі GPS-дані" ,
keywords : "Ключові слова" ,
addKeywordPlaceholder : "Додайте ключове слово та натисніть Enter" ,
addToExisting : "Додати до наявних" ,
replaceAll : "Замінити всі" ,
allMetadata : "Усі метадані" ,
templates : "Шаблони" ,
templateNamePlaceholder : "Назва шаблону" ,
uploadPrompt : "Завантажте зображення для редагування метаданих." ,
changes : "Змін: {count}:" ,
modified : "Змінено: {count}" ,
removed : "Видалено: {count}" ,
gpsCleared : "GPS видалено" ,
gpsAdded : "GPS додано" ,
datesShifted : "дати зсунуто" ,
submit : "Застосувати метадані" ,
progressLabel : "Запис метаданих" ,
},
"bulk-rename" : {
pattern : "Шаблон" ,
patternHint : "Змінні: {{index}}, {{padded}}, {{original}}" ,
startIndex : "Початковий індекс" ,
preview : "Попередній перегляд" ,
andMore : "... і ще {count}" ,
renaming : "Перейменування..." ,
submit : "Перейменувати {count} файлів" ,
zipDownloaded : "ZIP-архів успішно завантажено" ,
},
"image-to-pdf" : {
imageCount : "{count} зображення буде сконвертовано у {mode}" ,
imageCountPlural : "{count} зображень буде сконвертовано у {mode}" ,
singlePdfMode : "один PDF, одне зображення на сторінку" ,
separatePdfMode : "окремі PDF, по одному на зображення" ,
combineAllImages : "Об'єднати всі зображення в один PDF" ,
pageSize : "Розмір сторінки" ,
orientation : "Орієнтація" ,
portrait : "Книжкова" ,
landscape : "Альбомна" ,
margin : "Поля" ,
targetSizeLabel : "Цільовий розмір файлу (необов'язково)" ,
targetSizePlaceholder : "напр. 2" ,
targetSizeHint : "Залиште порожнім для максимальної якості" ,
targetSizeMet : "Цільовий розмір досягнуто" ,
targetSizeNotMet :
"Не вдалося досягти цільового розміру. Файл стиснуто до мінімальної якості." ,
targetSizeTooSmall : "Цільовий розмір має бути не менше 50KB" ,
jpegQualityLabel : "Використана якість JPEG" ,
noImage : "Немає зображення" ,
submitCollate : "Створити PDF ({count} сторінок)" ,
submitSeparate : "Створити {count} PDF" ,
downloadPdf : "Завантажити PDF" ,
downloadZip : "Завантажити ZIP" ,
progressLabel : "Створення PDF" ,
uploadingImages : "Завантаження зображень..." ,
processingPages : "Обробка {count} сторінок..." ,
},
"pdf-to-image" : {
dropPdf : "Перетягніть PDF сюди або натисніть для вибору" ,
readingPdf : "Читання PDF..." ,
pageCount : "{count} сторінка" ,
pageCountPlural : "{count} сторінок" ,
outputFormat : "Формат виводу" ,
quality : "Якість" ,
resolutionDpi : "Роздільність (DPI)" ,
dpiScreen : "Екран" ,
dpiStandard : "Стандарт" ,
dpiPrint : "Друк" ,
dpiHighQuality : "Висока якість" ,
colorMode : "Колірний режим" ,
colorModeColor : "Кольоровий" ,
colorModeGrayscale : "Відтінки сірого" ,
colorModeBw : "Ч/Б" ,
pages : "Сторінки" ,
allPages : "Усі сторінки" ,
pagesHint : "напр. 1-3, 5, 8-10 (у документі {count} сторінок)" ,
converting : "Конвертація..." ,
submit : "Конвертувати {count} сторінку" ,
submitPlural : "Конвертувати {count} сторінок" ,
downloadAllZip : "Завантажити все (ZIP)" ,
},
favicon : {
uploadHint :
"Завантажте квадратні зображення (рекомендовано 512x512 або більше) для генерації всіх розмірів Favicon та іконок застосунку." ,
multipleHint : "Кожне з {count} зображень отримає власну теку у ZIP-архіві." ,
generatedSizes : "Розміри, що генеруються (на зображення)" ,
plusManifest : "+ manifest.json + HTML-фрагмент" ,
submit : "Згенерувати Favicon ({count} зображення)" ,
submitPlural : "Згенерувати Favicon ({count} зображень)" ,
downloadZip : "Завантажити ZIP з Favicon" ,
progressLabel : "Генерація Favicon" ,
},
"adjust-colors" : {
light : "Світло" ,
brightness : "Яскравість" ,
contrast : "Контраст" ,
exposure : "Експозиція" ,
color : "Колір" ,
saturation : "Насиченість" ,
temperature : "Температура" ,
temperatureHint : "холодна / тепла" ,
tint : "Відтінок" ,
tintHint : "зелений / пурпуровий" ,
hue : "Тон" ,
detail : "Деталізація" ,
sharpness : "Різкість" ,
effects : "Ефекти" ,
none : "немає" ,
grayscale : "відтінки сірого" ,
sepia : "сепія" ,
invert : "інверсія" ,
colorChannels : "Кольорові канали" ,
channelModified : "змінено" ,
red : "Червоний" ,
green : "Зелений" ,
blue : "Синій" ,
resetAll : "Скинути все" ,
submit : "Застосувати" ,
submitBatch : "Застосувати ({count} файлів)" ,
progressLabel : "Налаштування кольорів" ,
},
sharpening : {
method : "Метод" ,
adaptive : "Адаптивний" ,
unsharpMask : "Маска нерізкості" ,
highPass : "Високочастотний" ,
presets : "Шаблони" ,
textureAmount : "Кількість текстури" ,
amount : "Кількість" ,
strength : "Сила" ,
noiseReduction : "Придушення шуму" ,
off : "вимк." ,
lightDenoise : "легке" ,
mediumDenoise : "середнє" ,
strongDenoise : "сильне" ,
advancedControls : "Розширені налаштування" ,
radius : "Радіус" ,
flatProtection : "Захист рівних ділянок" ,
detailThreshold : "Поріг деталізації" ,
haloLimitLight : "Обмеження ореолу (світлий)" ,
haloLimitDark : "Обмеження ореолу (темний)" ,
threshold : "Поріг" ,
kernelSize : "Розмір ядра" ,
submit : "Підвищити різкість" ,
submitBatch : "Підвищити різкість ({count} файлів)" ,
progressLabel : "Підвищення різкості" ,
},
"replace-color" : {
sourceColor : "Вихідний колір (для заміни)" ,
targetColor : "Цільовий колір (замінник)" ,
makeTransparent : "Зробити прозорим" ,
tolerance : "Допуск" ,
exactMatch : "Точний збіг" ,
wideRange : "Широкий діапазон" ,
submit : "Замінити колір" ,
submitBatch : "Замінити колір ({count} файлів)" ,
progressLabel : "Заміна кольору" ,
},
"color-blindness" : {
simulationType : "Тип симуляції" ,
redGreen : "Червоно-зелений" ,
blueYellow : "Синьо-жовтий" ,
monochromatic : "Монохроматичний" ,
submit : "Симулювати" ,
submitBatch : "Симулювати ({count} файлів)" ,
progressLabel : "Симуляція дальтонізму" ,
},
"remove-background" : {
subject : "Об'єкт" ,
people : "Люди" ,
products : "Товари" ,
general : "Загальне" ,
passportIdPhoto : "Паспорт / Посвідчення" ,
quality : "Якість" ,
fast : "Швидко" ,
hd : "HD" ,
max : "Макс." ,
ultra : "Ультра" ,
background : "Фон" ,
transparent : "Прозорий" ,
bgColor : "Колір" ,
gradient : "Градієнт" ,
image : "Зображення" ,
gradientDirection : "Напрямок" ,
chooseBackgroundImage : "Оберіть фонове зображення" ,
effectsSection : "Ефекти" ,
effectsActive : "активні" ,
blurBackground : "Розмиття фону" ,
intensity : "Інтенсивність" ,
addShadow : "Додати тінь" ,
opacity : "Непрозорість" ,
2026-06-05 23:14:57 +08:00
outputFormat : "Output Format" ,
edgeSmoothing : "Edge Smoothing" ,
edgeSmoothingOff : "Off" ,
edgeSmoothingLight : "Light" ,
edgeSmoothingMedium : "Medium" ,
edgeSmoothingStrong : "Strong" ,
colorDecontamination : "Color Decontamination" ,
2026-05-15 17:02:49 +08:00
rendering : "Рендеринг..." ,
submit : "Видалити фон" ,
submitBatch : "Видалити фон ({count} файлів)" ,
progressLabel : "Видалення фону" ,
},
upscale : {
scaleFactor : "Коефіцієнт масштабування" ,
quality : "Якість" ,
enhanceFaces : "Поліпшити обличчя" ,
noiseReduction : "Придушення шуму" ,
noiseReductionHint :
"Згладжує зернистість і шум. Вищі значення видаляють більше шуму, але можуть розмити деталі." ,
outputFormat : "Формат виводу" ,
submit : "Збільшити {scale}x" ,
submitBatch : "Збільшити {scale}x ({count} файлів)" ,
progressLabel : "Збільшення зображення" ,
progressLabelBatch : "Збільшення {count} зображень" ,
},
"erase-object" : {
brushSize : "Розмір пензля" ,
fine : "Тонкий" ,
wide : "Широкий" ,
undo : "Скасувати" ,
clear : "Очистити" ,
outputFormat : "Формат виводу" ,
quality : "Якість" ,
paintHint : "Замалюйте об'єкти, які хочете видалити. Натисніть Ctrl+Z для скасування." ,
submit : "Видалити об'єкт" ,
submitBatch : "Видалити все ({count})" ,
progressLabel : "Видалення об'єкта" ,
},
ocr : {
quality : "Якість" ,
enhanceBeforeScanning : "Поліпшити перед скануванням" ,
enhanceHint :
"Автоматичне вирівнювання, поліпшення контрасту, видалення шуму та збільшення зображення перед скануванням для кращої точності." ,
language : "Мова" ,
autoDetect : "Автовизначення" ,
extractedText : "Витягнутий текст" ,
noTextDetected : "Текст на цьому зображенні не виявлено" ,
characters : "{count} символів" ,
submit : "Витягнути текст" ,
submitBatch : "Витягнути текст ({count} файлів)" ,
progressLabel : "Витягування тексту" ,
},
2026-06-13 10:19:23 +08:00
"ocr-pdf" : {
quality : "Якiсть" ,
language : "Мова" ,
autoDetect : "Автовизначення" ,
pages : "Сторiнки" ,
pagesPlaceholder : "all, 1-3, 5" ,
pagesHint : "Введiть номери сторiнок або дiапазони (напр. 1-3, 5, 8-10). Макс. 50 сторiнок." ,
submit : "Витягнути текст" ,
submitBatch : "Витягнути текст ({count} файлiв)" ,
progressLabel : "Витягування тексту з PDF" ,
},
2026-05-15 17:02:49 +08:00
"blur-faces" : {
blurRadius : "Радіус розмиття" ,
blurLight : "Легке" ,
blurHeavy : "Сильне" ,
detectionSensitivity : "Чутливість виявлення" ,
moreFaces : "Більше облич" ,
fewerFaces : "Менше облич" ,
submit : "Розмити обличчя" ,
progressLabel : "Розмиття облич" ,
},
"enhance-faces" : {
quality : "Якість" ,
enhancementStrength : "Сила поліпшення" ,
onlyCenterFace : "Лише центральне обличчя" ,
detectionSensitivity : "Чутливість виявлення" ,
submit : "Поліпшити обличчя" ,
submitBatch : "Поліпшити обличчя ({count} файлів)" ,
progressLabel : "Поліпшення облич" ,
},
"smart-crop" : {
subjectFocus : "Фокус на об'єкті" ,
faceFocus : "Фокус на обличчі" ,
autoTrim : "Автообрізка" ,
customSize : "Власний розмір" ,
socialPresets : "Шаблони для соцмереж" ,
detectionStrategy : "Стратегія виявлення" ,
detectionStrategyHint :
"Увага знаходить найбільш візуально помітну ділянку. Ентропія знаходить ділянку з найбільшою деталізацією та інформацією." ,
attention : "Увага" ,
entropy : "Ентропія" ,
padding : "Відступ" ,
paddingHint : "Додатковий простір навколо ділянки фокусу" ,
outputQuality : "Якість виводу" ,
outputQualityHint : "Для виводу у JPEG та WebP. PNG завжди без втрат." ,
subjectDescription :
"Визначає найцікавішу ділянку за допомогою аналізу помітності та обрізає до цільового розміру." ,
framing : "Кадрування" ,
facePadding : "Відступ навколо обличчя" ,
facePaddingHint : "Додатковий простір навколо виявлених облич" ,
fewerFalsePositives : "Менше хибних спрацювань" ,
faceDescription :
"Використовує AI-виявлення облич для правильного кадрування. За відсутності облич перемикається на фокус по об'єкту." ,
trimTolerance : "Допуск" ,
trimDescription :
"Наскільки піксель рамки може відрізнятися від кольору краю і все ще бути обрізаним. Вище = агресивніше." ,
padToSquare : "Доповнити до квадрату" ,
targetSizePx : "Цільовий розмір (px)" ,
padColor : "Колір заповнення" ,
trimHint :
'Видаляє однокольорові рамки навколо об\'єкта. Увімкніть "Доповнити до квадрату" для зображень, готових до e-commerce.' ,
submitSubject : "Розумна обрізка" ,
submitFace : "Обрізка по обличчю" ,
submitTrim : "Обрізати поля" ,
},
imageEnhancement : {
enhancementMode : "Режим поліпшення" ,
auto : "Авто" ,
portrait : "Портрет" ,
landscape : "Пейзаж" ,
lowLight : "Слабке освітлення" ,
food : "Їжа" ,
document : "Документ" ,
intensity : "Інтенсивність" ,
deepEnhance : "Глибоке поліпшення (AI)" ,
deepEnhanceDescription : "Видаляє шум та артефакти за допомогою AI" ,
deepEnhanceRequires : "Потрібен пакет збільшення й поліпшення" ,
analyzingImage : "Аналіз зображення..." ,
detectedIssues : "Виявлені проблеми" ,
imageLooksGood : "Зображення виглядає добре. Підлаштуйте за допомогою повзунка інтенсивності." ,
issueUnderexposed : "Низька експозиція" ,
issueOverexposed : "Переекспоновано" ,
issueLowContrast : "Плоский контраст" ,
issueColorCast : "Колірний зсув" ,
issueDesaturated : "Знебарвлено" ,
issueSoftFocus : "М 'який фокус" ,
issueNoisy : "Зашумлено" ,
submit : "Поліпшити" ,
submitDeep : "Глибоке поліпшення" ,
submitBatch : "Поліпшити ({count} файлів)" ,
submitDeepBatch : "Глибоке поліпшення ({count} файлів)" ,
progressLabel : "Поліпшення зображення" ,
progressLabelBatch : "Поліпшення {count} зображень" ,
},
"noise-removal" : {
denoisingTier : "Рівень шумозаглушення" ,
quick : "Швидкий" ,
balanced : "Збалансований" ,
quality : "Якість" ,
maximum : "Максимальний" ,
quickDesc : "Швидкий, легкий" ,
balancedDesc : "Добра якість, помірна швидкість" ,
qualityDesc : "На основі AI, повільний" ,
maximumDesc : "Найкраща AI-модель, найповільніший" ,
strength : "Сила" ,
subtle : "Легка" ,
aggressive : "Агресивна" ,
detailPreservation : "Збереження деталей" ,
smooth : "Гладкі" ,
sharp : "Чіткі" ,
colorNoise : "Кольоровий шум" ,
heavy : "Сильний" ,
outputFormat : "Формат виводу" ,
gifAiWarning :
"AI-шумозаглушення для файлів GIF обробляє лише перший кадр. Для анімованих GIF використовуйте швидкий або збалансований рівень." ,
submit : "Видалити шум" ,
submitBatch : "Видалити шум ({count} файлів)" ,
progressLabel : "Видалення шуму" ,
progressLabelBatch : "Видалення шуму з {count} зображень" ,
},
"red-eye-removal" : {
sensitivity : "Чутливість" ,
strict : "Сувора" ,
aggressive : "Агресивна" ,
correctionStrength : "Сила корекції" ,
subtle : "Легка" ,
dark : "Темна" ,
outputFormat : "Формат виводу" ,
quality : "Якість" ,
submit : "Виправити червоні очі" ,
submitBatch : "Виправити червоні очі ({count} файлів)" ,
progressLabel : "Виправлення червоних очей" ,
progressLabelBatch : "Виправлення червоних очей на {count} зображеннях" ,
},
"restore-photo" : {
scratchRemoval : "Видалення подряпин" ,
scratchRemovalDesc : "Виявлення та відновлення подряпин, розривів, плям" ,
faceEnhancement : "Поліпшення облич" ,
faceEnhancementDesc : "Відновлення пошкоджених облич за допомогою CodeFormer AI" ,
faceFidelity : "Вірність обличчя" ,
enhanced : "Поліпшене" ,
faithful : "Вірне" ,
noiseReduction : "Придушення шуму" ,
noiseReductionDesc : "Видалення зернистості та шуму зі старих фото" ,
denoiseStrength : "Сила шумозаглушення" ,
autoColorize : "Автоколоризація" ,
autoColorizeDesc : "Додавання кольору до чорно-білих фото за допомогою DDColor AI" ,
colorizeStrength : "Сила колоризації" ,
vivid : "Яскравий" ,
submit : "Відновити фото" ,
submitBatch : "Відновити фото ({count})" ,
progressLabel : "Відновлення фото" ,
progressLabelBatch : "Відновлення {count} фотографій" ,
},
"content-aware-resize" : {
widthPx : "Ширина (px)" ,
heightPx : "Висота (px)" ,
resizeToSquare : "Привести до квадрату" ,
protectFaces : "Захистити обличчя" ,
protectFacesHint :
"Виявлення та захист ділянок облич від видалення швів за допомогою розпізнавання облич" ,
smoothing : "Згладжування" ,
edgeSensitivity : "Чутливість до країв" ,
submit : "Змінити розмір" ,
submitBatch : "Змінити розмір ({count} файлів)" ,
progressLabel : "Контентно-залежне масштабування" ,
},
"ai-canvas-expand" : {
quality : "Якість" ,
fast : "Швидко" ,
balanced : "Збалансовано" ,
highQuality : "Висока якість" ,
fastDesc : "Швидкий попередній перегляд, менше проходів AI" ,
balancedDesc : "Добра якість, помірна швидкість" ,
highQualityDesc : "Найкращий результат, повільніше" ,
extendToAspectRatio : "Розширити до пропорцій" ,
extendByPixels : "Розширити на (пікселі)" ,
top : "Зверху" ,
right : "Справа" ,
bottom : "Знизу" ,
left : "Зліва" ,
newSize : "Новий розмір: {width} x {height}" ,
submit : "Розширити полотно" ,
submitBatch : "Розширити ({count} файлів)" ,
progressLabel : "Розширення полотна" ,
},
colorize : {
aiModel : "AI-модель" ,
fast : "Швидка" ,
fastDesc : "Швидкий результат" ,
balanced : "Збалансована" ,
balancedDesc : "Найкраща з доступних" ,
best : "Найкраща" ,
bestDesc : "Найвища якість" ,
colorIntensity : "Інтенсивність кольору" ,
grayscaleLabel : "Відтінки сірого" ,
subtleLabel : "Приглушений" ,
naturalLabel : "Натуральний" ,
vividLabel : "Яскравий" ,
intensityHint : "Нижчі значення дають більш приглушені, вінтажні кольори." ,
strength : "Сила колоризації" ,
submit : "Колоризувати" ,
submitBatch : "Колоризувати ({count} файлів)" ,
progressLabel : "Колоризація" ,
progressLabelBatch : "Колоризація {count} зображень" ,
},
"passport-photo" : {
country : "Країна" ,
searchCountries : "Пошук країн..." ,
noCountriesFound : "Країни не знайдено" ,
customDimensions : "Власні розміри" ,
documentType : "Тип документа" ,
dimensionsMm : "Розміри (мм)" ,
dpi : "DPI" ,
pixelsPerInch : "пікселів на дюйм" ,
backgroundColor : "Колір фону" ,
maxFileSize : "Макс. розмір файлу" ,
noLimit : "Без обмежень" ,
customKb : "Вказати у KB..." ,
uploadPortrait : "Завантажте портретне фото" ,
uploadHint :
"Перетягніть або завантажте зображення на ліву панель для попереднього перегляду фото на документи" ,
analyzingPhoto : "Аналіз фото" ,
detectingLandmarks : "Визначення орієнтирів обличчя та видалення фону..." ,
generatePassportPhoto : "Створити фото на документи" ,
generating : "Створення..." ,
downloadPhoto : "Завантажити фото" ,
faceCentered : "Обличчя по центру" ,
headLevel : "Голова рівно" ,
lookingStraight : "Погляд прямо" ,
faceSize : "Розмір обличчя" ,
whatYouSee : "Ви завантажуєте те, що бачите" ,
dragToAdjust : "Перетягніть для налаштування" ,
scrollToZoom : "Прокрутіть для масштабування" ,
photoGenerated : "Фото створено. Завантажте з лівої панелі." ,
},
2026-06-13 10:19:23 +08:00
"transcribe-audio" : {
language : "Мова" ,
autoDetect : "Автовизначення" ,
outputFormat : "Формат виводу" ,
plainText : "Звичайний текст" ,
submit : "Транскрибувати" ,
submitBatch : "Транскрибувати ({count} файлiв)" ,
progressLabel : "Транскрипцiя аудiо" ,
},
"auto-subtitles" : {
language : "Мова" ,
autoDetect : "Автовизначення" ,
format : "Формат субтитрiв" ,
submit : "Створити субтитри" ,
submitBatch : "Створити субтитри ({count} файлiв)" ,
progressLabel : "Створення субтитрiв" ,
},
2026-05-15 17:02:49 +08:00
"transparency-fixer" : {
description : "Завантажте PNG з хибною прозорістю, і ми виправимо його в один клік." ,
removeWatermark : "Видалити водяний знак" ,
removeWatermarkHelp : "Виявлення та видалення напівпрозорих водяних знаків" ,
requiresEraser : "Потрібен пакет видалення об'єктів" ,
advanced : "Розширені" ,
defringe : "Видалення ореолу" ,
outputFormat : "Формат виводу" ,
submit : "Виправити прозорість" ,
submitBatch : "Виправити прозорість ({count} файлів)" ,
progressLabel : "Виправлення прозорості" ,
},
2026-06-13 10:19:23 +08:00
"background-replace" : {
color : "Колір фону" ,
submit : "Замінити фон" ,
submitBatch : "Замінити фон ({count} файлів)" ,
progressLabel : "Заміна фону" ,
},
"blur-background" : {
intensity : "Інтенсивність розмиття" ,
submit : "Розмити фон" ,
submitBatch : "Розмити фон ({count} файлів)" ,
progressLabel : "Розмиття фону" ,
},
2026-05-15 17:02:49 +08:00
"watermark-text" : {
watermarkText : "Текст водяного знаку" ,
fontSize : "Розмір шрифту" ,
color : "Колір" ,
opacity : "Непрозорість" ,
position : "Позиція" ,
rotation : "Обертання" ,
center : "Центр" ,
topLeft : "Зверху ліворуч" ,
topRight : "Зверху праворуч" ,
bottomLeft : "Знизу ліворуч" ,
bottomRight : "Знизу праворуч" ,
tiled : "Плиткою" ,
submit : "Додати водяний знак" ,
submitBatch : "Додати водяний знак ({count} файлів)" ,
progressLabel : "Додавання водяного знаку" ,
},
"watermark-image" : {
uploadWatermark : "Завантажити зображення водяного знаку" ,
position : "Позиція" ,
opacity : "Непрозорість" ,
scale : "Масштаб" ,
submit : "Застосувати водяний знак" ,
submitBatch : "Застосувати водяний знак ({count} файлів)" ,
},
"text-overlay" : {
text : "Текст" ,
fontSize : "Розмір шрифту" ,
color : "Колір" ,
position : "Позиція" ,
top : "Зверху" ,
center : "Центр" ,
bottom : "Знизу" ,
backgroundBox : "Фоновий блок" ,
backgroundColor : "Колір фону" ,
shadow : "Тінь" ,
submit : "Додати текст" ,
submitBatch : "Додати текст ({count} файлів)" ,
progressLabel : "Додавання тексту" ,
2026-06-07 18:27:09 +08:00
download : "Download" ,
defaultText : "Your Text Here" ,
2026-05-15 17:02:49 +08:00
},
compose : {
uploadOverlay : "Завантажити зображення для накладання" ,
xPosition : "Позиція X" ,
yPosition : "Позиція Y" ,
opacity : "Непрозорість" ,
blendMode : "Режим накладання" ,
submit : "Накласти" ,
},
"meme-generator" : {
selectTemplate : "Оберіть шаблон з галереї або завантажте власне зображення для початку." ,
chooseLayout : "Оберіть макет тексту для Вашого зображення." ,
textContent : "Текст" ,
textStyle : "Стиль тексту" ,
font : "Шрифт" ,
fontSize : "Розмір шрифту" ,
textColor : "Колір тексту" ,
strokeColor : "Колір обведення" ,
allCaps : "ВСІ ВЕЛИКІ" ,
generate : "Створити Meme" ,
generating : "Створення..." ,
downloadMeme : "Завантажити Meme" ,
backToGallery : "Назад до галереї" ,
},
info : {
loadingInfo : "Завантаження інформації..." ,
filename : "Ім'я файлу" ,
fileSize : "Розмір файлу" ,
dimensions : "Розміри" ,
format : "Формат" ,
channels : "Канали" ,
colorSpace : "Колірний простір" ,
density : "Щільність" ,
bitDepth : "Глибина кольору" ,
progressive : "Прогресивний" ,
pages : "Сторінки" ,
hasAlpha : "Альфа-канал" ,
hasProfile : "Профіль" ,
hasExif : "EXIF" ,
hasIcc : "ICC" ,
hasXmp : "XMP" ,
2026-06-07 18:27:09 +08:00
readInfo : "Read Info" ,
reading : "Reading..." ,
channelStats : "Channel Stats" ,
yes : "Yes" ,
no : "No" ,
na : "N/A" ,
failedToRead : "Failed to read info" ,
2026-05-15 17:02:49 +08:00
},
compare : {
uploadSecondImage : "Завантажити друге зображення" ,
similarity : "Подібність: {percent}%" ,
submit : "Порівняти" ,
downloadDiff : "Завантажити різницю" ,
},
"find-duplicates" : {
preset : "Шаблон" ,
exact : "Точні" ,
similar : "Подібні" ,
loose : "Приблизні" ,
exactDesc : "Ідентичні копії, одне зображення у різних форматах." ,
similarDesc : "Масштабовані, перестиснені або злегка відредаговані копії." ,
looseDesc : "Візуально пов'язані зображення, незначні кадрування, різна експозиція." ,
threshold : "Поріг" ,
submit : "Шукати дублікати" ,
scanning : "Сканування..." ,
},
"color-palette" : {
submit : "Витягнути палітру" ,
extracting : "Витягування..." ,
dominantColors : "Домінуючі кольори" ,
clickToCopy : "Натисніть для копіювання" ,
},
"qr-generate" : {
contentType : "Тип вмісту" ,
url : "URL" ,
text : "Текст" ,
wifi : "WiFi" ,
vcard : "vCard" ,
email : "Email" ,
phone : "Телефон" ,
sms : "SMS" ,
styling : "Стилізація" ,
dotStyle : "Стиль точок" ,
cornerSquareStyle : "Стиль кутових квадратів" ,
cornerDotStyle : "Стиль кутових точок" ,
foregroundColor : "Колір переднього плану" ,
bgColor : "Колір фону" ,
logo : "Логотип" ,
downloadFormat : "Формат завантаження" ,
submit : "Згенерувати QR-код" ,
download : "Завантажити QR-код" ,
},
2026-06-06 20:47:08 +08:00
"html-to-image" : {
2026-06-06 21:31:05 +08:00
modeUrl : "URL" ,
modeHtml : "HTML File" ,
htmlFile : "HTML File" ,
2026-06-06 20:47:08 +08:00
url : "URL" ,
2026-06-06 21:29:06 +08:00
urlPlaceholder : "https://snapotter.com" ,
2026-06-06 20:47:08 +08:00
format : "Output Format" ,
quality : "Quality" ,
devicePreset : "Device" ,
viewportWidth : "Width" ,
viewportHeight : "Height" ,
fullPage : "Full Page" ,
submit : "Capture" ,
download : "Download Screenshot" ,
capturing : "Capturing webpage..." ,
errorTimeout : "Page took too long to load" ,
errorBlocked : "This URL cannot be captured" ,
errorUnavailable : "Screenshot service is not available" ,
errorFailed : "Failed to capture the page" ,
placeholder : "Enter a URL and click Capture" ,
presets : {
desktop : "Desktop" ,
tablet : "Tablet" ,
mobile : "Mobile" ,
custom : "Custom" ,
},
},
2026-05-15 17:02:49 +08:00
"barcode-read" : {
submit : "Сканувати штрихкоди" ,
submitBatch : "Сканувати ({count} файлів)" ,
scanning : "Сканування..." ,
noBarcodesFound : "Штрихкоди не знайдено" ,
barcodesFound : "Знайдено {count} штрихкод" ,
barcodesFoundPlural : "Знайдено {count} штрихкодів" ,
},
collage : {
template : "Шаблон" ,
aspectRatio : "Пропорції" ,
gap : "Відступ" ,
cornerRadius : "Заокруглення кутів" ,
backgroundColor : "Колір фону" ,
outputFormat : "Формат виводу" ,
quality : "Якість" ,
submit : "Створити колаж" ,
downloadCollage : "Завантажити колаж" ,
},
stitch : {
direction : "Напрямок" ,
horizontal : "Горизонтально" ,
vertical : "Вертикально" ,
grid : "Сітка" ,
gridColumns : "Стовпці сітки" ,
resizeMode : "Режим масштабування" ,
fit : "Вписати" ,
original : "Оригінал" ,
stretchMode : "Розтягнути" ,
cropMode : "Обрізати" ,
alignment : "Вирівнювання" ,
start : "Початок" ,
center : "Центр" ,
end : "Кінець" ,
gap : "Відступ" ,
border : "Рамка" ,
cornerRadius : "Заокруглення кутів" ,
backgroundColor : "Колір фону" ,
outputFormat : "Формат виводу" ,
quality : "Якість" ,
submit : "Об'єднати зображення" ,
},
split : {
modeGrid : "Сітка" ,
modeTileSize : "Розмір плитки" ,
presets : "Шаблони" ,
columns : "Стовпці" ,
rows : "Рядки" ,
tileWidth : "Ширина плитки" ,
tileHeight : "Висота плитки" ,
outputFormat : "Формат виводу" ,
quality : "Якість" ,
submit : "Розділити зображення" ,
downloadAll : "Завантажити все (ZIP)" ,
},
border : {
presets : "Шаблони" ,
borderWidth : "Ширина рамки" ,
borderColor : "Колір рамки" ,
padding : "Відступ" ,
paddingColor : "Колір відступу" ,
cornerRadius : "Заокруглення кутів" ,
shadow : "Тінь" ,
shadowBlur : "Розмиття тіні" ,
shadowOffsetX : "Зсув тіні X" ,
shadowOffsetY : "Зсув тіні Y" ,
shadowColor : "Колір тіні" ,
shadowOpacity : "Непрозорість тіні" ,
submit : "Додати рамку" ,
submitBatch : "Додати рамку ({count} файлів)" ,
progressLabel : "Додавання рамки" ,
},
beautify : {
preset : "Шаблон" ,
backgroundType : "Тип фону" ,
solidColor : "Суцільний колір" ,
linearGradient : "Лінійний градієнт" ,
radialGradient : "Радіальний градієнт" ,
customImage : "Власне зображення" ,
gradientAngle : "Кут градієнта" ,
padding : "Відступ" ,
borderRadius : "Заокруглення кутів" ,
shadowPreset : "Шаблон тіні" ,
deviceFrame : "Рамка пристрою" ,
submit : "Прикрасити" ,
submitBatch : "Прикрасити ({count} файлів)" ,
progressLabel : "Прикрашання знімку екрана" ,
},
2026-06-13 10:19:16 +08:00
"circle-crop" : {
submit : "Circle Crop" ,
submitBatch : "Circle Crop ({count} files)" ,
progressLabel : "Cropping to circle" ,
},
duotone : {
shadow : "Shadow Color" ,
highlight : "Highlight Color" ,
submit : "Apply Duotone" ,
submitBatch : "Apply Duotone ({count} files)" ,
progressLabel : "Applying duotone" ,
},
"image-pad" : {
target : "Target Ratio" ,
color : "Background Color" ,
submit : "Pad Image" ,
submitBatch : "Pad Image ({count} files)" ,
progressLabel : "Padding image" ,
},
pixelate : {
blockSize : "Block Size" ,
submit : "Pixelate" ,
submitBatch : "Pixelate ({count} files)" ,
progressLabel : "Pixelating" ,
},
vignette : {
strength : "Strength" ,
color : "Vignette Color" ,
submit : "Apply Vignette" ,
submitBatch : "Apply Vignette ({count} files)" ,
progressLabel : "Applying vignette" ,
},
"gif-webp" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting animation" ,
},
histogram : {
submit : "Generate Histogram" ,
submitBatch : "Generate Histogram ({count} files)" ,
progressLabel : "Generating histogram" ,
},
"lqip-placeholder" : {
width : "Width" ,
blur : "Blur" ,
submit : "Generate Placeholder" ,
submitBatch : "Generate Placeholder ({count} files)" ,
progressLabel : "Generating placeholder" ,
},
"sprite-sheet" : {
columns : "Columns" ,
padding : "Padding" ,
background : "Background Color" ,
submit : "Create Sprite Sheet" ,
submitBatch : "Create Sprite Sheet" ,
progressLabel : "Creating sprite sheet" ,
},
2026-05-15 17:02:49 +08:00
"svg-to-raster" : {
outputFormat : "Формат виводу" ,
sizing : "Розмір" ,
scaleMode : "Масштаб" ,
customMode : "Власний" ,
scalePresets : "Шаблони масштабу" ,
dpiPresets : "Шаблони DPI" ,
customWidth : "Ширина (px)" ,
customHeight : "Висота (px)" ,
background : "Фон" ,
bgTransparent : "Прозорий" ,
bgColor : "Колір" ,
quality : "Якість" ,
submit : "Конвертувати SVG" ,
submitBatch : "Конвертувати ({count} файлів)" ,
progressLabel : "Конвертація SVG" ,
},
vectorize : {
preset : "Шаблон" ,
logo : "Логотип" ,
illustration : "Ілюстрація" ,
photo : "Фотографія" ,
sketch : "Ескіз" ,
customPreset : "Власний" ,
colorMode : "Колірний режим" ,
bw : "Ч/Б" ,
colorModeColor : "Кольоровий" ,
threshold : "Поріг" ,
colorPrecision : "Точність кольору" ,
layerDifference : "Різниця шарів" ,
filterSpeckle : "Фільтр артефактів" ,
pathMode : "Режим контурів" ,
cornerThreshold : "Поріг кутів" ,
invertColors : "Інвертувати кольори" ,
submit : "Векторизувати" ,
submitBatch : "Векторизувати ({count} файлів)" ,
progressLabel : "Векторизація" ,
},
"gif-tools" : {
mode : "Режим" ,
resize : "Змінити розмір" ,
optimize : "Оптимізувати" ,
speed : "Швидкість" ,
reverse : "Реверс" ,
extract : "Витягнути" ,
rotateMode : "Обернути" ,
pixel : "Пікселі" ,
percentage : "Відсотки" ,
colors : "Кольори" ,
dither : "Дизеринг" ,
effort : "Зусилля" ,
speedFactor : "Коефіцієнт швидкості" ,
loopControl : "Керування циклом" ,
infinite : "Нескінченний" ,
once : "Один раз" ,
customLoop : "Власний" ,
loopCount : "Кількість циклів" ,
extractSingle : "Один кадр" ,
extractRange : "Діапазон" ,
extractAll : "Усі" ,
frameNumber : "Номер кадру" ,
frameStart : "Початковий кадр" ,
frameEnd : "Кінцевий кадр" ,
extractFormat : "Формат" ,
submit : "Обробити GIF" ,
submitBatch : "Обробити ({count} файлів)" ,
progressLabel : "Обробка GIF" ,
},
"image-to-base64" : {
outputFormat : "Формат виводу" ,
keepOriginal : "Зберегти оригінал" ,
quality : "Якість" ,
maxWidth : "Макс. ширина" ,
maxHeight : "Макс. висота" ,
submit : "Конвертувати у Base64" ,
submitBatch : "Конвертувати ({count} файлів)" ,
copyBase64 : "Копіювати Base64" ,
copyDataUri : "Копіювати Data URI" ,
copyImgTag : "Копіювати <img>" ,
copyCssUrl : "Копіювати CSS url()" ,
},
2026-06-13 10:19:16 +08:00
"barcode-generate" : {
text : "Text" ,
type : "Barcode Type" ,
scale : "Scale" ,
includeText : "Include Text" ,
submit : "Generate Barcode" ,
download : "Download Barcode" ,
},
"chart-maker" : {
kind : "Chart Type" ,
title : "Title" ,
width : "Width" ,
height : "Height" ,
submit : "Create Chart" ,
submitBatch : "Create Chart ({count} files)" ,
progressLabel : "Creating chart" ,
},
2026-05-15 17:02:49 +08:00
"enhance-faces-standalone" : {
model : "Модель" ,
fast : "Швидка" ,
balanced : "Збалансована" ,
best : "Найкраща" ,
},
2026-06-13 10:18:49 +08:00
"convert-video" : {
format : "Output format" ,
quality : "Quality" ,
high : "High" ,
balanced : "Balanced" ,
small : "Smallest" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"compress-video" : {
quality : "Compression" ,
light : "Light" ,
balanced : "Balanced" ,
strong : "Strong" ,
resolution : "Resolution" ,
original : "Original" ,
submit : "Compress" ,
submitBatch : "Compress ({count} files)" ,
progressLabel : "Compressing" ,
},
"trim-video" : {
start : "Start (seconds)" ,
end : "End (seconds)" ,
precise : "Frame-accurate (re-encodes)" ,
submit : "Trim" ,
submitBatch : "Trim ({count} files)" ,
progressLabel : "Trimming" ,
},
"mute-video" : {
submit : "Remove audio" ,
submitBatch : "Remove audio ({count} files)" ,
progressLabel : "Muting" ,
},
"video-to-gif" : {
fps : "Frames per second" ,
width : "Width (px)" ,
start : "Start (seconds)" ,
duration : "Duration (seconds)" ,
submit : "Create GIF" ,
submitBatch : "Create GIFs ({count} files)" ,
progressLabel : "Creating GIF" ,
},
2026-06-13 10:19:00 +08:00
"resize-video" : {
preset : "Preset" ,
width : "Width (px)" ,
height : "Height (px)" ,
hint : "Leave one dimension empty to keep aspect ratio" ,
submit : "Resize" ,
submitBatch : "Resize ({count} files)" ,
progressLabel : "Resizing" ,
},
"crop-video" : {
width : "Width (px)" ,
height : "Height (px)" ,
x : "X offset" ,
y : "Y offset" ,
submit : "Crop" ,
submitBatch : "Crop ({count} files)" ,
progressLabel : "Cropping" ,
},
"rotate-video" : {
transform : "Transform" ,
cw90 : "Rotate 90 clockwise" ,
ccw90 : "Rotate 90 counter-clockwise" ,
rotate180 : "Rotate 180" ,
hflip : "Flip horizontal" ,
vflip : "Flip vertical" ,
submit : "Rotate" ,
submitBatch : "Rotate ({count} files)" ,
progressLabel : "Rotating" ,
},
"change-fps" : {
fps : "Frames per second" ,
submit : "Change FPS" ,
submitBatch : "Change FPS ({count} files)" ,
progressLabel : "Changing FPS" ,
},
"video-color" : {
brightness : "Brightness" ,
contrast : "Contrast" ,
saturation : "Saturation" ,
gamma : "Gamma" ,
submit : "Apply" ,
submitBatch : "Apply ({count} files)" ,
progressLabel : "Adjusting color" ,
},
"video-speed" : {
factor : "Speed factor" ,
keepPitch : "Keep original pitch" ,
submit : "Change speed" ,
submitBatch : "Change speed ({count} files)" ,
progressLabel : "Changing speed" ,
},
"reverse-video" : {
hint : "Limited to clips up to 5 minutes" ,
submit : "Reverse" ,
submitBatch : "Reverse ({count} files)" ,
progressLabel : "Reversing" ,
},
"video-loudnorm" : {
hint : "Normalizes audio to EBU R128 broadcast standard" ,
submit : "Normalize" ,
submitBatch : "Normalize ({count} files)" ,
progressLabel : "Normalizing" ,
},
"aspect-pad" : {
target : "Target ratio" ,
color : "Background color" ,
colorHint : "Hex color, e.g. #000000" ,
submit : "Pad" ,
submitBatch : "Pad ({count} files)" ,
progressLabel : "Padding" ,
},
"blur-pad" : {
target : "Target ratio" ,
blur : "Blur strength" ,
submit : "Pad" ,
submitBatch : "Pad ({count} files)" ,
progressLabel : "Padding" ,
},
"watermark-video" : {
text : "Watermark text" ,
position : "Position" ,
fontSize : "Font size" ,
opacity : "Opacity" ,
color : "Color" ,
colorHint : "Hex color, e.g. #ffffff" ,
submit : "Watermark" ,
submitBatch : "Watermark ({count} files)" ,
progressLabel : "Watermarking" ,
},
"stabilize-video" : {
smoothing : "Smoothing" ,
hint : "Runs two passes and takes longer than most tools" ,
submit : "Stabilize" ,
submitBatch : "Stabilize ({count} files)" ,
progressLabel : "Stabilizing" ,
},
"gif-to-video" : {
format : "Output format" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"video-to-webp" : {
fps : "Frames per second" ,
width : "Width (px)" ,
quality : "Quality" ,
loop : "Loop animation" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"video-to-frames" : {
mode : "Extraction mode" ,
modeAll : "All frames" ,
modeNth : "Every Nth frame" ,
modeTimestamps : "Specific timestamps" ,
n : "Take every Nth frame" ,
timestamps : "Timestamps (seconds)" ,
timestampsHint : "Comma-separated, e.g. 0.5, 2, 4.5" ,
format : "Image format" ,
submit : "Extract Frames" ,
submitBatch : "Extract Frames ({count} files)" ,
progressLabel : "Extracting frames" ,
},
"merge-videos" : {
hint : "Files are joined in upload order" ,
submit : "Merge" ,
submitBatch : "Merge ({count} files)" ,
progressLabel : "Merging" ,
},
"replace-audio" : {
hint : "Upload the video first, then the audio" ,
submit : "Replace Audio" ,
submitBatch : "Replace Audio ({count} files)" ,
progressLabel : "Replacing audio" ,
},
"burn-subtitles" : {
fontSize : "Font size" ,
hint : "Upload a video and a subtitle file (.srt or .vtt)" ,
submit : "Burn Subtitles" ,
submitBatch : "Burn Subtitles ({count} files)" ,
progressLabel : "Burning subtitles" ,
},
"embed-subtitles" : {
language : "Language code" ,
languageHint : "Three-letter ISO 639-2 code, e.g. eng, spa, fra" ,
submit : "Embed Subtitles" ,
submitBatch : "Embed Subtitles ({count} files)" ,
progressLabel : "Embedding subtitles" ,
},
"extract-subtitles" : {
submit : "Extract Subtitles" ,
submitBatch : "Extract Subtitles ({count} files)" ,
progressLabel : "Extracting subtitles" ,
},
"images-to-video" : {
secondsPerImage : "Seconds per image" ,
resolution : "Resolution" ,
fps : "Frames per second" ,
submit : "Create Video" ,
submitBatch : "Create Video ({count} files)" ,
progressLabel : "Creating slideshow" ,
},
"video-metadata" : {
hint : "Metadata report appears in the result" ,
submit : "Strip Metadata" ,
submitBatch : "Strip Metadata ({count} files)" ,
progressLabel : "Stripping metadata" ,
},
2026-06-13 10:18:49 +08:00
"convert-audio" : {
format : "Output format" ,
bitrate : "Bitrate (kbps)" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"trim-audio" : {
start : "Start (seconds)" ,
end : "End (seconds)" ,
submit : "Trim" ,
submitBatch : "Trim ({count} files)" ,
progressLabel : "Trimming" ,
},
"extract-audio" : {
format : "Output format" ,
submit : "Extract" ,
submitBatch : "Extract ({count} files)" ,
progressLabel : "Extracting" ,
},
2026-06-13 10:19:06 +08:00
"volume-adjust" : {
"gain-db" : "Gain (dB)" ,
submit : "Adjust Volume" ,
submitBatch : "Adjust Volume ({count} files)" ,
progressLabel : "Adjusting volume" ,
},
"normalize-audio" : {
hint : "EBU R128 loudness normalization" ,
submit : "Normalize" ,
submitBatch : "Normalize ({count} files)" ,
progressLabel : "Normalizing" ,
},
"fade-audio" : {
"fade-in-s" : "Fade in (seconds)" ,
"fade-out-s" : "Fade out (seconds)" ,
submit : "Apply Fade" ,
submitBatch : "Apply Fade ({count} files)" ,
progressLabel : "Applying fade" ,
},
"reverse-audio" : {
submit : "Reverse" ,
submitBatch : "Reverse ({count} files)" ,
progressLabel : "Reversing" ,
},
"audio-speed" : {
factor : "Speed factor" ,
submit : "Change Speed" ,
submitBatch : "Change Speed ({count} files)" ,
progressLabel : "Changing speed" ,
},
"pitch-shift" : {
semitones : "Semitones" ,
hint : "0 semitones is not allowed" ,
submit : "Shift Pitch" ,
submitBatch : "Shift Pitch ({count} files)" ,
progressLabel : "Shifting pitch" ,
},
"audio-channels" : {
mode : "Channel mode" ,
"stereo-to-mono" : "Stereo to mono" ,
"mono-to-stereo" : "Mono to stereo" ,
swap : "Swap left/right" ,
submit : "Convert Channels" ,
submitBatch : "Convert Channels ({count} files)" ,
progressLabel : "Converting channels" ,
},
"silence-removal" : {
"threshold-db" : "Silence threshold (dB)" ,
"min-silence-s" : "Minimum silence duration (seconds)" ,
submit : "Remove Silence" ,
submitBatch : "Remove Silence ({count} files)" ,
progressLabel : "Removing silence" ,
},
"noise-reduction" : {
strength : "Strength" ,
light : "Light" ,
medium : "Medium" ,
strong : "Strong" ,
submit : "Reduce Noise" ,
submitBatch : "Reduce Noise ({count} files)" ,
progressLabel : "Reducing noise" ,
},
"merge-audio" : {
format : "Output format" ,
mp3 : "MP3" ,
wav : "WAV" ,
flac : "FLAC" ,
m4a : "M4A" ,
"order-hint" : "Files will be joined in upload order" ,
submit : "Merge Audio" ,
submitBatch : "Merge Audio ({count} files)" ,
progressLabel : "Merging audio" ,
},
"split-audio" : {
mode : "Split mode" ,
time : "By time" ,
parts : "Equal parts" ,
silence : "By silence" ,
"segment-s" : "Segment length (seconds)" ,
"num-parts" : "Number of parts" ,
"threshold-db" : "Silence threshold (dB)" ,
"min-silence-s" : "Minimum silence duration (seconds)" ,
submit : "Split Audio" ,
submitBatch : "Split Audio ({count} files)" ,
progressLabel : "Splitting audio" ,
},
"ringtone-maker" : {
"start-s" : "Start time (seconds)" ,
"duration-s" : "Duration (seconds)" ,
"max-hint" : "Maximum 30 seconds" ,
submit : "Create Ringtone" ,
submitBatch : "Create Ringtone ({count} files)" ,
progressLabel : "Creating ringtone" ,
},
"waveform-image" : {
width : "Width (px)" ,
height : "Height (px)" ,
color : "Waveform color" ,
submit : "Generate Waveform" ,
submitBatch : "Generate Waveform ({count} files)" ,
progressLabel : "Generating waveform" ,
},
"audio-metadata" : {
strip : "Strip all metadata" ,
title : "Title" ,
artist : "Artist" ,
album : "Album" ,
submit : "Apply Metadata" ,
submitBatch : "Apply Metadata ({count} files)" ,
progressLabel : "Applying metadata" ,
},
2026-06-13 10:18:49 +08:00
"merge-pdf" : {
addFiles : "Add PDFs to merge" ,
needTwo : "At least two PDFs are required" ,
orderHint : "{count} PDFs will merge in this order" ,
submit : "Merge" ,
submitBatch : "Merge ({count} files)" ,
progressLabel : "Merging" ,
},
"split-pdf" : {
mode : "Split mode" ,
range : "Page range" ,
rangeHint : "e.g. 1-3, 5, 7-z" ,
everyN : "Pages per part" ,
submit : "Split" ,
submitBatch : "Split ({count} files)" ,
progressLabel : "Splitting" ,
},
"compress-pdf" : {
preset : "Quality preset" ,
screen : "Screen (smallest)" ,
ebook : "Ebook (balanced)" ,
printer : "Printer (best quality)" ,
submit : "Compress" ,
submitBatch : "Compress ({count} files)" ,
progressLabel : "Compressing" ,
},
"rotate-pdf" : {
angle : "Rotation angle" ,
range : "Page range" ,
rangeHint : "e.g. 1-3, 5, 1-z (all pages)" ,
submit : "Rotate" ,
submitBatch : "Rotate ({count} files)" ,
progressLabel : "Rotating" ,
},
2026-06-13 10:19:11 +08:00
"convert-document" : {
format : "Output format" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"convert-presentation" : {
format : "Output format" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"convert-spreadsheet" : {
format : "Output format" ,
hint : "Multi-sheet workbooks export the first sheet to CSV." ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"excel-to-pdf" : {
submit : "Convert to PDF" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"powerpoint-to-pdf" : {
submit : "Convert to PDF" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:18:49 +08:00
"word-to-pdf" : {
submit : "Convert to PDF" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:18:55 +08:00
"extract-pages" : {
range : "Page range" ,
rangeHint : "e.g. 1-3, 5, 7-z" ,
submit : "Extract" ,
submitBatch : "Extract ({count} files)" ,
progressLabel : "Extracting" ,
},
"remove-pages" : {
pages : "Pages to remove" ,
pagesHint : "e.g. 2, 4-6, z (last page)" ,
submit : "Remove" ,
submitBatch : "Remove ({count} files)" ,
progressLabel : "Removing" ,
},
"organize-pdf" : {
order : "Page order" ,
orderHint : "e.g. 3,1,2 or 1-z (identity)" ,
submit : "Reorder" ,
submitBatch : "Reorder ({count} files)" ,
progressLabel : "Reordering" ,
},
"protect-pdf" : {
userPassword : "User password" ,
ownerPassword : "Owner password (optional)" ,
ownerPasswordHint : "Defaults to user password if empty" ,
submit : "Protect" ,
submitBatch : "Protect ({count} files)" ,
progressLabel : "Encrypting" ,
},
"unlock-pdf" : {
password : "Password" ,
submit : "Unlock" ,
submitBatch : "Unlock ({count} files)" ,
progressLabel : "Decrypting" ,
},
"repair-pdf" : {
submit : "Repair" ,
submitBatch : "Repair ({count} files)" ,
progressLabel : "Repairing" ,
},
"linearize-pdf" : {
submit : "Optimize" ,
submitBatch : "Optimize ({count} files)" ,
progressLabel : "Linearizing" ,
},
"grayscale-pdf" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"pdfa-convert" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"crop-pdf" : {
margin : "Margin (points)" ,
submit : "Crop" ,
submitBatch : "Crop ({count} files)" ,
progressLabel : "Cropping" ,
},
"nup-pdf" : {
perSheet : "Pages per sheet" ,
submit : "Arrange" ,
submitBatch : "Arrange ({count} files)" ,
progressLabel : "Arranging" ,
},
"booklet-pdf" : {
perSheet : "Pages per sheet" ,
submit : "Create Booklet" ,
submitBatch : "Create Booklet ({count} files)" ,
progressLabel : "Creating booklet" ,
},
"watermark-pdf" : {
text : "Watermark text" ,
position : "Position" ,
fontSize : "Font size" ,
opacity : "Opacity" ,
rotation : "Rotation" ,
submit : "Watermark" ,
submitBatch : "Watermark ({count} files)" ,
progressLabel : "Watermarking" ,
},
"pdf-page-numbers" : {
position : "Position" ,
fontSize : "Font size" ,
submit : "Add Numbers" ,
submitBatch : "Add Numbers ({count} files)" ,
progressLabel : "Numbering" ,
},
"flatten-pdf" : {
submit : "Flatten" ,
submitBatch : "Flatten ({count} files)" ,
progressLabel : "Flattening" ,
},
"redact-pdf" : {
terms : "Terms to redact" ,
termsHint : "One term per line (max 50)" ,
caseSensitive : "Case sensitive" ,
submit : "Redact" ,
submitBatch : "Redact ({count} files)" ,
progressLabel : "Redacting" ,
},
"pdf-to-text" : {
submit : "Extract Text" ,
submitBatch : "Extract Text ({count} files)" ,
progressLabel : "Extracting" ,
},
"pdf-to-word" : {
hint : "Best for text-based PDFs; scanned pages need OCR" ,
submit : "Convert to Word" ,
submitBatch : "Convert to Word ({count} files)" ,
progressLabel : "Converting" ,
},
"pdf-metadata" : {
title : "Title" ,
author : "Author" ,
subject : "Subject" ,
keywords : "Keywords" ,
submit : "Set Metadata" ,
submitBatch : "Set Metadata ({count} files)" ,
progressLabel : "Setting metadata" ,
},
"html-to-pdf" : {
hint : "Remote resources are disabled for privacy." ,
submit : "Convert to PDF" ,
submitBatch : "Convert to PDF ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:19:11 +08:00
"markdown-to-docx" : {
submit : "Convert to DOCX" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"markdown-to-html" : {
hint : "Remote images in the source are left as-is in the output." ,
submit : "Convert to HTML" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:18:55 +08:00
"markdown-to-pdf" : {
hint : "Remote resources are disabled for privacy." ,
submit : "Convert to PDF" ,
submitBatch : "Convert to PDF ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:19:11 +08:00
"epub-convert" : {
format : "Output format" ,
hint : "Remote resources inside the book are not fetched." ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"to-epub" : {
submit : "Convert to EPUB" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:18:49 +08:00
"csv-excel" : {
sheet : "Worksheet number" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"csv-json" : {
pretty : "Pretty print" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"json-xml" : {
pretty : "Pretty print" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"split-csv" : {
rowsPerFile : "Rows per file" ,
keepHeader : "Keep header in each file" ,
submit : "Split" ,
submitBatch : "Split ({count} files)" ,
progressLabel : "Splitting" ,
},
2026-06-13 10:19:11 +08:00
"merge-csvs" : {
submit : "Merge" ,
submitBatch : "Merge ({count} files)" ,
progressLabel : "Merging" ,
},
"yaml-json" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"xml-to-csv" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"create-zip" : {
submit : "Create ZIP" ,
submitBatch : "Create ZIP ({count} files)" ,
progressLabel : "Zipping" ,
},
"extract-zip" : {
submit : "Extract" ,
submitBatch : "Extract ({count} files)" ,
progressLabel : "Extracting" ,
},
2026-05-15 17:02:49 +08:00
},
urlImport : {
title : "Імпорт за URL" ,
placeholder : "Вставте URL зображень, по одному на рядок..." ,
importButton : "Імпортувати URL" ,
addButton : "Додати {count} файлів" ,
adding : "Додавання..." ,
retryButton : "Повторити" ,
cancelButton : "Скасувати" ,
readyCount : "{count} готово" ,
failedStatus : "Помилка" ,
},
comparison : {
original : "Оригінал" ,
processed : "Оброблено" ,
before : "До" ,
after : "Після" ,
savings : "Економія" ,
},
toolPage : {
emptyPrompt : "Перетягніть або завантажте зображення для початку" ,
filesCount : "Файли ({count})" ,
addMore : "+ Додати ще" ,
clearAll : "Очистити все" ,
acceptDescription : "Лише файли {exts}" ,
notFound : "Інструмент не знайдено" ,
configureAndGenerate : "Налаштуйте параметри та запустіть генерацію." ,
processingFailed : "Обробка цього файлу не вдалася" ,
conversionComplete : "Конвертацію завершено" ,
cannotPreviewDownload :
"Файли {type} неможливо переглянути у браузері. Скористайтеся кнопкою завантаження для збереження файлу." ,
generatingPreview : "Генерація попереднього перегляду..." ,
cannotPreviewWillProcess :
"Файли {ext} неможливо переглянути у браузері. Інструмент все одно обробить цей файл." ,
previousImage : "Попереднє зображення" ,
nextImage : "Наступне зображення" ,
imageCounter : "{current} / {total}" ,
settingsLabel : "Налаштування" ,
downloadAllZip : "Завантажити все (ZIP)" ,
hideSettings : "Сховати налаштування" ,
imageArea : "Область зображення" ,
2026-06-14 18:55:06 +08:00
disabledByAdmin : "This tool has been disabled by your administrator" ,
browseOtherTools : "Browse other tools" ,
privacyNote : "Files are processed on your server and never leave your network" ,
andMore : "and {count} more" ,
2026-05-15 17:02:49 +08:00
},
homePage : {
generatingPreview : "Генерація попереднього перегляду..." ,
loadingPreview : "Завантаження попереднього перегляду..." ,
changeFile : "Змінити файл" ,
quickActions : "Швидкі дії" ,
allTools : "Усі інструменти" ,
2026-06-14 18:46:16 +08:00
searchPlaceholder : "Search {count} tools..." ,
recent : "Recent" ,
popular : "Popular" ,
browseByCategory : "Browse by Category" ,
gettingStarted : "Getting Started" ,
noToolsMatch : "No tools match '{query}'" ,
clearSearch : "Clear search" ,
all : "All" ,
documents : "Documents" ,
data : "Data" ,
toolCount : "{count} tools" ,
2026-05-15 17:02:49 +08:00
},
fullscreenGrid : {
searchPlaceholder : "Пошук інструментів..." ,
hideDetails : "Сховати деталі" ,
showDetails : "Показати деталі" ,
switchToSidebar : "Перемкнути на бічну панель" ,
sidebarButton : "Бічна панель" ,
noToolsFound : "Інструменти не знайдено" ,
tryDifferent : "Спробуйте інший пошуковий запит" ,
},
editor : {
menu : {
file : {
label : "Файл" ,
new : "Новий" ,
open : "Відкрити" ,
save : "Зберегти" ,
exportAs : "Експортувати як..." ,
quickExportPng : "Швидкий експорт у PNG" ,
close : "Закрити" ,
},
edit : {
label : "Редагування" ,
undo : "Скасувати" ,
redo : "Повторити" ,
cut : "Вирізати" ,
copy : "Копіювати" ,
copyMerged : "Копіювати зведене" ,
paste : "Вставити" ,
pasteInPlace : "Вставити на місце" ,
delete : "Видалити" ,
freeTransform : "Вільна трансформація" ,
transform : {
label : "Трансформація" ,
scale : "Масштаб" ,
rotate : "Обертання" ,
skew : "Нахил" ,
flipHorizontal : "Відобразити горизонтально" ,
flipVertical : "Відобразити вертикально" ,
},
},
image : {
label : "Зображення" ,
imageSize : "Розмір зображення..." ,
canvasSize : "Розмір полотна..." ,
rotation : {
label : "Обертання зображення" ,
cw90 : "90° за годинниковою" ,
ccw90 : "90° проти годинникової" ,
r180 : "180°" ,
flipHorizontal : "Відобразити горизонтально" ,
flipVertical : "Відобразити вертикально" ,
},
trim : "Обрізати" ,
adjustments : {
label : "Корекція" ,
brightnessContrast : "Яскравість/Контраст" ,
hueSaturation : "Тон/Насиченість" ,
colorBalance : "Колірний баланс" ,
levels : "Рівні" ,
curves : "Криві" ,
},
},
layer : {
label : "Шар" ,
newLayer : "Новий шар" ,
duplicateLayer : "Дублювати шар" ,
deleteLayer : "Видалити шар" ,
arrange : {
label : "Розташування" ,
bringToFront : "На передній план" ,
bringForward : "Перемістити вперед" ,
sendBackward : "Перемістити назад" ,
sendToBack : "На задній план" ,
},
mergeDown : "Об'єднати з нижнім" ,
flattenImage : "Зведення зображення" ,
},
select : {
label : "Виділення" ,
all : "Виділити все" ,
deselect : "Зняти виділення" ,
inverse : "Інвертувати" ,
colorRange : "Колірний діапазон..." ,
},
filter : {
label : "Фільтр" ,
blur : {
label : "Розмиття" ,
gaussian : "Розмиття за Гаусом" ,
motion : "Розмиття руху" ,
radial : "Радіальне розмиття" ,
surface : "Поверхневе розмиття" ,
},
sharpen : {
label : "Різкість" ,
sharpen : "Підвищити різкість" ,
unsharpMask : "Маска нерізкості" ,
},
noise : {
label : "Шум" ,
addNoise : "Додати шум" ,
reduceNoise : "Зменшити шум" ,
},
pixelate : {
label : "Піксельизація" ,
pixelate : "Піксельизація" ,
mosaic : "Мозаїка" ,
},
stylize : {
label : "Стилізація" ,
emboss : "Тиснення" ,
solarize : "Соляризація" ,
posterize : "Постеризація" ,
},
grayscale : "Відтінки сірого" ,
sepia : "Сепія" ,
invert : "Інверсія" ,
},
view : {
label : "Вигляд" ,
zoomIn : "Збільшити" ,
zoomOut : "Зменшити" ,
fitOnScreen : "Вмістити на екрані" ,
actualPixels : "Реальний розмір" ,
rulers : "Лінійки" ,
grid : "Сітка" ,
guides : "Напрямні" ,
snap : "Прив'язка" ,
panels : "Панелі" ,
},
},
menuBar : {
backTitle : "Назад до SnapOtter" ,
},
welcome : {
ariaLabel : "Зона перетягування зображень" ,
heading : "Редактор зображень" ,
dropDescription : "Перетягніть зображення сюди для початку роботи" ,
openImageButton : "Відкрити зображення" ,
newDocumentButton : "Новий документ" ,
pasteHint : "Або вставте з буфера обміну (Ctrl+V)" ,
},
mobile : {
heading : "Рекомендовано настільний ПК" ,
description :
"Редактор зображень найкраще працює на великих екранах. Переключіться на пристрій з більшим дисплеєм для повноцінного редагування." ,
},
errors : {
serverDecodeFailed : "Помилка декодування на сервері" ,
},
2026-06-05 16:40:57 +08:00
shapes : {
shape : "Shape" ,
fill : "Fill" ,
stroke : "Stroke" ,
strokeWidth : "Width" ,
cornerRadius : "Radius" ,
sides : "Sides" ,
points : "Points" ,
dashStyle : "Dash" ,
solid : "Solid" ,
dashed : "Dashed" ,
dotted : "Dotted" ,
none : "None" ,
opacity : "Opacity" ,
rectangle : "Rectangle" ,
ellipse : "Ellipse" ,
line : "Line" ,
arrow : "Arrow" ,
polygon : "Polygon" ,
star : "Star" ,
},
2026-05-15 17:02:49 +08:00
},
settings : {
heading : "Налаштування" ,
nav : {
general : "Загальні" ,
systemSettings : "Системні налаштування" ,
security : "Безпека" ,
people : "Користувачі" ,
teams : "Команди" ,
roles : "Ролі" ,
auditLog : "Журнал аудиту" ,
2026-06-13 10:17:13 +08:00
usage : "Usage" ,
2026-05-15 17:02:49 +08:00
apiKeys : "API-ключі" ,
aiFeatures : "AI-функції" ,
tools : "Інструменти" ,
productAnalytics : "Аналітика" ,
about : "Про програму" ,
},
general : {
heading : "Загальні" ,
description : "Налаштування користувача та параметри відображення." ,
loading : "Завантаження..." ,
logOut : "Вийти" ,
defaultToolViewLabel : "Вигляд інструментів за замовчуванням" ,
defaultToolViewDescription : "Як інструменти відображаються на головній сторінці" ,
sidebarOption : "Бічна панель" ,
fullscreenGridOption : "Повноекранна сітка" ,
appVersionLabel : "Версія застосунку" ,
appVersionDescription : "Поточна версія SnapOtter" ,
saveButton : "Зберегти налаштування" ,
saveSuccess : "Налаштування збережено." ,
saveFailed : "Не вдалося зберегти налаштування." ,
},
system : {
heading : "Системні налаштування" ,
description : "Серверні налаштування та обмеження." ,
fileUploadLimitLabel : "Обмеження завантаження файлів (MB)" ,
fileUploadLimitDescription : "Максимальний розмір файлу за завантаження" ,
defaultThemeLabel : "Тема за замовчуванням" ,
defaultThemeDescription : "Тема, що застосовується для нових сесій" ,
lightOption : "Світла" ,
darkOption : "Темна" ,
systemOption : "Системна" ,
languageLabel : "Мова" ,
languageDescription : "Мова інтерфейсу" ,
loginAttemptLimitLabel : "Ліміт спроб входу" ,
loginAttemptLimitDescription : "Максимум невдалих спроб входу на хвилину до блокування" ,
fileManagementHeading : "Керування файлами" ,
maxFileAgeLabel : "Макс. час зберігання файлів (години)" ,
maxFileAgeDescription : "Як довго оброблені файли зберігаються до автоматичного очищення" ,
startupCleanupLabel : "Очищення при запуску" ,
startupCleanupDescription : "Видаляти старі тимчасові файли при запуску сервера" ,
saveButton : "Зберегти налаштування" ,
saveSuccess : "Налаштування збережено." ,
saveFailed : "Не вдалося зберегти налаштування." ,
limitsAndResources : "Обмеження та ресурси" ,
maxFileSize : "Макс. розмір файлу" ,
maxBatchSize : "Макс. розмір пакета" ,
concurrentJobs : "Паралельні завдання" ,
workerThreads : "Робочі потоки" ,
maxPipelineSteps : "Макс. кроків Pipeline" ,
processingTimeout : "Тайм-аут обробки" ,
rateLimitPerMin : "Ліміт запитів (запитів/хв)" ,
unlimited : "Без обмежень" ,
auto : "Авто" ,
envOverride : "Задано змінною середовища" ,
maxCanvasPixels : "Макс. пікселів полотна" ,
maxSvgSize : "Макс. розмір SVG" ,
maxSplitGrid : "Макс. сітка розділення" ,
maxPdfPages : "Макс. сторінок PDF" ,
sessionDuration : "Тривалість сесії" ,
2026-06-13 10:17:13 +08:00
supportBundleButton : "Download Support Bundle" ,
supportBundleDescription :
"Download a diagnostic zip with redacted config, logs, and job data for troubleshooting." ,
supportBundleFailed : "Failed to download support bundle." ,
2026-05-15 17:02:49 +08:00
},
security : {
heading : "Безпека" ,
description : "Налаштування пароля та автентифікації." ,
changePasswordHeading : "Зміна пароля" ,
currentPasswordPlaceholder : "Поточний пароль" ,
newPasswordPlaceholder : "Новий пароль" ,
confirmPasswordPlaceholder : "Підтвердіть новий пароль" ,
passwordsMismatch : "Паролі не збігаються" ,
passwordTooShort : "Пароль має містити щонайменше 4 символи" ,
changeSuccess : "Пароль успішно змінено" ,
changeFailed : "Не вдалося змінити пароль" ,
currentPasswordIncorrect : "Поточний пароль невірний" ,
changePasswordButton : "Змінити пароль" ,
loginAttemptLimitNote : "Ліміти спроб входу можна налаштувати в Системних налаштуваннях." ,
2026-06-13 23:00:33 +08:00
adminHeading : "Admin Security Settings" ,
adminDescription : "Enterprise security policy settings. These apply to all users." ,
sessionIdleTimeout : "Session Idle Timeout (minutes)" ,
sessionIdleTimeoutDesc : "Automatically log out idle sessions. 0 = disabled." ,
maxSessionsPerUser : "Max Sessions Per User" ,
maxSessionsPerUserDesc : "Limit concurrent sessions per user. 0 = unlimited." ,
mfaPolicy : "MFA Policy" ,
mfaPolicyDesc : "Require multi-factor authentication for users." ,
mfaPolicyOptional : "Optional" ,
mfaPolicyAdminsOnly : "Required for admins" ,
mfaPolicyRequired : "Required for all users" ,
ssoEnforcement : "SSO Enforcement" ,
ssoEnforcementDesc : "Require SSO login for all non-break-glass users." ,
ssoBreakGlassUsername : "Break Glass Admin Username" ,
ssoBreakGlassUsernameDesc :
"This admin can still log in with local credentials when SSO is enforced." ,
passwordMinLength : "Minimum Password Length" ,
passwordMinLengthDesc : "Minimum number of characters required for passwords." ,
passwordRequireUppercase : "Require Uppercase" ,
passwordRequireUppercaseDesc : "Require at least one uppercase letter." ,
passwordRequireNumber : "Require Number" ,
passwordRequireNumberDesc : "Require at least one number." ,
passwordRequireSpecial : "Require Special Character" ,
passwordRequireSpecialDesc : "Require at least one special character." ,
passwordPolicyHeading : "Password Policy" ,
securitySettingsSaved : "Security settings saved" ,
securitySettingsFailed : "Failed to save security settings" ,
2026-05-15 17:02:49 +08:00
},
people : {
heading : "Користувачі" ,
description : "Керування учасниками робочого простору та їхніми правами" ,
userCount : "{count} користувач" ,
userCountPlural : "{count} користувачів" ,
searchPlaceholder : "Пошук учасників..." ,
addMembersButton : "Додати учасників" ,
newMemberHeading : "Новий учасник" ,
usernamePlaceholder : "Ім'я користувача" ,
passwordPlaceholder : "Пароль" ,
roleUserOption : "Користувач" ,
roleEditorOption : "Редактор" ,
roleAdminOption : "Адміністратор" ,
roleUserDescription : "Базовий доступ до інструментів" ,
roleEditorDescription : "Усі файли та Pipeline" ,
roleAdminDescription : "Повний доступ" ,
noDescription : "Без опису" ,
defaultTeamOption : "За замовчуванням" ,
createButton : "Створити" ,
cancelButton : "Скасувати" ,
createSuccess : "Користувача успішно створено" ,
createFailed : "Не вдалося створити користувача" ,
userLimitReached : "Досягнуто ліміту користувачів (макс. {max})" ,
deleteConfirm : 'Видалити користувача "{username}"? Цю дію не можна скасувати.' ,
deleteSuccess : 'Користувача "{username}" видалено' ,
deleteFailed : "Не вдалося видалити користувача" ,
editHeading : "Редагування {username}" ,
updateSuccess : "Користувача оновлено" ,
updateFailed : "Не вдалося оновити користувача" ,
cannotRemoveOwnAdmin : "Неможливо зняти з себе роль адміністратора" ,
resetPasswordHeading : "Скидання пароля для {username}" ,
newPasswordLabel : "Новий пароль (мін. 8 символів)" ,
resetPasswordButton : "Скинути пароль" ,
resetPasswordWarning : "Це анулює всі сесії та API-ключі цього користувача." ,
resetSuccess : "Пароль успішно скинуто" ,
resetFailed : "Не вдалося скинути пароль" ,
tableHeaderUser : "Користувач" ,
tableHeaderRole : "Роль" ,
tableHeaderTeam : "Команда" ,
noSearchResults : "Учасників не знайдено." ,
noUsersFound : "Користувачів не знайдено." ,
authBadgeLocalOidc : "Локальний + OIDC" ,
authBadgeOidc : "OIDC" ,
editRoleTeamAction : "Змінити роль / команду" ,
resetPasswordAction : "Скинути пароль" ,
deleteUserAction : "Видалити користувача" ,
saveButton : "Зберегти" ,
2026-05-16 23:08:19 +08:00
copyPasswordButton : "Скопіювати пароль" ,
passwordCopied : "Скопійовано!" ,
copyPasswordWarning :
"Скопіюйте цей пароль зараз. Після створення користувача ви не зможете його побачити." ,
2026-05-15 17:02:49 +08:00
},
teams : {
heading : "Команди" ,
description : "Організуйте учасників у команди для зручного керування." ,
createButton : "Створити нову команду" ,
newTeamHeading : "Нова команда" ,
teamNamePlaceholder : "Назва команди" ,
createSubmitButton : "Створити" ,
cancelButton : "Скасувати" ,
createSuccess : "Команду успішно створено" ,
createFailed : "Не вдалося створити команду" ,
duplicateTeamError : "Команда з такою назвою вже існує" ,
renameSuccess : "Команду перейменовано" ,
renameFailed : "Не вдалося перейменувати команду" ,
deleteConfirm : 'Видалити команду "{name}"? Учасники будуть відкріплені.' ,
deleteSuccess : 'Команду "{name}" видалено' ,
deleteFailed : "Не вдалося видалити команду" ,
cannotDeleteDefault : "Неможливо видалити команду за замовчуванням або команду з учасниками" ,
tableHeaderTeamName : "Назва команди" ,
tableHeaderMembers : "Учасники" ,
emptyState : "Команд не знайдено." ,
renameSaveButton : "Зберегти" ,
renameCancelButton : "Скасувати" ,
renameAction : "Перейменувати" ,
deleteAction : "Видалити" ,
totalMembers : "Усього учасників" ,
nameRequired : "Назва команди обов'язкова" ,
nameTooLong : "Назва команди не може перевищувати 50 символів" ,
duplicateName : "Команда з такою назвою вже існує" ,
2026-06-13 21:20:12 +08:00
teamStorageQuota : "Storage Quota (MB)" ,
teamStorageQuotaDesc : "Maximum storage for this team in MB. Leave empty for no limit." ,
teamRetentionHours : "Retention (hours)" ,
teamRetentionHoursDesc :
"Processing file retention for this team. Leave empty to use global default." ,
quotaSaved : "Team settings saved" ,
2026-05-15 17:02:49 +08:00
},
roles : {
heading : "Ролі" ,
description : "Керування ролями та їхніми правами. Вбудовані ролі не можна змінювати." ,
createButton : "Створити власну роль" ,
newRoleHeading : "Нова роль" ,
roleNamePlaceholder : "Назва ролі" ,
descriptionPlaceholder : "Опис (необов'язково)" ,
permissionsLabel : "Права доступу" ,
createSubmitButton : "Створити" ,
cancelButton : "Скасувати" ,
createSuccess : "Роль успішно створено" ,
createFailed : "Не вдалося створити роль" ,
duplicateRoleError : "Роль з такою назвою вже існує" ,
editHeading : "Редагування ролі: {name}" ,
editSaveButton : "Зберегти" ,
editCancelButton : "Скасувати" ,
updateSuccess : "Роль оновлено" ,
updateFailed : "Не вдалося оновити роль" ,
deleteConfirm : 'Видалити роль "{name}"? {count} користувачу(ам) потрібне перепризначення.' ,
deleteConfirmSimple : 'Видалити роль "{name}"?' ,
deleteSuccess : 'Роль "{name}" видалено' ,
deleteFailed : "Не вдалося видалити роль" ,
emptyState : "Ролей не знайдено." ,
builtInBadge : "Вбудована" ,
userCountBadge : "{count} користувач(ів)" ,
editRoleTitle : "Редагувати роль" ,
deleteRoleTitle : "Видалити роль" ,
permGroup : {
tools : "Інструменти" ,
files : "Файли" ,
apiKeys : "API-ключі" ,
pipelines : "Pipeline" ,
settings : "Налаштування" ,
users : "Користувачі" ,
teams : "Команди" ,
system : "Система" ,
},
},
auditLog : {
heading : "Журнал аудиту" ,
allActionsFilter : "Усі дії" ,
emptyState : "Записів у журналі аудиту немає." ,
tableHeaderTime : "Час" ,
tableHeaderUser : "Користувач" ,
tableHeaderAction : "Дія" ,
tableHeaderTarget : "Об'єкт" ,
paginationInfo : "Сторінка {page} з {totalPages} ({total} записів)" ,
previousButton : "Попередня" ,
nextButton : "Наступна" ,
justNow : "щойно" ,
minutesAgo : "{mins} хв тому" ,
hoursAgo : "{hrs} год тому" ,
daysAgo : "{days} дн. тому" ,
},
2026-06-13 10:17:13 +08:00
usage : {
heading : "Usage" ,
description : "Local usage statistics from jobs and file storage." ,
periodLabel : "Period" ,
days7 : "7 days" ,
days30 : "30 days" ,
days90 : "90 days" ,
jobsPerDayHeading : "Jobs per day" ,
topToolsHeading : "Top tools" ,
perUserHeading : "Per-user volume" ,
durationsHeading : "Duration percentiles" ,
noData : "No data for this period." ,
dayColumn : "Day" ,
totalColumn : "Total" ,
completedColumn : "Completed" ,
failedColumn : "Failed" ,
toolColumn : "Tool" ,
runsColumn : "Runs" ,
userColumn : "User" ,
bytesInColumn : "Bytes in" ,
poolColumn : "Pool" ,
p50Column : "p50" ,
p95Column : "p95" ,
storageHeading : "Library storage" ,
storageFiles : "{count} files" ,
unknownUser : "(unknown)" ,
2026-06-13 21:20:12 +08:00
storageByTeam : "Storage by Team" ,
teamColumn : "Team" ,
storageColumn : "Storage" ,
usersColumn : "Users" ,
2026-06-13 10:17:13 +08:00
},
2026-05-15 17:02:49 +08:00
apiKeys : {
heading : "API-ключі" ,
description : "Керування API-ключами для програмного доступу до SnapOtter." ,
keyNamePlaceholder : "Назва ключа (необов'язково)" ,
generateButton : "Згенерувати API-ключ" ,
removeScopingLabel : "Прибрати обмеження прав" ,
restrictPermissionsLabel : "Обмежити права (необов'язково)" ,
expiresLabel : "Спливає:" ,
clearButton : "Очистити" ,
copyTitle : "Копіювати" ,
keyWarning : "Збережіть цей ключ у безпечному місці. Він більше не буде показаний." ,
existingKeysHeading : "Наявні ключі" ,
createdPrefix : "Створено {date}" ,
scopedPrefix : "Область:" ,
expiresPrefix : "Спливає {date}" ,
deleteKeyTitle : "Видалити ключ" ,
deleteConfirm :
"Видалити цей API-ключ? Усі інтеграції, що його використовують, перестануть працювати." ,
emptyState : "API-ключів поки немає. Згенеруйте один для початку." ,
},
tools : {
heading : "Інструменти" ,
description :
"Увімкнення та вимкнення окремих інструментів. Вимкнені інструменти приховані від усіх користувачів." ,
restartBanner : "Для застосування змін потрібен перезапуск." ,
searchPlaceholder : "Пошук інструментів..." ,
noSearchResults : "Інструменти не знайдено." ,
loadFailedError :
"Не вдалося завантажити налаштування інструментів. Збереження вимкнено для запобігання втраті даних." ,
saveButton : "Зберегти налаштування інструментів" ,
disabledCount : "Вимкнено {count} інструмент(ів)" ,
},
experimental : {
label : "Увімкнути експериментальні інструменти" ,
description :
"Показати інструменти, що перебувають у розробці. Вони можуть працювати нестабільно." ,
},
fileManagement : {
title : "Керування файлами" ,
maxAge : "Макс. час зберігання файлів (години)" ,
maxAgeDescription : "Як довго оброблені файли зберігаються до автоматичного очищення" ,
startupCleanup : "Очищення при запуску" ,
startupCleanupDescription : "Видаляти старі тимчасові файли при запуску сервера" ,
},
2026-06-13 16:39:22 +08:00
dataRetention : {
title : "Data Retention" ,
fileMaxAgeHours : "Processing file retention (hours)" ,
fileMaxAgeHoursDesc : "How long to keep uploaded and processed files. Default: 72 hours." ,
jobsRetentionDays : "Job record retention (days)" ,
jobsRetentionDaysDesc : "How long to keep job metadata. 0 = keep forever. Default: 30 days." ,
auditRetentionDays : "Audit log retention (days)" ,
auditRetentionDaysDesc :
"How long to keep audit log entries. 0 = keep forever. Default: forever." ,
},
2026-05-15 17:02:49 +08:00
analytics : {
heading : "Аналітика" ,
description : "Надсилання анонімних даних про використання для поліпшення SnapOtter." ,
privacyNote : "Ваші зображення ніколи не залишають Ваш комп'ютер." ,
disabledByAdmin : "Аналітику вимкнено адміністратором сервера." ,
enabledLabel : "Аналітику увімкнено" ,
disabledLabel : "Аналітику вимкнено" ,
learnMore : "Дізнатися більше" ,
},
aiFeatures : {
title : "AI Features" ,
description : "Manage AI model bundles for advanced image processing." ,
installAll : "Install All" ,
diskUsage : "Disk usage:" ,
installed : "Installed" ,
notInstalled : "Not installed" ,
queued : "Queued" ,
install : "Install" ,
repair : "Repair" ,
uninstall : "Uninstall" ,
installing : "Installing..." ,
2026-06-13 10:17:13 +08:00
importBundle : "Import Bundle" ,
importDescription : "Upload a .tar.gz bundle archive exported from another installation." ,
importButton : "Import from file" ,
importing : "Importing..." ,
importSuccess : "Bundle imported successfully." ,
importError : "Bundle import failed: {error}" ,
2026-05-15 17:02:49 +08:00
},
about : {
heading : "Про програму" ,
appName : "SnapOtter" ,
appDescription :
2026-06-13 10:18:49 +08:00
"Самостійно розміщуваний набір інструментів для обробки зображень з пріоритетом конфіденційності. 70+ інструменти. Зміна розміру, стиснення, конвертація, водяні знаки та автоматизація робочих процесів без надсилання даних у хмару." ,
2026-05-15 17:02:49 +08:00
versionLabel : "Версія:" ,
linksHeading : "Посилання" ,
githubLink : "Репозиторій GitHub" ,
docsLink : "Документація" ,
apiRefLink : "Довідник API (Swagger)" ,
2026-06-05 22:31:28 +08:00
licenseLabel : "License:" ,
2026-06-05 23:14:57 +08:00
licenseDescription :
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3)." ,
2026-05-15 17:02:49 +08:00
},
},
auth : {
login : "Вхід" ,
logout : "Вийти" ,
username : "Ім'я користувача" ,
password : "Пароль" ,
loginButton : "Увійти" ,
loggingIn : "Вхід..." ,
invalidCredentials : "Невірне ім'я користувача або пароль" ,
connectionError : "Помилка з'єднання" ,
signInWith : "Увійти через {provider}" ,
signInWithSso : "Увійти через SSO" ,
or : "або" ,
methodLocal : "Локальний" ,
methodOidc : "OIDC" ,
methodBoth : "Локальний + OIDC" ,
oidcAuthFailed : "Автентифікація не вдалася. Спробуйте знову." ,
oidcProviderUnreachable :
"Не вдалося зв'язатися з постачальником ідентифікації. Спробуйте пізніше." ,
oidcSessionExpired : "Сесія входу завершилась. Спробуйте знову." ,
oidcUserNotAuthorized :
"Ваш обліковий запис не має доступу до цього застосунку. Зверніться до адміністратора." ,
oidcUserLimitReached : "Досягнуто ліміту користувачів. Зверніться до адміністратора." ,
oidcGenericError : "Помилка автентифікації. Спробуйте знову." ,
2026-06-13 22:27:56 +08:00
samlAuthFailed : "SAML authentication failed. Please try again." ,
samlUserNotAuthorized :
"Your account is not authorized to access this application. Contact your administrator." ,
samlUserLimitReached : "User limit reached. Contact your administrator." ,
2026-06-13 22:32:16 +08:00
ssoEnforcedLocalRestricted : "Local login is restricted to authorized administrators." ,
2026-06-13 23:00:33 +08:00
mfaRequired : "Enter your authentication code" ,
mfaRecoveryHint : "You can also use a recovery code" ,
verify : "Verify" ,
verifying : "Verifying..." ,
mfaInvalidCode : "Invalid code. Please try again." ,
mfaEnrollmentRequired :
"Your organization requires multi-factor authentication. Please set up MFA in your account settings." ,
2026-06-13 22:27:56 +08:00
methodSaml : "SAML" ,
2026-05-15 17:02:49 +08:00
passwordManagedByProvider : "Керування паролем здійснюється Вашим постачальником ідентифікації." ,
enterUsername : "Введіть ім'я користувача" ,
enterPassword : "Введіть пароль" ,
heroTitle : "Ваші зображення. Залишаються Вашими." ,
heroSubtitle : "Усі інструменти для роботи із зображеннями." ,
rotatingPhrases : [
"Без реєстрації. Без облікових записів." ,
"Жодних завантажень у хмару. Ніколи." ,
"100% локальна обробка." ,
"Безкоштовно. Назавжди." ,
"Без обмежень. Без прихованих лімітів." ,
"Повністю працює офлайн." ,
"Пакетна обробка без обмежень." ,
2026-06-13 10:18:49 +08:00
"70+ інструменти для зображень." ,
2026-05-16 12:48:02 +08:00
"16 AI-моделей. На Вашому обладнанні." ,
2026-05-15 17:02:49 +08:00
"Блискавична швидкість. На базі Sharp." ,
"Готовий до ізольованих мереж." ,
"Один Docker-контейнер." ,
"Відкритий вихідний код. Завжди." ,
"Кожен піксель залишається на Вашому обладнанні." ,
"Ваш сервер. Ваші правила." ,
"Встановлення однією командою docker pull." ,
"Альтернатива хмарним сервісам." ,
"Зміна розміру, стиснення, конвертація. Локально." ,
"Безкоштовний редактор. Без водяних знаків." ,
"Пакетна обробка зображень. Без лімітів." ,
"Видалення фону офлайн." ,
"Заміна Canva для власного сервера." ,
"API-ключі не потрібні." ,
"Відповідність GDPR за замовчуванням." ,
"Працює без інтернету." ,
],
},
changePassword : {
title : "Зміна пароля" ,
description :
"Необхідно встановити новий пароль перед продовженням. Пароль має містити щонайменше 8 символів, включно з великими, малими літерами та цифрою." ,
usernameLabel : "Ім'я користувача" ,
currentPasswordLabel : "Поточний пароль" ,
currentPasswordPlaceholder : "Введіть поточний пароль" ,
newPasswordLabel : "Новий пароль" ,
generateButton : "Згенерувати надійний пароль" ,
newPasswordPlaceholder : "Щонайменше 8 символів" ,
confirmPasswordLabel : "Підтвердіть новий пароль" ,
confirmPasswordPlaceholder : "Повторіть новий пароль" ,
passwordsMismatch : "Паролі не збігаються" ,
failedError : "Не вдалося змінити пароль" ,
connectionError : "Помилка з'єднання" ,
changingButton : "Зміна..." ,
changeButton : "Змінити пароль" ,
sidebarTitle : "Майже готово" ,
sidebarDescription :
"Встановіть надійний пароль для захисту Вашого облікового запису, і можна починати." ,
},
automate : {
title : "Автоматизація" ,
invalidPipelineFile : "Недійсний файл Pipeline SnapOtter" ,
newerVersion : "Цей Pipeline створено у новішій версії SnapOtter" ,
missingName : "У файлі Pipeline відсутня назва" ,
noSteps : "У файлі Pipeline немає кроків" ,
importFailed : "Імпорт не вдався" ,
couldNotRead : "Не вдалося прочитати файл Pipeline" ,
fileCount : "{count} файл" ,
fileCountPlural : "{count} файлів" ,
importFromLibrary : "Імпорт із бібліотеки" ,
addButton : "+ Додати" ,
libraryButton : "Бібліотека" ,
clearButton : "Очистити" ,
processingFailed : "Обробка цього файлу не вдалася" ,
processingMultiple : "Обробка {count} файлів..." ,
processingPipeline : "Виконання Pipeline..." ,
processButton : "Обробити" ,
processButtonMultiple : "Обробити ({count})" ,
processAllButton : "Обробити все ({count})" ,
addTool : "Додати інструмент" ,
toolPalette : "Палітра інструментів" ,
clickToAdd : "Натисніть для додавання до Pipeline" ,
savedLabel : "Збережені" ,
importButton : "Імпорт" ,
noSavedPipelines : "Немає збережених Pipeline" ,
stepCount : "({count} крок)" ,
stepCountPlural : "({count} кроків)" ,
exportPipeline : "Експортувати Pipeline" ,
deletePipeline : "Видалити Pipeline" ,
moreCount : "+{count} ще" ,
pipelineBuilder : "Конструктор Pipeline" ,
addToolsPrompt : "Додайте інструменти з палітри для початку" ,
stepsConfigured : "Налаштовано {count} крок" ,
stepsConfiguredPlural : "Налаштовано {count} кроків" ,
noFilesLoaded : "Файли не завантажено" ,
downloadZip : "Завантажити ZIP" ,
saveButton : "Зберегти" ,
pipelineNamePlaceholder : "Назва Pipeline" ,
descriptionPlaceholder : "Опис" ,
savingIndicator : "..." ,
cancelButton : "Скасувати" ,
preview : "Попередній перегляд" ,
previousImage : "Попереднє зображення" ,
nextImage : "Наступне зображення" ,
imageCounter : "{current} / {total}" ,
imageArea : "Область зображення" ,
templateSocialMedia : "Готово для соцмереж" ,
templatePrivacyClean : "Очищення конфіденційності" ,
templateWebOptimization : "Веб-оптимізація" ,
templateProfilePicture : "Фото профілю" ,
templateWatermarkBatch : "Пакетні водяні знаки" ,
createNew : "Створити нову автоматизацію" ,
savedAutomations : "Збережені автоматизації" ,
templates : "Шаблони" ,
addStep : "Додати крок" ,
removeStep : "Видалити" ,
moveUp : "Перемістити вгору" ,
moveDown : "Перемістити вниз" ,
savePipeline : "Зберегти Pipeline" ,
runPipeline : "Обробити" ,
pipelineName : "Назва Pipeline" ,
pipelineDescription : "Опис (необов'язково)" ,
noStepsPrompt : "Додайте кроки для побудови автоматизації" ,
2026-06-06 20:47:08 +08:00
noStepsHeading : "No steps yet" ,
2026-06-05 22:31:28 +08:00
searchToolsPlaceholder : "Search tools..." ,
2026-06-06 20:47:08 +08:00
step : "Крок" ,
2026-05-15 17:02:49 +08:00
},
nav : {
tools : "Інструменти" ,
reader : "Рідер" ,
automate : "Автоматизація" ,
editor : "Редактор" ,
files : "Файли" ,
help : "Довідка" ,
settings : "Налаштування" ,
grid : "Сітка" ,
},
files : {
2026-06-05 22:31:28 +08:00
myFiles : "My Files" ,
2026-06-05 23:14:57 +08:00
recentTab : "Recent" ,
uploadTab : "Upload Files" ,
fileDetailsAriaLabel : "File Details" ,
fileDetailsHeading : "File Details" ,
2026-06-05 22:31:28 +08:00
searchPlaceholder : "Search files..." ,
selectedCount : "{count} selected" ,
fileCount : "{count} files" ,
fileCountSingular : "{count} file" ,
noFilesFound : "No files found" ,
selectFilePrompt : "Select a file to view details" ,
openFile : "Open File" ,
openInPipeline : "Open in Pipeline" ,
name : "Name" ,
format : "Format" ,
size : "Size" ,
dimensions : "Dimensions" ,
version : "Version" ,
toolsUsed : "Tools Used" ,
none : "None" ,
delete : "Delete" ,
pipeline : "Pipeline" ,
download : "Download" ,
2026-05-15 17:02:49 +08:00
},
dropzone : {
unsupportedFileType : "Цей тип файлу не підтримується цим інструментом" ,
urlFetchFailed : "Не вдалося завантажити зображення за URL" ,
ariaLabel : "Зона перетягування файлів" ,
dropPrompt : "Перетягніть зображення сюди" ,
browseOrPaste : "натисніть будь-де для вибору або вставте з буфера обміну" ,
uploadButton : "Завантажити" ,
defaultFormats : "PNG, JPG, WebP, HEIC, RAW, PSD та 65+ форматів" ,
orSeparator : "або" ,
urlPlaceholder : "Вставте URL зображення..." ,
urlLoadingIndicator : "..." ,
addUrlButton : "Додати" ,
importMultipleUrls : "Імпорт кількох URL..." ,
filesSelected : "Обрано файлів: {count}" ,
},
reviewPanel : {
processedResultAlt : "Результат обробки" ,
sizeLabel : "Розмір: {size}" ,
typeLabel : "Тип: {type}" ,
processedLabel : "Оброблено: {time}" ,
undoButton : "Скасувати" ,
downloadButton : "Завантажити" ,
openInEditor : "Відкрити у редакторі" ,
reviewHeading : "Огляд" ,
continueEditing : "Продовжити редагування" ,
},
features : {
notEnabledTitle : "Функція не активована" ,
notEnabledDescription :
"Ця функція не активована. Попросіть адміністратора увімкнути її у Налаштуваннях." ,
requiresDownload : "Для цієї функції потрібне додаткове завантаження (~{size})" ,
retryButton : "Повторити" ,
queued : "У черзі на встановлення..." ,
enableButton : "Увімкнути {name}" ,
2026-06-09 23:09:34 +08:00
repairRequired : "Repair Required" ,
repairDescription : "Some model files are missing or corrupted. Repair will re-download them." ,
repairButton : "Repair {name}" ,
2026-05-15 17:02:49 +08:00
lessThanMinute : "Залишилось менше хвилини" ,
oneMinuteLeft : "Залишилась ~1 хвилина" ,
minutesLeft : "Залишилось ~{mins} хвилин" ,
progressMessages : [
"Майже готово... мабуть..." ,
"Гарні речі потребують часу..." ,
"Все одно швидше, ніж чекати, поки висохне фарба..." ,
"Ваше терпіння гідне захоплення..." ,
"Працюємо старанніше, ніж здається..." ,
"Зараз найцікавіше, повірте..." ,
"За лаштунками відбуваються важливі справи..." ,
"Якщо Ви це читаєте, все працює..." ,
"Готуємо щось неймовірне..." ,
"Варте кожної секунди, чесне слово..." ,
"Інтрига наростає..." ,
"Навчаємо Ваш комп'ютер нових фокусів..." ,
"Налаштовуємо Ваші суперздібності..." ,
"Ваші фотографії потім подякують..." ,
"Завантаження... але зі стилем..." ,
"Саме час для чашки кави..." ,
"Київ теж не за один день збудували..." ,
"Тихо... геній працює..." ,
"Ваші фото вже заздрять тому, що буде..." ,
"Збираємо команду мрії..." ,
"Розпаковуємо чудовість..." ,
"Майже закінчили думати про початок... жартуємо..." ,
"Поворот сюжету: тут справді щось відбувається..." ,
"Прогріваємо творчі двигуни..." ,
"Уява завантажується..." ,
"Це не заставка, обіцяємо..." ,
"Великому мистецтву потрібен час на встановлення..." ,
'Ваше майбутнє "я" подякує Вам...' ,
"Завантажуємо дуже розумні файли..." ,
"Зачекайте, найкраще ще попереду..." ,
],
},
help : {
heading : "Довідка" ,
gettingStarted : {
heading : "Початок роботи" ,
description :
"Оберіть інструмент із бічної панелі або скористайтесь пошуком. Завантажте зображення, перетягнувши його на сторінку або натиснувши область завантаження. Налаштуйте параметри та завантажте результат." ,
},
keyboardShortcuts : {
heading : "Гарячі клавіші" ,
focusSearchBar : "Фокус на рядку пошуку" ,
goToTools : "Перейти до інструментів" ,
toggleTheme : "Перемкнути тему" ,
goToResize : "Перейти до зміни розміру" ,
goToCrop : "Перейти до обрізки" ,
goToCompress : "Перейти до стиснення" ,
goToConvert : "Перейти до конвертації" ,
goToRemoveBackground : "Перейти до видалення фону" ,
goToWatermarkText : "Перейти до текстового водяного знаку" ,
goToStripMetadata : "Перейти до видалення метаданих" ,
goToImageInfo : "Перейти до інформації про зображення" ,
},
resources : {
heading : "Ресурси" ,
githubLink : "Репозиторій GitHub" ,
reportIssueLink : "Повідомити про проблему" ,
docsLink : "Документація" ,
apiRefLink : "Довідник API (Swagger)" ,
},
versionLabel : "SnapOtter v{version}" ,
},
errors : {
generic : "Сталася помилка" ,
offline : "Ви не в мережі" ,
reconnecting : "Перепід'єднання до сервера..." ,
connected : "Під'єднано" ,
processingFailed : "Обробка цього файлу не вдалася" ,
timeout : "Час очікування вичерпано. Сервер може бути перевантажений. Спробуйте знову." ,
networkError : "Помилка мережі. Перевірте з'єднання." ,
invalidCredentials : "Невірне ім'я користувача або пароль" ,
connectionError : "Помилка з'єднання" ,
},
analytics : {
consentTitle : "Допоможіть поліпшити SnapOtter" ,
consentDescription :
"Анонімна статистика використання допомагає нам виправляти помилки та створювати потрібні Вам інструменти. Ваші зображення та файли залишаються на Вашому комп'ютері." ,
consentChangeable : "Ви можете вимкнути це будь-коли у Налаштуваннях." ,
acceptButton : "Звісно, добре" ,
declineButton : "Не зараз" ,
settingsTitle : "Аналітика" ,
settingsDescription : "Надсилання анонімних даних про використання для поліпшення SnapOtter." ,
settingsPrivacy : "Ваші зображення ніколи не залишають Ваш комп'ютер." ,
settingsDisabledByAdmin : "Аналітику вимкнено адміністратором сервера." ,
learnMore : "Дізнатися більше" ,
},
sidebar : {
tools : "Інструменти" ,
grid : "Сітка" ,
automate : "Автоматизація" ,
editor : "Редактор" ,
files : "Файли" ,
help : "Довідка" ,
settings : "Налаштування" ,
},
toolCard : {
addToFavourites : "Додати до обраного" ,
},
appLayout : {
mobileNavTools : "Інструменти" ,
mobileNavAutomate : "Автоматизація" ,
mobileNavEditor : "Редактор" ,
mobileNavFiles : "Файли" ,
mobileNavSettings : "Налаштування" ,
},
2026-06-07 21:48:08 +08:00
a11y : {
skipToContent : "Skip to main content" ,
openSidebar : "Open sidebar" ,
closeSidebar : "Close sidebar" ,
closeSettings : "Close settings" ,
closeHelp : "Close help" ,
closeDialog : "Close dialog" ,
zoomIn : "Zoom in" ,
zoomOut : "Zoom out" ,
fitToView : "Fit to view" ,
actualSize : "Actual size" ,
previousImage : "Previous image" ,
nextImage : "Next image" ,
imageArea : "Image area" ,
imageViewer : "Image viewer" ,
fileDropZone : "File drop zone" ,
imageDropZone : "Image drop zone" ,
beforeAfterSlider : "Before/after comparison slider" ,
imageControls : "Image controls" ,
zoomControls : "Zoom controls" ,
dragToReorder : "Drag to reorder" ,
whiteBackground : "White background" ,
blackBackground : "Black background" ,
expandPanel : "Expand panel" ,
collapsePanel : "Collapse panel" ,
swapDimensions : "Swap dimensions" ,
applyCrop : "Apply crop" ,
cancelCrop : "Cancel crop" ,
fontFamily : "Font family" ,
textColor : "Text color" ,
flipHorizontal : "Flip horizontal" ,
flipVertical : "Flip vertical" ,
hexColorValue : "Hex color value" ,
backgroundColor : "Background color" ,
foregroundColor : "Foreground color" ,
swapColors : "Swap foreground and background colors" ,
resetColors : "Reset to default black and white" ,
foregroundHex : "Foreground color hex value" ,
undo : "Undo" ,
redo : "Redo" ,
layers : "Layers" ,
addLayer : "Add layer" ,
deleteLayer : "Delete layer" ,
cancelOperation : "Cancel operation" ,
fill : "Fill" ,
fileDetails : "File details" ,
language : "Language" ,
selected : "Selected" ,
deleteKey : "Delete key" ,
editRole : "Edit role" ,
deleteRole : "Delete role" ,
notInstalled : "Not installed" ,
queued : "Queued for install" ,
installing : "Installing" ,
imageNOfTotal : "Image {n} of {total}" ,
processingComplete : "Image processed successfully" ,
processingFailed : "Processing failed" ,
settingsDialog : "Settings" ,
helpDialog : "Help" ,
navigationMenu : "Navigation" ,
},
2026-05-15 17:02:49 +08:00
} as const ;