mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat: pipeline templates, analytics opt-out, 83 conversion presets, positioning + e2e modernization
Lands five integrated branches: pipeline templates (#355), analytics opt-out (#354), 83 conversion presets bringing the catalog to 240 tools (#356), self-hosted positioning (#353), and e2e modernization (#351). Integration fixes: aligned stale web analytics tests with the opt-out/allow-list model, closed 3 CodeQL incomplete-sanitization alerts in the i18n generator, resolved settings/index/docs/format-matrix conflicts, and corrected tool counts to 240.
This commit is contained in:
@@ -73,6 +73,340 @@ export const ru: TranslationKeys = {
|
||||
documentsAndFiles: "PDF и файлы",
|
||||
},
|
||||
tools: {
|
||||
// BEGIN conversion-presets (generated by scripts/generate-conversion-i18n.mjs)
|
||||
"jpg-to-png": {
|
||||
name: "JPG в PNG",
|
||||
description: "Конвертируйте JPG в PNG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"png-to-jpg": {
|
||||
name: "PNG в JPG",
|
||||
description: "Конвертируйте PNG в JPG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"jpg-to-webp": {
|
||||
name: "JPG в WebP",
|
||||
description: "Конвертируйте JPG в WebP онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"png-to-webp": {
|
||||
name: "PNG в WebP",
|
||||
description: "Конвертируйте PNG в WebP онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"webp-to-jpg": {
|
||||
name: "WebP в JPG",
|
||||
description: "Конвертируйте WebP в JPG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"webp-to-png": {
|
||||
name: "WebP в PNG",
|
||||
description: "Конвертируйте WebP в PNG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"jpg-to-avif": {
|
||||
name: "JPG в AVIF",
|
||||
description: "Конвертируйте JPG в AVIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"png-to-avif": {
|
||||
name: "PNG в AVIF",
|
||||
description: "Конвертируйте PNG в AVIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"webp-to-avif": {
|
||||
name: "WebP в AVIF",
|
||||
description: "Конвертируйте WebP в AVIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"heic-to-jpg": {
|
||||
name: "HEIC в JPG",
|
||||
description: "Конвертируйте HEIC в JPG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"heic-to-png": {
|
||||
name: "HEIC в PNG",
|
||||
description: "Конвертируйте HEIC в PNG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"heic-to-avif": {
|
||||
name: "HEIC в AVIF",
|
||||
description: "Конвертируйте HEIC в AVIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"jpg-to-gif": {
|
||||
name: "JPG в GIF",
|
||||
description: "Конвертируйте JPG в GIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"png-to-gif": {
|
||||
name: "PNG в GIF",
|
||||
description: "Конвертируйте PNG в GIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"gif-to-jpg": {
|
||||
name: "GIF в JPG",
|
||||
description: "Конвертируйте GIF в JPG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"gif-to-png": {
|
||||
name: "GIF в PNG",
|
||||
description: "Конвертируйте GIF в PNG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"webp-to-gif": {
|
||||
name: "WebP в GIF",
|
||||
description: "Конвертируйте WebP в GIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"jpg-to-tiff": {
|
||||
name: "JPG в TIFF",
|
||||
description: "Конвертируйте JPG в TIFF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"png-to-tiff": {
|
||||
name: "PNG в TIFF",
|
||||
description: "Конвертируйте PNG в TIFF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"tiff-to-jpg": {
|
||||
name: "TIFF в JPG",
|
||||
description: "Конвертируйте TIFF в JPG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"tiff-to-png": {
|
||||
name: "TIFF в PNG",
|
||||
description: "Конвертируйте TIFF в PNG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"psd-to-jpg": {
|
||||
name: "PSD в JPG",
|
||||
description: "Конвертируйте PSD в JPG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"psd-to-png": {
|
||||
name: "PSD в PNG",
|
||||
description: "Конвертируйте PSD в PNG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"png-to-eps": {
|
||||
name: "PNG в EPS",
|
||||
description: "Конвертируйте PNG в EPS онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"jpg-to-eps": {
|
||||
name: "JPG в EPS",
|
||||
description: "Конвертируйте JPG в EPS онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"eps-to-png": {
|
||||
name: "EPS в PNG",
|
||||
description: "Конвертируйте EPS в PNG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"eps-to-jpg": {
|
||||
name: "EPS в JPG",
|
||||
description: "Конвертируйте EPS в JPG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"png-to-svg": {
|
||||
name: "PNG в SVG",
|
||||
description: "Конвертируйте PNG в SVG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"jpg-to-svg": {
|
||||
name: "JPG в SVG",
|
||||
description: "Конвертируйте JPG в SVG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"tiff-to-svg": {
|
||||
name: "TIFF в SVG",
|
||||
description: "Конвертируйте TIFF в SVG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"psd-to-svg": {
|
||||
name: "PSD в SVG",
|
||||
description: "Конвертируйте PSD в SVG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"eps-to-svg": {
|
||||
name: "EPS в SVG",
|
||||
description: "Конвертируйте EPS в SVG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"svg-to-png": {
|
||||
name: "SVG в PNG",
|
||||
description: "Конвертируйте SVG в PNG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"svg-to-jpg": {
|
||||
name: "SVG в JPG",
|
||||
description: "Конвертируйте SVG в JPG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"jpg-to-pdf": {
|
||||
name: "JPG в PDF",
|
||||
description: "Конвертируйте JPG в PDF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"png-to-pdf": {
|
||||
name: "PNG в PDF",
|
||||
description: "Конвертируйте PNG в PDF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"heic-to-pdf": {
|
||||
name: "HEIC в PDF",
|
||||
description: "Конвертируйте HEIC в PDF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"tiff-to-pdf": {
|
||||
name: "TIFF в PDF",
|
||||
description: "Конвертируйте TIFF в PDF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"webp-to-pdf": {
|
||||
name: "WebP в PDF",
|
||||
description: "Конвертируйте WebP в PDF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"gif-to-pdf": {
|
||||
name: "GIF в PDF",
|
||||
description: "Конвертируйте GIF в PDF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"eps-to-pdf": {
|
||||
name: "EPS в PDF",
|
||||
description: "Конвертируйте EPS в PDF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"pdf-to-jpg": {
|
||||
name: "PDF в JPG",
|
||||
description: "Конвертируйте PDF в JPG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"pdf-to-png": {
|
||||
name: "PDF в PNG",
|
||||
description: "Конвертируйте PDF в PNG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"pdf-to-tiff": {
|
||||
name: "PDF в TIFF",
|
||||
description: "Конвертируйте PDF в TIFF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mov-to-mp4": {
|
||||
name: "MOV в MP4",
|
||||
description: "Конвертируйте MOV в MP4 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"webm-to-mp4": {
|
||||
name: "WEBM в MP4",
|
||||
description: "Конвертируйте WEBM в MP4 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mkv-to-mp4": {
|
||||
name: "MKV в MP4",
|
||||
description: "Конвертируйте MKV в MP4 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"avi-to-mp4": {
|
||||
name: "AVI в MP4",
|
||||
description: "Конвертируйте AVI в MP4 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mp4-to-mov": {
|
||||
name: "MP4 в MOV",
|
||||
description: "Конвертируйте MP4 в MOV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mp4-to-webm": {
|
||||
name: "MP4 в WEBM",
|
||||
description: "Конвертируйте MP4 в WEBM онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"webm-to-mov": {
|
||||
name: "WEBM в MOV",
|
||||
description: "Конвертируйте WEBM в MOV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mkv-to-mov": {
|
||||
name: "MKV в MOV",
|
||||
description: "Конвертируйте MKV в MOV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"avi-to-mov": {
|
||||
name: "AVI в MOV",
|
||||
description: "Конвертируйте AVI в MOV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mp4-to-avi": {
|
||||
name: "MP4 в AVI",
|
||||
description: "Конвертируйте MP4 в AVI онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mov-to-avi": {
|
||||
name: "MOV в AVI",
|
||||
description: "Конвертируйте MOV в AVI онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mkv-to-avi": {
|
||||
name: "MKV в AVI",
|
||||
description: "Конвертируйте MKV в AVI онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"avi-to-mkv": {
|
||||
name: "AVI в MKV",
|
||||
description: "Конвертируйте AVI в MKV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mp4-to-gif": {
|
||||
name: "MP4 в GIF",
|
||||
description: "Конвертируйте MP4 в GIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mov-to-gif": {
|
||||
name: "MOV в GIF",
|
||||
description: "Конвертируйте MOV в GIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mkv-to-gif": {
|
||||
name: "MKV в GIF",
|
||||
description: "Конвертируйте MKV в GIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"avi-to-gif": {
|
||||
name: "AVI в GIF",
|
||||
description: "Конвертируйте AVI в GIF онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"gif-to-mp4": {
|
||||
name: "GIF в MP4",
|
||||
description: "Конвертируйте GIF в MP4 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"gif-to-webm": {
|
||||
name: "GIF в WEBM",
|
||||
description: "Конвертируйте GIF в WEBM онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"gif-to-mov": {
|
||||
name: "GIF в MOV",
|
||||
description: "Конвертируйте GIF в MOV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mp4-to-mp3": {
|
||||
name: "MP4 в MP3",
|
||||
description: "Конвертируйте MP4 в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mov-to-mp3": {
|
||||
name: "MOV в MP3",
|
||||
description: "Конвертируйте MOV в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mkv-to-mp3": {
|
||||
name: "MKV в MP3",
|
||||
description: "Конвертируйте MKV в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"webm-to-mp3": {
|
||||
name: "WEBM в MP3",
|
||||
description: "Конвертируйте WEBM в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"avi-to-mp3": {
|
||||
name: "AVI в MP3",
|
||||
description: "Конвертируйте AVI в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mp4-to-wav": {
|
||||
name: "MP4 в WAV",
|
||||
description: "Конвертируйте MP4 в WAV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mov-to-wav": {
|
||||
name: "MOV в WAV",
|
||||
description: "Конвертируйте MOV в WAV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mp4-to-ogg": {
|
||||
name: "MP4 в OGG",
|
||||
description: "Конвертируйте MP4 в OGG онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"m4a-to-mp3": {
|
||||
name: "M4A в MP3",
|
||||
description: "Конвертируйте M4A в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"m4a-to-wav": {
|
||||
name: "M4A в WAV",
|
||||
description: "Конвертируйте M4A в WAV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"aac-to-mp3": {
|
||||
name: "AAC в MP3",
|
||||
description: "Конвертируйте AAC в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"aac-to-wav": {
|
||||
name: "AAC в WAV",
|
||||
description: "Конвертируйте AAC в WAV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"aac-to-flac": {
|
||||
name: "AAC в FLAC",
|
||||
description: "Конвертируйте AAC в FLAC онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"ogg-to-mp3": {
|
||||
name: "OGG в MP3",
|
||||
description: "Конвертируйте OGG в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"ogg-to-wav": {
|
||||
name: "OGG в WAV",
|
||||
description: "Конвертируйте OGG в WAV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"wav-to-mp3": {
|
||||
name: "WAV в MP3",
|
||||
description: "Конвертируйте WAV в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"mp3-to-wav": {
|
||||
name: "MP3 в WAV",
|
||||
description: "Конвертируйте MP3 в WAV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"flac-to-mp3": {
|
||||
name: "FLAC в MP3",
|
||||
description: "Конвертируйте FLAC в MP3 онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
"excel-to-csv": {
|
||||
name: "Excel в CSV",
|
||||
description: "Конвертируйте Excel в CSV онлайн. Быстро, бесплатно и приватно.",
|
||||
},
|
||||
// END conversion-presets
|
||||
resize: {
|
||||
name: "Изменение размера",
|
||||
description: "Изменение размера в пикселях, процентах или по шаблонам соцсетей",
|
||||
@@ -150,7 +484,7 @@ export const ru: TranslationKeys = {
|
||||
description: "Удаление нежелательных объектов с помощью AI",
|
||||
},
|
||||
ocr: {
|
||||
name: "OCR / Извлечение текста",
|
||||
name: "Извлечь текст из изображения (OCR)",
|
||||
description: "Извлечение текста из изображений с точностью AI",
|
||||
},
|
||||
"ocr-pdf": {
|
||||
@@ -2751,6 +3085,14 @@ export const ru: TranslationKeys = {
|
||||
"Скачать архив с обезличенной конфигурацией, логами и данными задач для диагностики.",
|
||||
supportBundleFailed: "Не удалось скачать диагностический архив.",
|
||||
},
|
||||
privacy: {
|
||||
title: "Конфиденциальность",
|
||||
description:
|
||||
"Анонимная продуктовая аналитика помогает улучшать SnapOtter. Она включена по умолчанию и настраивается для всего экземпляра администратором.",
|
||||
analyticsLabel: "Анонимная продуктовая аналитика",
|
||||
analyticsDescription:
|
||||
"Делитесь анонимными данными об использовании (какие инструменты запускаются, длительность, коды ошибок) и отчётами о сбоях. Без IP-адреса и без идентификации аккаунта. Мы никогда не собираем имена ваших файлов, их содержимое, результаты OCR, метаданные изображений или текст документов. Отключите это, чтобы остановить всё.",
|
||||
},
|
||||
security: {
|
||||
heading: "Безопасность",
|
||||
description: "Настройки пароля и аутентификации.",
|
||||
@@ -3046,7 +3388,7 @@ export const ru: TranslationKeys = {
|
||||
heading: "О программе",
|
||||
appName: "SnapOtter",
|
||||
appDescription:
|
||||
"Самостоятельно размещаемый набор инструментов для обработки файлов с приоритетом конфиденциальности. 157 инструментов. Конвертация, сжатие, редактирование, транскрипция, OCR и автоматизация рабочих процессов с изображениями, видео, аудио, документами и данными без отправки данных в облако.",
|
||||
"Самостоятельно размещаемый набор инструментов для обработки файлов с приоритетом конфиденциальности. 240 инструментов. Конвертация, сжатие, редактирование, транскрипция, OCR и автоматизация рабочих процессов с изображениями, видео, аудио, документами и данными без отправки данных в облако.",
|
||||
versionLabel: "Версия:",
|
||||
linksHeading: "Ссылки",
|
||||
githubLink: "Репозиторий GitHub",
|
||||
@@ -3105,7 +3447,7 @@ export const ru: TranslationKeys = {
|
||||
"Без ограничений. Без скрытых лимитов.",
|
||||
"Работает полностью офлайн.",
|
||||
"Пакетная обработка без ограничений.",
|
||||
"157 инструментов.",
|
||||
"240 инструментов.",
|
||||
"16 AI-моделей. На Вашем оборудовании.",
|
||||
"Молниеносная скорость. На базе Sharp.",
|
||||
"Готов к изолированным сетям.",
|
||||
@@ -3170,6 +3512,7 @@ export const ru: TranslationKeys = {
|
||||
toolPalette: "Палитра инструментов",
|
||||
clickToAdd: "Нажмите для добавления в Pipeline",
|
||||
savedLabel: "Сохранённые",
|
||||
templatesLabel: "Шаблоны",
|
||||
importButton: "Импорт",
|
||||
noSavedPipelines: "Нет сохранённых Pipeline",
|
||||
stepCount: "({count} шаг)",
|
||||
@@ -3456,4 +3799,44 @@ export const ru: TranslationKeys = {
|
||||
navigationMenu: "Навигация",
|
||||
homeLink: "Главная SnapOtter",
|
||||
},
|
||||
pipelineTemplates: {
|
||||
"web-optimize": {
|
||||
name: "Оптимизация для веба",
|
||||
description:
|
||||
"Измените размер, преобразуйте в WebP и сожмите изображение для быстрой загрузки в вебе.",
|
||||
},
|
||||
"email-friendly": {
|
||||
name: "Для электронной почты",
|
||||
description: "Уменьшите изображение, чтобы его можно было прикрепить к электронному письму.",
|
||||
},
|
||||
"privacy-scrub": {
|
||||
name: "Очистка конфиденциальности",
|
||||
description: "Удалите EXIF, GPS и другие метаданные, затем сожмите.",
|
||||
},
|
||||
"social-square": {
|
||||
name: "Квадрат для соцсетей",
|
||||
description: "Обрежьте до квадрата 1:1 и сожмите для публикаций в соцсетях.",
|
||||
},
|
||||
"watermark-batch": {
|
||||
name: "Водяной знак пакетно",
|
||||
description: "Нанесите текстовый водяной знак на изображения, затем сожмите.",
|
||||
},
|
||||
"shrink-pdf-email": {
|
||||
name: "Уменьшить PDF для почты",
|
||||
description: "Сведите и сильно сожмите PDF, чтобы он уложился в лимиты электронной почты.",
|
||||
},
|
||||
"podcast-polish": {
|
||||
name: "Шлифовка подкаста",
|
||||
description: "Удалите тишину, нормализуйте громкость и добавьте плавные переходы к записи.",
|
||||
},
|
||||
"cut-out-subject": {
|
||||
name: "Вырезать объект",
|
||||
description: "Удалите фон с помощью ИИ и сожмите прозрачную вырезку.",
|
||||
},
|
||||
"restore-old-photo": {
|
||||
name: "Восстановить старое фото",
|
||||
description:
|
||||
"Восстановите, раскрасьте и увеличьте старое или повреждённое фото с помощью ИИ.",
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
|
||||
Reference in New Issue
Block a user