{
"pages": {
"me": "Аккаунт",
"clients": "Клиенты",
"admin": {
"panel": "Админ-панель",
"general": "Общие настройки",
"config": "Конфигурация",
"interface": "Сетевой интерфейс",
"obfuscatorPresets": "Пресеты обфускатора",
"hooks": "Хуки",
"warp": "WARP"
}
},
"user": {
"email": "E-Mail"
},
"me": {
"currentPassword": "Текущий пароль",
"enable2fa": "Включить двухфакторную аутентификацию",
"enable2faDesc": "Отсканируйте QR‑код с помощью приложения‑аутентификатора или введите ключ вручную.",
"2faKey": "Ключ TOTP",
"2faCodeDesc": "Введите код из приложения‑аутентификатора.",
"disable2fa": "Отключить двухфакторную аутентификацию",
"disable2faDesc": "Введите пароль, чтобы отключить двухфакторную аутентификацию."
},
"general": {
"name": "Имя",
"username": "Имя пользователя",
"password": "Пароль",
"newPassword": "Новый пароль",
"updatePassword": "Обновить пароль",
"mtu": "MTU",
"allowedIps": "Разрешённые IP‑адреса",
"dns": "DNS",
"persistentKeepalive": "Постоянное поддержание соединения",
"logout": "Выйти",
"continue": "Продолжить",
"host": "Хост",
"yes": "Да",
"no": "Нет",
"confirmPassword": "Подтвердите пароль",
"loading": "Загрузка...",
"2fa": "Двухфакторная аутентификация",
"2faCode": "Код TOTP"
},
"setup": {
"welcome": "Добро пожаловать в первичную настройку PhobosWG",
"welcomeDesc": "Вы нашли самый простой способ развернуть отказоустойчивый WireGuard",
"existingSetup": "У вас уже есть существующая настройка?",
"createAdminDesc": "Сначала введите имя администратора и надёжный пароль. Эти данные будут использоваться для входа в Админ-панель.",
"setupConfigDesc": "Укажите публичное имя хоста или адрес. Используется для интерфейса и TLS; доступ клиентов — через порт обфускатора.",
"setupMigrationDesc": "Укажите файл резервной копии, если хотите перенести данные из предыдущей версии wg-easy.",
"upload": "Загрузить",
"migration": "Восстановить из резервной копии:",
"createAccount": "Создать аккаунт",
"successful": "Настройка завершена успешно",
"hostDesc": "Публичное имя или IP (например для веб‑панели и сертификатов)",
"tls": {
"title": "HTTPS / TLS-сертификат",
"desc": "Настройте TLS-сертификат для безопасного HTTPS-доступа. Без HTTPS вход в систему по умолчанию заблокирован.",
"selfSigned": "Самоподписанный сертификат",
"selfSignedDesc": "Генерируется мгновенно для вашего хоста. Браузер покажет предупреждение — нажмите «Дополнительно» → «Перейти».",
"selfSignedHstsWarning": "Если браузер блокирует страницу с ошибкой HSTS без возможности продолжить, у него в кэше осталась HSTS-политика от предыдущего сертификата на этом домене. Откройте URL в режиме инкогнито/приватном окне или очистите запись через chrome://net-internals/#hsts (Delete domain).",
"import": "Импорт существующего сертификата",
"importDesc": "Вставьте свои PEM-сертификат и приватный ключ.",
"importPath": "Импорт сертификата по путям к файлам",
"importPathDesc": "Укажите абсолютные пути к существующим файлам сертификата и ключа на диске (например /etc/letsencrypt/live/example.com/*.pem). Файлы должны быть доступны для чтения изнутри контейнера.",
"certPathLabel": "Путь к файлу сертификата (PEM fullchain)",
"keyPathLabel": "Путь к файлу приватного ключа (PEM)",
"importPathHint": "Файлы подключаются через симлинки, без копирования. При изменении исходных файлов на диске (например после certbot renew) сервер обнаружит это в течение ~30 с и автоматически перезапустится, подхватив новый сертификат. Контейнеру доступны для чтения следующие директории хоста: /etc/letsencrypt (certbot), /root/cert (3x-ui), /root/.acme.sh (acme.sh).",
"skip": "Пропустить (без HTTPS)",
"skipDesc": "Остаться на HTTP.",
"certLabel": "Сертификат (PEM fullchain)",
"keyLabel": "Приватный ключ (PEM)",
"generate": "Создать сертификат",
"apply": "Применить",
"restarting": "Сертификат применён. Сервер перезапускается с HTTPS...",
"redirectPrompt": "Откройте защищённую версию:",
"openLink": "Открыть HTTPS",
"skipWarning": "Без TLS-сертификата веб-интерфейс доступен только по HTTP.",
"errorCert": "Проверка сертификата не удалась",
"errorKey": "Проверка приватного ключа не удалась"
}
},
"theme": {
"dark": "Тёмная тема",
"light": "Светлая тема",
"system": "Системная тема"
},
"layout": {
"toggleCharts": "Показать/скрыть графики",
"donate": "Поддержать"
},
"header": {},
"login": {
"signIn": "Войти",
"rememberMe": "Запомнить меня",
"rememberMeDesc": "Оставаться в системе после закрытия браузера",
"2faRequired": "Требуется двухфакторная аутентификация",
"2faWrong": "Неверный код двухфакторной аутентификации"
},
"client": {
"empty": "Клиентов пока нет.",
"newShort": "Новый",
"sort": "Сортировка",
"create": "Создать клиента",
"created": "Клиент создан",
"new": "Новый клиент",
"name": "Имя",
"expireDate": "Дата отключения",
"expireDateDesc": "Дата, когда клиент будет отключён. Оставьте пустым для бессрочного доступа",
"delete": "Удалить",
"deleteClient": "Удалить клиента",
"deleteDialog1": "Вы уверены, что хотите удалить",
"deleteDialog2": "Это действие нельзя отменить.",
"enabled": "Включён",
"address": "Адрес",
"serverAllowedIps": "Разрешённые IP‑адреса сервера",
"copyInstallLink": "Скопировать команду установки",
"installLinkCopied": "Команда установки скопирована в буфер",
"installLinkFailed": "Не удалось сгенерировать ссылку установки",
"downloadPackage": "Скачать установочный пакет",
"permanent": "Бессрочный",
"createdOn": "Создан ",
"lastSeen": "Последнее подключение ",
"totalDownload": "Всего скачано: ",
"totalUpload": "Всего отправлено: ",
"newClient": "Новый клиент",
"disableClient": "Отключить клиента",
"enableClient": "Включить клиента",
"noPrivKey": "У этого клиента нет приватного ключа. Невозможно создать конфигурацию.",
"showQR": "Показать QR‑код",
"allowedIpsDesc": "Какие IP‑адреса будут маршрутизироваться через VPN (переопределяет глобальную конфигурацию)",
"serverAllowedIpsDesc": "Какие IP‑адреса сервер будет отправлять клиенту",
"mtuDesc": "Максимальный размер пакета (MTU) для VPN‑туннеля",
"persistentKeepaliveDesc": "Устанавливает интервал (в секундах) для пакетов поддержания соединения. 0 — Отключить",
"hooks": "Хуки",
"hooksDescription": "Хуки работают только с wg‑quick",
"hooksLeaveEmpty": "Только для wg‑quick. В остальных случаях оставьте пустым",
"dnsDesc": "DNS‑сервер, который будут использовать клиенты (переопределяет глобальную конфигурацию)",
"notConnected": "Клиент не подключен",
"endpoint": "Точка подключения",
"endpointDesc": "IP‑адрес клиента, с которого установлено соединение WireGuard",
"search": "Поиск клиентов...",
"config": "Конфигурация",
"viewConfig": "Просмотреть конфигурацию",
"firewallIps": "Разрешённые фаерволом IP-адреса",
"firewallIpsDesc": "IP‑адреса/CIDR-диапазоны, к которым может получить доступ клиент (проверка на сервере). Оставьте пустым, будут использоваться «Разрешённые IP‑адреса» (AllowedIPs). Поддерживается фильтрация по портам и протоколам. Подробности см. в документации.",
"downloadPng": "Скачать PNG",
"copyLink": "Копировать phobos:// ссылку",
"linkShort": "Ссылка",
"linkCopied": "phobos:// ссылка скопирована в буфер обмена",
"linkFailed": "Не удалось скопировать phobos:// ссылку",
"preset": "Пресет обфускатора",
"protocol": "Протокол",
"presetDesc": "Выберите пресет обфускатора, через который клиент будет ходить. Протокол пресета (WireGuard или SOCKS5) определяет, какие поля ниже применимы — например, логин/пароль SOCKS5 показываются только для SOCKS5-пресета, так как в WireGuard они не используются. Оставьте «по умолчанию», чтобы следовать default-пресету сервера (WireGuard).",
"presetUseDefault": "Использовать default-пресет",
"socks5Login": "Логин SOCKS5",
"socks5Password": "Пароль SOCKS5",
"socks5CredentialsHint": "Укажите этот логин и пароль в настройках вашего SOCKS5-приложения (браузер, curl и т. п.) — сам обфускатор лишь шифрует трафик, он не хранит и не проверяет эти учётные данные.",
"socks5ConfigNote": "У этого клиента выбран SOCKS5-пресет, поэтому конфиг ниже — это блок клиентского SOCKS5-обфускатора, а не WireGuard. Логин/пароль SOCKS5, показанные на странице этого клиента, нужно указать в самом SOCKS5-приложении.",
"nameHint": "Только латинские буквы, цифры, дефис, точка и {'@'}; до 32 символов; имя должно быть уникальным.",
"nameError": {
"tooLong": "Имя не должно превышать {max} символа(ов).",
"invalidChars": "Допустимы только латинские буквы, цифры, дефис, точка и {'@'} (без пробелов и других спецсимволов).",
"duplicate": "Клиент с таким именем уже существует."
}
},
"dialog": {
"change": "Изменить",
"cancel": "Отменить",
"create": "Создать",
"delete": "Удалить"
},
"toast": {
"success": "Успешно",
"saved": "Сохранено",
"error": "Ошибка",
"unknown": "Неизвестная ошибка. Подробности см. в консоли браузера"
},
"form": {
"actions": "Действия",
"save": "Сохранить",
"revert": "Отменить",
"sectionGeneral": "Общие",
"sectionAdvanced": "Расширенные",
"noItems": "Нет элементов",
"nullNoItems": "Нет элементов. Используется глобальная конфигурация",
"add": "Добавить"
},
"admin": {
"general": {
"sessionTimeout": "Время жизни сессии",
"sessionTimeoutDesc": "Длительность сессии для «Запомнить меня» (в секундах)",
"metrics": "Метрики",
"metricsPassword": "Пароль",
"metricsPasswordDesc": "Bearer-пароль для конечной точки метрик. Оставьте поле пустым, чтобы сохранить текущий пароль.",
"metricsPasswordSet": "Пароль установлен — оставьте пустым, чтобы не менять",
"metricsPasswordUnset": "Пароль не установлен",
"json": "JSON",
"jsonDesc": "Путь для метрик в формате JSON",
"prometheus": "Prometheus",
"prometheusDesc": "Путь для метрик Prometheus"
},
"config": {
"connection": "Соединение",
"hostDesc": "Публичное имя или IP (сохранение обнуляет связанные с хостом данные клиентов)",
"allowedIpsDesc": "Разрешённые IP‑адреса для клиентов (глобальная конфигурация)",
"dnsDesc": "DNS‑сервер для клиентов (глобальная конфигурация)",
"mtuDesc": "MTU для клиентов (только для новых)",
"persistentKeepaliveDesc": "Интервал в секундах для отправки пакетов поддержания соединения на сервер. 0 = отключено (только для новых клиентов)"
},
"tls": {
"title": "TLS-сертификат",
"desc": "Замените активный HTTPS-сертификат или переключитесь на HTTP.",
"current": "Активный сертификат",
"apply": "Применить настройки TLS",
"applied": "Настройки TLS применены. Сервер перезапускается.",
"appliedRestart": "Настройки TLS применены. Сервер перезапускается; через несколько секунд откройте {url}.",
"externalManaged": "TLS управляется внешним обратным прокси (TLS_TERMINATION=external). Сертификат нужно выпускать и обновлять вне PhobosWG.",
"origin": {
"self-signed": "Самоподписанный",
"imported": "Импортированный (вставленный PEM)",
"imported-path": "Импорт по путям (симлинк, авто-перезагрузка)",
"none": "Нет (HTTP)"
}
},
"interface": {
"cidrSuccess": "CIDR изменён",
"device": "Устройство",
"deviceDesc": "Сетевое устройство Ethernet, через которое должен проходить трафик WireGuard",
"mtuDesc": "MTU, который будет использовать WireGuard",
"changeCidr": "Изменить CIDR",
"restart": "Перезапустить интерфейс",
"restartDesc": "Перезапустить сетевой интерфейс WireGuard",
"restartWarn": "Вы уверены, что хотите перезапустить сетевой интерфейс? Это приведёт к отключению всех клиентов.",
"restartSuccess": "Интерфейс перезапущен",
"subnet": "Подсеть WireGuard",
"ipv4Cidr": "Подсеть WireGuard IPv4 (CIDR)",
"ipv4CidrDesc": "Пул адресов для клиентов (например 10.8.0.0/24). Расширьте маску (например /16), чтобы увеличить число клиентов или использовать другие диапазоны. Изменение переназначает IPv4-адрес каждому клиенту.",
"ipv6Cidr": "Подсеть WireGuard IPv6 (CIDR)",
"ipv6CidrDesc": "Пул IPv6-адресов для клиентов. Изменение переназначает IPv6-адрес каждому клиенту.",
"firewall": "Фильтрация трафика",
"firewallEnabled": "Включить фаервол для отдельных клиентов",
"firewallEnabledDesc": "Ограничить трафик клиентов до определённых IP‑адресов с помощью iptables. При включении для каждого клиента можно настроить список разрешённых адресов.",
"publicAddress": "Публичный адрес",
"publicIpV4": "Публичный IPv4 сервера",
"publicIpV4Desc": "Используется в target клиентского конфига обфускатора.",
"publicIpV6": "Публичный IPv6 сервера",
"publicIpV6Desc": "Опциональная IPv6‑цель.",
"publicDomain": "Публичный домен сервера",
"publicDomainDesc": "Если указан, используется как target обфускатора в клиентском конфиге вместо IPv4/IPv6.",
"egress": "Исходящий канал",
"egressWarp": "Направить трафик клиентов через WARP",
"egressWarpDesc": "При включении клиенты выходят в интернет через Cloudflare WARP, а не через WAN сервера, скрывая реальный IP сервера. Требует зарегистрированной конфигурации WARP. Может потребоваться снижение MTU клиентов."
},
"obfuscatorPresets": {
"title": "Пресеты обфускатора",
"desc": "Каждый пресет — отдельный listener wg-obfuscator с собственным портом, ключом и режимом маскировки. Default-пресет используется всеми клиентами, у которых явно не выбран другой. WireGuard-пресеты используют UDP-порты 51822–51861, SOCKS5-пресеты — TCP-порты 51862–51891 (диапазоны, опубликованные в docker-compose).",
"add": "Добавить пресет",
"addDesc": "Введите только имя. Порт, ключ и остальные параметры получат значения по умолчанию — их можно изменить в настройках пресета после создания.",
"default": "по умолчанию",
"setAsDefault": "Сделать по умолчанию",
"deleteConfirm": "Удалить этот пресет? Клиенты, использующие его, переключатся на default-пресет.",
"regenerateKey": "Перегенерировать ключ",
"regeneratePort": "Выбрать свободный порт",
"nameLabel": "Имя",
"nameDesc": "Отображаемое имя пресета. Используется только в панели.",
"modeLabel": "Протокол (mode)",
"modeDesc": "WireGuard: обфусцирует UDP-хендшейк WireGuard. SOCKS5: запускает настоящий SOCKS5-прокси (с опциональным RFC1929 логином/паролем на клиента) поверх обфусцированного TCP-канала.",
"sourceLportLabel": "source-lport (внешний UDP-порт)",
"sourceLportLabelSocks5": "source-lport (внешний TCP-порт)",
"sourceLportDesc": "Публичный UDP-порт, на котором слушает серверный обфускатор. Должен быть в диапазоне 51822–51861 (его публикует docker-compose), иначе клиенты не смогут подключиться.",
"sourceLportDescSocks5": "Публичный TCP-порт, на котором слушает SOCKS5-сервер. Должен быть в диапазоне 51862–51891 (его публикует docker-compose), иначе клиенты не смогут подключиться.",
"targetLabel": "target",
"targetDesc": "Куда серверный обфускатор пересылает снятый с маскировки трафик. Пусто = локальный WireGuard (127.0.0.1:<порт WG>). Формат: host:port.",
"targetPlaceholder": "127.0.0.1:<порт WireGuard> (по умолчанию)",
"sourceIfLabel": "source-if",
"sourceIfDesc": "IP интерфейса, на котором слушает серверный обфускатор. По умолчанию 0.0.0.0 (все интерфейсы).",
"keyLabel": "Ключ обфускации (key)",
"keyDesc": "Общий ключ обфускации, одинаковый на обеих сторонах. Генерируется случайно (200–254 символа). Длина 1–255.",
"maskingLabel": "Режим маскировки (masking)",
"maskingDesc": "Режим обхода DPI. STUN: трафик под STUN. MEDIA: под RTP/H.264 медиапоток, задаётся явно на обеих сторонах. AUTO: сервер определяет автоматически, клиент использует STUN. NONE: маскировка выключена (XOR остаётся).",
"maskingDescSocks5": "Режим обхода DPI. STUN: трафик под STUN. MEDIA: под RTP/H.264 медиапоток, задаётся явно на обеих сторонах. TLS: под HTTPS-записи. NONE: маскировка выключена (XOR остаётся). AUTO недоступен для SOCKS5-пресетов.",
"obfuscateBytesLabel": "obfuscate-bytes",
"obfuscateBytesDesc": "Сколько первых байт преобразовывать XOR. 0 = весь пакет. При >0 padding отключается. Должно совпадать на обеих сторонах. Для MEDIA: 0 → авто 16, минимум 4.",
"dummyLabel": "Макс. dummy‑байт (max-dummy)",
"dummyDesc": "Максимальный размер случайного padding на пакет (0–1024). По умолчанию 40.",
"dummyDisabledNote": "Не действует при MEDIA и при obfuscate-bytes > 0.",
"mediaSsrcDisabledNote": "Действует только при режиме маскировки MEDIA.",
"verboseLabel": "verbose (уровень логов)",
"verboseDesc": "Детализация логов. error/warn/info/debug/trace. На боевом сервере рекомендуется error; debug/trace резко нагружают CPU.",
"clientLocalPortLabel": "Локальный WG-порт на клиенте",
"clientLocalPortDesc": "Локальный UDP-порт, куда шлёт WireGuard клиента (Endpoint 127.0.0.1:<порт>) и source-lport клиентского обфускатора. По умолчанию 13255.",
"clientLocalPortSocks5Label": "Локальный SOCKS5-порт на клиенте",
"clientLocalPortSocks5Desc": "Локальный TCP-порт, который слушает клиентский SOCKS5-обфускатор. В настройках SOCKS5-прокси приложения укажите 127.0.0.1:<порт>. По умолчанию 1080.",
"mediaSsrcLabel": "RTP SSRC (media-ssrc)",
"mediaSsrcDesc": "Фиксированный токен SSRC для надёжного распознавания MEDIA-кадров на обеих сторонах. Автозаполняется при выборе MEDIA; 0 = не задан.",
"clientCount": "{n} клиент(ов)"
},
"introText": "Добро пожаловать в панель администратора.\n\nЗдесь вы можете управлять общими настройками, конфигурацией, интерфейсом, пресетами обфускатора и хуками.\n\nНачните с выбора одного из разделов на боковой панели.",
"warp": {
"title": "Cloudflare WARP",
"intro": "Зарегистрируйте бесплатный аккаунт Cloudflare WARP для использования в качестве исходящего канала для клиентов. Клиенты будут выходить в интернет с IP Cloudflare, а не с IP сервера.",
"register": "Получить WARP",
"registerSuccess": "WARP зарегистрирован",
"status": "Статус",
"connection": "Соединение",
"online": "В сети",
"offline": "Не в сети",
"checkNow": "Проверить соединение",
"checking": "Проверка…",
"checkOnline": "WARP в сети",
"checkOffline": "WARP не в сети",
"deviceId": "ID устройства",
"addressV4": "Адрес IPv4",
"addressV6": "Адрес IPv6",
"endpoint": "Эндпоинт",
"notActiveEgress": "WARP не активен в исходящем канале",
"notActiveEgressTip": "Включите «Направить трафик клиентов через WARP» в разделе «Сетевой интерфейс», чтобы использовать и проверить туннель WARP.",
"license": "Лицензия WARP+",
"licenseKey": "Лицензионный ключ",
"licenseKeyDesc": "Введите лицензионный ключ WARP+ для активации WARP+.",
"licenseSet": "Лицензия установлена",
"licenseUnset": "Лицензия отсутствует",
"licenseSuccess": "Лицензия применена",
"applyLicense": "Применить лицензию",
"autoRotate": "Автоматическая ротация IP",
"intervalDays": "Интервал (дней)",
"intervalDaysDesc": "0 — отключить. Автоматически меняет IP WARP.",
"changeIp": "Сменить IP",
"changeIpSuccess": "IP WARP изменён",
"delete": "Удалить WARP",
"deleteSuccess": "Конфигурация WARP удалена",
"importConfig": "Изменить конфигурацию",
"importTitle": "Ручная конфигурация WARP",
"importDesc": "Вставьте WireGuard-конфиг. Система проверит соединение — если рукопожатие установлено, конфигурация будет сохранена. Параметры Table, PostUp и PostDown управляются автоматически и не должны присутствовать в конфиге.",
"importApply": "Применить",
"importSuccess": "Конфигурация WARP применена"
}
},
"zod": {
"generic": {
"required": "{0} обязательно для заполнения",
"validNumber": "{0} должно быть числом",
"validNumberRange": "{0} должно быть числом или диапазоном чисел",
"validString": "{0} должно быть строкой",
"validBoolean": "{0} должно быть логическим значением",
"validArray": "{0} должно быть массивом",
"stringMin": "{0} должно содержать не менее {1} символа",
"numberMin": "{0} должно быть не менее {1}"
},
"client": {
"id": "ID клиента",
"name": "Имя",
"expiresAt": "Дата окончания действия",
"address4": "IPv4‑адрес",
"address6": "IPv6‑адрес",
"serverAllowedIps": "Разрешённые IP‑адреса сервера",
"firewallIps": "Разрешённые фаерволом IP-адреса",
"firewallIpsInvalid": "Некорректная запись IP-адреса для фаервола. Поддерживаемый синтаксис см. в документации",
"presetId": "ID пресета обфускатора",
"nameTooLong": "Имя клиента не должно превышать 32 символа.",
"nameInvalidChars": "Имя клиента может содержать только латинские буквы, цифры, дефис, точку и {'@'} (без пробелов и других спецсимволов)."
},
"obfuscatorPreset": {
"id": "ID пресета обфускатора",
"name": "Имя пресета",
"mode": "Протокол",
"extPort": "Внешний порт (WireGuard/UDP 51822–51861, SOCKS5/TCP 51862–51891)",
"key": "Ключ обфускатора",
"masking": "Режим маскировки",
"maskingAutoSocks5": "Маскировка AUTO недоступна для пресетов в режиме SOCKS5",
"maskingTlsWireguard": "Маскировка TLS доступна только для пресетов в режиме SOCKS5",
"sourceIf": "Интерфейс прослушивания (IP)",
"target": "Target должен быть в формате host:port",
"obfuscateBytes": "Obfuscate-bytes (0–1024)",
"obfuscateBytesMedia": "Для MEDIA минимум 4 (или 0 для значения по умолчанию 16)",
"verbose": "Уровень логов",
"idle": "Таймаут простоя",
"dummy": "Макс. dummy‑байт",
"clientWgLocalPort": "Локальный WG-порт на клиенте",
"mediaSsrc": "RTP SSRC",
"clientLocalPort": "Локальный порт на клиенте (1-65535)"
},
"user": {
"username": "Имя пользователя",
"password": "Пароль",
"remember": "Запомнить",
"name": "Имя",
"email": "Электронная почта",
"emailInvalid": "Адрес электронной почты должен быть корректным",
"passwordMatch": "Пароли должны совпадать",
"totpEnable": "Включить TOTP",
"totpEnableTrue": "TOTP должен быть включён",
"totpCode": "Код TOTP"
},
"userConfig": {
"host": "Хост"
},
"general": {
"sessionTimeout": "Время жизни сессии",
"metricsEnabled": "Метрики",
"metricsPassword": "Пароль для метрик"
},
"interface": {
"cidr": "CIDR",
"device": "Устройство",
"cidrValid": "CIDR должен быть корректным",
"egressMode": "Режим исходящего канала",
"domainValid": "Домен должен быть корректным именем хоста"
},
"installLink": {
"token": "Токен установки"
},
"obfuscator": {
"extPort": "Внешний порт обфускатора",
"key": "Ключ обфускатора",
"masking": "Режим маскировки",
"idle": "Таймаут простоя обфускатора",
"dummy": "Макс. dummy‑байт",
"publicIpV4": "Публичный IPv4 сервера",
"publicIpV6": "Публичный IPv6 сервера"
},
"stringMalformed": "Строка имеет неверный формат",
"body": "Тело должно быть корректным объектом",
"hook": "Хук",
"enabled": "Включено",
"mtu": "MTU",
"persistentKeepalive": "Постоянное поддержание соединения",
"address": "IP‑адрес",
"dns": "DNS",
"allowedIps": "Разрешённые IP‑адреса",
"file": "Файл",
"warp": {
"addressV4": "Адрес IPv4",
"addressV6": "Адрес IPv6",
"endpoint": "Эндпоинт (хост:порт)",
"interval": "Интервал обновления (дней)",
"key": "Ключ WireGuard",
"license": "Лицензионный ключ WARP+ (мин. 26 символов)"
}
},
"hooks": {
"preUp": "PreUp",
"postUp": "PostUp",
"preDown": "PreDown",
"postDown": "PostDown"
},
"copy": {
"notSupported": "Копирование не поддерживается",
"copied": "Скопировано!",
"failed": "Ошибка копирования",
"copy": "Копировать",
"copyConfig": "Нажмите, чтобы скопировать конфиг в буфер обмена"
}
}