mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
Exhaustive QA sweep of all 157 tools. Fixes: CSP blob media, csv-excel ExcelJS interop, ocr-pdf segfault, chart-maker upload, non-PDF doc preview, RAW decode, merge-tool multi-file path, html-to-image chromium, ogv/wma/amr/ac3 preview fallbacks, meme/gif/stabilize codecs, nav+home a11y. Plus orphan-format and test-debt cleanup, the AI bundle build script, and a reusable Playwright QA harness under tests/qa/.
3472 lines
147 KiB
TypeScript
3472 lines
147 KiB
TypeScript
import type { TranslationKeys } from "./en.js";
|
||
|
||
export const uk: TranslationKeys = {
|
||
common: {
|
||
upload: "Завантажити з комп'ютера",
|
||
process: "Обробити",
|
||
download: "Завантажити",
|
||
cancel: "Скасувати",
|
||
save: "Зберегти",
|
||
delete: "Видалити",
|
||
settings: "Налаштування",
|
||
search: "Пошук інструментів...",
|
||
dropFiles: "Перетягніть файли сюди або натисніть кнопку завантаження",
|
||
loading: "Завантаження...",
|
||
saving: "Saving...",
|
||
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: "Політика конфіденційності",
|
||
pageNotFound: "Page not found",
|
||
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
|
||
},
|
||
categories: {
|
||
essentials: "Основні",
|
||
adjustments: "Корекція",
|
||
enhance: "Enhance & AI",
|
||
watermark: "Водяний знак і накладання",
|
||
layout: "Компонування та композиція",
|
||
utilities: "Утиліти",
|
||
optimization: "Оптимізація",
|
||
format: "Формат і конвертація",
|
||
"video-edit": "Video",
|
||
"video-convert": "Convert",
|
||
"video-effects": "Effects & Compose",
|
||
"video-subtitles": "Subtitles",
|
||
"video-metadata": "Metadata",
|
||
"audio-edit": "Edit",
|
||
"audio-convert": "Convert",
|
||
"audio-effects": "Effects & Compose",
|
||
"audio-metadata": "Metadata",
|
||
"pdf-organize": "Organize",
|
||
"pdf-edit": "Edit & Annotate",
|
||
"pdf-security": "Security",
|
||
"pdf-optimize": "Optimize",
|
||
"doc-convert": "Convert",
|
||
data: "Data Files",
|
||
archives: "Archives",
|
||
},
|
||
modalities: {
|
||
image: "Image",
|
||
video: "Video",
|
||
audio: "Audio",
|
||
documentsAndFiles: "Documents & Files",
|
||
},
|
||
tools: {
|
||
resize: {
|
||
name: "Зміна розміру",
|
||
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",
|
||
},
|
||
"ocr-pdf": {
|
||
name: "OCR PDF",
|
||
description: "Витягування тексту з PDF-документiв за допомогою OCR на базi ШI",
|
||
},
|
||
"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:
|
||
"Створення фотографій для паспорта, візи та посвідчень з автоматичним виявленням обличчя",
|
||
},
|
||
"transcribe-audio": {
|
||
name: "Транскрипцiя аудiо",
|
||
description: "Перетворення мовлення на текст за допомогою ШI",
|
||
},
|
||
"auto-subtitles": {
|
||
name: "Автоматичнi субтитри",
|
||
description: "Генерацiя файлiв субтитрiв з аудiодорiжок вiдео",
|
||
},
|
||
"transparency-fixer": {
|
||
name: "Виправлення прозорості PNG",
|
||
description: "Виправлення хибної прозорості PNG в один клік",
|
||
},
|
||
"background-replace": {
|
||
name: "Заміна фону",
|
||
description: "Замінити фон зображення суцільним кольором",
|
||
},
|
||
"blur-background": {
|
||
name: "Розмиття фону",
|
||
description: "Розмити фон зберігаючи різкість об'єкта",
|
||
},
|
||
"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-кодів з налаштовуваними кольорами, візерунками та логотипами",
|
||
},
|
||
"html-to-image": {
|
||
name: "HTML to Image",
|
||
description: "Capture webpages as high-quality images",
|
||
},
|
||
"barcode-read": {
|
||
name: "Сканер штрихкодів",
|
||
description: "Сканування зображень на наявність QR-кодів, штрихкодів та 2D-кодів",
|
||
},
|
||
collage: {
|
||
name: "Колаж / Сітка",
|
||
description: "Об'єднання зображень у красиві колажі-сітки з 25+ шаблонами",
|
||
},
|
||
stitch: {
|
||
name: "Об'єднання / Склейка",
|
||
description: "З'єднання зображень поруч, стопкою або сіткою",
|
||
},
|
||
split: {
|
||
name: "Розділення зображення",
|
||
description:
|
||
"Розділення зображень на плитки сітки або за розміром у пікселях з попереднім переглядом",
|
||
},
|
||
border: {
|
||
name: "Рамка та обрамлення",
|
||
description:
|
||
"Додавання рамок, відступів, заокруглених кутів та тіней з шаблонами в один клік",
|
||
},
|
||
beautify: {
|
||
name: "Прикрашання знімку екрана",
|
||
description:
|
||
"Додавання градієнтних фонів, рамок пристроїв, тіней та розмірів для соцмереж до знімків екрана",
|
||
},
|
||
"circle-crop": {
|
||
name: "Circle Crop",
|
||
description: "Crop image to a centered circle with transparent corners",
|
||
},
|
||
duotone: {
|
||
name: "Duotone",
|
||
description: "Apply a two-color duotone effect with custom shadow and highlight colors",
|
||
},
|
||
"image-pad": {
|
||
name: "Image Pad",
|
||
description: "Pad image to a target aspect ratio with a solid color background",
|
||
},
|
||
pixelate: {
|
||
name: "Pixelate",
|
||
description: "Apply a pixelation effect to the full image or a specific region",
|
||
},
|
||
vignette: {
|
||
name: "Vignette",
|
||
description: "Add a vignette effect with adjustable strength and color",
|
||
},
|
||
"gif-webp": {
|
||
name: "GIF/WebP Converter",
|
||
description: "Convert animated GIF to WebP and vice versa, preserving all frames",
|
||
},
|
||
histogram: {
|
||
name: "Histogram",
|
||
description: "Generate an RGB histogram chart from an image",
|
||
},
|
||
"lqip-placeholder": {
|
||
name: "LQIP Placeholder",
|
||
description: "Generate a tiny low-quality image placeholder with base64 data URI",
|
||
},
|
||
"sprite-sheet": {
|
||
name: "Sprite Sheet",
|
||
description: "Combine multiple images into a single sprite sheet grid",
|
||
},
|
||
"svg-to-raster": {
|
||
name: "SVG у растр",
|
||
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 та інше",
|
||
},
|
||
"barcode-generate": {
|
||
name: "Barcode Generator",
|
||
description: "Generate barcodes in Code 128, EAN-13, UPC-A, Code 39, ITF-14, and Data Matrix",
|
||
},
|
||
"chart-maker": {
|
||
name: "Chart Maker",
|
||
description: "Create bar, line, or pie charts from CSV or JSON data",
|
||
},
|
||
"convert-video": {
|
||
name: "Convert Video",
|
||
description: "Convert videos between MP4, MOV, and WebM",
|
||
},
|
||
"compress-video": {
|
||
name: "Compress Video",
|
||
description: "Shrink video file size with quality control",
|
||
},
|
||
"trim-video": {
|
||
name: "Trim Video",
|
||
description: "Cut a clip out of a video",
|
||
},
|
||
"mute-video": {
|
||
name: "Mute Video",
|
||
description: "Remove the audio track from a video",
|
||
},
|
||
"video-to-gif": {
|
||
name: "Video to GIF",
|
||
description: "Turn a video clip into an animated GIF",
|
||
},
|
||
"resize-video": {
|
||
name: "Resize Video",
|
||
description: "Scale a video to a new resolution or preset size",
|
||
},
|
||
"crop-video": {
|
||
name: "Crop Video",
|
||
description: "Crop a region out of a video",
|
||
},
|
||
"rotate-video": {
|
||
name: "Rotate Video",
|
||
description: "Rotate or flip a video",
|
||
},
|
||
"change-fps": {
|
||
name: "Change FPS",
|
||
description: "Change the frame rate of a video",
|
||
},
|
||
"video-color": {
|
||
name: "Video Color",
|
||
description: "Adjust brightness, contrast, saturation, and gamma",
|
||
},
|
||
"video-speed": {
|
||
name: "Video Speed",
|
||
description: "Speed up or slow down a video",
|
||
},
|
||
"reverse-video": {
|
||
name: "Reverse Video",
|
||
description: "Play a video clip backwards",
|
||
},
|
||
"video-loudnorm": {
|
||
name: "Normalize Audio",
|
||
description: "Normalize video audio volume to broadcast standard",
|
||
},
|
||
"aspect-pad": {
|
||
name: "Aspect Pad",
|
||
description: "Add solid-color bars to fit a target aspect ratio",
|
||
},
|
||
"blur-pad": {
|
||
name: "Blur Pad",
|
||
description: "Fill bars with a blurred copy of the video",
|
||
},
|
||
"watermark-video": {
|
||
name: "Watermark Video",
|
||
description: "Burn a text watermark onto video frames",
|
||
},
|
||
"stabilize-video": {
|
||
name: "Stabilize Video",
|
||
description: "Reduce camera shake with two-pass stabilization",
|
||
},
|
||
"gif-to-video": {
|
||
name: "GIF to Video",
|
||
description: "Convert an animated GIF into an MP4 or WebM video",
|
||
},
|
||
"video-to-webp": {
|
||
name: "Video to WebP",
|
||
description: "Convert a video clip into an animated WebP image",
|
||
},
|
||
"video-to-frames": {
|
||
name: "Video to Frames",
|
||
description: "Extract frames from a video as a ZIP of images",
|
||
},
|
||
"merge-videos": {
|
||
name: "Merge Videos",
|
||
description: "Join multiple video clips into one file",
|
||
},
|
||
"replace-audio": {
|
||
name: "Replace Audio",
|
||
description: "Swap the audio track of a video with another file",
|
||
},
|
||
"burn-subtitles": {
|
||
name: "Burn Subtitles",
|
||
description: "Permanently render subtitles onto video frames",
|
||
},
|
||
"embed-subtitles": {
|
||
name: "Embed Subtitles",
|
||
description: "Mux a subtitle track into the video container",
|
||
},
|
||
"extract-subtitles": {
|
||
name: "Extract Subtitles",
|
||
description: "Pull the subtitle track out of a video as an SRT file",
|
||
},
|
||
"images-to-video": {
|
||
name: "Images to Video",
|
||
description: "Turn a set of images into a slideshow video",
|
||
},
|
||
"video-metadata": {
|
||
name: "Clean Video Metadata",
|
||
description: "Strip metadata from a video and report what was found",
|
||
},
|
||
"convert-audio": {
|
||
name: "Convert Audio",
|
||
description: "Convert audio between MP3, WAV, OGG, and more",
|
||
},
|
||
"trim-audio": {
|
||
name: "Trim Audio",
|
||
description: "Cut a section out of an audio file",
|
||
},
|
||
"extract-audio": {
|
||
name: "Extract Audio",
|
||
description: "Pull the audio track out of a video",
|
||
},
|
||
"volume-adjust": {
|
||
name: "Volume Adjust",
|
||
description: "Increase or decrease audio volume by a fixed gain",
|
||
},
|
||
"normalize-audio": {
|
||
name: "Normalize Audio",
|
||
description: "Even out loudness to broadcast standard levels",
|
||
},
|
||
"fade-audio": {
|
||
name: "Fade Audio",
|
||
description: "Add fade-in and fade-out effects to audio",
|
||
},
|
||
"reverse-audio": {
|
||
name: "Reverse Audio",
|
||
description: "Play audio backwards",
|
||
},
|
||
"audio-speed": {
|
||
name: "Audio Speed",
|
||
description: "Speed up or slow down audio playback",
|
||
},
|
||
"pitch-shift": {
|
||
name: "Pitch Shift",
|
||
description: "Raise or lower pitch by semitones without changing speed",
|
||
},
|
||
"audio-channels": {
|
||
name: "Audio Channels",
|
||
description: "Convert between mono, stereo, or swap left and right channels",
|
||
},
|
||
"silence-removal": {
|
||
name: "Silence Removal",
|
||
description: "Strip silent sections from audio",
|
||
},
|
||
"noise-reduction": {
|
||
name: "Noise Reduction",
|
||
description: "Reduce background noise with FFT-based denoising",
|
||
},
|
||
"merge-audio": {
|
||
name: "Merge Audio",
|
||
description: "Combine multiple audio files into one",
|
||
},
|
||
"split-audio": {
|
||
name: "Split Audio",
|
||
description: "Split audio by time, equal parts, or silence detection",
|
||
},
|
||
"ringtone-maker": {
|
||
name: "Ringtone Maker",
|
||
description: "Create a ringtone clip from any audio file",
|
||
},
|
||
"waveform-image": {
|
||
name: "Waveform Image",
|
||
description: "Generate a waveform visualization as a PNG image",
|
||
},
|
||
"audio-metadata": {
|
||
name: "Audio Metadata",
|
||
description: "View, edit, or strip audio tags (ID3)",
|
||
},
|
||
"merge-pdf": {
|
||
name: "Merge PDFs",
|
||
description: "Combine multiple PDFs into one",
|
||
},
|
||
"split-pdf": {
|
||
name: "Split PDF",
|
||
description: "Extract pages or split into parts",
|
||
},
|
||
"compress-pdf": {
|
||
name: "Compress PDF",
|
||
description: "Shrink PDF file size",
|
||
},
|
||
"rotate-pdf": {
|
||
name: "Rotate PDF",
|
||
description: "Rotate pages in a PDF",
|
||
},
|
||
"convert-document": {
|
||
name: "Convert Document",
|
||
description: "Convert between Word, OpenDocument, RTF, and plain text formats",
|
||
},
|
||
"convert-presentation": {
|
||
name: "Convert Presentation",
|
||
description: "Convert between PowerPoint and OpenDocument presentation formats",
|
||
},
|
||
"convert-spreadsheet": {
|
||
name: "Convert Spreadsheet",
|
||
description:
|
||
"Convert between Excel, OpenDocument, and CSV formats. Multi-sheet workbooks export the first sheet to CSV.",
|
||
},
|
||
"excel-to-pdf": {
|
||
name: "Excel to PDF",
|
||
description: "Convert spreadsheets to PDF. Wide sheets may paginate across multiple pages.",
|
||
},
|
||
"word-to-pdf": {
|
||
name: "Word to PDF",
|
||
description: "Convert Word documents to PDF",
|
||
},
|
||
"extract-pages": {
|
||
name: "Extract Pages",
|
||
description: "Pull selected pages into a new PDF",
|
||
},
|
||
"remove-pages": {
|
||
name: "Remove Pages",
|
||
description: "Delete specific pages from a PDF",
|
||
},
|
||
"organize-pdf": {
|
||
name: "Organize PDF",
|
||
description: "Reorder pages with an explicit page order",
|
||
},
|
||
"protect-pdf": {
|
||
name: "Protect PDF",
|
||
description: "Add password protection (AES-256 encryption)",
|
||
},
|
||
"unlock-pdf": {
|
||
name: "Unlock PDF",
|
||
description: "Remove password protection from a PDF",
|
||
},
|
||
"repair-pdf": {
|
||
name: "Repair PDF",
|
||
description: "Attempt to repair a damaged or corrupted PDF",
|
||
},
|
||
"linearize-pdf": {
|
||
name: "Web-Optimize PDF",
|
||
description: "Linearize a PDF for fast web viewing",
|
||
},
|
||
"grayscale-pdf": {
|
||
name: "Grayscale PDF",
|
||
description: "Convert all colors to grayscale",
|
||
},
|
||
"pdfa-convert": {
|
||
name: "PDF/A Convert",
|
||
description: "Convert to archival PDF/A-2",
|
||
},
|
||
"crop-pdf": {
|
||
name: "Crop PDF",
|
||
description: "Crop all pages with a uniform margin",
|
||
},
|
||
"nup-pdf": {
|
||
name: "N-up PDF",
|
||
description: "Arrange multiple pages per sheet",
|
||
},
|
||
"booklet-pdf": {
|
||
name: "Booklet PDF",
|
||
description: "Arrange pages for folding into a booklet",
|
||
},
|
||
"watermark-pdf": {
|
||
name: "Watermark PDF",
|
||
description: "Add a text watermark to every page",
|
||
},
|
||
"pdf-page-numbers": {
|
||
name: "PDF Page Numbers",
|
||
description: "Add page numbers to every page",
|
||
},
|
||
"flatten-pdf": {
|
||
name: "Flatten PDF",
|
||
description: "Bake forms and annotations into page content",
|
||
},
|
||
"redact-pdf": {
|
||
name: "Redact PDF",
|
||
description: "Permanently remove text occurrences (verified true redaction)",
|
||
},
|
||
"pdf-to-text": {
|
||
name: "PDF to Text",
|
||
description: "Extract plain text from a PDF",
|
||
},
|
||
"pdf-to-word": {
|
||
name: "PDF to Word",
|
||
description: "Best for text-based PDFs; scanned pages need OCR",
|
||
},
|
||
"pdf-metadata": {
|
||
name: "PDF Metadata",
|
||
description: "Read and write PDF document metadata",
|
||
},
|
||
"powerpoint-to-pdf": {
|
||
name: "PowerPoint to PDF",
|
||
description: "Convert presentations to PDF",
|
||
},
|
||
"html-to-pdf": {
|
||
name: "HTML to PDF",
|
||
description: "Convert an HTML file to PDF. Remote resources are disabled for privacy.",
|
||
},
|
||
"markdown-to-docx": {
|
||
name: "Markdown to Word",
|
||
description: "Convert a Markdown file to a Word document (DOCX)",
|
||
},
|
||
"markdown-to-html": {
|
||
name: "Markdown to HTML",
|
||
description:
|
||
"Convert a Markdown file to a standalone HTML page. Remote images in the source are left as-is in the output.",
|
||
},
|
||
"markdown-to-pdf": {
|
||
name: "Markdown to PDF",
|
||
description:
|
||
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy.",
|
||
},
|
||
"epub-convert": {
|
||
name: "Convert EPUB",
|
||
description:
|
||
"Convert an EPUB to PDF, DOCX, HTML, or Markdown. Remote resources inside the book are not fetched.",
|
||
},
|
||
"to-epub": {
|
||
name: "Convert to EPUB",
|
||
description: "Convert Word, Markdown, HTML, or plain text files to EPUB",
|
||
},
|
||
"csv-excel": {
|
||
name: "CSV to Excel",
|
||
description: "Convert between CSV and Excel (XLSX), both directions",
|
||
},
|
||
"csv-json": {
|
||
name: "CSV to JSON",
|
||
description: "Convert between CSV and JSON, both directions",
|
||
},
|
||
"json-xml": {
|
||
name: "JSON to XML",
|
||
description: "Convert between JSON and XML, both directions",
|
||
},
|
||
"split-csv": {
|
||
name: "Split CSV",
|
||
description: "Split a CSV into smaller files by row count",
|
||
},
|
||
"merge-csvs": {
|
||
name: "Merge CSVs",
|
||
description: "Combine multiple CSV or TSV files with matching columns into one",
|
||
},
|
||
"yaml-json": {
|
||
name: "YAML / JSON",
|
||
description: "Convert between YAML and JSON, both directions",
|
||
},
|
||
"xml-to-csv": {
|
||
name: "XML to CSV",
|
||
description: "Extract repeating elements from XML into a CSV table",
|
||
},
|
||
"create-zip": {
|
||
name: "Create ZIP",
|
||
description: "Bundle multiple files into a single ZIP archive",
|
||
},
|
||
"extract-zip": {
|
||
name: "Extract ZIP",
|
||
description:
|
||
"Safely extract files from a ZIP archive with bomb protection. Single-file archives return the file directly.",
|
||
},
|
||
pipeline: {
|
||
name: "Конструктор Pipeline",
|
||
description: "Об'єднання кількох інструментів у робочий процес",
|
||
},
|
||
processing: { canceled: "Processing canceled" },
|
||
mediaPlayer: {
|
||
unsupported: "Your browser does not support this media format.",
|
||
},
|
||
documentView: {
|
||
loadFailed: "Failed to load document.",
|
||
previousPage: "Previous page",
|
||
nextPage: "Next page",
|
||
inputNotPreviewable: "Preview not available for this file type",
|
||
},
|
||
},
|
||
toolSettings: {
|
||
compress: {
|
||
compressionMode: "Режим стиснення",
|
||
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: "Непрозорість",
|
||
outputFormat: "Output Format",
|
||
edgeSmoothing: "Edge Smoothing",
|
||
edgeSmoothingOff: "Off",
|
||
edgeSmoothingLight: "Light",
|
||
edgeSmoothingMedium: "Medium",
|
||
edgeSmoothingStrong: "Strong",
|
||
colorDecontamination: "Color Decontamination",
|
||
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: "Витягування тексту",
|
||
},
|
||
"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",
|
||
},
|
||
"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: "Фото створено. Завантажте з лівої панелі.",
|
||
},
|
||
"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в",
|
||
},
|
||
"transparency-fixer": {
|
||
description: "Завантажте PNG з хибною прозорістю, і ми виправимо його в один клік.",
|
||
removeWatermark: "Видалити водяний знак",
|
||
removeWatermarkHelp: "Виявлення та видалення напівпрозорих водяних знаків",
|
||
requiresEraser: "Потрібен пакет видалення об'єктів",
|
||
advanced: "Розширені",
|
||
defringe: "Видалення ореолу",
|
||
outputFormat: "Формат виводу",
|
||
submit: "Виправити прозорість",
|
||
submitBatch: "Виправити прозорість ({count} файлів)",
|
||
progressLabel: "Виправлення прозорості",
|
||
},
|
||
"background-replace": {
|
||
color: "Колір фону",
|
||
submit: "Замінити фон",
|
||
submitBatch: "Замінити фон ({count} файлів)",
|
||
progressLabel: "Заміна фону",
|
||
},
|
||
"blur-background": {
|
||
intensity: "Інтенсивність розмиття",
|
||
submit: "Розмити фон",
|
||
submitBatch: "Розмити фон ({count} файлів)",
|
||
progressLabel: "Розмиття фону",
|
||
},
|
||
"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: "Додавання тексту",
|
||
download: "Download",
|
||
defaultText: "Your Text Here",
|
||
},
|
||
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",
|
||
readInfo: "Read Info",
|
||
reading: "Reading...",
|
||
channelStats: "Channel Stats",
|
||
yes: "Yes",
|
||
no: "No",
|
||
na: "N/A",
|
||
failedToRead: "Failed to read info",
|
||
},
|
||
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-код",
|
||
},
|
||
"html-to-image": {
|
||
modeUrl: "URL",
|
||
modeHtml: "HTML File",
|
||
htmlFile: "HTML File",
|
||
url: "URL",
|
||
urlPlaceholder: "https://snapotter.com",
|
||
format: "Output Format",
|
||
quality: "Quality",
|
||
devicePreset: "Device",
|
||
viewportWidth: "Width",
|
||
viewportHeight: "Height",
|
||
fullPage: "Full Page",
|
||
submit: "Capture",
|
||
download: "Download Screenshot",
|
||
capturing: "Capturing webpage...",
|
||
errorTimeout: "Page took too long to load",
|
||
errorBlocked: "This URL cannot be captured",
|
||
errorUnavailable: "Screenshot service is not available",
|
||
errorFailed: "Failed to capture the page",
|
||
placeholder: "Enter a URL and click Capture",
|
||
presets: {
|
||
desktop: "Desktop",
|
||
tablet: "Tablet",
|
||
mobile: "Mobile",
|
||
custom: "Custom",
|
||
},
|
||
},
|
||
"barcode-read": {
|
||
submit: "Сканувати штрихкоди",
|
||
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: "Прикрашання знімку екрана",
|
||
},
|
||
"circle-crop": {
|
||
submit: "Circle Crop",
|
||
submitBatch: "Circle Crop ({count} files)",
|
||
progressLabel: "Cropping to circle",
|
||
},
|
||
duotone: {
|
||
shadow: "Shadow Color",
|
||
highlight: "Highlight Color",
|
||
submit: "Apply Duotone",
|
||
submitBatch: "Apply Duotone ({count} files)",
|
||
progressLabel: "Applying duotone",
|
||
},
|
||
"image-pad": {
|
||
target: "Target Ratio",
|
||
color: "Background Color",
|
||
submit: "Pad Image",
|
||
submitBatch: "Pad Image ({count} files)",
|
||
progressLabel: "Padding image",
|
||
},
|
||
pixelate: {
|
||
blockSize: "Block Size",
|
||
submit: "Pixelate",
|
||
submitBatch: "Pixelate ({count} files)",
|
||
progressLabel: "Pixelating",
|
||
},
|
||
vignette: {
|
||
strength: "Strength",
|
||
color: "Vignette Color",
|
||
submit: "Apply Vignette",
|
||
submitBatch: "Apply Vignette ({count} files)",
|
||
progressLabel: "Applying vignette",
|
||
},
|
||
"gif-webp": {
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting animation",
|
||
},
|
||
histogram: {
|
||
submit: "Generate Histogram",
|
||
submitBatch: "Generate Histogram ({count} files)",
|
||
progressLabel: "Generating histogram",
|
||
},
|
||
"lqip-placeholder": {
|
||
width: "Width",
|
||
blur: "Blur",
|
||
submit: "Generate Placeholder",
|
||
submitBatch: "Generate Placeholder ({count} files)",
|
||
progressLabel: "Generating placeholder",
|
||
},
|
||
"sprite-sheet": {
|
||
columns: "Columns",
|
||
padding: "Padding",
|
||
background: "Background Color",
|
||
submit: "Create Sprite Sheet",
|
||
submitBatch: "Create Sprite Sheet",
|
||
progressLabel: "Creating sprite sheet",
|
||
},
|
||
"svg-to-raster": {
|
||
outputFormat: "Формат виводу",
|
||
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()",
|
||
},
|
||
"barcode-generate": {
|
||
text: "Text",
|
||
type: "Barcode Type",
|
||
scale: "Scale",
|
||
includeText: "Include Text",
|
||
submit: "Generate Barcode",
|
||
download: "Download Barcode",
|
||
},
|
||
"chart-maker": {
|
||
kind: "Chart Type",
|
||
title: "Title",
|
||
width: "Width",
|
||
height: "Height",
|
||
submit: "Create Chart",
|
||
submitBatch: "Create Chart ({count} files)",
|
||
progressLabel: "Creating chart",
|
||
},
|
||
"enhance-faces-standalone": {
|
||
model: "Модель",
|
||
fast: "Швидка",
|
||
balanced: "Збалансована",
|
||
best: "Найкраща",
|
||
},
|
||
"convert-video": {
|
||
format: "Output format",
|
||
quality: "Quality",
|
||
high: "High",
|
||
balanced: "Balanced",
|
||
small: "Smallest",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"compress-video": {
|
||
quality: "Compression",
|
||
light: "Light",
|
||
balanced: "Balanced",
|
||
strong: "Strong",
|
||
resolution: "Resolution",
|
||
original: "Original",
|
||
submit: "Compress",
|
||
submitBatch: "Compress ({count} files)",
|
||
progressLabel: "Compressing",
|
||
},
|
||
"trim-video": {
|
||
start: "Start (seconds)",
|
||
end: "End (seconds)",
|
||
precise: "Frame-accurate (re-encodes)",
|
||
submit: "Trim",
|
||
submitBatch: "Trim ({count} files)",
|
||
progressLabel: "Trimming",
|
||
},
|
||
"mute-video": {
|
||
submit: "Remove audio",
|
||
submitBatch: "Remove audio ({count} files)",
|
||
progressLabel: "Muting",
|
||
},
|
||
"video-to-gif": {
|
||
fps: "Frames per second",
|
||
width: "Width (px)",
|
||
start: "Start (seconds)",
|
||
duration: "Duration (seconds)",
|
||
submit: "Create GIF",
|
||
submitBatch: "Create GIFs ({count} files)",
|
||
progressLabel: "Creating GIF",
|
||
},
|
||
"resize-video": {
|
||
preset: "Preset",
|
||
width: "Width (px)",
|
||
height: "Height (px)",
|
||
hint: "Leave one dimension empty to keep aspect ratio",
|
||
submit: "Resize",
|
||
submitBatch: "Resize ({count} files)",
|
||
progressLabel: "Resizing",
|
||
},
|
||
"crop-video": {
|
||
width: "Width (px)",
|
||
height: "Height (px)",
|
||
x: "X offset",
|
||
y: "Y offset",
|
||
submit: "Crop",
|
||
submitBatch: "Crop ({count} files)",
|
||
progressLabel: "Cropping",
|
||
},
|
||
"rotate-video": {
|
||
transform: "Transform",
|
||
cw90: "Rotate 90 clockwise",
|
||
ccw90: "Rotate 90 counter-clockwise",
|
||
rotate180: "Rotate 180",
|
||
hflip: "Flip horizontal",
|
||
vflip: "Flip vertical",
|
||
submit: "Rotate",
|
||
submitBatch: "Rotate ({count} files)",
|
||
progressLabel: "Rotating",
|
||
},
|
||
"change-fps": {
|
||
fps: "Frames per second",
|
||
submit: "Change FPS",
|
||
submitBatch: "Change FPS ({count} files)",
|
||
progressLabel: "Changing FPS",
|
||
},
|
||
"video-color": {
|
||
brightness: "Brightness",
|
||
contrast: "Contrast",
|
||
saturation: "Saturation",
|
||
gamma: "Gamma",
|
||
submit: "Apply",
|
||
submitBatch: "Apply ({count} files)",
|
||
progressLabel: "Adjusting color",
|
||
},
|
||
"video-speed": {
|
||
factor: "Speed factor",
|
||
keepPitch: "Keep original pitch",
|
||
submit: "Change speed",
|
||
submitBatch: "Change speed ({count} files)",
|
||
progressLabel: "Changing speed",
|
||
},
|
||
"reverse-video": {
|
||
hint: "Limited to clips up to 5 minutes",
|
||
submit: "Reverse",
|
||
submitBatch: "Reverse ({count} files)",
|
||
progressLabel: "Reversing",
|
||
},
|
||
"video-loudnorm": {
|
||
hint: "Normalizes audio to EBU R128 broadcast standard",
|
||
submit: "Normalize",
|
||
submitBatch: "Normalize ({count} files)",
|
||
progressLabel: "Normalizing",
|
||
},
|
||
"aspect-pad": {
|
||
target: "Target ratio",
|
||
color: "Background color",
|
||
colorHint: "Hex color, e.g. #000000",
|
||
submit: "Pad",
|
||
submitBatch: "Pad ({count} files)",
|
||
progressLabel: "Padding",
|
||
},
|
||
"blur-pad": {
|
||
target: "Target ratio",
|
||
blur: "Blur strength",
|
||
submit: "Pad",
|
||
submitBatch: "Pad ({count} files)",
|
||
progressLabel: "Padding",
|
||
},
|
||
"watermark-video": {
|
||
text: "Watermark text",
|
||
position: "Position",
|
||
fontSize: "Font size",
|
||
opacity: "Opacity",
|
||
color: "Color",
|
||
colorHint: "Hex color, e.g. #ffffff",
|
||
submit: "Watermark",
|
||
submitBatch: "Watermark ({count} files)",
|
||
progressLabel: "Watermarking",
|
||
},
|
||
"stabilize-video": {
|
||
smoothing: "Smoothing",
|
||
hint: "Runs two passes and takes longer than most tools",
|
||
submit: "Stabilize",
|
||
submitBatch: "Stabilize ({count} files)",
|
||
progressLabel: "Stabilizing",
|
||
},
|
||
"gif-to-video": {
|
||
format: "Output format",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"video-to-webp": {
|
||
fps: "Frames per second",
|
||
width: "Width (px)",
|
||
quality: "Quality",
|
||
loop: "Loop animation",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"video-to-frames": {
|
||
mode: "Extraction mode",
|
||
modeAll: "All frames",
|
||
modeNth: "Every Nth frame",
|
||
modeTimestamps: "Specific timestamps",
|
||
n: "Take every Nth frame",
|
||
timestamps: "Timestamps (seconds)",
|
||
timestampsHint: "Comma-separated, e.g. 0.5, 2, 4.5",
|
||
format: "Image format",
|
||
submit: "Extract Frames",
|
||
submitBatch: "Extract Frames ({count} files)",
|
||
progressLabel: "Extracting frames",
|
||
},
|
||
"merge-videos": {
|
||
hint: "Files are joined in upload order",
|
||
submit: "Merge",
|
||
submitBatch: "Merge ({count} files)",
|
||
progressLabel: "Merging",
|
||
},
|
||
"replace-audio": {
|
||
hint: "Upload the video first, then the audio",
|
||
submit: "Replace Audio",
|
||
submitBatch: "Replace Audio ({count} files)",
|
||
progressLabel: "Replacing audio",
|
||
},
|
||
"burn-subtitles": {
|
||
fontSize: "Font size",
|
||
hint: "Upload a video and a subtitle file (.srt or .vtt)",
|
||
submit: "Burn Subtitles",
|
||
submitBatch: "Burn Subtitles ({count} files)",
|
||
progressLabel: "Burning subtitles",
|
||
},
|
||
"embed-subtitles": {
|
||
language: "Language code",
|
||
languageHint: "Three-letter ISO 639-2 code, e.g. eng, spa, fra",
|
||
submit: "Embed Subtitles",
|
||
submitBatch: "Embed Subtitles ({count} files)",
|
||
progressLabel: "Embedding subtitles",
|
||
},
|
||
"extract-subtitles": {
|
||
submit: "Extract Subtitles",
|
||
submitBatch: "Extract Subtitles ({count} files)",
|
||
progressLabel: "Extracting subtitles",
|
||
},
|
||
"images-to-video": {
|
||
secondsPerImage: "Seconds per image",
|
||
resolution: "Resolution",
|
||
fps: "Frames per second",
|
||
submit: "Create Video",
|
||
submitBatch: "Create Video ({count} files)",
|
||
progressLabel: "Creating slideshow",
|
||
},
|
||
"video-metadata": {
|
||
hint: "Metadata report appears in the result",
|
||
submit: "Strip Metadata",
|
||
submitBatch: "Strip Metadata ({count} files)",
|
||
progressLabel: "Stripping metadata",
|
||
},
|
||
"convert-audio": {
|
||
format: "Output format",
|
||
bitrate: "Bitrate (kbps)",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"trim-audio": {
|
||
start: "Start (seconds)",
|
||
end: "End (seconds)",
|
||
submit: "Trim",
|
||
submitBatch: "Trim ({count} files)",
|
||
progressLabel: "Trimming",
|
||
},
|
||
"extract-audio": {
|
||
format: "Output format",
|
||
submit: "Extract",
|
||
submitBatch: "Extract ({count} files)",
|
||
progressLabel: "Extracting",
|
||
},
|
||
"volume-adjust": {
|
||
"gain-db": "Gain (dB)",
|
||
submit: "Adjust Volume",
|
||
submitBatch: "Adjust Volume ({count} files)",
|
||
progressLabel: "Adjusting volume",
|
||
},
|
||
"normalize-audio": {
|
||
hint: "EBU R128 loudness normalization",
|
||
submit: "Normalize",
|
||
submitBatch: "Normalize ({count} files)",
|
||
progressLabel: "Normalizing",
|
||
},
|
||
"fade-audio": {
|
||
"fade-in-s": "Fade in (seconds)",
|
||
"fade-out-s": "Fade out (seconds)",
|
||
submit: "Apply Fade",
|
||
submitBatch: "Apply Fade ({count} files)",
|
||
progressLabel: "Applying fade",
|
||
},
|
||
"reverse-audio": {
|
||
submit: "Reverse",
|
||
submitBatch: "Reverse ({count} files)",
|
||
progressLabel: "Reversing",
|
||
},
|
||
"audio-speed": {
|
||
factor: "Speed factor",
|
||
submit: "Change Speed",
|
||
submitBatch: "Change Speed ({count} files)",
|
||
progressLabel: "Changing speed",
|
||
},
|
||
"pitch-shift": {
|
||
semitones: "Semitones",
|
||
hint: "0 semitones is not allowed",
|
||
submit: "Shift Pitch",
|
||
submitBatch: "Shift Pitch ({count} files)",
|
||
progressLabel: "Shifting pitch",
|
||
},
|
||
"audio-channels": {
|
||
mode: "Channel mode",
|
||
"stereo-to-mono": "Stereo to mono",
|
||
"mono-to-stereo": "Mono to stereo",
|
||
swap: "Swap left/right",
|
||
submit: "Convert Channels",
|
||
submitBatch: "Convert Channels ({count} files)",
|
||
progressLabel: "Converting channels",
|
||
},
|
||
"silence-removal": {
|
||
"threshold-db": "Silence threshold (dB)",
|
||
"min-silence-s": "Minimum silence duration (seconds)",
|
||
submit: "Remove Silence",
|
||
submitBatch: "Remove Silence ({count} files)",
|
||
progressLabel: "Removing silence",
|
||
},
|
||
"noise-reduction": {
|
||
strength: "Strength",
|
||
light: "Light",
|
||
medium: "Medium",
|
||
strong: "Strong",
|
||
submit: "Reduce Noise",
|
||
submitBatch: "Reduce Noise ({count} files)",
|
||
progressLabel: "Reducing noise",
|
||
},
|
||
"merge-audio": {
|
||
format: "Output format",
|
||
mp3: "MP3",
|
||
wav: "WAV",
|
||
flac: "FLAC",
|
||
m4a: "M4A",
|
||
"order-hint": "Files will be joined in upload order",
|
||
submit: "Merge Audio",
|
||
submitBatch: "Merge Audio ({count} files)",
|
||
progressLabel: "Merging audio",
|
||
},
|
||
"split-audio": {
|
||
mode: "Split mode",
|
||
time: "By time",
|
||
parts: "Equal parts",
|
||
silence: "By silence",
|
||
"segment-s": "Segment length (seconds)",
|
||
"num-parts": "Number of parts",
|
||
"threshold-db": "Silence threshold (dB)",
|
||
"min-silence-s": "Minimum silence duration (seconds)",
|
||
submit: "Split Audio",
|
||
submitBatch: "Split Audio ({count} files)",
|
||
progressLabel: "Splitting audio",
|
||
},
|
||
"ringtone-maker": {
|
||
"start-s": "Start time (seconds)",
|
||
"duration-s": "Duration (seconds)",
|
||
"max-hint": "Maximum 30 seconds",
|
||
submit: "Create Ringtone",
|
||
submitBatch: "Create Ringtone ({count} files)",
|
||
progressLabel: "Creating ringtone",
|
||
},
|
||
"waveform-image": {
|
||
width: "Width (px)",
|
||
height: "Height (px)",
|
||
color: "Waveform color",
|
||
submit: "Generate Waveform",
|
||
submitBatch: "Generate Waveform ({count} files)",
|
||
progressLabel: "Generating waveform",
|
||
},
|
||
"audio-metadata": {
|
||
strip: "Strip all metadata",
|
||
title: "Title",
|
||
artist: "Artist",
|
||
album: "Album",
|
||
submit: "Apply Metadata",
|
||
submitBatch: "Apply Metadata ({count} files)",
|
||
progressLabel: "Applying metadata",
|
||
},
|
||
"merge-pdf": {
|
||
addFiles: "Add PDFs to merge",
|
||
needTwo: "At least two PDFs are required",
|
||
orderHint: "{count} PDFs will merge in this order",
|
||
submit: "Merge",
|
||
submitBatch: "Merge ({count} files)",
|
||
progressLabel: "Merging",
|
||
},
|
||
"split-pdf": {
|
||
mode: "Split mode",
|
||
range: "Page range",
|
||
rangeHint: "e.g. 1-3, 5, 7-z",
|
||
everyN: "Pages per part",
|
||
submit: "Split",
|
||
submitBatch: "Split ({count} files)",
|
||
progressLabel: "Splitting",
|
||
},
|
||
"compress-pdf": {
|
||
preset: "Quality preset",
|
||
screen: "Screen (smallest)",
|
||
ebook: "Ebook (balanced)",
|
||
printer: "Printer (best quality)",
|
||
submit: "Compress",
|
||
submitBatch: "Compress ({count} files)",
|
||
progressLabel: "Compressing",
|
||
},
|
||
"rotate-pdf": {
|
||
angle: "Rotation angle",
|
||
range: "Page range",
|
||
rangeHint: "e.g. 1-3, 5, 1-z (all pages)",
|
||
submit: "Rotate",
|
||
submitBatch: "Rotate ({count} files)",
|
||
progressLabel: "Rotating",
|
||
},
|
||
"convert-document": {
|
||
format: "Output format",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"convert-presentation": {
|
||
format: "Output format",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"convert-spreadsheet": {
|
||
format: "Output format",
|
||
hint: "Multi-sheet workbooks export the first sheet to CSV.",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"excel-to-pdf": {
|
||
submit: "Convert to PDF",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"powerpoint-to-pdf": {
|
||
submit: "Convert to PDF",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"word-to-pdf": {
|
||
submit: "Convert to PDF",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"extract-pages": {
|
||
range: "Page range",
|
||
rangeHint: "e.g. 1-3, 5, 7-z",
|
||
submit: "Extract",
|
||
submitBatch: "Extract ({count} files)",
|
||
progressLabel: "Extracting",
|
||
},
|
||
"remove-pages": {
|
||
pages: "Pages to remove",
|
||
pagesHint: "e.g. 2, 4-6, z (last page)",
|
||
submit: "Remove",
|
||
submitBatch: "Remove ({count} files)",
|
||
progressLabel: "Removing",
|
||
},
|
||
"organize-pdf": {
|
||
order: "Page order",
|
||
orderHint: "e.g. 3,1,2 or 1-z (identity)",
|
||
submit: "Reorder",
|
||
submitBatch: "Reorder ({count} files)",
|
||
progressLabel: "Reordering",
|
||
},
|
||
"protect-pdf": {
|
||
userPassword: "User password",
|
||
ownerPassword: "Owner password (optional)",
|
||
ownerPasswordHint: "Defaults to user password if empty",
|
||
submit: "Protect",
|
||
submitBatch: "Protect ({count} files)",
|
||
progressLabel: "Encrypting",
|
||
},
|
||
"unlock-pdf": {
|
||
password: "Password",
|
||
submit: "Unlock",
|
||
submitBatch: "Unlock ({count} files)",
|
||
progressLabel: "Decrypting",
|
||
},
|
||
"repair-pdf": {
|
||
submit: "Repair",
|
||
submitBatch: "Repair ({count} files)",
|
||
progressLabel: "Repairing",
|
||
},
|
||
"linearize-pdf": {
|
||
submit: "Optimize",
|
||
submitBatch: "Optimize ({count} files)",
|
||
progressLabel: "Linearizing",
|
||
},
|
||
"grayscale-pdf": {
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"pdfa-convert": {
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"crop-pdf": {
|
||
margin: "Margin (points)",
|
||
submit: "Crop",
|
||
submitBatch: "Crop ({count} files)",
|
||
progressLabel: "Cropping",
|
||
},
|
||
"nup-pdf": {
|
||
perSheet: "Pages per sheet",
|
||
submit: "Arrange",
|
||
submitBatch: "Arrange ({count} files)",
|
||
progressLabel: "Arranging",
|
||
},
|
||
"booklet-pdf": {
|
||
perSheet: "Pages per sheet",
|
||
submit: "Create Booklet",
|
||
submitBatch: "Create Booklet ({count} files)",
|
||
progressLabel: "Creating booklet",
|
||
},
|
||
"watermark-pdf": {
|
||
text: "Watermark text",
|
||
position: "Position",
|
||
fontSize: "Font size",
|
||
opacity: "Opacity",
|
||
rotation: "Rotation",
|
||
submit: "Watermark",
|
||
submitBatch: "Watermark ({count} files)",
|
||
progressLabel: "Watermarking",
|
||
},
|
||
"pdf-page-numbers": {
|
||
position: "Position",
|
||
fontSize: "Font size",
|
||
submit: "Add Numbers",
|
||
submitBatch: "Add Numbers ({count} files)",
|
||
progressLabel: "Numbering",
|
||
},
|
||
"flatten-pdf": {
|
||
submit: "Flatten",
|
||
submitBatch: "Flatten ({count} files)",
|
||
progressLabel: "Flattening",
|
||
},
|
||
"redact-pdf": {
|
||
terms: "Terms to redact",
|
||
termsHint: "One term per line (max 50)",
|
||
caseSensitive: "Case sensitive",
|
||
submit: "Redact",
|
||
submitBatch: "Redact ({count} files)",
|
||
progressLabel: "Redacting",
|
||
},
|
||
"pdf-to-text": {
|
||
submit: "Extract Text",
|
||
submitBatch: "Extract Text ({count} files)",
|
||
progressLabel: "Extracting",
|
||
},
|
||
"pdf-to-word": {
|
||
hint: "Best for text-based PDFs; scanned pages need OCR",
|
||
submit: "Convert to Word",
|
||
submitBatch: "Convert to Word ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"pdf-metadata": {
|
||
title: "Title",
|
||
author: "Author",
|
||
subject: "Subject",
|
||
keywords: "Keywords",
|
||
submit: "Set Metadata",
|
||
submitBatch: "Set Metadata ({count} files)",
|
||
progressLabel: "Setting metadata",
|
||
},
|
||
"html-to-pdf": {
|
||
hint: "Remote resources are disabled for privacy.",
|
||
submit: "Convert to PDF",
|
||
submitBatch: "Convert to PDF ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"markdown-to-docx": {
|
||
submit: "Convert to DOCX",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"markdown-to-html": {
|
||
hint: "Remote images in the source are left as-is in the output.",
|
||
submit: "Convert to HTML",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"markdown-to-pdf": {
|
||
hint: "Remote resources are disabled for privacy.",
|
||
submit: "Convert to PDF",
|
||
submitBatch: "Convert to PDF ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"epub-convert": {
|
||
format: "Output format",
|
||
hint: "Remote resources inside the book are not fetched.",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"to-epub": {
|
||
submit: "Convert to EPUB",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"csv-excel": {
|
||
sheet: "Worksheet number",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"csv-json": {
|
||
pretty: "Pretty print",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"json-xml": {
|
||
pretty: "Pretty print",
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"split-csv": {
|
||
rowsPerFile: "Rows per file",
|
||
keepHeader: "Keep header in each file",
|
||
submit: "Split",
|
||
submitBatch: "Split ({count} files)",
|
||
progressLabel: "Splitting",
|
||
},
|
||
"merge-csvs": {
|
||
submit: "Merge",
|
||
submitBatch: "Merge ({count} files)",
|
||
progressLabel: "Merging",
|
||
},
|
||
"yaml-json": {
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"xml-to-csv": {
|
||
submit: "Convert",
|
||
submitBatch: "Convert ({count} files)",
|
||
progressLabel: "Converting",
|
||
},
|
||
"create-zip": {
|
||
submit: "Create ZIP",
|
||
submitBatch: "Create ZIP ({count} files)",
|
||
progressLabel: "Zipping",
|
||
},
|
||
"extract-zip": {
|
||
submit: "Extract",
|
||
submitBatch: "Extract ({count} files)",
|
||
progressLabel: "Extracting",
|
||
},
|
||
},
|
||
urlImport: {
|
||
title: "Імпорт за 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: "Область зображення",
|
||
disabledByAdmin: "This tool has been disabled by your administrator",
|
||
browseOtherTools: "Browse other tools",
|
||
privacyNote: "Files are processed on your server and never leave your network",
|
||
applyAndDownload: "Застосувати та завантажити",
|
||
andMore: "and {count} more",
|
||
importFromFiles: "Import from Files",
|
||
saveToFiles: "Save to Files",
|
||
savedToFiles: "Saved to Files",
|
||
adjustSettings: "Adjust settings",
|
||
startOver: "Start over with a new file",
|
||
newFile: "New file",
|
||
previewUnavailable: "Preview will be available after processing",
|
||
generatePreview: "Generate Preview",
|
||
previewFailed: "Preview generation failed",
|
||
backToTools: "Back to Tools",
|
||
original: "Original",
|
||
processed: "Processed",
|
||
saved: "Saved",
|
||
noChange: "no change",
|
||
download: "Download",
|
||
settingsSaved: "Ваші налаштування збережено.",
|
||
tryAgain: "Спробувати знову",
|
||
tryDifferentFile: "Спробувати інший файл",
|
||
batchPartialSuccess: "{success} of {total} processed. {failed} failed.",
|
||
dataResultsHint: "Results shown above. Use the copy button in the results panel.",
|
||
downloadAsFile: "Download as file",
|
||
downloadAll: "Download All",
|
||
downloadFiles: "Download {count} files",
|
||
audioDecodeUnsupported: "This audio format cannot be previewed in the browser",
|
||
},
|
||
homePage: {
|
||
generatingPreview: "Генерація попереднього перегляду...",
|
||
loadingPreview: "Завантаження попереднього перегляду...",
|
||
changeFile: "Змінити файл",
|
||
quickActions: "Швидкі дії",
|
||
allTools: "Усі інструменти",
|
||
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",
|
||
heading: "SnapOtter Tools",
|
||
},
|
||
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: "Помилка декодування на сервері",
|
||
},
|
||
shapes: {
|
||
shape: "Shape",
|
||
fill: "Fill",
|
||
stroke: "Stroke",
|
||
strokeWidth: "Width",
|
||
cornerRadius: "Radius",
|
||
sides: "Sides",
|
||
points: "Points",
|
||
dashStyle: "Dash",
|
||
solid: "Solid",
|
||
dashed: "Dashed",
|
||
dotted: "Dotted",
|
||
none: "None",
|
||
opacity: "Opacity",
|
||
rectangle: "Rectangle",
|
||
ellipse: "Ellipse",
|
||
line: "Line",
|
||
arrow: "Arrow",
|
||
polygon: "Polygon",
|
||
star: "Star",
|
||
},
|
||
},
|
||
settings: {
|
||
heading: "Налаштування",
|
||
nav: {
|
||
general: "Загальні",
|
||
systemSettings: "Системні налаштування",
|
||
security: "Безпека",
|
||
people: "Користувачі",
|
||
teams: "Команди",
|
||
roles: "Ролі",
|
||
auditLog: "Журнал аудиту",
|
||
usage: "Usage",
|
||
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: "Тривалість сесії",
|
||
supportBundleButton: "Download Support Bundle",
|
||
supportBundleDescription:
|
||
"Download a diagnostic zip with redacted config, logs, and job data for troubleshooting.",
|
||
supportBundleFailed: "Failed to download support bundle.",
|
||
},
|
||
security: {
|
||
heading: "Безпека",
|
||
description: "Налаштування пароля та автентифікації.",
|
||
changePasswordHeading: "Зміна пароля",
|
||
currentPasswordPlaceholder: "Поточний пароль",
|
||
newPasswordPlaceholder: "Новий пароль",
|
||
confirmPasswordPlaceholder: "Підтвердіть новий пароль",
|
||
passwordsMismatch: "Паролі не збігаються",
|
||
passwordTooShort: "Пароль має містити щонайменше 4 символи",
|
||
changeSuccess: "Пароль успішно змінено",
|
||
changeFailed: "Не вдалося змінити пароль",
|
||
currentPasswordIncorrect: "Поточний пароль невірний",
|
||
changePasswordButton: "Змінити пароль",
|
||
loginAttemptLimitNote: "Ліміти спроб входу можна налаштувати в Системних налаштуваннях.",
|
||
adminHeading: "Admin Security Settings",
|
||
adminDescription: "Enterprise security policy settings. These apply to all users.",
|
||
sessionIdleTimeout: "Session Idle Timeout (minutes)",
|
||
sessionIdleTimeoutDesc: "Automatically log out idle sessions. 0 = disabled.",
|
||
maxSessionsPerUser: "Max Sessions Per User",
|
||
maxSessionsPerUserDesc: "Limit concurrent sessions per user. 0 = unlimited.",
|
||
mfaPolicy: "MFA Policy",
|
||
mfaPolicyDesc: "Require multi-factor authentication for users.",
|
||
mfaPolicyOptional: "Optional",
|
||
mfaPolicyAdminsOnly: "Required for admins",
|
||
mfaPolicyRequired: "Required for all users",
|
||
ssoEnforcement: "SSO Enforcement",
|
||
ssoEnforcementDesc: "Require SSO login for all non-break-glass users.",
|
||
ssoBreakGlassUsername: "Break Glass Admin Username",
|
||
ssoBreakGlassUsernameDesc:
|
||
"This admin can still log in with local credentials when SSO is enforced.",
|
||
passwordMinLength: "Minimum Password Length",
|
||
passwordMinLengthDesc: "Minimum number of characters required for passwords.",
|
||
passwordRequireUppercase: "Require Uppercase",
|
||
passwordRequireUppercaseDesc: "Require at least one uppercase letter.",
|
||
passwordRequireNumber: "Require Number",
|
||
passwordRequireNumberDesc: "Require at least one number.",
|
||
passwordRequireSpecial: "Require Special Character",
|
||
passwordRequireSpecialDesc: "Require at least one special character.",
|
||
passwordPolicyHeading: "Password Policy",
|
||
securitySettingsSaved: "Security settings saved",
|
||
securitySettingsFailed: "Failed to save security settings",
|
||
},
|
||
people: {
|
||
heading: "Користувачі",
|
||
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: "Зберегти",
|
||
copyPasswordButton: "Скопіювати пароль",
|
||
passwordCopied: "Скопійовано!",
|
||
copyPasswordWarning:
|
||
"Скопіюйте цей пароль зараз. Після створення користувача ви не зможете його побачити.",
|
||
},
|
||
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: "Команда з такою назвою вже існує",
|
||
teamStorageQuota: "Storage Quota (MB)",
|
||
teamStorageQuotaDesc: "Maximum storage for this team in MB. Leave empty for no limit.",
|
||
teamRetentionHours: "Retention (hours)",
|
||
teamRetentionHoursDesc:
|
||
"Processing file retention for this team. Leave empty to use global default.",
|
||
quotaSaved: "Team settings saved",
|
||
},
|
||
roles: {
|
||
heading: "Ролі",
|
||
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} дн. тому",
|
||
},
|
||
usage: {
|
||
heading: "Usage",
|
||
description: "Local usage statistics from jobs and file storage.",
|
||
periodLabel: "Period",
|
||
days7: "7 days",
|
||
days30: "30 days",
|
||
days90: "90 days",
|
||
jobsPerDayHeading: "Jobs per day",
|
||
topToolsHeading: "Top tools",
|
||
perUserHeading: "Per-user volume",
|
||
durationsHeading: "Duration percentiles",
|
||
noData: "No data for this period.",
|
||
dayColumn: "Day",
|
||
totalColumn: "Total",
|
||
completedColumn: "Completed",
|
||
failedColumn: "Failed",
|
||
toolColumn: "Tool",
|
||
runsColumn: "Runs",
|
||
userColumn: "User",
|
||
bytesInColumn: "Bytes in",
|
||
poolColumn: "Pool",
|
||
p50Column: "p50",
|
||
p95Column: "p95",
|
||
storageHeading: "Library storage",
|
||
storageFiles: "{count} files",
|
||
unknownUser: "(unknown)",
|
||
storageByTeam: "Storage by Team",
|
||
teamColumn: "Team",
|
||
storageColumn: "Storage",
|
||
usersColumn: "Users",
|
||
},
|
||
apiKeys: {
|
||
heading: "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: "Видаляти старі тимчасові файли при запуску сервера",
|
||
},
|
||
dataRetention: {
|
||
title: "Data Retention",
|
||
fileMaxAgeHours: "Processing file retention (hours)",
|
||
fileMaxAgeHoursDesc: "How long to keep uploaded and processed files. Default: 72 hours.",
|
||
jobsRetentionDays: "Job record retention (days)",
|
||
jobsRetentionDaysDesc: "How long to keep job metadata. 0 = keep forever. Default: 30 days.",
|
||
auditRetentionDays: "Audit log retention (days)",
|
||
auditRetentionDaysDesc:
|
||
"How long to keep audit log entries. 0 = keep forever. Default: forever.",
|
||
},
|
||
analytics: {
|
||
heading: "Аналітика",
|
||
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...",
|
||
importBundle: "Import Bundle",
|
||
importDescription: "Upload a .tar.gz bundle archive exported from another installation.",
|
||
importButton: "Import from file",
|
||
importing: "Importing...",
|
||
importSuccess: "Bundle imported successfully.",
|
||
importError: "Bundle import failed: {error}",
|
||
},
|
||
about: {
|
||
heading: "Про програму",
|
||
appName: "SnapOtter",
|
||
appDescription:
|
||
"Самостійно розміщуваний набір інструментів для обробки зображень з пріоритетом конфіденційності. 70+ інструменти. Зміна розміру, стиснення, конвертація, водяні знаки та автоматизація робочих процесів без надсилання даних у хмару.",
|
||
versionLabel: "Версія:",
|
||
linksHeading: "Посилання",
|
||
githubLink: "Репозиторій GitHub",
|
||
docsLink: "Документація",
|
||
apiRefLink: "Довідник API (Swagger)",
|
||
licenseLabel: "License:",
|
||
licenseDescription:
|
||
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).",
|
||
},
|
||
},
|
||
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: "Помилка автентифікації. Спробуйте знову.",
|
||
samlAuthFailed: "SAML authentication failed. Please try again.",
|
||
samlUserNotAuthorized:
|
||
"Your account is not authorized to access this application. Contact your administrator.",
|
||
samlUserLimitReached: "User limit reached. Contact your administrator.",
|
||
ssoEnforcedLocalRestricted: "Local login is restricted to authorized administrators.",
|
||
mfaRequired: "Enter your authentication code",
|
||
mfaRecoveryHint: "You can also use a recovery code",
|
||
verify: "Verify",
|
||
verifying: "Verifying...",
|
||
mfaInvalidCode: "Invalid code. Please try again.",
|
||
mfaEnrollmentRequired:
|
||
"Your organization requires multi-factor authentication. Please set up MFA in your account settings.",
|
||
methodSaml: "SAML",
|
||
passwordManagedByProvider: "Керування паролем здійснюється Вашим постачальником ідентифікації.",
|
||
enterUsername: "Введіть ім'я користувача",
|
||
enterPassword: "Введіть пароль",
|
||
heroTitle: "Ваші зображення. Залишаються Вашими.",
|
||
heroSubtitle: "Усі інструменти для роботи із зображеннями.",
|
||
rotatingPhrases: [
|
||
"Без реєстрації. Без облікових записів.",
|
||
"Жодних завантажень у хмару. Ніколи.",
|
||
"100% локальна обробка.",
|
||
"Безкоштовно. Назавжди.",
|
||
"Без обмежень. Без прихованих лімітів.",
|
||
"Повністю працює офлайн.",
|
||
"Пакетна обробка без обмежень.",
|
||
"70+ інструменти для зображень.",
|
||
"16 AI-моделей. На Вашому обладнанні.",
|
||
"Блискавична швидкість. На базі 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: "Додайте кроки для побудови автоматизації",
|
||
noStepsHeading: "No steps yet",
|
||
searchToolsPlaceholder: "Search tools...",
|
||
step: "Крок",
|
||
},
|
||
nav: {
|
||
tools: "Інструменти",
|
||
reader: "Рідер",
|
||
automate: "Автоматизація",
|
||
editor: "Редактор",
|
||
files: "Файли",
|
||
help: "Довідка",
|
||
settings: "Налаштування",
|
||
grid: "Сітка",
|
||
},
|
||
files: {
|
||
myFiles: "My Files",
|
||
recentTab: "Recent",
|
||
uploadTab: "Upload Files",
|
||
fileDetailsAriaLabel: "File Details",
|
||
fileDetailsHeading: "File Details",
|
||
searchPlaceholder: "Search files...",
|
||
selectedCount: "{count} selected",
|
||
fileCount: "{count} files",
|
||
fileCountSingular: "{count} file",
|
||
noFilesFound: "No files found",
|
||
selectFilePrompt: "Select a file to view details",
|
||
openFile: "Open File",
|
||
selectFile: "Select File",
|
||
openInPipeline: "Open in Pipeline",
|
||
dropFilesHere: "Drop files here",
|
||
orClickToSelect: "or click to select files",
|
||
name: "Name",
|
||
format: "Format",
|
||
size: "Size",
|
||
dimensions: "Dimensions",
|
||
version: "Version",
|
||
toolsUsed: "Tools Used",
|
||
none: "None",
|
||
delete: "Delete",
|
||
pipeline: "Pipeline",
|
||
download: "Download",
|
||
},
|
||
dropzone: {
|
||
unsupportedFileType: "Цей тип файлу не підтримується цим інструментом",
|
||
urlFetchFailed: "Не вдалося завантажити зображення за URL",
|
||
ariaLabel: "Зона перетягування файлів",
|
||
dropPrompt: "Перетягніть зображення сюди",
|
||
browseOrPaste: "натисніть будь-де для вибору або вставте з буфера обміну",
|
||
uploadButton: "Завантажити",
|
||
defaultFormats: "PNG, JPG, WebP, HEIC, RAW, PSD та 65+ форматів",
|
||
orSeparator: "або",
|
||
urlPlaceholder: "Вставте URL зображення...",
|
||
urlLoadingIndicator: "...",
|
||
addUrlButton: "Додати",
|
||
importMultipleUrls: "Імпорт кількох URL...",
|
||
filesSelected: "Обрано файлів: {count}",
|
||
dropToAdd: "Відпустіть, щоб додати файли",
|
||
dropToReplace: "Відпустіть, щоб замінити файл",
|
||
},
|
||
reviewPanel: {
|
||
processedResultAlt: "Результат обробки",
|
||
sizeLabel: "Розмір: {size}",
|
||
typeLabel: "Тип: {type}",
|
||
processedLabel: "Оброблено: {time}",
|
||
undoButton: "Скасувати",
|
||
downloadButton: "Завантажити",
|
||
openInEditor: "Відкрити у редакторі",
|
||
reviewHeading: "Огляд",
|
||
continueEditing: "Продовжити редагування",
|
||
},
|
||
features: {
|
||
notEnabledTitle: "Функція не активована",
|
||
notEnabledDescription:
|
||
"Ця функція не активована. Попросіть адміністратора увімкнути її у Налаштуваннях.",
|
||
requiresDownload: "Для цієї функції потрібне додаткове завантаження (~{size})",
|
||
retryButton: "Повторити",
|
||
queued: "У черзі на встановлення...",
|
||
enableButton: "Увімкнути {name}",
|
||
repairRequired: "Repair Required",
|
||
repairDescription: "Some model files are missing or corrupted. Repair will re-download them.",
|
||
repairButton: "Repair {name}",
|
||
lessThanMinute: "Залишилось менше хвилини",
|
||
oneMinuteLeft: "Залишилась ~1 хвилина",
|
||
minutesLeft: "Залишилось ~{mins} хвилин",
|
||
progressMessages: [
|
||
"Майже готово... мабуть...",
|
||
"Гарні речі потребують часу...",
|
||
"Все одно швидше, ніж чекати, поки висохне фарба...",
|
||
"Ваше терпіння гідне захоплення...",
|
||
"Працюємо старанніше, ніж здається...",
|
||
"Зараз найцікавіше, повірте...",
|
||
"За лаштунками відбуваються важливі справи...",
|
||
"Якщо Ви це читаєте, все працює...",
|
||
"Готуємо щось неймовірне...",
|
||
"Варте кожної секунди, чесне слово...",
|
||
"Інтрига наростає...",
|
||
"Навчаємо Ваш комп'ютер нових фокусів...",
|
||
"Налаштовуємо Ваші суперздібності...",
|
||
"Ваші фотографії потім подякують...",
|
||
"Завантаження... але зі стилем...",
|
||
"Саме час для чашки кави...",
|
||
"Київ теж не за один день збудували...",
|
||
"Тихо... геній працює...",
|
||
"Ваші фото вже заздрять тому, що буде...",
|
||
"Збираємо команду мрії...",
|
||
"Розпаковуємо чудовість...",
|
||
"Майже закінчили думати про початок... жартуємо...",
|
||
"Поворот сюжету: тут справді щось відбувається...",
|
||
"Прогріваємо творчі двигуни...",
|
||
"Уява завантажується...",
|
||
"Це не заставка, обіцяємо...",
|
||
"Великому мистецтву потрібен час на встановлення...",
|
||
'Ваше майбутнє "я" подякує Вам...',
|
||
"Завантажуємо дуже розумні файли...",
|
||
"Зачекайте, найкраще ще попереду...",
|
||
],
|
||
},
|
||
help: {
|
||
heading: "Довідка",
|
||
gettingStarted: {
|
||
heading: "Початок роботи",
|
||
description:
|
||
"Оберіть інструмент із бічної панелі або скористайтесь пошуком. Завантажте зображення, перетягнувши його на сторінку або натиснувши область завантаження. Налаштуйте параметри та завантажте результат.",
|
||
},
|
||
keyboardShortcuts: {
|
||
heading: "Гарячі клавіші",
|
||
focusSearchBar: "Фокус на рядку пошуку",
|
||
goToTools: "Перейти до інструментів",
|
||
toggleTheme: "Перемкнути тему",
|
||
goToResize: "Перейти до зміни розміру",
|
||
goToCrop: "Перейти до обрізки",
|
||
goToCompress: "Перейти до стиснення",
|
||
goToConvert: "Перейти до конвертації",
|
||
goToRemoveBackground: "Перейти до видалення фону",
|
||
goToWatermarkText: "Перейти до текстового водяного знаку",
|
||
goToStripMetadata: "Перейти до видалення метаданих",
|
||
goToImageInfo: "Перейти до інформації про зображення",
|
||
processFile: "Обробити файл",
|
||
downloadResult: "Завантажити результат",
|
||
},
|
||
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: "Налаштування",
|
||
},
|
||
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",
|
||
homeLink: "SnapOtter home",
|
||
},
|
||
} as const;
|