Fix repair state when installation or uinstallation fails

This commit is contained in:
Johannes Zellner
2025-07-23 12:09:29 +02:00
parent c173db69a9
commit 1063dbea02
5 changed files with 89 additions and 36 deletions
+49 -24
View File
@@ -15,7 +15,7 @@
"description": "После открытия доступа приложения отобразятся здесь.",
"title": "У Вас ещё нет доступа к каким-либо приложениям."
},
"configActionTooltip": "Настройки",
"configActionTooltip": "Конфигурация",
"logsActionTooltip": "Логи",
"infoActionTooltip": "Подробнее",
"adminPageActionTooltip": "Панель администратора",
@@ -148,7 +148,7 @@
"lowOnResources": "Недостаточно системных ресурсов.",
"subscriptionRequired": "Для установки дополнительных приложений требуется платная подписка.",
"setupSubscriptionAction": "Настроить подписку",
"manualWarning": "Вручную добавьте A запись для <b> {{ location }}</b>, указав публичный IP Вашего Cloudron",
"manualWarning": "Вручную добавьте A (IPv4) и AAAA (IPv6) запись DNS для <b> {{ location }}</b>, указав публичный IP вашего сервера",
"userManagementMailbox": "Все пользователи этого Cloudron с почтовым ящиком имеют доступ.",
"installAction": "Установить",
"titleAndVersion": "Приложение {{ title }} {{ version }}",
@@ -524,10 +524,10 @@
},
"enable2FANotAvailable": "Недоступно для пользователей из удалённых источников",
"removeApiToken": {
"title": "Вы точно хотите удалить этот токен?"
"title": "Вы точно хотите удалить токен {{ name }}?"
},
"removeAppPassword": {
"title": "Вы точно хотите удалить этот пароль?"
"title": "Вы точно хотите удалить пароль {{ name }}?"
}
},
"app": {
@@ -602,7 +602,8 @@
"saveAction": "Сохранить",
"aliases": "Псевдонимы",
"addAliasAction": "Добавить псевдоним",
"noAliases": "Не настроено ни одного домена-псевдонима."
"noAliases": "Не настроено ни одного домена-псевдонима.",
"dnsoverwrite": "Некоторые DNS записи уже существуют. Подтвердите перезапись."
},
"accessControl": {
"sftp": {
@@ -724,7 +725,9 @@
"7d": "7 дней",
"30d": "30 дней",
"24h": "24 часа",
"6h": "6 часов"
"6h": "6 часов",
"live": "Онлайн",
"1h": "1 час"
},
"memoryTitle": "Память (RAM + Swap) в МБ",
"diskTitle": "Использование диска",
@@ -869,12 +872,14 @@
"turn": {
"title": "Настроить TURN",
"enable": "Настроить использование встроенного TURN сервера в приложении",
"disable": "Не настраивать TURN сервер для данного приложения. Вы можете настроить его самостоятельно внутри самого приложения."
"disable": "Не настраивать TURN сервер для данного приложения. Вы можете настроить его самостоятельно внутри самого приложения.",
"info": "Включите эту опцию, чтобы настроить приложение на использование встроенного TURN сервера. Если отключено, настройки TURN приложения остаются неизменными."
},
"redis": {
"title": "Настроить Redis",
"enable": "Настроить использование Redis в приложении",
"disable": "Отключить Redis"
"disable": "Отключить Redis",
"info": "Если включено, приложение будет использовать встроенную службу Redis. Если отключено, настройки Redis приложения остаются неизменными."
},
"infoTabTitle": "Информация",
"info": {
@@ -893,7 +898,8 @@
"title": "Архивирование {{app}}",
"description": "Это действие удалит приложение и поместит его последнюю резервную копию от {{date}} в Архив."
},
"updateAvailableTooltip": "Доступно обновление"
"updateAvailableTooltip": "Доступно обновление",
"configureTooltip": "Настроить"
},
"backups": {
"location": {
@@ -1045,7 +1051,7 @@
}
},
"branding": {
"title": "Брендинг",
"title": "Внешний вид",
"cloudronName": "Имя Cloudron",
"logo": "Логотип",
"footer": {
@@ -1099,8 +1105,8 @@
"bounce": "Возвращено",
"spamFilterTrained": "Спам фильтр обучен",
"deferredInfo": "Ошибка доставки, повторная попытка через {{ delay }}сек.",
"inboundInfo": "Получено",
"outboundInfo": "Поставлен в очередь на доставку",
"inboundInfo": "Поставлено во входящую очередь",
"outboundInfo": "Поставлено в исходящую очередь",
"outgoing": "Исходящие",
"incoming": "Входящие",
"deferred": "Отсрочено",
@@ -1109,7 +1115,9 @@
"spamFilterTrainedInfo": "Спам фильтр обучен с использованием содержимого почтового ящика",
"overQuotaInfo": "Почтовый ящик {{ mailbox }} использует {{ quotaPercent }}% квоты",
"underQuotaInfo": "Почтовый ящик {{ mailbox }} превысил квоту на {{ quotaPercent }}%",
"quota": "Квота почтового ящика"
"quota": "Квота почтового ящика",
"sentInfo": "Отправлено",
"savedInfo": "Сохранено"
},
"searchPlaceholder": "Поиск",
"from": "От",
@@ -1121,7 +1129,7 @@
"description": "Данное действие перенесёт IMAP и SMTP сервер в указанное расположение.",
"location": "Расположение",
"locationPlaceholder": "Оставьте пустым, чтобы использовать основной домен",
"manualInfo": "Вручную добавьте A запись для {{ domain }}, указав публичный IP Вашего Cloudron"
"manualInfo": "Вручную добавьте A (IPv4) и AAAA (IPv6) DNS запись для <b>{{ domain }}</b>, указав публичный IP вашего сервера"
},
"changeMailSizeDialog": {
"title": "Изменить максимальный размер письма",
@@ -1251,7 +1259,7 @@
"refresh": "Обновить"
},
"settings": {
"title": "Настройки",
"title": "Система",
"appstoreAccount": {
"title": "Учётная запись Cloudron.io",
"description": "Учётная запись Cloudron.io открывает доступ к Магазину приложений и управлению подпиской.",
@@ -1263,7 +1271,12 @@
"subscriptionSetupAction": "Обновить до Premium",
"subscriptionChangeAction": "Управление подпиской",
"subscriptionReactivateAction": "Реактивировать подписку",
"emailNotVerified": "Электронная почта не подтверждена"
"emailNotVerified": "Электронная почта не подтверждена",
"resetDialog": {
"title": "Полностью сбросить Cloudron ID",
"description": "Это действие отвяжет настоящий аккаунт cloudron.io от данного Cloudron."
},
"resetAction": "Сбросить регистрацию"
},
"timezone": {
"title": "Системный часовой пояс",
@@ -1290,7 +1303,8 @@
"username": "Имя пользователя",
"configureAction": "Настроить реестр",
"serverNotSet": "Не настроено",
"usernameNotSet": "Не настроено"
"usernameNotSet": "Не настроено",
"deleteQuestion": "Вы действительно хотите удалить этот реестр?"
},
"privateDockerRegistryDialog": {
"title": "Настройка частного реестра",
@@ -1379,7 +1393,7 @@
"graphSubtext": "Отображаются приложения, использующие более {{ threshold }} памяти"
},
"cpuUsage": {
"title": "Использование CPU",
"title": "CPU",
"graphTitle": "Процент",
"graphSubtext": "Отображаются приложения, использующие более {{ threshold }} CPU"
},
@@ -1395,6 +1409,9 @@
},
"graphs": {
"title": "Графики"
},
"locale": {
"title": "Настройки локализации"
}
},
"eventlog": {
@@ -1457,7 +1474,7 @@
"addDescription": "Добавление домена даст возможность устанавливать приложения на его поддомены. Настроить электронную почту для выбранного домена можно в специальном разделе.",
"linodeToken": "Токен Linode",
"namecheapInfo": "IP-адрес сервера должен быть разрешён для этого ключа API.",
"wildcardInfo": "Настройте <i>A</i> записи для <b>*.{{ domain }}.</b> и <b>{{ domain }}.</b> на IP-адрес данного сервера.",
"wildcardInfo": "Вручную настройте A (IPv4) и AAAA (IPv6) DNS записи для <b>*.{{ domain }}.</b> и <b>{{ domain }}.</b> на IP-адрес данного сервера",
"fallbackCert": "Резервный сертификат (необязательно)",
"fallbackCertCustomCert": "Сторонний сертификат",
"fallbackCertCustomCertInfo": "Этот <a href=\"{{ customCertLink }}\" target=\"_blank\">wildcard-сертификат</a> будет использоваться для всех приложений на данном домене. В случае его отсутствия будет использован автоматически сгенерированный самоподписанный сертификат.",
@@ -1522,11 +1539,12 @@
"certificateRenewalFailed": "Сбой обновления сертификата",
"appOutOfMemory": "Приложению не хватило памяти",
"appUp": "Приложение снова в онлайне",
"appDown": "Приложение не работает"
"appDown": "Приложение не работает",
"diskSpace": "Мало места на диске"
},
"allCaughtUp": "Уведомления отсутствуют",
"settingsDialog": {
"description": "Здесь вы можете управлять вашими личными настройками уведомлений. Cloudron будет отправлять электронные письма для выбранных событий на главный адрес электронной почты."
"description": "Для выбранных событий будут отправляться уведомления на главный адрес электронной почты."
}
},
"logs": {
@@ -1769,7 +1787,7 @@
"title": "Подпись",
"subscriptionRequired": "Данная функция доступна только в платной подписке. <a href=\"\" class=\"pull-right\" ng-click=\"openSubscriptionSetup()\">Настроить подписку</a>",
"plainTextFormat": "Обычный текст",
"htmlFormat": "Текст HTML (Необязательно)",
"htmlFormat": "Формат HTML",
"saveAction": "Сохранить",
"description": "Данный текст будет прикреплён ко всем письмам, отправляемым с выбранного домена."
},
@@ -1779,7 +1797,9 @@
"smtpStatus": {
"title": "Статус SMTP",
"notBlacklisted": "IP-адрес сервера {{ ip }} <b>не</b> обнаружен в списках заблокированных.",
"blacklisted": "IP-адрес сервера {{ ip }} обнаружен в списке заблокированных."
"blacklisted": "IP-адрес сервера {{ ip }} обнаружен в списке заблокированных.",
"outboundSmtp": "Исходящий SMTP",
"rblCheck": "Проверка чёрного списка DNS"
},
"subscriptionDialog": {
"title": "Требуется подписка",
@@ -2036,5 +2056,10 @@
"authEndpoint": "Конечная точка аутентификации"
}
},
"automation": "Автоматизация"
"automation": "Автоматизация",
"userdirectory": {
"settings": {
"title": "Настройки"
}
}
}