Files
parcer/public/locales/ru.json
Vodorod 2ce029534e Добавлен русский язык + исправлены критические баги
🌍 Интернационализация:
- Добавлен русский язык в i18n.ts (supportedLngs)
- Русский пункт меню в NavBar.tsx (desktop + mobile)
- Полная локализация страницы RobotCreate.tsx
- Расширен ru.json: robotCreate (60+ ключей) + mainmenu

🐛 Исправления:
- PostCSS баг в vite.config.js (css.postcss: false → { plugins: [] })
- Backend URL конфигурация (8081 вместо 8080)
- API ключи теперь генерируются корректно

🔧 Конфигурация:
- docker-compose.yml: host network mode
- Dockerfile.frontend обновлен
- Добавлены postcss конфиги

 Все сервисы работают:
- Frontend: http://localhost:5174
- Backend: http://localhost:8081
- PostgreSQL: 5433
- MinIO: 9020/9021
2026-02-19 18:32:00 +03:00

469 lines
19 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"login": {
"title": "С возвращением!",
"email": "Введите рабочий email",
"password": "Пароль",
"button": "Войти",
"loading": "Загрузка",
"register_prompt": "Нет аккаунта?",
"register_link": "Зарегистрироваться",
"welcome_notification": "Добро пожаловать в Dorod Parser!",
"validation": {
"required_fields": "Email и пароль обязательны",
"password_length": "Пароль должен быть не менее 6 символов"
},
"error": {
"user_not_found": "Пользователь не существует",
"invalid_credentials": "Неверный email или пароль",
"server_error": "Ошибка входа. Попробуйте позже",
"generic": "Произошла ошибка. Попробуйте снова"
}
},
"register": {
"title": "Создать аккаунт",
"email": "Введите рабочий email",
"password": "Пароль",
"button": "Зарегистрироваться",
"loading": "Загрузка",
"register_prompt": "Уже есть аккаунт?",
"login_link": "Войти",
"welcome_notification": "Добро пожаловать в Dorod Parser!",
"validation": {
"email_required": "Email обязателен",
"password_requirements": "Пароль должен быть не менее 6 символов"
},
"error": {
"user_exists": "Пользователь с таким email уже существует",
"creation_failed": "Не удалось создать аккаунт",
"server_error": "Ошибка сервера",
"generic": "Регистрация не удалась. Попробуйте снова"
}
},
"recordingtable":{
"run": "Запустить",
"name": "Название",
"schedule": "Расписание",
"integrate": "Интеграция",
"settings": "Настройки",
"options": "Опции",
"heading":"Мои роботы",
"new":"Создать робота",
"deleteModalText": "Вы уверены, что хотите удалить этого робота?",
"delete": "Удалить",
"cancel": "Отмена",
"deleteSuccess": "Робот успешно удален",
"deleteFailed": "Не удалось удалить робота",
"search": "Поиск роботов..."
},
"mainmenu": {
"recordings": "Роботы",
"runs": "Запуски",
"proxy": "Прокси",
"apikey": "API ключ",
"feedback": "Присоединиться к Maxun Cloud",
"apidocs": "Веб-сайт в API"
},
"recordingpage": {
"stopRecording": "Остановить запись",
"recording": "Запись...",
"extract": "Извлечь",
"actions": "Действия",
"goto": "Перейти",
"click": "Клик",
"type": "Ввод",
"scroll": "Прокрутка",
"hover": "Наведение",
"select": "Выбор",
"clear": "Очистить",
"press": "Нажать",
"upload": "Загрузить",
"download": "Скачать",
"screenshot": "Скриншот",
"wait": "Ожидание",
"refresh": "Обновить",
"back": "Назад",
"forward": "Вперед",
"close": "Закрыть",
"newTab": "Новая вкладка",
"switchTab": "Переключить вкладку",
"pagination": "Пагинация",
"captcha": "Капча",
"saveRecording": "Сохранить запись",
"discardRecording": "Отменить запись",
"playRecording": "Воспроизвести",
"editStep": "Редактировать шаг",
"deleteStep": "Удалить шаг",
"addStep": "Добавить шаг",
"recordingName": "Название записи",
"enterUrl": "Введите URL",
"startRecording": "Начать запись",
"noSteps": "Нет записанных действий",
"error": {
"recording_failed": "Ошибка записи",
"save_failed": "Не удалось сохранить",
"invalid_url": "Неверный URL"
}
},
"robotSettings": {
"title": "Настройки робота",
"name": "Название",
"description": "Описание",
"url": "Начальный URL",
"proxy": "Прокси",
"useProxy": "Использовать прокси",
"proxyUrl": "URL прокси",
"userAgent": "User Agent",
"customHeaders": "Дополнительные заголовки",
"headerName": "Название",
"headerValue": "Значение",
"addHeader": "Добавить заголовок",
"timeout": "Тайм-аут (мс)",
"retries": "Повторные попытки",
"screenshot": "Делать скриншоты",
"notifications": "Уведомления",
"emailNotifications": "Email уведомления",
"webhookUrl": "Webhook URL",
"save": "Сохранить",
"cancel": "Отмена",
"advanced": "Расширенные настройки",
"basic": "Основные настройки"
},
"schedule": {
"title": "Настройка расписания",
"enabled": "Включить расписание",
"frequency": "Частота",
"hourly": "Каждый час",
"daily": "Ежедневно",
"weekly": "Еженедельно",
"monthly": "Ежемесячно",
"custom": "Настроить",
"time": "Время",
"timezone": "Часовой пояс",
"days": "Дни недели",
"monday": "Понедельник",
"tuesday": "Вторник",
"wednesday": "Среда",
"thursday": "Четверг",
"friday": "Пятница",
"saturday": "Суббота",
"sunday": "Воскресенье",
"nextRun": "Следующий запуск",
"lastRun": "Последний запуск",
"save": "Сохранить расписание",
"cancel": "Отмена"
},
"integrate": {
"title": "Интеграции",
"export": "Экспорт данных",
"googleSheets": "Google Sheets",
"airtable": "Airtable",
"webhook": "Webhook",
"api": "REST API",
"connect": "Подключить",
"disconnect": "Отключить",
"connected": "Подключено",
"notConnected": "Не подключено",
"testConnection": "Проверить подключение",
"exportFormat": "Формат экспорта",
"json": "JSON",
"csv": "CSV",
"excel": "Excel",
"save": "Сохранить настройки"
},
"runs": {
"title": "История запусков",
"status": "Статус",
"success": "Успешно",
"failed": "Ошибка",
"running": "Выполняется",
"pending": "Ожидание",
"cancelled": "Отменено",
"startTime": "Время начала",
"endTime": "Время окончания",
"duration": "Длительность",
"recordsExtracted": "Извлечено записей",
"viewDetails": "Подробности",
"viewLogs": "Логи",
"downloadData": "Скачать данные",
"retry": "Повторить",
"cancel": "Отменить",
"noRuns": "Нет запусков"
},
"extraction": {
"title": "Извлечение данных",
"addField": "Добавить поле",
"fieldName": "Название поля",
"selector": "Селектор",
"type": "Тип",
"text": "Текст",
"attribute": "Атрибут",
"html": "HTML",
"link": "Ссылка",
"image": "Изображение",
"list": "Список",
"table": "Таблица",
"required": "Обязательное",
"optional": "Опциональное",
"removeField": "Удалить поле",
"testExtraction": "Тестировать",
"preview": "Предпросмотр",
"noData": "Нет данных"
},
"ai": {
"title": "AI режим",
"prompt": "Опишите, что нужно извлечь",
"example": "Например: извлеките все названия товаров, цены и артикулы",
"generate": "Сгенерировать",
"generating": "Генерация...",
"apply": "Применить",
"edit": "Редактировать",
"model": "Модель AI",
"temperature": "Температура",
"maxTokens": "Макс. токенов",
"error": {
"generation_failed": "Не удалось сгенерировать",
"api_error": "Ошибка API",
"invalid_prompt": "Неверный промпт"
}
},
"pagination": {
"title": "Настройка пагинации",
"enabled": "Включить пагинацию",
"type": "Тип",
"button": "Кнопка",
"scroll": "Прокрутка",
"url": "URL паттерн",
"nextButton": "Селектор кнопки 'Далее'",
"maxPages": "Макс. страниц",
"waitTime": "Время ожидания (мс)",
"stopCondition": "Условие остановки",
"noMorePages": "Нет больше страниц",
"maxPagesReached": "Достигнут лимит страниц",
"custom": "Настроить"
},
"captcha": {
"title": "Обработка капчи",
"enabled": "Включить решение капчи",
"service": "Сервис",
"twoCaptcha": "2Captcha",
"antiCaptcha": "AntiCaptcha",
"manual": "Вручную",
"apiKey": "API ключ",
"timeout": "Тайм-аут (сек)",
"test": "Тестировать",
"save": "Сохранить"
},
"proxy": {
"title": "Настройки прокси",
"enabled": "Использовать прокси",
"type": "Тип",
"http": "HTTP",
"https": "HTTPS",
"socks4": "SOCKS4",
"socks5": "SOCKS5",
"host": "Хост",
"port": "Порт",
"username": "Имя пользователя",
"password": "Пароль",
"testConnection": "Проверить подключение",
"success": "Прокси работает",
"failed": "Ошибка подключения"
},
"settings": {
"title": "Настройки",
"account": "Аккаунт",
"profile": "Профиль",
"security": "Безопасность",
"notifications": "Уведомления",
"api": "API ключи",
"billing": "Биллинг",
"theme": "Тема",
"language": "Язык",
"light": "Светлая",
"dark": "Темная",
"auto": "Авто",
"save": "Сохранить",
"cancel": "Отмена",
"logout": "Выйти"
},
"profile": {
"title": "Профиль",
"name": "Имя",
"email": "Email",
"company": "Компания",
"website": "Веб-сайт",
"avatar": "Аватар",
"changeAvatar": "Изменить аватар",
"save": "Сохранить",
"updated": "Профиль обновлен"
},
"security": {
"title": "Безопасность",
"changePassword": "Изменить пароль",
"currentPassword": "Текущий пароль",
"newPassword": "Новый пароль",
"confirmPassword": "Подтвердите пароль",
"twoFactor": "Двухфакторная аутентификация",
"enable2FA": "Включить 2FA",
"disable2FA": "Отключить 2FA",
"apiKeys": "API ключи",
"generateKey": "Сгенерировать ключ",
"revokeKey": "Отозвать ключ",
"save": "Сохранить"
},
"notifications": {
"title": "Уведомления",
"email": "Email уведомления",
"runComplete": "Завершение запуска",
"runFailed": "Ошибка запуска",
"dailyReport": "Ежедневный отчет",
"weeklyReport": "Еженедельный отчет",
"webhook": "Webhook уведомления",
"webhookUrl": "Webhook URL",
"testWebhook": "Тестировать",
"save": "Сохранить"
},
"common": {
"save": "Сохранить",
"cancel": "Отмена",
"delete": "Удалить",
"edit": "Редактировать",
"create": "Создать",
"update": "Обновить",
"close": "Закрыть",
"back": "Назад",
"next": "Далее",
"previous": "Назад",
"finish": "Завершить",
"loading": "Загрузка...",
"saving": "Сохранение...",
"deleting": "Удаление...",
"success": "Успешно",
"error": "Ошибка",
"warning": "Предупреждение",
"info": "Информация",
"confirm": "Подтвердить",
"yes": "Да",
"no": "Нет",
"ok": "ОК",
"search": "Поиск",
"filter": "Фильтр",
"sort": "Сортировка",
"export": "Экспорт",
"import": "Импорт",
"download": "Скачать",
"upload": "Загрузить",
"copy": "Копировать",
"paste": "Вставить",
"cut": "Вырезать",
"select_all": "Выбрать все",
"clear_all": "Очистить все",
"refresh": "Обновить",
"settings": "Настройки",
"help": "Помощь",
"about": "О программе",
"version": "Версия",
"copyright": " 2026 Dorod Parser"
},
"errors": {
"generic": "Произошла ошибка",
"network": "Ошибка сети",
"timeout": "Превышен тайм-аут",
"not_found": "Не найдено",
"unauthorized": "Не авторизован",
"forbidden": "Доступ запрещен",
"server_error": "Ошибка сервера",
"validation": "Ошибка валидации",
"try_again": "Попробуйте снова"
},
"success": {
"saved": "Сохранено",
"deleted": "Удалено",
"updated": "Обновлено",
"created": "Создано",
"sent": "Отправлено",
"copied": "Скопировано"
},
"robotCreate": {
"title": "Создать нового робота",
"tabs": {
"extract": "Извлечь",
"scrape": "Скрейпинг",
"crawl": "Обход",
"search": "Поиск"
},
"chooseMode": "Выберите способ создания",
"modes": {
"recorder": {
"title": "Режим записи",
"description": "Запишите свои действия в рабочий процесс"
},
"ai": {
"title": "AI режим",
"description": "Опишите задачу. Он создаст её для вас",
"label": "Beta"
}
},
"extract": {
"description": "Извлекайте структурированные данные с веб-сайтов используя AI или записывайте свой собственный процесс извлечения",
"websiteUrl": "URL веб-сайта",
"websiteUrlOptional": "URL веб-сайта (необязательно)",
"websiteUrlPlaceholder": "Например: https://www.ycombinator.com/companies/",
"startRecording": "Начать запись",
"starting": "Запуск...",
"name": "Название",
"namePlaceholder": "Название",
"aiPrompt": "Промпт для извлечения",
"aiPromptPlaceholder": "Например: Извлечь первые 15 названий компаний, описания и информацию о партиях",
"aiExample": "Например: 'Извлечь названия продуктов, цены и рейтинги'",
"llmProvider": "LLM Провайдер",
"llmProviderOllama": "Ollama (Локально)",
"llmProviderAnthropic": "Anthropic (Claude)",
"llmProviderOpenAI": "OpenAI (GPT-4)",
"model": "Модель",
"modelDefault": "По умолчанию (llama3.2-vision)",
"ollamaBaseUrl": "Ollama Base URL (необязательно)",
"generate": "Создать робота",
"generating": "Создание...",
"createAndRun": "Создать и запустить робота",
"creatingAndRunning": "Создание и запуск...",
"apiKey": "API ключ (необязательно, если установлен в .env)",
"apiKeyPlaceholder": "API ключ"
},
"scrape": {
"description": "Скрейпить весь контент страницы в различных форматах",
"websiteUrl": "URL веб-сайта",
"robotName": "Название робота (необязательно)",
"outputFormats": "Форматы вывода",
"createRobot": "Создать робота",
"creating": "Создание..."
},
"crawl": {
"description": "Обходить веб-сайт и извлекать данные с нескольких страниц",
"websiteUrl": "URL веб-сайта",
"robotName": "Название робота (необязательно)",
"maxPages": "Максимум страниц для обхода",
"maxDepth": "Максимальная глубина обхода",
"includePaths": "Включить пути (через запятую, необязательно)",
"excludePaths": "Исключить пути (через запятую, необязательно)",
"createRobot": "Создать робота",
"creating": "Создание...",
"advancedOptions": "Дополнительные опции"
},
"search": {
"description": "Искать информацию в интернете используя AI",
"query": "Поисковой запрос",
"queryPlaceholder": "О чём вы хотите узнать?",
"robotName": "Название робота (необязательно)",
"createRobot": "Создать поискового робота",
"creating": "Создание..."
},
"errors": {
"urlRequired": "URL обязателен",
"queryRequired": "Поисковой запрос обязателен",
"failedToStart": "Не удалось начать запись. Попробуйте снова",
"failedToCreate": "Не удалось создать робота"
}
}
}