1372 lines
151 KiB
JavaScript
1372 lines
151 KiB
JavaScript
import fs from 'fs/promises';
|
||
|
||
const dictionary = {
|
||
"Service Health Check": "Проверка доступности сервисов",
|
||
"Automated DPI Strategy Fuzzer & Auto-Tuner": "Автоматический подборщик и оптимизатор стратегий DPI",
|
||
"Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput.": "Тестирует набор стратегий десинхронизации пакетов в изолированном сэндбоксе без влияния на активный трафик и ранжирует их по задержке, TTFB и скорости.",
|
||
"DPI Engine": "Движок DPI",
|
||
"Zapret v2 (nfqws2)": "Zapret v2 (nfqws2)",
|
||
"Zapret v1 (nfqws)": "Zapret v1 (nfqws)",
|
||
"ByeDPI (ciadpi)": "ByeDPI (ciadpi)",
|
||
"All Engines (Full Matrix)": "Все движки (Полная матрица)",
|
||
"Installed": "Установлен",
|
||
"Not installed": "Не установлен",
|
||
"Target Service": "Целевой сервис",
|
||
"YouTube (GoogleVideo 4K stream)": "YouTube (4K видеопоток GoogleVideo)",
|
||
"YouTube Web (Interface)": "YouTube Web (Интерфейс)",
|
||
"Discord (Gateway / API / Voice)": "Discord (Шлюз / API / Голосовые каналы)",
|
||
"Instagram / Meta (TLS 1.3)": "Instagram / Meta (TLS 1.3)",
|
||
"RuTracker (HTTP/HTTPS)": "RuTracker (HTTP/HTTPS)",
|
||
"Telegram Web": "Telegram Web",
|
||
"Custom Target URL...": "Свой URL для теста...",
|
||
"Apply Strategy To": "Применить стратегию к",
|
||
"Provider Global Default": "Глобальные настройки провайдера",
|
||
"Rule:": "Правило:",
|
||
"Benchmarking in progress...": "Выполняется бенчмарк...",
|
||
"Testing strategy": "Тестирование стратегии",
|
||
"Strategy & Parameters": "Стратегия и параметры",
|
||
"Status": "Статус",
|
||
"TTFB": "TTFB",
|
||
"Speed": "Скорость",
|
||
"Score": "Баллы",
|
||
"Action": "Действие",
|
||
"No benchmark results yet. Select engine and click \"Start Benchmark\".": "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк».",
|
||
"No benchmark results yet. Select engine and click \"Start Benchmark\" or \"Synthesize with AI\".": "Нет результатов бенчмарка. Выберите движок и нажмите «Начать бенчмарк» или «Сгенерировать через ИИ».",
|
||
"Optional notes for AI (e.g. \"Rostelecom, YouTube 4K stream is slow\")...": "Дополнительные заметки для ИИ (напр. «Ростелеком, тормозит 4K на YouTube»)...",
|
||
"🧠 Synthesize with AI": "🧠 Сгенерировать через ИИ",
|
||
"🧠 Synthesizing...": "🧠 Генерация...",
|
||
"AI Diagnostics & Strategy Rationale": "Диагностика ИИ и обоснование стратегий",
|
||
"AI DPI Engineer & Strategy Synthesizer (RAG-Powered)": "ИИ-инженер DPI и генератор стратегий (на базе RAG)",
|
||
"Knowledge Base + Live Probe Context": "База знаний + Контекст сетевого зонда",
|
||
"Consulting DPI Knowledge Base & AI...": "Консультируюсь с базой знаний DPI и ИИ...",
|
||
"AI successfully synthesized custom strategies!": "ИИ успешно сгенерировал кастомные стратегии!",
|
||
"AI synthesis failed": "Не удалось сгенерировать стратегии через ИИ",
|
||
"AI Synthesis Error": "Ошибка генерации ИИ",
|
||
"Failed to communicate with AI provider": "Не удалось связаться с провайдером ИИ",
|
||
"Search Mode": "Режим подбора",
|
||
"⚡ Quick Benchmark (Presets ~12-14)": "⚡ Быстрый бенчмарк (Пресеты ~12-14)",
|
||
"🔍 Combinatorial Deep Fuzzing (~40-60)": "🔍 Комбинаторный глубокий перебор (~40-60)",
|
||
"🚀 Start Benchmark": "🚀 Начать бенчмарк",
|
||
"🚀 Run Benchmark Again": "🚀 Запустить бенчмарк снова",
|
||
"🛑 Stop Benchmark": "🛑 Остановить бенчмарк",
|
||
"🏆 Apply Best Strategy": "🏆 Применить лучшую стратегию",
|
||
"Apply": "Применить",
|
||
"Applied": "Применено",
|
||
"Benchmark stopped": "Бенчмарк остановлен",
|
||
"Strategy benchmark started": "Бенчмарк стратегий запущен",
|
||
"Failed to start benchmark": "Не удалось запустить бенчмарк",
|
||
"Failed to apply strategy": "Не удалось применить стратегию",
|
||
"⚡ Strategy Fuzzer & Auto-Tuner": "⚡ Подборщик стратегий и авто-тюнер",
|
||
"⚡ DPI Strategy Fuzzer": "⚡ DPI Strategy Fuzzer",
|
||
"Find optimal DPI bypass strategies with isolated live probing": "Автоматический подбор оптимальных параметров обхода DPI в изолированном сэндбоксе",
|
||
"✅ Benchmark completed! Optimal strategy identified.": "✅ Бенчмарк завершен! Оптимальная стратегия определена.",
|
||
"⚠️ Benchmark completed. No working bypass found for this target.": "⚠️ Бенчмарк завершен. Не найдено рабочих стратегий для данной цели.",
|
||
"Running initial strategy probe...": "Запуск первого зонда стратегии...",
|
||
"Total Targets": "Всего целей",
|
||
"Passed": "Успешно",
|
||
"Failed": "Ошибки",
|
||
"Avg Latency": "Ср. задержка",
|
||
"Search domain...": "Поиск домена...",
|
||
"Section / Target": "Секция / Цель",
|
||
"Outbound Route": "Маршрут",
|
||
"Resolved IP / DNS": "IP / DNS",
|
||
"Verdict": "Статус",
|
||
"Pending": "Ожидает запуска",
|
||
"Check domain or IP (e.g. example.com)...": "Проверить домен или IP (напр. example.com)...",
|
||
"Check Custom": "Проверить свой",
|
||
"Check All": "Проверить все",
|
||
"Checking...": "Проверка...",
|
||
"Check Again": "Проверить снова",
|
||
"Testing...": "Тестирование...",
|
||
"Fetching service targets...": "Получение списка сервисов...",
|
||
"Failed to run service check.": "Не удалось выполнить проверку сервисов.",
|
||
"Failed to parse target list.": "Ошибка обработки списка целей.",
|
||
"No targets found in section configs.": "Цели в конфигурациях секций не найдены.",
|
||
"AI Chat & Tachyon Assistant": "ИИ Чат & Ассистент Tachyon",
|
||
"Hello! I am Tachyon AI Assistant. How can I help you today? Ask me about domain blocks, diagnostics, or router settings.": "Привет! Я ИИ-ассистент Tachyon. Чем могу помочь? Задайте вопрос о блокировках, диагностике или настройках роутера.",
|
||
"Ask Tachyon AI Assistant a question...": "Задайте вопрос ИИ-ассистенту...",
|
||
"Send": "Отправить",
|
||
"Thinking...": "Думаю...",
|
||
"Failed to receive response from AI service.": "Не удалось получить ответ от ИИ-сервиса.",
|
||
"Failed to reset settings": "Не удалось сбросить настройки",
|
||
"Server unavailable": "Сервер недоступен",
|
||
"AI service error": "Ошибка ИИ-сервиса",
|
||
"Check YouTube": "Проверить YouTube",
|
||
"Check YouTube availability": "Проверить доступность YouTube",
|
||
"Why Discord fails?": "Почему не работает Discord?",
|
||
"Check Mode:": "Режим проверки:",
|
||
"Active Sections": "Активные секции",
|
||
"All Profiles": "Все сервисы и профили",
|
||
"Cannot save settings": "Не удалось сохранить настройки",
|
||
"Sections": "Секции",
|
||
"Servers": "Серверы",
|
||
"Monitoring": "Мониторинг",
|
||
"Components": "Компоненты",
|
||
"Drag rows to change priority. The rule at the top is checked first.": "Перетащите строки для изменения приоритета. Правило вверху проверяется первым.",
|
||
"Rules": "Правила",
|
||
"Edit": "Редактировать",
|
||
"Connection": "Соединение",
|
||
"Add a section": "Добавить секцию",
|
||
"Add a server inbound": "Добавить серверный инбаунд",
|
||
"Accept external proxy connections and route them with sing-box.": "Принимать внешние прокси-подключения и маршрутизировать их через sing-box.",
|
||
"Section": "Секция",
|
||
"Server": "Сервер",
|
||
"Operation in progress...": "Выполняется операция...",
|
||
"Checking for updates...": "Проверка обновлений...",
|
||
"Updating": "Обновление",
|
||
"Installing": "Установка",
|
||
"Removing": "Удаление",
|
||
"Initializing operation...": "Инициализация операции...",
|
||
"Downloading package from repository...": "Загрузка пакета из репозитория...",
|
||
"Installing package & updating configurations...": "Установка пакета и обновление настроек...",
|
||
"Applying changes & reloading services...": "Применение изменений и перезапуск служб...",
|
||
"Connecting to update server...": "Подключение к серверу обновлений...",
|
||
"Fetching release & commit metadata...": "Запрос метаданных релизов и коммитов...",
|
||
"Comparing versions & fingerprint check...": "Сравнение версий и проверка целостности...",
|
||
"Stopping active services...": "Остановка активных служб...",
|
||
"Removing binaries & package files...": "Удаление бинарных файлов и пакетов...",
|
||
"Cleaning configuration & reloading...": "Очистка конфигураций и перезапуск...",
|
||
"Environment preparation & dependency check...": "Подготовка окружения и проверка зависимостей...",
|
||
"Unpacking & installing binaries...": "Распаковка и установка компонентов...",
|
||
"Updating configuration & access permissions...": "Обновление конфигураций и прав доступа...",
|
||
"Update completed successfully!": "Обновление успешно завершено!",
|
||
"Installation completed successfully!": "Установка успешно завершена!",
|
||
"Removal completed successfully!": "Удаление успешно завершено!",
|
||
"Check completed!": "Проверка завершена!",
|
||
"Reloading page in": "Перезагрузка страницы через",
|
||
"Please wait, operation is running...": "Пожалуйста, подождите, выполняется операция...",
|
||
"Operation failed": "Операция не выполнена",
|
||
"Operation log": "Лог операции",
|
||
"Copy log": "Копировать лог",
|
||
"Operation log is not available": "Лог операции недоступен",
|
||
"Failed to read operation log": "Не удалось прочитать лог операции",
|
||
"Direct": "Напрямую",
|
||
|
||
// === Новые UI-строки (settings.js, section.js) ===
|
||
|
||
// Вкладки и заголовки
|
||
"Settings": "Настройки",
|
||
"Tachyon Settings": "Настройки Tachyon",
|
||
"DNS": "DNS",
|
||
"Security": "Безопасность",
|
||
"Network & Interfaces": "Сеть и интерфейсы",
|
||
"Updates & Downloads": "Обновления и загрузки",
|
||
"Advanced System": "Расширенные настройки",
|
||
"AI & Watchdog": "ИИ и Watchdog",
|
||
"AI Chat Assistant": "ИИ Чат-ассистент",
|
||
"AI Doctor Diagnosis": "Диагностика ИИ-доктора",
|
||
"AI Doctor Language": "Язык ИИ-доктора",
|
||
"AI Model": "Модель ИИ",
|
||
"Run AI Doctor": "Запустить ИИ-доктора",
|
||
"Full System Diagnostic": "Полная диагностика системы",
|
||
"Current Diagnosis": "Текущий диагноз",
|
||
"History": "История",
|
||
"Check Services": "Проверить сервисы",
|
||
"All Services": "Все сервисы",
|
||
"Service Availability Check": "Проверка доступности сервисов",
|
||
"Filter by service:": "Фильтр по сервису:",
|
||
"Search domain or service...": "Поиск домена или сервиса...",
|
||
"Service / Target": "Сервис / Цель",
|
||
"Route Type": "Тип маршрута",
|
||
"Active Routes": "Активные маршруты",
|
||
"Custom Domains": "Свои домены",
|
||
"Unavailable": "Недоступно",
|
||
"Available": "Доступно",
|
||
"Auto": "Авто",
|
||
"Proxy": "Прокси",
|
||
"TCP": "TCP",
|
||
"TLS": "TLS",
|
||
"Recommended Quick Fixes:": "Рекомендуемые исправления:",
|
||
"Applying fix": "Применение исправления",
|
||
"Fix applied": "Исправление применено",
|
||
"Failed to apply fix": "Не удалось применить исправление",
|
||
"No quick fix required": "Быстрая починка не требуется",
|
||
"Another component action is already running": "Другое действие уже выполняется",
|
||
"Transient connection error": "Временная ошибка соединения",
|
||
"No diagnostic history available yet.": "История проверок пока пуста.",
|
||
"AI Doctor failed": "Ошибка ИИ-доктора",
|
||
"Ollama (Local PC / Server)": "Ollama (локальный ПК / сервер)",
|
||
"LM Studio (Local PC / Server)": "LM Studio (локальный ПК / сервер)",
|
||
"Optional for local LLM": "Опционально для локальных LLM",
|
||
|
||
// DNS
|
||
"DNS over HTTPS (DoH)": "DNS через HTTPS (DoH)",
|
||
"DNS over TLS (DoT)": "DNS через TLS (DoT)",
|
||
"DNS over QUIC (DoQ)": "DNS через QUIC (DoQ)",
|
||
"UDP (Unprotected DNS)": "UDP (незащищённый DNS)",
|
||
"Default (auto)": "По умолчанию (авто)",
|
||
"DNS Settings": "Настройки DNS",
|
||
"DNS Servers": "DNS-серверы",
|
||
"Bootstrap DNS Servers": "Bootstrap DNS-серверы",
|
||
"DNS Protocol Type": "Тип протокола DNS",
|
||
"DNS Strategy": "Стратегия DNS",
|
||
"DNS Rewrite TTL": "TTL DNS-записей",
|
||
"Time in seconds for DNS record caching (default: 60)": "Время кэширования DNS-записей в секундах (по умолчанию: 60)",
|
||
"DNS Check Interval": "Интервал проверки DNS",
|
||
"DNS Check Interval (s)": "Интервал проверки DNS (с)",
|
||
"DNS Failures Before Switching": "Ошибок DNS до переключения",
|
||
"DNS Successful Checks Before Recovery": "Успешных проверок DNS до восстановления",
|
||
"DNS Unavailability Timeout": "Таймаут недоступности DNS",
|
||
"Higher-priority DNS Check": "Проверка DNS с более высоким приоритетом",
|
||
"Enable DNS Continuous Check": "Непрерывная проверка DNS",
|
||
"Enable WAN DNS Fallback for Bootstrap DNS": "Резервный WAN DNS для Bootstrap DNS",
|
||
"Enable WAN DNS Fallback for Main DNS": "Резервный WAN DNS для основного DNS",
|
||
"DNS through proxy": "DNS через прокси",
|
||
"DNS through section": "DNS через секцию",
|
||
"DNS requests through section": "DNS-запросы через секцию",
|
||
"Domain Resolver": "Резолвер доменов",
|
||
"Bootstrap DNS": "Bootstrap DNS",
|
||
"Strict ECH + DoQ DNS Enforcer": "Строгий ECH + DoQ DNS Enforcer",
|
||
|
||
// Серверы и протоколы
|
||
"Server Address": "Адрес сервера",
|
||
"Server Port": "Порт сервера",
|
||
"Server Name Indication — leave empty to use server address": "Server Name Indication — оставьте пустым для использования адреса сервера",
|
||
"Server filtering": "Фильтрация серверов",
|
||
"Servers on dashboard": "Серверы на дашборде",
|
||
"Name displayed on the dashboard": "Имя, отображаемое на дашборде",
|
||
"Latency test URL": "URL для теста задержки",
|
||
"Check URL": "URL проверки",
|
||
"URL used to test server latency": "URL для теста задержки сервера",
|
||
"URL used to check whether a server is alive": "URL для проверки доступности сервера",
|
||
"Check timeout after which the server is considered dead": "Таймаут проверки, после которого сервер считается недоступным",
|
||
"How often the currently selected server is checked": "Как часто проверяется текущий сервер",
|
||
"Protocol": "Протокол",
|
||
"Cipher": "Шифр",
|
||
"Method": "Метод",
|
||
"Password": "Пароль",
|
||
"Username": "Имя пользователя",
|
||
"Transport": "Транспорт",
|
||
"ALPN": "ALPN",
|
||
"TLS SNI": "TLS SNI",
|
||
"TLS / HTTPS": "TLS / HTTPS",
|
||
"Skip TLS certificate verification (not recommended)": "Пропустить проверку TLS-сертификатов (не рекомендуется)",
|
||
"Allow Insecure TLS": "Разрешить небезопасный TLS",
|
||
"VLESS flow": "VLESS flow",
|
||
"FakeTLS host": "FakeTLS host",
|
||
"Concurrency": "Параллелизм",
|
||
"Connection URL": "URL подключения",
|
||
"Connection": "Соединение",
|
||
|
||
// Валидация
|
||
"This field is required": "Это поле обязательно",
|
||
"Value cannot be empty": "Значение не может быть пустым",
|
||
"Port must be between 1 and 65535": "Порт должен быть от 1 до 65535",
|
||
"Port cannot be empty": "Порт не может быть пустым",
|
||
"Password cannot be empty": "Пароль не может быть пустым",
|
||
"Username cannot be empty": "Имя пользователя не может быть пустым",
|
||
"Invalid regular expression": "Неверное регулярное выражение",
|
||
"Invalid port or range. Use 80 or 1000-2000": "Неверный порт или диапазон. Используйте 80 или 1000-2000",
|
||
"Duplicate value": "Дублирующееся значение",
|
||
"Backend validation failed: %s": "Ошибка проверки бэкенда: %s",
|
||
"Option \"%s\" contains an invalid input value.": "Параметр \"%s\" содержит недопустимое значение.",
|
||
"Validation errors:": "Ошибки валидации:",
|
||
"Fix the highlighted fields and save again.": "Исправьте выделенные поля и сохраните снова.",
|
||
|
||
// Управление секциями
|
||
"Add a section": "Добавить секцию",
|
||
"Delete": "Удалить",
|
||
"Enable": "Включить",
|
||
"Cancel": "Отмена",
|
||
"Done": "Готово",
|
||
"Clear": "Очистить",
|
||
"Start": "Старт",
|
||
"Stop": "Стоп",
|
||
"Import": "Импорт",
|
||
"Trace": "Трассировка",
|
||
"Error": "Ошибка",
|
||
"Success": "Успех",
|
||
"Information": "Информация",
|
||
"Loading...": "Загрузка...",
|
||
"Saving...": "Сохранение...",
|
||
"Generating...": "Генерация...",
|
||
"Starting...": "Запуск...",
|
||
"Stopping...": "Остановка...",
|
||
"Checking...": "Проверка...",
|
||
"Testing...": "Тестирование...",
|
||
"Not set": "Не задано",
|
||
"None": "Нет",
|
||
"Enabled": "Включено",
|
||
"Disabled": "Отключено",
|
||
"Action": "Действие",
|
||
"Section action": "Действие секции",
|
||
"Section name": "Имя секции",
|
||
"Display name": "Отображаемое имя",
|
||
"Visible name of this section": "Видимое имя этой секции",
|
||
"What Tachyon should do when this section matches": "Что должен делать Tachyon при совпадении этой секции",
|
||
"Direct connection": "Прямое подключение",
|
||
"Direct (Default)": "Прямое (по умолчанию)",
|
||
"Cascade connection": "Каскадное подключение",
|
||
"Connect through": "Подключаться через",
|
||
"Configuration for Tachyon service": "Конфигурация сервиса Tachyon",
|
||
|
||
// Интерфейсы и мониторинг
|
||
"Network Interface": "Сетевой интерейс",
|
||
"Network interface settings": "Настройки сетевого интерфейса",
|
||
"Interface Monitoring": "Мониторинг интерфейсов",
|
||
"Interface Monitoring Delay": "Задержка мониторинга интерфейсов",
|
||
"Interface monitoring for Bad WAN": "Мониторинг интерфейсов для坏 WAN",
|
||
"Monitored Interfaces": "Отслеживаемые интерфейсы",
|
||
"Select the WAN interfaces to be monitored": "Выберите WAN-интерфейсы для отслеживания",
|
||
"Output Network Interface": "Выходной сетевой интерфейс",
|
||
"Source Network Interface": "Исходный сетевой интерфейс",
|
||
"Enable Output Network Interface": "Включить выходной сетевой интерфейс",
|
||
"Select a network interface": "Выберите сетевой интерфейс",
|
||
"Select an existing network interface": "Выберите существующий сетевой интерфейс",
|
||
"Select network interface for VPN connection": "Выберите интерфейс для VPN-подключения",
|
||
"Select the network interface from which the traffic will originate": "Выберите интерфейс, с которого будет идти трафик",
|
||
"Select the network interface to which the traffic will originate": "Выберите интерфейс, на который будет идти трафик",
|
||
"Mixed Proxy Port": "Порт смешанного прокси",
|
||
"Mixed Proxy Username": "Имя пользователя смешанного прокси",
|
||
"Mixed Proxy Password": "Пароль смешанного прокси",
|
||
"Enable Mixed Proxy": "Включить смешанный прокси",
|
||
"Enable Mixed Proxy Authentication": "Включить аутентификацию смешанного прокси",
|
||
"Expose this section as a local HTTP+SOCKS proxy": "Предоставить эту секцию как локальный HTTP+SOCKS прокси",
|
||
"Port for the local mixed proxy of this section": "Порт локального смешанного прокси для этой секции",
|
||
"Require a username and password for the local mixed proxy": "Требовать имя пользователя и пароль для локального смешанного прокси",
|
||
|
||
// Приоритеты и фильтрация
|
||
"Priority": "Приоритет",
|
||
"Priority levels": "Уровни приоритета",
|
||
"Priority level settings": "Настройки уровня приоритета",
|
||
"Priority settings": "Настройки приоритета",
|
||
"Level name": "Имя уровня",
|
||
"Name shown in the priority level list": "Имя в списке уровней приоритета",
|
||
"Enter a level name": "Введите имя уровня",
|
||
"All servers": "Все серверы",
|
||
"All remaining servers": "Все остальные серверы",
|
||
"All remaining servers means every server not already assigned to a higher-priority level.": "Все остальные серверы — это все серверы, не назначенные на уровень с более высоким приоритетом.",
|
||
"All except selected": "Все кроме выбранных",
|
||
"All remaining except selected": "Все остальные кроме выбранных",
|
||
"Only selected": "Только выбранные",
|
||
"Only selected except exclusions": "Только выбранные кроме исключений",
|
||
"Only the specified servers": "Только указанные серверы",
|
||
"Select all": "Выбрать все",
|
||
"Hide selected servers.": "Скрыть выбранные серверы.",
|
||
"Show only selected servers.": "Показать только выбранные серверы.",
|
||
"Exclude servers": "Исключить серверы",
|
||
"Include servers": "Включить серверы",
|
||
"Show servers only from the specified countries.": "Показывать серверы только из указанных стран.",
|
||
"Show servers whose names match the expression.": "Показывать серверы, чьи имена соответствуют выражению.",
|
||
"Show only servers with one of the selected protocols.": "Показывать только серверы с одним из выбранных протоколов.",
|
||
"Show only servers with one of the selected security types.": "Показывать только серверы с одним из выбранных типов безопасности.",
|
||
"Show only servers with one of the selected transports.": "Показывать только серверы с одним из выбранных транспортов.",
|
||
"Hide servers from the specified countries.": "Скрыть серверы из указанных стран.",
|
||
"Hide servers whose names match the expression.": "Скрыть серверы, чьи имена соответствуют выражению.",
|
||
"Hide servers with one of the selected protocols.": "Скрыть серверы с одним из выбранных протоколов.",
|
||
"Hide servers with one of the selected security types.": "Скрыть серверы с одним из выбранных типов безопасности.",
|
||
"Hide servers with one of the selected transports.": "Скрыть серверы с одним из выбранных транспортов.",
|
||
"Do not test servers from these countries.": "Не тестировать серверы из этих стран.",
|
||
"Do not test servers whose names match the expression.": "Не тестировать серверы, чьи имена соответствуют выражению.",
|
||
"Do not test servers with one of the selected protocols.": "Не тестировать серверы с одним из выбранных протоколов.",
|
||
"Do not test servers with one of the selected security types.": "Не тестировать серверы с одним из выбранных типов безопасности.",
|
||
"Do not test servers with one of the selected transports.": "Не тестировать серверы с одним из выбранных транспортов.",
|
||
"Do not test specified servers.": "Не тестировать указанные серверы.",
|
||
"Test only selected servers.": "Тестировать только выбранные серверы.",
|
||
"Test servers only from the specified countries.": "Тестировать серверы только из указанных стран.",
|
||
"Test servers whose names match the expression.": "Тестировать серверы, чьи имена соответствуют выражению.",
|
||
"Test only servers with one of the selected protocols.": "Тестировать только серверы с одним из выбранных протоколов.",
|
||
"Test only servers with one of the selected security types.": "Тестировать только серверы с одним из выбранных типов безопасности.",
|
||
"Test only servers with one of the selected transports.": "Тестировать только серверы с одним из выбранных транспортов.",
|
||
"Only servers whose names match the expression.": "Только серверы, чьи имена соответствуют выражению.",
|
||
"Only servers with one of the selected protocols.": "Только серверы с одним из выбранных протоколов.",
|
||
"Only servers with one of the selected security types.": "Только серверы с одним из выбранных типов безопасности.",
|
||
"Only servers with one of the selected transports.": "Только серверы с одним из выбранных транспортов.",
|
||
"Only from the specified countries.": "Только из указанных стран.",
|
||
"Remove servers from the specified countries from this level.": "Удалить серверы из указанных стран с этого уровня.",
|
||
"Remove servers whose names match the expression from this level.": "Удалить серверы, чьи имена соответствуют выражению, с этого уровня.",
|
||
"Remove the specified servers from this level.": "Удалить указанные серверы с этого уровня.",
|
||
"Exclude servers with one of the selected protocols from this level.": "Исключить серверы с одним из выбранных протоколов с этого уровня.",
|
||
"Exclude servers with one of the selected security types from this level.": "Исключить серверы с одним из выбранных типов безопасности с этого уровня.",
|
||
"Exclude servers with one of the selected transports from this level.": "Исключить серверы с одним из выбранных транспортов с этого уровня.",
|
||
"Hide servers from selected groups without repeating their filtering criteria.": "Скрыть серверы из выбранных групп без повторения критериев фильтрации.",
|
||
"Show servers from selected groups without repeating their filtering criteria.": "Показать серверы из выбранных групп без повторения критериев фильтрации.",
|
||
"Traffic for this level goes directly.": "Трафик этого уровня идёт напрямую.",
|
||
"Traffic will go through the default route (Direct/Default).": "Трафик пойдёт через маршрут по умолчанию (Direct/Default).",
|
||
|
||
// URLTest и группы
|
||
"URLTest": "URLTest",
|
||
"URLTest settings": "Настройки URLTest",
|
||
"Allows limiting the list of servers for URLTest": "Позволяет ограничить список серверов для URLTest",
|
||
"Server group for automatic lowest-latency selection": "Группа серверов для автоматического выбора с наименьшей задержкой",
|
||
"Server group for priority failover": "Группа серверов для приоритетного переключения",
|
||
"Keep URLTest before latency-sorted servers": "Сохранять URLTest перед серверами, отсортированными по задержке",
|
||
"Keep Priority before latency-sorted servers": "Сохранять приоритет перед серверами, отсортированными по задержке",
|
||
"Hide URLTest group nodes": "Скрыть узлы групп URLTest",
|
||
"Hide cascade connection nodes": "Скрыть узлы каскадных подключений",
|
||
"Hide intermediate nodes used as detours by other subscription nodes": "Скрыть промежуточные узлы, используемые как detour другими узлами подписки",
|
||
"Hide individual nodes that are already included in imported subscription URLTest groups": "Скрыть отдельные узлы, уже включённые в импортированные группы URLTest подписки",
|
||
"Interrupt connections when URLTest switches the selected server": "Разрывать соединения при переключении URLTest на другой сервер",
|
||
"Interrupt connections when priority failover switches server": "Разрывать соединения при переключении приоритетного failover",
|
||
"How often higher priority levels are checked while a lower level is active": "Как часто проверяются уровни с более высоким приоритетом, когда активен нижний уровень",
|
||
"Periodically check the current level and switch to a faster server even when the current one works.": "Периодически проверять текущий уровень и переключаться на более быстрый сервер, даже если текущий работает.",
|
||
"When switching to another level, test every server and select the fastest instead of the first working one.": "При переключении на другой уровень тестировать каждый сервер и выбирать самый быстрый вместо первого рабочего.",
|
||
"Stop checking when URLTest group is not used. Use sing-box duration format like 1d, 12h or 30m.": "Остановить проверку, когда группа URLTest не используется. Используйте формат длительности sing-box, например 1d, 12h или 30m.",
|
||
|
||
// Подписки
|
||
"Subscription URL": "URL подписки",
|
||
"Subscription URL settings": "Настройки URL подписки",
|
||
"Enter the subscription URL": "Введите URL подписки",
|
||
"Subscription auto update": "Автообновление подписки",
|
||
"Subscription update interval": "Интервал обновления подписки",
|
||
"Update this subscription automatically": "Обновлять эту подписку автоматически",
|
||
"Download subscription through a section": "Загружать подписку через секцию",
|
||
"Download subscriptions via the selected section": "Загружать подписки через выбранную секцию",
|
||
"Download through": "Загружать через",
|
||
"Download lists through": "Загружать списки через",
|
||
"Download lists through a section": "Загружать списки через секцию",
|
||
"Download components through": "Загружать компоненты через",
|
||
"Download components through a section": "Загружать компоненты через секцию",
|
||
"Download component packages via the selected section": "Загружать пакеты компонентов через выбранную секцию",
|
||
"Download remote lists and rule sets via the selected section": "Загружать удалённые списки и наборы правил через выбранную секцию",
|
||
"Import subscription URLTest groups": "Импортировать группы URLTest подписки",
|
||
"Import URLTest groups returned by this subscription provider": "Импортировать группы URLTest, возвращённые этим провайдером подписки",
|
||
"Import URLTest groups returned by this subscription provider": "Импортировать группы URLTest, возвращённые этим провайдером подписки",
|
||
"Auto-update Hosts Lists": "Автообновление списков Hosts",
|
||
"Hosts Lists Update Interval": "Интервал обновления списков Hosts",
|
||
"Automatically update remote hosts lists on schedule": "Автоматически обновлять удалённые списки Hosts по расписанию",
|
||
"Pre-download all preset lists": "Предзагрузить все предустановленные списки",
|
||
"Enable list updates": "Включить обновление списков",
|
||
"Enable automatic updates for remote lists and rule sets": "Включить автообновление удалённых списков и наборов правил",
|
||
"List Update Frequency": "Частота обновления списков",
|
||
|
||
// Правила и маршрутизация
|
||
"Rule Sets (.srs / .json)": "Наборы правил (.srs / .json)",
|
||
"Rule set settings": "Настройки набора правил",
|
||
"Rule sets": "Наборы правил",
|
||
"Built-in rule sets": "Встроенные наборы правил",
|
||
"Rule": "Правило",
|
||
"Section Rules Content": "Содержимое правил секции",
|
||
"Routing Rule Tracer": "Трассировщик правил маршрутизации",
|
||
"Tracing routing rules...": "Трассировка правил маршрутизации...",
|
||
"No Custom Rules Matched": "Нет совпадений с пользовательскими правилами",
|
||
"Routing mode": "Режим маршрутизации",
|
||
"Routing section": "Секция маршрутизации",
|
||
"Traffic type filter": "Фильтр типа трафика",
|
||
"Traffic of specified protocols (e.g. BitTorrent, QUIC, STUN) will bypass this section.": "Трафик указанных протоколов (например BitTorrent, QUIC, STUN) будет обходить эту секцию.",
|
||
"BitTorrent / P2P": "BitTorrent / P2P",
|
||
"STUN (P2P Calls)": "STUN (P2P-звонки)",
|
||
"QUIC (HTTP/3)": "QUIC (HTTP/3)",
|
||
"RDP": "RDP",
|
||
"SSH": "SSH",
|
||
"Apply rules of this section only to selected protocols.": "Применять правила этой секции только к выбранным протоколам.",
|
||
"Resolve domain names before routing so sing-box can use real destination IPs.": "Разрешать имена доменов перед маршрутизацией, чтобы sing-box мог использовать реальные IP назначения.",
|
||
"Resolve real IP for routing": "Разрешать реальный IP для маршрутизации",
|
||
"Reset": "Сбросить",
|
||
"Reset Settings": "Сбросить настройки",
|
||
"Resetting…": "Сброс…",
|
||
"Restores the Tachyon factory defaults: all rules, subscriptions, custom DNS servers and other options will be lost.": "Восстанавливает заводские настройки Tachyon: все правила, подписки, пользовательские DNS-серверы и другие параметры будут удалены.",
|
||
"Settings have been reset to defaults. The page will reload.": "Настройки сброшены к значениям по умолчанию. Страница будет перезагружена.",
|
||
"This will erase all Tachyon settings and restore the factory defaults. The service will restart. This action cannot be undone.": "Все настройки Tachyon будут удалены и восстановлены заводские значения. Сервис будет перезапущен. Это действие нельзя отменить.",
|
||
"DSCP marks (QoS)": "DSCP-метки (QoS)",
|
||
|
||
// FakeIP и кэш
|
||
"Cache File Path": "Путь к файлу кэша",
|
||
"Cache file path cannot be empty": "Путь к файлу кэша не может быть пустым",
|
||
"Config File Path": "Путь к файлу конфигурации",
|
||
"Enable Config Validation": "Включить проверку конфигурации",
|
||
"Validates sing-box config before restart to prevent boot loops on broken configs.": "Проверять конфигурацию sing-box перед перезапуском, чтобы предотвратить циклические перезагрузки.",
|
||
"Enable Graceful Degradation": "Включить мягкое деградирование",
|
||
"If one health check fails with an error, continue running other checks instead of stopping.": "Если одна проверка завершается ошибкой, продолжать другие проверки, а не останавливаться.",
|
||
|
||
// Watchdog и мониторинг
|
||
"Enable Watchdog": "Включить Watchdog",
|
||
"Watchdog Status": "Статус Watchdog",
|
||
"Enable Health Metrics": "Включить метрики здоровья",
|
||
"Enable Proxy Health Monitor": "Включить мониторинг здоровья прокси",
|
||
"Enable Anomaly Detection": "Включить обнаружение аномалий",
|
||
"Enable Adaptive Intervals": "Включить адаптивные интервалы",
|
||
"Enable Smart Cooldowns": "Включить умные cooldown'ы",
|
||
"Monitoring": "Мониторинг",
|
||
"Use 3-tier check intervals: fast (15s), normal (120s), slow (300s) instead of a single interval.": "Использовать 3-уровневые интервалы проверки: быстрый (15с), нормальный (120с), медленный (300с).",
|
||
"Automatically increase check intervals when healthy (to 5 min) and decrease on problems (to 120s).": "Автоматически увеличивать интервалы проверки при нормальном состоянии (до 5 мин) и уменьшать при проблемах (до 120с).",
|
||
"Periodically checks if the proxy is responding. Restarts Tachyon after consecutive failures.": "Периодически проверяет, отвечает ли прокси. Перезапускает Tachyon после последовательных ошибок.",
|
||
"Records proxy/DNS latency and health status in hourly buckets for analysis.": "Записывает задержку прокси/DNS и состояние здоровья в почасовые блоки для анализа.",
|
||
"Monitors sing-box reconnect frequency. Alerts if too many reconnects per hour.": "Отслеживает частоту переподключений sing-box. Оповещает при слишком частых переподключениях.",
|
||
"Max reconnects per hour before alert (default 10).": "Макс. переподключений в час до оповещения (по умолчанию 10).",
|
||
"Proxy Health Check Interval (s)": "Интервал проверки здоровья прокси (с)",
|
||
"Proxy Health Check URL": "URL проверки здоровья прокси",
|
||
"How often to check proxy health in seconds (fast tier, default 30).": "Как часто проверять здоровье прокси в секундах (быстрый уровень, по умолчанию 30).",
|
||
"Number of consecutive failures before restarting (default 3).": "Количество последовательных ошибок до перезапуска (по умолчанию 3).",
|
||
"URL to test through the proxy (default: Cloudflare 204).": "URL для теста через прокси (по умолчанию: Cloudflare 204).",
|
||
"Metrics Retention (hours)": "Хранение метрик (часы)",
|
||
"How many hours of metrics to keep (default 24).": "Сколько часов хранить метрики (по умолчанию 24).",
|
||
"Polling Interval (seconds)": "Интервал опроса (секунды)",
|
||
"How often to check DNS health in seconds (default 60).": "Как часто проверять здоровье DNS в секундах (по умолчанию 60).",
|
||
"How often to check the active DNS servers.": "Как часто проверять активные DNS-серверы.",
|
||
"How often to check whether a higher-priority DNS server has recovered.": "Как часто проверять, восстановился ли DNS-сервер с более высоким приоритетом.",
|
||
"Number of consecutive failed checks required before switching DNS servers.": "Количество последовательных неудачных проверок до переключения DNS-серверов.",
|
||
"Number of consecutive successful checks required before returning to a higher-priority DNS server.": "Количество последовательных успешных проверок до возврата на DNS-сервер с более высоким приоритетом.",
|
||
"Maximum time to wait for example.com to resolve during a DNS health check.": "Максимальное время ожидания разрешения example.com при проверке DNS.",
|
||
"Minimum latency difference in milliseconds that triggers switching to a faster server.": "Минимальная разница задержки в миллисекундах, при которой происходит переключение на более быстрый сервер.",
|
||
"Check interval": "Интервал проверки",
|
||
|
||
// Telegram
|
||
"Enable Telegram Bot": "Включить Telegram-бота",
|
||
"Telegram Bot Token": "Токен Telegram-бота",
|
||
"Enter the API token obtained from @BotFather.": "Введите токен API, полученный от @BotFather.",
|
||
"Token is required when the bot is enabled": "Токен обязателен, когда бот включён",
|
||
"Proxy Section for Bot": "Секция прокси для бота",
|
||
"Route bot API requests through this section. Leave empty to use the default mixed proxy.": "Маршрутизировать запросы API бота через эту секцию. Оставьте пустым для использования смешанного прокси по умолчанию.",
|
||
"Administrator Chat IDs": "Chat ID администраторов",
|
||
"Comma-separated list of Telegram user IDs authorized to control the bot.": "Список Telegram user ID через запятую, авторизованных для управления ботом.",
|
||
"At least one Admin Chat ID is required": "Требуется как минимум один Chat ID администратора",
|
||
"Bot Status": "Статус бота",
|
||
"Start bot": "Запустить бота",
|
||
"Stop bot": "Остановить бота",
|
||
"Failed to start bot": "Не удалось запустить бота",
|
||
"Failed to stop bot": "Не удалось остановить бота",
|
||
"Failed to start watchdog": "Не удалось запустить watchdog",
|
||
"Failed to stop watchdog": "Не удалось остановить watchdog",
|
||
"Start Watchdog first": "Сначала запустите Watchdog",
|
||
"Polling interval must be at least 1 second": "Интервал опроса должен быть не менее 1 секунды",
|
||
"How often to check Telegram for new messages (default: 5).": "Как часто проверять Telegram на новые сообщения (по умолчанию: 5).",
|
||
"Notify on Service Restarts": "Уведомлять о перезапусках сервиса",
|
||
"Notify on Server Switches": "Уведомлять о переключениях серверов",
|
||
"Notify on Subscription Updates": "Уведомлять об обновлениях подписок",
|
||
"Notify on Certificate Warnings": "Уведомлять о предупреждениях сертификатов",
|
||
"Notify on Core Crashes": "Уведомлять о падениях ядра",
|
||
"Notify on DNS Leaks": "Уведомлять об утечках DNS",
|
||
"Send a Telegram notification if the Tachyon service is restarted by the watchdog.": "Отправлять уведомление в Telegram, если сервис Tachyon перезапущен watchdog.",
|
||
"Send a Telegram notification when a URLTest group switches to a new server.": "Отправлять уведомление в Telegram при переключении группы URLTest на новый сервер.",
|
||
"Send a Telegram notification when proxy subscriptions are successfully updated.": "Отправлять уведомление в Telegram при успешном обновлении подписок прокси.",
|
||
"Send a Telegram notification if SSL/TLS certificates are close to expiration.": "Отправлять уведомление в Telegram, если SSL/TLS-сертификаты скоро истекут.",
|
||
"Send a Telegram notification if sing-box or nftables rules crash and get auto-restored.": "Отправлять уведомление в Telegram, если правила sing-box или nftables упали и были автоматически восстановлены.",
|
||
"Send a Telegram notification if a potential DNS leak is detected.": "Отправлять уведомление в Telegram при обнаружении потенциальной утечки DNS.",
|
||
|
||
// AI Doctor / LLM
|
||
"Enable AI Doctor (ChatGPT / LLM Analysis)": "Включить ИИ-доктора (анализ ChatGPT / LLM)",
|
||
"Select AI LLM provider for diagnostics": "Выберите провайдер ИИ LLM для диагностики",
|
||
"Language for AI Doctor diagnosis responses": "Язык ответов диагностики ИИ-доктора",
|
||
"API Key for OpenAI (sk-...) or DeepSeek (optional for Ollama / LM Studio)": "API-ключ для OpenAI (sk-...) или DeepSeek (опционально для Ollama / LM Studio)",
|
||
"Custom OpenAI-Compatible API (OpenRouter)": "Пользовательский OpenAI-совместимый API (OpenRouter)",
|
||
"Custom OpenAI-compatible API endpoint URL (e.g. http://192.168.1.100:11434/v1/chat/completions)": "Пользовательский URL эндпоинта OpenAI-совместимого API (напр. http://192.168.1.100:11434/v1/chat/completions)",
|
||
"Connect ChatGPT, DeepSeek or local LLM to get automated diagnostic reports and intelligent root-cause analysis.": "Подключите ChatGPT, DeepSeek или локальную LLM для получения автоматических диагностических отчётов и умного анализа причин проблем.",
|
||
"Allows Tachyon to send diagnostic snapshots to ChatGPT or DeepSeek API for intelligent root-cause analysis and auto-repair recommendations.": "Позволяет Tachyon отправлять диагностические снимки в ChatGPT или DeepSeek API для умного анализа причин проблем и рекомендаций по исправлению.",
|
||
"Model name to use. Leave empty to use default (gpt-4o-mini / claude-3-5-haiku / deepseek-chat / llama3:latest).": "Имя модели. Оставьте пустым для использования по умолчанию (gpt-4o-mini / claude-3-5-haiku / deepseek-chat / llama3:latest).",
|
||
"AI Watchdog": "ИИ Watchdog",
|
||
"AI Watchdog settings saved. Restart watchdog to apply.": "Настройки ИИ Watchdog сохранены. Перезапустите watchdog для применения.",
|
||
"Failed to save AI Watchdog settings": "Не удалось сохранить настройки ИИ Watchdog",
|
||
"Save AI Watchdog Settings": "Сохранить настройки ИИ Watchdog",
|
||
"Advanced self-healing features. Requires Watchdog to be enabled.": "Расширенные функции самовосстановления. Требуется включённый Watchdog.",
|
||
"Smart Detect": "Умное определение",
|
||
"Smart Detect settings saved": "Настройки умного определения сохранены",
|
||
"Failed to save Smart Detect settings": "Не удалось сохранить настройки умного определения",
|
||
"Save Smart Detect Settings": "Сохранить настройки умного определения",
|
||
"Persistent Smart Detect": "Постоянное умное определение",
|
||
"Store auto-detected domains in /etc instead of /tmp to survive reboots.": "Хранить автоопределённые домены в /etc вместо /tmp для сохранения после перезагрузки.",
|
||
"Domains automatically detected by Smart Detect or added via Telegram bot. You can manually edit or remove them here.": "Домены, автоматически определённые Smart Detect или добавленные через Telegram-бота. Вы можете вручную отредактировать или удалить их здесь.",
|
||
"No domains detected yet": "Домены пока не обнаружены",
|
||
"Auto-detected Domains": "Автоопределённые домены",
|
||
"Auto-detected domains": "Автоопределённые домены",
|
||
"New domains:": "Новые домены:",
|
||
"List of domains automatically detected and the section they were added to. To edit or remove them, open the routing rules of the respective section.": "Список автоматически определённых доменов и секций, в которые они были добавлены. Для редактирования или удаления откройте правила маршрутизации соответствующей секции.",
|
||
"DNS Turbo Cache": "Быстрый DNS-кэш",
|
||
"DNS Turbo Cache saved": "DNS Turbo Cache сохранён",
|
||
"Failed to save DNS Turbo Cache": "Не удалось сохранить DNS Turbo Cache",
|
||
"Enable DNS Turbo Cache": "Включить быстрый DNS-кэш",
|
||
"Keeps FakeIP cache persistent across reboots and pre-resolves popular blocked domains on startup so first-visit latency is 0 ms.": "Сохраняет кэш FakeIP между перезагрузками и предварительно разрешает популярные заблокированные домены при запуске, чтобы задержка первого обращения была 0 мс.",
|
||
"Cache all built-in lists and databases even if they are not currently selected in any section. Recommended if you have plenty of storage space or USB drive.": "Кэшировать все встроенные списки и базы данных, даже если они не выбраны ни в одной секции. Рекомендуется при большом объёме хранилища или USB-накопителе.",
|
||
|
||
// Устройства и фильтрация
|
||
"Device filter": "Фильтр устройств",
|
||
"Device or IP": "Устройство или IP",
|
||
"Forced device routing": "Принудительная маршрутизация устройств",
|
||
"Excluded devices": "Исключённые устройства",
|
||
"Source Devices": "Устройства-источники",
|
||
"Game Console IPs": "IP игровых консолей",
|
||
"Game Console Optimizer (NAT Type 1)": "Оптимизатор игровых консолей (NAT Type 1)",
|
||
"Bypasses UDP traffic for selected game consoles (PS5/Xbox) to achieve NAT Type 1 / 2 (Full Cone NAT) for P2P matchmaking, while keeping TCP (PSN/Auth) routed through the proxy.": "Обходит UDP-трафик для выбранных игровых консолей (PS5/Xbox) для достижения NAT Type 1 / 2 (Full Cone NAT) для P2P-матчмейкинга, сохраняя TCP (PSN/Auth) через прокси.",
|
||
"Select or enter the IP addresses of your game consoles.": "Выберите или введите IP-адреса ваших игровых консолей.",
|
||
"P2P Leak Protection": "Защита от утечек P2P",
|
||
"P2P Client Ports": "Порты P2P-клиента",
|
||
"Pin P2P isolation to the torrent client's own ports, comma separated. Each entry is \"proto\", \"proto:port\" or \"proto:port-port\" (tcp/udp). Without a port the whole protocol is routed direct.": "Закрепить изоляцию P2P за портами торрент-клиента, через запятую. Каждая запись — \"протокол\", \"протокол:порт\" или \"протокол:порт-порт\" (tcp/udp). Без порта весь протокол уходит напрямую.",
|
||
"Detects and drops STUN/TURN packets in nftables to prevent real IP leaks via WebRTC.": "Обнаруживает и отбрасывает пакеты STUN/TURN в nftables для предотвращения утечек реального IP через WebRTC.",
|
||
"WebRTC Leak Protection": "Защита от утечек WebRTC",
|
||
"Disable QUIC": "Отключить QUIC",
|
||
"Disable the QUIC protocol to improve compatibility or fix issues with video streaming": "Отключить протокол QUIC для улучшения совместимости или исправления проблем с видео-стримингом",
|
||
"Isolate BitTorrent traffic and force it direct to prevent VPN bans": "Изолировать трафик BitTorrent и направить его напрямую для предотвращения блокировок VPN",
|
||
"All traffic from these IP addresses will be routed through the section unconditionally, ignoring all other conditions.": "Весь трафик от этих IP-адресов будет маршрутизирован через секцию безусловно, игнорируя все остальные условия.",
|
||
"Traffic from these IP addresses will never be routed through this section, even if other conditions match.": "Трафик от этих IP-адресов никогда не будет маршрутизирован через эту секцию, даже если другие условия совпадают.",
|
||
"Apply section rules only to the specified local IP addresses": "Применять правила секции только к указанным локальным IP-адресам",
|
||
"Include IP addresses and subnets": "Включить IP-адреса и подсети",
|
||
|
||
// WARP / AmneziaWG
|
||
"AmneziaWG Generator": "Генератор AmneziaWG",
|
||
"Import AmneziaWG settings from .conf file": "Импортировать настройки AmneziaWG из файла .conf",
|
||
"Load .conf": "Загрузить .conf",
|
||
"Load .conf config": "Загрузить конфигурацию .conf",
|
||
"Select a file with .conf extension": "Выберите файл с расширением .conf",
|
||
"AmneziaWG config loaded successfully!": "Конфигурация AmneziaWG успешно загружена!",
|
||
"Generate WARP Config": "Сгенерировать конфигурацию WARP",
|
||
"Automatically generate a Cloudflare WARP account and configure all AmneziaWG settings.": "Автоматически создать аккаунт Cloudflare WARP и настроить все параметры AmneziaWG.",
|
||
"Cloudflare API access token": "Токен доступа Cloudflare API",
|
||
"Cloudflare WARP API access token": "Токен доступа Cloudflare WARP API",
|
||
"Cloudflare account / device ID": "Аккаунт / ID устройства Cloudflare",
|
||
"Cloudflare WARP account / device ID": "Аккаунт / ID устройства Cloudflare WARP",
|
||
"WireGuard private key from your Cloudflare account": "Приватный ключ WireGuard из вашего аккаунта Cloudflare",
|
||
"WireGuard private key from your Cloudflare WARP account": "Приватный ключ WireGuard из вашего аккаунта Cloudflare WARP",
|
||
"WARP Access Token": "Токен доступа WARP",
|
||
"WARP Account ID": "ID аккаунта WARP",
|
||
"WARP Private Key": "Приватный ключ WARP",
|
||
"WARP Configuration generated and loaded successfully!": "Конфигурация WARP успешно сгенерирована и загружена!",
|
||
"Failed to generate WARP config:": "Не удалось сгенерировать конфигурацию WARP:",
|
||
"Failed to parse WARP config:": "Не удалось разобрать конфигурацию WARP:",
|
||
"Error running generator:": "Ошибка запуска генератора:",
|
||
"Proxy to use for WARP API registration (api.cloudflareclient.com)": "Прокси для регистрации WARP API (api.cloudflareclient.com)",
|
||
"HWID": "HWID",
|
||
"Enter HWID": "Введите HWID",
|
||
"Auto-generate HWID": "Авто-генерация HWID",
|
||
"Generate HWID": "Сгенерировать HWID",
|
||
"Generated!": "Сгенерировано!",
|
||
"Generate a random 16-character hexadecimal HWID": "Сгенерировать случайный 16-символьный шестнадцатеричный HWID",
|
||
"Generate HWID from router hardware information for this subscription": "Сгенерировать HWID из аппаратной информации роутера для этой подписки",
|
||
"Generate HWID from router hardware information for this subscription": "Сгенерировать HWID из аппаратной информации роутера для этой подписки",
|
||
"Enter the HWID sent with subscription requests": "Введите HWID, отправляемый с запросами подписки",
|
||
"Auto-update Hosts Lists": "Автообновление списков Hosts",
|
||
"Custom device headers": "Пользовательские заголовки устройства",
|
||
"Override the default OpenWrt device headers for this subscription": "Переопределить стандартные заголовки устройства OpenWrt для этой подписки",
|
||
"Configure User-Agent в the item settings": "Настройте User-Agent в параметрах элемента",
|
||
"Automatic User-Agent selection": "Автоматический выбор User-Agent",
|
||
"Select a common client profile or enter a custom User-Agent": "Выберите общий профиль клиента или введите пользовательский User-Agent",
|
||
"Try compatible User-Agent profiles automatically when downloading this subscription": "Пробовать совместимые профили User-Agent автоматически при загрузке этой подписки",
|
||
"Select or enter a User-Agent": "Выберите или введите User-Agent",
|
||
"User-Agent": "User-Agent",
|
||
"Client link": "Клиентская ссылка",
|
||
"Client link QR code": "QR-код клиентской ссылки",
|
||
"Client link is not available yet": "Клиентская ссылка пока недоступна",
|
||
"Loading client link...": "Загрузка клиентской ссылки...",
|
||
"Add prefix to nodes": "Добавить префикс к узлам",
|
||
"Prefix text": "Текст префикса",
|
||
"Automatically add text to the name of each server from this subscription for convenient filtering.": "Автоматически добавлять текст к имени каждого сервера из этой подписки для удобной фильтрации.",
|
||
"Sort Alphabetically": "Сортировать по алфавиту",
|
||
"Sort by latency": "Сортировать по задержке",
|
||
"Sorts servers in this section by lowest latency in the dashboard.": "Сортировать серверы в этой секции по наименьшей задержке на дашборде.",
|
||
"Pin on dashboard": "Закрепить на дашборде",
|
||
"Show metadata on dashboard": "Показывать метаданные на дашборде",
|
||
"Show subscription metadata for this source on the dashboard": "Показывать метаданные подписки для этого источника на дашборде",
|
||
"Detect server country": "Определять страну сервера",
|
||
"Via country.is": "Через country.is",
|
||
"By flag emoji from name": "По эмодзи флага из имени",
|
||
"GeoSite / GeoIP": "GeoSite / GeoIP",
|
||
"GeoIP Mode": "Режим GeoIP",
|
||
"GeoIP Countries": "Страны GeoIP",
|
||
"Country code (e.g. ru, us, de)": "Код страны (напр. ru, us, de)",
|
||
"Select one or more country ISO codes (e.g. ru, us, de, nl, fr, fi, se, tr, cn, jp, sg, by, kz, ua).": "Выберите один или несколько ISO-кодов стран (напр. ru, us, de, nl, fr, fi, se, tr, cn, jp, sg, by, kz, ua).",
|
||
"Belarus (by)": "Беларусь (by)",
|
||
"China (cn)": "Китай (cn)",
|
||
"Finland (fi)": "Финляндия (fi)",
|
||
"France (fr)": "Франция (fr)",
|
||
"Germany (de)": "Германия (de)",
|
||
"Japan (jp)": "Япония (jp)",
|
||
"Kazakhstan (kz)": "Казахстан (kz)",
|
||
"Netherlands (nl)": "Нидерланды (nl)",
|
||
"Russia (ru)": "Россия (ru)",
|
||
"Singapore (sg)": "Сингапур (sg)",
|
||
"Sweden (se)": "Швеция (se)",
|
||
"Turkey (tr)": "Турция (tr)",
|
||
"Ukraine (ua)": "Украина (ua)",
|
||
"United Kingdom (gb)": "Великобритания (gb)",
|
||
"United States (us)": "США (us)",
|
||
"Unknown country": "Неизвестная страна",
|
||
|
||
// Дополнительные
|
||
"Enable YACD": "Включить YACD",
|
||
"Enable YACD WAN Access": "Включить WAN-доступ к YACD",
|
||
"YACD Secret Key": "Секретный ключ YACD",
|
||
"Secret key for authenticating remote access to YACD when WAN access is enabled.": "Секретный ключ для аутентификации удалённого доступа к YACD при включённом WAN-доступе.",
|
||
"Allows access to YACD from the WAN. Make sure to open the appropriate port in your firewall.": "Позволяет доступ к YACD из WAN. Убедитесь, что соответствующий порт открыт в файрволе.",
|
||
"Log Level": "Уровень логирования",
|
||
"Select the log level for sing-box": "Выберите уровень логирования для sing-box",
|
||
"MTU": "MTU",
|
||
"Persistent Keepalive": "Постоянный Keepalive",
|
||
"Pre-shared key": "Предварительный общий ключ",
|
||
"Preshared Key": "Предварительный общий ключ",
|
||
"PSK": "PSK",
|
||
"Key": "Ключ",
|
||
"Secret": "Секрет",
|
||
"Private Key": "Приватный ключ",
|
||
"Public Key": "Публичный ключ",
|
||
"Peer Public Key": "Публичный ключ пира",
|
||
"Client Certificate": "Клиентский сертификат",
|
||
"Client Key": "Клиентский ключ",
|
||
"CA Certificate": "CA-сертификат",
|
||
"PEM-encoded CA certificate": "CA-сертификат в формате PEM",
|
||
"PEM-encoded client certificate": "Клиентский сертификат в формате PEM",
|
||
"PEM-encoded client private key": "Приватный ключ клиента в формате PEM",
|
||
"TLS Auth/Crypt Key": "Ключ TLS Auth/Crypt",
|
||
"Optional tls-auth or tls-crypt key": "Опциональный ключ tls-auth или tls-crypt",
|
||
"Certificate path": "Путь к сертификату",
|
||
"Key path": "Путь к ключу",
|
||
"Config File Path": "Путь к файлу конфигурации",
|
||
"Select path for sing-box config file. Change this ONLY if you know what you are doing": "Выберите путь к файлу конфигурации sing-box. Изменяйте ТОЛЬКО если точно знаете, что делаете",
|
||
"Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing": "Выберите или введите путь к файлу кэша sing-box. Изменяйте ТОЛЬКО если точно знаете, что делаете",
|
||
"Specify a file path": "Укажите путь к файлу",
|
||
"Specify different files": "Укажите разные файлы",
|
||
"Path must be absolute (start with /)": "Путь должен быть абсолютным (начинаться с /)",
|
||
"Path must end with cache.db": "Путь должен заканчиваться на cache.db",
|
||
"Choose Hosts File...": "Выбрать файл Hosts...",
|
||
"Or paste hosts file content:": "Или вставьте содержимое файла hosts:",
|
||
"Import Hosts File": "Импортировать файл Hosts",
|
||
"Load Current Records": "Загрузить текущие записи",
|
||
"Hosts": "Hosts",
|
||
"Custom DNS Records (Hosts)": "Пользовательские DNS-записи (Hosts)",
|
||
"One record per line: <code>example.com 192.168.1.100</code> or <code>192.168.1.100 example.com</code>. Lines starting with <code>#</code> are ignored.": "Одна запись на строку: <code>example.com 192.168.1.100</code> или <code>192.168.1.100 example.com</code>. Строки, начинающиеся с <code>#</code>, игнорируются.",
|
||
"Paste content or upload a file to preview imported DNS records.": "Вставьте содержимое или загрузите файл для предварительного просмотра импортируемых DNS-записей.",
|
||
"No file selected": "Файл не выбран",
|
||
"Loaded %d current record(s)": "Загружено %d текущих записей",
|
||
"Loaded!": "Загружено!",
|
||
"Import (%d records)": "Импорт (%d записей)",
|
||
"Successfully imported %d DNS record(s)": "Успешно импортировано %d DNS-записей",
|
||
"Records: %d": "Записей: %d",
|
||
"Skip loopback & local entries (127.0.0.1, ::1, 0.0.0.0, localhost)": "Пропустить loopback и локальные записи (127.0.0.1, ::1, 0.0.0.0, localhost)",
|
||
"Overwrite existing records (if unchecked, merge with existing records)": "Перезаписать существующие записи (если снято — объединить с существующими)",
|
||
"Community Lists": "Community-списки",
|
||
"Domain lists": "Списки доменов",
|
||
"Domain and IP lists": "Списки доменов и IP",
|
||
"Remote Hosts Lists": "Удалённые списки Hosts",
|
||
"Add URLs or local paths to .lst lists containing domains and subnets.": "Добавьте URL или локальные пути к спискам .lst, содержащим домены и подсети.",
|
||
"Add URLs or local paths to .lst lists containing domains. IP entries are ignored.": "Добавьте URL или локальные пути к спискам .lst, содержащим домены. IP-записи игнорируются.",
|
||
"Add URLs or local paths to .srs / .json lists. Only domain rules are supported.": "Добавьте URL или локальные пути к спискам .srs / .json. Поддерживаются только правила доменов.",
|
||
"Add URLs or local paths to .srs / .json lists. Subnets are ignored by default.": "Добавьте URL или локальные пути к спискам .srs / .json. Подсети игнорируются по умолчанию.",
|
||
"List must be an HTTP(S) URL or a local .lst path": "Список должен быть HTTP(S) URL или локальным путём .lst",
|
||
"Rule set must be an HTTP(S) URL or a local .srs / .json path": "Набор правил должен быть HTTP(S) URL или локальным путём .srs / .json",
|
||
"Subnets from the list will be extracted and added to nftables": "Подсети из списка будут извлечены и добавлены в nftables",
|
||
"Include IP addresses and subnets": "Включить IP-адреса и подсети",
|
||
"Enable built-in DNS resolver for domains handled by this section": "Включить встроенный DNS-резолвер для доменов, обрабатываемых этой секцией",
|
||
"Domain test sections": "Секции тестирования доменов",
|
||
"Select and order the sections through which blocked domains are tested. Checked sections are tried top-to-bottom.": "Выберите и упорядочите секции, через которые тестируются заблокированные домены. Отмеченные секции проверяются сверху вниз.",
|
||
"Section test order (checked = active, drag rows with △▽):": "Порядок тестирования секций (отмечено = активно, перетаскивайте строки △▽):",
|
||
"Select a section for downloading this subscription": "Выберите секцию для загрузки этой подписки",
|
||
"Select a transit section": "Выберите транзитную секцию",
|
||
"Select a section": "Выберите секцию",
|
||
"Selected section": "Выбранная секция",
|
||
"Select an intermediate section": "Выберите промежуточную секцию",
|
||
"Use another section as an intermediate hop to connect to servers in this section. Does not apply to network interfaces or JSON outbounds.": "Использовать другую секцию в качестве промежуточного узла для подключения к серверам в этой секции. Не применяется к сетевым интерфейсам и JSON-выходам.",
|
||
"Current section cannot be used as its own transit section": "Текущая секция не может использоваться как собственная транзитная секция",
|
||
"Current section cannot download its own subscription": "Текущая секция не может загружать собственную подписку",
|
||
"Enter a display name": "Введите отображаемое имя",
|
||
"Enter a complete sing-box outbound object": "Введите полный объект outbound sing-box",
|
||
"Inbound JSON": "Inbound JSON",
|
||
"Inbound JSON cannot be empty": "Inbound JSON не может быть пустым",
|
||
"Inbound JSON must be an object with a type field": "Inbound JSON должен быть объектом с полем type",
|
||
"JSON outbound": "JSON outbound",
|
||
"JSON outbound settings": "Настройки JSON outbound",
|
||
"Custom outbound configurations in JSON format": "Пользовательские конфигурации outbound в формате JSON",
|
||
"Traffic from these IP addresses will never be routed through this section, even if other conditions match.": "Трафик от этих IP-адресов никогда не будет маршрутизирован через эту секцию, даже если другие условия совпадают.",
|
||
"Server information": "Информация о сервере",
|
||
"Server name": "Имя сервера",
|
||
"Server name / SNI": "Имя сервера / SNI",
|
||
"Reality fake site": "Фейковый сайт Reality",
|
||
"Reality fake site port": "Порт фейкового сайта Reality",
|
||
"Reality max time difference": "Макс. разница времени Reality",
|
||
"Reality private key": "Приватный ключ Reality",
|
||
"Reality public key": "Публичный ключ Reality",
|
||
"Reality short ID": "Короткий ID Reality",
|
||
"Reality short ID must contain 1-8 hex digits": "Короткий ID Reality должен содержать 1-8 шестнадцатеричных цифр",
|
||
"Auth Digest": "Auth Digest",
|
||
"Snell Version": "Версия Snell",
|
||
"Fronting IP": "Fronting IP",
|
||
"Fronting port": "Fronting порт",
|
||
"Fronting proxy protocol": "Протокол Fronting прокси",
|
||
"gRPC service": "Сервис gRPC",
|
||
"Transport host": "Хост транспорта",
|
||
"Transport path": "Путь транспорта",
|
||
"Transport path must start with /": "Путь транспорта должен начинаться с /",
|
||
"HTTP hosts": "HTTP хосты",
|
||
"XHTTP mode": "Режим XHTTP",
|
||
"MASQUE Access Token": "Токен доступа MASQUE",
|
||
"MASQUE Account ID": "ID аккаунта MASQUE",
|
||
"MASQUE Private Key": "Приватный ключ MASQUE",
|
||
"Fallback on unknown DC": "Fallback при неизвестном DC",
|
||
"Padding": "Padding",
|
||
"Handshake timeout": "Таймаут рукопожатия",
|
||
"Time skew tolerance": "Допуск отклонения времени",
|
||
"Local Address": "Локальный адрес",
|
||
"Peer Public Key": "Публичный ключ пира",
|
||
"Allowed domain prefixes are full:, keyword:, and regex:": "Допустимые префиксы доменов: full:, keyword:, и regex:",
|
||
"The rule applies to the domain and all its subdomains. Use full:, keyword:, or regex: prefixes for exact match, keyword match, or regular expression.": "Правило применяется к домену и всем его поддоменам. Используйте префиксы full:, keyword: или regex: для точного совпадения, совпадения по ключевому слову или регулярного выражения.",
|
||
"Keyword must not contain spaces or commas": "Ключевое слово не должно содержать пробелов или запятых",
|
||
"Regular expression must not contain spaces or commas": "Регулярное выражение не должно содержать пробелов или запятых",
|
||
"Invalid ByeDPI strategy": "Неверная стратегия ByeDPI",
|
||
"ByeDPI strategy cannot be empty": "Стратегия ByeDPI не может быть пустой",
|
||
"Invalid NFQWS strategy": "Неверная стратегия NFQWS",
|
||
"NFQWS strategy cannot be empty": "Стратегия NFQWS не может быть пустой",
|
||
"Invalid NFQWS2 strategy": "Неверная стратегия NFQWS2",
|
||
"NFQWS2 strategy cannot be empty": "Стратегия NFQWS2 не может быть пустой",
|
||
"ByeDPI Strategy": "Стратегия ByeDPI",
|
||
"NFQWS Strategy": "Стратегия NFQWS",
|
||
"NFQWS2 Strategy": "Стратегия NFQWS2",
|
||
"Unable to validate the ByeDPI strategy through the backend parser.": "Не удалось проверить стратегию ByeDPI через парсер бэкенда.",
|
||
"Unable to validate the NFQWS strategy through the backend parser.": "Не удалось проверить стратегию NFQWS через парсер бэкенда.",
|
||
"Unable to validate the NFQWS2 strategy through the backend parser.": "Не удалось проверить стратегию NFQWS2 через парсер бэкенда.",
|
||
"ByeDPI option requires a value: %s": "Параметр ByeDPI требует значение: %s",
|
||
"ByeDPI option does not accept a value: %s": "Параметр ByeDPI не принимает значение: %s",
|
||
"ByeDPI option does not accept a compact value: %s": "Параметр ByeDPI не принимает компактное значение: %s",
|
||
"Unexpected ByeDPI strategy argument: %s": "Неожиданный аргумент стратегии ByeDPI: %s",
|
||
"Unknown ByeDPI option: %s": "Неизвестный параметр ByeDPI: %s",
|
||
"ByeDPI listen address and port are assigned by Tachyon and must not be set in the strategy.": "Адрес и порт прослушивания ByeDPI назначаются Tachyon и не должны задаваться в стратегии.",
|
||
"Invalid Shadowsocks URL: missing method and password separator \":\"": "Неверный Shadowsocks URL: отсутствует разделитель метода и пароля \":\"",
|
||
"Invalid path format. Path must start with \"/\" and contain valid characters": "Неверный формат пути. Путь должен начинаться с \"/\" и содержать допустимые символы",
|
||
"Invalid line: \"%s\". Use: domain ip or ip domain": "Неверная строка: \"%s\". Используйте: domain ip или ip domain",
|
||
"Invalid HY2 URL: obfs-password required when obfs is set": "Неверный HY2 URL: obfs-password обязателен, когда obfs задан",
|
||
"Invalid SOCKS URL: must start with socks4://, socks4a://, or socks5://": "Неверный SOCKS URL: должен начинаться с socks4://, socks4a:// или socks5://",
|
||
"Invalid TUIC URL: congestion_control must be bbr, cubic, or new_reno": "Неверный TUIC URL: congestion_control должен быть bbr, cubic или new_reno",
|
||
"Invalid TUIC URL: udp_relay_mode must be native, quic, or qux": "Неверный TUIC URL: udp_relay_mode должен быть native, quic или qux",
|
||
"Invalid TUIC URL: zero_rtt_handshake must be 0, 1, true, or false": "Неверный TUIC URL: zero_rtt_handshake должен быть 0, 1, true или false",
|
||
"Invalid Shadowsocks URL: decoded credentials must contain method:password": "Неверный Shadowsocks URL: декодированные учётные данные должны содержать method:password",
|
||
"vless://, vmess://, ss://, trojan://, socks4/5://, hy2/hysteria2:// links": "Ссылки vless://, vmess://, ss://, trojan://, socks4/5://, hy2/hysteria2://",
|
||
"New version %s is available for %s": "Доступна новая версия %s для %s",
|
||
"Checking\u2026": "Проверка\u2026",
|
||
"Starting\u2026": "Запуск\u2026",
|
||
"Stopping\u2026": "Остановка\u2026",
|
||
"Installed build \\u2192 Available build": "Установленная сборка \\u2192 Доступная сборка",
|
||
"Component update available": "Доступно обновление компонента",
|
||
"Sing-box version is compatible (newer than 1.12.4)": "Версия sing-box совместима (новее 1.12.4)",
|
||
"Not required for this listen address": "Не требуется для этого адреса прослушивания",
|
||
"Tachyon service is stopped. Start the service to display connections.": "Сервис Tachyon остановлен. Запустите сервис для отображения соединений.",
|
||
"Tachyon service is stopped. Start the service to display the dashboard.": "Сервис Tachyon остановлен. Запустите сервис для отображения дашборда.",
|
||
"Tachyon will not modify your DHCP configuration": "Tachyon не будет изменять вашу конфигурацию DHCP",
|
||
"Dont Touch My DHCP!": "Не трогайте мой DHCP!",
|
||
"Prevent multiple reload_firewall calls within 120 seconds to avoid connection drops.": "Предотвращать множественные вызовы reload_firewall в течение 120 секунд для избежания разрыва соединений.",
|
||
"Disabling interception is incompatible with action=zapret2 because Tachyon sends matched traffic through NFQUEUE.": "Отключение перехвата несовместимо с action=zapret2, потому что Tachyon направляет совпавший трафик через NFQUEUE.",
|
||
"Transparent proxy mode is incompatible with action=byedpi because Tachyon connects to ciadpi through SOCKS.": "Режим прозрачного прокси несовместим с action=byedpi, потому что Tachyon подключается к ciadpi через SOCKS.",
|
||
"Fuzzing is not supported here because Tachyon needs deterministic runtime validation.": "Fuzzing не поддерживается здесь, потому что Tachyon нуждается в детерминированной проверке во время выполнения.",
|
||
"External nfqws config files bypass Tachyon queue management and explicit validation.": "Внешние файлы конфигурации nfqws обходят управление очередями Tachyon и явную проверку.",
|
||
"External nfqws2 config files bypass Tachyon queue management and explicit validation.": "Внешние файлы конфигурации nfqws2 обходят управление очередями Tachyon и явную проверку.",
|
||
"Tachyon manages the nfqws process lifecycle itself, so daemon mode is not allowed here.": "Tachyon управляет жизненным циклом процесса nfqws самостоятельно, поэтому режим daemon здесь не допускается.",
|
||
"Tachyon manages the nfqws2 process lifecycle itself, so daemon mode is not allowed here.": "Tachyon управляет жизненным циклом процесса nfqws2 самостоятельно, поэтому режим daemon здесь не допускается.",
|
||
"Tachyon manages the ciadpi process lifecycle itself, so daemon mode is not allowed here.": "Tachyon управляет жизненным циклом процесса ciadpi самостоятельно, поэтому режим daemon здесь не допускается.",
|
||
"Tachyon manages ciadpi pid files itself, so pidfile options are not allowed here.": "Tachyon управляет файлами pid ciadpi самостоятельно, поэтому параметры pidfile здесь не допускаются.",
|
||
"This field must start a working nfqws strategy; --dry-run exits immediately and is not allowed here.": "Это поле должно запускать рабочую стратегию nfqws; --dry-run завершается немедленно и здесь не допускается.",
|
||
"This field must start a working nfqws strategy; --version exits immediately and is not allowed here.": "Это поле должно запускать рабочую стратегию nfqws; --version завершается немедленно и здесь не допускается.",
|
||
"This field must start a working nfqws2 strategy; --dry-run exits immediately and is not allowed here.": "Это поле должно запускать рабочую стратегию nfqws2; --dry-run завершается немедленно и здесь не допускается.",
|
||
"This field must start a working nfqws2 strategy; --version exits immediately and is not allowed here.": "Это поле должно запускать рабочую стратегию nfqws2; --version завершается немедленно и здесь не допускается.",
|
||
"This field must start a working ciadpi strategy; help/version options exit immediately and are not allowed here.": "Это поле должно запускать рабочую стратегию ciadpi; опции help/version завершаются немедленно и здесь не допускаются.",
|
||
"The NFQUEUE number is assigned by Tachyon for each rule and must not be overridden here.": "Номер NFQUEUE назначается Tachyon для каждого правила и не может быть переопределён здесь.",
|
||
"The desync fwmark is managed by Tachyon for loop prevention and must not be overridden here.": "fwmark desync управляется Tachyon для предотвращения циклов и не может быть переопределён здесь.",
|
||
"Resource selection by IP or CIDR inside nfqws is not supported here; sing-box selects resources before NFQUEUE.": "Выбор ресурсов по IP или CIDR внутри nfqws не поддерживается здесь; sing-box выбирает ресурсы до NFQUEUE.",
|
||
"Resource selection by IP or CIDR inside nfqws2 is not supported here; sing-box selects resources before NFQUEUE.": "Выбор ресурсов по IP или CIDR внутри nfqws2 не поддерживается здесь; sing-box выбирает ресурсы до NFQUEUE.",
|
||
"Resource selection by hostname inside nfqws is not supported here; sing-box selects resources before NFQUEUE.": "Выбор ресурсов по имени хоста внутри nfqws не поддерживается здесь; sing-box выбирает ресурсы до NFQUEUE.",
|
||
"Resource selection by hostname inside nfqws2 is not supported here; sing-box selects resources before NFQUEUE.": "Выбор ресурсов по имени хоста внутри nfqws2 не поддерживается здесь; sing-box выбирает ресурсы до NFQUEUE.",
|
||
"Optional values must be attached with '=' here; a separate token would be ignored by nfqws.": "Опциональные значения должны быть присоединены через '=' здесь; отдельный токен будет игнорироваться nfqws.",
|
||
"Optional values must be attached with '=' here; a separate token would be ignored by nfqws2.": "Опциональные значения должны быть присоединены через '=' здесь; отдельный токен будет игнорироваться nfqws2.",
|
||
"Unexpected standalone token. Use explicit flags such as --name or --name=value.": "Неожиданный отдельный токен. Используйте явные флаги, такие как --name или --name=value.",
|
||
"Unknown NFQWS flag.": "Неизвестный флаг NFQWS.",
|
||
"Unknown NFQWS2 flag.": "Неизвестный флаг NFQWS2.",
|
||
"Invalid ByeDPI strategy": "Неверная стратегия ByeDPI",
|
||
"ByeDPI Strategy": "Стратегия ByeDPI",
|
||
"NFQWS Strategy": "Стратегия NFQWS",
|
||
"NFQWS2 Strategy": "Стратегия NFQWS2",
|
||
"Obfuscation": "Обфускация",
|
||
"Obfuscation password": "Пароль обфускации",
|
||
"P2P Leak Protection": "Защита от утечек P2P",
|
||
"P2P Client Ports": "Порты P2P-клиента",
|
||
"Pin P2P isolation to the torrent client's own ports, comma separated. Each entry is \"proto\", \"proto:port\" or \"proto:port-port\" (tcp/udp). Without a port the whole protocol is routed direct.": "Закрепить изоляцию P2P за портами торрент-клиента, через запятую. Каждая запись — \"протокол\", \"протокол:порт\" или \"протокол:порт-порт\" (tcp/udp). Без порта весь протокол уходит напрямую.",
|
||
"WebRTC Leak Protection": "Защита от утечек WebRTC",
|
||
"Disable QUIC": "Отключить QUIC",
|
||
"Persistent Smart Detect": "Постоянное умное определение",
|
||
"Enable Smart Cooldowns": "Включить умные cooldown'ы",
|
||
"Enable Graceful Degradation": "Включить мягкое деградирование",
|
||
"Records proxy/DNS latency and health status in hourly buckets for analysis.": "Записывает задержку прокси/DNS и состояние здоровья в почасовые блоки для анализа.",
|
||
"If one health check fails with an error, continue running other checks instead of stopping.": "Если одна проверка завершается ошибкой, продолжать другие проверки, а не останавливаться.",
|
||
"Faster DNS health monitoring than the default cycle. Switches bootstrap DNS on failure.": "Более быстрый мониторинг состояния DNS, чем стандартный цикл. Переключает bootstrap DNS при сбое.",
|
||
"Default address for checking server availability and latency. URLTest uses its own address.": "Адрес по умолчанию для проверки доступности и задержки сервера. URLTest использует свой собственный адрес.",
|
||
"Auto update": "Автообновление",
|
||
"Component update check interval": "Интервал проверки обновлений компонентов",
|
||
"Automatically check installed components for new versions": "Автоматически проверять установленные компоненты на наличие новых версий",
|
||
"Select a predefined domain list": "Выберите предустановленный список доменов",
|
||
"Choose whether to route traffic to all destinations except selected countries (Exclude) or only to selected countries (Include).": "Выберите, маршрутизировать ли трафик ко всем назначениям кроме выбранных стран (Исключить) или только в выбранные страны (Включить).",
|
||
"Additionally filter servers by protocol, transport, and security. Add only servers matching the specified parameters.": "Дополнительно фильтровать серверы по протоколу, транспорту и безопасности. Добавлять только серверы, соответствующие указанным параметрам.",
|
||
"Additionally exclude servers by protocol, transport, and security. Exclude only servers matching the specified parameters.": "Дополнительно исключать серверы по протоколу, транспорту и безопасности. Исключать только серверы, соответствующие указанным параметрам.",
|
||
"Additionally hide servers by protocol, transport, and security. Hide servers matching the specified parameters.": "Дополнительно скрывать серверы по протоколу, транспорту и безопасности. Скрывать серверы, соответствующие указанным параметрам.",
|
||
"Additionally show servers by protocol, transport, and security. Add only servers matching the specified parameters.": "Дополнительно показывать серверы по протоколу, транспорту и безопасности. Показывать только серверы, соответствующие указанным параметрам.",
|
||
"Show servers from selected groups without repeating their filtering criteria.": "Показывать серверы из выбранных групп без повторения критериев фильтрации.",
|
||
"Hide servers from selected groups without repeating their filtering criteria.": "Скрывать серверы из выбранных групп без повторения критериев фильтрации.",
|
||
"Hide individual nodes that are already included in imported subscription URLTest groups": "Скрывать отдельные узлы, уже включённые в импортированные группы URLTest подписки",
|
||
"All remaining servers means every server not already assigned to a higher-priority level.": "Все остальные серверы — это все серверы, не назначенные на уровень с более высоким приоритетом.",
|
||
"Top level has the highest priority; lower levels are used as fallback": "Верхний уровень имеет наивысший приоритет; нижние уровни используются как запасные",
|
||
"All remaining except selected": "Все остальные кроме выбранных",
|
||
"Only selected except exclusions": "Только выбранные кроме исключений",
|
||
"Select one or more country ISO codes (e.g. ru, us, de, nl, fr, fi, se, tr, cn, jp, sg, by, kz, ua).": "Выберите один или несколько ISO-кодов стран (напр. ru, us, de, nl, fr, fi, se, tr, cn, jp, sg, by, kz, ua).",
|
||
"Select DNS protocol to use": "Выберите протокол DNS",
|
||
"DNS protocol used by the resolver": "Протокол DNS, используемый резолвером",
|
||
"DNS server used by the resolver": "DNS-сервер, используемый резолвером",
|
||
"DNS server used to obtain IP addresses for upstream DNS and proxies. If multiple servers are selected, a timeout switches to a backup.": "DNS-сервер для получения IP-адресов для вышестоящих DNS и прокси. Если выбрано несколько серверов, при таймауте происходит переключение на резервный.",
|
||
"Main DNS server. If multiple servers are selected, a timeout switches to a backup.": "Основной DNS-сервер. Если выбрано несколько серверов, при таймауте происходит переключение на резервный.",
|
||
"DNS server": "DNS-сервер",
|
||
"Prefer IPv4": "Предпочитать IPv4",
|
||
"Prefer IPv6": "Предпочитать IPv6",
|
||
"IPv4 only": "Только IPv4",
|
||
"IPv6 only": "Только IPv6",
|
||
"IP Addresses (IP CIDR)": "IP-адреса (IP CIDR)",
|
||
"IPs": "IP",
|
||
"Use CIDR prefixes like 192.168.1.0/24 or 2001:db8::/32": "Используйте CIDR-префиксы, например 192.168.1.0/24 или 2001:db8::/32",
|
||
"Use an IP address": "Используйте IP-адрес",
|
||
"Use an IP listen address": "Используйте IP-адрес прослушивания",
|
||
"Use a domain name or IP address": "Используйте имя домена или IP-адрес",
|
||
"Use an HTTP or HTTPS URL": "Используйте HTTP или HTTPS URL",
|
||
"Use letters, digits, dots, underscores, or hyphens": "Используйте буквы, цифры, точки, подчёркивания или дефисы",
|
||
"Use a non-negative integer": "Используйте неотрицательное целое число",
|
||
"Use a non-zero secret": "Используйте ненулевой секрет",
|
||
"Use 32 hex characters": "Используйте 32 шестнадцатеричных символа",
|
||
"Use a duration like 30s, 5m, or 1h30m": "Используйте длительность, например 30s, 5m или 1h30m",
|
||
"Use sing-box duration format like 10s, 1m or 2m30s": "Используйте формат длительности sing-box, например 10s, 1m или 2m30s",
|
||
"Use sing-box duration format like 1d, 12h or 6h": "Используйте формат длительности sing-box, например 1d, 12h или 6h",
|
||
"Use sing-box duration format like 1d, 12h or 30m": "Используйте формат длительности sing-box, например 1d, 12h или 30m",
|
||
"Must be a number in the range of 0 - 10000": "Должно быть числом в диапазоне 0 - 10000",
|
||
"TTL must be a positive number": "TTL должен быть положительным числом",
|
||
"TTL value cannot be empty": "Значение TTL не может быть пустым",
|
||
"Delay value cannot be empty": "Значение задержки не может быть пустым",
|
||
"This flag does not accept a value.": "Этот флаг не принимает значение.",
|
||
"This option requires a value.": "Этот параметр требует значение.",
|
||
"Value must not contain control characters": "Значение не должно содержать символы управления",
|
||
"Add at least one DNS server": "Добавьте как минимум один DNS-сервер",
|
||
"At least one valid IP or subnet must be specified.": "Должен быть указан как минимум один действительный IP или подсеть.",
|
||
"At least one valid domain must be specified.": "Должен быть указан как минимум один действительный домен.",
|
||
"Expecting: %s": "Ожидалось: %s",
|
||
"Cannot save server": "Не удалось сохранить сервер",
|
||
"Fix the highlighted fields and save again.": "Исправьте выделенные поля и сохраните снова.",
|
||
"Must be a comma-separated list of numeric IDs": "Должен быть список числовых ID через запятую",
|
||
"Invalid port or range. Use 80 or 1000-2000": "Неверный порт или диапазон. Используйте 80 или 1000-2000",
|
||
"Invalid regular expression": "Неверное регулярное выражение",
|
||
"QR code is too large": "QR-код слишком большой",
|
||
"Read error": "Ошибка чтения",
|
||
"New domains:": "Новые домены:",
|
||
"Parsed records:": "Обработанные записи:",
|
||
"Skipped loopback:": "Пропущены loopback:",
|
||
"Skipped comments/invalid:": "Пропущены комментарии/невалидные:",
|
||
"Total lines:": "Всего строк:",
|
||
"Updated/duplicates:": "Обновлено/дубликаты:",
|
||
"Error running trace:": "Ошибка выполнения трассировки:",
|
||
"Trace": "Трассировка",
|
||
"Tracing routing rules...": "Трассировка правил маршрутизации...",
|
||
"No Custom Rules Matched": "Нет совпадений с пользовательскими правилами",
|
||
"Hide cascade connection nodes": "Скрыть узлы каскадных подключений",
|
||
"Hide URLTest group nodes": "Скрыть узлы групп URLTest",
|
||
"Hide intermediate nodes used as detours by other subscription nodes": "Скрыть промежуточные узлы, используемые как detour другими узлами подписки",
|
||
"Hide individual nodes that are already included in imported subscription URLTest groups": "Скрыть отдельные узлы, уже включённые в импортированные группы URLTest подписки",
|
||
"Import subscription URLTest groups": "Импортировать группы URLTest подписки",
|
||
"Import URLTest groups returned by this subscription provider": "Импортировать группы URLTest, возвращённые этим провайдером подписки",
|
||
"Import subscription URLTest groups": "Импортировать группы URLTest подписки",
|
||
"URLTest settings": "Настройки URLTest",
|
||
"Check timeout after which the server is considered dead": "Таймаут проверки, после которого сервер считается недоступным",
|
||
"How often the currently selected server is checked": "Как часто проверяется текущий сервер",
|
||
"URL used to test server latency": "URL для теста задержки сервера",
|
||
"URL used to check whether a server is alive": "URL для проверки доступности сервера",
|
||
"Latency test URL": "URL для теста задержки",
|
||
"Check URL": "URL проверки",
|
||
"Hide selected servers.": "Скрыть выбранные серверы.",
|
||
"Show only selected servers.": "Показать только выбранные серверы.",
|
||
"Show servers only from the specified countries.": "Показывать серверы только из указанных стран.",
|
||
"Show servers whose names match the expression.": "Показывать серверы, чьи имена соответствуют выражению.",
|
||
"Show only servers with one of the selected protocols.": "Показывать только серверы с одним из выбранных протоколов.",
|
||
"Show only servers with one of the selected security types.": "Показывать только серверы с одним из выбранных типов безопасности.",
|
||
"Show only servers with one of the selected transports.": "Показывать только серверы с одним из выбранных транспортов.",
|
||
"Hide servers from the specified countries.": "Скрыть серверы из указанных стран.",
|
||
"Hide servers whose names match the expression.": "Скрыть серверы, чьи имена соответствуют выражению.",
|
||
"Hide servers with one of the selected protocols.": "Скрыть серверы с одним из выбранных протоколов.",
|
||
"Hide servers with one of the selected security types.": "Скрыть серверы с одним из выбранных типов безопасности.",
|
||
"Hide servers with one of the selected transports.": "Скрыть серверы с одним из выбранных транспортов.",
|
||
"Do not test servers from these countries.": "Не тестировать серверы из этих стран.",
|
||
"Do not test servers whose names match the expression.": "Не тестировать серверы, чьи имена соответствуют выражению.",
|
||
"Do not test servers with one of the selected protocols.": "Не тестировать серверы с одним из выбранных протоколов.",
|
||
"Do not test servers with one of the selected security types.": "Не тестировать серверы с одним из выбранных типов безопасности.",
|
||
"Do not test servers with one of the selected transports.": "Не тестировать серверы с одним из выбранных транспортов.",
|
||
"Do not test specified servers.": "Не тестировать указанные серверы.",
|
||
"Test only selected servers.": "Тестировать только выбранные серверы.",
|
||
"Test servers only from the specified countries.": "Тестировать серверы только из указанных стран.",
|
||
"Test servers whose names match the expression.": "Тестировать серверы, чьи имена соответствуют выражению.",
|
||
"Test only servers with one of the selected protocols.": "Тестировать только серверы с одним из выбранных протоколов.",
|
||
"Test only servers with one of the selected security types.": "Тестировать только серверы с одним из выбранных типов безопасности.",
|
||
"Test only servers with one of the selected transports.": "Тестировать только серверы с одним из выбранных транспортов.",
|
||
"Only servers whose names match the expression.": "Только серверы, чьи имена соответствуют выражению.",
|
||
"Only servers with one of the selected protocols.": "Только серверы с одним из выбранных протоколов.",
|
||
"Only servers with one of the selected security types.": "Только серверы с одним из выбранных типов безопасности.",
|
||
"Only servers with one of the selected transports.": "Только серверы с одним из выбранных транспортов.",
|
||
"Only from the specified countries.": "Только из указанных стран.",
|
||
"Remove servers from the specified countries from this level.": "Удалить серверы из указанных стран с этого уровня.",
|
||
"Remove servers whose names match the expression from this level.": "Удалить серверы, чьи имена соответствуют выражению, с этого уровня.",
|
||
"Remove the specified servers from this level.": "Удалить указанные серверы с этого уровня.",
|
||
"Exclude servers with one of the selected protocols from this level.": "Исключить серверы с одним из выбранных протоколов с этого уровня.",
|
||
"Exclude servers with one of the selected security types from this level.": "Исключить серверы с одним из выбранных типов безопасности с этого уровня.",
|
||
"Exclude servers with one of the selected transports from this level.": "Исключить серверы с одним из выбранных транспортов с этого уровня.",
|
||
"Hide servers from selected groups without repeating their filtering criteria.": "Скрыть серверы из выбранных групп без повторения критериев фильтрации.",
|
||
"Show servers from selected groups without repeating their filtering criteria.": "Показать серверы из выбранных групп без повторения критериев фильтрации.",
|
||
"Traffic for this level goes directly.": "Трафик этого уровня идёт напрямую.",
|
||
"Traffic will go through the default route (Direct/Default).": "Трафик пойдёт через маршрут по умолчанию (Direct/Default).",
|
||
"When switching to another level, test every server and select the fastest instead of the first working one.": "При переключении на другой уровень тестировать каждый сервер и выбирать самый быстрый вместо первого рабочего.",
|
||
"Periodically check the current level and switch to a faster server even when the current one works.": "Периодически проверять текущий уровень и переключаться на более быстрый сервер, даже если текущий работает.",
|
||
"Stop checking when URLTest group is not used. Use sing-box duration format like 1d, 12h or 30m.": "Остановить проверку, когда группа URLTest не используется. Используйте формат длительности sing-box, например 1d, 12h или 30m.",
|
||
"How often higher priority levels are checked while a lower level is active": "Как часто проверяются уровни с более высоким приоритетом, когда активен нижний уровень",
|
||
"Filter the servers that will be displayed on the dashboard.": "Фильтровать серверы, отображаемые на дашборде.",
|
||
"Display name": "Отображаемое имя",
|
||
"Name displayed on the dashboard": "Имя, отображаемое на дашборде",
|
||
"Pin on dashboard": "Закрепить на дашборде",
|
||
"Show metadata on dashboard": "Показывать метаданные на дашборде",
|
||
"Show subscription metadata for this source on the dashboard": "Показывать метаданные подписки для этого источника на дашборде",
|
||
"Server filtering": "Фильтрация серверов",
|
||
"Sort Alphabetically": "Сортировать по алфавиту",
|
||
"Sort by latency": "Сортировать по задержке",
|
||
"Sorts servers in this section by lowest latency in the dashboard.": "Сортировать серверы в этой секции по наименьшей задержке на дашборде.",
|
||
"Keep URLTest before latency-sorted servers": "Сохранять URLTest перед серверами, отсортированными по задержке",
|
||
"Keep Priority before latency-sorted servers": "Сохранять приоритет перед серверами, отсортированными по задержке",
|
||
"Hide URLTest group nodes": "Скрыть узлы групп URLTest",
|
||
"Hide cascade connection nodes": "Скрыть узлы каскадных подключений",
|
||
"Hide intermediate nodes used as detours by other subscription nodes": "Скрыть промежуточные узлы, используемые как detour другими узлами подписки",
|
||
"Hide individual nodes that are already included in imported subscription URLTest groups": "Скрыть отдельные узлы, уже включённые в импортированные группы URLTest подписки",
|
||
"Interrupt connections when URLTest switches the selected server": "Разрывать соединения при переключении URLTest на другой сервер",
|
||
"Interrupt connections when priority failover switches server": "Разрывать соединения при переключении приоритетного failover",
|
||
"Automatically select the fastest node in the current level": "Автовыбор самого быстрого узла уровня",
|
||
"Server group for automatic lowest-latency selection": "Группа серверов для автоматического выбора с наименьшей задержкой",
|
||
"Server group for priority failover": "Группа серверов для приоритетного переключения",
|
||
"Allows limiting the list of servers for URLTest": "Позволяет ограничить список серверов для URLTest",
|
||
"URLTest": "URLTest",
|
||
"URLTest settings": "Настройки URLTest",
|
||
"Check interval": "Интервал проверки",
|
||
"Check timeout after which the server is considered dead": "Таймаут проверки, после которого сервер считается недоступным",
|
||
"How often the currently selected server is checked": "Как часто проверяется текущий сервер",
|
||
"URL used to test server latency": "URL для теста задержки сервера",
|
||
"URL used to check whether a server is alive": "URL для проверки доступности сервера",
|
||
"Latency test URL": "URL для теста задержки",
|
||
"Check URL": "URL проверки",
|
||
"Hide selected servers.": "Скрыть выбранные серверы.",
|
||
"Show only selected servers.": "Показать только выбранные серверы.",
|
||
"Show servers only from the specified countries.": "Показывать серверы только из указанных стран.",
|
||
"Show servers whose names match the expression.": "Показывать серверы, чьи имена соответствуют выражению.",
|
||
"Show only servers with one of the selected protocols.": "Показывать только серверы с одним из выбранных протоколов.",
|
||
"Show only servers with one of the selected security types.": "Показывать только серверы с одним из выбранных типов безопасности.",
|
||
"Show only servers with one of the selected transports.": "Показывать только серверы с одним из выбранных транспортов.",
|
||
"Hide servers from the specified countries.": "Скрыть серверы из указанных стран.",
|
||
"Hide servers whose names match the expression.": "Скрыть серверы, чьи имена соответствуют выражению.",
|
||
"Hide servers with one of the selected protocols.": "Скрыть серверы с одним из выбранных протоколов.",
|
||
"Hide servers with one of the selected security types.": "Скрыть серверы с одним из выбранных типов безопасности.",
|
||
"Hide servers with one of the selected transports.": "Скрыть серверы с одним из выбранных транспортов.",
|
||
"Do not test servers from these countries.": "Не тестировать серверы из этих стран.",
|
||
"Do not test servers whose names match the expression.": "Не тестировать серверы, чьи имена соответствуют выражению.",
|
||
"Do not test servers with one of the selected protocols.": "Не тестировать серверы с одним из выбранных протоколов.",
|
||
"Do not test servers with one of the selected security types.": "Не тестировать серверы с одним из выбранных типов безопасности.",
|
||
"Do not test servers with one of the selected transports.": "Не тестировать серверы с одним из выбранных транспортов.",
|
||
"Do not test specified servers.": "Не тестировать указанные серверы.",
|
||
"Test only selected servers.": "Тестировать только выбранные серверы.",
|
||
"Test servers only from the specified countries.": "Тестировать серверы только из указанных стран.",
|
||
"Test servers whose names match the expression.": "Тестировать серверы, чьи имена соответствуют выражению.",
|
||
"Test only servers with one of the selected protocols.": "Тестировать только серверы с одним из выбранных протоколов.",
|
||
"Test only servers with one of the selected security types.": "Тестировать только серверы с одним из выбранных типов безопасности.",
|
||
"Test only servers with one of the selected transports.": "Тестировать только серверы с одним из выбранных транспортов.",
|
||
"Only servers whose names match the expression.": "Только серверы, чьи имена соответствуют выражению.",
|
||
"Only servers with one of the selected protocols.": "Только серверы с одним из выбранных протоколов.",
|
||
"Only servers with one of the selected security types.": "Только серверы с одним из выбранных типов безопасности.",
|
||
"Only servers with one of the selected transports.": "Только серверы с одним из выбранных транспортов.",
|
||
"Only from the specified countries.": "Только из указанных стран.",
|
||
"Remove servers from the specified countries from this level.": "Удалить серверы из указанных стран с этого уровня.",
|
||
"Remove servers whose names match the expression from this level.": "Удалить серверы, чьи имена соответствуют выражению, с этого уровня.",
|
||
"Remove the specified servers from this level.": "Удалить указанные серверы с этого уровня.",
|
||
"Exclude servers with one of the selected protocols from this level.": "Исключить серверы с одним из выбранных протоколов с этого уровня.",
|
||
"Exclude servers with one of the selected security types from this level.": "Исключить серверы с одним из выбранных типов безопасности с этого уровня.",
|
||
"Exclude servers with one of the selected transports from this level.": "Исключить серверы с одним из выбранных транспортов с этого уровня.",
|
||
"Hide servers from selected groups without repeating their filtering criteria.": "Скрыть серверы из выбранных групп без повторения критериев фильтрации.",
|
||
"Show servers from selected groups without repeating their filtering criteria.": "Показать серверы из выбранных групп без повторения критериев фильтрации.",
|
||
"Traffic for this level goes directly.": "Трафик этого уровня идёт напрямую.",
|
||
"Traffic will go through the default route (Direct/Default).": "Трафик пойдёт через маршрут по умолчанию (Direct/Default).",
|
||
"When switching to another level, test every server and select the fastest instead of the first working one.": "При переключении на другой уровень тестировать каждый сервер и выбирать самый быстрый вместо первого рабочего.",
|
||
"Periodically check the current level and switch to a faster server even when the current one works.": "Периодически проверять текущий уровень и переключаться на более быстрый сервер, даже если текущий работает.",
|
||
"Stop checking when URLTest group is not used. Use sing-box duration format like 1d, 12h or 30m.": "Остановить проверку, когда группа URLTest не используется. Используйте формат длительности sing-box, например 1d, 12h или 30m.",
|
||
"How often higher priority levels are checked while a lower level is active": "Как часто проверяются уровни с более высоким приоритетом, когда активен нижний уровень",
|
||
"Filter the servers that will be displayed on the dashboard.": "Фильтровать серверы, отображаемые на дашборде.",
|
||
"Display name": "Отображаемое имя",
|
||
"Name displayed on the dashboard": "Имя, отображаемое на дашборде",
|
||
"Pin on dashboard": "Закрепить на дашборде",
|
||
"Show metadata on dashboard": "Показывать метаданные на дашборде",
|
||
"Show subscription metadata for this source on the dashboard": "Показывать метаданные подписки для этого источника на дашборде",
|
||
"Server filtering": "Фильтрация серверов",
|
||
"Sort Alphabetically": "Сортировать по алфавиту",
|
||
"Sort by latency": "Сортировать по задержке",
|
||
"Sorts servers in this section by lowest latency in the dashboard.": "Сортировать серверы в этой секции по наименьшей задержке на дашборде.",
|
||
"Keep URLTest before latency-sorted servers": "Сохранять URLTest перед серверами, отсортированными по задержке",
|
||
"Keep Priority before latency-sorted servers": "Сохранять приоритет перед серверами, отсортированными по задержке",
|
||
"Hide URLTest group nodes": "Скрыть узлы групп URLTest",
|
||
"Hide cascade connection nodes": "Скрыть узлы каскадных подключений",
|
||
"Hide intermediate nodes used as detours by other subscription nodes": "Скрыть промежуточные узлы, используемые как detour другими узлами подписки",
|
||
"Hide individual nodes that are already included in imported subscription URLTest groups": "Скрыть отдельные узлы, уже включённые в импортированные группы URLTest подписки",
|
||
"Interrupt connections when URLTest switches the selected server": "Разрывать соединения при переключении URLTest на другой сервер",
|
||
"Interrupt connections when priority failover switches server": "Разрывать соединения при переключении приоритетного failover",
|
||
"Automatically select the fastest node in the current level": "Автовыбор самого быстрого узла уровня",
|
||
"Server group for automatic lowest-latency selection": "Группа серверов для автоматического выбора с наименьшей задержкой",
|
||
"Server group for priority failover": "Группа серверов для приоритетного переключения",
|
||
"Allows limiting the list of servers for URLTest": "Позволяет ограничить список серверов для URLTest",
|
||
"URLTest": "URLTest",
|
||
"URLTest settings": "Настройки URLTest",
|
||
"Check interval": "Интервал проверки",
|
||
"Check timeout after which the server is considered dead": "Таймаут проверки, после которого сервер считается недоступным",
|
||
"How often the currently selected server is checked": "Как часто проверяется текущий сервер",
|
||
"URL used to test server latency": "URL для теста задержки сервера",
|
||
"URL used to check whether a server is alive": "URL для проверки доступности сервера",
|
||
"Latency test URL": "URL для теста задержки",
|
||
"Check URL": "URL проверки",
|
||
|
||
// === Оставшиеся 81 ключ ===
|
||
"-- Select --": "-- Выбрать --",
|
||
".lst Lists": "Списки .lst",
|
||
"(provider default)": "(по умолчанию провайдера)",
|
||
"+ Add JSON outbound": "+ Добавить JSON outbound",
|
||
"+ Add level": "+ Добавить уровень",
|
||
"+ Add priority": "+ Добавить приоритет",
|
||
"+ Add URLTest": "+ Добавить URLTest",
|
||
"\u26A0\uFE0F If all Bootstrap DNS fail 3 times, queries will be sent to your ISP's DNS in plaintext. Only use as a last resort to prevent complete internet loss.": "\u26A0\uFE0F Если все Bootstrap DNS завершатся с ошибкой 3 раза, запросы будут отправлены в DNS вашего провайдера в открытом виде. Используйте только в крайнем случае для предотвращения полной потери интернета.",
|
||
"\u26A0\uFE0F If all Main DNS fail 3 times, queries will be sent to your ISP's DNS in plaintext. Only use as a last resort to prevent complete internet loss.": "\u26A0\uFE0F Если все основные DNS завершатся с ошибкой 3 раза, запросы будут отправлены в DNS вашего провайдера в открытом виде. Используйте только в крайнем случае для предотвращения полной потери интернета.",
|
||
"Add URLTest / Priority group": "Добавить группу URLTest / Приоритет",
|
||
"AEAD Method": "Метод AEAD",
|
||
"AI Agent REST API Bearer Token": "Токен Bearer для REST API ИИ-агента",
|
||
"Automatic component update checks": "Автоматическая проверка обновлений компонентов",
|
||
"Clean Comments": "Очистить комментарии",
|
||
"Conditions": "Условия",
|
||
"Configure User-Agent in the item settings": "Настройте User-Agent в параметрах элемента",
|
||
"Delay in milliseconds before reloading Tachyon after interface UP": "Задержка в миллисекундах перед перезагрузкой Tachyon после поднятия интерфейса",
|
||
"DNS protocol": "Протокол DNS",
|
||
"Domains": "Домены",
|
||
"e.g. AES-256-GCM \u2014 leave empty for default": "напр. AES-256-GCM \u2014 оставьте пустым для значения по умолчанию",
|
||
"e.g. google.com, 1.1.1.1, 443": "напр. google.com, 1.1.1.1, 443",
|
||
"e.g. SHA256 \u2014 leave empty for default": "напр. SHA256 \u2014 оставьте пустым для значения по умолчанию",
|
||
"Enable Firewall Reload Dedup": "Включить дедупликацию перезагрузки файрвола",
|
||
"Enables the background daemon that polls Telegram for commands and sends notifications.": "Включает фоновый демон, который опрашивает Telegram на наличие команд и отправляет уведомления.",
|
||
"Enables the background watchdog process to monitor services and auto-recover on failures.": "Включает фоновый процесс watchdog для мониторинга сервисов и автоматического восстановления при сбоях.",
|
||
"Exclude by proxy parameters": "Исключить по параметрам прокси",
|
||
"Exclude by regular expression": "Исключить по регулярному выражению",
|
||
"Exclude countries": "Исключить страны",
|
||
"Exclude selected countries": "Исключить выбранные страны",
|
||
"Exclude traffic types": "Исключить типы трафика",
|
||
"Exclude URLTest / Priority group": "Исключить группу URLTest / Приоритет",
|
||
"Failed to parse file:": "Ошибка разбора файла:",
|
||
"Forces sing-box to tunnel DNS requests via DoQ with Encrypted Client Hello (ECH) for SNI hiding.": "Принудительно направлять DNS-запросы через DoQ с Encrypted Client Hello (ECH) для скрытия SNI.",
|
||
"Generating\u2026": "Генерация\u2026",
|
||
"Include by proxy parameters": "Включить по параметрам прокси",
|
||
"Include by regular expression": "Включить по регулярному выражению",
|
||
"Include countries": "Включить страны",
|
||
"Include selected countries": "Включить выбранные страны",
|
||
"Init Packet Magic Header (S1)": "Magic-заголовок пакета инициализации (S1)",
|
||
"Init Packet Magic Header (S3)": "Magic-заголовок пакета инициализации (S3)",
|
||
"Init Packet Payload (I1)": "Полезная нагрузка пакета инициализации (I1)",
|
||
"Init Packet Payload (I2)": "Полезная нагрузка пакета инициализации (I2)",
|
||
"Init Packet Payload (I3)": "Полезная нагрузка пакета инициализации (I3)",
|
||
"Init Packet Payload (I4)": "Полезная нагрузка пакета инициализации (I4)",
|
||
"Init Packet Payload (I5)": "Полезная нагрузка пакета инициализации (I5)",
|
||
"Invalid line: \"%s\". Use: domain ip or ip domain": "Неверная строка: \"%s\". Используйте: domain ip или ip domain",
|
||
"Junk Max Size (Jmax)": "Макс. размер мусора (Jmax)",
|
||
"Junk Min Size (Jmin)": "Мин. размер мусора (Jmin)",
|
||
"Junk Packet Count (Jc)": "Количество мусорных пакетов (Jc)",
|
||
"Leave empty to omit this header": "Оставьте пустым, чтобы пропустить этот заголовок",
|
||
"Match destination IPs or subnets": "Сопоставлять IP-адреса или подсети назначения",
|
||
"Match destination ports. Use a single port or a range": "Сопоставлять порты назначения. Используйте один порт или диапазон",
|
||
"Match Found": "Совпадение найдено",
|
||
"Match traffic by packet DSCP mark (assigned in Windows via Policy-Based QoS). Examples: 46 (EF), 0x2e, 34 (AF41)": "Сопоставлять трафик по DSCP-метке пакета (назначается в Windows через Policy-Based QoS). Примеры: 46 (EF), 0x2e, 34 (AF41)",
|
||
"Only the specified servers.": "Только указанные серверы.",
|
||
"Open priority settings and enter a display name": "Откройте настройки приоритета и введите отображаемое имя",
|
||
"Option \"%s\" contains an invalid input value.": "Параметр \"%s\" содержит недопустимое значение.",
|
||
"Optional \u2014 leave empty for default": "Опционально \u2014 оставьте пустым для значения по умолчанию",
|
||
"Path must contain at least one directory (like /tmp/cache.db)": "Путь должен содержать как минимум одну директорию (например /tmp/cache.db)",
|
||
"Port range start must be less than or equal to end": "Начало диапазона портов должно быть меньше или равно концу",
|
||
"Ports": "Порты",
|
||
"Prevents multiple reload_firewall calls within 120 seconds to avoid connection drops.": "Предотвращает множественные вызовы reload_firewall в течение 120 секунд для избежания разрыва соединений.",
|
||
"Proxy Fail Threshold": "Порог ошибок прокси",
|
||
"Reconnect Threshold": "Порог переподключений",
|
||
"Registration Detour": "Маршрут регистрации",
|
||
"Response Packet Magic Header (S2)": "Magic-заголовок ответного пакета (S2)",
|
||
"Response Packet Magic Header (S4)": "Magic-заголовок ответного пакета (S4)",
|
||
"Route main DNS requests through the selected section.": "Маршрутизировать основные DNS-запросы через выбранную секцию.",
|
||
"Route requests to this DNS server through another section.": "Маршрутизировать запросы к этому DNS-серверу через другую секцию.",
|
||
"Secret token for authorizing WRITE operations (POST/PUT) on /cgi-bin/tachyon-agent/. Leave empty if auth is not required.": "Секретный токен для авторизации операций записи (POST/PUT) на /cgi-bin/tachyon-agent/. Оставьте пустым, если аутентификация не требуется.",
|
||
"Select an existing URLTest or Priority group": "Выберите существующую группу URLTest или Приоритет",
|
||
"Service list": "Список сервисов",
|
||
"Services & Access": "Сервисы и доступ",
|
||
"Underload Packet Magic Header (H1)": "Magic-заголовок пакета недогрузки (H1)",
|
||
"Underload Packet Magic Header (H2)": "Magic-заголовок пакета недогрузки (H2)",
|
||
"Underload Packet Magic Header (H3)": "Magic-заголовок пакета недогрузки (H3)",
|
||
"Underload Packet Magic Header (H4)": "Magic-заголовок пакета недогрузки (H4)",
|
||
"URLs of remote hosts files to download and apply. Supports standard hosts format: <code>IP domain</code>.": "URL удалённых файлов hosts для загрузки и применения. Поддерживается стандартный формат hosts: <code>IP domain</code>.",
|
||
"You can select Output Network Interface, by default autodetect": "Вы можете выбрать выходной сетевой интерфейс, по умолчанию автоопределение",
|
||
"Zapret hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS strategies.": "Шаблоны hostlist Zapret не поддерживаются здесь, потому что Tachyon не расширяет их для стратегий NFQWS по правилам.",
|
||
"Zapret2 hostlist templates are not supported here because Tachyon does not expand them for per-rule NFQWS2 strategies.": "Шаблоны hostlist Zapret2 не поддерживаются здесь, потому что Tachyon не расширяет их для стратегий NFQWS2 по правилам.",
|
||
|
||
// Config snapshots
|
||
"Save Snapshot": "Сохранить снапшот",
|
||
"Snapshot name": "Имя снапшота",
|
||
"Config Snapshots": "Снапшоты конфигурации",
|
||
"Save a snapshot of the working config and restore it later if something breaks.": "Сохранить снапшот рабочей конфигурации, чтобы восстановить её позже, если что-то сломается.",
|
||
"Give the snapshot a name. It is saved with the current date and can be restored from this list later.": "Дайте снапшоту имя. Он сохраняется с текущей датой, и его можно будет восстановить из этого списка позже.",
|
||
"No snapshots yet": "Снапшотов пока нет",
|
||
"Failed to load snapshots": "Не удалось загрузить снапшоты",
|
||
"Failed to save snapshot": "Не удалось сохранить снапшот",
|
||
"Failed to delete snapshot": "Не удалось удалить снапшот",
|
||
"Failed to restore snapshot": "Не удалось восстановить снапшот",
|
||
"Restore Snapshot": "Восстановить снапшот",
|
||
"Delete Snapshot": "Удалить снапшот",
|
||
"This will replace the current Tachyon settings with the snapshot": "Это заменит текущие настройки Tachyon на снапшот",
|
||
"Delete the snapshot": "Удалить снапшот",
|
||
"Up to 10 snapshots are kept; the oldest ones are removed automatically.": "Хранится до 10 снапшотов; самые старые удаляются автоматически.",
|
||
"Snapshot restored. The service restarts and the page will reload.": "Снапшот восстановлен. Сервис перезапускается, страница будет перезагружена.",
|
||
// WARP Generator Proxy Section
|
||
"Default (Direct WAN / Default mixed proxy)": "По умолчанию (WAN / стандартный смешанный прокси)",
|
||
"default (service mixed proxy)": "по умолчанию (сервисный смешанный прокси)",
|
||
"Section name for WARP registration proxy. Leave empty to use the default service mixed proxy.": "Секция для прокси регистрации WARP. Оставьте пустым для использования сервисного смешанного прокси по умолчанию.",
|
||
"Section used for Cloudflare WARP API registration. If your ISP blocks Cloudflare API on WAN, select a proxy section (with Mixed proxy enabled) or a tunnel interface section (WireGuard / AmneziaWG / VPN). Leave empty to use direct WAN / default mixed proxy.": "Секция для регистрации Cloudflare WARP API. Если провайдер блокирует API Cloudflare на WAN, выберите секцию с прокси (с включённым смешанным прокси) или туннельный интерфейс (WireGuard / AmneziaWG / VPN). Оставьте пустым для прямого WAN / стандартного смешанного прокси.",
|
||
"WARP Proxy Section": "Секция прокси WARP",
|
||
// Lists
|
||
"Error updating lists:": "Ошибка обновления списков:",
|
||
// Services
|
||
"Services are online, waiting for full initialization...": "Сервисы запущены, ожидание полной инициализации...",
|
||
// Connection test (dashboard)
|
||
"Test Connection": "Проверить подключение",
|
||
// Telegram diagnostics
|
||
"Test Telegram Connection": "Проверить подключение к Telegram",
|
||
"bot_token is set": "bot_token задан",
|
||
"Cannot check DNS": "Не удалось проверить DNS",
|
||
"Cannot check port 4534": "Не удалось проверить порт 4534",
|
||
"Cannot check sing-box status": "Не удалось проверить статус sing-box",
|
||
"Cannot reach Telegram API directly (IPv4 blocked by ISP?)": "Нет прямого доступа к Telegram API (IPv4 заблокирован провайдером?)",
|
||
"Direct API connection failed": "Прямое подключение к API не удалось",
|
||
"Direct IPv4 to Telegram API works": "Прямой доступ IPv4 к Telegram API работает",
|
||
"DNS resolves api.telegram.org": "DNS разрешает api.telegram.org",
|
||
"Failed to send test message": "Не удалось отправить тестовое сообщение",
|
||
"Mixed proxy port 4534 is listening": "Смешанный прокси на порту 4534 слушает",
|
||
"Proxy API connection failed": "Подключение к API через прокси не удалось",
|
||
"Proxy route to Telegram API works": "Маршрут через прокси к Telegram API работает",
|
||
"sing-box is running": "sing-box запущен",
|
||
"Test message sent to chat": "Тестовое сообщение отправлено в чат",
|
||
|
||
// Component Auto-Update
|
||
"Automatic component updates": "Автоматическое обновление компонентов",
|
||
"Automatically download and install new versions of components": "Автоматически загружать и устанавливать новые версии компонентов",
|
||
"Auto-update mode": "Режим автообновления",
|
||
"Choose whether to install updates immediately when detected or at a scheduled time (e.g. maintenance window)": "Выберите, устанавливать ли обновления сразу при обнаружении или по расписанию (например, в ночное окно обслуживания)",
|
||
"Immediately upon release": "Сразу при выходе новой версии",
|
||
"By schedule": "По расписанию",
|
||
"Scheduled auto-update time": "Время обновления по расписанию",
|
||
"Time of day to run scheduled component updates in HH:MM (24h) format, e.g. 04:00": "Время суток для запуска планового обновления компонентов в формате ЧЧ:ММ (24ч), например 04:00",
|
||
"Enter a valid time in HH:MM format (00:00 to 23:59)": "Введите корректное время в формате ЧЧ:ММ (от 00:00 до 23:59)",
|
||
"Eligible components for auto-update": "Разрешенные компоненты для автообновления",
|
||
"Select which components are permitted to update automatically": "Выберите, какие компоненты разрешено обновлять автоматически",
|
||
"All components": "Все компоненты",
|
||
"Tachyon Core": "Ядро Tachyon",
|
||
"LuCI Web UI": "Веб-интерфейс LuCI",
|
||
"Rollback": "Откатить",
|
||
"Save component backup before update": "Сохранять резервную копию перед обновлением",
|
||
"Keep the previous working binary/package on the router flash for instant offline rollback if needed. Consumes extra storage.": "Сохранять предыдущую рабочую версию компонента в памяти роутера для быстрого локального отката. Занимает дополнительное место на flash.",
|
||
"Menu & Navigation": "Меню и навигация",
|
||
"Default Tab on Startup": "Вкладка по умолчанию при входе",
|
||
"Select which tab opens automatically when entering Tachyon.": "Выберите, какая вкладка открывается автоматически при входе в Tachyon.",
|
||
"Show 'Dashboard' tab": "Отображать вкладку «Главная»",
|
||
"Display the main overview and status dashboard in the menu.": "Отображать главный обзор и статус-дашборд в меню.",
|
||
"Show 'Sections' tab": "Отображать вкладку «Маршрутизация»",
|
||
"Display proxy sections and routing rules in the menu.": "Отображать секции прокси и правила маршрутизации в меню.",
|
||
"Show 'Servers' tab": "Отображать вкладку «Серверы»",
|
||
"Display external proxy servers (inbounds) in the menu.": "Отображать внешние прокси-серверы (inbounds) в меню.",
|
||
"Show 'Family Profiles' tab": "Отображать вкладку «Семейные профили»",
|
||
"Display family profile groups and device assignment in the menu.": "Отображать группы семейных профилей и привязку устройств в меню.",
|
||
"Show 'Parental Control' tab": "Отображать вкладку «Родительский контроль»",
|
||
"Display parental control and schedule rules in the menu.": "Отображать расписания и правила родительского контроля в меню.",
|
||
"Show 'Monitoring' tab": "Отображать вкладку «Мониторинг»",
|
||
"Display live traffic statistics and client activity in the menu.": "Отображать статистику трафика и активность клиентов в меню.",
|
||
"Show 'Diagnostics' tab": "Отображать вкладку «Диагностика»",
|
||
"Display network health checks and AI Doctor in the menu.": "Отображать сетевую диагностику и ИИ-Доктора в меню.",
|
||
"Show 'Components' tab": "Отображать вкладку «Компоненты»",
|
||
"Display component updates and version manager in the menu.": "Отображать обновления компонентов и управление версиями в меню.",
|
||
"Show 'Telegram Bot' tab": "Отображать вкладку «Telegram-бот»",
|
||
"Display the Telegram bot settings and controls in the menu.": "Отображать настройки и управление Telegram-ботом в меню.",
|
||
"Tab Order & Visibility": "Порядок и видимость вкладок",
|
||
"Customize the order and visibility of tabs in the main navigation menu. Use the arrows to reorder and checkboxes to show or hide tabs.": "Настройте порядок и видимость вкладок в главном меню навигации. Используйте стрелки для перемещения и галочки для показа или скрытия.",
|
||
"Always visible": "Всегда включено",
|
||
"Move Up": "Переместить выше",
|
||
"Move Down": "Переместить ниже",
|
||
"Main overview and status widgets": "Главный обзор и виджеты статуса",
|
||
"Routing sections, rules and strategies": "Секции маршрутизации, правила и стратегии",
|
||
"External inbound proxy servers": "Внешние входящие прокси-серверы",
|
||
"Family profiles and device grouping": "Семейные профили и группировка устройств",
|
||
"Access schedule and screen time limits": "Расписание доступа и лимиты времени",
|
||
"Traffic statistics and active connections": "Статистика трафика и активные соединения",
|
||
"System diagnostics, AI Doctor and logs": "Системная диагностика, ИИ-Доктор и логи",
|
||
"Component versions and update manager": "Версии компонентов и менеджер обновлений",
|
||
"Core configuration and preferences": "Основные настройки и параметры",
|
||
"Remote management Telegram daemon": "Демон Telegram для удаленного управления",
|
||
"Upstream Mode": "Режим DNS Upstream",
|
||
"Sequential: failover to the next server after N failures. Parallel: aggressive failover — switches in seconds (1 failure = switch), best if your ISP blocks DoH/DoT.": "Последовательный: переключение на следующий сервер после N сбоев. Параллельный: быстрый failover — переключается за секунды (1 сбой = переключение), оптимально при блокировках DoH/DoT провайдером.",
|
||
"Sequential (one active at a time)": "Последовательный (один активный)",
|
||
"Parallel (fast failover, ≤3 s)": "Параллельный (быстрый failover, ≤3 с)",
|
||
"Fallback DNS Servers": "Резервные DNS серверы",
|
||
"Plain-UDP DNS servers used as a last resort when all primary DNS fail. These are always unencrypted (no DoH/DoT). Example: 1.1.1.1, 8.8.8.8. Unlike the ISP fallback toggle, these are your own chosen servers.": "Обычные UDP DNS-серверы, используемые как резерв при недоступности всех основных DNS. Всегда работают без шифрования (без DoH/DoT). Пример: 1.1.1.1, 8.8.8.8. В отличие от аварийного DNS провайдера, это выбранные вами серверы.",
|
||
"1.0.0.1 (Cloudflare Secondary)": "1.0.0.1 (Cloudflare резервный)",
|
||
"1.1.1.2 (Cloudflare Security)": "1.1.1.2 (Cloudflare защита)",
|
||
"1.1.1.3 (Cloudflare Family)": "1.1.1.3 (Cloudflare семейный)",
|
||
"8.8.4.4 (Google Secondary)": "8.8.4.4 (Google резервный)",
|
||
"9.9.9.9 (Quad9 Filtered)": "9.9.9.9 (Quad9 с фильтрацией)",
|
||
"149.112.112.112 (Quad9 Secondary)": "149.112.112.112 (Quad9 резервный)",
|
||
"9.9.9.10 (Quad9 Unsecured)": "9.9.9.10 (Quad9 без фильтрации)",
|
||
"94.140.14.14 (AdGuard Default)": "94.140.14.14 (AdGuard основной)",
|
||
"94.140.15.15 (AdGuard Default Secondary)": "94.140.15.15 (AdGuard резервный)",
|
||
"94.140.14.140 (AdGuard Non-filtering)": "94.140.14.140 (AdGuard без фильтрации)",
|
||
"94.140.14.15 (AdGuard Family)": "94.140.14.15 (AdGuard семейный)",
|
||
"76.76.2.0 (Control D Uncensored)": "76.76.2.0 (Control D без цензуры)",
|
||
"76.76.2.1 (Control D Malware)": "76.76.2.1 (Control D защита)",
|
||
"76.76.2.2 (Control D Adblock)": "76.76.2.2 (Control D блокировка рекламы)",
|
||
"194.242.2.2 (Mullvad No-Logs)": "194.242.2.2 (Mullvad без логов)",
|
||
"194.242.2.3 (Mullvad Adblock)": "194.242.2.3 (Mullvad блокировка рекламы)",
|
||
"194.242.2.4 (Mullvad Extended)": "194.242.2.4 (Mullvad расширенный)",
|
||
"193.110.81.0 (DNS0.EU Zero)": "193.110.81.0 (DNS0.EU Zero)",
|
||
"193.17.47.1 (CZ.NIC ODVR)": "193.17.47.1 (CZ.NIC ODVR)",
|
||
"208.67.222.222 (OpenDNS)": "208.67.222.222 (OpenDNS)",
|
||
"223.5.5.5 (AliDNS)": "223.5.5.5 (AliDNS)",
|
||
"185.228.168.9 (CleanBrowsing Security)": "185.228.168.9 (CleanBrowsing безопасность)",
|
||
"77.88.8.1 (Yandex Secondary)": "77.88.8.1 (Yandex резервный)",
|
||
"77.88.8.88 (Yandex Safe)": "77.88.8.88 (Yandex безопасный)",
|
||
"Cloudflare Security": "Cloudflare (Защита)",
|
||
"Cloudflare Family": "Cloudflare (Семейный)",
|
||
"Quad9 (Filtered)": "Quad9 (С фильтрацией)",
|
||
"Quad9 (Unfiltered)": "Quad9 (Без фильтрации)",
|
||
"AdGuard Default": "AdGuard (Основной)",
|
||
"AdGuard Non-filtering": "AdGuard (Без фильтрации)",
|
||
"AdGuard Family": "AdGuard (Семейный)",
|
||
"Mullvad Base": "Mullvad (Базовый)",
|
||
"Mullvad Adblock": "Mullvad (Блокировка рекламы)",
|
||
"Mullvad Extended": "Mullvad (Расширенный)",
|
||
"Control D Uncensored": "Control D (Без цензуры)",
|
||
"Control D Malware": "Control D (Защита)",
|
||
"Control D Adblock": "Control D (Блокировка рекламы)",
|
||
"DNS0.EU Zero": "DNS0.EU (Zero Logs)",
|
||
"CleanBrowsing Security": "CleanBrowsing (Безопасность)",
|
||
"CleanBrowsing Family": "CleanBrowsing (Семейный)",
|
||
"Yandex Safe": "Yandex (Безопасный)",
|
||
};
|
||
|
||
function escapePoString(str) {
|
||
return str.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
||
}
|
||
|
||
async function run() {
|
||
const poPaths = [
|
||
'locales/tachyon.ru.po',
|
||
'../luci-app-tachyon/po/ru/tachyon.po'
|
||
];
|
||
|
||
for (const p of poPaths) {
|
||
let content = await fs.readFile(p, 'utf8');
|
||
for (const [key, val] of Object.entries(dictionary)) {
|
||
const escapedKey = escapePoString(key);
|
||
const escapedVal = escapePoString(val);
|
||
const searchTarget = `msgid "${escapedKey}"\nmsgstr ""`;
|
||
const searchTargetCRLF = `msgid "${escapedKey}"\r\nmsgstr ""`;
|
||
const replaceWith = `msgid "${escapedKey}"\nmsgstr "${escapedVal}"`;
|
||
|
||
if (content.includes(`msgid "${escapedKey}"`)) {
|
||
content = content.replace(searchTarget, replaceWith);
|
||
content = content.replace(searchTargetCRLF, replaceWith);
|
||
} else {
|
||
content += `\nmsgid "${escapedKey}"\nmsgstr "${escapedVal}"\n`;
|
||
}
|
||
}
|
||
await fs.writeFile(p, content, 'utf8');
|
||
console.log(`Updated ${p}`);
|
||
}
|
||
}
|
||
|
||
run().catch(console.error);
|