home-hosted 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- var e={"activity.emptyTitle":`За последние 24 часа событий нет`,"activity.emptyDescription":`Запуски, завершения, аварии и восстановления появляются здесь по мере происходящего.`,"activity.ran":`работал {duration}`,"addServer.title":`Добавить сервер`,"addServer.description":`Добавляет запись в servers.config.json рабочего пространства {workspace}; каждая пропущенная политика наследуется от значений по умолчанию.`,"addServer.thisWorkspace":`этого рабочего пространства`,"addServer.identity":`Идентификация`,"addServer.id":`Id`,"addServer.idHint":`Строчные буквы, цифры, дефисы и подчёркивания; используется в URL и журналах.`,"addServer.labelHint":`Показывается в панели; по умолчанию совпадает с id.`,"addServer.process":`Процесс`,"addServer.commandHint":`Запускается без оболочки.`,"addServer.argumentsHint":`Один аргумент на строку; пробелы внутри строки сохраняются.`,"addServer.portLifecycle":`Порт и жизненный цикл`,"addServer.bindHint":`lan открывает его в сети; делайте это только за аутентификацией.`,"addServer.advanced":`Дополнительные параметры`,"addServer.advancedHint":`окружение, резервные копии, политика, жизненный цикл, bootstrap`,"addServer.backups":`Резервные копии`,"addServer.backupIgnore":`Игнорировать известные генерируемые файлы`,"addServer.bootstrapDescription":`Разовый командный запуск перед первым стартом.`,"addServer.bootstrapHint":`Установки, миграции, загрузки — перед первым стартом, а не при каждом.`,"addServer.policyResources":`Политика и ресурсы`,"addServer.logBufferHint":`Пустое значение сохраняет значение по умолчанию.`,"addServer.inheritNote":`Перезапуск, исправность и остановка сначала соответствуют {settings}; измените значение здесь — и оно будет записано в этот элемент, а не останется унаследованным.`,"addServer.serverDefaults":`Настройки → Серверные значения по умолчанию`,"addServer.placeholdersTitle":`Доступные подстановки аргументов`,"addServer.submit":`Добавить в servers.config.json`,"app.name":`home-hosted`,"app.tagline":`Панель управления супервизором процессов`,"bind.local":`local — 127.0.0.1`,"bind.lan":`lan — 0.0.0.0`,"bind.explicit":`{bind} — явно`,"common.cancel":`Отмена`,"common.confirm":`Подтвердить`,"common.reset":`Сбросить`,"common.keepIt":`Оставить`,"common.remove":`Убрать`,"common.close":`Закрыть`,"common.save":`Сохранить`,"common.saving":`Сохранение…`,"common.discard":`Отменить изменения`,"common.delete":`Удалить`,"common.edit":`Изменить`,"common.add":`Добавить`,"common.retry":`Повторить`,"common.copy":`Копировать`,"common.copied":`Скопировано`,"common.enabled":`Включено`,"common.disabled":`Отключено`,"common.none":`Нет`,"common.unknown":`неизвестно`,"common.loading":`Загрузка…`,"common.selectAll":`Выбрать все`,"common.selectNone":`Снять выделение`,"common.name":`Название`,"common.label":`Метка`,"common.hostname":`Имя хоста`,"common.port":`Порт`,"common.command":`Команда`,"common.environment":`Окружение`,"common.memory":`Память`,"common.cpu":`ЦП`,"common.disk":`Диск`,"common.uptime":`Время работы`,"common.status":`Состояние`,"common.actions":`Действия`,"common.details":`Подробности`,"common.overview":`Обзор`,"common.warning":`Предупреждение`,"common.error":`Ошибка`,"common.confirmQuestion":`{label}?`,"common.unset":`не задано`,"common.never":`никогда`,"common.now":`только что`,"common.dismiss":`Скрыть`,"connection.live":`В реальном времени`,"connection.connecting":`Подключение`,"connection.reconnecting":`Переподключение`,"connection.liveUpdates":`Обновления в реальном времени`,"editor.title":`Изменить конфигурацию`,"editor.description":`Записывает переопределения в {file}; всё нетронутое продолжает наследовать значения по умолчанию.`,"editor.inSync":`синхронизировано`,"editor.process":`Процесс`,"editor.processDescription":`Что запускается, где и с каким окружением.`,"editor.labelPlaceholder":`иначе используется id`,"editor.argumentsHint":`По одному на строку; {port} {host} {home} {projectDir} {dataRoot} {id} {label} {cwd} {bind} {lanIp} подставляются.`,"editor.portTitle":`Порт и привязка`,"editor.portDescription":`Как порт проверяется заранее и где процесс доступен.`,"editor.bindHint":`Собственный IPv4, уже заданный в конфигурации, остаётся доступным для выбора.`,"editor.lifecycle":`Жизненный цикл`,"editor.lifecycleDescription":`Владеет ли супервизор этим элементом вообще.`,"editor.save":`Сохранить в servers.config.json`,"editor.changesTitle":`Несохранённые изменения`,"editor.changesDescription":`Что «Сохранить» записало бы в servers.config.json.`,"editor.nothingToSave":`Нечего сохранять.`,"health.disabled":`Не проверяется`,"health.unknown":`Не проверен`,"health.healthy":`Исправен`,"health.unhealthy":`Неисправен`,"history.start":`Запущен`,"history.exit":`Завершён`,"history.crash":`Аварийно завершился`,"history.forcedRestart":`Принудительный перезапуск`,"history.unhealthy":`Неисправен`,"history.recovered":`Восстановлен`,"host.loadPerCpu":`Нагрузка / цп`,"host.cpuTemp":`Темп. ЦП`,"host.samplingOff":`Опрос хоста выключен`,"host.samplingOffDescription":`Включите его в настройках, чтобы собирать нагрузку, память, диск и температуру.`,"host.swap":`Подкачка`,"host.cpus":`ЦП`,"host.loadAverage":`Нагрузка 1 / 5 / 15`,"host.memoryUsed":`Память занята`,"host.sampled":`Собрано`,"host.filesystems":`Файловые системы`,"host.thresholdsBreached":`Пороги превышены`,"killPort.trigger":`Завершить процесс на порту {port}`,"killPort.title":`Завершить процесс на порту {port}?`,"killPort.body":`Сначала его просят остановиться, и завершают только если он это игнорирует. Всё, что находится под управлением этой панели, отклоняется, поэтому управляемый сервер так не потерять.`,"killPort.confirm":`Завершить`,"language.label":`Язык`,"language.select":`Выберите язык`,"lifecycle.restartTitle":`Политика перезапуска`,"lifecycle.restartDescription":`Задержка между попытками после аварии.`,"lifecycle.restartOnCrash":`Перезапуск при аварии`,"lifecycle.maxRetries":`Макс. попыток`,"lifecycle.maxRetriesHint":`Попытки, после которых сервер остаётся аварийно завершённым.`,"lifecycle.baseDelay":`Базовая задержка (мс)`,"lifecycle.factor":`Коэффициент задержки`,"lifecycle.maxDelay":`Макс. задержка (мс)`,"lifecycle.resetAfter":`Сброс после (мс)`,"lifecycle.resetAfterHint":`Запуск такой длительности сбрасывает счётчик попыток.`,"lifecycle.healthTitle":`Проверка исправности`,"lifecycle.healthDescription":`Как проверяется готовность, когда процесс запущен.`,"lifecycle.probe":`Проверять этот сервер`,"lifecycle.probeType":`Тип проверки`,"lifecycle.probePort":`TCP-порт — только соединение`,"lifecycle.probeHttp":`HTTP-запрос — проверка ответа`,"lifecycle.interval":`Интервал (мс)`,"lifecycle.timeout":`Тайм-аут (мс)`,"lifecycle.unhealthyAfter":`Неисправен после`,"lifecycle.unhealthyAfterHint":`Подряд неудачных проверок.`,"lifecycle.forceRestartAfter":`Принудительный перезапуск через (мс)`,"lifecycle.forceRestartAfterHint":`0 отключает его.`,"lifecycle.startTimeout":`Тайм-аут запуска (мс)`,"lifecycle.httpPath":`HTTP-путь`,"lifecycle.httpMethod":`HTTP-метод`,"lifecycle.expectStatus":`Ожидать статус`,"lifecycle.expectStatusHint":`Пусто принимает любой статус ниже.`,"lifecycle.expectStatusBelow":`Исправен ниже статуса`,"lifecycle.expectBody":`Тело должно содержать`,"lifecycle.expectBodyPlaceholder":`необязательная подстрока`,"lifecycle.headBodyHint":`У HEAD нет тела ответа, поэтому эта проверка игнорируется — используйте GET или очистите её.`,"lifecycle.stopTitle":`Поведение при остановке`,"lifecycle.stopDescription":`Как дереву процессов предлагается завершиться.`,"lifecycle.signal":`Сигнал`,"lifecycle.signalTerm":`SIGTERM — попросить остановиться`,"lifecycle.signalInt":`SIGINT — прервать (Ctrl-C)`,"lifecycle.signalKill":`SIGKILL — завершить немедленно`,"lifecycle.grace":`Льготный период (мс)`,"lifecycle.killGroup":`Завершить всю группу процессов`,"lifecycle.killPortHolders":`Также завершить всё, что занимает порт`,"login.title":`Войдите, чтобы продолжить`,"login.firstRunTitle":`У этой панели ещё нет пароля`,"login.firstRunSubtitle":`Доступ к ней может получить что угодно на этой машине. Задайте пароль сразу после входа.`,"login.authOffTitle":`Аутентификация отключена`,"login.authOffSubtitle":`Панель слушает только loopback — сейчас это единственная её защита.`,"login.subtitle":`Панель управления защищена. Введите пароль, чтобы продолжить.`,"login.password":`Пароль`,"login.showPassword":`Показать пароль`,"login.hidePassword":`Скрыть пароль`,"login.signIn":`Войти`,"login.openDashboard":`Открыть панель`,"login.exposed":`Открыта наружу`,"login.defaultPasswordWarning":`Всё ещё используется пароль по умолчанию {password}. Смените его в настройках — до этого прослушивание за пределами 127.0.0.1 отклоняется.`,"login.noPasswordWarning":`Пароль не задан. Откройте настройки на этой машине, чтобы добавить его, или выполните {command}.`,"login.sessionNote":`Сеанс остаётся активным {days} дней после последнего визита — каждый запрос продлевает этот срок. Выход очищает только этот браузер.`,"login.servedFromThisMachine":`обслуживается с этой машины`,"logs.emptyHint":`Вывода пока нет.`,"logs.noMatches":`Ничего не соответствует этому поиску или фильтру потоков.`,"logs.searchPlaceholder":`Искать в этом выводе`,"logs.searchLabel":`Искать в выводе журнала`,"logs.clearSearch":`Очистить поиск`,"logs.prevMatch":`Предыдущее совпадение`,"logs.nextMatch":`Следующее совпадение`,"logs.showTimestamps":`Показать отметки времени`,"logs.hideTimestamps":`Скрыть отметки времени`,"logs.timestampsShort":`ts`,"logs.pause":`Пауза`,"logs.follow":`Следить`,"logs.clearHint":`Очистить буфер в памяти`,"logs.clearLabel":`Очистить буфер журнала`,"logs.downloadHint":`Скачать сохранённый файл`,"logs.downloadLabel":`Скачать файл журнала`,"logs.outputLabel":`Вывод журнала`,"logs.jumpToLatest":`Перейти к последнему`,"logs.streaming":`поток`,"logs.paused":`пауза`,"logs.snapshot":`снимок`,"logs.linesOf":`{count} из {total} строк`,"logs.matches":`{count} совпадений`,"logs.rowHeight":`высота строки {height}px · окно`,"logs.streamAll":`Все`,"logs.streamOut":`out`,"logs.streamErr":`err`,"logs.streamSys":`sys`,"metric.emptyHint":`сбор…`,"nav.global":`Общее`,"nav.workspace":`Рабочее пространство`,"nav.others":`Прочее`,"nav.overview":`Обзор`,"nav.servers":`Серверы`,"nav.logs":`Журналы`,"nav.workspaceSettings":`Настройки рабочего пространства`,"nav.globalOverview":`Общий обзор`,"nav.globalSettings":`Общие настройки`,"nav.reverseProxy":`Обратный прокси`,"nav.navigation":`Навигация`,"nav.closeNavigation":`Закрыть навигацию`,"nav.hostVitals":`Показатели хоста`,"notice.configError":`Не удалось прочитать конфигурацию: {error}`,"notice.configErrorHint":`Панель продолжает работать с прежней конфигурацией; исправьте {path}, и она перечитается сама.`,"notice.defaultPassword":`Эта панель всё ещё использует пароль по умолчанию.`,"notice.defaultPasswordHint":`Смените его в общих настройках — до этого прослушивание за пределами 127.0.0.1 отклоняется.`,"notice.noPassword":`Аутентификация включена, но пароль не задан, поэтому ничего не запрашивается.`,"notice.noPasswordHint":`Задайте его в общих настройках, чтобы действительно закрыть панель.`,"notice.exposed":`Эта панель доступна за пределами 127.0.0.1.`,"notice.exposedHint":`Держите пароль надёжным или поставьте перед панелью прокси, завершающий TLS.`,"notice.authOff":`Аутентификация отключена — панель защищена только привязкой к loopback.`,"onPortConflict.block":`block — отказаться запускать`,"onPortConflict.warn":`warn — всё равно запустить`,"onPortConflict.follow":`follow — принять отсоединённый перезапуск самого себя`,"onPortConflict.reclaim":`reclaim — заменить управляемой копией`,"onPortConflict.kill":`kill — остановить всё, что занимает порт`,"palette.placeholder":`Перейти к серверу, выполнить действие, открыть настройку…`,"palette.openServer":`Открыть {label}`,"palette.serverLogs":`Журналы {label}`,"palette.startServer":`Запустить {label}`,"palette.stopServer":`Остановить {label}`,"palette.restartServer":`Перезапустить {label}`,"palette.goOverview":`Перейти к обзору`,"palette.goGlobalOverview":`Перейти к общему обзору`,"palette.goGlobalSettings":`Перейти к общим настройкам`,"palette.goProxy":`Перейти к обратному прокси`,"palette.goServers":`Перейти к серверам`,"palette.goLogs":`Перейти к журналам`,"palette.goWorkspaceSettings":`Перейти к настройкам рабочего пространства`,"palette.startAll":`Запустить все включённые серверы здесь`,"palette.stopAll":`Остановить все серверы здесь`,"palette.switchWorkspace":`Переключиться на {label}`,"palette.globalSetting":`Общая настройка: {label}`,"palette.workspaceSetting":`Настройка рабочего пространства: {label}`,"palette.theme":`Тема: {theme}`,"palette.groupServers":`Серверы`,"palette.groupActions":`Действия`,"palette.groupNavigate":`Навигация`,"palette.groupWorkspaces":`Рабочие пространства`,"palette.groupAppearance":`Внешний вид`,"palette.navigate":`перемещение`,"palette.run":`запуск`,"palette.noMatches":`Ничего не найдено по «{query}».`,"proxy.account.automatic":`Автоматически (единственная учётная запись, которая может ответить)`,"proxy.account.noTxt":`нет поддержки TXT`,"proxy.account.noCredentials":`нет учётных данных`,"proxy.account.gone":`Эта учётная запись больше не настроена.`,"proxy.account.emptyHint":`DNS-01 записывает проверочную запись сюда. Пусто использует единственную учётную запись, которая может ответить на проверку, если она есть.`,"proxy.account.cannotWrite":`Учётная запись {provider} не может записывать TXT-записи, поэтому не может ответить на проверку DNS-01.`,"proxy.account.noCredentialsYet":`Для этой учётной записи {provider} пока не сохранено учётных данных.`,"proxy.account.through":`Проверка записывается через эту учётную запись {provider}.`,"proxy.certificate.title":`Загруженные сертификаты`,"proxy.certificate.description":`Отдаются маршрутами, установленными на «Загруженный сертификат». Всё остальное — публичное или локальное — движок сертифицирует сам.`,"proxy.certificate.add":`Добавить сертификат`,"proxy.certificate.emptyTitle":`Сертификат не загружен`,"proxy.certificate.emptyDescription":`Маршруту, установленному на «Загруженный сертификат», нужна пара, покрывающая его имя хоста, иначе движку нечего для него отдавать.`,"proxy.certificate.daysLeft":`осталось {days} дней`,"proxy.certificate.subject":`Субъект`,"proxy.certificate.issuer":`Издатель`,"proxy.certificate.validUntil":`Действителен до`,"proxy.certificate.covers":`Покрывает`,"proxy.certificate.noSans":`в его SAN нет имён хостов`,"proxy.certificate.removeAria":`Удалить {name}`,"proxy.certificate.removeQuestion":`Удалить «{name}»?`,"proxy.certificate.removeBody":`Пара удаляется с диска. Маршрут, всё ещё установленный на «Загруженный сертификат», продолжит отдавать собственный сертификат движка, пока вы это не измените, а панель отказывает в удалении, пока хоть один маршрут его использует.`,"proxy.certificate.removeIt":`Удалить`,"proxy.certificate.stored":`«{label}» сохранён.`,"proxy.certificate.removed":`«{name}» удалён.`,"proxy.certificateDialog.title":`Добавить сертификат`,"proxy.certificateDialog.description":`Пара сохраняется на диск под своим id, и маршрут, установленный на «Загруженный сертификат», может её отдавать.`,"proxy.certificateDialog.label":`Метка`,"proxy.certificateDialog.labelPlaceholder":`Домашний wildcard-сертификат`,"proxy.certificateDialog.id":`Id`,"proxy.certificateDialog.idHint":`задаёт имена файлов на диске`,"proxy.certificateDialog.certFile":`Файл сертификата (.pem, .crt)`,"proxy.certificateDialog.keyFile":`Файл закрытого ключа (.pem, .key)`,"proxy.certificateDialog.pasteCert":`Или вставьте сертификат`,"proxy.certificateDialog.pasteKey":`Или вставьте закрытый ключ`,"proxy.certificateDialog.certPlaceholder":`-----BEGIN CERTIFICATE-----`,"proxy.certificateDialog.keyPlaceholder":`-----BEGIN PRIVATE KEY-----`,"proxy.certificateDialog.store":`Сохранить сертификат`,"proxy.certificateDialog.errorLabel":`требуется метка`,"proxy.certificateDialog.errorId":`id должен начинаться с буквы или цифры, далее буквы, цифры, дефис или подчёркивание`,"proxy.certificateDialog.errorTaken":`«{id}» уже используется другим сертификатом`,"proxy.certificateDialog.errorCertificate":`вставьте или выберите сертификат`,"proxy.certificateDialog.errorPrivateKey":`вставьте или выберите закрытый ключ`,"proxy.engine.title":`Движок`,"proxy.engine.description":`Сам обратный прокси. Панель скачивает текущую сборку, управляет ею и применяет её конфигурацию через собственный admin-API движка.`,"proxy.engine.notInFrame":`Состояние прокси пока не попадает в кадр этой панели.`,"proxy.engine.readFailed":`Не удалось прочитать данные движка`,"proxy.engine.notInstalled":`Движок не установлен`,"proxy.engine.installNote":`Установка скачивает текущий выпуск {engine}, которым управляет панель — около 46 МБ, однократно. Ничего не открывается наружу, пока не добавлен маршрут и не включён прокси.`,"proxy.engine.version":`Версия`,"proxy.engine.notProbed":`ещё не проверялся`,"proxy.engine.source":`Источник`,"proxy.engine.sourceCustom":`путь, заданный вручную`,"proxy.engine.sourceDownloaded":`скачан панелью`,"proxy.engine.size":`Размер`,"proxy.engine.binary":`Исполняемый файл`,"proxy.engine.copyPath":`Скопировать путь к исполняемому файлу`,"proxy.engine.address":`Текущий адрес`,"proxy.engine.process":`Процесс`,"proxy.engine.certificates":`Сертификаты`,"proxy.engine.noCert":`публичного сертификата пока нет`,"proxy.engine.expiresSoon":`ближайший истекает через {days} дней`,"proxy.engine.acme":`Сертификаты ACME`,"proxy.engine.localCa":`Локальная CA`,"proxy.engine.dns01":`DNS-01`,"proxy.engine.tcpUdp":`TCP/UDP`,"proxy.engine.documentation":`Документация {engine}`,"proxy.engine.failed":`Движок сообщил об ошибке`,"proxy.engine.setcapHint":`Привилегированный порт (ниже 1024) требует этого один раз в Linux:`,"proxy.engine.copyCommand":`Скопировать команду`,"proxy.engine.install":`Установить движок`,"proxy.engine.start":`Запустить`,"proxy.engine.stop":`Остановить`,"proxy.engine.apply":`Применить конфигурацию`,"proxy.engine.revert":`Откатить`,"proxy.engine.revertHint":`Вернуться к конфигурации, действовавшей до последней`,"proxy.engine.update":`Обновить движок`,"proxy.listener.title":`Прослушиватель и сертификаты`,"proxy.listener.description":`Где слушает прокси. 80 и 443 — это то, что переадресует роутер и чего ожидает проверка ACME; порт ниже 1024 требует привилегированной привязки.`,"proxy.listener.unprivilegedPorts":`непривилегированные порты`,"proxy.listener.run":`Запускать обратный прокси`,"proxy.listener.runHint":`Сохраняется вместе с «Сохранить настройки»; панель запускает или останавливает движок соответственно.`,"proxy.listener.httpPort":`Порт HTTP`,"proxy.listener.httpPortHint":`Проверки ACME HTTP-01 и перенаправление на HTTPS.`,"proxy.listener.httpsPort":`Порт HTTPS`,"proxy.listener.httpsPortHint":`Где отдаются сертификаты.`,"proxy.listener.useFallback":`Использовать {http} / {https}`,"proxy.listener.useStandard":`Использовать 80 / 443`,"proxy.listener.forwardHint":`Работает без привилегий — переадресуйте 80 и 443 на эти порты в роутере.`,"proxy.listener.privilegedTitle":`Порт ниже 1024 требует привилегированной привязки`,"proxy.listener.privilegedBody":`Запущенная от вашего пользователя панель не может привязать 80 или 443 без разрешения. Либо выдайте его один раз {how} и перезапустите движок, либо оставьте {http}/{https} и переадресуйте 80/443 в роутере. В Windows порт можно занять свободно, но что-то другое может его удерживать.`,"proxy.listener.privilegedWithSetcap":`с помощью {command} для исполняемого файла движка`,"proxy.listener.email":`Эл. почта учётной записи ACME`,"proxy.listener.emailPlaceholder":`you@example.com`,"proxy.listener.emailHint":`Let's Encrypt использует её, чтобы предупредить об истекающем сертификате. Локальному имени достаётся собственная CA движка, и почта не нужна.`,"proxy.listener.emailNeededTitle":`Для автоматического HTTPS нужна электронная почта`,"proxy.listener.emailNeededBody":`«{host}» — публичное имя хоста, поэтому движок запрашивает сертификат у CA, и адрес учётной записи обязателен. Впишите его, отключите TLS у маршрута или включите staging-эндпоинт, пока пробуете.`,"proxy.listener.staging":`Использовать staging-эндпоинт ACME`,"proxy.listener.stagingHint":`Недоверенные сертификаты и никакого расхода лимита запросов, пока вы пробуете.`,"proxy.listener.dns01":`Отвечать на проверки через DNS-01`,"proxy.listener.dns01Hint":`Панель записывает проверочную запись через DNS-учётную запись маршрута, поэтому для получения сертификата входящий порт не нужен.`,"proxy.listener.resolvers":`Сверять запись с`,"proxy.listener.resolversPlaceholder":`1.1.1.1, 8.8.8.8`,"proxy.listener.resolversHint":`Серверы имён, с которых движок читает запись; пусто — использует свои. Нужно там, где split-horizon DNS показывает ему другую картину.`,"proxy.listener.noAccountTitle":`Ни одна DNS-учётная запись не может ответить на проверку`,"proxy.listener.noAccountBody":`DNS-01 включён, но ни у одной учётной записи нет подходящих учётных данных. Добавьте её в разделе «Настройки рабочего пространства» → Dynamic DNS, иначе публичные имена останутся на портовых проверках и будут ждать CA, которая до них не дотянется.`,"proxy.listener.manyAccountsTitle":`Каждый публичный маршрут должен выбрать учётную запись`,"proxy.listener.manyAccountsBody":`Ответить может больше одной учётной записи, поэтому «Автоматически» не может выбрать. Выберите по одной на маршрут, иначе эти имена останутся на портовых проверках.`,"proxy.listener.accountNote":`Каждый маршрут выбирает свою учётную запись, поэтому имена в разных зонах получают нужную. Маршрут, оставленный на «Автоматически», использует единственную учётную запись, названную в таблице. Имя, на которое не отвечает ни одна запись, остаётся на портовых проверках.`,"proxy.listener.pendingNote":`Публичное имя, сертификат которого ещё выписывается, временно доступно — по HTTPS с временным недоверенным сертификатом или по обычному HTTP со страницей, называющей порты для переадресации.`,"proxy.retry.inFallback":`~8 часов`,"proxy.retryButton.force":`Принудительно повторить получение сертификата`,"proxy.retryButton.question":`Снова запросить у CA сертификат для {host}?`,"proxy.retryButton.body":`Ранее движку не удалось получить сертификат CA для этого имени хоста, и он использует свою локальную CA. Он повторяет попытку автоматически каждые {retryIn}.`,"proxy.retryButton.warning":`Повтор сейчас убьёт этот маршрут и на некоторое время сделает его недоступным — продолжить?`,"proxy.retryButton.leave":`Оставить`,"proxy.retryButton.now":`Повторить сейчас`,"proxy.routeDialog.titleEdit":`Изменить маршрут`,"proxy.routeDialog.titleAdd":`Добавить маршрут`,"proxy.routeDialog.description":`Имя хоста, куда оно перенаправляет и как отдаётся по TLS.`,"proxy.routeDialog.hostname":`Имя хоста`,"proxy.routeDialog.hostnamePlaceholder":`gitea.example.com`,"proxy.routeDialog.path":`Префикс пути`,"proxy.routeDialog.pathPlaceholder":`/optional`,"proxy.routeDialog.pathHint":`Пусто обслуживает весь хост.`,"proxy.routeDialog.target":`Цель`,"proxy.routeDialog.tls":`TLS`,"proxy.routeDialog.dnsAccount":`DNS-учётная запись`,"proxy.routeDialog.localNote":`Локальное имя подписывается собственной CA движка, поэтому DNS-учётная запись не участвует.`,"proxy.routeDialog.workspace":`Рабочее пространство`,"proxy.routeDialog.server":`Сервер`,"proxy.routeDialog.noServers":`в этом рабочем пространстве нет серверов`,"proxy.routeDialog.stoppedNote":`Остановленный сервер не направляется: строка показывает «Нет восходящего узла», пока он снова не заработает.`,"proxy.routeDialog.upstream":`Восходящий узел`,"proxy.routeDialog.upstreamPlaceholder":`http://10.0.0.5:8080`,"proxy.routeDialog.upstreamHint":`Буквальный адрес, включая порт. Схема необязательна.`,"proxy.routeDialog.panelNote":`Для отдачи панели управления нужны включённая аутентификация и пароль, не являющийся значением по умолчанию — иначе панель откажет в сохранении.`,"proxy.routeDialog.save":`Сохранить маршрут`,"proxy.routes.title":`Маршруты`,"proxy.routes.description":`Одно публичное имя хоста на сервис. Маршрут может указывать на управляемый сервер в любом рабочем пространстве, на эту панель или на буквальный восходящий узел.`,"proxy.routes.add":`Добавить маршрут`,"proxy.routes.cannotSaveTitle":`Эти маршруты нельзя сохранить в текущем виде`,"proxy.routes.cannotRoute":`{host} невозможно направить`,"proxy.routes.emptyTitle":`Маршрутов пока нет`,"proxy.routes.emptyDescription":`Добавьте один, чтобы открыть сервер через домен — движок сам получит сертификат.`,"proxy.routes.addFirst":`Добавить первый маршрут`,"proxy.routes.columnHostname":`Имя хоста`,"proxy.routes.columnTarget":`Цель`,"proxy.routes.columnUpstream":`Восходящий узел`,"proxy.routes.columnTls":`TLS`,"proxy.routes.columnState":`Состояние`,"proxy.routes.columnOn":`Вкл.`,"proxy.routes.openInTab":`Открыть {url} в новой вкладке`,"proxy.routes.noHostname":`имя хоста пока не задано`,"proxy.routes.toggle":`Маршрут {name}`,"proxy.routes.edit":`Изменить {name}`,"proxy.routes.remove":`Удалить {name}`,"proxy.status.certified":`сертификат готов`,"proxy.status.localCa":`CA движка`,"proxy.status.uploaded":`загруженная пара`,"proxy.status.awaitingCa":`ожидание CA`,"proxy.status.failed":`сертификат не получен`,"proxy.status.fellBack":`Возврат к локальной CA`,"proxy.status.serving":`Обслуживает`,"proxy.status.disabled":`Отключено`,"proxy.status.noUpstream":`Нет восходящего узла`,"proxy.status.error":`Ошибка`,"proxy.status.unapplied":`Ещё не применено`,"proxy.status.off":`Выкл.`,"proxy.status.stopped":`Остановлен`,"proxy.status.starting":`Запускается`,"proxy.status.running":`Работает`,"proxy.status.unsupported":`Не поддерживается`,"proxy.target.server":`Управляемый сервер`,"proxy.target.panel":`Эта панель управления`,"proxy.target.external":`Буквальный восходящий узел`,"proxy.target.controlPanel":`панель управления`,"proxy.target.noServer":`сервер не выбран`,"proxy.target.noUpstream":`нет восходящего узла`,"proxy.tls.auto":`Автоматически — решает движок`,"proxy.tls.off":`Выкл. — обычный HTTP`,"proxy.tls.manual":`Загруженный сертификат`,"proxy.tls.plain":`обычный HTTP`,"proxy.tls.uploaded":`загруженный сертификат`,"proxy.tls.letsEncrypt":`Let’s Encrypt`,"proxy.tls.engineCa":`CA движка (локальная)`,"proxy.tls.hintOff":`Обычный HTTP: для этого имени хоста сертификат не отдаётся.`,"proxy.tls.hintManual":`Отдаёт пару сертификатов, загруженную ниже.`,"proxy.tls.hintEmpty":`Публичное имя хоста получает сертификат ACME; локальное имя получает собственную CA движка.`,"proxy.tls.hintPublic":`Публичное имя хоста, поэтому движок запрашивает сертификат у CA — нужен адрес электронной почты учётной записи ACME.`,"proxy.tls.hintLocal":`Локальное имя, поэтому движок подписывает его собственной локально доверенной CA.`,"proxy.validation.labelRequired":`требуется метка`,"proxy.validation.idPattern":`id должен начинаться с буквы или цифры, далее буквы, цифры, дефис или подчёркивание`,"proxy.validation.hostRequired":`требуется имя хоста`,"proxy.validation.hostPattern":`имя хоста из букв, цифр, точек и дефисов, например home.example.com`,"proxy.validation.hostTaken":`«{host}» уже направлен на этот путь`,"proxy.validation.pathSlash":`префикс пути начинается с /`,"proxy.validation.pathSpace":`префикс пути не может содержать пробел`,"proxy.validation.idTaken":`id маршрута «{id}» используется дважды`,"proxy.validation.workspaceRequired":`выберите рабочее пространство, которому принадлежит сервер`,"proxy.validation.serverRequired":`выберите сервер в этом рабочем пространстве`,"proxy.validation.url":`восходящий узел вида http://10.0.0.5:8080`,"proxy.view.title":`Обратный прокси`,"proxy.view.description":`Открывайте свои серверы через домены, с автоматическим HTTPS через 80/443 или DNS-проверку.`,"proxy.view.dnsNote":`Для DNS-01 добавьте DNS-провайдера домена в любое рабочее пространство в разделе «Настройки рабочего пространства» → Dynamic DNS; тогда маршрут сможет выбрать эту учётную запись из любого рабочего пространства.`,"proxy.view.readFailed":`Не удалось прочитать данные обратного прокси`,"proxy.view.reading":`Чтение обратного прокси…`,"proxy.view.engineInstalled":`Движок установлен`,"proxy.view.engineStarting":`Движок запускается`,"proxy.view.engineStopping":`Движок останавливается`,"proxy.view.configApplied":`Конфигурация применена`,"proxy.view.configReverted":`Конфигурация откачена`,"proxy.view.settingsSaved":`Настройки сохранены.`,"proxy.view.settingsSavedToast":`Настройки сохранены`,"proxy.view.retryFailed":`повторная попытка не удалась`,"proxy.view.retryAsked":`у CA снова запрашивается сертификат для {host}`,"proxy.view.fieldChanged":`поле изменено`,"proxy.view.fieldsChanged":`поля изменены`,"proxy.view.noChanges":`Нет несохранённых изменений`,"proxy.view.discard":`Отменить изменения`,"proxy.view.save":`Сохранить настройки`,"serverCard.open":`Открыть {url}`,"serverCard.adoptedHint":`Этот процесс заменил сам себя: панель приняла преемника, а не запустила вторую копию. Остановка всё ещё работает, его вывод остаётся там, куда его направил преемник.`,"serverCard.detached":`отсоединён`,"serverCard.persistentHint":"Этот элемент работает под управлением собственной няни (nanny), поэтому продолжает работать, когда панель останавливается, перезапускается или уничтожается. `home-hosted down` сообщает о нём, а не останавливает его; останавливает только явная команда.","serverCard.persistent":`постоянный`,"serverCard.disabled":`отключён`,"serverCard.autostart":`автозапуск`,"serverCard.healthProbe":`Проверка исправности`,"serverCard.notProbed":`не проверялся`,"serverCard.restarts":`Перезапуски`,"serverCard.pid":`PID`,"serverCard.rss":`RSS`,"serverCard.procs":`Процессы`,"serverCard.portFree":`свободен`,"serverCard.portInUse":`занят`,"serverCard.uptime24h":`24 ч работы`,"serverCard.probe":`Проверка`,"serverCard.crashes24h":`Аварии за 24 ч`,"serverCard.lastCrash":`Последняя авария`,"serverCard.unhealthyFor":`Неисправен уже {duration}`,"serverCard.nextAttempt":`Следующая попытка {when}`,"serverCard.start":`Запустить`,"serverCard.stop":`Остановить`,"serverCard.restart":`Перезапустить`,"serverCard.detailsHint":`Живые журналы и полная телеметрия`,"serverCard.moreActions":`Дополнительные действия для {label}`,"serverCard.disable":`Отключить сервер`,"serverCard.enable":`Включить сервер`,"serverCard.removeFromAutostart":`Убрать из автозапуска`,"serverCard.autostartWithPanel":`Автозапуск вместе с панелью`,"serverCard.clearLogBuffer":`Очистить буфер журнала`,"serverCard.removeServer":`Удалить сервер`,"serverCard.removeTitle":`Удалить этот сервер?`,"serverCard.removeDescription":`{label} удаляется из servers.config.json: его процесс останавливается, а журналы и история аварий удаляются вместе с ним.`,"serverCard.statusField":`состояние`,"serverForm.workingDirectory":`Рабочий каталог`,"serverForm.cwdHint":`Относительные пути разрешаются внутри projectDir.`,"serverForm.arguments":`Аргументы`,"serverForm.portHint":`Пусто означает, что у сервера нет порта для проверки или предварительного контроля.`,"serverForm.bindAddress":`Адрес привязки`,"serverForm.autostart":`Автозапуск вместе с up`,"serverForm.autostartHint":`Запускать его при каждом подъёме управляющего узла.`,"serverForm.persistent":`Постоянный`,"serverForm.persistentHint":"Продолжает работать, когда панель останавливается; `down` сообщает о нём, а не останавливает его.","serverForm.envHint":`KEY=value по строке на переменную, экспортируется в процесс.`,"serverForm.dataEnvs":`Переменные данных`,"serverForm.dataEnvsHint":`ENV=путь по строке — экспортируется в процесс и автоматически резервируется.`,"serverForm.envFile":`Файл окружения`,"serverForm.envFilePlaceholder":`необязательный файл KEY=value`,"serverForm.envFileHint":`Загружается при запуске; его значения переопределяют env.`,"serverForm.dependsOn":`Зависит от`,"serverForm.dependsOnHint":`Через запятую; запускаются первыми и ожидаются до исправности, останавливаются последними.`,"serverForm.backupPaths":`Дополнительные пути резервных копий`,"serverForm.backupPathsHint":`По одному на строку, подстановки допускаются; переменные данных и так включаются.`,"serverForm.backupIgnore":`Игнорировать известные генерируемые файлы при резервировании`,"serverForm.backupIgnoreHint":`Пропускает node_modules, dist, .next и прочие кэши, из которых ничего не восстанавливается.`,"serverForm.bootstrap":`Bootstrap`,"serverForm.bootstrapDescription":`Разовый командный запуск перед первым стартом — установки, миграции, загрузки.`,"serverForm.runBootstrap":`Выполнить bootstrap`,"serverForm.bootstrapHint":`Выключено означает, что у элемента его нет и ключ отправляется как null.`,"serverForm.timeoutMs":`Тайм-аут (мс)`,"serverForm.runOnce":`Только раз за сеанс`,"serverForm.runOnceHint":`Выключено означает, что он выполняется при каждом запуске.`,"serverForm.bootstrapArgs":`Аргументы bootstrap`,"serverForm.bootstrapArgsHint":`По одному на строку; те же подстановки, что и у основных аргументов.`,"serverForm.bootstrapEnv":`Окружение bootstrap`,"serverForm.bootstrapEnvHint":`KEY=value по строке, экспортируется только в процесс bootstrap.`,"serverForm.onPortConflict":`При конфликте портов`,"serverForm.logBufferLines":`Строк в буфере журнала`,"serverForm.maxRssMb":`Макс. RSS (МБ)`,"serverForm.maxRssHint":`Перезапуск при превышении; пусто или 0 отключает.`,"serverForm.enabledHint":`Выключено сохраняет элемент в конфигурации, но отказывается его запускать.`,"settings.auth.policyTitle":`Политика доступа`,"settings.auth.policyDescription":`Аутентификация действует независимо от того, слушает панель loopback или открыта в сеть.`,"settings.auth.requirePassword":`Требовать пароль`,"settings.auth.requirePasswordHint":`Для каждого запроса нужен сеанс с выполненным входом.`,"settings.auth.sessionLifetime":`Время жизни сеанса (мс)`,"settings.auth.sessionLifetimeHint":`Тайм-аут простоя: 604800000 — это неделя без активности. Каждый запрос продлевает его.`,"settings.auth.cookieSecure":`Cookie Secure`,"settings.auth.cookieSecureAuto":`Авто — только по HTTPS`,"settings.auth.cookieSecureAlways":`Всегда`,"settings.auth.cookieSecureNever":`Никогда — обычный HTTP`,"settings.auth.trustProxy":`За обратным прокси`,"settings.auth.trustProxyOff":`Нет — игнорировать x-forwarded-*`,"settings.auth.trustProxyLoopback":`Да, только с этой машины`,"settings.auth.trustProxyAny":`Да, от любого вызывающего`,"settings.auth.trustProxyHint":`Доверять x-forwarded-* для адреса клиента и протокола. «Только с этой машины» — безопасный выбор для прокси на том же хосте. «От любого вызывающего» верит собственному заголовку вызывающего, поэтому блокировка входа считается по подделанному адресу и её можно обойти.`,"settings.auth.maxLoginAttempts":`Макс. попыток входа`,"settings.auth.maxLoginAttemptsHint":`Неудачные попытки до временной блокировки.`,"settings.auth.lockout":`Блокировка (мс)`,"settings.auth.apiTokenSet":`API-токен задан`,"settings.auth.apiTokenMissing":`Нет API-токена`,"settings.auth.apiTokenNote":`Скрипты могут вызывать API с помощью {code} вместо входа в систему.`,"settings.auth.noTokenNote":`Для shell-скриптов и агентов создайте его командой {command}.`,"settings.auth.defaultPasswordTitle":`Всё ещё используется пароль по умолчанию`,"settings.auth.defaultPasswordText":`Задайте собственный пароль ниже. До этого прослушивание за пределами {address} отклоняется.`,"settings.auth.blockedTitle":`Этот прослушиватель отклоняется`,"settings.auth.noPasswordTitle":`Аутентификация включена, но пароль не задан`,"settings.auth.noPasswordText":`Пока ничего не требуется, и прослушивание за пределами {address} остаётся отклонённым, пока нет пароля.`,"settings.auth.exposedTitle":`Доступна за пределами 127.0.0.1`,"settings.auth.exposedText":`Держите пароль надёжным или поставьте перед панелью прокси, завершающий TLS.`,"settings.auth.changePassword":`Сменить пароль`,"settings.auth.setPassword":`Задать пароль`,"settings.auth.passwordDescription":`Хранится как scrypt-хеш в файле секретов, никогда в конфигурации.`,"settings.auth.currentPassword":`Текущий пароль`,"settings.auth.newPassword":`Новый пароль`,"settings.auth.repeatPassword":`Повторите новый пароль`,"settings.auth.passwordMismatch":`Два пароля не совпадают.`,"settings.auth.updatePassword":`Обновить пароль`,"settings.auth.setPasswordAndEnable":`Задать пароль и включить аутентификацию`,"settings.auth.clearPassword":`Очистить пароль`,"settings.auth.clearPasswordConfirm":`Подтвердить очистку`,"settings.auth.clearPasswordTitle":`Очистить пароль?`,"settings.auth.clearPasswordHint":`Вместе с ним отключается аутентификация, и любой, кто дотянется до панели, попадёт прямо внутрь.`,"settings.auth.shortPasswordTitle":`Это короткий пароль`,"settings.auth.shortPasswordText":`Он допускается, но длина — единственное, что стоит между сетью и этой панелью.`,"settings.auth.passwordUpdated":`Пароль обновлён. Другие сеансы были завершены.`,"settings.auth.passwordCleared":`Пароль очищен, аутентификация отключена.`,"settings.backup.createTitle":`Создать резервную копию`,"settings.backup.createDescription":`Выберите, что захватывает этот архив. Ничего не записывается, пока вы его не создадите.`,"settings.backup.chooseItems":`Выбрать элементы`,"settings.backup.partialCapture":`Захватываются только выбранные элементы.`,"settings.backup.withoutGlobalSettings":`Без глобальных настроек восстановление может разместить рабочее пространство только там, где целевая панель его уже объявляет.`,"settings.backup.password":`Пароль (необязательно)`,"settings.backup.passwordHint":`Шифрует архив; при восстановлении запрашивается тот же пароль.`,"settings.backup.create":`Создать резервную копию`,"settings.backup.chooseItemsFor":`{label} — выбрать элементы`,"settings.backup.subDescription":`Рабочее пространство можно захватить целиком или только его настройки, серверы, секреты и объявленные пути данных.`,"settings.backup.selectedOf":`выбрано {selected} из {total}`,"settings.backup.nothingSelectable":`Это рабочее пространство пока ничего не объявляет для выбора.`,"settings.backup.apply":`Применить`,"settings.backup.created":`Резервная копия создана.`,"settings.backup.leafSettingsHint":`Серверные значения по умолчанию, хранение журналов и уведомления`,"settings.backup.leafServersHint":`Каждая запись в servers.config.json`,"settings.backup.leafSecretsHint":`Токен бота Telegram и учётные данные DDNS`,"settings.backup.leafDataHint":`Объявленный путь данных`,"settings.backup.pathFromOrigin":`{path} — из {origin}`,"settings.backup.entrySettingsHint":`Прослушиватель, аутентификация, показатели хоста и политика резервных копий`,"settings.backup.entrySecretsHint":`Хеш пароля и хеш API-токена`,"settings.backup.entryTlsHint":`Собственная пара сертификатов панели`,"settings.backup.entryWorkspaceHint":`Его настройки, серверы, секреты и объявленные пути данных`,"settings.backup.entryGlobalSettings":`Общие настройки`,"settings.backup.entryGlobalSecrets":`Общие секреты (пароль, API-токен)`,"settings.backup.entryTlsCertificate":`Сертификат TLS`,"settings.backup.leafSettings":`Настройки`,"settings.backup.leafServers":`Серверы`,"settings.backup.leafSecrets":`Секреты`,"settings.backup.restoreItemLabel":`{workspace}: {item}`,"settings.backup.noteMissing":`ещё не существует`,"settings.backup.noteCovered":`покрыто {path}`,"settings.backup.noteAlreadyDeclared":`уже объявлено в {origin}`,"settings.backup.noteContainsBackupDir":`содержит каталог резервных копий`,"settings.backup.noteUnknownWorkspace":`неизвестное рабочее пространство`,"settings.backup.noteMissingFromArchive":`отсутствует в архиве`,"settings.backup.noteDeclaredByBackup":`объявлено конфигурацией резервной копии, которая не восстанавливается`,"settings.backup.noteNotDeclared":`не объявлено ни этой конфигурацией, ни резервной копией`,"settings.backup.noteRestoredFrom":`восстановлено из {path}`,"settings.backups.policyTitle":`Политика`,"settings.backups.policyDescription":`Сколько архивов хранит панель и какие дополнительные пути захватывает каждый из них.`,"settings.backups.allow":`Разрешить резервные копии`,"settings.backups.allowHint":`Выключено останавливает новые архивы; всё, что уже на диске, остаётся доступным для скачивания и восстановления.`,"settings.backups.offTitle":`Резервные копии выключены`,"settings.backups.offText":`Ничего нового не архивируется, пока это не будет включено снова. Архивы ниже по-прежнему можно скачать, восстановить и удалить.`,"settings.backups.keep":`Хранить`,"settings.backups.keepHint":`Старые архивы удаляются после каждой резервной копии.`,"settings.backups.extraPaths":`Дополнительные пути`,"settings.backups.extraPathsHint":`Через запятую, захватываются в каждом архиве сверх того, что объявляет каждое рабочее пространство.`,"settings.backups.extraPathsPlaceholder":`{home}/myapp-data`,"settings.backups.archiveDirectory":`Каталог архивов`,"settings.backups.copyArchiveDirectory":`Скопировать каталог архивов`,"settings.backups.changeDirectory":`Его изменение — решение на уровне файлов: отредактируйте {path}.`,"settings.backups.theSettingsFile":`файл настроек`,"settings.backups.capturesTitle":`Что захватывает резервная копия`,"settings.backups.capturesDescription":`Выберите это в диалоге создания. Рабочее пространство можно взять целиком или только его настройки, серверы, секреты и объявленные пути данных.`,"settings.backups.nothingSelectable":`Пока ничего нельзя выбрать.`,"settings.backups.fromOrigin":`из {origin}`,"settings.backups.notCaptured":`не захвачено`,"settings.backups.generatedSkipped":`генерируемые каталоги пропущены`,"settings.backups.included":`включено`,"settings.backups.skipped":`пропущено`,"settings.backups.workspacesNote":`Эта панель обслуживает {count} рабочих пространств; каждое — отдельная запись для выбора.`,"settings.backups.archivesTitle":`Архивы`,"settings.backups.archivesDescription":`Хранятся в каталоге резервных копий и доступны для скачивания в любой момент.`,"settings.backups.create":`Создать резервную копию…`,"settings.backups.restore":`Восстановить…`,"settings.backups.noArchives":`Архивов пока нет`,"settings.backups.noArchivesEnabled":`Создайте её сейчас, чтобы захватить панель и выбранные рабочие пространства.`,"settings.backups.noArchivesDisabled":`Пока ничего не архивировано, а резервные копии выключены.`,"settings.backups.encrypted":`зашифровано`,"settings.backups.download":`Скачать`,"settings.backups.restoreAction":`Восстановить`,"settings.backups.confirmDelete":`Подтвердить удаление`,"settings.backups.deleted":`{name} удалён.`,"settings.backups.kindSettings":`настройки`,"settings.backups.kindServers":`серверы`,"settings.backups.kindSecrets":`секреты`,"settings.backups.kindTls":`tls`,"settings.backups.kindData":`данные`,"settings.backups.kindWorkspace":`рабочее пространство`,"settings.ddns.statePending":`Ожидание`,"settings.ddns.stateOk":`Обновлено`,"settings.ddns.stateUnchanged":`Актуально`,"settings.ddns.stateSkipped":`Пропущено`,"settings.ddns.stateError":`Не удалось`,"settings.ddns.passFinished":`Проход Dynamic DNS завершён`,"settings.ddns.credentialsSaved":`Учётные данные сохранены для {account}`,"settings.ddns.credentialsRemoved":`Учётные данные удалены для {account}`,"settings.ddns.loadErrorTitle":`Не удалось загрузить настройки Dynamic DNS`,"settings.ddns.title":`Dynamic DNS`,"settings.ddns.description":`Держите эти имена хостов указывающими на публичный адрес этой машины. Учётные данные лежат в файле секретов, никогда в servers.config.json.`,"settings.ddns.checking":`проверка`,"settings.ddns.needsAttention":`требует внимания`,"settings.ddns.watching":`наблюдение`,"settings.ddns.updateNow":`Обновить сейчас`,"settings.ddns.enabled":`Поддерживать Dynamic DNS в актуальном состоянии`,"settings.ddns.enabledHint":`Проход выполняется с интервалом ниже; провайдер вызывается только тогда, когда адрес действительно изменился.`,"settings.ddns.interval":`Проверять каждые (мс)`,"settings.ddns.intervalHint":`60000 — это одна минута; значение по умолчанию — пять.`,"settings.ddns.ttl":`TTL (с)`,"settings.ddns.ttlHint":`1 означает автоматически там, где провайдер это поддерживает.`,"settings.ddns.detectIpv4":`Определять IPv4`,"settings.ddns.detectIpv4Hint":`Нужно для записей A.`,"settings.ddns.detectIpv6":`Определять IPv6`,"settings.ddns.detectIpv6Hint":`Нужно для записей AAAA.`,"settings.ddns.accountsTitle":`Учётные записи провайдеров`,"settings.ddns.accountsDescription":`Одна запись на API-токен. Учётные данные хранятся на сервере и никогда не возвращаются.`,"settings.ddns.credentialsSet":`учётные данные сохранены`,"settings.ddns.noCredentials":`нет учётных данных`,"settings.ddns.credentials":`Учётные данные`,"settings.ddns.removeAccountBlocked":`Сначала удалите имена хостов, использующие эту учётную запись`,"settings.ddns.noAccounts":`Учётных записей пока нет. Выберите провайдера и добавьте её.`,"settings.ddns.provider":`Провайдер`,"settings.ddns.accountId":`Id учётной записи`,"settings.ddns.accountIdPlaceholder":`cloudflare-home`,"settings.ddns.accountIdHint":"Id учётной записи называет её и служит ключом для сохранённых учётных данных; строчные буквы, цифры, `-` и `_`.","settings.ddns.hostnamesTitle":`Имена хостов`,"settings.ddns.hostnamesDescription":`Весь список для поддержания в актуальном состоянии — suba.domain.com, domain.xyz и так далее.`,"settings.ddns.account":`Учётная запись`,"settings.ddns.recordA":`A (IPv4)`,"settings.ddns.recordAaaa":`AAAA (IPv6)`,"settings.ddns.aaaaUnsupported":`Этот провайдер не умеет управлять записями AAAA.`,"settings.ddns.proxied":`Проксируется`,"settings.ddns.proxiedHint":`Cloudflare отдаёт эту запись через собственную сеть.`,"settings.ddns.ipv6Off":`Определение IPv6 выключено`,"settings.ddns.advanced":`Дополнительно`,"settings.ddns.advancedHint":`зарегистрированный домен и переопределение TTL`,"settings.ddns.registeredDomain":`Зарегистрированный домен`,"settings.ddns.registeredDomainPlaceholder":`example.co.uk`,"settings.ddns.registeredDomainHint":`Только когда провайдеру нужно сообщить apex, например для доменов из трёх меток.`,"settings.ddns.ttlOverride":`Переопределение TTL (с)`,"settings.ddns.ttlOverrideHint":`Пусто использует значение выше.`,"settings.ddns.noHostnames":`Имён хостов пока нет.`,"settings.ddns.hostnamePlaceholder":`home.example.com`,"settings.ddns.lastPass":`Последний проход`,"settings.ddns.ipv4Value":`IPv4 {address}`,"settings.ddns.ipv6Value":`IPv6 {address}`,"settings.ddns.type":`Тип`,"settings.ddns.state":`Состояние`,"settings.ddns.address":`Адрес`,"settings.ddns.detail":`Детали`,"settings.ddns.credentialsTitle":`Учётные данные провайдера`,"settings.ddns.credentialsDescription":`Сохранённые поля никогда не отправляются обратно. Сохранение заменяет все поля этой учётной записи и сразу выполняет проход.`,"settings.ddns.optional":`Необязательно.`,"settings.ddns.whereToGet":`Где их взять`,"settings.ddns.forget":`Забыть`,"settings.ddns.forgetConfirm":`Забыть их`,"settings.ddns.forgetTitle":`Забыть сохранённые учётные данные?`,"settings.ddns.forgetHint":`Они удаляются с диска, и прочитать их обратно нельзя; их придётся вставить заново.`,"settings.ddns.saveCredentials":`Сохранить учётные данные`,"settings.defaults.title":`Серверные значения по умолчанию`,"settings.defaults.description":`Применяются к каждой записи, которая не задаёт собственное значение.`,"settings.defaults.enabledHint":`Новые записи создаются включёнными.`,"settings.defaults.autostart":`Автозапуск вместе с панелью`,"settings.defaults.bind":`Привязка`,"settings.defaults.bindLocal":`Локально — 127.0.0.1`,"settings.defaults.bindLan":`LAN — 0.0.0.0`,"settings.defaults.onPortConflict":`При конфликте портов`,"settings.defaults.conflictBlock":`Блокировать запуск`,"settings.defaults.conflictWarn":`Предупредить и всё равно запустить`,"settings.defaults.conflictFollow":`Следовать за отсоединённым перезапуском самого себя`,"settings.defaults.conflictReclaim":`Заменить отсоединённый перезапуск управляемой копией`,"settings.defaults.conflictKill":`Завершить всё, что занимает порт`,"settings.defaults.logBufferLines":`Строк в буфере журнала`,"settings.defaults.logBufferLinesHint":`Хранится в памяти для каждого сервера.`,"settings.host.title":`Пороги`,"settings.host.description":`Порог 0 отключает это оповещение. Превышения уведомляют один раз и ещё раз при восстановлении.`,"settings.host.enabled":`Опрошивать эту машину`,"settings.host.enabledHint":`Нагрузка, память, подкачка, диск и температура ЦП, с интервалом ниже.`,"settings.host.interval":`Интервал (мс)`,"settings.host.intervalHint":`Как часто опрашивается хост и проверяются оповещения.`,"settings.host.diskPaths":`Пути для диска`,"settings.host.diskPathsHint":`Через запятую; шаблоны вроде {home} раскрываются.`,"settings.host.diskUsed":`Диск занят (%)`,"settings.host.memoryUsed":`Память занята (%)`,"settings.host.swapUsed":`Подкачка занята (%)`,"settings.host.zeroDisables":`0 отключает оповещение.`,"settings.host.loadPerCpu":`Нагрузка на ЦП`,"settings.host.loadPerCpuHint":`Средняя нагрузка за 1 минуту, делённая на число ядер.`,"settings.host.tempCelsius":`Температура ЦП (°C)`,"settings.host.tempCelsiusHint":`Только Linux; игнорируется там, где ОС её не предоставляет.`,"settings.host.breachingNow":`Превышено сейчас:`,"settings.host.nothingBreaching":`Сейчас ничего не превышено.`,"settings.interface.title":`Интерфейс`,"settings.interface.description":`Панель — это статический сайт: оставьте штатный или отдавайте собственную сборку из каталога состояния.`,"settings.interface.currentlyServing":`Сейчас отдаётся`,"settings.interface.copyDirectory":`Скопировать каталог UI`,"settings.interface.fileCount":`{count} файлов`,"settings.interface.sourceStock":`штатный`,"settings.interface.sourceCustom":`свой`,"settings.interface.unnamed":`без имени`,"settings.interface.panelVersion":`Версия панели`,"settings.interface.copyPanelVersion":`Скопировать версию панели`,"settings.interface.panelVersionHint":`Выпуск, который выполняет этот процесс панели — {command} выводит то же число.`,"settings.interface.panelName":`Имя панели`,"settings.interface.panelNameHint":`Показывается в боковой панели штатным UI. Собственный UI может показывать своё имя.`,"settings.interface.uploadLabel":`Загрузить сборку UI (.zip с index.html)`,"settings.interface.docsHint":`См. {docs} о контракте API. Если собственный UI ломает панель, {command} вернёт штатный из терминала.`,"settings.interface.resetName":`Сбросить имя`,"settings.interface.confirmRevert":`Подтвердить возврат`,"settings.interface.revertToStock":`Вернуть штатный`,"settings.interface.install":`Установить UI`,"settings.interface.installed":`UI заменён на {name} — обновите страницу`,"settings.interface.yourBuild":`ваша сборка`,"settings.interface.restored":`штатный UI восстановлен — обновите страницу`,"settings.interface.nothingInstalled":`собственный UI не был установлен`,"settings.listener.title":`Прослушиватель`,"settings.listener.description":`Где панель отвечает. Перенос перезапускает панель и отправляет эту страницу на новый адрес.`,"settings.listener.port":`Порт управления`,"settings.listener.portHint":`По умолчанию 3999.`,"settings.listener.bind":`Привязка`,"settings.listener.bindLocal":`Локально`,"settings.listener.bindLan":`LAN`,"settings.listener.bindCustom":`Свой`,"settings.listener.bindLanHint":`0.0.0.0 — доступно из всей сети.`,"settings.listener.bindLocalHint":`127.0.0.1 — только эта машина.`,"settings.listener.bindCustomHint":`Конкретный адрес интерфейса, который вы вводите ниже.`,"settings.listener.ipv4":`Адрес IPv4`,"settings.listener.ipv4Placeholder":`192.168.1.20`,"settings.listener.ipv4Error":`Введите адрес IPv4, например 192.168.1.20.`,"settings.listener.ipv4Hint":`Для прослушивания за пределами 127.0.0.1 нужен настоящий пароль.`,"settings.listener.openBrowser":`Открывать браузер при запуске панели`,"settings.listener.liveAddress":`Текущий адрес`,"settings.listener.restartRequired":`требуется перезапуск`,"settings.listener.copyLiveAddress":`Скопировать текущий адрес`,"settings.listener.liveAddressHint":`К чему привязан прослушиватель сейчас; сохранённые изменения вступят в силу после повторной привязки панели.`,"settings.logs.title":`Хранение`,"settings.logs.description":`Живой просмотр всегда идёт из памяти; эти файлы переживают перезапуск и питают страницу журналов.`,"settings.logs.persist":`Хранить журналы на диске`,"settings.logs.persistHint":`Выключите, чтобы держать всё только в памяти.`,"settings.logs.maxBytes":`Ротация при (байт)`,"settings.logs.maxBytesHint":`Для каждого сервера, перед переходом к .1, .2, …`,"settings.logs.keep":`Хранить ротированные файлы`,"settings.logs.directory":`Каталог журналов`,"settings.logs.copyDirectory":`Скопировать каталог журналов`,"settings.logs.browseHint":`Просматривайте и скачивайте эти файлы на странице {logs}.`,"settings.paths.dataRoot":`Корень данных`,"settings.paths.dataRootHint":`HHOSTED_HOME — глобальные настройки, рабочие пространства, TLS, резервные копии и UI.`,"settings.paths.globalSettings":`Глобальные настройки`,"settings.paths.globalSettingsHint":`settings.json — прослушиватель, аутентификация, политика TLS, показатели хоста, резервные копии.`,"settings.paths.projectDir":`Каталог проекта`,"settings.paths.projectDirHint":`Основа для относительных путей записей.`,"settings.paths.panelAddress":`Адрес панели`,"settings.paths.panelAddressHint":`Где эта панель управления работает прямо сейчас.`,"settings.paths.serversConfig":`Конфигурация серверов`,"settings.paths.serversConfigHint":`servers.config.json для {label}.`,"settings.paths.workspaceSettings":`Настройки рабочего пространства`,"settings.paths.workspaceSettingsHint":`Серверные значения по умолчанию, хранение журналов, уведомления, DDNS.`,"settings.paths.logs":`Журналы`,"settings.paths.logsHint":`Сохранённый вывод для этого рабочего пространства.`,"settings.paths.copyPath":`Скопировать {label}`,"settings.paths.whereThingsLive":`Где что лежит`,"settings.paths.whereThingsLiveDescription":`Только чтение. Копируйте путь прямо в оболочку или редактор.`,"settings.paths.workspaceFiles":`Файлы рабочего пространства`,"settings.paths.workspaceFilesDescription":`Каждое рабочее пространство владеет своей конфигурацией, настройками и каталогом журналов; между ними ничего не разделяется.`,"settings.rebind.failed":`Панель управления не ответила на {target}. Проверьте консоль, чтобы узнать новый прослушиватель.`,"settings.restore.title":`Восстановить резервную копию`,"settings.restore.description":`Ничего не записывается, пока план не применён.`,"settings.restore.archive":`Архив`,"settings.restore.archiveHint":`Сохранённый архив или .zip с этой машины.`,"settings.restore.encryptedName":`{name} — зашифровано`,"settings.restore.uploadOption":`Загрузить файл…`,"settings.restore.archiveFile":`Файл архива (.zip)`,"settings.restore.unchangedTitle":`Пока ничего не изменилось`,"settings.restore.archiveLine":`Архив {name}.`,"settings.restore.uploadedArchive":`Загруженный архив.`,"settings.restore.passwordProtected":`Эта резервная копия защищена паролем.`,"settings.restore.password":`Пароль`,"settings.restore.checkAgain":`Проверить снова с паролем`,"settings.restore.choosePrompt":`Выберите, что восстанавливать — выбрано {selected} из {total}.`,"settings.restore.willRestore":`Будет восстановлено: {items}.`,"settings.restore.skipped":`Пропущено: {items}.`,"settings.restore.nothing":`ничего`,"settings.restore.restartNote":`Собственные настройки панели отличаются, поэтому после этого перезапустите панель.`,"settings.restore.reloadedNote":`Восстановленные рабочие пространства перезагружаются сразу; записи с автозапуском стартуют сами.`,"settings.restore.applyStored":`Применить это восстановление`,"settings.restore.applyUpload":`Восстановить из загруженного файла`,"settings.restore.restored":`Восстановлено элементов: {count}.`,"settings.restore.restoredWithNotes":`Восстановлено элементов: {count} — {notes}.`,"settings.restore.noteReloaded":`восстановленные серверы работают, записи автозапуска стартуют`,"settings.restore.noteRestart":`перезапустите панель, чтобы применить её собственные настройки`,"settings.restore.reasonSymbolicLink":`символическая ссылка, пропущено`,"settings.restore.reasonNotSelected":`не выбрано`,"settings.restore.reasonUnrestorable":`здесь восстановить нельзя`,"settings.restore.reasonInvalidSettings":`настройки в архиве недействительны`,"settings.restore.reasonInvalidServers":`серверы в архиве недействительны`,"settings.shell.noUnsavedChanges":`Нет несохранённых изменений`,"settings.shell.discard":`Отменить изменения`,"settings.shell.save":`Сохранить настройки`,"settings.shell.unsavedTitle":`Несохранённые изменения`,"settings.shell.nothingToSave":`Нечего сохранять.`,"settings.telegram.title":`Telegram`,"settings.telegram.description":`Политика лежит в конфигурации; токен бота — это секрет и никогда не возвращается с сервера.`,"settings.telegram.enabled":`Отправлять уведомления`,"settings.telegram.enabledHint":`Одно сообщение на событие, ограниченное временем ожидания ниже.`,"settings.telegram.chatId":`Id чата`,"settings.telegram.chatIdPlaceholder":`123456789 или @channel`,"settings.telegram.chatIdHint":`Используйте «Определить чаты», чтобы заполнить это из обновлений бота.`,"settings.telegram.cooldown":`Время ожидания на событие (мс)`,"settings.telegram.cooldownHint":`Для каждого сервера и причины, чтобы часто падающий сервер не мог спамить.`,"settings.telegram.onCrash":`Попытки исчерпаны`,"settings.telegram.onUnhealthy":`Порт неисправен`,"settings.telegram.onForcedRestart":`Принудительный перезапуск`,"settings.telegram.onRecovered":`Восстановлен`,"settings.telegram.onHost":`Показатели хоста превышены`,"settings.telegram.onHostHint":`Диск, память, подкачка, нагрузка и температура ЦП, согласно порогам в разделе «Показатели хоста».`,"settings.telegram.onDdns":`Dynamic DNS изменился или дал сбой`,"settings.telegram.onDdnsHint":`Одно сообщение на проход, изменивший запись, и одно для прохода, который завершился сбоем.`,"settings.telegram.botToken":`Токен бота`,"settings.telegram.tokenSet":`токен задан`,"settings.telegram.noToken":`нет токена`,"settings.telegram.tokenNote":`От @BotFather — секрет, никогда в servers.config.json.`,"settings.telegram.tokenPlaceholder":`123456789:AA…`,"settings.telegram.tokenSavedPlaceholder":`Сохранён — введите новый токен, чтобы заменить его`,"settings.telegram.saveToken":`Сохранить токен`,"settings.telegram.detectChats":`Определить чаты`,"settings.telegram.sendTest":`Отправить тест`,"settings.telegram.removeToken":`Удалить токен`,"settings.telegram.removeTokenConfirm":`Подтвердить удаление`,"settings.telegram.removeTokenTitle":`Удалить токен бота?`,"settings.telegram.removeTokenHint":`Уведомления прекратятся, пока вы снова не вставите токен.`,"settings.telegram.tokenSaved":`Токен сохранён.`,"settings.telegram.tokenSavedFor":`Токен сохранён для @{username}.`,"settings.telegram.tokenRemoved":`Токен удалён.`,"settings.telegram.noChats":`Чаты не найдены. Сначала отправьте боту /start, затем определите снова.`,"settings.telegram.testSent":`Тестовое сообщение отправлено.`,"settings.telegram.testFailed":`Тестовое сообщение не удалось отправить.`,"settings.telegram.chatsSeen":`Чаты, которые видел бот:`,"settings.telegram.lastSend":`Последняя отправка: {result}`,"settings.tls.title":`HTTPS`,"settings.tls.description":`Загрузите пару PEM, и панель начнёт отдавать TLS на своём прослушивателе. Самоподписанный сертификат вполне годится для домашней сети.`,"settings.tls.serve":`Отдавать панель по HTTPS`,"settings.tls.serveHint":`Сохраняется вместе с «Сохранить настройки»; панель перепривязывается, и эта страница следует за ней.`,"settings.tls.certificateTitle":`Сертификат`,"settings.tls.certificateDescription":`Сертификат в кодировке PEM и его закрытый ключ. Оба остаются в файле секретов.`,"settings.tls.unusableTitle":`Сохранённый сертификат нельзя использовать`,"settings.tls.subject":`Субъект`,"settings.tls.issuer":`Издатель`,"settings.tls.validUntil":`Действителен до`,"settings.tls.days":`{count} дней`,"settings.tls.privateKey":`Закрытый ключ`,"settings.tls.keyMatches":`соответствует сертификату`,"settings.tls.keyMismatch":`не соответствует`,"settings.tls.fingerprint":`Отпечаток`,"settings.tls.copyFingerprint":`Скопировать отпечаток`,"settings.tls.noCertificateTitle":`Сертификат не загружен`,"settings.tls.noCertificateText":`Загрузите ниже сертификат PEM и ключ, затем сохраните. HTTPS не отдаётся, пока нет сертификата.`,"settings.tls.certFile":`Файл сертификата (.pem, .crt)`,"settings.tls.keyFile":`Файл закрытого ключа (.pem, .key)`,"settings.tls.pasteCertificate":`Или вставьте сертификат`,"settings.tls.pasteKey":`Или вставьте закрытый ключ`,"settings.tls.saveCertificate":`Сохранить сертификат`,"settings.tls.removeCertificate":`Удалить сертификат`,"settings.tls.confirmRemove":`Подтвердить удаление`,"settings.tls.removeTitle":`Удалить сертификат?`,"settings.tls.removeHint":`TLS остаётся включённым, но отдавать нечего, поэтому после повторной привязки прослушивателя панель вернётся к http.`,"settings.tls.stored":`Сертификат сохранён.`,"settings.tls.removed":`Сертификат удалён.`,"status.stopped":`Остановлен`,"status.starting":`Запускается`,"status.running":`Работает`,"status.stopping":`Останавливается`,"status.backoff":`Перезапускается`,"status.crashed":`Аварийно завершился`,"status.conflict":`Конфликт портов`,"theme.label":`Тема: {theme}`,"theme.light":`светлая`,"theme.dark":`тёмная`,"theme.system":`системная`,"topbar.search":`Поиск или выполнение команды`,"topbar.openNavigation":`Открыть навигацию`,"topbar.commandPalette":`Палитра команд`,"topbar.account":`Учётная запись`,"topbar.signedIn":`Выполнен вход`,"topbar.signOut":`Выйти`,"topbar.workspaceLabel":`Рабочее пространство: {name}`,"validation.port":`Порт должен быть целым числом от 1 до 65535.`,"validation.idRequired":`Требуется id — это ключ, под которым живёт сервер.`,"validation.idPattern":`Id должен начинаться со строчной буквы или цифры и содержать только строчные буквы, цифры, дефисы и подчёркивания.`,"validation.commandRequired":`Требуется команда — исполняемый файл, который запускает супервизор.`,"validation.bootstrapCommand":`Для bootstrap нужна команда для запуска.`,"views.actions.addAServer":`Добавить сервер`,"views.actions.addServer":`Добавить сервер`,"views.actions.startAll":`Запустить все`,"views.actions.stopAll":`Остановить все`,"views.common.thisWorkspace":`это рабочее пространство`,"views.globalOverview.configError":`Не удалось прочитать конфигурацию: {error}`,"views.globalOverview.degraded":`деградация`,"views.globalOverview.description":`Показатели хоста и все серверы из всех рабочих пространств, сгруппированные по месту размещения.`,"views.globalOverview.emptyDescription":`Выберите рабочее пространство в верхней панели и добавьте первый процесс, который оно должно поддерживать.`,"views.globalOverview.emptyTitle":`Серверов пока нигде нет`,"views.globalOverview.groupEmptyDescription":`Добавьте один, и он появится здесь и на странице рабочего пространства.`,"views.globalOverview.groupRunning":`{running}/{total} работают`,"views.globalOverview.hostUptime":`Время работы хоста`,"views.globalOverview.hostVitals":`Показатели хоста`,"views.globalOverview.hostVitalsNote":`Эта машина, общая для всех рабочих пространств.`,"views.globalOverview.openWorkspace":`Открыть рабочее пространство`,"views.globalOverview.panelUptime":`Время работы панели`,"views.globalOverview.samplingOff":`опрос выключен`,"views.globalOverview.samplingOn":`опрос включён`,"views.globalOverview.serversTotal":`всего {count} серверов`,"views.globalOverview.serving":`обслуживание`,"views.globalOverview.workspaces":`Рабочие пространства`,"views.globalSettings.authenticationDescription":`Кому разрешено входить в эту панель и как проверяется доверие к сеансу.`,"views.globalSettings.backupsDescription":`Один архив на захват, охватывающий панель и любое выбранное рабочее пространство.`,"views.globalSettings.changesDescription":`Что «Сохранить» записало бы в файл настроек панели.`,"views.globalSettings.description":`Прослушиватель, доступ, показатели хоста, резервные копии, TLS и пути для этой панели — общие для всех рабочих пространств.`,"views.globalSettings.hostDescription":`Пороги оповещений для собственных ресурсов этой машины.`,"views.globalSettings.interfaceDescription":`Отдавайте собственный UI панели вместо штатного.`,"views.globalSettings.languageDescription":`Язык, на котором показывается эта панель, для этого браузера.`,"views.globalSettings.languageNote":`Ваш выбор хранится в этом браузере и применяется также к странице входа. Он не меняет собственный вывод журнала панели и её сообщения API.`,"views.globalSettings.listenerDescription":`Где слушает панель управления и как она себя объявляет.`,"views.globalSettings.loadErrorTitle":`Некоторые значения, хранимые только в файле, не удалось загрузить`,"views.globalSettings.navLabel":`Разделы глобальных настроек`,"views.globalSettings.pathsDescription":`Где home-hosted хранит свои файлы — глобально и для каждого рабочего пространства.`,"views.globalSettings.saveFailed":`Не удалось сохранить настройки.`,"views.globalSettings.saved":`Настройки сохранены.`,"views.globalSettings.savedRebinding":`Настройки сохранены — панель переходит на новый адрес.`,"views.globalSettings.savedToast":`Настройки сохранены`,"views.globalSettings.sectionAuthentication":`Аутентификация`,"views.globalSettings.sectionBackups":`Резервные копии`,"views.globalSettings.sectionHost":`Показатели хоста`,"views.globalSettings.sectionInterface":`Интерфейс`,"views.globalSettings.sectionListener":`Прослушиватель`,"views.globalSettings.sectionPaths":`Пути`,"views.globalSettings.sectionTls":`TLS`,"views.globalSettings.title":`Глобальные настройки`,"views.globalSettings.tlsDescription":`Отдавайте панель по HTTPS с собственным сертификатом.`,"views.logs.allStreams":`Все потоки`,"views.logs.clear":`Очистить`,"views.logs.clearDescription":`{server} — файл на диске усекается. Процесс продолжает работать, и новые строки записываются начиная с этого места.`,"views.logs.clearFile":`Очистить файл`,"views.logs.clearNote":`Сначала скачайте его, если вывод ещё нужен — отменить это из панели нельзя.`,"views.logs.clearTitle":`Очистить сохранённый файл журнала?`,"views.logs.fileEmpty":`Сохранённый файл пуст.`,"views.logs.loadedLines":`загружено {count} строк`,"views.logs.modeLive":`Живой поток`,"views.logs.modePersisted":`Сохранённое`,"views.logs.noServersDescription":`Добавьте один, и его вывод будет сохраняться здесь.`,"views.logs.noServersTitle":`Нет серверов`,"views.logs.nothingOnDisk":`Для этого сервера на диске ничего нет — сохранение выключено или он ещё ничего не записал.`,"views.logs.nothingPersisted":`ничего не сохранено`,"views.logs.persistedSummary":`{workspace} · {persisted} из {total} серверов на диске · {size}`,"views.logs.persistedTitle":`Сохранённые журналы`,"views.logs.pickServerDescription":`Сохранённый вывод и живые потоки ведутся по каждому серверу. Выберите один из списка.`,"views.logs.pickServerTitle":`Выберите сервер`,"views.logs.reload":`Перезагрузить`,"views.logs.retentionNote":`Ротация и хранение задаются в разделе «Настройки рабочего пространства» → «Журналы».`,"views.logs.searchAria":`Искать в журнале`,"views.logs.searchPlaceholder":`искать в окне хвоста`,"views.logs.searchedLines":`просмотрено {count} строк`,"views.logs.streamAria":`Поток`,"views.logs.tailAria":`Размер хвоста`,"views.logs.waitingOutput":`Подключено — ожидание вывода.`,"views.overview.acrossTree":`по всему дереву`,"views.overview.cpuNow":`{value}% ЦП сейчас`,"views.overview.crashedOrUnhealthy":`авария или неисправность`,"views.overview.description":`Живое состояние каждого сервера в этом рабочем пространстве, обновляемое через один поток событий.`,"views.overview.emptyDescription":`Добавьте первый процесс, который это рабочее пространство должно поддерживать.`,"views.overview.emptyTitle":`В этом рабочем пространстве нет серверов`,"views.overview.enabled":`включено: {count}`,"views.overview.longestUptime":`Наибольшее время работы`,"views.overview.needsAttention":`Требует внимания`,"views.overview.notUp":`не работают: {count}`,"views.overview.nothingBroken":`ничего не сломано`,"views.overview.nothingRunning":`ничего не работает`,"views.overview.openFullList":`Открыть полный список`,"views.overview.peak":`пик {value}`,"views.overview.processMemory":`Память процессов`,"views.overview.recentActivity":`Недавняя активность`,"views.overview.running":`Работает`,"views.overview.sampling":`история ресурсов собирается каждые 5 с и хранится до конца сеанса`,"views.overview.stopped":`Остановлен`,"views.overview.workspaceLabel":`рабочее пространство {id}`,"views.route.server":`Сервер`,"views.serverDetail.allServers":`Все серверы`,"views.serverDetail.autostart":`Автозапуск вместе с панелью`,"views.serverDetail.backToServers":`Назад к серверам`,"views.serverDetail.bind":`Привязка`,"views.serverDetail.bindCustom":`{bind} — свой`,"views.serverDetail.bindLan":`0.0.0.0 — все интерфейсы`,"views.serverDetail.bindLocal":`127.0.0.1 — только эта машина`,"views.serverDetail.closeEditor":`Закрыть редактор`,"views.serverDetail.copyJson":`Скопировать конфигурацию JSON`,"views.serverDetail.crashes24":`Аварии за 24 ч`,"views.serverDetail.dependencies":`Зависимости`,"views.serverDetail.detached":`отсоединён`,"views.serverDetail.detachedHint":`Этот процесс заменил сам себя: панель приняла преемника, а не запустила вторую копию. Остановка всё ещё работает, его вывод остаётся там, куда его направил преемник.`,"views.serverDetail.disableServer":`Отключить сервер`,"views.serverDetail.editHint":`Изменить каждое поле этой записи`,"views.serverDetail.effectiveConfig":`Действующая конфигурация`,"views.serverDetail.effectiveConfigNote":`Значения по умолчанию из настроек уже включены в эти значения.`,"views.serverDetail.enableServer":`Включить сервер`,"views.serverDetail.eventHistory":`История событий`,"views.serverDetail.eventHistoryNote":`Хранится панелью 24 часа.`,"views.serverDetail.fieldArgs":`args`,"views.serverDetail.fieldBackupPaths":`пути резервных копий`,"views.serverDetail.fieldBootstrap":`bootstrap`,"views.serverDetail.fieldCommand":`command`,"views.serverDetail.fieldCwd":`cwd`,"views.serverDetail.fieldDataEnvs":`переменные данных`,"views.serverDetail.fieldDependsOn":`зависит от`,"views.serverDetail.fieldEnv":`env`,"views.serverDetail.fieldEnvFile":`файл окружения`,"views.serverDetail.fieldHealth":`исправность`,"views.serverDetail.fieldLogBuffer":`буфер журнала`,"views.serverDetail.fieldOnPortConflict":`при конфликте портов`,"views.serverDetail.fieldPortBind":`порт · привязка`,"views.serverDetail.fieldRestart":`перезапуск`,"views.serverDetail.fieldRssLimit":`лимит RSS`,"views.serverDetail.fieldStop":`остановка`,"views.serverDetail.fields":`Поля`,"views.serverDetail.goneDescription":`{id} больше нет в servers.config.json. Возможно, он был удалён на другой вкладке.`,"views.serverDetail.goneTitle":`Этот сервер исчез`,"views.serverDetail.health":`Исправность`,"views.serverDetail.healthProbe":`Проверка исправности`,"views.serverDetail.lastCrash":`Последняя авария`,"views.serverDetail.lastProbe":`Последняя проверка`,"views.serverDetail.logBufferLines":`{count} строк`,"views.serverDetail.memoryRss":`Память (RSS)`,"views.serverDetail.moreActions":`Дополнительные действия для {label}`,"views.serverDetail.neverWritten":`Этот сервер ещё ничего не записал.`,"views.serverDetail.nextAttempt":`Следующая попытка`,"views.serverDetail.none":`нет`,"views.serverDetail.off":`выкл.`,"views.serverDetail.persistent":`постоянный`,"views.serverDetail.persistentHint":"Этот элемент работает под управлением собственной няни (nanny), поэтому продолжает работать, когда панель останавливается, перезапускается или уничтожается. `home-hosted down` сообщает о нём, а не останавливает его; останавливает только «Остановить».","views.serverDetail.pid":`PID`,"views.serverDetail.portFree":`свободен`,"views.serverDetail.portInUse":`занят`,"views.serverDetail.portState":`Состояние порта`,"views.serverDetail.probeFailed":`Проверка исправности ещё не прошла.`,"views.serverDetail.probeFailedFor":`Проверка исправности не проходит уже {duration}.`,"views.serverDetail.processes":`Процессы`,"views.serverDetail.rawJson":`Необработанный JSON`,"views.serverDetail.removeAutostart":`Убрать из автозапуска`,"views.serverDetail.removeDescription":`{label} удаляется из servers.config.json: его процесс останавливается, а журналы и история аварий удаляются вместе с ним.`,"views.serverDetail.removeNote":`Отменить это из панели нельзя — запись придётся добавить вручную или из резервной копии.`,"views.serverDetail.removeServer":`Удалить сервер`,"views.serverDetail.removeTitle":`Удалить этот сервер?`,"views.serverDetail.restart":`Перезапустить`,"views.serverDetail.restarts":`Перезапуски`,"views.serverDetail.sectionConfig":`Конфигурация`,"views.serverDetail.sectionHistory":`История`,"views.serverDetail.sectionOutput":`Живой вывод`,"views.serverDetail.start":`Запустить`,"views.serverDetail.startsOnItsOwn":`Запускается сам. Добавьте id в {code}, чтобы упорядочить его после других серверов.`,"views.serverDetail.stop":`Остановить`,"views.serverDetail.telemetry":`Телеметрия`,"views.serverDetail.telemetryNote":`Собирается каждые 5 с, пока эта страница открыта.`,"views.serverDetail.unhealthyFor":`Неисправен уже`,"views.serverDetail.uptime24":`Время работы за 24 ч`,"views.serverDetail.waitingFirstLine":`Ожидание первой строки…`,"views.servers.clearFilter":`Очистить фильтр`,"views.servers.clearFilters":`Очистить фильтры`,"views.servers.description":`Каждая запись в servers.config.json рабочего пространства {workspace}, с живыми ресурсами, исправностью и историей.`,"views.servers.emptyDescription":`Добавьте первый процесс, которым должна управлять эта панель. Его команда, аргументы, окружение и рабочий каталог задаются в файле конфигурации.`,"views.servers.emptyTitle":`Серверы не настроены`,"views.servers.filterAll":`Все`,"views.servers.filterAria":`Фильтр серверов`,"views.servers.filterAttention":`Внимание`,"views.servers.filterDisabled":`Отключённые`,"views.servers.filterPlaceholder":`Фильтр по id, метке, команде или порту`,"views.servers.filterRunning":`Работают`,"views.servers.filterStopped":`Остановленные`,"views.servers.noMatchDescription":`Попробуйте другое состояние или очистите поиск.`,"views.servers.noMatchTitle":`Ничего не соответствует этому фильтру`,"views.settings.changesDescription":`Что «Сохранить» записало бы в настройки рабочего пространства {workspace}.`,"views.settings.configErrorNote":`Панель продолжает управлять с прежней конфигурацией; исправление файла перезагрузит её само.`,"views.settings.configErrorTitle":`Не удалось прочитать конфигурацию рабочего пространства`,"views.settings.configWarningTitle":`В конфигурации этого рабочего пространства есть предупреждение`,"views.settings.ddnsDescription":`Держите имена хостов указывающими на публичный адрес этой машины, у какого бы регистратора они ни были.`,"views.settings.defaultsDescription":`Применяются к каждой записи в этом рабочем пространстве, которая не задаёт собственное значение.`,"views.settings.description":`Серверные значения по умолчанию, хранение журналов, уведомления и Dynamic DNS для {workspace}.`,"views.settings.logsDescription":`Сколько вывода это рабочее пространство хранит на диске и как долго.`,"views.settings.navLabel":`Разделы настроек рабочего пространства`,"views.settings.notificationsDescription":`Оповещения об авариях и исправности для этого рабочего пространства, отправляемые в чат Telegram.`,"views.settings.saveFailed":`Не удалось сохранить настройки.`,"views.settings.saved":`Настройки рабочего пространства сохранены.`,"views.settings.savedToast":`Настройки рабочего пространства сохранены`,"views.settings.sectionDdns":`Dynamic DNS`,"views.settings.sectionDefaults":`Серверные значения по умолчанию`,"views.settings.sectionLogs":`Журналы`,"views.settings.sectionNotifications":`Уведомления`,"workspace.new":`Новое рабочее пространство`,"workspace.rename":`Переименовать рабочее пространство`,"workspace.create":`Создать рабочее пространство`,"workspace.renameAction":`Переименовать`,"workspace.createHint":`Собственные настройки, серверы, журналы, секреты и запись резервной копии — обслуживается той же панелью.`,"workspace.renameHint":`Меняется только название; id рабочего пространства сохраняется, поэтому URL и пути продолжают работать.`,"workspace.nameHint":`Показывается в верхней панели.`,"workspace.nameHintId":`Показывается в верхней панели. Id: {id}`,"workspace.none":`Нет рабочего пространства`,"workspace.delete":`Удалить рабочее пространство`,"days.remaining":{one:`{count} день`,few:`{count} дня`,many:`{count} дней`,other:`{count} дня`},"editor.unsaved":{one:`несохранённое изменение`,few:`несохранённых изменения`,many:`несохранённых изменений`,other:`несохранённых изменения`},"editor.saveChanges":{one:`Сохранить {count} изменение`,few:`Сохранить {count} изменения`,many:`Сохранить {count} изменений`,other:`Сохранить {count} изменения`},"logs.lines":{one:`{count} строка`,few:`{count} строки`,many:`{count} строк`,other:`{count} строки`},"palette.results":{one:`{count} результат`,few:`{count} результата`,many:`{count} результатов`,other:`{count} результата`},"proxy.retry.inMinutes":{one:`~{count} минуту`,few:`~{count} минуты`,many:`~{count} минут`,other:`~{count} минуты`},"proxy.retry.inHours":{one:`~{count} час`,few:`~{count} часа`,many:`~{count} часов`,other:`~{count} часа`},"servers.total":{one:`{count} сервер`,few:`{count} сервера`,many:`{count} серверов`,other:`{count} сервера`},"servers.running":{one:`{count} работает`,few:`{count} работают`,many:`{count} работают`,other:`{count} работают`},"settings.backup.entriesCount":{one:`{count} запись`,few:`{count} записи`,many:`{count} записей`,other:`{count} записи`},"settings.backup.itemsSelected":{one:`выбран {count} элемент`,few:`выбрано {count} элемента`,many:`выбрано {count} элементов`,other:`выбрано {count} элемента`},"settings.ddns.hostnameCount":{one:`{count} имя хоста`,few:`{count} имени хоста`,many:`{count} имён хостов`,other:`{count} имени хоста`},"settings.shell.fieldsChanged":{one:`поле изменено`,few:`поля изменены`,many:`полей изменено`,other:`поля изменены`},"settings.shell.saveChanges":{one:`Сохранить {count} изменение`,few:`Сохранить {count} изменения`,many:`Сохранить {count} изменений`,other:`Сохранить {count} изменения`},"views.globalOverview.needLook":{one:`{count} сервер требует внимания`,few:`{count} сервера требуют внимания`,many:`{count} серверов требуют внимания`,other:`{count} сервера требуют внимания`},"views.logs.filesOnDisk":{one:`{count} файл`,few:`{count} файла`,many:`{count} файлов`,other:`{count} файла`},"views.overview.needLook":{one:`{count} сервер требует внимания`,few:`{count} сервера требуют внимания`,many:`{count} серверов требуют внимания`,other:`{count} сервера требуют внимания`}};export{e as default};
1
+ var e={"activity.emptyTitle":`За последние 24 часа событий нет`,"activity.emptyDescription":`Запуски, завершения, аварии и восстановления появляются здесь по мере происходящего.`,"activity.ran":`работал {duration}`,"addServer.title":`Добавить сервер`,"addServer.description":`Добавляет запись в servers.config.json рабочего пространства {workspace}; каждая пропущенная политика наследуется от значений по умолчанию.`,"addServer.thisWorkspace":`этого рабочего пространства`,"addServer.identity":`Идентификация`,"addServer.id":`Id`,"addServer.idHint":`Строчные буквы, цифры, дефисы и подчёркивания; используется в URL и журналах.`,"addServer.labelHint":`Показывается в панели; по умолчанию совпадает с id.`,"addServer.process":`Процесс`,"addServer.commandHint":`Запускается без оболочки.`,"addServer.argumentsHint":`Один аргумент на строку; пробелы внутри строки сохраняются.`,"addServer.portLifecycle":`Порт и жизненный цикл`,"addServer.bindHint":`lan открывает его в сети; делайте это только за аутентификацией.`,"addServer.advanced":`Дополнительные параметры`,"addServer.advancedHint":`окружение, резервные копии, политика, жизненный цикл, bootstrap`,"addServer.backups":`Резервные копии`,"addServer.backupIgnore":`Игнорировать известные генерируемые файлы`,"addServer.bootstrapDescription":`Разовый командный запуск перед первым стартом.`,"addServer.bootstrapHint":`Установки, миграции, загрузки — перед первым стартом, а не при каждом.`,"addServer.policyResources":`Политика и ресурсы`,"addServer.logBufferHint":`Пустое значение сохраняет значение по умолчанию.`,"addServer.inheritNote":`Перезапуск, исправность и остановка сначала соответствуют {settings}; измените значение здесь — и оно будет записано в этот элемент, а не останется унаследованным.`,"addServer.serverDefaults":`Настройки → Серверные значения по умолчанию`,"addServer.placeholdersTitle":`Доступные подстановки аргументов`,"addServer.submit":`Добавить в servers.config.json`,"app.name":`home-hosted`,"app.tagline":`Панель управления супервизором процессов`,"bind.local":`local — 127.0.0.1`,"bind.lan":`lan — 0.0.0.0`,"bind.explicit":`{bind} — явно`,"common.cancel":`Отмена`,"common.confirm":`Подтвердить`,"common.reset":`Сбросить`,"common.keepIt":`Оставить`,"common.remove":`Убрать`,"common.close":`Закрыть`,"common.save":`Сохранить`,"common.saving":`Сохранение…`,"common.discard":`Отменить изменения`,"common.delete":`Удалить`,"common.edit":`Изменить`,"common.add":`Добавить`,"common.retry":`Повторить`,"common.copy":`Копировать`,"common.copied":`Скопировано`,"common.enabled":`Включено`,"common.disabled":`Отключено`,"common.none":`Нет`,"common.unknown":`неизвестно`,"common.loading":`Загрузка…`,"common.selectAll":`Выбрать все`,"common.selectNone":`Снять выделение`,"common.name":`Название`,"common.label":`Метка`,"common.hostname":`Имя хоста`,"common.port":`Порт`,"common.command":`Команда`,"common.environment":`Окружение`,"common.memory":`Память`,"common.cpu":`ЦП`,"common.disk":`Диск`,"common.uptime":`Время работы`,"common.status":`Состояние`,"common.actions":`Действия`,"common.details":`Подробности`,"common.overview":`Обзор`,"common.warning":`Предупреждение`,"common.error":`Ошибка`,"common.confirmQuestion":`{label}?`,"common.unset":`не задано`,"common.never":`никогда`,"common.now":`только что`,"common.dismiss":`Скрыть`,"connection.live":`В реальном времени`,"connection.connecting":`Подключение`,"connection.reconnecting":`Переподключение`,"connection.liveUpdates":`Обновления в реальном времени`,"editor.title":`Изменить конфигурацию`,"editor.description":`Записывает переопределения в {file}; всё нетронутое продолжает наследовать значения по умолчанию.`,"editor.inSync":`синхронизировано`,"editor.process":`Процесс`,"editor.processDescription":`Что запускается, где и с каким окружением.`,"editor.labelPlaceholder":`иначе используется id`,"editor.argumentsHint":`По одному на строку; {port} {host} {home} {projectDir} {dataRoot} {id} {label} {cwd} {bind} {lanIp} подставляются.`,"editor.portTitle":`Порт и привязка`,"editor.portDescription":`Как порт проверяется заранее и где процесс доступен.`,"editor.bindHint":`Собственный IPv4, уже заданный в конфигурации, остаётся доступным для выбора.`,"editor.lifecycle":`Жизненный цикл`,"editor.lifecycleDescription":`Владеет ли супервизор этим элементом вообще.`,"editor.save":`Сохранить в servers.config.json`,"editor.changesTitle":`Несохранённые изменения`,"editor.changesDescription":`Что «Сохранить» записало бы в servers.config.json.`,"editor.nothingToSave":`Нечего сохранять.`,"health.disabled":`Не проверяется`,"health.unknown":`Не проверен`,"health.healthy":`Исправен`,"health.unhealthy":`Неисправен`,"history.start":`Запущен`,"history.exit":`Завершён`,"history.crash":`Аварийно завершился`,"history.forcedRestart":`Принудительный перезапуск`,"history.unhealthy":`Неисправен`,"history.recovered":`Восстановлен`,"host.loadPerCpu":`Нагрузка / цп`,"host.cpuTemp":`Темп. ЦП`,"host.samplingOff":`Опрос хоста выключен`,"host.samplingOffDescription":`Включите его в настройках, чтобы собирать нагрузку, память, диск и температуру.`,"host.swap":`Подкачка`,"host.cpus":`ЦП`,"host.loadAverage":`Нагрузка 1 / 5 / 15`,"host.memoryUsed":`Память занята`,"host.sampled":`Собрано`,"host.filesystems":`Файловые системы`,"host.thresholdsBreached":`Пороги превышены`,"killPort.trigger":`Завершить процесс на порту {port}`,"killPort.title":`Завершить процесс на порту {port}?`,"killPort.body":`Сначала его просят остановиться, и завершают только если он это игнорирует. Всё, что находится под управлением этой панели, отклоняется, поэтому управляемый сервер так не потерять.`,"killPort.confirm":`Завершить`,"language.label":`Язык`,"language.select":`Выберите язык`,"lifecycle.restartTitle":`Политика перезапуска`,"lifecycle.restartDescription":`Задержка между попытками после аварии.`,"lifecycle.restartOnCrash":`Перезапуск при аварии`,"lifecycle.maxRetries":`Макс. попыток`,"lifecycle.maxRetriesHint":`Попытки, после которых сервер остаётся аварийно завершённым.`,"lifecycle.baseDelay":`Базовая задержка (мс)`,"lifecycle.factor":`Коэффициент задержки`,"lifecycle.maxDelay":`Макс. задержка (мс)`,"lifecycle.resetAfter":`Сброс после (мс)`,"lifecycle.resetAfterHint":`Запуск такой длительности сбрасывает счётчик попыток.`,"lifecycle.healthTitle":`Проверка исправности`,"lifecycle.healthDescription":`Как проверяется готовность, когда процесс запущен.`,"lifecycle.probe":`Проверять этот сервер`,"lifecycle.probeType":`Тип проверки`,"lifecycle.probePort":`TCP-порт — только соединение`,"lifecycle.probeHttp":`HTTP-запрос — проверка ответа`,"lifecycle.interval":`Интервал (мс)`,"lifecycle.timeout":`Тайм-аут (мс)`,"lifecycle.unhealthyAfter":`Неисправен после`,"lifecycle.unhealthyAfterHint":`Подряд неудачных проверок.`,"lifecycle.forceRestartAfter":`Принудительный перезапуск через (мс)`,"lifecycle.forceRestartAfterHint":`0 отключает его.`,"lifecycle.startTimeout":`Тайм-аут запуска (мс)`,"lifecycle.httpPath":`HTTP-путь`,"lifecycle.httpMethod":`HTTP-метод`,"lifecycle.expectStatus":`Ожидать статус`,"lifecycle.expectStatusHint":`Пусто принимает любой статус ниже.`,"lifecycle.expectStatusBelow":`Исправен ниже статуса`,"lifecycle.expectBody":`Тело должно содержать`,"lifecycle.expectBodyPlaceholder":`необязательная подстрока`,"lifecycle.headBodyHint":`У HEAD нет тела ответа, поэтому эта проверка игнорируется — используйте GET или очистите её.`,"lifecycle.stopTitle":`Поведение при остановке`,"lifecycle.stopDescription":`Как дереву процессов предлагается завершиться.`,"lifecycle.signal":`Сигнал`,"lifecycle.signalTerm":`SIGTERM — попросить остановиться`,"lifecycle.signalInt":`SIGINT — прервать (Ctrl-C)`,"lifecycle.signalKill":`SIGKILL — завершить немедленно`,"lifecycle.grace":`Льготный период (мс)`,"lifecycle.killGroup":`Завершить всю группу процессов`,"lifecycle.killPortHolders":`Также завершить всё, что занимает порт`,"login.title":`Войдите, чтобы продолжить`,"login.firstRunTitle":`У этой панели ещё нет пароля`,"login.firstRunSubtitle":`Доступ к ней может получить что угодно на этой машине. Задайте пароль сразу после входа.`,"login.authOffTitle":`Аутентификация отключена`,"login.authOffSubtitle":`Панель слушает только loopback — сейчас это единственная её защита.`,"login.subtitle":`Панель управления защищена. Введите пароль, чтобы продолжить.`,"login.password":`Пароль`,"login.showPassword":`Показать пароль`,"login.hidePassword":`Скрыть пароль`,"login.signIn":`Войти`,"login.openDashboard":`Открыть панель`,"login.exposed":`Открыта наружу`,"login.defaultPasswordWarning":`Всё ещё используется пароль по умолчанию {password}. Смените его в настройках — до этого прослушивание за пределами 127.0.0.1 отклоняется.`,"login.noPasswordWarning":`Пароль не задан. Откройте настройки на этой машине, чтобы добавить его, или выполните {command}.`,"login.sessionNote":`Сеанс остаётся активным {days} дней после последнего визита — каждый запрос продлевает этот срок. Выход очищает только этот браузер.`,"login.servedFromThisMachine":`обслуживается с этой машины`,"logs.emptyHint":`Вывода пока нет.`,"logs.noMatches":`Ничего не соответствует этому поиску или фильтру потоков.`,"logs.searchPlaceholder":`Искать в этом выводе`,"logs.searchLabel":`Искать в выводе журнала`,"logs.clearSearch":`Очистить поиск`,"logs.prevMatch":`Предыдущее совпадение`,"logs.nextMatch":`Следующее совпадение`,"logs.showTimestamps":`Показать отметки времени`,"logs.hideTimestamps":`Скрыть отметки времени`,"logs.timestampsShort":`ts`,"logs.pause":`Пауза`,"logs.follow":`Следить`,"logs.clearHint":`Очистить буфер в памяти`,"logs.clearLabel":`Очистить буфер журнала`,"logs.downloadHint":`Скачать сохранённый файл`,"logs.downloadLabel":`Скачать файл журнала`,"logs.outputLabel":`Вывод журнала`,"logs.jumpToLatest":`Перейти к последнему`,"logs.streaming":`поток`,"logs.paused":`пауза`,"logs.snapshot":`снимок`,"logs.linesOf":`{count} из {total} строк`,"logs.matches":`{count} совпадений`,"logs.rowHeight":`высота строки {height}px · окно`,"logs.streamAll":`Все`,"logs.streamOut":`out`,"logs.streamErr":`err`,"logs.streamSys":`sys`,"metric.emptyHint":`сбор…`,"nav.global":`Общее`,"nav.workspace":`Рабочее пространство`,"nav.others":`Прочее`,"nav.overview":`Обзор`,"nav.servers":`Серверы`,"nav.logs":`Журналы`,"nav.workspaceSettings":`Настройки рабочего пространства`,"nav.globalOverview":`Общий обзор`,"nav.globalSettings":`Общие настройки`,"nav.reverseProxy":`Обратный прокси`,"nav.navigation":`Навигация`,"nav.closeNavigation":`Закрыть навигацию`,"nav.hostVitals":`Показатели хоста`,"notice.configError":`Не удалось прочитать конфигурацию: {error}`,"notice.configErrorHint":`Панель продолжает работать с прежней конфигурацией; исправьте {path}, и она перечитается сама.`,"notice.defaultPassword":`Эта панель всё ещё использует пароль по умолчанию.`,"notice.defaultPasswordHint":`Смените его в общих настройках — до этого прослушивание за пределами 127.0.0.1 отклоняется.`,"notice.noPassword":`Аутентификация включена, но пароль не задан, поэтому ничего не запрашивается.`,"notice.noPasswordHint":`Задайте его в общих настройках, чтобы действительно закрыть панель.`,"notice.exposed":`Эта панель доступна за пределами 127.0.0.1.`,"notice.exposedHint":`Держите пароль надёжным или поставьте перед панелью прокси, завершающий TLS.`,"notice.authOff":`Аутентификация отключена — панель защищена только привязкой к loopback.`,"onPortConflict.block":`block — отказаться запускать`,"onPortConflict.warn":`warn — всё равно запустить`,"onPortConflict.follow":`follow — принять отсоединённый перезапуск самого себя`,"onPortConflict.reclaim":`reclaim — заменить управляемой копией`,"onPortConflict.kill":`kill — остановить всё, что занимает порт`,"palette.placeholder":`Перейти к серверу, выполнить действие, открыть настройку…`,"palette.openServer":`Открыть {label}`,"palette.serverLogs":`Журналы {label}`,"palette.startServer":`Запустить {label}`,"palette.stopServer":`Остановить {label}`,"palette.restartServer":`Перезапустить {label}`,"palette.goOverview":`Перейти к обзору`,"palette.goGlobalOverview":`Перейти к общему обзору`,"palette.goGlobalSettings":`Перейти к общим настройкам`,"palette.goProxy":`Перейти к обратному прокси`,"palette.goServers":`Перейти к серверам`,"palette.goLogs":`Перейти к журналам`,"palette.goWorkspaceSettings":`Перейти к настройкам рабочего пространства`,"palette.startAll":`Запустить все включённые серверы здесь`,"palette.stopAll":`Остановить все серверы здесь`,"palette.switchWorkspace":`Переключиться на {label}`,"palette.globalSetting":`Общая настройка: {label}`,"palette.workspaceSetting":`Настройка рабочего пространства: {label}`,"palette.theme":`Тема: {theme}`,"palette.groupServers":`Серверы`,"palette.groupActions":`Действия`,"palette.groupNavigate":`Навигация`,"palette.groupWorkspaces":`Рабочие пространства`,"palette.groupAppearance":`Внешний вид`,"palette.navigate":`перемещение`,"palette.run":`запуск`,"palette.noMatches":`Ничего не найдено по «{query}».`,"proxy.account.automatic":`Автоматически (единственная учётная запись, которая может ответить)`,"proxy.account.noTxt":`нет поддержки TXT`,"proxy.account.noCredentials":`нет учётных данных`,"proxy.account.gone":`Эта учётная запись больше не настроена.`,"proxy.account.emptyHint":`DNS-01 записывает проверочную запись сюда. Пусто использует единственную учётную запись, которая может ответить на проверку, если она есть.`,"proxy.account.cannotWrite":`Учётная запись {provider} не может записывать TXT-записи, поэтому не может ответить на проверку DNS-01.`,"proxy.account.noCredentialsYet":`Для этой учётной записи {provider} пока не сохранено учётных данных.`,"proxy.account.through":`Проверка записывается через эту учётную запись {provider}.`,"proxy.certificate.title":`Загруженные сертификаты`,"proxy.certificate.description":`Отдаются маршрутами, установленными на «Загруженный сертификат». Всё остальное — публичное или локальное — движок сертифицирует сам.`,"proxy.certificate.add":`Добавить сертификат`,"proxy.certificate.emptyTitle":`Сертификат не загружен`,"proxy.certificate.emptyDescription":`Маршруту, установленному на «Загруженный сертификат», нужна пара, покрывающая его имя хоста, иначе движку нечего для него отдавать.`,"proxy.certificate.daysLeft":`осталось {days} дней`,"proxy.certificate.subject":`Субъект`,"proxy.certificate.issuer":`Издатель`,"proxy.certificate.validUntil":`Действителен до`,"proxy.certificate.covers":`Покрывает`,"proxy.certificate.noSans":`в его SAN нет имён хостов`,"proxy.certificate.removeAria":`Удалить {name}`,"proxy.certificate.removeQuestion":`Удалить «{name}»?`,"proxy.certificate.removeBody":`Пара удаляется с диска. Маршрут, всё ещё установленный на «Загруженный сертификат», продолжит отдавать собственный сертификат движка, пока вы это не измените, а панель отказывает в удалении, пока хоть один маршрут его использует.`,"proxy.certificate.removeIt":`Удалить`,"proxy.certificate.stored":`«{label}» сохранён.`,"proxy.certificate.removed":`«{name}» удалён.`,"proxy.certificateDialog.title":`Добавить сертификат`,"proxy.certificateDialog.description":`Пара сохраняется на диск под своим id, и маршрут, установленный на «Загруженный сертификат», может её отдавать.`,"proxy.certificateDialog.label":`Метка`,"proxy.certificateDialog.labelPlaceholder":`Домашний wildcard-сертификат`,"proxy.certificateDialog.id":`Id`,"proxy.certificateDialog.idHint":`задаёт имена файлов на диске`,"proxy.certificateDialog.certFile":`Файл сертификата (.pem, .crt)`,"proxy.certificateDialog.keyFile":`Файл закрытого ключа (.pem, .key)`,"proxy.certificateDialog.pasteCert":`Или вставьте сертификат`,"proxy.certificateDialog.pasteKey":`Или вставьте закрытый ключ`,"proxy.certificateDialog.certPlaceholder":`-----BEGIN CERTIFICATE-----`,"proxy.certificateDialog.keyPlaceholder":`-----BEGIN PRIVATE KEY-----`,"proxy.certificateDialog.store":`Сохранить сертификат`,"proxy.certificateDialog.errorLabel":`требуется метка`,"proxy.certificateDialog.errorId":`id должен начинаться с буквы или цифры, далее буквы, цифры, дефис или подчёркивание`,"proxy.certificateDialog.errorTaken":`«{id}» уже используется другим сертификатом`,"proxy.certificateDialog.errorCertificate":`вставьте или выберите сертификат`,"proxy.certificateDialog.errorPrivateKey":`вставьте или выберите закрытый ключ`,"proxy.engine.title":`Движок`,"proxy.engine.description":`Сам обратный прокси. Панель скачивает текущую сборку, управляет ею и применяет её конфигурацию через собственный admin-API движка.`,"proxy.engine.notInFrame":`Состояние прокси пока не попадает в кадр этой панели.`,"proxy.engine.readFailed":`Не удалось прочитать данные движка`,"proxy.engine.notInstalled":`Движок не установлен`,"proxy.engine.installNote":`Установка скачивает текущий выпуск {engine}, которым управляет панель — около 46 МБ, однократно. Ничего не открывается наружу, пока не добавлен маршрут и не включён прокси.`,"proxy.engine.version":`Версия`,"proxy.engine.notProbed":`ещё не проверялся`,"proxy.engine.source":`Источник`,"proxy.engine.sourceCustom":`путь, заданный вручную`,"proxy.engine.sourceDownloaded":`скачан панелью`,"proxy.engine.size":`Размер`,"proxy.engine.binary":`Исполняемый файл`,"proxy.engine.copyPath":`Скопировать путь к исполняемому файлу`,"proxy.engine.address":`Текущий адрес`,"proxy.engine.process":`Процесс`,"proxy.engine.certificates":`Сертификаты`,"proxy.engine.noCert":`публичного сертификата пока нет`,"proxy.engine.expiresSoon":`ближайший истекает через {days} дней`,"proxy.engine.acme":`Сертификаты ACME`,"proxy.engine.localCa":`Локальная CA`,"proxy.engine.dns01":`DNS-01`,"proxy.engine.tcpUdp":`TCP/UDP`,"proxy.engine.documentation":`Документация {engine}`,"proxy.engine.failed":`Движок сообщил об ошибке`,"proxy.engine.setcapHint":`Привилегированный порт (ниже 1024) требует этого один раз в Linux:`,"proxy.engine.copyCommand":`Скопировать команду`,"proxy.engine.install":`Установить движок`,"proxy.engine.start":`Запустить`,"proxy.engine.stop":`Остановить`,"proxy.engine.apply":`Применить конфигурацию`,"proxy.engine.revert":`Откатить`,"proxy.engine.revertHint":`Вернуться к конфигурации, действовавшей до последней`,"proxy.engine.update":`Обновить движок`,"proxy.listener.title":`Прослушиватель и сертификаты`,"proxy.listener.description":`Где слушает прокси. 80 и 443 — это то, что переадресует роутер и чего ожидает проверка ACME; порт ниже 1024 требует привилегированной привязки.`,"proxy.listener.unprivilegedPorts":`непривилегированные порты`,"proxy.listener.run":`Запускать обратный прокси`,"proxy.listener.runHint":`Сохраняется вместе с «Сохранить настройки»; панель запускает или останавливает движок соответственно.`,"proxy.listener.httpPort":`Порт HTTP`,"proxy.listener.httpPortHint":`Проверки ACME HTTP-01 и перенаправление на HTTPS.`,"proxy.listener.httpsPort":`Порт HTTPS`,"proxy.listener.httpsPortHint":`Где отдаются сертификаты.`,"proxy.listener.useFallback":`Использовать {http} / {https}`,"proxy.listener.useStandard":`Использовать 80 / 443`,"proxy.listener.forwardHint":`Работает без привилегий — переадресуйте 80 и 443 на эти порты в роутере.`,"proxy.listener.privilegedTitle":`Порт ниже 1024 требует привилегированной привязки`,"proxy.listener.privilegedBody":`Запущенная от вашего пользователя панель не может привязать 80 или 443 без разрешения. Либо выдайте его один раз {how} и перезапустите движок, либо оставьте {http}/{https} и переадресуйте 80/443 в роутере. В Windows порт можно занять свободно, но что-то другое может его удерживать.`,"proxy.listener.privilegedWithSetcap":`с помощью {command} для исполняемого файла движка`,"proxy.listener.email":`Эл. почта учётной записи ACME`,"proxy.listener.emailPlaceholder":`you@example.com`,"proxy.listener.emailHint":`Let's Encrypt использует её, чтобы предупредить об истекающем сертификате. Локальному имени достаётся собственная CA движка, и почта не нужна.`,"proxy.listener.emailNeededTitle":`Для автоматического HTTPS нужна электронная почта`,"proxy.listener.emailNeededBody":`«{host}» — публичное имя хоста, поэтому движок запрашивает сертификат у CA, и адрес учётной записи обязателен. Впишите его, отключите TLS у маршрута или включите staging-эндпоинт, пока пробуете.`,"proxy.listener.staging":`Использовать staging-эндпоинт ACME`,"proxy.listener.stagingHint":`Недоверенные сертификаты и никакого расхода лимита запросов, пока вы пробуете.`,"proxy.listener.dns01":`Отвечать на проверки через DNS-01`,"proxy.listener.dns01Hint":`Панель записывает проверочную запись через DNS-учётную запись маршрута, поэтому для получения сертификата входящий порт не нужен.`,"proxy.listener.resolvers":`Сверять запись с`,"proxy.listener.resolversPlaceholder":`1.1.1.1, 8.8.8.8`,"proxy.listener.resolversHint":`Серверы имён, с которых движок читает запись; пусто — использует свои. Нужно там, где split-horizon DNS показывает ему другую картину.`,"proxy.listener.noAccountTitle":`Ни одна DNS-учётная запись не может ответить на проверку`,"proxy.listener.noAccountBody":`DNS-01 включён, но ни у одной учётной записи нет подходящих учётных данных. Добавьте её в разделе «Настройки рабочего пространства» → Dynamic DNS, иначе публичные имена останутся на портовых проверках и будут ждать CA, которая до них не дотянется.`,"proxy.listener.manyAccountsTitle":`Каждый публичный маршрут должен выбрать учётную запись`,"proxy.listener.manyAccountsBody":`Ответить может больше одной учётной записи, поэтому «Автоматически» не может выбрать. Выберите по одной на маршрут, иначе эти имена останутся на портовых проверках.`,"proxy.listener.accountNote":`Каждый маршрут выбирает свою учётную запись, поэтому имена в разных зонах получают нужную. Маршрут, оставленный на «Автоматически», использует единственную учётную запись, названную в таблице. Имя, на которое не отвечает ни одна запись, остаётся на портовых проверках.`,"proxy.listener.pendingNote":`Публичное имя, сертификат которого ещё выписывается, временно доступно — по HTTPS с временным недоверенным сертификатом или по обычному HTTP со страницей, называющей порты для переадресации.`,"proxy.retry.inFallback":`~8 часов`,"proxy.retryButton.force":`Принудительно повторить получение сертификата`,"proxy.retryButton.question":`Снова запросить у CA сертификат для {host}?`,"proxy.retryButton.body":`Ранее движку не удалось получить сертификат CA для этого имени хоста, и он использует свою локальную CA. Он повторяет попытку автоматически каждые {retryIn}.`,"proxy.retryButton.warning":`Повтор сейчас убьёт этот маршрут и на некоторое время сделает его недоступным — продолжить?`,"proxy.retryButton.leave":`Оставить`,"proxy.retryButton.now":`Повторить сейчас`,"proxy.routeDialog.titleEdit":`Изменить маршрут`,"proxy.routeDialog.titleAdd":`Добавить маршрут`,"proxy.routeDialog.description":`Имя хоста, куда оно перенаправляет и как отдаётся по TLS.`,"proxy.routeDialog.hostname":`Имя хоста`,"proxy.routeDialog.hostnamePlaceholder":`gitea.example.com`,"proxy.routeDialog.path":`Префикс пути`,"proxy.routeDialog.pathPlaceholder":`/optional`,"proxy.routeDialog.pathHint":`Пусто обслуживает весь хост.`,"proxy.routeDialog.target":`Цель`,"proxy.routeDialog.tls":`TLS`,"proxy.routeDialog.dnsAccount":`DNS-учётная запись`,"proxy.routeDialog.localNote":`Локальное имя подписывается собственной CA движка, поэтому DNS-учётная запись не участвует.`,"proxy.routeDialog.workspace":`Рабочее пространство`,"proxy.routeDialog.server":`Сервер`,"proxy.routeDialog.noServers":`в этом рабочем пространстве нет серверов`,"proxy.routeDialog.stoppedNote":`Остановленный сервер не направляется: строка показывает «Нет восходящего узла», пока он снова не заработает.`,"proxy.routeDialog.upstream":`Восходящий узел`,"proxy.routeDialog.upstreamPlaceholder":`http://10.0.0.5:8080`,"proxy.routeDialog.upstreamHint":`Буквальный адрес, включая порт. Схема необязательна.`,"proxy.routeDialog.panelNote":`Для отдачи панели управления нужны включённая аутентификация и пароль, не являющийся значением по умолчанию — иначе панель откажет в сохранении.`,"proxy.routeDialog.save":`Сохранить маршрут`,"proxy.routes.title":`Маршруты`,"proxy.routes.description":`Одно публичное имя хоста на сервис. Маршрут может указывать на управляемый сервер в любом рабочем пространстве, на эту панель или на буквальный восходящий узел.`,"proxy.routes.add":`Добавить маршрут`,"proxy.routes.cannotSaveTitle":`Эти маршруты нельзя сохранить в текущем виде`,"proxy.routes.cannotRoute":`{host} невозможно направить`,"proxy.routes.emptyTitle":`Маршрутов пока нет`,"proxy.routes.emptyDescription":`Добавьте один, чтобы открыть сервер через домен — движок сам получит сертификат.`,"proxy.routes.addFirst":`Добавить первый маршрут`,"proxy.routes.columnHostname":`Имя хоста`,"proxy.routes.columnTarget":`Цель`,"proxy.routes.columnUpstream":`Восходящий узел`,"proxy.routes.columnTls":`TLS`,"proxy.routes.columnState":`Состояние`,"proxy.routes.columnOn":`Вкл.`,"proxy.routes.openInTab":`Открыть {url} в новой вкладке`,"proxy.routes.noHostname":`имя хоста пока не задано`,"proxy.routes.toggle":`Маршрут {name}`,"proxy.routes.edit":`Изменить {name}`,"proxy.routes.remove":`Удалить {name}`,"proxy.status.certified":`сертификат готов`,"proxy.status.localCa":`CA движка`,"proxy.status.uploaded":`загруженная пара`,"proxy.status.awaitingCa":`ожидание CA`,"proxy.status.failed":`сертификат не получен`,"proxy.status.fellBack":`Возврат к локальной CA`,"proxy.status.serving":`Обслуживает`,"proxy.status.disabled":`Отключено`,"proxy.status.noUpstream":`Нет восходящего узла`,"proxy.status.error":`Ошибка`,"proxy.status.unapplied":`Ещё не применено`,"proxy.status.off":`Выкл.`,"proxy.status.stopped":`Остановлен`,"proxy.status.starting":`Запускается`,"proxy.status.running":`Работает`,"proxy.status.unsupported":`Не поддерживается`,"proxy.target.server":`Управляемый сервер`,"proxy.target.panel":`Эта панель управления`,"proxy.target.external":`Буквальный восходящий узел`,"proxy.target.controlPanel":`панель управления`,"proxy.target.noServer":`сервер не выбран`,"proxy.target.noUpstream":`нет восходящего узла`,"proxy.tls.auto":`Автоматически — решает движок`,"proxy.tls.off":`Выкл. — обычный HTTP`,"proxy.tls.manual":`Загруженный сертификат`,"proxy.tls.plain":`обычный HTTP`,"proxy.tls.uploaded":`загруженный сертификат`,"proxy.tls.letsEncrypt":`Let’s Encrypt`,"proxy.tls.engineCa":`CA движка (локальная)`,"proxy.tls.hintOff":`Обычный HTTP: для этого имени хоста сертификат не отдаётся.`,"proxy.tls.hintManual":`Отдаёт пару сертификатов, загруженную ниже.`,"proxy.tls.hintEmpty":`Публичное имя хоста получает сертификат ACME; локальное имя получает собственную CA движка.`,"proxy.tls.hintPublic":`Публичное имя хоста, поэтому движок запрашивает сертификат у CA — нужен адрес электронной почты учётной записи ACME.`,"proxy.tls.hintLocal":`Локальное имя, поэтому движок подписывает его собственной локально доверенной CA.`,"proxy.validation.labelRequired":`требуется метка`,"proxy.validation.idPattern":`id должен начинаться с буквы или цифры, далее буквы, цифры, дефис или подчёркивание`,"proxy.validation.hostRequired":`требуется имя хоста`,"proxy.validation.hostPattern":`имя хоста из букв, цифр, точек и дефисов, например home.example.com`,"proxy.validation.hostTaken":`«{host}» уже направлен на этот путь`,"proxy.validation.pathSlash":`префикс пути начинается с /`,"proxy.validation.pathSpace":`префикс пути не может содержать пробел`,"proxy.validation.idTaken":`id маршрута «{id}» используется дважды`,"proxy.validation.workspaceRequired":`выберите рабочее пространство, которому принадлежит сервер`,"proxy.validation.serverRequired":`выберите сервер в этом рабочем пространстве`,"proxy.validation.url":`восходящий узел вида http://10.0.0.5:8080`,"proxy.view.title":`Обратный прокси`,"proxy.view.description":`Открывайте свои серверы через домены, с автоматическим HTTPS через 80/443 или DNS-проверку.`,"proxy.view.dnsNote":`Для DNS-01 добавьте DNS-провайдера домена в любое рабочее пространство в разделе «Настройки рабочего пространства» → Dynamic DNS; тогда маршрут сможет выбрать эту учётную запись из любого рабочего пространства.`,"proxy.view.readFailed":`Не удалось прочитать данные обратного прокси`,"proxy.view.reading":`Чтение обратного прокси…`,"proxy.view.engineInstalled":`Движок установлен`,"proxy.view.engineStarting":`Движок запускается`,"proxy.view.engineStopping":`Движок останавливается`,"proxy.view.configApplied":`Конфигурация применена`,"proxy.view.configReverted":`Конфигурация откачена`,"proxy.view.settingsSaved":`Настройки сохранены.`,"proxy.view.settingsSavedToast":`Настройки сохранены`,"proxy.view.retryFailed":`повторная попытка не удалась`,"proxy.view.retryAsked":`у CA снова запрашивается сертификат для {host}`,"proxy.view.fieldChanged":`поле изменено`,"proxy.view.fieldsChanged":`поля изменены`,"proxy.view.noChanges":`Нет несохранённых изменений`,"proxy.view.discard":`Отменить изменения`,"proxy.view.save":`Сохранить настройки`,"serverCard.open":`Открыть {url}`,"serverCard.adoptedHint":`Этот процесс заменил сам себя: панель приняла преемника, а не запустила вторую копию. Остановка всё ещё работает, его вывод остаётся там, куда его направил преемник.`,"serverCard.detached":`отсоединён`,"serverCard.persistentHint":"Этот элемент работает под управлением собственной няни (nanny), поэтому продолжает работать, когда панель останавливается, перезапускается или уничтожается. `home-hosted down` сообщает о нём, а не останавливает его; останавливает только явная команда.","serverCard.persistent":`постоянный`,"serverCard.disabled":`отключён`,"serverCard.autostart":`автозапуск`,"serverCard.healthProbe":`Проверка исправности`,"serverCard.notProbed":`не проверялся`,"serverCard.restarts":`Перезапуски`,"serverCard.pid":`PID`,"serverCard.rss":`RSS`,"serverCard.procs":`Процессы`,"serverCard.portFree":`свободен`,"serverCard.portInUse":`занят`,"serverCard.uptime24h":`24 ч работы`,"serverCard.probe":`Проверка`,"serverCard.crashes24h":`Аварии за 24 ч`,"serverCard.lastCrash":`Последняя авария`,"serverCard.unhealthyFor":`Неисправен уже {duration}`,"serverCard.nextAttempt":`Следующая попытка {when}`,"serverCard.start":`Запустить`,"serverCard.stop":`Остановить`,"serverCard.restart":`Перезапустить`,"serverCard.detailsHint":`Живые журналы и полная телеметрия`,"serverCard.moreActions":`Дополнительные действия для {label}`,"serverCard.disable":`Отключить сервер`,"serverCard.enable":`Включить сервер`,"serverCard.removeFromAutostart":`Убрать из автозапуска`,"serverCard.autostartWithPanel":`Автозапуск вместе с панелью`,"serverCard.clearLogBuffer":`Очистить буфер журнала`,"serverCard.removeServer":`Удалить сервер`,"serverCard.removeTitle":`Удалить этот сервер?`,"serverCard.removeDescription":`{label} удаляется из servers.config.json: его процесс останавливается, а журналы и история аварий удаляются вместе с ним.`,"serverCard.statusField":`состояние`,"serverForm.workingDirectory":`Рабочий каталог`,"serverForm.cwdHint":`Относительные пути разрешаются внутри projectDir.`,"serverForm.arguments":`Аргументы`,"serverForm.portHint":`Пусто означает, что у сервера нет порта для проверки или предварительного контроля.`,"serverForm.bindAddress":`Адрес привязки`,"serverForm.autostart":`Автозапуск вместе с up`,"serverForm.autostartHint":`Запускать его при каждом подъёме управляющего узла.`,"serverForm.persistent":`Постоянный`,"serverForm.persistentHint":"Продолжает работать, когда панель останавливается; `down` сообщает о нём, а не останавливает его.","serverForm.envHint":`KEY=value по строке на переменную, экспортируется в процесс.`,"serverForm.dataEnvs":`Переменные данных`,"serverForm.dataEnvsHint":`ENV=путь по строке — экспортируется в процесс и автоматически резервируется.`,"serverForm.envFile":`Файл окружения`,"serverForm.envFilePlaceholder":`необязательный файл KEY=value`,"serverForm.envFileHint":`Загружается при запуске; его значения переопределяют env.`,"serverForm.dependsOn":`Зависит от`,"serverForm.dependsOnHint":`Через запятую; запускаются первыми и ожидаются до исправности, останавливаются последними.`,"serverForm.backupPaths":`Дополнительные пути резервных копий`,"serverForm.backupPathsHint":`По одному на строку, подстановки допускаются; переменные данных и так включаются.`,"serverForm.backupIgnore":`Игнорировать известные генерируемые файлы при резервировании`,"serverForm.backupIgnoreHint":`Пропускает node_modules, dist, .next и прочие кэши, из которых ничего не восстанавливается.`,"serverForm.bootstrap":`Bootstrap`,"serverForm.bootstrapDescription":`Разовый командный запуск перед первым стартом — установки, миграции, загрузки.`,"serverForm.runBootstrap":`Выполнить bootstrap`,"serverForm.bootstrapHint":`Выключено означает, что у элемента его нет и ключ отправляется как null.`,"serverForm.timeoutMs":`Тайм-аут (мс)`,"serverForm.runOnce":`Только раз за сеанс`,"serverForm.runOnceHint":`Выключено означает, что он выполняется при каждом запуске.`,"serverForm.bootstrapArgs":`Аргументы bootstrap`,"serverForm.bootstrapArgsHint":`По одному на строку; те же подстановки, что и у основных аргументов.`,"serverForm.bootstrapEnv":`Окружение bootstrap`,"serverForm.bootstrapEnvHint":`KEY=value по строке, экспортируется только в процесс bootstrap.`,"serverForm.onPortConflict":`При конфликте портов`,"serverForm.logBufferLines":`Строк в буфере журнала`,"serverForm.maxRssMb":`Макс. RSS (МБ)`,"serverForm.maxRssHint":`Перезапуск при превышении; пусто или 0 отключает.`,"serverForm.enabledHint":`Выключено сохраняет элемент в конфигурации, но отказывается его запускать.`,"settings.auth.policyTitle":`Политика доступа`,"settings.auth.policyDescription":`Аутентификация действует независимо от того, слушает панель loopback или открыта в сеть.`,"settings.auth.requirePassword":`Требовать пароль`,"settings.auth.requirePasswordHint":`Для каждого запроса нужен сеанс с выполненным входом.`,"settings.auth.sessionLifetime":`Время жизни сеанса (мс)`,"settings.auth.sessionLifetimeHint":`Тайм-аут простоя: 604800000 — это неделя без активности. Каждый запрос продлевает его.`,"settings.auth.cookieSecure":`Cookie Secure`,"settings.auth.cookieSecureAuto":`Авто — только по HTTPS`,"settings.auth.cookieSecureAlways":`Всегда`,"settings.auth.cookieSecureNever":`Никогда — обычный HTTP`,"settings.auth.trustProxy":`За обратным прокси`,"settings.auth.trustProxyOff":`Нет — игнорировать x-forwarded-*`,"settings.auth.trustProxyLoopback":`Да, только с этой машины`,"settings.auth.trustProxyAny":`Да, от любого вызывающего`,"settings.auth.trustProxyHint":`Доверять x-forwarded-* для адреса клиента и протокола. «Только с этой машины» — безопасный выбор для прокси на том же хосте. «От любого вызывающего» верит собственному заголовку вызывающего, поэтому блокировка входа считается по подделанному адресу и её можно обойти.`,"settings.auth.maxLoginAttempts":`Макс. попыток входа`,"settings.auth.maxLoginAttemptsHint":`Неудачные попытки до временной блокировки.`,"settings.auth.lockout":`Блокировка (мс)`,"settings.auth.apiTokenSet":`API-токен задан`,"settings.auth.apiTokenMissing":`Нет API-токена`,"settings.auth.apiTokenNote":`Скрипты могут вызывать API с помощью {code} вместо входа в систему.`,"settings.auth.noTokenNote":`Для shell-скриптов и агентов создайте его командой {command}.`,"settings.auth.defaultPasswordTitle":`Всё ещё используется пароль по умолчанию`,"settings.auth.defaultPasswordText":`Задайте собственный пароль ниже. До этого прослушивание за пределами {address} отклоняется.`,"settings.auth.blockedTitle":`Этот прослушиватель отклоняется`,"settings.auth.noPasswordTitle":`Аутентификация включена, но пароль не задан`,"settings.auth.noPasswordText":`Пока ничего не требуется, и прослушивание за пределами {address} остаётся отклонённым, пока нет пароля.`,"settings.auth.exposedTitle":`Доступна за пределами 127.0.0.1`,"settings.auth.exposedText":`Держите пароль надёжным или поставьте перед панелью прокси, завершающий TLS.`,"settings.auth.changePassword":`Сменить пароль`,"settings.auth.setPassword":`Задать пароль`,"settings.auth.passwordDescription":`Хранится как scrypt-хеш в файле секретов, никогда в конфигурации.`,"settings.auth.currentPassword":`Текущий пароль`,"settings.auth.newPassword":`Новый пароль`,"settings.auth.repeatPassword":`Повторите новый пароль`,"settings.auth.passwordMismatch":`Два пароля не совпадают.`,"settings.auth.updatePassword":`Обновить пароль`,"settings.auth.setPasswordAndEnable":`Задать пароль и включить аутентификацию`,"settings.auth.clearPassword":`Очистить пароль`,"settings.auth.clearPasswordConfirm":`Подтвердить очистку`,"settings.auth.clearPasswordTitle":`Очистить пароль?`,"settings.auth.clearPasswordHint":`Вместе с ним отключается аутентификация, и любой, кто дотянется до панели, попадёт прямо внутрь.`,"settings.auth.shortPasswordTitle":`Это короткий пароль`,"settings.auth.shortPasswordText":`Он допускается, но длина — единственное, что стоит между сетью и этой панелью.`,"settings.auth.passwordUpdated":`Пароль обновлён. Другие сеансы были завершены.`,"settings.auth.passwordCleared":`Пароль очищен, аутентификация отключена.`,"settings.backup.createTitle":`Создать резервную копию`,"settings.backup.createDescription":`Выберите, что захватывает этот архив. Ничего не записывается, пока вы его не создадите.`,"settings.backup.chooseItems":`Выбрать элементы`,"settings.backup.partialCapture":`Захватываются только выбранные элементы.`,"settings.backup.withoutGlobalSettings":`Без глобальных настроек восстановление может разместить рабочее пространство только там, где целевая панель его уже объявляет.`,"settings.backup.password":`Пароль (необязательно)`,"settings.backup.passwordHint":`Шифрует архив; при восстановлении запрашивается тот же пароль.`,"settings.backup.create":`Создать резервную копию`,"settings.backup.chooseItemsFor":`{label} — выбрать элементы`,"settings.backup.subDescription":`Рабочее пространство можно захватить целиком или только его настройки, серверы, секреты и объявленные пути данных.`,"settings.backup.selectedOf":`выбрано {selected} из {total}`,"settings.backup.nothingSelectable":`Это рабочее пространство пока ничего не объявляет для выбора.`,"settings.backup.apply":`Применить`,"settings.backup.created":`Резервная копия создана.`,"settings.backup.leafSettingsHint":`Серверные значения по умолчанию, хранение журналов и уведомления`,"settings.backup.leafServersHint":`Каждая запись в servers.config.json`,"settings.backup.leafSecretsHint":`Токен бота Telegram и учётные данные DDNS`,"settings.backup.leafDataHint":`Объявленный путь данных`,"settings.backup.pathFromOrigin":`{path} — из {origin}`,"settings.backup.entrySettingsHint":`Прослушиватель, аутентификация, показатели хоста и политика резервных копий`,"settings.backup.entrySecretsHint":`Хеш пароля и хеш API-токена`,"settings.backup.entryTlsHint":`Собственная пара сертификатов панели`,"settings.backup.entryWorkspaceHint":`Его настройки, серверы, секреты и объявленные пути данных`,"settings.backup.entryGlobalSettings":`Общие настройки`,"settings.backup.entryGlobalSecrets":`Общие секреты (пароль, API-токен)`,"settings.backup.entryTlsCertificate":`Сертификат TLS`,"settings.backup.leafSettings":`Настройки`,"settings.backup.leafServers":`Серверы`,"settings.backup.leafSecrets":`Секреты`,"settings.backup.secretPassword":`Пароль`,"settings.backup.secretPasswordHint":`Хеш собственного пароля панели; его восстановление возвращает прежний пароль`,"settings.backup.secretApiToken":`API-токен`,"settings.backup.secretApiTokenHint":`Долгоживущий токен, который используют скрипты и агенты`,"settings.backup.secretTelegram":`Токен бота Telegram`,"settings.backup.secretTelegramHint":`Используется для уведомлений`,"settings.backup.secretDdns":`Учётные данные DDNS`,"settings.backup.secretDdnsHint":`Учётные данные провайдера, хранимые запечатанными вместе с ключом`,"settings.backup.restoreItemLabel":`{workspace}: {item}`,"settings.backup.noteMissing":`ещё не существует`,"settings.backup.noteCovered":`покрыто {path}`,"settings.backup.noteAlreadyDeclared":`уже объявлено в {origin}`,"settings.backup.noteContainsBackupDir":`содержит каталог резервных копий`,"settings.backup.noteUnknownWorkspace":`неизвестное рабочее пространство`,"settings.backup.noteMissingFromArchive":`отсутствует в архиве`,"settings.backup.noteDeclaredByBackup":`объявлено конфигурацией резервной копии, которая не восстанавливается`,"settings.backup.noteNotDeclared":`не объявлено ни этой конфигурацией, ни резервной копией`,"settings.backup.noteRestoredFrom":`восстановлено из {path}`,"settings.backups.policyTitle":`Политика`,"settings.backups.policyDescription":`Сколько архивов хранит панель и какие дополнительные пути захватывает каждый из них.`,"settings.backups.allow":`Разрешить резервные копии`,"settings.backups.allowHint":`Выключено останавливает новые архивы; всё, что уже на диске, остаётся доступным для скачивания и восстановления.`,"settings.backups.offTitle":`Резервные копии выключены`,"settings.backups.offText":`Ничего нового не архивируется, пока это не будет включено снова. Архивы ниже по-прежнему можно скачать, восстановить и удалить.`,"settings.backups.keep":`Хранить`,"settings.backups.keepHint":`Старые архивы удаляются после каждой резервной копии.`,"settings.backups.extraPaths":`Дополнительные пути`,"settings.backups.extraPathsHint":`Через запятую, захватываются в каждом архиве сверх того, что объявляет каждое рабочее пространство.`,"settings.backups.extraPathsPlaceholder":`{home}/myapp-data`,"settings.backups.archiveDirectory":`Каталог архивов`,"settings.backups.copyArchiveDirectory":`Скопировать каталог архивов`,"settings.backups.changeDirectory":`Его изменение — решение на уровне файлов: отредактируйте {path}.`,"settings.backups.theSettingsFile":`файл настроек`,"settings.backups.capturesTitle":`Что захватывает резервная копия`,"settings.backups.capturesDescription":`Выберите это в диалоге создания. Рабочее пространство можно взять целиком или только его настройки, серверы, секреты и объявленные пути данных.`,"settings.backups.nothingSelectable":`Пока ничего нельзя выбрать.`,"settings.backups.fromOrigin":`из {origin}`,"settings.backups.notCaptured":`не захвачено`,"settings.backups.generatedSkipped":`генерируемые каталоги пропущены`,"settings.backups.included":`включено`,"settings.backups.skipped":`пропущено`,"settings.backups.workspacesNote":`Эта панель обслуживает {count} рабочих пространств; каждое — отдельная запись для выбора.`,"settings.backups.archivesTitle":`Архивы`,"settings.backups.archivesDescription":`Хранятся в каталоге резервных копий и доступны для скачивания в любой момент.`,"settings.backups.create":`Создать резервную копию…`,"settings.backups.restore":`Восстановить…`,"settings.backups.noArchives":`Архивов пока нет`,"settings.backups.noArchivesEnabled":`Создайте её сейчас, чтобы захватить панель и выбранные рабочие пространства.`,"settings.backups.noArchivesDisabled":`Пока ничего не архивировано, а резервные копии выключены.`,"settings.backups.encrypted":`зашифровано`,"settings.backups.download":`Скачать`,"settings.backups.restoreAction":`Восстановить`,"settings.backups.confirmDelete":`Подтвердить удаление`,"settings.backups.deleted":`{name} удалён.`,"settings.backups.kindSettings":`настройки`,"settings.backups.kindServers":`серверы`,"settings.backups.kindSecrets":`секреты`,"settings.backups.kindTls":`tls`,"settings.backups.kindData":`данные`,"settings.backups.kindWorkspace":`рабочее пространство`,"settings.ddns.statePending":`Ожидание`,"settings.ddns.stateOk":`Обновлено`,"settings.ddns.stateUnchanged":`Актуально`,"settings.ddns.stateSkipped":`Пропущено`,"settings.ddns.stateError":`Не удалось`,"settings.ddns.passFinished":`Проход Dynamic DNS завершён`,"settings.ddns.credentialsSaved":`Учётные данные сохранены для {account}`,"settings.ddns.credentialsRemoved":`Учётные данные удалены для {account}`,"settings.ddns.loadErrorTitle":`Не удалось загрузить настройки Dynamic DNS`,"settings.ddns.title":`Dynamic DNS`,"settings.ddns.description":`Держите эти имена хостов указывающими на публичный адрес этой машины. Учётные данные лежат в файле секретов, никогда в servers.config.json.`,"settings.ddns.checking":`проверка`,"settings.ddns.needsAttention":`требует внимания`,"settings.ddns.watching":`наблюдение`,"settings.ddns.updateNow":`Обновить сейчас`,"settings.ddns.enabled":`Поддерживать Dynamic DNS в актуальном состоянии`,"settings.ddns.enabledHint":`Проход выполняется с интервалом ниже; провайдер вызывается только тогда, когда адрес действительно изменился.`,"settings.ddns.interval":`Проверять каждые (мс)`,"settings.ddns.intervalHint":`60000 — это одна минута; значение по умолчанию — пять.`,"settings.ddns.ttl":`TTL (с)`,"settings.ddns.ttlHint":`1 означает автоматически там, где провайдер это поддерживает.`,"settings.ddns.detectIpv4":`Определять IPv4`,"settings.ddns.detectIpv4Hint":`Нужно для записей A.`,"settings.ddns.detectIpv6":`Определять IPv6`,"settings.ddns.detectIpv6Hint":`Нужно для записей AAAA.`,"settings.ddns.accountsTitle":`Учётные записи провайдеров`,"settings.ddns.accountsDescription":`Одна запись на API-токен. Учётные данные хранятся на сервере и никогда не возвращаются.`,"settings.ddns.credentialsSet":`учётные данные сохранены`,"settings.ddns.noCredentials":`нет учётных данных`,"settings.ddns.credentials":`Учётные данные`,"settings.ddns.removeAccountBlocked":`Сначала удалите имена хостов, использующие эту учётную запись`,"settings.ddns.noAccounts":`Учётных записей пока нет. Выберите провайдера и добавьте её.`,"settings.ddns.provider":`Провайдер`,"settings.ddns.accountId":`Id учётной записи`,"settings.ddns.accountIdPlaceholder":`cloudflare-home`,"settings.ddns.accountIdHint":"Id учётной записи называет её и служит ключом для сохранённых учётных данных; строчные буквы, цифры, `-` и `_`.","settings.ddns.hostnamesTitle":`Имена хостов`,"settings.ddns.hostnamesDescription":`Весь список для поддержания в актуальном состоянии — suba.domain.com, domain.xyz и так далее.`,"settings.ddns.account":`Учётная запись`,"settings.ddns.recordA":`A (IPv4)`,"settings.ddns.recordAaaa":`AAAA (IPv6)`,"settings.ddns.aaaaUnsupported":`Этот провайдер не умеет управлять записями AAAA.`,"settings.ddns.proxied":`Проксируется`,"settings.ddns.proxiedHint":`Cloudflare отдаёт эту запись через собственную сеть.`,"settings.ddns.ipv6Off":`Определение IPv6 выключено`,"settings.ddns.advanced":`Дополнительно`,"settings.ddns.advancedHint":`зарегистрированный домен и переопределение TTL`,"settings.ddns.registeredDomain":`Зарегистрированный домен`,"settings.ddns.registeredDomainPlaceholder":`example.co.uk`,"settings.ddns.registeredDomainHint":`Только когда провайдеру нужно сообщить apex, например для доменов из трёх меток.`,"settings.ddns.ttlOverride":`Переопределение TTL (с)`,"settings.ddns.ttlOverrideHint":`Пусто использует значение выше.`,"settings.ddns.noHostnames":`Имён хостов пока нет.`,"settings.ddns.hostnamePlaceholder":`home.example.com`,"settings.ddns.lastPass":`Последний проход`,"settings.ddns.ipv4Value":`IPv4 {address}`,"settings.ddns.ipv6Value":`IPv6 {address}`,"settings.ddns.type":`Тип`,"settings.ddns.state":`Состояние`,"settings.ddns.address":`Адрес`,"settings.ddns.detail":`Детали`,"settings.ddns.credentialsTitle":`Учётные данные провайдера`,"settings.ddns.credentialsDescription":`Сохранённые поля никогда не отправляются обратно. Сохранение заменяет все поля этой учётной записи и сразу выполняет проход.`,"settings.ddns.optional":`Необязательно.`,"settings.ddns.whereToGet":`Где их взять`,"settings.ddns.forget":`Забыть`,"settings.ddns.forgetConfirm":`Забыть их`,"settings.ddns.forgetTitle":`Забыть сохранённые учётные данные?`,"settings.ddns.forgetHint":`Они удаляются с диска, и прочитать их обратно нельзя; их придётся вставить заново.`,"settings.ddns.saveCredentials":`Сохранить учётные данные`,"settings.defaults.title":`Серверные значения по умолчанию`,"settings.defaults.description":`Применяются к каждой записи, которая не задаёт собственное значение.`,"settings.defaults.enabledHint":`Новые записи создаются включёнными.`,"settings.defaults.autostart":`Автозапуск вместе с панелью`,"settings.defaults.bind":`Привязка`,"settings.defaults.bindLocal":`Локально — 127.0.0.1`,"settings.defaults.bindLan":`LAN — 0.0.0.0`,"settings.defaults.onPortConflict":`При конфликте портов`,"settings.defaults.conflictBlock":`Блокировать запуск`,"settings.defaults.conflictWarn":`Предупредить и всё равно запустить`,"settings.defaults.conflictFollow":`Следовать за отсоединённым перезапуском самого себя`,"settings.defaults.conflictReclaim":`Заменить отсоединённый перезапуск управляемой копией`,"settings.defaults.conflictKill":`Завершить всё, что занимает порт`,"settings.defaults.logBufferLines":`Строк в буфере журнала`,"settings.defaults.logBufferLinesHint":`Хранится в памяти для каждого сервера.`,"settings.host.title":`Пороги`,"settings.host.description":`Порог 0 отключает это оповещение. Превышения уведомляют один раз и ещё раз при восстановлении.`,"settings.host.enabled":`Опрошивать эту машину`,"settings.host.enabledHint":`Нагрузка, память, подкачка, диск и температура ЦП, с интервалом ниже.`,"settings.host.interval":`Интервал (мс)`,"settings.host.intervalHint":`Как часто опрашивается хост и проверяются оповещения.`,"settings.host.diskPaths":`Пути для диска`,"settings.host.diskPathsHint":`Через запятую; шаблоны вроде {home} раскрываются.`,"settings.host.diskUsed":`Диск занят (%)`,"settings.host.memoryUsed":`Память занята (%)`,"settings.host.swapUsed":`Подкачка занята (%)`,"settings.host.zeroDisables":`0 отключает оповещение.`,"settings.host.loadPerCpu":`Нагрузка на ЦП`,"settings.host.loadPerCpuHint":`Средняя нагрузка за 1 минуту, делённая на число ядер.`,"settings.host.tempCelsius":`Температура ЦП (°C)`,"settings.host.tempCelsiusHint":`Только Linux; игнорируется там, где ОС её не предоставляет.`,"settings.host.breachingNow":`Превышено сейчас:`,"settings.host.nothingBreaching":`Сейчас ничего не превышено.`,"settings.interface.title":`Интерфейс`,"settings.interface.description":`Панель — это статический сайт: оставьте штатный или отдавайте собственную сборку из каталога состояния.`,"settings.interface.currentlyServing":`Сейчас отдаётся`,"settings.interface.copyDirectory":`Скопировать каталог UI`,"settings.interface.fileCount":`{count} файлов`,"settings.interface.sourceStock":`штатный`,"settings.interface.sourceCustom":`свой`,"settings.interface.unnamed":`без имени`,"settings.interface.panelVersion":`Версия панели`,"settings.interface.copyPanelVersion":`Скопировать версию панели`,"settings.interface.panelVersionHint":`Выпуск, который выполняет этот процесс панели — {command} выводит то же число.`,"settings.interface.panelName":`Имя панели`,"settings.interface.panelNameHint":`Показывается в боковой панели штатным UI. Собственный UI может показывать своё имя.`,"settings.interface.uploadLabel":`Загрузить сборку UI (.zip с index.html)`,"settings.interface.docsHint":`См. {docs} о контракте API. Если собственный UI ломает панель, {command} вернёт штатный из терминала.`,"settings.interface.resetName":`Сбросить имя`,"settings.interface.confirmRevert":`Подтвердить возврат`,"settings.interface.revertToStock":`Вернуть штатный`,"settings.interface.install":`Установить UI`,"settings.interface.installed":`UI заменён на {name} — обновите страницу`,"settings.interface.yourBuild":`ваша сборка`,"settings.interface.restored":`штатный UI восстановлен — обновите страницу`,"settings.interface.nothingInstalled":`собственный UI не был установлен`,"settings.listener.title":`Прослушиватель`,"settings.listener.description":`Где панель отвечает. Перенос перезапускает панель и отправляет эту страницу на новый адрес.`,"settings.listener.port":`Порт управления`,"settings.listener.portHint":`По умолчанию 3999.`,"settings.listener.bind":`Привязка`,"settings.listener.bindLocal":`Локально`,"settings.listener.bindLan":`LAN`,"settings.listener.bindCustom":`Свой`,"settings.listener.bindLanHint":`0.0.0.0 — доступно из всей сети.`,"settings.listener.bindLocalHint":`127.0.0.1 — только эта машина.`,"settings.listener.bindCustomHint":`Конкретный адрес интерфейса, который вы вводите ниже.`,"settings.listener.ipv4":`Адрес IPv4`,"settings.listener.ipv4Placeholder":`192.168.1.20`,"settings.listener.ipv4Error":`Введите адрес IPv4, например 192.168.1.20.`,"settings.listener.ipv4Hint":`Для прослушивания за пределами 127.0.0.1 нужен настоящий пароль.`,"settings.listener.openBrowser":`Открывать браузер при запуске панели`,"settings.listener.liveAddress":`Текущий адрес`,"settings.listener.restartRequired":`требуется перезапуск`,"settings.listener.copyLiveAddress":`Скопировать текущий адрес`,"settings.listener.liveAddressHint":`К чему привязан прослушиватель сейчас; сохранённые изменения вступят в силу после повторной привязки панели.`,"settings.logs.title":`Хранение`,"settings.logs.description":`Живой просмотр всегда идёт из памяти; эти файлы переживают перезапуск и питают страницу журналов.`,"settings.logs.persist":`Хранить журналы на диске`,"settings.logs.persistHint":`Выключите, чтобы держать всё только в памяти.`,"settings.logs.maxBytes":`Ротация при (байт)`,"settings.logs.maxBytesHint":`Для каждого сервера, перед переходом к .1, .2, …`,"settings.logs.keep":`Хранить ротированные файлы`,"settings.logs.directory":`Каталог журналов`,"settings.logs.copyDirectory":`Скопировать каталог журналов`,"settings.logs.browseHint":`Просматривайте и скачивайте эти файлы на странице {logs}.`,"settings.paths.dataRoot":`Корень данных`,"settings.paths.dataRootHint":`HHOSTED_HOME — глобальные настройки, рабочие пространства, TLS, резервные копии и UI.`,"settings.paths.globalSettings":`Глобальные настройки`,"settings.paths.globalSettingsHint":`settings.json — прослушиватель, аутентификация, политика TLS, показатели хоста, резервные копии.`,"settings.paths.projectDir":`Каталог проекта`,"settings.paths.projectDirHint":`Основа для относительных путей записей.`,"settings.paths.panelAddress":`Адрес панели`,"settings.paths.panelAddressHint":`Где эта панель управления работает прямо сейчас.`,"settings.paths.serversConfig":`Конфигурация серверов`,"settings.paths.serversConfigHint":`servers.config.json для {label}.`,"settings.paths.workspaceSettings":`Настройки рабочего пространства`,"settings.paths.workspaceSettingsHint":`Серверные значения по умолчанию, хранение журналов, уведомления, DDNS.`,"settings.paths.logs":`Журналы`,"settings.paths.logsHint":`Сохранённый вывод для этого рабочего пространства.`,"settings.paths.copyPath":`Скопировать {label}`,"settings.paths.whereThingsLive":`Где что лежит`,"settings.paths.whereThingsLiveDescription":`Только чтение. Копируйте путь прямо в оболочку или редактор.`,"settings.paths.workspaceFiles":`Файлы рабочего пространства`,"settings.paths.workspaceFilesDescription":`Каждое рабочее пространство владеет своей конфигурацией, настройками и каталогом журналов; между ними ничего не разделяется.`,"settings.rebind.failed":`Панель управления не ответила на {target}. Проверьте консоль, чтобы узнать новый прослушиватель.`,"settings.restore.title":`Восстановить резервную копию`,"settings.restore.description":`Ничего не записывается, пока план не применён.`,"settings.restore.archive":`Архив`,"settings.restore.archiveHint":`Сохранённый архив или .zip с этой машины.`,"settings.restore.encryptedName":`{name} — зашифровано`,"settings.restore.uploadOption":`Загрузить файл…`,"settings.restore.archiveFile":`Файл архива (.zip)`,"settings.restore.unchangedTitle":`Пока ничего не изменилось`,"settings.restore.archiveLine":`Архив {name}.`,"settings.restore.uploadedArchive":`Загруженный архив.`,"settings.restore.passwordProtected":`Эта резервная копия защищена паролем.`,"settings.restore.password":`Пароль`,"settings.restore.checkAgain":`Проверить снова с паролем`,"settings.restore.choosePrompt":`Выберите, что восстанавливать — выбрано {selected} из {total}.`,"settings.restore.willRestore":`Будет восстановлено: {items}.`,"settings.restore.skipped":`Пропущено: {items}.`,"settings.restore.nothing":`ничего`,"settings.restore.restartNote":`Собственные настройки панели отличаются, поэтому после этого перезапустите панель.`,"settings.restore.reloadedNote":`Восстановленные рабочие пространства перезагружаются сразу; записи с автозапуском стартуют сами.`,"settings.restore.applyStored":`Применить это восстановление`,"settings.restore.applyUpload":`Восстановить из загруженного файла`,"settings.restore.restored":`Восстановлено элементов: {count}.`,"settings.restore.restoredWithNotes":`Восстановлено элементов: {count} — {notes}.`,"settings.restore.noteReloaded":`восстановленные серверы работают, записи автозапуска стартуют`,"settings.restore.noteRestart":`перезапустите панель, чтобы применить её собственные настройки`,"settings.restore.reasonSymbolicLink":`символическая ссылка, пропущено`,"settings.restore.reasonNotSelected":`не выбрано`,"settings.restore.reasonUnrestorable":`здесь восстановить нельзя`,"settings.restore.reasonInvalidSettings":`настройки в архиве недействительны`,"settings.restore.reasonInvalidServers":`серверы в архиве недействительны`,"settings.shell.noUnsavedChanges":`Нет несохранённых изменений`,"settings.shell.discard":`Отменить изменения`,"settings.shell.save":`Сохранить настройки`,"settings.shell.unsavedTitle":`Несохранённые изменения`,"settings.shell.nothingToSave":`Нечего сохранять.`,"settings.telegram.title":`Telegram`,"settings.telegram.description":`Политика лежит в конфигурации; токен бота — это секрет и никогда не возвращается с сервера.`,"settings.telegram.enabled":`Отправлять уведомления`,"settings.telegram.enabledHint":`Одно сообщение на событие, ограниченное временем ожидания ниже.`,"settings.telegram.chatId":`Id чата`,"settings.telegram.chatIdPlaceholder":`123456789 или @channel`,"settings.telegram.chatIdHint":`Используйте «Определить чаты», чтобы заполнить это из обновлений бота.`,"settings.telegram.cooldown":`Время ожидания на событие (мс)`,"settings.telegram.cooldownHint":`Для каждого сервера и причины, чтобы часто падающий сервер не мог спамить.`,"settings.telegram.onCrash":`Попытки исчерпаны`,"settings.telegram.onUnhealthy":`Порт неисправен`,"settings.telegram.onForcedRestart":`Принудительный перезапуск`,"settings.telegram.onRecovered":`Восстановлен`,"settings.telegram.onHost":`Показатели хоста превышены`,"settings.telegram.onHostHint":`Диск, память, подкачка, нагрузка и температура ЦП, согласно порогам в разделе «Показатели хоста».`,"settings.telegram.onDdns":`Dynamic DNS изменился или дал сбой`,"settings.telegram.onDdnsHint":`Одно сообщение на проход, изменивший запись, и одно для прохода, который завершился сбоем.`,"settings.telegram.botToken":`Токен бота`,"settings.telegram.tokenSet":`токен задан`,"settings.telegram.noToken":`нет токена`,"settings.telegram.tokenNote":`От @BotFather — секрет, никогда в servers.config.json.`,"settings.telegram.tokenPlaceholder":`123456789:AA…`,"settings.telegram.tokenSavedPlaceholder":`Сохранён — введите новый токен, чтобы заменить его`,"settings.telegram.saveToken":`Сохранить токен`,"settings.telegram.detectChats":`Определить чаты`,"settings.telegram.sendTest":`Отправить тест`,"settings.telegram.removeToken":`Удалить токен`,"settings.telegram.removeTokenConfirm":`Подтвердить удаление`,"settings.telegram.removeTokenTitle":`Удалить токен бота?`,"settings.telegram.removeTokenHint":`Уведомления прекратятся, пока вы снова не вставите токен.`,"settings.telegram.tokenSaved":`Токен сохранён.`,"settings.telegram.tokenSavedFor":`Токен сохранён для @{username}.`,"settings.telegram.tokenRemoved":`Токен удалён.`,"settings.telegram.noChats":`Чаты не найдены. Сначала отправьте боту /start, затем определите снова.`,"settings.telegram.testSent":`Тестовое сообщение отправлено.`,"settings.telegram.testFailed":`Тестовое сообщение не удалось отправить.`,"settings.telegram.chatsSeen":`Чаты, которые видел бот:`,"settings.telegram.lastSend":`Последняя отправка: {result}`,"settings.tls.title":`HTTPS`,"settings.tls.description":`Загрузите пару PEM, и панель начнёт отдавать TLS на своём прослушивателе. Самоподписанный сертификат вполне годится для домашней сети.`,"settings.tls.serve":`Отдавать панель по HTTPS`,"settings.tls.serveHint":`Сохраняется вместе с «Сохранить настройки»; панель перепривязывается, и эта страница следует за ней.`,"settings.tls.certificateTitle":`Сертификат`,"settings.tls.certificateDescription":`Сертификат в кодировке PEM и его закрытый ключ. Оба остаются в файле секретов.`,"settings.tls.unusableTitle":`Сохранённый сертификат нельзя использовать`,"settings.tls.subject":`Субъект`,"settings.tls.issuer":`Издатель`,"settings.tls.validUntil":`Действителен до`,"settings.tls.days":`{count} дней`,"settings.tls.privateKey":`Закрытый ключ`,"settings.tls.keyMatches":`соответствует сертификату`,"settings.tls.keyMismatch":`не соответствует`,"settings.tls.fingerprint":`Отпечаток`,"settings.tls.copyFingerprint":`Скопировать отпечаток`,"settings.tls.noCertificateTitle":`Сертификат не загружен`,"settings.tls.noCertificateText":`Загрузите ниже сертификат PEM и ключ, затем сохраните. HTTPS не отдаётся, пока нет сертификата.`,"settings.tls.certFile":`Файл сертификата (.pem, .crt)`,"settings.tls.keyFile":`Файл закрытого ключа (.pem, .key)`,"settings.tls.pasteCertificate":`Или вставьте сертификат`,"settings.tls.pasteKey":`Или вставьте закрытый ключ`,"settings.tls.saveCertificate":`Сохранить сертификат`,"settings.tls.removeCertificate":`Удалить сертификат`,"settings.tls.confirmRemove":`Подтвердить удаление`,"settings.tls.removeTitle":`Удалить сертификат?`,"settings.tls.removeHint":`TLS остаётся включённым, но отдавать нечего, поэтому после повторной привязки прослушивателя панель вернётся к http.`,"settings.tls.stored":`Сертификат сохранён.`,"settings.tls.removed":`Сертификат удалён.`,"status.stopped":`Остановлен`,"status.starting":`Запускается`,"status.running":`Работает`,"status.stopping":`Останавливается`,"status.backoff":`Перезапускается`,"status.crashed":`Аварийно завершился`,"status.conflict":`Конфликт портов`,"theme.label":`Тема: {theme}`,"theme.light":`светлая`,"theme.dark":`тёмная`,"theme.system":`системная`,"topbar.search":`Поиск или выполнение команды`,"topbar.openNavigation":`Открыть навигацию`,"topbar.commandPalette":`Палитра команд`,"topbar.account":`Учётная запись`,"topbar.signedIn":`Выполнен вход`,"topbar.signOut":`Выйти`,"topbar.workspaceLabel":`Рабочее пространство: {name}`,"validation.port":`Порт должен быть целым числом от 1 до 65535.`,"validation.idRequired":`Требуется id — это ключ, под которым живёт сервер.`,"validation.idPattern":`Id должен начинаться со строчной буквы или цифры и содержать только строчные буквы, цифры, дефисы и подчёркивания.`,"validation.commandRequired":`Требуется команда — исполняемый файл, который запускает супервизор.`,"validation.bootstrapCommand":`Для bootstrap нужна команда для запуска.`,"views.actions.addAServer":`Добавить сервер`,"views.actions.addServer":`Добавить сервер`,"views.actions.startAll":`Запустить все`,"views.actions.stopAll":`Остановить все`,"views.common.thisWorkspace":`это рабочее пространство`,"views.globalOverview.configError":`Не удалось прочитать конфигурацию: {error}`,"views.globalOverview.degraded":`деградация`,"views.globalOverview.description":`Показатели хоста и все серверы из всех рабочих пространств, сгруппированные по месту размещения.`,"views.globalOverview.emptyDescription":`Выберите рабочее пространство в верхней панели и добавьте первый процесс, который оно должно поддерживать.`,"views.globalOverview.emptyTitle":`Серверов пока нигде нет`,"views.globalOverview.groupEmptyDescription":`Добавьте один, и он появится здесь и на странице рабочего пространства.`,"views.globalOverview.groupRunning":`{running}/{total} работают`,"views.globalOverview.hostUptime":`Время работы хоста`,"views.globalOverview.hostVitals":`Показатели хоста`,"views.globalOverview.hostVitalsNote":`Эта машина, общая для всех рабочих пространств.`,"views.globalOverview.openWorkspace":`Открыть рабочее пространство`,"views.globalOverview.panelUptime":`Время работы панели`,"views.globalOverview.samplingOff":`опрос выключен`,"views.globalOverview.samplingOn":`опрос включён`,"views.globalOverview.serversTotal":`всего {count} серверов`,"views.globalOverview.serving":`обслуживание`,"views.globalOverview.workspaces":`Рабочие пространства`,"views.globalSettings.authenticationDescription":`Кому разрешено входить в эту панель и как проверяется доверие к сеансу.`,"views.globalSettings.backupsDescription":`Один архив на захват, охватывающий панель и любое выбранное рабочее пространство.`,"views.globalSettings.changesDescription":`Что «Сохранить» записало бы в файл настроек панели.`,"views.globalSettings.description":`Прослушиватель, доступ, показатели хоста, резервные копии, TLS и пути для этой панели — общие для всех рабочих пространств.`,"views.globalSettings.hostDescription":`Пороги оповещений для собственных ресурсов этой машины.`,"views.globalSettings.interfaceDescription":`Отдавайте собственный UI панели вместо штатного.`,"views.globalSettings.languageDescription":`Язык, на котором показывается эта панель, для этого браузера.`,"views.globalSettings.languageNote":`Ваш выбор хранится в этом браузере и применяется также к странице входа. Он не меняет собственный вывод журнала панели и её сообщения API.`,"views.globalSettings.listenerDescription":`Где слушает панель управления и как она себя объявляет.`,"views.globalSettings.loadErrorTitle":`Некоторые значения, хранимые только в файле, не удалось загрузить`,"views.globalSettings.navLabel":`Разделы глобальных настроек`,"views.globalSettings.pathsDescription":`Где home-hosted хранит свои файлы — глобально и для каждого рабочего пространства.`,"views.globalSettings.saveFailed":`Не удалось сохранить настройки.`,"views.globalSettings.saved":`Настройки сохранены.`,"views.globalSettings.savedRebinding":`Настройки сохранены — панель переходит на новый адрес.`,"views.globalSettings.savedToast":`Настройки сохранены`,"views.globalSettings.sectionAuthentication":`Аутентификация`,"views.globalSettings.sectionBackups":`Резервные копии`,"views.globalSettings.sectionHost":`Показатели хоста`,"views.globalSettings.sectionInterface":`Интерфейс`,"views.globalSettings.sectionListener":`Прослушиватель`,"views.globalSettings.sectionPaths":`Пути`,"views.globalSettings.sectionTls":`TLS`,"views.globalSettings.title":`Глобальные настройки`,"views.globalSettings.tlsDescription":`Отдавайте панель по HTTPS с собственным сертификатом.`,"views.logs.allStreams":`Все потоки`,"views.logs.clear":`Очистить`,"views.logs.clearDescription":`{server} — файл на диске усекается. Процесс продолжает работать, и новые строки записываются начиная с этого места.`,"views.logs.clearFile":`Очистить файл`,"views.logs.clearNote":`Сначала скачайте его, если вывод ещё нужен — отменить это из панели нельзя.`,"views.logs.clearTitle":`Очистить сохранённый файл журнала?`,"views.logs.fileEmpty":`Сохранённый файл пуст.`,"views.logs.loadedLines":`загружено {count} строк`,"views.logs.modeLive":`Живой поток`,"views.logs.modePersisted":`Сохранённое`,"views.logs.noServersDescription":`Добавьте один, и его вывод будет сохраняться здесь.`,"views.logs.noServersTitle":`Нет серверов`,"views.logs.nothingOnDisk":`Для этого сервера на диске ничего нет — сохранение выключено или он ещё ничего не записал.`,"views.logs.nothingPersisted":`ничего не сохранено`,"views.logs.persistedSummary":`{workspace} · {persisted} из {total} серверов на диске · {size}`,"views.logs.persistedTitle":`Сохранённые журналы`,"views.logs.pickServerDescription":`Сохранённый вывод и живые потоки ведутся по каждому серверу. Выберите один из списка.`,"views.logs.pickServerTitle":`Выберите сервер`,"views.logs.reload":`Перезагрузить`,"views.logs.retentionNote":`Ротация и хранение задаются в разделе «Настройки рабочего пространства» → «Журналы».`,"views.logs.searchAria":`Искать в журнале`,"views.logs.searchPlaceholder":`искать в окне хвоста`,"views.logs.searchedLines":`просмотрено {count} строк`,"views.logs.streamAria":`Поток`,"views.logs.tailAria":`Размер хвоста`,"views.logs.waitingOutput":`Подключено — ожидание вывода.`,"views.overview.acrossTree":`по всему дереву`,"views.overview.cpuNow":`{value}% ЦП сейчас`,"views.overview.crashedOrUnhealthy":`авария или неисправность`,"views.overview.description":`Живое состояние каждого сервера в этом рабочем пространстве, обновляемое через один поток событий.`,"views.overview.emptyDescription":`Добавьте первый процесс, который это рабочее пространство должно поддерживать.`,"views.overview.emptyTitle":`В этом рабочем пространстве нет серверов`,"views.overview.enabled":`включено: {count}`,"views.overview.longestUptime":`Наибольшее время работы`,"views.overview.needsAttention":`Требует внимания`,"views.overview.notUp":`не работают: {count}`,"views.overview.nothingBroken":`ничего не сломано`,"views.overview.nothingRunning":`ничего не работает`,"views.overview.openFullList":`Открыть полный список`,"views.overview.peak":`пик {value}`,"views.overview.processMemory":`Память процессов`,"views.overview.recentActivity":`Недавняя активность`,"views.overview.running":`Работает`,"views.overview.sampling":`история ресурсов собирается каждые 5 с и хранится до конца сеанса`,"views.overview.stopped":`Остановлен`,"views.overview.workspaceLabel":`рабочее пространство {id}`,"views.route.server":`Сервер`,"views.serverDetail.allServers":`Все серверы`,"views.serverDetail.autostart":`Автозапуск вместе с панелью`,"views.serverDetail.backToServers":`Назад к серверам`,"views.serverDetail.bind":`Привязка`,"views.serverDetail.bindCustom":`{bind} — свой`,"views.serverDetail.bindLan":`0.0.0.0 — все интерфейсы`,"views.serverDetail.bindLocal":`127.0.0.1 — только эта машина`,"views.serverDetail.closeEditor":`Закрыть редактор`,"views.serverDetail.copyJson":`Скопировать конфигурацию JSON`,"views.serverDetail.crashes24":`Аварии за 24 ч`,"views.serverDetail.dependencies":`Зависимости`,"views.serverDetail.detached":`отсоединён`,"views.serverDetail.detachedHint":`Этот процесс заменил сам себя: панель приняла преемника, а не запустила вторую копию. Остановка всё ещё работает, его вывод остаётся там, куда его направил преемник.`,"views.serverDetail.disableServer":`Отключить сервер`,"views.serverDetail.editHint":`Изменить каждое поле этой записи`,"views.serverDetail.effectiveConfig":`Действующая конфигурация`,"views.serverDetail.effectiveConfigNote":`Значения по умолчанию из настроек уже включены в эти значения.`,"views.serverDetail.enableServer":`Включить сервер`,"views.serverDetail.eventHistory":`История событий`,"views.serverDetail.eventHistoryNote":`Хранится панелью 24 часа.`,"views.serverDetail.fieldArgs":`args`,"views.serverDetail.fieldBackupPaths":`пути резервных копий`,"views.serverDetail.fieldBootstrap":`bootstrap`,"views.serverDetail.fieldCommand":`command`,"views.serverDetail.fieldCwd":`cwd`,"views.serverDetail.fieldDataEnvs":`переменные данных`,"views.serverDetail.fieldDependsOn":`зависит от`,"views.serverDetail.fieldEnv":`env`,"views.serverDetail.fieldEnvFile":`файл окружения`,"views.serverDetail.fieldHealth":`исправность`,"views.serverDetail.fieldLogBuffer":`буфер журнала`,"views.serverDetail.fieldOnPortConflict":`при конфликте портов`,"views.serverDetail.fieldPortBind":`порт · привязка`,"views.serverDetail.fieldRestart":`перезапуск`,"views.serverDetail.fieldRssLimit":`лимит RSS`,"views.serverDetail.fieldStop":`остановка`,"views.serverDetail.fields":`Поля`,"views.serverDetail.goneDescription":`{id} больше нет в servers.config.json. Возможно, он был удалён на другой вкладке.`,"views.serverDetail.goneTitle":`Этот сервер исчез`,"views.serverDetail.health":`Исправность`,"views.serverDetail.healthProbe":`Проверка исправности`,"views.serverDetail.lastCrash":`Последняя авария`,"views.serverDetail.lastProbe":`Последняя проверка`,"views.serverDetail.logBufferLines":`{count} строк`,"views.serverDetail.memoryRss":`Память (RSS)`,"views.serverDetail.moreActions":`Дополнительные действия для {label}`,"views.serverDetail.neverWritten":`Этот сервер ещё ничего не записал.`,"views.serverDetail.nextAttempt":`Следующая попытка`,"views.serverDetail.none":`нет`,"views.serverDetail.off":`выкл.`,"views.serverDetail.persistent":`постоянный`,"views.serverDetail.persistentHint":"Этот элемент работает под управлением собственной няни (nanny), поэтому продолжает работать, когда панель останавливается, перезапускается или уничтожается. `home-hosted down` сообщает о нём, а не останавливает его; останавливает только «Остановить».","views.serverDetail.pid":`PID`,"views.serverDetail.portFree":`свободен`,"views.serverDetail.portInUse":`занят`,"views.serverDetail.portState":`Состояние порта`,"views.serverDetail.probeFailed":`Проверка исправности ещё не прошла.`,"views.serverDetail.probeFailedFor":`Проверка исправности не проходит уже {duration}.`,"views.serverDetail.processes":`Процессы`,"views.serverDetail.rawJson":`Необработанный JSON`,"views.serverDetail.removeAutostart":`Убрать из автозапуска`,"views.serverDetail.removeDescription":`{label} удаляется из servers.config.json: его процесс останавливается, а журналы и история аварий удаляются вместе с ним.`,"views.serverDetail.removeNote":`Отменить это из панели нельзя — запись придётся добавить вручную или из резервной копии.`,"views.serverDetail.removeServer":`Удалить сервер`,"views.serverDetail.removeTitle":`Удалить этот сервер?`,"views.serverDetail.restart":`Перезапустить`,"views.serverDetail.restarts":`Перезапуски`,"views.serverDetail.sectionConfig":`Конфигурация`,"views.serverDetail.sectionHistory":`История`,"views.serverDetail.sectionOutput":`Живой вывод`,"views.serverDetail.start":`Запустить`,"views.serverDetail.startsOnItsOwn":`Запускается сам. Добавьте id в {code}, чтобы упорядочить его после других серверов.`,"views.serverDetail.stop":`Остановить`,"views.serverDetail.telemetry":`Телеметрия`,"views.serverDetail.telemetryNote":`Собирается каждые 5 с, пока эта страница открыта.`,"views.serverDetail.unhealthyFor":`Неисправен уже`,"views.serverDetail.uptime24":`Время работы за 24 ч`,"views.serverDetail.waitingFirstLine":`Ожидание первой строки…`,"views.servers.clearFilter":`Очистить фильтр`,"views.servers.clearFilters":`Очистить фильтры`,"views.servers.description":`Каждая запись в servers.config.json рабочего пространства {workspace}, с живыми ресурсами, исправностью и историей.`,"views.servers.emptyDescription":`Добавьте первый процесс, которым должна управлять эта панель. Его команда, аргументы, окружение и рабочий каталог задаются в файле конфигурации.`,"views.servers.emptyTitle":`Серверы не настроены`,"views.servers.filterAll":`Все`,"views.servers.filterAria":`Фильтр серверов`,"views.servers.filterAttention":`Внимание`,"views.servers.filterDisabled":`Отключённые`,"views.servers.filterPlaceholder":`Фильтр по id, метке, команде или порту`,"views.servers.filterRunning":`Работают`,"views.servers.filterStopped":`Остановленные`,"views.servers.noMatchDescription":`Попробуйте другое состояние или очистите поиск.`,"views.servers.noMatchTitle":`Ничего не соответствует этому фильтру`,"views.settings.changesDescription":`Что «Сохранить» записало бы в настройки рабочего пространства {workspace}.`,"views.settings.configErrorNote":`Панель продолжает управлять с прежней конфигурацией; исправление файла перезагрузит её само.`,"views.settings.configErrorTitle":`Не удалось прочитать конфигурацию рабочего пространства`,"views.settings.configWarningTitle":`В конфигурации этого рабочего пространства есть предупреждение`,"views.settings.ddnsDescription":`Держите имена хостов указывающими на публичный адрес этой машины, у какого бы регистратора они ни были.`,"views.settings.defaultsDescription":`Применяются к каждой записи в этом рабочем пространстве, которая не задаёт собственное значение.`,"views.settings.description":`Серверные значения по умолчанию, хранение журналов, уведомления и Dynamic DNS для {workspace}.`,"views.settings.logsDescription":`Сколько вывода это рабочее пространство хранит на диске и как долго.`,"views.settings.navLabel":`Разделы настроек рабочего пространства`,"views.settings.notificationsDescription":`Оповещения об авариях и исправности для этого рабочего пространства, отправляемые в чат Telegram.`,"views.settings.saveFailed":`Не удалось сохранить настройки.`,"views.settings.saved":`Настройки рабочего пространства сохранены.`,"views.settings.savedToast":`Настройки рабочего пространства сохранены`,"views.settings.sectionDdns":`Dynamic DNS`,"views.settings.sectionDefaults":`Серверные значения по умолчанию`,"views.settings.sectionLogs":`Журналы`,"views.settings.sectionNotifications":`Уведомления`,"workspace.new":`Новое рабочее пространство`,"workspace.rename":`Переименовать рабочее пространство`,"workspace.create":`Создать рабочее пространство`,"workspace.renameAction":`Переименовать`,"workspace.createHint":`Собственные настройки, серверы, журналы, секреты и запись резервной копии — обслуживается той же панелью.`,"workspace.renameHint":`Меняется только название; id рабочего пространства сохраняется, поэтому URL и пути продолжают работать.`,"workspace.nameHint":`Показывается в верхней панели.`,"workspace.nameHintId":`Показывается в верхней панели. Id: {id}`,"workspace.none":`Нет рабочего пространства`,"workspace.delete":`Удалить рабочее пространство`,"days.remaining":{one:`{count} день`,few:`{count} дня`,many:`{count} дней`,other:`{count} дня`},"editor.unsaved":{one:`несохранённое изменение`,few:`несохранённых изменения`,many:`несохранённых изменений`,other:`несохранённых изменения`},"editor.saveChanges":{one:`Сохранить {count} изменение`,few:`Сохранить {count} изменения`,many:`Сохранить {count} изменений`,other:`Сохранить {count} изменения`},"logs.lines":{one:`{count} строка`,few:`{count} строки`,many:`{count} строк`,other:`{count} строки`},"palette.results":{one:`{count} результат`,few:`{count} результата`,many:`{count} результатов`,other:`{count} результата`},"proxy.retry.inMinutes":{one:`~{count} минуту`,few:`~{count} минуты`,many:`~{count} минут`,other:`~{count} минуты`},"proxy.retry.inHours":{one:`~{count} час`,few:`~{count} часа`,many:`~{count} часов`,other:`~{count} часа`},"servers.total":{one:`{count} сервер`,few:`{count} сервера`,many:`{count} серверов`,other:`{count} сервера`},"servers.running":{one:`{count} работает`,few:`{count} работают`,many:`{count} работают`,other:`{count} работают`},"settings.backup.entriesCount":{one:`{count} запись`,few:`{count} записи`,many:`{count} записей`,other:`{count} записи`},"settings.backup.itemsSelected":{one:`выбран {count} элемент`,few:`выбрано {count} элемента`,many:`выбрано {count} элементов`,other:`выбрано {count} элемента`},"settings.ddns.hostnameCount":{one:`{count} имя хоста`,few:`{count} имени хоста`,many:`{count} имён хостов`,other:`{count} имени хоста`},"settings.shell.fieldsChanged":{one:`поле изменено`,few:`поля изменены`,many:`полей изменено`,other:`поля изменены`},"settings.shell.saveChanges":{one:`Сохранить {count} изменение`,few:`Сохранить {count} изменения`,many:`Сохранить {count} изменений`,other:`Сохранить {count} изменения`},"views.globalOverview.needLook":{one:`{count} сервер требует внимания`,few:`{count} сервера требуют внимания`,many:`{count} серверов требуют внимания`,other:`{count} сервера требуют внимания`},"views.logs.filesOnDisk":{one:`{count} файл`,few:`{count} файла`,many:`{count} файлов`,other:`{count} файла`},"views.overview.needLook":{one:`{count} сервер требует внимания`,few:`{count} сервера требуют внимания`,many:`{count} серверов требуют внимания`,other:`{count} сервера требуют внимания`}};export{e as default};