mirror of
https://github.com/PRVTPRO/Amnezia-Web-Panel.git
synced 2026-10-23 03:37:36 +09:00
Every config and link the panel issues carried the address it opens SSH
to. That is not always where clients can reach the instance: a second IP
on the same box, a port forward, a domain name. Telemt made it worse --
it prints its own tg:// links, and install rewrote public_host in
config.toml with the panel's address, so a manually bound instance
handed out links to the wrong endpoint after every reinstall.
An instance record now carries optional public_host/public_port, set
from the globe button on its card or via
POST /api/servers/{id}/protocol/public-endpoint. The address flows into
AmneziaWG/WireGuard Endpoints, vless:// and tg:// links, connections
created for a user and self-service provisioning. Unset means exactly
what it meant before: the server address and the instance's listen port.
- telemt: the address is written into config.toml and reloaded without a
restart; saving with the box down keeps the record and warns
- telemt: _patch_public_links matches the keys line by line -- the old
pattern could span lines and weld public_host onto the line above
- xray: an explicit public port wins, but meta.json (synced from the
live server.json) still beats the panel's remembered port
- reinstalling an instance keeps the address, like its exit link
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
618 lines
50 KiB
JSON
618 lines
50 KiB
JSON
{
|
||
"nav_servers": "Серверы",
|
||
"nav_users": "Пользователи",
|
||
"nav_settings": "Настройки",
|
||
"nav_connections": "Подключения",
|
||
"nav_logout": "Выход",
|
||
"theme_dark": "Темная",
|
||
"theme_light": "Светлая",
|
||
"back_to_servers": "← Назад к серверам",
|
||
"server_check": "Проверить",
|
||
"server_checking": "Проверка...",
|
||
"protocols": "Протоколы",
|
||
"install": "Установить",
|
||
"uninstall": "Удалить",
|
||
"run": "Работает",
|
||
"stop": "Остановлен",
|
||
"not_installed": "Не установлен",
|
||
"installed": "Установлен",
|
||
"add_server": "Добавить сервер",
|
||
"no_servers": "Серверы не добавлены",
|
||
"name": "Название",
|
||
"host": "Адрес",
|
||
"port": "Порт",
|
||
"status": "Статус",
|
||
"actions": "Действия",
|
||
"edit": "Редактировать",
|
||
"delete": "Удалить",
|
||
"save": "Сохранить",
|
||
"cancel": "Отмена",
|
||
"loading": "Загрузка...",
|
||
"copy": "Копировать",
|
||
"download": "Скачать",
|
||
"config": "Конфигурация",
|
||
"qr_code": "QR-код",
|
||
"vpn_key": "VPN-ключ",
|
||
"clients": "Клиенты",
|
||
"traffic": "Трафик",
|
||
"limit": "Limit",
|
||
"manage": "Управление",
|
||
"no_protocols": "Нет протоколов",
|
||
"add_server_desc": "Добавьте свой первый VPN сервер для начала работы. Вам понадобятся SSH-данные для подключения.",
|
||
"ssh_host": "Хост / IP",
|
||
"ssh_port": "SSH Порт",
|
||
"ssh_user": "Пользователь",
|
||
"ssh_password": "Пароль",
|
||
"ssh_key": "SSH Ключ",
|
||
"ssh_key_placeholder": "Приватный SSH ключ",
|
||
"ssh_key_hint": "Вставьте содержимое вашего файла id_rsa или id_ed25519",
|
||
"connect": "Подключить",
|
||
"connecting": "Подключение...",
|
||
"server_added": "Сервер успешно добавлен",
|
||
"server_deleted": "Сервер удалён",
|
||
"delete_confirm": "Вы уверены, что хотите удалить этот сервер?",
|
||
"success": "Успешно",
|
||
"error": "Ошибка",
|
||
"info": "Информация",
|
||
"login_title": "Вход в панель",
|
||
"username": "Логин",
|
||
"password": "Пароль",
|
||
"captcha": "Капча",
|
||
"captcha_placeholder": "Введите символы с картинки",
|
||
"captcha_hint": "Нажмите для обновления картинки",
|
||
"login": "Войти",
|
||
"logging_in": "Вход...",
|
||
"login_error": "Ошибка входа",
|
||
"check_done": "Проверка завершена",
|
||
"check_error": "Ошибка подключения",
|
||
"ssh_ok": "SSH подключение",
|
||
"docker_ok": "Docker",
|
||
"docker_not_installed": "Docker не установлен",
|
||
"awg_desc": "Новая версия протокола на основе awg-go. Поддерживает расширенную обфускацию с параметрами S3, S4.",
|
||
"awg3_desc": "Дополняет обфускацию 2.0 защитой заголовков и паддингом данных. Тайминги рукопожатия и смены ключей рандомизированы — постоянной временной сигнатуры не остаётся.",
|
||
"awg_mtu": "MTU",
|
||
"awg_mtu_hint": "Попадает в генерируемые конфиги клиентов. Приложения Amnezia используют 1376.",
|
||
"awg_settings_btn": "AWG",
|
||
"awg_settings_title": "Настройки AmneziaWG",
|
||
"awg_settings_desc": "Применяются к конфигам, которые будут выданы дальше. У клиентов с уже импортированным конфигом значения останутся прежними до повторного импорта.",
|
||
"awg_settings_saved": "Настройки AmneziaWG сохранены",
|
||
"awg_special_junk": "Пакеты-пустышки (I1–I5)",
|
||
"awg_special_junk_hint": "Отправляются перед рукопожатием, чтобы сессия начиналась с байтов чужого протокола. I1 по умолчанию имитирует ответ DNS.",
|
||
"awg_special_junk_syntax": "Теги: <b 0xHEX> — байты, <r N> — случайные байты, <rc N> — буквы, <rd N> — цифры, <c> — счётчик пакетов, <t> — unix-время.",
|
||
"awg_special_junk_reset": "По умолчанию",
|
||
"awg_legacy_desc": "Оригинальная версия AWG на базе ядра WireGuard. Совместима с клиентами старых версий.",
|
||
"xray_desc": "Современный протокол с маскировкой под обычный веб-трафик (XTLS-Reality). Устойчив к глубокому анализу пакетов.",
|
||
"wireguard_desc": "Стандартный и самый быстрый VPN-протокол. Встроен во все современные ОС, но легко блокируется DPI.",
|
||
"not_checked": "Не проверено",
|
||
"connections": "Подключения",
|
||
"add": "Добавить",
|
||
"loading_connections": "Загрузка подключений...",
|
||
"no_connections": "Нет подключений",
|
||
"no_connections_desc": "Добавьте первое подключение для генерации VPN конфигурации",
|
||
"install_protocol": "Установить протокол",
|
||
"port_default_hint": "Порт по умолчанию: 55424. Убедитесь, что он не занят",
|
||
"port_xray_hint": "Порт по умолчанию: 443 (рекомендуется для Xray). Убедитесь, что он не занят другим веб-сервером.",
|
||
"reinstall": "Переустановить",
|
||
"uninstall_confirm": "Удалить {}? Все подключения и конфигурации будут потеряны.",
|
||
"stop_container_confirm": "Остановить контейнер {}?",
|
||
"start_container_confirm": "Запустить контейнер {}?",
|
||
"stopping": "Остановка",
|
||
"starting": "Запуск",
|
||
"stopped": "остановлен",
|
||
"started": "запущен",
|
||
"server_config": "Конфигурация сервера",
|
||
"add_connection": "Добавить подключение",
|
||
"connection_name": "Имя подключения",
|
||
"connection_name_placeholder": "Например: iPhone, Laptop",
|
||
"assign_to_user": "Назначить пользователю (опционально)",
|
||
"no_assign": "— Без привязки —",
|
||
"select_search_placeholder": "Поиск...",
|
||
"select_search_empty": "Ничего не найдено",
|
||
"create": "Создать",
|
||
"creating": "Создание...",
|
||
"connection_created": "Подключение \"{}\" создано",
|
||
"delete_connection_confirm": "Удалить это подключение? Конфигурация перестанет работать.",
|
||
"connection_deleted": "Подключение удалено",
|
||
"self_service_title": "Самообслуживание",
|
||
"self_service_enabled": "Включить самообслуживание",
|
||
"self_service_enabled_desc": "Разрешить пользователям создавать и управлять своими VPN-подключениями",
|
||
"self_service_web": "Включить через веб",
|
||
"self_service_telegram": "Включить через Telegram",
|
||
"self_service_max_conns": "Макс. подключений на пользователя",
|
||
"self_service_rate_limit": "Лимит созданий",
|
||
"self_service_rate_window": "Окно лимита (сек)",
|
||
"self_service_protocols": "Разрешённые протоколы",
|
||
"server_self_service_enabled": "Разрешить самообслуживание",
|
||
"server_self_service_enabled_desc": "Пользователи могут создавать подключения на этом сервере",
|
||
"create_connection": "Создать подключение",
|
||
"delete_connection": "Удалить",
|
||
"connections_counter": "Подключения: {0} / {1}",
|
||
"device_name": "Имя устройства",
|
||
"self_service_disabled": "Самообслуживание не включено.",
|
||
"config_tab": "📄 Конфиг",
|
||
"vpn_key_tab": "🔑 VPN-ключ",
|
||
"qr_code_tab": "📱 QR-код",
|
||
"copy_config": "📋 Копировать",
|
||
"download_conf": "⬇ Скачать .conf",
|
||
"copy_key": "📋 Копировать ключ",
|
||
"vpn_link_hint": "Вставьте эту ссылку в приложение AmneziaVPN для автоматической настройки",
|
||
"qr_hint": "Отсканируйте QR-код в приложении AmneziaVPN",
|
||
"qr_format_amnezia": "Amnezia",
|
||
"qr_format_wireguard": "Обычный",
|
||
"qr_format_amnezia_hint": "Анимированная серия для AmneziaVPN, передаёт имя сервера. Держите камеру, пока не прочитаются все кадры —",
|
||
"qr_format_wireguard_hint": "Конфиг или ссылка как есть — для AmneziaWG, wg-quick и других клиентов. Имя сервера не передаётся.",
|
||
"no_data": "Нет данных",
|
||
"start_btn": "▶ Старт",
|
||
"stop_btn": "⏹ Стоп",
|
||
"config_btn": "⚙️ Конфиг",
|
||
"done": "Готово",
|
||
"installing": "Установка...",
|
||
"start_install": "Начинаем установку...",
|
||
"check_docker": "Проверка Docker...",
|
||
"prepare_host": "Подготовка хоста...",
|
||
"build_container": "Сборка контейнера...",
|
||
"install_success": "Протокол установлен успешно!",
|
||
"install_error": "Ошибка установки: ",
|
||
"qr_error": "Не удалось сгенерировать QR-код",
|
||
"users_title": "Пользователи",
|
||
"search_placeholder": "Поиск по имени, email или Telegram...",
|
||
"add_user": "Добавить пользователя",
|
||
"prev_page": "← Назад",
|
||
"next_page": "Вперёд →",
|
||
"page_info": "Страница {} из {}",
|
||
"loading_users": "Загрузка пользователей...",
|
||
"nothing_found": "Ничего не найдено",
|
||
"search_empty_desc": "Попробуйте изменить запрос или создайте нового пользователя",
|
||
"username_label": "Имя пользователя",
|
||
"password_label": "Пароль",
|
||
"role_label": "Роль",
|
||
"role_user_desc": "User — только просмотр своих подключений",
|
||
"role_support_desc": "Support — управление серверами",
|
||
"role_admin_desc": "Admin — полный доступ",
|
||
"tg_id_label": "Telegram ID (опц.)",
|
||
"email_label": "Email (опц.)",
|
||
"traffic_limit_label": "Лимит трафика (ГБ) (опц., 0 = ∞)",
|
||
"expiration_date_label": "Срок действия (до)",
|
||
"description_label": "Описание (опц.)",
|
||
"auto_conn_title": "Автоматическое создание подключения (опционально)",
|
||
"server_label": "Сервер",
|
||
"no_create_conn": "— Не создавать подключение —",
|
||
"protocol_label": "Протокол",
|
||
"edit_user_title": "Редактировать пользователя: {}",
|
||
"edit_user_tg": "Telegram ID (опционально)",
|
||
"edit_user_email": "Email (опционально)",
|
||
"edit_user_limit": "Лимит трафика (ГБ) (0 = ∞)",
|
||
"new_password_hint": "Новый пароль (оставьте пустым, если не нужно менять)",
|
||
"op_type_label": "Тип операции",
|
||
"create_new_conn": "Создать новое подключение",
|
||
"link_existing_conn": "Привязать существующее",
|
||
"select_existing_conn": "Выберите существующее подключение",
|
||
"existing_conn_hint": "Будут показаны только не привязанные к пользователям подключения. Можно выбрать несколько, зажав Ctrl",
|
||
"conn_name_panel": "Имя подключения (в панели)",
|
||
"user_conns_title": "Подключения пользователя",
|
||
"no_free_conns": "Нет свободных подключений",
|
||
"linking": "Привязка...",
|
||
"conn_linked": "Подключение привязано",
|
||
"enabling": "Включение",
|
||
"disabling": "Отключение",
|
||
"user_enabled": "Пользователь включён",
|
||
"user_disabled": "Пользователь отключён",
|
||
"delete_user_confirm": "Удалить пользователя? Все его подключения будут удалены.",
|
||
"share_access": "Поделиться доступом",
|
||
"enable_public_access": "Включить публичный доступ",
|
||
"share_password_label": "Пароль (опционально)",
|
||
"share_password_hint": "Если установлен, пользователь должен будет его ввести",
|
||
"public_link_label": "Публичная ссылка",
|
||
"disabled": "Отключён",
|
||
"out_of": "Из",
|
||
"settings_title": "Настройки панели",
|
||
"appearance": "🎨 Внешний вид",
|
||
"title_label": "Заголовок (Title)",
|
||
"logo_label": "Логотип (Emoji или символ)",
|
||
"subtitle_label": "Подзаголовок (Subtitle)",
|
||
"captcha_title": "🔐 Капча",
|
||
"enable_captcha": "Включить капчу (multicolorcaptcha)",
|
||
"telegram_bot_title": "🤖 Telegram Bot",
|
||
"bot_token_label": "Bot Token (от @BotFather)",
|
||
"bot_status": "Статус",
|
||
"bot_running": "✅ Запущен",
|
||
"bot_stopped": "⏹ Остановлен",
|
||
"bot_stop_btn": "⏹ Остановить",
|
||
"bot_start_btn": "▶️ Запустить",
|
||
"bot_hint": "После изменения токена сохраните настройки — бот перезапустится автоматически. Пользователи должны иметь Telegram ID в профиле.",
|
||
"api_docs_title": "🔌 API Документация",
|
||
"api_docs_hint": "Используйте эти интерфейсы для изучения возможностей API панели",
|
||
"tunnels_title": "Туннели",
|
||
"local_server": "Локальный сервер",
|
||
"tunnel_install_enable": "Установить и включить",
|
||
"tunnel_enable": "Включить туннель",
|
||
"tunnel_running": "Туннель запущен",
|
||
"tunnel_stop": "Остановить",
|
||
"tunnel_stopping": "Остановка...",
|
||
"tunnel_stopped": "Туннель остановлен",
|
||
"tunnel_delete": "Удалить",
|
||
"tunnel_deleted": "Туннель удалён",
|
||
"tunnel_delete_confirm": "Остановить и удалить бинарный файл туннеля, установленный панелью?",
|
||
"tunnel_starting": "Запуск туннеля...",
|
||
"tunnel_started": "Туннель запущен",
|
||
"tunnel_waiting_url": "Туннель запущен. Ждем публичный адрес...",
|
||
"tunnel_no_public_url": "Публичный адрес появится здесь после запуска туннеля.",
|
||
"tunnels_hint": "Быстрые туннели публикуют локальную панель в интернете. Используйте надежный пароль администратора и передавайте публичные адреса только доверенным пользователям.",
|
||
"ngrok_authtoken_placeholder": "ngrok authtoken (для некоторых аккаунтов необязательно)",
|
||
"import_users_title": "📤 Импорт пользователей",
|
||
"import_source_label": "Источник импорта / Синхронизации",
|
||
"remnawave_url_label": "Remnawave URL",
|
||
"api_key_label": "API Key",
|
||
"enable_sync": "Включить синхронизацию",
|
||
"sync_hint": "Пользователи будут создаваться, отключаться и удаляться автоматически на основе данных из Remnawave",
|
||
"sync_now_btn": "🔄 Синхронизировать сейчас",
|
||
"delete_sync_btn": "🗑 Удалить синхронизацию",
|
||
"auto_create_conns": "Создавать подключения автоматически",
|
||
"sync_server_label": "Сервер для новых подключений",
|
||
"save_changes": "💾 Сохранить изменения",
|
||
"sync_success": "Синхронизация завершена: {} пользователей",
|
||
"sync_deleted": "Удалено {} синхронизированных пользователей",
|
||
"delete_sync_confirm": "Вы уверены, что хотите удалить ВСЕХ синхронизированных пользователей и их подключения? Это действие необратимо.",
|
||
"settings_saved": "Настройки успешно сохранены",
|
||
"bot_started": "Бот запущен",
|
||
"bot_stopped_msg": "Бот остановлен",
|
||
"sync_running": "Синхронизация...",
|
||
"deleting": "Удаление...",
|
||
"my_connections_title": "Мои подключения",
|
||
"show_config": "📄 Показать конфиг",
|
||
"no_connections_user_desc": "Обратитесь к администратору для создания VPN подключения",
|
||
"share_title": "Доступ к подключениям",
|
||
"vpn_access": "VPN Доступ",
|
||
"user_label_share": "Пользователь",
|
||
"share_protected_desc": "Этот доступ защищен паролем. Пожалуйста, введите его для продолжения.",
|
||
"auth_success": "Вход выполнен",
|
||
"loading_share_conns": "Загрузка подключений...",
|
||
"no_active_conns": "У вас пока нет активных подключений.",
|
||
"show_settings_btn": "🔑 Показать настройки",
|
||
"copied": "Скопировано!",
|
||
"active": "Активен",
|
||
"site_description": "Amnezia Web Panel — управление VPN серверами и протоколами AmneziaWG",
|
||
"toggle_theme": "Сменить тему",
|
||
"copied_to_clipboard": "Скопировано в буфер обмена",
|
||
"share_not_found": "404 Не Найдено",
|
||
"share_not_found_desc": "Либо ссылка неверна, либо доступ был отключен.",
|
||
"invalid_captcha": "Неверная капча",
|
||
"account_disabled": "Аккаунт отключён",
|
||
"invalid_login": "Неверный логин или пароль",
|
||
"user_exists": "Пользователь с таким именем уже существует",
|
||
"cannot_delete_self": "Нельзя удалить самого себя",
|
||
"wrong_share_password": "Неверный пароль",
|
||
"saving": "Сохранение...",
|
||
"select_lang": "Выберите язык",
|
||
"lang_ru": "Русский",
|
||
"lang_en": "English",
|
||
"lang_fr": "Français",
|
||
"lang_zh": "中文 (Chinese)",
|
||
"lang_fa": "فارسی (Persian)",
|
||
"backup_title": "Резервное копирование",
|
||
"download_backup": "Скачать data.json",
|
||
"restore_backup": "Восстановить из файла",
|
||
"restore_confirm": "Вы уверены? Текущие данные будут перезаписаны, и приложение перезагрузится.",
|
||
"restore_success": "Бекап успешно восстановлен!",
|
||
"auto_backup_title": "Auto backup",
|
||
"enable_auto_backup": "Включить автобекапы серверов",
|
||
"auto_backup_interval_label": "Интервал создания",
|
||
"auto_backup_hint": "Панель будет создавать бекапы установленных протоколов на каждом сервере с выбранным интервалом.",
|
||
"auto_backup_last_run": "Последний запуск",
|
||
"auto_backup_last_status": "Статус",
|
||
"auto_backup_created_count": "Создано бекапов",
|
||
"hours_suffix": "ч",
|
||
"invalid_backup_file": "Неверный файл резервной копии или структура",
|
||
"config_unavailable": "Конфигурация недоступна",
|
||
"config_unavailable_desc": "Этот клиент был создан через нативное приложение Amnezia.\\nПриватный ключ хранится только на устройстве пользователя и не может быть восстановлен сервером.",
|
||
"client_public_key": "Публичный ключ клиента:",
|
||
"telemt_desc": "Прокси для Telegram на базе MTProxy с продвинутой обфускацией и эмуляцией TLS.",
|
||
"tls_emulation": "TLS-эмуляция",
|
||
"tls_domain": "Домен маскировки",
|
||
"max_connections_limit": "Макс. соединений",
|
||
"max_connections_hint": "0 — без ограничений. Ограничивает одновременных пользователей.",
|
||
"traffic_reset_strategy_label": "Стратегия сброса трафика",
|
||
"traffic_reset_never": "Никогда не сбрасывать",
|
||
"traffic_reset_daily": "Сброс ежедневно",
|
||
"traffic_reset_weekly": "Сброс еженедельно",
|
||
"traffic_reset_monthly": "Сброс ежемесячно",
|
||
"traffic_reset_hint": "Как часто следует сбрасывать трафик пользователя",
|
||
"traffic_used_total": "Всего потрачено",
|
||
"traffic_reset_info": "Следующий сброс: {}",
|
||
"services": "Сервисы",
|
||
"dns_desc": "Персональный DNS-сервер для блокировки рекламы и защиты приватности ваших запросов.",
|
||
"dns_internal_hint": "Сервис будет запущен во внутренней сети (172.29.172.254) без привязки к портам хоста.",
|
||
"telemt_port_hint": "Порт для Telegram-прокси (обычно 443).",
|
||
"socks5_desc": "SOCKS5-прокси (3proxy) с одной учётной записью и аутентификацией по логину/паролю.",
|
||
"socks5_username": "Логин",
|
||
"socks5_password": "Пароль",
|
||
"socks5_password_placeholder": "Оставьте пустым для автогенерации",
|
||
"socks5_password_hint": "Если поле пустое, будет сгенерирован случайный пароль на 16 символов.",
|
||
"socks5_port_hint": "TCP-порт, на котором будет слушать прокси. В официальном клиенте Amnezia по умолчанию 38080.",
|
||
"socks5_change_settings": "Изменить настройки",
|
||
"socks5_settings_title": "SOCKS5 — Настройки подключения",
|
||
"socks5_port_change_hint": "Смена порта пересоздаёт контейнер — текущие соединения оборвутся.",
|
||
"socks5_settings_saved": "Настройки SOCKS5 сохранены",
|
||
"adguard_desc": "AdGuard Home — DNS-блокировщик рекламы с веб-интерфейсом администратора.",
|
||
"adguard_mode": "Режим установки",
|
||
"adguard_mode_sidebyside": "Рядом с AmneziaDNS",
|
||
"adguard_mode_sidebyside_hint": "поднимается параллельно AmneziaDNS на отдельном внутреннем IP (172.29.172.253)",
|
||
"adguard_mode_replace": "Заменить AmneziaDNS",
|
||
"adguard_mode_replace_hint": "удаляет контейнер amnezia-dns и забирает его IP — VPN-клиенты сразу пойдут в AdGuard",
|
||
"adguard_dns_port": "DNS-порт (53)",
|
||
"adguard_dns_port_hint": "Внутренний DNS-порт, на который ходят VPN-клиенты через docker-сеть.",
|
||
"adguard_web_port": "Порт Web UI",
|
||
"adguard_dot_port": "Порт DoT",
|
||
"adguard_doh_port": "Порт DoH",
|
||
"adguard_expose_web": "Опубликовать наружу",
|
||
"adguard_expose": "Опубликовать наружу",
|
||
"adguard_install_hint": "Первоначальная настройка AdGuard проходит через мастер на веб-интерфейсе после установки.",
|
||
"adguard_internal_ip": "Внутренний IP",
|
||
"adguard_web_ui": "Адрес панели",
|
||
"adguard_open_ui": "Открыть Web UI",
|
||
"edit_server_title": "Изменить сервер",
|
||
"edit_keep_credential": "Оставьте пустым, чтобы сохранить текущее значение",
|
||
"server_saved": "Настройки сервера сохранены",
|
||
"servers_reordered": "Порядок серверов изменён",
|
||
"ping_checking": "Проверяем соединение...",
|
||
"offline": "недоступен",
|
||
"api_tokens_title": "API-токены",
|
||
"api_tokens_hint": "Bearer-токены для внешних интеграций. Передавайте токен в заголовке `Authorization: Bearer <token>`. Токены имеют права администратора и перестают работать, если их владелец отключён или понижен в роли.",
|
||
"api_tokens_empty": "Пока нет ни одного API-токена. Создайте, чтобы подключить панель к внешнему сервису.",
|
||
"api_tokens_create": "Создать токен",
|
||
"api_tokens_create_title": "Создание API-токена",
|
||
"api_tokens_name_label": "Название",
|
||
"api_tokens_name_placeholder": "напр. Linear, CI-бот, мониторинг",
|
||
"api_tokens_name_hint": "Нужно, чтобы отличать токен в списке. Сам токен сгенерируется автоматически.",
|
||
"api_tokens_name_required": "Укажите название токена",
|
||
"api_tokens_created_title": "Токен создан",
|
||
"api_tokens_value_label": "Значение токена",
|
||
"api_tokens_warning_title": "Это единственный раз, когда вы увидите этот токен.",
|
||
"api_tokens_warning_body": "Скопируйте его сейчас и сохраните в менеджере секретов вашей интеграции. Панель хранит только хэш — если потеряете значение, токен придётся отозвать и создать заново.",
|
||
"api_tokens_revoke": "Отозвать",
|
||
"api_tokens_revoke_confirm": "Отозвать токен «{}»? Любая интеграция, использующая его, перестанет работать.",
|
||
"api_tokens_revoked": "Токен отозван",
|
||
"api_tokens_created": "Создан",
|
||
"api_tokens_last_used": "Последнее использование",
|
||
"api_tokens_owner": "Владелец",
|
||
"api_tokens_never": "никогда",
|
||
"coming_soon": "Скоро",
|
||
"promo_star_cta": "Поставить звезду на GitHub",
|
||
"aivpn_subtitle": "ИИ-подбор протокола, который сам выбирает правильный туннель под текущие условия. Поможете звездой — выйдет быстрее.",
|
||
"revproxy_title": "Reverse Proxy",
|
||
"revproxy_subtitle": "Высокопроизводительная маскировка трафика: прячем VPN за обычным сайтом, снижаем заметность для DPI.",
|
||
"management": "Управление",
|
||
"server_management": "Управление сервером",
|
||
"server_management_desc": "Выполнение системных действий на вашей машине.",
|
||
"check_server_services": "Проверить сервисы сервера",
|
||
"reboot_server": "Перезагрузить сервер",
|
||
"clear_server": "Очистить сервер",
|
||
"remove_server": "Удалить сервер из панели",
|
||
"ssl_title": "SSL / HTTPS Настройки",
|
||
"enable_https": "Включить HTTPS",
|
||
"panel_port_label": "Порт панели",
|
||
"domain_label": "Доменное имя",
|
||
"cert_path_label": "Путь к SSL сертификату (.pem)",
|
||
"key_path_label": "Путь к приватному ключу (.pem)",
|
||
"or_paste_text": "ИЛИ вставьте текст сертификатов",
|
||
"cert_text_label": "Содержимое сертификата (CRT)",
|
||
"key_text_label": "Содержимое ключа (KEY)",
|
||
"ssl_hint": "После включения панель будет доступна по https:// на указанном домене. Убедитесь, что пути к файлам или текстовые данные верны.",
|
||
"about_title": "О программе и обновления",
|
||
"current_version": "Текущая версия",
|
||
"check_updates": "Проверить обновления",
|
||
"checking_updates": "Проверка...",
|
||
"update_available": "Доступна новая версия",
|
||
"download_update": "Скачать обновление",
|
||
"up_to_date": "У вас установлена последняя версия",
|
||
"warp_hint": "WARP направляет исходящий трафик этого хоста через Cloudflare. Он не создаёт публичный URL панели как Quick Tunnel или ngrok.",
|
||
"warp_install_hint": "Сначала установите официальный клиент Cloudflare WARP, затем перезапустите панель.",
|
||
"warp_install_required": "Сначала установите WARP",
|
||
"warp_connect": "Подключить WARP",
|
||
"warp_disconnect": "Отключить",
|
||
"warp_connected": "WARP подключён",
|
||
"warp_disconnected": "WARP отключён",
|
||
"warp_status_unknown": "Статус WARP неизвестен.",
|
||
"warp_status_not_installed": "Cloudflare WARP CLI не установлен на этом хосте.",
|
||
"warp_status_connected": "Cloudflare WARP подключён.",
|
||
"warp_status_connecting": "Cloudflare WARP подключается.",
|
||
"warp_status_disconnected": "Cloudflare WARP отключён.",
|
||
"warp_status_not_registered": "Cloudflare WARP установлен, но ещё не зарегистрирован. Подключение попробует зарегистрировать его автоматически.",
|
||
"warp_status_service_unavailable": "Сервис Cloudflare WARP недоступен. Убедитесь, что warp-svc запущен.",
|
||
"warp_status_error": "Cloudflare WARP вернул ошибку.",
|
||
"install_starting": "Начинаем установку...",
|
||
"server_check_complete": "Проверка завершена",
|
||
"server_connection_error": "Ошибка подключения",
|
||
"connections_load_error": "Ошибка загрузки подключений",
|
||
"connection_updated": "Подключение обновлено",
|
||
"edit_connection": "Редактировать подключение",
|
||
"enable_connection_progress": "Включение подключения...",
|
||
"disable_connection_progress": "Отключение подключения...",
|
||
"connection_enabled": "Подключение включено",
|
||
"connection_disabled": "Подключение отключено",
|
||
"gb": "ГБ",
|
||
"marketplace": "Шаблоны",
|
||
"open_marketplace": "Открыть шаблоны",
|
||
"marketplace_desc": "Установите доступные шаблоны протоколов и сервисов для этого сервера.",
|
||
"installed_apps": "Установленные приложения",
|
||
"installed_apps_hint": "Здесь отображаются только установленные протоколы и сервисы. Чтобы добавить новые, откройте шаблоны.",
|
||
"no_installed_apps": "Пока нет установленных приложений",
|
||
"no_installed_apps_desc": "Откройте шаблоны, чтобы установить протоколы или сервисы на этот сервер.",
|
||
"install_another": "Установить ещё один",
|
||
"new_instance": "новый экземпляр",
|
||
"port_next_instance_hint": "Выберите свободный UDP-порт для дополнительного экземпляра.",
|
||
"checking_server": "Проверяем сервисы сервера...",
|
||
"web_servers": "Веб-серверы",
|
||
"nginx_desc": "NGINX веб-сервер с HTTPS-сертификатом Let's Encrypt и редактируемым index.html.",
|
||
"nginx_domain": "Домен",
|
||
"nginx_email": "Email для Let's Encrypt",
|
||
"nginx_port_hint": "HTTPS-порт на сервере. Порт 80/TCP должен быть свободен и доступен для проверки Let's Encrypt.",
|
||
"nginx_install_hint": "Домен уже должен указывать на этот сервер. Порт 80/TCP используется для HTTP-01 проверки сертификата.",
|
||
"site": "Сайт",
|
||
"site_editor": "Редактор сайта",
|
||
"site_saved": "Сайт сохранён",
|
||
"nginx_dns_hint": "Перед установкой создайте DNS-запись:",
|
||
"backup": "Backup",
|
||
"backups": "Бекапы",
|
||
"backup_desc": "Бекапы создаются на сервере и содержат ценные файлы протокола, нужные для восстановления или повторного запуска без потерь.",
|
||
"create_backup": "Создать бекап",
|
||
"creating_backup": "Создание бекапа...",
|
||
"backup_created": "Бекап создан",
|
||
"no_backups": "Бекапов пока нет",
|
||
"no_backups_desc": "Создайте первый бекап для этого протокола.",
|
||
"refresh": "Обновить",
|
||
"rename": "Переименовать",
|
||
"connection_renamed": "Подключение переименовано",
|
||
"enter_connection_name": "Введите новое имя подключения",
|
||
"config_saved": "Конфиг сохранён",
|
||
"reset_traffic": "Сбросить трафик",
|
||
"resetting": "Сброс...",
|
||
"reset_traffic_confirm": "Сбросить текущий трафик пользователя? Общая статистика сохранится.",
|
||
"traffic_reset_success": "Трафик сброшен",
|
||
"host_tuning": "Конфигурация",
|
||
"conn_warning_text": "⚠️ Внимание: {date} в {time} открыто {count} соединений!",
|
||
"clear_warnings": "Очистить предупреждения",
|
||
"warnings_cleared": "Предупреждения очищены",
|
||
"max_speed": "Макс. скорость (Мбит/с)",
|
||
"speed_limit_unlim": "Лимит скорости (0 = без лимита)",
|
||
"port_in_use_by": "Порт {port} уже занят ({owner}). Выберите другой порт.",
|
||
"exit_desc": "Выходная нода: транзитная точка для других серверов панели. Трафик клиентов, вошедший на другом сервере, выходит в интернет отсюда.",
|
||
"exit_port_hint": "UDP-порт транзитного канала. Сюда подключаются только другие серверы панели, не пользователи. Откройте его в файрволе сервера для входных нод.",
|
||
"exit_subnet": "Транзитная подсеть",
|
||
"exit_subnet_hint": "Приватная IPv4 /24, общая для выхода и его входных нод. Не должна пересекаться с клиентскими подсетями (10.8.x.x).",
|
||
"exit_obfuscation": "Обфусцировать канал между нодами (AmneziaWG)",
|
||
"exit_obfuscation_short": "Обфускация",
|
||
"exit_obfuscation_hint": "Включайте, если канал между нодами проходит через DPI. Иначе — обычный WireGuard. Входы на AmneziaWG Legacy могут использовать только необфусцированный выход.",
|
||
"exit_peers": "Пиры",
|
||
"exit_peers_title": "Выходная нода — привязанные входные ноды",
|
||
"exit_peer_name": "Входная нода",
|
||
"exit_transit_ip": "Транзитный IP",
|
||
"exit_public_key": "Публичный ключ",
|
||
"exit_handshake": "Handshake",
|
||
"exit_transfer": "Трафик",
|
||
"exit_peer_external": "не управляется панелью",
|
||
"exit_peer_remove_confirm": "Удалить пира? Входная нода за ним потеряет маршрут через этот выход.",
|
||
"exit_peer_removed": "Пир удалён",
|
||
"exit_no_peers": "К этому выходу пока не привязана ни одна входная нода.",
|
||
"exit_stop_confirm": "Через этот выход идёт трафик входных нод. Остановка отправит их клиентов на kill-switch (без трафика). Остановить всё равно?",
|
||
"exit_in_use": "Через эту выходную ноду идут входные ноды",
|
||
"exit_link_title": "Выходная нода",
|
||
"exit_link_desc": "Направить трафик всех клиентов этого инстанса через другой сервер панели. Канал между нодами шифруется; клиентские конфиги не меняются. Только IPv4: пока связь активна, IPv6 клиентов блокируется, а не утекает с этого сервера.",
|
||
"exit_link_select": "Выходная нода",
|
||
"exit_link_none": "Трафик выходит напрямую с этого сервера.",
|
||
"exit_link_current": "Привязано к {name} (транзит {ip})",
|
||
"exit_link_via": "Выход через",
|
||
"exit_link_btn": "Привязать",
|
||
"exit_unlink_btn": "Отвязать",
|
||
"exit_unlink_confirm": "Отвязать от выходной ноды? Клиенты снова будут выходить в интернет с этого сервера.",
|
||
"exit_link_saved": "Выходная нода привязана",
|
||
"exit_unlinked": "Выходная нода отвязана",
|
||
"exit_link_stale": "Выходная нода недоступна или удалена. Клиенты заблокированы kill-switch'ем, пока связь не отвязана или не починена.",
|
||
"exit_link_repair": "Починить связь",
|
||
"exit_no_exit_nodes": "Выходных нод пока нет. Установите сервис Exit Node на сервере, который должен быть точкой выхода.",
|
||
"exit_no_handshake": "Нет handshake от выходной ноды за 15 с — доступен ли транзитный UDP-порт? Связь откачена.",
|
||
"exit_apply_failed": "Не удалось применить маршрутизацию на этом сервере; связь откачена.",
|
||
"exit_not_found": "Выходная нода не найдена или не установлена.",
|
||
"not_linked": "Этот инстанс не привязан к выходной ноде.",
|
||
"exit_mtu_too_big": "MTU клиентов этого инстанса больше MTU канала (1420). Уменьшите его в настройках AWG (по умолчанию 1376).",
|
||
"exit_link_force": "Привязать всё равно",
|
||
"exit_self": "Сервер не может быть выходной нодой для самого себя.",
|
||
"exit_legacy_obfuscation": "AmneziaWG Legacy можно привязать только к необфусцированной выходной ноде.",
|
||
"exit_link_ipv6_warning": "Этот инстанс dual-stack. Пока связь активна, IPv6 клиентов блокируется, чтобы ничего не утекало с этого сервера; клиенты сами переходят на IPv4.",
|
||
"exit_link_ipv6_confirm": "IPv6 клиентов будет заблокирован, пока связь активна. Продолжить?",
|
||
"exit_link_mtu_warning": "MTU клиентов {mtu} больше MTU канала {exit_mtu}. Уменьшите его в настройках AWG перед привязкой.",
|
||
"exit_status_up": "работает",
|
||
"exit_status_stale": "нет handshake",
|
||
"exit_status_down": "не работает",
|
||
"exit_handshake_ago": "handshake {s} с назад",
|
||
"no_handshake_yet": "Handshake пока нет — связь оставлена, проверьте файрвол выхода.",
|
||
"old_exit_unreachable_orphan_peer": "Прежняя выходная нода была недоступна; запись пира на ней осталась.",
|
||
"exit_unreachable_orphan_peer": "Выходная нода была недоступна; запись пира на ней осталась.",
|
||
"exit_egress_check": "Проверить выход",
|
||
"exit_egress_checking": "Проверяю выходной IP…",
|
||
"exit_egress_match": "✓ Клиенты выходят с {ip} — это выходная нода {name}.",
|
||
"exit_egress_mismatch": "⚠ Клиенты выходят с {ip}, а адрес выходной ноды — {expected}. Так и должно быть, если нода за NAT.",
|
||
"exit_egress_direct": "✗ Клиенты по-прежнему выходят с этого сервера ({ip}) — трафик не идёт через связь.",
|
||
"exit_egress_unknown": "Не удалось определить выходной IP: сервисы проверки не ответили.",
|
||
"exit_egress_failed": "Не удалось выполнить проверку выхода на этом сервере.",
|
||
"exit_dns_via_exit": "Резолвить DNS клиентов на выходной ноде",
|
||
"exit_dns_via_exit_hint": "По умолчанию выключено: DNS-запросы остаются на этом сервере. Если включить, они идут через связь и отвечает AmneziaDNS выходной ноды — резолвер не видит страну этого сервера. Нужен AmneziaDNS на выходной ноде.",
|
||
"exit_dns_via_exit_on": "DNS клиентов резолвится на выходной ноде",
|
||
"exit_dns_via_exit_off": "DNS клиентов снова резолвится на этом сервере",
|
||
"exit_dns_needs_dns": "Установите AmneziaDNS на выходной ноде, прежде чем направлять туда DNS клиентов.",
|
||
"awg_mtu_exit_hint": "Инстанс привязан к выходной ноде: канал несёт не больше {exit_mtu}, держите MTU клиентов не выше этого значения.",
|
||
"exit_dns_disabled_no_dns": "На выходной ноде больше нет AmneziaDNS — DNS клиентов вернулся на этот сервер.",
|
||
"exit_defaults_title": "Выходные ноды",
|
||
"exit_default_node": "Выходная нода по умолчанию",
|
||
"exit_default_none": "Нет — новые инстансы выходят сами",
|
||
"exit_default_hint": "Каждый новый инстанс AmneziaWG будет привязан к этой выходной ноде сразу после установки. Уже установленные не трогаются, а если привязка не удастся, установка всё равно считается успешной.",
|
||
"exit_default_cleared": "Выходной ноды по умолчанию больше нет, значение очищено.",
|
||
"exit_restore_entries_relinked": "Пиры восстановлены для {n} привязанных входных нод.",
|
||
"exit_restore_entries_failed": "{n} входных нод не удалось перерегистрировать на этой выходной ноде — почините связь с их страницы.",
|
||
"exit_restore_relinked": "Связь с выходной нодой восстановлена после отката.",
|
||
"exit_restore_stale": "Связь с выходной нодой не поднялась после отката — клиенты заблокированы kill-switch'ем, пока вы её не почините или не снимете.",
|
||
"exit_restore_removed": "В архиве была связь с выходной нодой, о которой панель не знает; связь снята, клиенты снова выходят с этого сервера.",
|
||
"exit_restore_orphan": "В архиве была неизвестная связь с выходной нодой, и снять её не удалось — проверьте этот инстанс вручную.",
|
||
"on": "вкл",
|
||
"off": "выкл",
|
||
"restore": "Восстановить",
|
||
"restore_confirm_protocol": "Вы уверены? Текущая конфигурация протокола будет заменена данным бекапом.",
|
||
"delete_backup_confirm": "Удалить этот бекап с сервера? Это действие нельзя отменить.",
|
||
"backup_deleted": "Бекап удалён",
|
||
"upload_backup": "Загрузить",
|
||
"uploading_backup": "Загрузка...",
|
||
"backup_uploaded": "Бекап загружен",
|
||
"wgeasy_import": "Импорт из wg-easy",
|
||
"wgeasy_import_title": "Импорт из wg-easy / amnezia-wg-easy",
|
||
"wgeasy_web_port": "Порт веб-интерфейса wg-easy (на этом сервере)",
|
||
"wgeasy_password": "Пароль админки wg-easy",
|
||
"wgeasy_username": "Логин (только v15)",
|
||
"wgeasy_fetch": "Загрузить клиентов",
|
||
"wgeasy_import_btn": "Импортировать",
|
||
"wgeasy_import_warning": "Старый контейнер wg-easy будет остановлен (не удалён). Конфиги пользователей продолжат работать без изменений.",
|
||
"wgeasy_no_clients": "Не выбрано ни одного клиента",
|
||
"wgeasy_confirm": "Импортировать выбранных клиентов? Старый контейнер wg-easy будет остановлен.",
|
||
"wgeasy_importing": "Импортирую, это может занять несколько минут...",
|
||
"wgeasy_target_wg": "цель: WireGuard (без обфускации)",
|
||
"wgeasy_target_awg": "обнаружена обфускация → цель: AmneziaWG 2.0",
|
||
"rename_instance": "Переименовать инстанс",
|
||
"instance_name": "Название инстанса",
|
||
"rename_instance_hint": "Пустое поле — вернуть название по умолчанию.",
|
||
"no_expiry": "Без срока",
|
||
"telemt_secret_label": "Секрет (hex)",
|
||
"telemt_ad_tag_label": "AD-тег (hex)",
|
||
"telemt_max_conns_label": "Макс. TCP-соединений",
|
||
"telemt_quota_label": "Квота (байты)",
|
||
"telemt_max_ips_label": "Макс. уникальных IP",
|
||
"telemt_expiry_label": "Истекает (ISO 8601)",
|
||
"optional": "Необязательно",
|
||
"role_none_desc": "Без роли — только учётная запись, без входа",
|
||
"role_none_badge": "Без роли",
|
||
"password_optional_no_role": "Для роли «Без роли» пароль не нужен",
|
||
"password_required_for_role": "Для выбранной роли пароль обязателен",
|
||
"username_empty": "Имя пользователя не может быть пустым",
|
||
"invalid_role": "Недопустимая роль",
|
||
"awg_dns6_hint": "Используется в ключах, когда туннель dual-stack (IPv4+IPv6)",
|
||
"unlink_key_title": "Отвязать ключ {} от пользователя \"{}\"?",
|
||
"unlink_confirm": "Точно отвязать ?!",
|
||
"conn_unlinked": "Подключение отвязано",
|
||
"peer_already_linked": "Этот пир уже привязан к пользователю {}",
|
||
"peer_already_linked_self": "Этот пир уже привязан к данному пользователю",
|
||
"select_connection": "Выберите подключение",
|
||
"name_required": "Укажите имя",
|
||
"no_servers_available": "Нет доступных серверов",
|
||
"assign_user": "Пользователь",
|
||
"no_user_option": "— не привязывать —",
|
||
"stop_peer_title": "Остановить",
|
||
"start_peer_title": "Включить",
|
||
"ssh_cooldown_title": "SSH cooldown (сек)",
|
||
"ssh_cooldown_hint": "Начальная пауза перед повторным подключением к недоступному серверу. Не меняйте, если сервер работает корректно.",
|
||
"public_endpoint_title": "Публичный адрес",
|
||
"public_endpoint_for": "Адрес, на который подключаются клиенты {}",
|
||
"public_endpoint_host": "Хост",
|
||
"public_endpoint_port": "Порт",
|
||
"public_endpoint_port_placeholder": "порт экземпляра",
|
||
"public_endpoint_hint": "Оставьте пустым — будут использованы адрес сервера и порт экземпляра. Заполните, если экземпляр отвечает на другом IP того же сервера, через проброс порта или по доменному имени.",
|
||
"public_endpoint_not_applied": "Сохранено, но не применено на сервере"
|
||
}
|