Files
1Panel/core/i18n/lang/ru.yaml
Yuki Guoandssongliu d658395188 feat(sync): sync php extended template (#14299)
* feat(sync): sync php extended template

* fix(i18n): complete resource sync translations

---------

Co-authored-by: ssongliu <sloooop1x@gmail.com>
2026-11-05 15:06:12 +08:00

601 lines
65 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# базовые ошибки
ErrInvalidParams: 'Неверный запрос: {{ .detail }}'
ErrTokenParse: 'Ошибка токена: {{ .detail }}'
ErrInitialPassword: 'Исходный пароль неверен'
ErrInternalServer: 'Внутренняя ошибка: {{ .detail }}'
ErrInternalServerKey: "Внутренняя ошибка сервера:"
ErrRecordExist: 'Запись уже существует'
ErrRecordNotFound: 'Запись не найдена'
ErrStructTransform: 'Ошибка преобразования: {{ .detail }}'
ErrNotSupportType: 'Тип не поддерживается: {{ .name }}'
ErrDemoEnvironment: 'Недоступно в демо'
ErrCmdTimeout: 'Команда завершилась по тайм-ауту'
ErrPortInUsed: "Порт {{ .name }} уже используется"
ErrFileNotFound: "Файл {{ .name }} не найден"
ErrReqFailed: "{{.name}} запрос не удался: {{ .err }}"
# запрос и вход безопасности
ErrNoSuchHost: "Не удалось найти запрашиваемый сервер {{ .err }}"
ErrHttpReqNotFound: "Не удалось найти запрашиваемый ресурс {{ .err }}"
ErrHttpReqFailed: "Ошибка запроса {{ .err }}"
ErrHttpReqTimeOut: "Время ожидания запроса истекло {{ .err }}"
ErrCreateHttpClient: "Ошибка создания запроса {{ .err }}"
ErrProxy: 'Запрос не удался: {{ .detail }}'
ErrProxySetting: "Информация о прокси-сервере недоступна {{ .err }}, проверьте и повторите попытку"
ErrEntrance: "Ошибка информации о безопасном входе, проверьте и повторите попытку"
ErrEntranceFormat: "Защищенный вход {{ .name }} в настоящее время не поддерживается. Пожалуйста, проверьте и повторите попытку"
# вход и безопасность
ErrNotLogin: 'Не авторизован: {{ .detail }}'
ErrSessionDataNotFound: "Текущая сессия истекла"
ErrSessionDataFormat: "Ненормальный формат данных текущей сессии"
ErrPasswordExpired: 'Пароль истёк: {{ .detail }}'
ErrLoginLocked: "Слишком много неудачных попыток. Вход временно заблокирован на 5 минут."
ErrApiConfigStatusInvalid: 'API отключено: {{ .detail }}'
ErrApiConfigKeyInvalid: 'Неверный API-ключ: {{ .detail }}'
ErrApiConfigIPInvalid: 'IP не в списке: {{ .detail }}'
ErrApiConfigDisable: 'Доступ по API запрещён: {{ .detail }}'
ErrApiConfigKeyTimeInvalid: 'Неверная метка времени: {{ .detail }}'
ErrApiConfigKeyExpired: "Срок действия API-ключа истёк. Измените срок действия или замените ключ в разделе управления API-ключами панели."
ErrPasskeyDisabled: "Для Passkey требуется включить HTTPS"
ErrPasskeyNotConfigured: "Passkey не настроен"
ErrPasskeyLimit: "Достигнут лимит Passkey (максимум 5)"
ErrPasskeySession: "Сеанс Passkey истек или недействителен"
ErrPasskeyDuplicate: "Passkey уже существует"
ErrPasskeyVerify: "Не удалось проверить Passkey"
ErrOIDCNotEnabled: "Аутентификация OIDC не включена"
ErrOIDCConfigInvalid: "Конфигурация OIDC недействительна"
ErrOIDCConfigChanged: "Конфигурация OIDC изменилась; запустите аутентификацию заново"
ErrOIDCDiscoveryFailed: "Не удалось обнаружить конфигурацию Provider OIDC"
ErrOIDCIssuerMismatch: "Issuer OIDC не совпадает с настроенным Issuer"
ErrOIDCUnsupportedPKCE: "Provider OIDC не поддерживает требуемый метод PKCE"
ErrOIDCUnsupportedSigningAlgorithm: "Алгоритм подписи OIDC не поддерживается"
ErrOIDCInvalidState: "Состояние входа OIDC недействительно или уже использовано"
ErrOIDCLoginExpired: "Срок действия запроса на вход OIDC истёк; повторите попытку"
ErrOIDCTokenExchange: "Не удалось обменять код авторизации OIDC"
ErrOIDCTokenValidation: "Не удалось проверить Token OIDC"
ErrOIDCUserInfoValidation: "Не удалось проверить сведения о пользователе OIDC"
ErrOIDCNameClaimMissing: "Настроенный Claim имени пользователя OIDC отсутствует или недействителен"
ErrOIDCNameConflictLocal: "Имя пользователя OIDC конфликтует с локальным пользователем"
ErrOIDCNameConflictLDAP: "Имя пользователя OIDC конфликтует с пользователем LDAP"
ErrOIDCNameConflictOIDC: "Имя пользователя OIDC конфликтует с другой идентичностью OIDC"
ErrOIDCDefaultRoleInvalid: "Роль по умолчанию, настроенная для OIDC, недоступна"
ErrOIDCPrivateAddressDenied: "Адрес Endpoint OIDC запрещён политикой сетевой безопасности"
ErrOIDCTLSValidation: "Не удалось проверить сертификат TLS OIDC"
ErrOIDCTestExpired: "Срок действия браузерного теста OIDC истёк; запустите тест снова"
ErrOIDCLocalCredentialsReadonly: "Имена пользователей и пароли OIDC управляются Provider идентификации и не могут быть изменены локально."
ErrOIDCPasswordExpirationUnsupported: "Для пользователей OIDC не применяется локальная политика истечения срока действия пароля."
ErrOIDCInternal: "Во время аутентификации OIDC произошла внутренняя ошибка. Повторите попытку позже."
# пользователь и права
ErrNoSuchUser: "Информация о пользователе не найдена. Проверьте и повторите попытку."
ErrToMaster: "У этого пользователя нет прав для выполнения этой операции на основном узле. Проверьте и повторите попытку."
ErrToNode: "У этого пользователя нет прав для выполнения этой операции на этом узле. Проверьте и повторите попытку."
ErrRBAC: "Недостаточно прав пользователя. Операция не может быть выполнена. Проверьте и повторите попытку."
ErrNoneNode: "У этого пользователя нет прав ни на один узел. Обратитесь к администратору или проверьте и повторите попытку."
ErrOnlySuperAdmin: "Эта функция доступна только супер администраторам."
ErrRolePresetCannotDelete: "Системные предустановленные роли нельзя удалять"
ErrRolePresetCannotUpdate: "Системные предустановленные роли нельзя обновлять"
ErrRoleBoundToUser: "Эта роль уже привязана к пользователям и не может быть удалена"
ErrRolePresetCannotBind: "Системные предустановленные роли нельзя назначать пользователям"
ErrNodeAdminMasterForbidden: "Права администратора узла нельзя добавить к главному узлу"
ErrSuperAdminCannotDelete: "Пользователей супер-администратора нельзя удалять"
ErrGroupIsDefault: "Группу по умолчанию нельзя удалить"
ErrGroupIsInUse: "Группа используется и не может быть удалена."
# лицензия
LicenseCheck: 'Проверить доступность лицензии'
ErrLicenseInUsed: 'Лицензия уже привязана. Пожалуйста, проверьте и повторите попытку'
ErrLicenseExpired: 'Срок действия лицензии истек. Пожалуйста, проверьте и повторите попытку'
ErrLicense: "Неверный формат лицензии, проверьте и повторите попытку"
ErrLicenseCheck: "Ошибка проверки лицензии, проверьте и повторите попытку"
ErrXpackVersion: "Ошибка проверки лицензии, лицензия ограничена по версии, проверьте и повторите попытку"
ErrLicenseSave: "Ошибка сохранения информации о лицензии {{ .err }}, повторите попытку"
ErrLicenseSync: "Ошибка синхронизации информации о лицензии, информация не найдена в базе данных"
ErrLicenseExist: "Данная лицензия уже существует. Вы можете перейти на страницу лицензий для привязки узлов."
ErrXpackNotFound: "Этот раздел доступен в Business Edition. Импортируйте лицензию в Настройки панели > Лицензия"
ErrXpackExceptional: "Этот раздел доступен в Business Edition. Синхронизируйте статус лицензии в Настройки панели > Лицензия"
ErrXpackLost: "Достигнут лимит повторных попыток по лицензии. Перейдите в Настройки панели > Лицензия и выполните ручную синхронизацию"
ErrEnterpriseLicenseRequired: "Лицензия Enterprise Edition не импортирована. Сначала импортируйте лицензию."
ErrDeviceLost: "Необходимые файлы для проверки лицензии отсутствуют, пожалуйста, проверьте и попробуйте снова"
ErrDeviceErr: "Текущая среда не соответствует среде импорта лицензии. Отредактируйте лицензию и повторите импорт"
ErrXpackTimeout: "Время ожидания запроса истекло, возможно нестабильное сетевое соединение, повторите попытку позже"
ErrUnbindMaster: "В управлении узлами обнаружены узлы, сначала удалите их и повторите попытку"
ErrFreeNodeLimit: "Достигнут лимит количества узлов, которые можно добавить. Приобретите лицензию и повторите попытку."
ErrNodeBound: "Эта лицензия уже связана с другим узлом, проверьте и повторите попытку"
ErrNodeBoundDelete: "Эта лицензия привязана и не поддерживает операции удаления. Пожалуйста, проверьте и попробуйте снова"
ErrNodeBoundLimit: "Текущий бесплатный узел достиг предела, пожалуйста, проверьте и попробуйте снова"
ErrLicenseFree: "Бесплатные узлы доступны только при правильной привязке лицензии к узлу. Проверьте и повторите попытку"
ErrLicenseUnbind: "К этой лицензии всё ещё привязаны узлы Community Edition. Отвяжите их в Настройки панели > Лицензия и повторите попытку"
ErrLicenseBindCount: "Количество бесплатных узлов в новой лицензии меньше текущего количества привязанных узлов Community Edition. Проверьте и повторите попытку"
ErrNoSuchNode: "Информация об узле не найдена, проверьте и повторите попытку"
ErrNodeUnbind: "Обнаружен узел вне области действия лицензии, проверьте и повторите попытку"
ErrNodeBind: "Этот узел уже связан с лицензией, проверьте и повторите попытку"
ErrNodeLocalRollback: "Прямой откат на основном узле не поддерживается. Выполните '1pctl restore' вручную для отката"
ErrIntlLicense: "Текущая версия пока не поддерживает импорт международной лицензии. Скоро будет доступно"
InvalidRequestBodyType: "Неверный формат тела запроса. Проверьте, соответствует ли содержимое требуемому формату, и повторите попытку"
InvalidLicenseCodeType: "Указан неверный формат лицензионного кода. Проверьте и повторите попытку"
LicenseNotFoundType: "Лицензия не найдена. В системе нет записей, соответствующих указанной лицензии. Проверьте и повторите попытку"
LicenseRevokedType: "Запрошенная лицензия аннулирована и больше не может быть использована. Проверьте и повторите попытку"
LicenseExpiredType: "Срок действия лицензии истек. Продлите ее или повторно импортируйте в разделе Настройки панели - Лицензия перед повторной попыткой"
LicenseProductMismatchType: "Лицензия не соответствует запрошенному продукту или услуге"
InvalidAssigneeType: "Некорректная информация о целевом пользователе или устройстве для назначения лицензии. Проверьте и повторите попытку"
LicenseUsageNotFoundType: "Записи об использовании отсутствуют. Эта лицензия еще не активирована или не использовалась. Проверьте и повторите попытку"
LicenseUsageLimitExceededType: "Эта лицензия уже привязана к другому узлу. Проверьте и повторите попытку"
# узел и кластер
MasterNode: "Главный узел"
Node: "Узел"
ErrLocalDelete: "Локальный узел нельзя удалить"
ErrMasterDelete: "Невозможно удалить основной узел, сначала удалите подчиненные узлы."
ClusterNameIsExist: "Имя кластера уже существует."
AppStatusUnHealthy: "Получение статуса приложения аномально, пожалуйста, проверьте статус узлов установки в списке узлов."
MasterNodePortNotAvailable: "Проверка подключения порта {{ .port }} узла {{ .name }} не удалась, пожалуйста, проверьте настройки брандмауэра/группы безопасности и статус главного узла."
ClusterMasterNotExist: "Основной узел кластера отключен, пожалуйста, удалите дочерние узлы."
# приложение
CustomAppStoreFileValid: "Пакет магазина приложений должен быть в формате .tar.gz"
AppBackup: 'Резервная копия приложения'
AppBackupPush: 'Передать файл резервной копии приложения {{.file}} на узел {{ .name }}'
ErrSourceTargetSame: 'Исходный узел и целевой узел не могут быть одинаковыми'
AppInstall: 'Установить приложение {{ .name }} на узел {{ .targetNode }}'
AppInstallCheck: 'Проверить среду установки приложения'
# резервное копирование
ErrBackupInUsed: 'Аккаунт бэкапа занят задачей'
ErrBackupCheck: 'Проверка подключения не удалась: {{ .err }}'
ErrBackupLocal: "Локальная учетная запись резервного копирования не поддерживает эту операцию"
ErrBackupPublic: "Обнаружено, что эта учетная запись резервного копирования не является публичной, проверьте и повторите попытку"
ErrOSSConn: "Не удалось получить последнюю версию, проверьте подключение сервера к внешней сети."
MvBackup: "Переместить данные в резервный каталог"
# оповещение
ErrAlertSync: "Ошибка синхронизации информации об оповещениях, пожалуйста, проверьте и повторите попытку"
# AI-шлюз
ErrAIProxyUserGroupIsDefault: "Группу пользователей по умолчанию нельзя удалить."
ErrAIProxyUserGroupInUse: "Группа пользователей используется и не может быть удалена."
ErrAIProxyUserGroupExists: "Имя группы пользователей уже существует."
ErrAIProxyBackendAccountExists: "Этот сервис модели уже импортирован в пул аккаунтов AI Gateway."
ErrAIProxyModelGroupInUse: "Группа моделей используется и не может быть удалена."
ErrAIProxyModelGroupExists: "Имя группы моделей уже существует."
ErrAIProxySensitiveGroupInUse: "Группа чувствительных слов используется и не может быть удалена."
ErrAIProxySensitiveGroupExists: "Имя группы чувствительных слов уже существует."
AIProxyContentPolicyViolation: "К сожалению, я не могу обработать этот запрос: его содержимое может не соответствовать политике в отношении контента. Измените запрос и повторите попытку."
AIBenchmarkRun: "Выполнить тест производительности AI"
# задача
TaskStart: "{{ .name }} задача начата [START]"
TaskEnd: "{{ .name }} задача завершена [COMPLETED]"
TaskFailed: "{{ .name }} задача не выполнена"
TaskTimeout: "{{ .name }} истекло время"
TaskSuccess: "{{ .name }} задача выполнена успешно"
TaskRetry: "Начало повторной попытки {{ .name }}"
SubTaskSuccess: "{{ .name }} успешно"
SubTaskFailed: "{{ .name }} не удалось: {{ .err }}"
TaskInstall: "Установить"
TaskUpgrade: "Обновить"
TaskSync: 'Синхронизация'
TaskSyncForNode: "Синхронизировать Данные Узла"
TaskBackup: "Резервная копия"
TaskPush: "Отправить"
TaskRsync: "Синхронизация"
SuccessStatus: "{{ .name }} успешно"
FailedStatus: "{{ .name }} не удалось {{ .err }}"
Start: "Начать"
SubTask: "Подзадача"
Skip: "Пропустить ошибки и продолжить..."
Success: "Успешно"
# задачи умной маршрутизации AI-шлюза
AIProxySmartRouteCreateTask: "Создание образцов умной маршрутизации AI-шлюза"
AIProxySmartRouteCreateSubTask: "Создание образцов и генерация векторов"
AIProxySmartRouteCreateStart: "Начато создание образцов, всего: {{ .total }}"
AIProxySmartRouteCreateFailed: "[{{ .current }}/{{ .total }}] Ошибка создания: type={{ .type }} label={{ .label }} error={{ .err }}"
AIProxySmartRouteCreateSuccess: "[{{ .current }}/{{ .total }}] Создано: sampleID={{ .id }} type={{ .type }} label={{ .label }}"
AIProxySmartRouteCreateComplete: "Создание завершено: успешно {{ .success }}, с ошибкой {{ .failed }}"
AIProxySmartRouteCreateError: "Не удалось создать образцы: ошибок {{ .failed }}, последняя ошибка"
AIProxySmartRouteRebuildTask: "Перестроение векторов образцов умной маршрутизации AI-шлюза"
AIProxySmartRouteRebuildSubTask: "Перестроение векторов образцов"
AIProxySmartRouteEmbeddingRequired: "Требуются endpoint и модель Embedding"
AIProxySmartRouteRebuildStart: "Начато перестроение векторов образцов, всего: {{ .total }}"
AIProxySmartRouteRebuildFailed: "[{{ .current }}/{{ .total }}] Ошибка перестроения: sampleID={{ .id }} type={{ .type }} label={{ .label }} error={{ .err }}"
AIProxySmartRouteRebuildSuccess: "[{{ .current }}/{{ .total }}] Перестроено: sampleID={{ .id }} type={{ .type }} label={{ .label }}"
AIProxySmartRouteRebuildComplete: "Перестроение завершено: успешно {{ .success }}, с ошибкой {{ .failed }}"
AIProxySmartRouteRebuildError: "Не удалось перестроить векторы образцов: ошибок {{ .failed }}, последняя ошибка"
# пакетная задача агента
BatchInstallAgent: "Пакетная установка агентов"
DispatchAgentInstallTasks: "Отправить задачи установки агентов"
BatchUpgradeAgent: "Пакетное обновление агентов"
DispatchAgentUpgradeTasks: "Отправить задачи обновления агентов"
BatchAgentInstallDispatchFailed: "Узел {{ .node }} не смог отправить задачу установки {{ .agentType }} Message: {{ .err }}"
BatchAgentInstallSubmitted: "Узел {{ .node }} успешно отправил задачу установки {{ .agentType }}!"
BatchAgentUpgradeDispatchFailed: "Узел {{ .node }} не смог отправить задачу обновления {{ .agentType }} Message: {{ .err }}"
BatchAgentUpgradeAlreadyLatest: "Узел {{ .node }} {{ .agent }} уже на целевой версии, пропущено"
BatchAgentUpgradeSubmitted: "Узел {{ .node }} успешно отправил задачу обновления {{ .agent }}!"
BatchAgentUpgradeFailed: "Узел {{ .node }} не смог отправить задачу обновления {{ .agent }} Message: {{ .err }}"
BatchInstallAgentSkill: "Пакетная отправка Skill"
DispatchAgentSkillInstallTasks: "Отправить задачи установки Skill"
BatchAgentSkillDispatchFailed: "Узел {{ .node }} не смог отправить {{ .skill }} в {{ .target }} Message: {{ .err }}"
BatchAgentNoAgentsFound: "Узел {{ .node }} не нашел агентов {{ .agentType }}, пропущено"
BatchAgentSkillSkipped: "Узел {{ .node }} {{ .agent }} пропущен Message: {{ .msg }}"
BatchAgentSkillInstallSubmitted: "Узел {{ .node }} успешно отправил задачу установки {{ .skill }} в {{ .agent }}!"
BatchAgentSkillInstallFailed: "Узел {{ .node }} не смог отправить задачу установки {{ .skill }} в {{ .agent }} Message: {{ .err }}"
BatchAgentOperateDispatchFailed: "Узел {{ .node }} не смог отправить задачу {{ .operate }} для {{ .agentType }} Message: {{ .err }}"
BatchAgentOperateSkipped: "Узел {{ .node }} {{ .agent }} пропущен Message: {{ .msg }}"
BatchAgentOperateSubmitted: "Узел {{ .node }} успешно отправил задачу {{ .operate }} для {{ .agent }}!"
BatchAgentOperateFailed: "Узел {{ .node }} не смог отправить задачу {{ .operate }} для {{ .agent }} Message: {{ .err }}"
BatchStartAgent: "Пакетный запуск агентов"
DispatchAgentStartTasks: "Отправить задачи запуска агентов"
BatchStopAgent: "Пакетная остановка агентов"
DispatchAgentStopTasks: "Отправить задачи остановки агентов"
BatchRestartAgent: "Пакетный перезапуск агентов"
DispatchAgentRestartTasks: "Отправить задачи перезапуска агентов"
BatchDeleteAgent: "Пакетное удаление агентов"
DispatchAgentDeleteTasks: "Отправить задачи удаления агентов"
AgentOperateStart: "Запустить"
AgentOperateStop: "Остановить"
AgentOperateRestart: "Перезапустить"
AgentOperateDelete: "Удалить"
# задача приложения и навыка
PushAppInstallTaskToNode: "Отправить задачу установки приложения на узел [{{ .name }}]"
AppInstallTask: "Задача установки приложения"
PushAppFailed: "Не удалось отправить задачу установки приложения"
SkillHubInstallTask: "Установить навык [{{ .name }}]"
SkillHubInstallToTarget: "Установить навык [{{ .name }}] в цель [{{ .target }}]"
# библиотека скриптов
ScriptLibrary: "Библиотека скриптов"
RemoteScriptLibrary: "Удаленная Библиотека Скриптов"
ScriptSyncSkip: "Текущая библиотека скриптов уже является последней версией"
DownloadData: "Загрузка файла библиотеки скриптов data.yaml"
DownloadPackage: "Загрузка архива библиотеки скриптов"
AnalyticCompletion: "Анализ завершён, начинается синхронизация с базой данных..."
# синхронизация узла
SyncNode: "Синхронизировать данные с узлом {{ .name }}"
LocalName: "Имя 'local' используется только для локальной идентификации в системе"
SyncPackageData: "Упаковка данных синхронизации"
SyncPackageEncrypt: "Шифрование пакета данных"
SyncRequest: "Запрос API синхронизации узла"
SyncFailedRetry: "Таймаут синхронизации данных узла (попытка {{ .index }}), повторная попытка..."
SyncFailed: "Ошибка синхронизации, выполните ручную синхронизацию в списке узлов"
SyncSystemProxy: "Настройки системного прокси"
SyncScripts: "Библиотека скриптов"
SyncBackupAccounts: "Резервные аккаунты"
SyncAlertSetting: "Настройки оповещений"
SyncCustomApp: "Пользовательское приложение"
SyncLanguage: "Язык системы"
SyncEdition: "Регион работы"
# обновление узла
NodeUpgrade: "Обновление узла {{ .name }}"
UpgradeCheck: "Проверить обновления узла"
UpgradeCheckLocal: "Локальные узлы не поддерживают массовое обновление, пропуск..."
UpgradeCheckLatest: "Узел уже имеет последнюю версию, пропуск..."
NewSSHClient: "Инициализация SSH-соединения"
BackupBeforeUpgrade: "Резервное копирование данных перед обновлением"
UploadUpgradeFile: "Распределение файлов обновления"
RestartAfterUpgrade: "Запуск службы после обновления"
LoadAutoUpgradeNodesFailed: "Не удалось загрузить узлы автообновления, ошибка: {{ .err }}"
AutoUpgradeNodes: "Узлы автообновления: {{ .nodes }}"
UpdateAutoUpgradeNodesStatusFailed: "Не удалось обновить статус узлов автообновления, ошибка: {{ .err }}"
# добавление узла
MasterData: "Данные главного узла"
LoadSftpClient: "Загрузить SFTP-клиент"
PackageMasterData: "Создать архив резервной копии главного узла"
UploadBackup: "Загрузить резервные данные"
TaskAddNode: "Добавить узел"
LoadNodeArch: "Получить информацию об архитектуре узла"
LoadNodeArchDetail: "Обнаружена архитектура главного узла: {{ .local }}, архитектура дочернего узла: {{ .node }}"
LoadNodeUpgradeDetail: "Используется каталог установки исторической версии v1: {{ .baseDir }}, порт прослушивания службы: {{ .port }}"
SyncAgentBaseInfo: "Синхронизировать базовую информацию узла"
GenerateSSLInfo: "Сгенерировать SSL информацию узла"
ConnInfoNotMatch: "Информация о соединении не совпадает"
MakeAgentPackage: "Сгенерировать установочный пакет узла"
PrepareNodePackage: "Подготовка готового пакета на дочернем узле"
PrepareNodePackageDetail: "Использование готового пакета на дочернем узле: {{ .name }}"
SyncNodeConfig: "Синхронизация конфигурации узла"
ErrNodePackagePath: "Укажите абсолютный путь к файлу пакета на дочернем узле"
ErrNodePackageFile: "Не удалось обработать файл пакета {{ .name }}: {{ .err }}"
ErrNodePackageMember: "Пакет содержит недопустимую или повторяющуюся запись: {{ .name }}"
ErrNodePackageMismatch: "Пакет должен соответствовать версии главного узла {{ .version }} и архитектуре дочернего узла {{ .arch }}"
ErrNodePackageMissing: "В пакете отсутствует обязательный файл: {{ .name }}"
ErrNodePackageVersion: "Версия пакета {{ .version }} не совпадает с версией главного узла {{ .expected }}"
ErrNodePackageArch: "Архитектура исполняемого файла Agent не совпадает с архитектурой дочернего узла {{ .arch }}"
SendAgent: "Отправить установочный пакет узла"
StartService: "Запустить сервис"
NoBackupNode: "Резервный узел в настоящее время пуст. Выберите резервный узел для сохранения и повторите попытку"
# синхронизация файлов и образов узла
LocalNodeIpFailed: "Не удалось получить IP главного узла. Измените главный узел и добавьте IP-адрес и данные аутентификации SSH."
HandlePrivateKey: "Обработать закрытый ключ узла"
HandlePublicKey: "Обработать открытый ключ узла"
ExchangeFile: "Начать синхронизацию {{ .sourcePath }} с узла {{ .source }} на узел {{ .dest }}:{{ .destPath }}"
NodeFile: "Файл узла"
ImageSyncTaskName: "Синхронизировать образы: {{ .count }}"
SSLSyncTaskName: "Синхронизировать сертификаты: {{ .count }}"
AppSyncTaskName: "Синхронизировать приложение {{ .name }}"
SSLSyncToNode: "Отправить сертификат [{{ .cert }}] на узел [{{ .node }}]"
ImageSyncSave: "Сохранить образ {{ .image }}"
ImageSyncSaveTags: "Сохранить теги образа {{ .tags }}"
ImageSyncToNode: "Синхронизировать образ {{ .image }} с узлом {{ .node }}"
ImageSyncLoad: "Загрузить образ {{ .image }} на узел {{ .node }}"
ImageSyncClean: "Очистить временные файлы образа {{ .image }}"
ImageSyncNoTag: "У образа {{ .image }} нет тега, поэтому он будет сохранён по ID образа"
ImageSyncFrontendTagsIgnored: "На исходном узле не найдены теги образа {{ .image }}. Теги из frontend проигнорированы."
ImageSyncHandlePrivateKey: "Обработать закрытый ключ узла синхронизации образов"
ImageSyncHandlePublicKey: "Обработать открытый ключ узла синхронизации образов"
ImageSyncTransfer: "Начать передачу временного файла образа: {{ .source }}:{{ .sourcePath }} -> {{ .dest }}:{{ .destPath }}"
# командная строка
SudoHelper: "Пожалуйста, используйте {{ .cmd }} или переключитесь на пользователя root"
UsernameNeed: "Для Enterprise-версии необходимо указать --username"
DBConnErr: "Ошибка: не удалось инициализировать соединение с базой данных, {{ .err }}"
SystemVersion: "Версия:"
SystemMode: "Режим:"
# командная строка - приложение
AppVersion: "Версия приложения"
AppCommands: "Команды приложения"
AppInit: "Инициализация приложения"
AppKeyVal: "Ключ приложения (поддерживаются только английские символы)"
AppCreateFileErr: "Не удалось создать файл {{ .name }} {{ .err }}"
AppCreateDirErr: "Не удалось создать папку {{ .name }} {{ .err }}"
AppMissKey: "Отсутствует ключ приложения, используйте -k для указания"
AppMissVersion: "Отсутствует версия приложения, используйте -v для указания"
AppVersionExist: "Версия уже существует"
AppCreateSuccessful: "Успешно создано"
AppWriteErr: "Не удалось записать файл {{ .name }} {{ .err }}"
# командная строка - IP прослушивания
ListenIPCommands: "Переключить IP для прослушивания"
ListenIPv4: "Прослушивание IPv4"
ListenIPv6: "Прослушивание IPv6"
ListenChangeSuccessful: "Переключено успешно Теперь прослушиваем {{ .value }}"
# командная строка - сброс
ResetCommands: "Сбросить информацию о системе"
ResetMFA: "Отменить двухфакторную аутентификацию 1Panel"
ResetHttps: "Отменить вход в 1Panel через https"
ResetEntrance: "Отменить безопасный вход 1Panel"
ResetIPs: "Отменить ограничения авторизованных IP для 1Panel"
ResetDomain: "Отменить привязку домена доступа 1Panel"
ResetPasskey: "Сбросить passkey 1Panel"
# командная строка - пользователь
UserList: "Получить список пользователей 1Panel"
UserTableName: "Имя"
UserTableMFAStatus: "Статус MFA"
UserTableSuperAdmin: "Суперадмин"
UserTableCreatedAt: "Создано"
UserEmptyList: "Пользователи не найдены"
UserInfo: "Получить информацию о панели"
UserInfoAddr: "Адрес панели:"
UserInfoPassHelp: "Подсказка: для изменения пароля можно выполнить команду:"
# командная строка - восстановление
RestoreCommands: "Откатить сервис и данные 1Panel"
RestoreNoSuchFile: "Файлы для отката не найдены"
RestoreStep1: "(1/5) Начинаем откат сервиса и данных 1Panel из каталога {{ .name }}..."
RestoreStep2: "(2/5) Откат бинарного файла 1Panel завершён"
RestoreStep3: "(3/5) Откат скриптов 1Panel завершён"
RestoreStep4: "(4/5) Откат сервиса 1Panel завершён"
RestoreStep5: "(5/5) Откат данных 1Panel завершён"
RestoreSuccessful: "Откат завершён. Возвращено к версии {{ .version }}. Перезапускаем сервис..."
# командная строка - обновление
UpdateCommands: "Изменить информацию панели"
UpdateUser: "Изменить информацию пользователя"
UpdatePassword: "Изменить пароль пользователя"
UpdatePort: "Изменить порт панели"
UpdateUserNull: "Ошибка: введён пустой пользователь"
UpdateUserBlank: "Ошибка: введённый пользователь содержит пробелы"
UpdateUserFormat: "Ошибка: неверный формат имени пользователя Поддерживаются только английские, китайские символы, цифры и _ , длина 3-30 символов"
UpdateUserErr: "Ошибка: не удалось изменить пользователя, {{ .err }}"
UpdateSuccessful: "Успешно изменено"
UpdateUserResult: "Пользователь: {{ .name }}"
UpdatePasswordRead: "Ошибка: не удалось прочитать информацию о пароле пользователя, {{ .err }}"
UpdatePasswordNull: "Ошибка: введён пароль пуст"
UpdateUPasswordBlank: "Ошибка: введён пароль с пробелами"
UpdatePasswordFormat: "Ошибка: пароль пользователя должен содержать только буквы, цифры и специальные символы (@#$%*_,.?) и иметь длину 8-30 символов."
UpdatePasswordLen: "Ошибка: пароль должен быть длиной не менее 6 символов"
UpdatePasswordRe: "Подтверждение пароля:"
UpdatePasswordErr: "Ошибка: не удалось изменить пароль пользователя, {{ .err }}"
UpdatePasswordSame: "Ошибка: пароли не совпадают, пожалуйста, проверьте и попробуйте снова"
UpdatePasswordResult: "Пароль пользователя: {{ .name }}"
UpdatePortFormat: "Ошибка: введённый порт должен быть в пределах от 1 до 65535"
UpdatePortUsed: "Ошибка: этот порт уже занят, пожалуйста, проверьте и попробуйте снова"
UpdatePortErr: "Ошибка: не удалось изменить порт панели, {{ .err }}"
UpdatePortResult: "Порт панели: {{ .name }}"
UpdatePortFirewallAdd: "Не удалось добавить правило фаервола для порта, {{ .err }}, пожалуйста, вручную добавьте порт {{ .name }} в правила фаервола."
UpdatePortFirewallDel: "Ошибка: не удалось удалить правило фаервола для порта, {{ .err }}"
UpdatePortFirewallReload: "Не удалось перезагрузить фаервол, {{ .err }}, пожалуйста, вручную перезагрузите фаервол."
# мобильное приложение
ErrVerifyToken: 'шибка проверки токена, пожалуйста, сбросьте и отсканируйте снова.'
ErrInvalidToken: 'Неверный токен, пожалуйста, сбросьте и отсканируйте снова.'
ErrExpiredToken: 'QR-код недействителен. Создайте новый и отсканируйте его снова.'
# экспорт команд
Name: "Название"
Command: "Команда"
# LDAP
ErrLDAPConnectionTest: "Не удалось выполнить проверку подключения LDAP. Проверьте адрес сервера, учетную запись привязки и настройки сети."
ErrLDAPLoginTest: "Не удалось выполнить проверку входа LDAP. Проверьте имя пользователя и пароль."
LDAPConnectionTestSuccess: "Проверка подключения LDAP выполнена успешно."
ErrLDAPDirectorySearch: "Не удалось прочитать пользователей LDAP. Проверьте подключение и настройки поиска."
ErrLDAPConfigLoad: "Не удалось загрузить конфигурацию LDAP."
ErrLDAPConfigSave: "Не удалось сохранить конфигурацию LDAP."
ErrLDAPURLInvalid: "Адрес сервера LDAP должен использовать ldap:// или ldaps:// и содержать допустимый хост."
ErrLDAPBindDNRequired: "Требуется DN привязки."
ErrLDAPBindPasswordRequired: "Требуется пароль привязки."
ErrLDAPUserOURequired: "Требуется OU пользователей."
ErrLDAPConnectTimeoutRange: "Время ожидания подключения должно быть от 1 до 120 секунд."
ErrLDAPSearchPageSizeRange: "Размер страницы запроса LDAP должен быть от 1 до 10000."
ErrLDAPResultPageSizeRange: "Размер страницы результатов не может превышать 200."
ErrLDAPAttributeMapOnlyName: "Сопоставление атрибутов поддерживает только поле name."
ErrLDAPNameAttributeRequired: "Требуется атрибут LDAP, сопоставленный с name."
ErrLDAPAttributeNameInvalid: "Сопоставление содержит недопустимое имя атрибута LDAP."
ErrLDAPUserFilterRequired: "Требуется фильтр пользователей."
ErrLDAPUserFilterInvalid: "Фильтр пользователей не является допустимым фильтром LDAP."
ErrLDAPAttributeMapObject: "Сопоставление атрибутов должно быть допустимым объектом JSON."
ErrLDAPImportModeInvalid: "Режим импорта должен включать выбранных или всех пользователей."
ErrLDAPImportSelectionRequired: "Выберите хотя бы одного пользователя LDAP для импорта."
ErrLDAPImportSelectionInvalid: "Выбранные пользователи LDAP недействительны или больше не существуют. Повторно прочитайте каталог."
ErrLDAPConfigChanged: "Конфигурация LDAP изменилась. Повторно прочитайте каталог и просмотрите импорт."
ErrLDAPRoleRequired: "Выберите роль для новых пользователей LDAP."
ErrLDAPImportPlanIncomplete: "Неполный план импорта LDAP нельзя выполнить."
ErrLDAPQueryTokenInvalid: "Результат запроса LDAP истек. Повторно прочитайте каталог."
ErrLDAPPlanTokenInvalid: "Предварительный просмотр импорта LDAP истек. Выполните его повторно."
ErrLDAPOperationFailed: "Операция LDAP завершилась ошибкой. Повторите попытку."
ErrLDAPEntryIdentityMissing: "В записи LDAP отсутствует стабильный идентификатор или имя пользователя."
ErrLDAPDuplicateExternalID: "LDAP вернул повторяющиеся идентификаторы пользователей."
ErrLDAPUsernameConflict: "Имя пользователя уже используется другим пользователем."
ErrLDAPUsernameSourceConflict: "Имя пользователя уже используется локальным пользователем или другим источником аутентификации."
ErrLDAPUsernameConcurrentConflict: "Во время импорта имя пользователя было занято другим пользователем."
ErrLDAPLocalCredentialsReadonly: "Имена и пароли пользователей LDAP управляются LDAP и не могут быть изменены локально."
ErrLDAPPasswordExpirationUnsupported: "Для пользователей LDAP не применяется локальная политика срока действия пароля."
ErrLDAPSyncSourceDisabled: "Включите AD/LDAP перед включением или запуском синхронизации."
ErrLDAPSyncConfigSave: "Не удалось сохранить настройки синхронизации LDAP."
ErrLDAPSyncSchedule: "Не удалось обновить расписание синхронизации LDAP."
ErrLDAPSyncCronInvalid: "Введите корректное пятикомпонентное выражение Cron."
ErrLDAPSyncWeekdayInvalid: "Выберите корректный день недели."
ErrLDAPSyncCronRequired: "Введите выражение Cron."
ErrLDAPSyncScheduleTypeInvalid: "Выберите корректный тип расписания синхронизации."
ErrLDAPSyncTimeInvalid: "Введите корректное время выполнения."
ErrLDAPSyncRunning: "Задача синхронизации LDAP уже выполняется."
ErrLDAPSyncDirectoryIncomplete: "LDAP вернул неполный результат полного запроса. Статусы пользователей не были изменены."
ErrLDAPSyncFailed: "Не удалось синхронизировать пользователей LDAP."
LDAPSyncSuccess: "Синхронизация пользователей LDAP успешно завершена."
ErrSAML2NotEnabled: "Аутентификация SAML2 не включена."
ErrSAML2ConfigInvalid: "Конфигурация SAML2 недействительна."
ErrSAML2ConfigChanged: "Конфигурация SAML2 изменилась. Запустите аутентификацию заново."
ErrSAML2PanelOriginMissing: "Введите корректный публичный URL 1Panel, содержащий только схему, хост и необязательный порт."
ErrSAML2MetadataInvalid: "Метаданные IdP отсутствуют или недействительны."
ErrSAML2MetadataURLInvalid: "URL метаданных IdP или одна из конечных точек в метаданных не разрешены."
ErrSAML2MetadataFetch: "Не удалось загрузить метаданные IdP."
ErrSAML2MetadataCertificate: "Метаданные IdP не содержат подходящего сертификата подписи."
ErrSAML2KeyPairInvalid: "Закрытый ключ и сертификат SP недействительны или не соответствуют друг другу."
ErrSAML2NameAttributeMissing: "Настроенный атрибут имени пользователя SAML2 отсутствует или недействителен."
ErrSAML2DefaultRoleInvalid: "Роль по умолчанию, настроенная для SAML2, недоступна."
ErrSAML2SLOUnavailable: "IdP не предоставляет поддерживаемую службу единого выхода."
ErrSAML2TestExpired: "Срок действия теста SAML2 истек. Запустите его снова."
ErrSAML2LoginExpired: "Срок действия запроса на вход SAML2 истек. Повторите попытку."
ErrSAML2InvalidState: "Состояние входа SAML2 недействительно или уже использовано."
ErrSAML2RequestBuild: "Не удалось сформировать запрос SAML2."
ErrSAML2ResponseInvalid: "Ответ SAML2 недействителен."
ErrSAML2SignatureInvalid: "Подпись SAML2 недействительна."
ErrSAML2Replay: "Сообщение SAML2 уже было использовано."
ErrSAML2NameIDMissing: "NameID SAML2 отсутствует или недействителен."
ErrSAML2SessionIndexMissing: "SessionIndex SAML2 отсутствует или недействителен."
ErrSAML2NameConflictLocal: "Имя пользователя SAML2 конфликтует с локальным пользователем."
ErrSAML2NameConflictLDAP: "Имя пользователя SAML2 конфликтует с пользователем LDAP."
ErrSAML2NameConflictOIDC: "Имя пользователя SAML2 конфликтует с пользователем OIDC."
ErrSAML2NameConflictSAML2: "Имя пользователя SAML2 конфликтует с другой учетной записью SAML2."
ErrSAML2Internal: "Во время аутентификации SAML2 произошла внутренняя ошибка. Повторите попытку позже."
ErrSAML2LogoutExpired: "Срок действия запроса на выход SAML2 истек."
ErrSAML2LogoutInvalid: "Сообщение выхода SAML2 недействительно."
ErrSAML2LocalCredentialsReadonly: "Имена пользователей и пароли SAML2 управляются поставщиком удостоверений и не могут быть изменены локально."
ErrSAML2PasswordExpirationUnsupported: "Для пользователей SAML2 не применяется локальная политика срока действия паролей."
# API key management
ErrAPIKeyConflict: "Ключ API изменён. Обновите данные и повторите попытку; при повторном создании используйте исходные параметры"
ErrAPIKeyNameExists: "Неотозванный ключ API с таким именем уже существует"
ErrAPIKeyNotFound: "Ключ API не существует или не принадлежит текущему пользователю"
ErrAPIKeyAppBindingDisabled: "Для этого ключа API привязка приложения через QR-код запрещена"
ErrAPIKeyTerminalUpgradeRequired: "Не удалось проверить поддержку авторизации терминала по ключу API. Проверьте подключение узла, обновите его Agent и повторите попытку."
LocalAppSyncDispatch: "Отправка запросов синхронизации локальных приложений"
LocalAppSyncDispatchNode: "Отправка запроса синхронизации узлу {{.node}} (задача узла: {{.taskID}})"
ErrLocalAppSyncDisabled: "Синхронизация локальных приложений между узлами отключена"
# MCP connection document
MCPDocumentTitle: "Инструкция для настройки подключения 1Panel MCP"
MCPDocumentIntro: "Передайте этот файл ИИ-агенту и попросите выполнить настройку по инструкции. Файл содержит полный Token; храните его конфиденциально."
MCPDocumentTaskTitle: "Задача настройки для ИИ-агента"
MCPDocumentTask: "Настройте 1Panel MCP в текущей среде для указанного ниже клиента, затем проверьте подключение и обнаружение инструментов. Используйте параметры подключения из приведённого ниже блока конфигурации."
MCPDocumentClientCodex: "Целевой клиент: Codex. Сначала уточните область действия конфигурации и фактический CODEX_HOME. Используйте действующий config.toml (по умолчанию ~/.codex/config.toml) и объедините приведённый ниже TOML с соответствующей записью mcp_servers."
MCPDocumentClientClaude: "Целевой клиент: Claude. Сначала уточните фактическую версию клиента. Приведённый ниже JSON предназначен для клиентов с поддержкой настройки MCP по HTTP. Используйте место хранения или способ управления конфигурацией, поддерживаемые этой версией; не добавляйте удалённую конфигурацию HTTP в раздел, предназначенный только для stdio."
MCPDocumentClientGeneric: "Целевой клиент: универсальный MCP-клиент. Сначала определите используемый клиент и область действия конфигурации. Если это неясно, спросите пользователя; не угадывайте расположение файла. Объедините параметры подключения ниже согласно синтаксису клиента."
MCPDocumentSteps: |-
1. Убедитесь, что целевой клиент поддерживает Streamable HTTP и заголовки запросов Bearer. Если версия их не поддерживает, объясните причину.
2. Прочитайте существующую конфигурацию и создайте резервную копию. Добавьте единственную запись сервера ниже, сохранив остальные настройки MCP и клиента. Если такое имя уже существует, обновите только эту запись.
3. Запишите URL и Authorization без изменения значений. Не создавайте новый Token и не меняйте права панели или состояние службы. Не помещайте Token в историю команд, журналы, ответы или Git.
4. Не отключайте проверку сертификатов HTTPS. Для частного CA запросите у пользователя доверенный CA; не доверяйте сертификату сервера автоматически и не отключайте проверку TLS. Используйте HTTP только в доверенных сетях; перед передачей через недоверенную сеть настройте HTTPS.
5. Перезагрузите конфигурацию средствами клиента и проверьте инициализацию MCP и tools/list. Не выполняйте tools/call или операции записи. Если перезагрузка недоступна, сообщите о необходимости нового сеанса или перезапуска. Сохранение файла само по себе не означает успешного подключения.
6. Укажите клиент, расположение конфигурации, имя сервера, результаты подключения и обнаружения инструментов, а также нерешённые вопросы. Скройте Token.
MCPDocumentConfigTitle: "Конфигурация подключения"
MCPDocumentNotes: "Сервер панели проверяет текущие права на инструменты, узлы и права владельца учётных данных при каждом запросе. После создания нового Token обновите конфигурацию клиента. Доступ отклоняется, если учётные данные отключены, отозваны или просрочены."
MCPDocumentHTTPWarning: "Этот адрес использует незашифрованный HTTP. Перед использованием в недоверенной сети настройте HTTPS."
# MCP management
ErrMCPConflict: "Конфликт данных MCP. Обновите и проверьте."
ErrMCPSettingsChanged: "Настройки службы изменились. Обновите и проверьте перед сохранением."
ErrMCPCredentialChanged: "Учётные данные изменились. Обновите и проверьте перед отправкой."
ErrMCPCredentialRevoked: "Учётные данные отозваны. Создайте новые."
ErrMCPCredentialNameExists: "Имя учётных данных уже существует. Выберите другое."
ErrMCPRequestReused: "Конфликт параметров запроса. Закройте и снова откройте окно."
ErrMCPInstallationRunning: "Идёт установка. Проверьте журнал установки."
ErrMCPServiceOperationRunning: "Выполняется операция службы. Обновите после её завершения."
ErrMCPEndpointManagedByWebsite: "Адрес управляется сайтом. Измените его в настройках сайта."
ErrMCPWebsiteConfigurationExists: "Есть привязка или незавершённая операция. Отключите «Привязать сайт после установки»."
ErrMCPWebsiteAlreadyBound: "Сайт уже привязан. Измените или удалите текущую привязку."
ErrMCPWebsiteNotBound: "Нет привязанного сайта. Обновите перед привязкой."
ErrMCPWebsiteMissing: "Исходный сайт отсутствует. Удалите недействительную привязку и привяжите снова."
ErrMCPWebsiteOperationPending: "Операция сайта не подтверждена. Обновите и повторите исходную операцию."
ErrMCPWebsiteDomainConflict: "Сочетание домена и порта занято. Измените домен или порт."
ErrMCPWebsiteOwnershipChanged: "Владелец сайта изменился. Проверьте сайт и настройки привязки."
ErrMCPWebsiteDomainChanged: "Домен сайта изменился. Проверьте его и обновите статус привязки."
ErrMCPWebsiteDirectoryChanged: "Каталог сайта или права изменились. Восстановите их перед повторной попыткой."
ErrMCPWebsiteProxyModified: "Конфликт конфигурации прокси. Восстановите настройки прокси MCP."
ErrMCPWebsiteModified: "Протокол или настройки сайта изменились. Проверьте и обновите."
ErrMCPWebsiteRequestChanged: "Запись операции не совпадает. Обновите и проверьте результат перед новой операцией."
ErrMCPWebsiteProxyNotLoaded: "Прокси MCP не загружен. Проверьте настройки сайта и OpenResty."
ErrMCPWebsiteStateUnconfirmed: "Статус сайта не подтверждён. Проверьте сайт и OpenResty, затем обновите."
ErrMCPPolicyChanged: "Каталог инструментов или права изменились. Обновите и проверьте перед сохранением."
ErrMCPCatalogUnavailable: "Каталог инструментов недоступен. Проверьте статус службы."
ErrMCPDisabled: "Служба MCP не включена."
ErrMCPSecretKeyUnavailable: "Шифрование учётных данных недоступно. Повторите позже."
ErrMCPSecretInvalid: "Не удалось расшифровать Token. Создайте его заново."
ErrMCPCredentialInactive: "Учётные данные отключены, просрочены или отозваны."
ErrMCPAuditUnavailable: "Аудит операций недоступен. Сначала проверьте результат операции."
ErrMCPEndpointUnavailable: "Сначала настройте корректный адрес MCP."
ErrMCPWebsitePending: "Результат операции сайта не подтверждён. Обновите и повторите исходную операцию."
ErrMCPWebsiteUnavailable: "Привязка сайта недоступна. Проверьте сайт и OpenResty."
ErrMCPWebsiteServiceRequired: "Сначала установите службу 1Panel MCP."
ErrMCPWebsiteHTTPPortRequired: "Для привязки HTTPS используйте HTTP-порт OpenResty."
# MCP installation tasks
PanelMCP: "1Panel MCP"
MCPInstallPrepare: "Проверить текущую службу MCP"
MCPInstallPullImage: "Проверить и загрузить образ"
MCPInstallCatalog: "Проверить контракт инструментов"
MCPInstallStarting: "Запустить контейнер и проверить его работоспособность"
MCPInstallSaving: "Сохранить конфигурацию службы"
MCPInstallCompleted: "Установка службы MCP завершена"
MCPInstallRollback: "Установка не удалась; восстановить предыдущую службу MCP"
MCPInstallBindWebsite: "Создать привязанный сайт"
MCPInstallWebsiteFailed: "Служба установлена, привязка сайта не удалась. Исправьте её в настройках службы."
MCPInstallInterrupted: "Перезапуск панели прервал установку. Проверьте статус службы."
MCPInstallFailed: "Установка не удалась. Проверьте Docker, образ и журналы панели."
MCPInstallRecoveryFailed: "Установка не удалась, служба восстановлена не полностью. Проверьте её статус."
MCPInstallLocalImage: "Образ уже есть локально; пропустить загрузку"
MCPInstallVerifyImage: "Проверить версию образа и контракт управляемой службы"
MCPInstallVerifiedImage: "Образ успешно проверен"
PHPExtensionsNoTargets: "После исключения исходного узла не осталось целевых узлов"
PHPExtensionsSyncTask: "Синхронизация шаблона расширений PHP [{{ .name }}]"
PHPExtensionsSyncSkipped: "На узле [{{ .node }}] уже есть идентичный шаблон; пропущено"
MCPInstallCleanup: "Очистка предыдущего контейнера"
MCPInstallOldContainerRemoved: "Предыдущий контейнер удалён"
MCPInstallOldImageRemoved: "Предыдущий образ удалён"
MCPInstallOldImageKept: "Предыдущий образ сохранён"
MCPInstallOldImageRetained: "Предыдущий образ используется или имеет другие теги; он сохранён."
MCPInstallCleanupSkipped: "Предыдущий контейнер отсутствует; удаление образа пропущено."
MCPInstallCleanupFailed: "Служба MCP обновлена, но старые ресурсы очищены не полностью. Проверьте их вручную."