diff --git a/backend/app/dto/auth.go b/backend/app/dto/auth.go index ccaa2ec12..0f0d1088d 100644 --- a/backend/app/dto/auth.go +++ b/backend/app/dto/auth.go @@ -29,7 +29,7 @@ type Login struct { Captcha string `json:"captcha"` CaptchaID string `json:"captchaID"` AuthMethod string `json:"authMethod" validate:"required,oneof=jwt session"` - Language string `json:"language" validate:"required,oneof=zh en tw"` + Language string `json:"language" validate:"required,oneof=zh en tw ru"` } type MFALogin struct { diff --git a/backend/i18n/i18n.go b/backend/i18n/i18n.go index c102e2fcd..91175af82 100644 --- a/backend/i18n/i18n.go +++ b/backend/i18n/i18n.go @@ -75,7 +75,6 @@ func GetMsgByKey(key string) string { return content } -//go:embed lang/* var fs embed.FS var bundle *i18n.Bundle @@ -100,6 +99,7 @@ func Init() { _, _ = bundle.LoadMessageFileFS(fs, "lang/zh-Hant.yaml") _, _ = bundle.LoadMessageFileFS(fs, "lang/fa.yaml") _, _ = bundle.LoadMessageFileFS(fs, "lang/pt.yaml") + _, _ = bundle.LoadMessageFileFS(fs, "lang/ru.yaml") } func UseI18nForCmd(lang string) { diff --git a/backend/i18n/lang/ru.yaml b/backend/i18n/lang/ru.yaml new file mode 100644 index 000000000..62eb5fb94 --- /dev/null +++ b/backend/i18n/lang/ru.yaml @@ -0,0 +1,283 @@ +ErrInvalidParams: "Ошибка параметра запроса: {{ .detail }}" +ErrTokenParse: "Ошибка генерации токена: {{ .detail }}" +ErrInitialPassword: "Ошибка исходного пароля" +ErrInternalServer: "Внутренняя ошибка сервиса: {{ .detail }}" +ErrRecordExist: "Запись уже существует" +ErrRecordNotFound: "Записи не найдены" +ErrStructTransform: "Ошибка преобразования типа: {{ .detail }}" +ErrNotLogin: "Пользователь не вошел в систему: {{ .detail }}" +ErrPasswordExpired: "Текущий пароль истек: {{ .detail }}" +ErrNotSupportType: "Система не поддерживает текущий тип: {{ .detail }}" +ErrApiConfigStatusInvalid: "Доступ к API интерфейсу запрещен: {{ .detail }}" +ErrApiConfigKeyInvalid: "Ошибка ключа API интерфейса: {{ .detail }}" +ErrApiConfigIPInvalid: "IP API интерфейса отсутствует в белом списке: {{ .detail }}" +ErrApiConfigDisable: "Этот интерфейс запрещает использование вызовов API интерфейса: {{ .detail }}" + +#common +ErrNameIsExist: "Имя уже существует" +ErrDemoEnvironment: "Демо-сервер, операция запрещена!" +ErrCmdTimeout: "Время выполнения команды истекло!" +ErrCmdIllegal: "Команда содержит недопустимые символы. Пожалуйста, измените и попробуйте снова!" +ErrPortExist: "{{ .port }} порт уже занят {{ .type }} [{{ .name }}]" +TYPE_APP: "Приложение" +TYPE_RUNTIME: "Среда выполнения" +TYPE_DOMAIN: "Доменное имя" +ErrTypePort: "Ошибка формата порта {{ .name }}" +ErrTypePortRange: "Диапазон портов должен быть между 1-65535" +Success: "Успех" +Failed: "Неудача" +SystemRestart: "Перезагрузка системы приводит к прерыванию задачи" + +#app +ErrPortInUsed: "Порт {{ .detail }} уже используется" +ErrAppLimit: "Превышен лимит установки приложения" +ErrAppRequired: "Требуется приложение {{ .detail }}" +ErrNotInstall: "Приложение не установлено" +ErrPortInOtherApp: "Порт {{ .port }} уже используется приложением {{ .apps }}" +ErrDbUserNotValid: "База данных акций, имя пользователя и пароль не совпадают!" +ErrDockerComposeNotValid: "Ошибка формата файла docker-compose!" +ErrUpdateBuWebsite: "Приложение успешно обновлено, но изменение конфигурационного файла веб-сайта не удалось, пожалуйста, проверьте конфигурацию!" +Err1PanelNetworkFailed: "Не удалось создать сеть контейнера по умолчанию! {{ .detail }}" +ErrFileParse: "Не удалось разобрать файл docker-compose приложения!" +ErrInstallDirNotFound: "Директория установки не существует" +AppStoreIsUpToDate: "Обновлено" +LocalAppVersionNull: "Приложение {{.name}} не синхронизировано с версией! Невозможно добавить в список приложений" +LocalAppVersionErr: "{{.name}} не удалось синхронизировать версию {{.version}}! {{.err}}" +ErrFileNotFound: "Файл {{.name}} не существует" +ErrFileParseApp: "Не удалось проанализировать файл {{.name}} {{.err}}" +ErrAppDirNull: "Папка версии не существует" +LocalAppErr: "Синхронизация приложения {{.name}} не удалась! {{.err}}" +ErrContainerName: "Имя контейнера уже существует" +ErrAppSystemRestart: "Перезапуск 1Panel приводит к завершению задачи" +ErrCreateHttpClient: "Не удалось создать HTTP-запрос {{.err}}" +ErrHttpReqTimeOut: "Превышено время ожидания запроса {{.err}}" +ErrHttpReqFailed: "Запрос не выполнен {{.err}}" +ErrHttpReqNotFound: "Файл не существует" +ErrNoSuchHost: "Сбой сетевого подключения" +ErrImagePullTimeOut: "Тайм-аут загрузки образа" +ErrContainerNotFound: "Контейнер {{ .name }} не существует" +ErrContainerMsg: "Контейнер {{ .name }} работает ненормально, пожалуйста, проверьте журнал на странице контейнера для подробностей" +ErrAppBackup: "Резервное копирование приложения {{ .name }} не удалось, ошибка {{.err}}" +ErrImagePull: "Не удалось загрузить образ {{ .name }}, ошибка {{.err}}" +ErrVersionTooLow: "Текущая версия 1Panel слишком стара для обновления магазина приложений, пожалуйста, обновите версию" +ErrAppNameExist: "Имя приложения уже существует" +AppStoreIsSyncing: "Магазин приложений синхронизируется, пожалуйста, попробуйте позже" +ErrGetCompose: "Не удалось получить файл docker-compose.yml! {{ .detail }}" +ErrAppWarn: "Аномальный статус, пожалуйста, проверьте журнал" +ErrAppParamKey: "Исключение в поле параметра {{ .name }}" +ErrAppUpgrade: "Не удалось обновить приложение {{ .name }} {{ .err }}" +AppRecover: "Приложение {{ .name }} откатилось " +PullImageStart: "Начало загрузки образа {{ .name }}" +PullImageSuccess: "Образ успешно загружен" +UpgradeAppStart: "Начало обновления приложения {{ .name }}" +UpgradeAppSuccess: "Приложение {{ .name }} успешно обновлено" + +#file +ErrFileCanNotRead: "Файл недоступен для чтения" +ErrFileToLarge: "Файл слишком большой" +ErrPathNotFound: "Путь не найден" +ErrMovePathFailed: "Целевой путь не может содержать исходный путь!" +ErrLinkPathNotFound: "Целевой путь не существует!" +ErrFileIsExist: "Файл или каталог уже существует!" +ErrFileUpload: "Не удалось загрузить файл {{.name}} {{.detail}}" +ErrFileDownloadDir: "Скачивание папки не поддерживается" +ErrCmdNotFound: "Команда {{ .name}} не существует, пожалуйста, сначала установите эту команду на хосте" +ErrSourcePathNotFound: "Исходный каталог не существует" +ErrFavoriteExist: "Этот путь уже в избранном" +ErrInvalidChar: "Недопустимые символы запрещены" +ErrPathNotDelete: "Выбранный каталог не может быть удален" + +#website +ErrDomainIsExist: "Доменное имя уже существует" +ErrAliasIsExist: "Псевдоним уже существует" +ErrAppDelete: "Другой веб-сайт использует это приложение" +ErrGroupIsUsed: "Группа используется и не может быть удалена" +ErrBackupMatch: "файл резервной копии не соответствует текущим данным части сайта: {{ .detail}}" +ErrBackupExist: "файл резервной копии соответствует части исходных данных, которая не существует: {{ .detail}}" +ErrPHPResource: "Локальная среда выполнения не поддерживает переключение!" +ErrPathPermission: "Обнаружена папка с правами доступа не 1000:1000 в каталоге индекса, что может вызвать ошибку отказа в доступе при доступе к веб-сайту. Пожалуйста, нажмите кнопку сохранения выше" +ErrDomainIsUsed: "Домен уже используется веб-сайтом {{ .name }}" +ErrDomainFormat: "Ошибка формата домена {{ .name }}" +ErrDefaultAlias: "default — зарезервированное кодовое имя, пожалуйста, используйте другое кодовое имя" +ErrImageNotExist: "Образ рабочей среды {{.name}} не существует, пожалуйста, перенастройте рабочую среду" + +#ssl +ErrSSLCannotDelete: "Сертификат {{ .name }} используется веб-сайтом и не может быть удален" +ErrAccountCannotDelete: "Сертификат, связанный с учетной записью, не может быть удален" +ErrSSLApply: "Сертификат продолжает успешно подписываться, но перезагрузка openresty не удалась, пожалуйста, проверьте конфигурацию!" +ErrEmailIsExist: "Электронная почта уже существует" +ErrSSLKeyNotFound: "Файл закрытого ключа не существует" +ErrSSLCertificateNotFound: "Файл сертификата не существует" +ErrSSLKeyFormat: "Ошибка проверки файла закрытого ключа" +ErrSSLCertificateFormat: "Ошибка формата файла сертификата, пожалуйста, используйте формат pem" +ErrEabKidOrEabHmacKeyCannotBlank: "EabKid или EabHmacKey не могут быть пустыми" +ErrOpenrestyNotFound: "Режим HTTP требует предварительной установки Openresty" +ApplySSLStart: "Начать подачу заявки на сертификат, доменное имя [{{ .domain }}] метод подачи заявки [{{ .type }}] " +dnsAccount: "Автоматический DNS" +dnsManual: "Ручной DNS" +http: "HTTP" +ApplySSLFailed: "Заявка на сертификат для [{{ .domain }}] не удалась, {{.detail}} " +ApplySSLSuccess: "Заявка на сертификат для [{{ .domain }}] успешна! " +DNSAccountName: "Учетная запись DNS [{{ .name }}] производитель [{{.type}}]" +PushDirLog: "Сертификат отправлен в каталог [{{ .path }}] {{ .status }}" +ErrDeleteCAWithSSL: "Существует выданный сертификат под текущей организацией, удаление невозможно" +ErrDeleteWithPanelSSL: "Конфигурация SSL панели использует этот сертификат и не может быть удален" +ErrDefaultCA: "Уполномоченный центр по умолчанию не может быть удален" +ApplyWebSiteSSLLog: "Начать обновление сертификата веб-сайта {{ .name }}" +ErrUpdateWebsiteSSL: "Не удалось обновить сертификат веб-сайта {{ .name }}: {{ .err }}" +ApplyWebSiteSSLSuccess: "Сертификат веб-сайта успешно обновлен" +ErrExecShell: "Не удалось выполнить скрипт {{ .err }}" +ExecShellStart: "Начать выполнение скрипта" +ExecShellSuccess: "Скрипт успешно выполнен" +StartUpdateSystemSSL: "Начать обновление системного сертификата" +UpdateSystemSSLSuccess: "Системный сертификат успешно обновлен" + +#mysql +ErrUserIsExist: "Текущий пользователь уже существует. Пожалуйста, введите нового пользователя" +ErrDatabaseIsExist: "Текущая база данных уже существует. Пожалуйста, введите новую базу данных" +ErrExecTimeOut: "Время выполнения SQL запроса истекло, пожалуйста, проверьте базу данных" +ErrRemoteExist: "Удаленная база данных с таким именем уже существует, пожалуйста, измените и попробуйте снова" +ErrLocalExist: "Локальная база данных с таким именем уже существует, пожалуйста, измените и попробуйте снова" + +#redis +ErrTypeOfRedis: "Тип восстановленного файла не соответствует текущему режиму сохранения. Измените тип файла и попробуйте снова" + +#container +ErrInUsed: "{{ .detail }} используется и не может быть удален" +ErrObjectInUsed: "Этот объект используется и не может быть удален" +ErrPortRules: "Количество портов не совпадает, пожалуйста, введите заново!" +ErrPgImagePull: "Тайм-аут загрузки образа. Пожалуйста, настройте ускорение загрузки образа или вручную загрузите образ postgres:16.0-alpine и попробуйте снова" + +#runtime +ErrDirNotFound: "Папка сборки не существует! Пожалуйста, проверьте целостность файла!" +ErrFileNotExist: "Файл {{ .detail }} не существует! Пожалуйста, проверьте целостность исходного файла!" +ErrImageBuildErr: "Не удалось создать образ" +ErrImageExist: "Образ уже существует!" +ErrDelWithWebsite: "Рабочая среда уже связана с веб-сайтом и не может быть удалена" +ErrRuntimeStart: "Не удалось запустить" +ErrPackageJsonNotFound: "Файл package.json не существует" +ErrScriptsNotFound: "Конфигурационный элемент scripts не найден в package.json" +ErrContainerNameNotFound: "Не удалось получить имя контейнера, пожалуйста, проверьте файл .env" +ErrNodeModulesNotFound: "Папка node_modules не существует! Пожалуйста, отредактируйте среду выполнения или дождитесь успешного запуска среды выполнения" + +#setting +ErrBackupInUsed: "Учетная запись резервного копирования уже используется в cronjob и не может быть удалена." +ErrBackupCheck: "Проверка подключения учетной записи резервного копирования не выполнена {{ .err}}" +ErrOSSConn: "Не удалось получить последнюю версию, пожалуйста, проверьте возможность подключения сервера к внешней сети." +ErrEntrance: "Информация о безопасном входе неверна. Пожалуйста, проверьте и попробуйте снова!" + +#tool +ErrConfigNotFound: "Конфигурационный файл не существует" +ErrConfigParse: "Ошибка формата конфигурационного файла" +ErrConfigIsNull: "Конфигурационный файл не может быть пустым" +ErrConfigDirNotFound: "Каталог выполнения не существует" +ErrConfigAlreadyExist: "Конфигурационный файл с таким именем уже существует" +ErrUserFindErr: "Не удалось найти пользователя {{ .name }} {{ .err }}" + +#ssh +ErrFirewallNone: "На системе не обнаружен сервис firewalld или ufw. Пожалуйста, проверьте и попробуйте снова!" +ErrFirewallBoth: "На системе обнаружены оба сервиса firewalld и ufw. Чтобы избежать конфликтов, удалите один и попробуйте снова!" + +#cronjob +ErrBashExecute: "Ошибка выполнения скрипта, пожалуйста, проверьте конкретную информацию в области вывода задачи." +ErrCutWebsiteLog: "Не удалось разрезать лог веб-сайта {{ .name }}, ошибка {{ .err }}" +CutWebsiteLogSuccess: "Лог веб-сайта {{ .name }} успешно разрезан, путь к резервной копии {{ .path }}" + +#toolbox +ErrNotExistUser: "Текущий пользователь не существует. Пожалуйста, измените и попробуйте снова!" +ErrBanAction: "Установка не выполнена, текущий сервис {{ .name }} недоступен, пожалуйста, проверьте и попробуйте снова!" +ErrClamdscanNotFound: "Команда clamdscan не обнаружена, пожалуйста, обратитесь к документации для установки!" + +#waf +ErrScope: "Изменение этой конфигурации не поддерживается" +ErrStateChange: "Не удалось изменить состояние" +ErrRuleExist: "Правило уже существует" +ErrRuleNotExist: "Правило не существует" +ErrParseIP: "Ошибка формата IP" +ErrDefaultIP: "default — зарезервированное имя, пожалуйста, измените на другое имя" +ErrGroupInUse: "IP-группа используется в черно/белом списке и не может быть удалена" +ErrGroupExist: "Имя IP-группы уже существует" +ErrIPRange: "Неверный диапазон IP" +ErrIPExist: "IP уже существует" + +#license +ErrLicense: "Ошибка формата лицензии, пожалуйста, проверьте и попробуйте снова!" +ErrLicenseCheck: "Проверка лицензии не выполнена, пожалуйста, проверьте и попробуйте снова!" +ErrLicenseSave: "Не удалось сохранить информацию о лицензии, ошибка {{ .err }}, пожалуйста, попробуйте снова!" +ErrLicenseSync: "Не удалось синхронизировать информацию о лицензии, в базе данных не обнаружена информация о лицензии!" +ErrXpackNotFound: "Этот раздел является функцией профессионального издания, пожалуйста, сначала импортируйте лицензию в интерфейсе Настройки панели — Лицензия" +ErrXpackNotActive: "Этот раздел является функцией профессионального издания, пожалуйста, сначала синхронизируйте статус лицензии в интерфейсе Настройки панели — Лицензия" +ErrXpackOutOfDate: "Текущая лицензия истекла, пожалуйста, повторно импортируйте лицензию в интерфейсе Настройки панели — Лицензия" +ErrXpackLost: "Лицензия достигла максимального числа попыток повторной попытки. Пожалуйста, перейдите на страницу [Настройки] [Лицензия] и вручную нажмите кнопку синхронизации, чтобы обеспечить корректную работу функций профессиональной версии." +ErrXpackTimeout: "Превышено время ожидания запроса, возможно, нестабильное сетевое соединение, пожалуйста, повторите попытку позже!" + +#license +ErrAlert: "Ошибка формата информации об оповещении, пожалуйста, проверьте и попробуйте снова!" +ErrAlertPush: "Ошибка отправки оповещения, пожалуйста, проверьте и попробуйте снова!" +ErrAlertSave: "Ошибка сохранения оповещения, пожалуйста, проверьте и попробуйте снова!" +ErrAlertSync: "Ошибка синхронизации оповещения, пожалуйста, проверьте и попробуйте снова!" +ErrAlertRemote: "Ошибка удаленного оповещения, пожалуйста, проверьте и попробуйте снова!" + +#cmd +AppVersion: "Версия приложения" +AppCommands: "Команды, связанные с приложением" +AppInit: "Инициализировать приложение" +AppKeyVal: "Ключ приложения (поддерживает только английский)" +AppCreateFileErr: "Не удалось создать файл {{ .name }} {{ .err }}" +AppCreateDirErr: "Не удалось создать папку {{ .name }} {{ .err }}" +AppMissKey: "Отсутствует ключ приложения, используйте -k для указания" +AppMissVersion: "Отсутствует версия приложения, используйте -v для указания" +AppVersionExist: "Версия уже существует!" +AppCreateSuccessful: "Создание прошло успешно!" +AppWriteErr: "Ошибка записи файла {{ .name }} {{ .err }}" +SudoHelper: "Пожалуйста, используйте {{ .cmd }} или переключитесь на пользователя root" +ListenIPCommands: "Переключить IP прослушивания" +ListenIPv4: "Прослушивать IPv4" +ListenIPv6: "Прослушивать IPv6" +ListenChangeSuccessful: "Переключение успешно! Теперь прослушивается {{ .value }}" +ResetCommands: "Сбросить информацию системы" +ResetMFA: "Отменить двухфакторную аутентификацию 1Panel" +ResetHttps: "Отменить вход в 1Panel по https" +ResetEntrance: "Отменить безопасный вход в 1Panel" +ResetIPs: "Отменить авторизованные IP-ограничения 1Panel" +ResetDomain: "Отменить привязку домена 1Panel" +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: "Откат успешен! Перезапуск службы, пожалуйста, подождите..." +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 }}, пожалуйста, вручную перезагрузите брандмауэр." +UserInfo: "Получить информацию панели" +UserInfoAddr: "Адрес панели: " +UserInfoPassHelp: "Подсказка: чтобы изменить пароль, вы можете выполнить команду: " +DBConnErr: "Ошибка: не удалось инициализировать подключение к базе данных, {{ .err }}" +SystemVersion: "версия: " +SystemMode: "режим: " diff --git a/frontend/src/lang/index.ts b/frontend/src/lang/index.ts index 828da40a9..b00da9e39 100644 --- a/frontend/src/lang/index.ts +++ b/frontend/src/lang/index.ts @@ -2,6 +2,7 @@ import { createI18n } from 'vue-i18n'; import zh from './modules/zh'; import tw from './modules/tw'; import en from './modules/en'; +import ru from './modules/ru'; const i18n = createI18n({ legacy: false, @@ -12,6 +13,7 @@ const i18n = createI18n({ zh, tw, en, + ru, }, warnHtmlMessage: false, }); diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts new file mode 100644 index 000000000..607874d69 --- /dev/null +++ b/frontend/src/lang/modules/ru.ts @@ -0,0 +1,2535 @@ +import fit2cloudEnLocale from 'fit2cloud-ui-plus/src/locale/lang/en'; + +let xpackEnLocale = {}; +const xpackModules = import.meta.glob('../../xpack/lang/ru.ts', { eager: true }); +if (xpackModules['../../xpack/lang/ru.ts']) { + xpackEnLocale = xpackModules['../../xpack/lang/ru.ts']['default'] || {}; +} + +const message = { + commons: { + true: 'да', + false: 'нет', + colon: ': ', + example: 'Например, ', + fit2cloud: 'FIT2CLOUD', + lingxia: 'Lingxia', + button: { + create: 'Создать ', + add: 'Добавить ', + save: 'Сохранить ', + set: 'Изменить конфигурацию', + sync: 'Синхронизировать ', + delete: 'Удалить', + edit: 'Редактировать ', + enable: 'Включить', + disable: 'Отключить', + confirm: 'Подтвердить', + cancel: 'Отмена', + reset: 'Сбросить', + restart: 'Перезапустить', + conn: 'Подключить', + disconnect: 'Отключить', + clean: 'Очистить', + login: 'Войти', + close: 'Закрыть', + stop: 'Остановить', + start: 'Запустить', + view: 'Просмотр', + watch: 'Наблюдать', + handle: 'Запустить', + expand: 'Развернуть', + collapse: 'Свернуть', + log: 'Логи', + back: 'Назад', + backup: 'Резервное копирование', + recover: 'Восстановить', + retry: 'Повторить', + upload: 'Загрузить', + download: 'Скачать', + init: 'Инициализировать', + verify: 'Проверить', + saveAndEnable: 'Сохранить и включить', + import: 'Импорт', + search: 'Поиск', + refresh: 'Обновить', + get: 'Получить', + upgrade: 'Обновить', + ignore: 'Игнорировать обновление', + copy: 'Копировать', + random: 'Случайно', + uninstall: 'Удалить', + fullscreen: 'Полный экран', + quitFullscreen: 'Выйти из полного экрана', + update: 'Редактировать', + showAll: 'Показать все', + hideSome: 'Скрыть некоторые', + agree: 'Согласен', + notAgree: 'Не согласен', + preview: 'Предпросмотр', + open: 'Открыть', + notSave: 'Не сохранять', + createNewFolder: 'Создать новую папку', + createNewFile: 'Создать новый файл', + helpDoc: 'Справка', + unbind: 'Отвязать', + }, + search: { + timeStart: 'Время начала', + timeEnd: 'Время окончания', + timeRange: 'До', + dateStart: 'Дата начала', + dateEnd: 'Дата окончания', + }, + table: { + all: 'Все', + total: 'Всего {0}', + name: 'Имя', + type: 'Тип', + status: 'Статус', + statusSuccess: 'Успешно', + statusFailed: 'Ошибка', + statusWaiting: 'Ожидание...', + records: 'Записи', + group: 'Группа', + createdAt: 'Время создания', + publishedAt: 'Время публикации', + date: 'Дата', + updatedAt: 'Время обновления', + operate: 'Операции', + message: 'Сообщение', + description: 'Описание', + interval: 'Интервал', + user: 'Владелец', + title: 'Заголовок', + port: 'Порт', + forward: 'Переадресация', + protocol: 'Протокол', + tableSetting: 'Настройки таблицы', + refreshRate: 'Частота обновления', + refreshRateUnit: 'Без обновления | {n} секунда/раз | {n} секунд/раз', + selectColumn: 'Выбрать столбец', + }, + loadingText: { + Upgrading: 'Обновление системы, пожалуйста, подождите...', + Restarting: 'Перезагрузка системы, пожалуйста, подождите...', + Recovering: 'Восстановление из снапшота, пожалуйста, подождите...', + Rollbacking: 'Откат из снапшота, пожалуйста, подождите...', + }, + msg: { + noneData: 'Нет данных', + delete: 'Эта операция удаления не может быть отменена. Хотите продолжить?', + clean: 'Эта операция очистки не может быть отменена. Хотите продолжить?', + deleteTitle: 'Удалить', + deleteSuccess: 'Успешно удалено', + loginSuccess: 'Успешный вход', + operationSuccess: 'Операция выполнена успешно', + copySuccess: 'Успешно скопировано', + notSupportOperation: 'Эта операция не поддерживается', + requestTimeout: 'Время запроса истекло, попробуйте позже', + infoTitle: 'Подсказка', + notRecords: 'Для текущей задачи не создано записей выполнения', + sureLogOut: 'Вы уверены, что хотите выйти?', + createSuccess: 'Успешно создано', + updateSuccess: 'Успешно обновлено', + uploadSuccess: 'Успешно загружено', + operate: 'Операция', + operateConfirm: 'Если вы уверены в операции, введите её вручную: ', + inputOrSelect: 'Пожалуйста, выберите или введите', + copyFailed: 'Не удалось скопировать', + operatorHelper: 'Операция "{1}" будет выполнена над "{0}" и не может быть отменена. Хотите продолжить?', + notFound: 'Извините, запрошенная страница не существует.', + unSupportType: 'Текущий тип файла не поддерживается.', + unSupportSize: 'Загруженный файл превышает {0}M, пожалуйста, подтвердите!', + fileExist: 'Файл уже существует в текущей папке. Повторная загрузка не поддерживается.', + fileNameErr: + 'Вы можете загружать только файлы, имя которых содержит от 1 до 256 символов, включая английские буквы, китайские иероглифы, цифры или точки (.-_)', + confirmNoNull: 'Убедитесь, что значение {0} не пустое.', + errPort: 'Неверная информация о порте, пожалуйста, проверьте!', + remove: 'Удалить', + backupHelper: 'Текущая операция создаст резервную копию {0}. Хотите продолжить?', + recoverHelper: 'Восстановление из файла {0}. Эта операция необратима. Хотите продолжить?', + refreshSuccess: 'Обновление успешно', + rootInfoErr: 'Это уже корневой каталог', + resetSuccess: 'Сброс успешен', + creatingInfo: 'Создание, эта операция не нужна', + }, + login: { + username: 'Имя пользователя', + password: 'Пароль', + welcome: 'Добро пожаловать, введите имя пользователя и пароль для входа!', + errorAuthInfo: 'Введенное имя пользователя или пароль неверны, пожалуйста, введите заново!', + errorMfaInfo: 'Неверная информация аутентификации, попробуйте еще раз!', + captchaHelper: 'Капча', + errorCaptcha: 'Ошибка кода капчи!', + notSafe: 'Доступ запрещен', + safeEntrance1: 'В текущей среде включен безопасный вход', + safeEntrance2: 'Введите следующую команду в SSH-терминале для просмотра входа в панель: 1pctl user-info', + errIP1: 'В текущей среде включен доступ по авторизованному IP-адресу', + errDomain1: 'В текущей среде включена привязка домена доступа', + errHelper: 'Для сброса информации о привязке выполните следующую команду в SSH-терминале: ', + codeInput: 'Пожалуйста, введите 6-значный код подтверждения MFA', + mfaTitle: 'MFA Сертификация', + mfaCode: 'MFA код подтверждения', + title: 'Панель управления Linux сервером', + licenseHelper: + 'Согласен « Лицензионное соглашение сообщества »', + errorAgree: 'Нажмите, чтобы согласиться с Лицензией программного обеспечения сообщества', + logout: 'Выход', + agreeTitle: 'Соглашение', + agreeContent: + 'Для лучшей защиты ваших законных прав и интересов, пожалуйста, прочитайте и согласитесь со следующим соглашением « Лицензионное соглашение сообщества »', + }, + rule: { + username: 'Введите имя пользователя', + password: 'Введите пароль', + rePassword: 'Подтверждение пароля не совпадает с паролем.', + requiredInput: 'Это поле обязательно для заполнения.', + requiredSelect: 'Выберите элемент из списка', + illegalInput: 'Это поле не должно содержать недопустимых символов.', + commonName: + 'Это поле должно начинаться с неспециальных символов и должно состоять из английских букв, китайских иероглифов, цифр, ".", "-" и "_" длиной 1-128.', + userName: 'Это поле должно состоять из английских букв, китайских иероглифов, цифр и "_" длиной 3-30.', + simpleName: + 'Это поле не должно начинаться с подчеркивания и должно состоять из английских букв, цифр и "_" длиной 3-30.', + simplePassword: + 'Это поле не должно начинаться с подчеркивания и должно состоять из английских букв, цифр и "_" длиной 1-30.', + dbName: 'Это поле не должно начинаться с подчеркивания и должно состоять из английских букв, цифр и "_" длиной 1-64.', + imageName: 'Это поле должно состоять из английских букв, цифр, ":", "@", "/", ".", "-" и "_" длиной 1-256.', + composeName: 'Поддерживаются неспециальные символы в начале, строчные буквы, цифры, - и _, длина 1-256', + volumeName: 'Это поле должно состоять из английских букв, цифр, ".", "-" и "_" длиной 2-30.', + supervisorName: + 'Это поле должно начинаться с неспециальных символов и должно состоять из английских букв, цифр, "-" и "_" длиной 1-128.', + complexityPassword: + 'Это поле должно состоять из английских букв, цифр длиной 8-30 и содержать как минимум два специальных символа.', + commonPassword: 'Длина этого поля должна быть больше 6.', + linuxName: + 'Длина этого поля должна быть от 1 до 128. Поле не должно содержать эти специальные символы: "{0}".', + email: 'Это поле должно быть действительным адресом электронной почты.', + number: 'Это поле должно быть числом.', + integer: 'Это поле должно быть положительным целым числом.', + ip: 'Это поле должно быть действительным IP-адресом.', + host: 'Это поле должно быть действительным IP-адресом или доменным именем.', + hostHelper: 'Поддерживается ввод IP-адреса или доменного имени', + port: 'Это поле должно быть действительным номером порта.', + selectHelper: 'Пожалуйста, выберите правильный файл {0}', + domain: 'Это поле должно быть в формате: example.com или example.com:8080.', + databaseName: 'Это поле должно состоять из английских букв, цифр и "_" длиной 1-30.', + ipErr: 'Это поле должно быть действительным IP-адресом.', + numberRange: 'Это поле должно быть числом между {0} и {1}.', + paramName: 'Это поле должно состоять из английских букв, цифр, ".", "-" и "_" длиной 2-30.', + paramComplexity: + 'Это поле не должно начинаться и заканчиваться специальными символами и должно состоять из английских букв, цифр, "{0}" длиной 6-128.', + paramUrlAndPort: 'Это поле должно быть в формате "http(s)://(доменное имя/ip):(порт)".', + nginxDoc: 'Это поле должно состоять из английских букв, цифр и ".".', + appName: + 'Это поле не должно начинаться и заканчиваться символами "-" и "_" и должно состоять из английских букв, цифр, "-" и "_" длиной 2-30.', + containerName: 'Поддерживаются буквы, цифры, -, _ и .; не может начинаться с - _ или .; длина: 2-128', + mirror: 'Адрес ускорения зеркала должен начинаться с http(s)://, поддерживает английские буквы (как заглавные, так и строчные), цифры, . / и -, и не должен содержать пустых строк.', + disableFunction: 'Поддерживаются только буквы, подчеркивания и запятые', + leechExts: 'Поддерживаются только буквы, цифры и запятые', + paramSimple: 'Поддерживаются строчные буквы и цифры, длина 1-128', + filePermission: 'Ошибка прав доступа к файлу', + formatErr: 'Ошибка формата, пожалуйста, проверьте и повторите попытку', + phpExtension: 'Поддерживаются только запятые, подчеркивания, строчные английские буквы и цифры', + paramHttp: 'Должно начинаться с http:// или https://', + phone: 'Неверный формат номера телефона', + }, + res: { + paramError: 'Запрос не удался, попробуйте позже!', + forbidden: 'У текущего пользователя нет прав', + serverError: 'Ошибка сервиса', + notFound: 'Ресурс не существует', + commonError: 'Запрос не удался', + }, + service: { + serviceNotStarted: 'Сервис {0} не запущен.', + }, + status: { + running: 'Работает', + done: 'Завершено', + scanFailed: 'Неполный', + success: 'Успешно', + waiting: 'Ожидание', + waiting1: 'Ожидание', + failed: 'Ошибка', + stopped: 'Остановлен', + error: 'Ошибка', + created: 'Создан', + restarting: 'Перезапуск', + uploading: 'Загрузка', + unhealthy: 'Нездоровый', + removing: 'Удаление', + paused: 'Приостановлен', + exited: 'Вышел', + dead: 'Мертв', + installing: 'Установка', + enabled: 'Включен', + disabled: 'Отключен', + normal: 'Нормально', + building: 'Сборка', + downloaderr: 'Ошибка загрузки', + upgrading: 'Обновление', + upgradeerr: 'Ошибка обновления', + pullerr: 'Ошибка получения образа', + rebuilding: 'Пересборка', + deny: 'Отказано', + accept: 'Принято', + used: 'Используется', + unUsed: 'Не используется', + starting: 'Запуск', + recreating: 'Пересоздание', + creating: 'Создание', + systemrestart: 'Прерывание', + init: 'Ожидание приложения', + ready: 'нормально', + applying: 'Применение', + applyerror: 'Ошибка', + syncerr: 'Ошибка', + uperr: 'Ошибка', + }, + units: { + second: ' секунда | секунда | секунд', + minute: 'минута | минута | минут', + hour: 'час | час | часов', + day: 'день | день | дней', + week: 'неделя | неделя | недель', + month: 'месяц | месяц | месяцев', + year: 'год | год | лет', + time: 'раз', + core: 'ядро | ядро | ядер', + millisecond: 'миллисекунда | миллисекунд', + secondUnit: 'с', + minuteUnit: 'мин', + hourUnit: 'ч', + dayUnit: 'д', + weekUnit: 'н', + monthUnit: 'м', + yearUnit: 'г', + millisecondUnit: 'мс', + }, + operate: { + down: 'Остановить', + up: 'Запустить', + restart: 'Перезапустить', + install: 'Установить', + uninstall: 'Удалить', + update: 'Обновить', + }, + }, + menu: { + home: 'Обзор', + apps: 'Приложения', + website: 'Сайт | Сайты', + project: 'Проект | Проекты', + config: 'Конфигурация | Конфигурации', + ssh: 'Настройки SSH', + firewall: 'Firewall', + ssl: 'Сертификат | Сертификаты', + database: 'База данных | Базы данных', + container: 'Контейнер | Контейнеры', + cronjob: 'Cron | Задачи Cron', + host: 'Хост | Хосты', + system: 'Система', + security: 'Безопасность', + files: 'Файлы', + monitor: 'Мониторинг', + terminal: 'Терминал | Терминалы', + settings: 'Настройка | Настройки', + toolbox: 'Инструменты', + logs: 'Лог | Логи', + runtime: 'Среда исполнения | Среды исполнения', + processManage: 'Процесс | Процессы', + process: 'Процесс | Процессы', + network: 'Сеть | Сети', + supervisor: 'Супервизор', + name: 'Защита от подмены', + }, + home: { + restart_1panel: 'Перезапустить панель', + restart_system: 'Перезапустить сервер', + operationSuccess: 'Операция выполнена успешно, перезагрузка, пожалуйста, обновите браузер вручную позже!', + overview: 'Обзор', + entranceHelper: + 'Безопасный вход не включен. Вы можете включить его в "Настройки -> Безопасность" для повышения безопасности системы.', + appInstalled: 'Приложения', + systemInfo: 'Системная информация', + hostname: 'Имя хоста', + platformVersion: 'Операционная система', + kernelVersion: 'Ядро', + kernelArch: 'Архитектура', + network: 'Сеть', + io: 'Диск I/O', + ip: 'Локальный IP', + proxy: 'Системный прокси', + baseInfo: 'Базовая информация', + totalSend: 'Всего отправлено', + totalRecv: 'Всего получено', + rwPerSecond: 'Операции ввода/вывода', + ioDelay: 'Задержка ввода/вывода', + uptime: 'Работает с', + runningTime: 'Время работы', + mem: 'Память', + swapMem: 'Раздел подкачки', + + runSmoothly: 'Низкая нагрузка', + runNormal: 'Средняя нагрузка', + runSlowly: 'Высокая нагрузка', + runJam: 'Тяжелая нагрузка', + + core: 'Физических ядер', + logicCore: 'Логических ядер', + loadAverage: 'Средняя нагрузка за последнюю минуту | Средняя нагрузка за последние {n} минут', + load: 'Нагрузка', + mount: 'Точка монтирования', + fileSystem: 'Файловая система', + total: 'Всего', + used: 'Использовано', + free: 'Свободно', + percent: 'Утилизация', + app: 'Рекомендуемые приложения', + goInstall: 'Установить', + + networkCard: 'Интерфейс', + disk: 'Диск', + }, + tabs: { + more: 'Больше', + hide: 'Скрыть', + close: 'Закрыть', + closeLeft: 'Закрыть слева', + closeRight: 'Закрыть справа', + closeCurrent: 'Закрыть текущую', + closeOther: 'Закрыть другие', + closeAll: 'Закрыть все', + }, + header: { + logout: 'Выход', + }, + database: { + all: 'Все', + manage: 'Управление', + database: 'База данных', + deleteBackupHelper: 'Удалить резервные копии базы данных одновременно', + delete: 'Операция удаления не может быть отменена, пожалуйста, введите "', + deleteHelper: '" для удаления этой базы данных', + create: 'Создать базу данных', + noMysql: 'Сервис базы данных (MySQL или MariaDB)', + noPostgresql: 'Сервис базы данных Postgresql', + goUpgrade: 'Обновить', + goInstall: 'Установить', + source: 'Источник', + isDelete: 'Удалено', + permission: 'Разрешения', + permissionForIP: 'IP', + permissionAll: 'Все (%)', + databaseConnInfo: 'Информация о подключении', + rootPassword: 'Пароль root', + serviceName: 'Имя сервиса', + serviceNameHelper: 'Доступ между контейнерами в одной сети.', + backupList: 'Резервное копирование', + loadBackup: 'Импорт', + remoteAccess: 'Удаленный доступ', + remoteHelper: 'Несколько IP через запятую, например: 172.16.10.111, 172.16.10.112', + remoteConnHelper: + 'Удаленное подключение к MySQL как пользователь root может иметь риски безопасности. Поэтому выполняйте эту операцию с осторожностью.', + changePassword: 'Пароль', + changePasswordHelper: + 'База данных была связана с приложением. Изменение пароля изменит пароль базы данных приложения одновременно. Изменение вступит в силу после перезапуска приложения.', + + confChange: 'Конфигурация', + confNotFound: + 'Файл конфигурации не найден. Пожалуйста, обновите приложение до последней версии в магазине приложений и попробуйте снова!', + + portHelper: + 'Этот порт является открытым портом контейнера. Вам нужно сохранить изменение отдельно и перезапустить контейнер!', + + loadFromRemote: 'Синхронизировать', + userBind: 'Привязать пользователя', + pgBindHelper: + 'Эта операция используется для создания нового пользователя и привязки его к целевой базе данных. В настоящее время выбор уже существующих пользователей в базе данных не поддерживается.', + pgSuperUser: 'Суперпользователь', + loadFromRemoteHelper: 'Это синхронизирует информацию о базе данных на сервере с 1Panel. Хотите продолжить?', + passwordHelper: 'Невозможно получить, пожалуйста, измените', + local: 'Локальный', + remote: 'Удаленный', + remoteDB: 'Удаленный сервер | Удаленные серверы', + manageRemoteDB: 'Удаленная БД', + createRemoteDB: 'Привязать @.lower:database.remoteDB', + unBindRemoteDB: 'Отвязать @.lower:database.remoteDB', + unBindForce: 'Принудительная отвязка', + unBindForceHelper: + 'Игнорировать все ошибки во время процесса отвязки, чтобы обеспечить успешное завершение операции', + unBindRemoteHelper: + 'Отвязка удаленной базы данных только удалит связь привязки и не будет напрямую удалять удаленную базу данных', + editRemoteDB: 'Редактировать удаленный сервер', + localDB: 'Локальная база данных', + address: 'Адрес базы данных', + version: 'Версия базы данных', + userHelper: + 'Пользователь root или пользователь базы данных с привилегиями root может получить доступ к удаленной базе данных.', + pgUserHelper: 'Пользователь базы данных с привилегиями суперпользователя.', + ssl: 'Использовать SSL', + clientKey: 'Приватный ключ клиента', + clientCert: 'Сертификат клиента', + caCert: 'Сертификат CA', + hasCA: 'Есть сертификат CA', + skipVerify: 'Игнорировать проверку действительности сертификата', + + formatHelper: + 'Текущая кодировка базы данных - {0}, несоответствие кодировок может привести к ошибке восстановления', + selectFile: 'Выбрать файл', + dropHelper: 'Вы можете перетащить загружаемый файл сюда или', + clickHelper: 'нажмите для загрузки', + supportUpType: 'Поддерживаются только файлы sql, sql.gz и tar.gz', + zipFormat: 'Структура архива tar.gz: архив test.tar.gz должен содержать файл test.sql', + + currentStatus: 'Текущее состояние', + baseParam: 'Базовые параметры', + performanceParam: 'Параметры производительности', + runTime: 'Время запуска', + connections: 'Всего подключений', + bytesSent: 'Отправлено байт', + bytesReceived: 'Получено байт', + queryPerSecond: 'Запросов в секунду', + txPerSecond: 'Транзакций в секунду', + connInfo: 'активные/пиковые подключения', + connInfoHelper: 'Если значение слишком большое, увеличьте "max_connections".', + threadCacheHit: 'Попадания в кэш потоков', + threadCacheHitHelper: 'Если значение слишком низкое, увеличьте "thread_cache_size".', + indexHit: 'Попадания в индекс', + indexHitHelper: 'Если значение слишком низкое, увеличьте "key_buffer_size".', + innodbIndexHit: 'Попадания в индекс InnoDB', + innodbIndexHitHelper: 'Если значение слишком низкое, увеличьте "innodb_buffer_pool_size".', + cacheHit: 'Попадания в кэш запросов', + cacheHitHelper: 'Если значение слишком низкое, увеличьте "query_cache_size".', + tmpTableToDB: 'Временные таблицы на диске', + tmpTableToDBHelper: 'Если значение слишком большое, попробуйте увеличить "tmp_table_size".', + openTables: 'Открытые таблицы', + openTablesHelper: 'Значение конфигурации "table_open_cache" должно быть больше или равно этому значению.', + selectFullJoin: 'Полные соединения', + selectFullJoinHelper: 'Если значение не 0, проверьте правильность индексов таблиц данных.', + selectRangeCheck: 'Количество соединений без индекса', + selectRangeCheckHelper: 'Если значение не 0, проверьте правильность индексов таблиц данных.', + sortMergePasses: 'Количество сортировок слиянием', + sortMergePassesHelper: 'Если значение слишком большое, увеличьте "sort_buffer_size".', + tableLocksWaited: 'Количество блокировок таблиц', + tableLocksWaitedHelper: + 'Если значение слишком большое, рассмотрите возможность увеличения производительности базы данных.', + + performanceTuning: 'Настройка производительности', + optimizationScheme: 'Схема оптимизации', + keyBufferSizeHelper: 'Размер буфера для индексов', + queryCacheSizeHelper: 'Кэш запросов. Если эта функция отключена, установите этот параметр в 0.', + tmpTableSizeHelper: 'Размер кэша временных таблиц', + innodbBufferPoolSizeHelper: 'Размер буфера InnoDB', + innodbLogBufferSizeHelper: 'Размер буфера журнала InnoDB', + sortBufferSizeHelper: '* подключений, размер буфера сортировки на поток', + readBufferSizeHelper: '* подключений, размер буфера чтения', + readRndBufferSizeHelper: '* подключений, размер буфера случайного чтения', + joinBufferSizeHelper: '* подключений, размер кэша таблиц соединений', + threadStackelper: '* подключений, размер стека на поток', + binlogCacheSizeHelper: '* подключений, размер кэша бинарного журнала (кратно 4096)', + threadCacheSizeHelper: 'Размер пула потоков', + tableOpenCacheHelper: 'Кэш таблиц', + maxConnectionsHelper: 'Максимум подключений', + restart: 'Перезапустить', + + log: 'Логи', + slowLog: 'Медленные запросы', + noData: 'Пока нет медленных запросов.', + + isOn: 'Включено', + longQueryTime: 'порог (сек)', + thresholdRangeHelper: 'Пожалуйста, введите корректный порог (1 - 600).', + + timeout: 'Таймаут', + timeoutHelper: 'Период таймаута неактивного подключения. 0 означает, что подключение постоянно активно.', + maxclients: 'Макс. клиентов', + requirepassHelper: + 'Оставьте пустым, если пароль не установлен. Изменения нужно сохранить отдельно и перезапустить контейнер!', + databases: 'Количество баз данных', + maxmemory: 'Максимальное использование памяти', + maxmemoryHelper: '0 означает без ограничений.', + tcpPort: 'Текущий порт прослушивания.', + uptimeInDays: 'Дней в работе.', + connectedClients: 'Количество подключенных клиентов.', + usedMemory: 'Текущее использование памяти Redis.', + usedMemoryRss: 'Размер памяти, запрошенный у операционной системы.', + usedMemoryPeak: 'Пиковое потребление памяти Redis.', + memFragmentationRatio: 'Коэффициент фрагментации памяти.', + totalConnectionsReceived: 'Общее количество подключенных клиентов с момента запуска.', + totalCommandsProcessed: 'Общее количество выполненных команд с момента запуска.', + instantaneousOpsPerSec: 'Количество команд, выполняемых сервером в секунду.', + keyspaceHits: 'Количество успешных поисков ключа в базе данных.', + keyspaceMisses: 'Количество неудачных попыток найти ключ в базе данных.', + hit: 'Коэффициент попаданий при поиске ключей.', + latestForkUsec: 'Количество микросекунд, затраченных на последнюю операцию fork().', + redisCliHelper: 'Сервис "redis-cli" не обнаружен. Сначала включите сервис.', + redisQuickCmd: 'Быстрые команды Redis', + recoverHelper: 'Это перезапишет данные с [{0}]. Хотите продолжить?', + submitIt: 'Перезаписать данные', + + baseConf: 'Базовая', + allConf: 'Все', + restartNow: 'Перезапустить сейчас', + restartNowHelper1: + 'Необходимо перезапустить систему после вступления изменений конфигурации в силу. Если ваши данные требуют сохранения, сначала выполните операцию сохранения.', + restartNowHelper: 'Это вступит в силу только после перезапуска системы.', + + persistence: 'Сохранение', + rdbHelper1: 'секунд(ы), вставить', + rdbHelper2: 'элементов данных', + rdbHelper3: 'Выполнение любого из условий запустит сохранение RDB.', + rdbInfo: 'Убедитесь, что значение в списке правил находится в диапазоне от 1 до 100000', + + containerConn: 'Подключение контейнера', + connAddress: 'Адрес', + connPort: 'Порт', + containerConnHelper: + 'Этот адрес подключения может использоваться приложениями, работающими в среде выполнения веб-сайта (PHP и т.д.) или контейнере.', + remoteConn: 'Внешнее подключение', + remoteConnHelper2: + 'Этот адрес подключения может использоваться приложениями, работающими вне контейнера или внешними приложениями.', + localIP: 'Локальный IP', + }, + container: { + create: 'Создать контейнер', + edit: 'Редактировать контейнер', + updateHelper1: + 'Обнаружено, что этот контейнер происходит из магазина приложений. Обратите внимание на следующие два пункта:', + updateHelper2: + '1. Текущие изменения не будут синхронизированы с установленными приложениями в магазине приложений.', + updateHelper3: + '2. Если вы измените приложение на странице установки, текущее отредактированное содержимое станет недействительным.', + updateHelper4: + 'Редактирование контейнера требует пересборки, и все непостоянные данные будут потеряны. Хотите продолжить?', + containerList: 'Список контейнеров', + operatorHelper: 'Действие {0} будет выполнено для следующего контейнера. Хотите продолжить?', + operatorAppHelper: + 'Операция "{0}" будет выполнена для следующего(-их) контейнера(-ов) и может повлиять на работающие сервисы. Хотите продолжить?', + start: 'Запустить', + stop: 'Остановить', + restart: 'Перезапустить', + kill: 'Завершить', + pause: 'Приостановить', + unpause: 'Возобновить', + rename: 'Переименовать', + remove: 'Удалить', + removeAll: 'Удалить все', + containerPrune: 'Очистить', + containerPruneHelper1: 'Это удалит все контейнеры, которые находятся в остановленном состоянии.', + containerPruneHelper2: + 'Если контейнеры из магазина приложений, вам нужно перейти в "Магазин приложений -> Установленные" и нажать кнопку "Пересобрать" для их переустановки после выполнения очистки.', + containerPruneHelper3: 'Это действие нельзя отменить. Хотите продолжить?', + imagePrune: 'Очистить', + imagePruneSome: 'Очистить непомеченные', + imagePruneSomeEmpty: 'Нет образов с тегом "none" для очистки.', + imagePruneSomeHelper: 'Очистить образы с тегом "none", которые не используются никакими контейнерами.', + imagePruneAll: 'Очистить неиспользуемые', + imagePruneAllEmpty: 'Нет неиспользуемых образов для очистки.', + imagePruneAllHelper: 'Очистить образы, которые не используются никакими контейнерами.', + networkPrune: 'Очистить', + networkPruneHelper: 'Это удалит все неиспользуемые сети. Хотите продолжить?', + volumePrune: 'Очистить', + volumePruneHelper: 'Это удалит все неиспользуемые локальные тома. Хотите продолжить?', + cleanSuccess: 'Операция успешна, количество очищенных элементов: {0}!', + cleanSuccessWithSpace: + 'Операция успешна. Количество очищенных дисков: {0}. Освобождено дискового пространства: {1}!', + container: 'Контейнер | Контейнеры', + unExposedPort: 'Текущий адрес сопоставления портов - 127.0.0.1, что не позволяет внешний доступ.', + upTime: 'Время работы', + all: 'Все', + fetch: 'Получить', + lines: 'Строки', + linesHelper: 'Пожалуйста, введите правильное количество логов для получения!', + lastDay: 'Последний день', + last4Hour: 'Последние 4 часа', + lastHour: 'Последний час', + last10Min: 'Последние 10 минут', + cleanLog: 'Очистить лог', + downLogHelper1: 'Это загрузит все логи из контейнера {0}. Хотите продолжить?', + downLogHelper2: 'Это загрузит последние {0} логов из контейнера {1}. Хотите продолжить?', + cleanLogHelper: 'Это потребует перезапуска контейнера и не может быть отменено. Хотите продолжить?', + newName: 'Новое имя', + source: 'Использование ресурсов', + cpuUsage: 'Использование CPU', + cpuTotal: 'Всего CPU', + core: 'Ядро', + memUsage: 'Использование памяти', + memTotal: 'Лимит памяти', + memCache: 'Кэш памяти', + ip: 'IP-адрес', + cpuShare: 'Доли CPU', + cpuShareHelper: + 'Движок контейнера использует базовое значение 1024 для долей CPU. Вы можете увеличить его, чтобы дать контейнеру больше времени CPU.', + inputIpv4: 'Пример: 192.168.1.1', + inputIpv6: 'Пример: 2001:0db8:85a3:0000:0000:8a2e:0370:7334', + + containerFromAppHelper: + 'Обнаружено, что этот контейнер происходит из магазина приложений. Операции с приложением могут привести к недействительности текущих изменений.', + containerFromAppHelper1: + 'Нажмите кнопку [Параметры] в списке установленных приложений, чтобы перейти на страницу редактирования и изменить имя контейнера.', + command: 'Команда', + console: 'Взаимодействие с контейнером', + tty: 'Выделить псевдо-TTY (-t)', + openStdin: 'Держать STDIN открытым, даже если не подключен (-i)', + custom: 'Пользовательский', + emptyUser: 'Если пусто, вы войдете как пользователь по умолчанию', + containerTerminal: 'Терминал', + privileged: 'Привилегированный', + privilegedHelper: + 'Разрешить контейнеру выполнять определенные привилегированные операции на хосте, что может повысить риски контейнера. Используйте с осторожностью!', + editComposeHelper: + 'Примечание: Установленные переменные окружения будут по умолчанию записаны в файл 1panel.env.\nЕсли вы хотите использовать эти параметры в контейнере, вам также нужно вручную добавить ссылку env_file в файле compose.', + + upgradeHelper: 'Имя репозитория/Имя образа: Версия образа', + upgradeWarning2: + 'Операция обновления требует пересборки контейнера, все несохраненные данные будут потеряны. Хотите продолжить?', + oldImage: 'Текущий образ', + targetImage: 'Целевой образ', + imageLoadErr: 'Не обнаружено имя образа для контейнера', + appHelper: 'Контейнер происходит из магазина приложений, и обновление может сделать сервис недоступным.', + + input: 'Ручной ввод', + forcePull: 'Всегда загружать образ', + forcePullHelper: + 'Это будет игнорировать существующие образы на сервере и загружать последний образ из реестра.', + server: 'Хост', + serverExample: '80, 80-88, ip:80 или ip:80-88', + containerExample: '80 или 80-88', + exposePort: 'Открыть порт', + exposeAll: 'Открыть все', + cmdHelper: 'Пример: nginx -g "daemon off;"', + entrypointHelper: 'Пример: docker-entrypoint.sh', + autoRemove: 'Автоудаление', + cpuQuota: 'Количество ядер CPU', + memoryLimit: 'Память', + limitHelper: 'Если установлено 0, это означает отсутствие ограничений. Максимальное значение {0}', + mount: 'Монтирование', + volumeOption: 'Том', + hostOption: 'Хост', + serverPath: 'Путь на сервере', + containerDir: 'Путь в контейнере', + volumeHelper: 'Убедитесь, что содержимое тома хранения корректно', + modeRW: 'Чтение-Запись', + modeR: 'Только чтение', + mode: 'Режим', + env: 'Переменные окружения', + restartPolicy: 'Политика перезапуска', + always: 'всегда', + unlessStopped: 'если не остановлен', + onFailure: 'при сбое (по умолчанию пять раз)', + no: 'никогда', + + monitor: 'Мониторинг', + refreshTime: 'Интервал обновления', + cache: 'Кэш', + + image: 'Образ | Образы', + imagePull: 'Загрузить', + imagePush: 'Отправить', + imageDelete: 'Удалить образ', + imageDeleteTag: 'Удалить тег образа', + imageTagDeleteHelper: 'Удалить другие теги, связанные с этим ID образа', + repoName: 'Реестр контейнеров', + imageName: 'Имя образа', + pull: 'Загрузить', + path: 'Путь', + importImage: 'Импорт', + build: 'Сборка', + imageBuild: 'Сборка', + pathSelect: 'Путь', + label: 'Метка', + imageTag: 'Тег образа', + push: 'Отправить', + fileName: 'Имя файла', + export: 'Экспорт', + exportImage: 'Экспорт образа', + version: 'Версия', + size: 'Размер', + from: 'Источник', + tag: 'Теги', + tagHelper: 'По одному в строке. Например,\nkey1=value1\nkey2=value2', + imageNameHelper: 'Имя образа и тег, например: nginx:latest', + cleanBuildCache: 'Очистить кэш сборки', + delBuildCacheHelper: + 'Это удалит все кэшированные артефакты, созданные во время сборки, и не может быть отменено. Хотите продолжить?', + urlWarning: 'Префикс URL не должен включать http:// или https://. Пожалуйста, измените.', + + network: 'Сеть | Сети', + networkHelper: + 'Это может привести к неправильной работе некоторых приложений и сред выполнения. Хотите продолжить?', + createNetwork: 'Создать', + networkName: 'Имя', + driver: 'Драйвер', + option: 'Опция', + attachable: 'Подключаемая', + subnet: 'Подсеть', + scope: 'Диапазон IP', + gateway: 'Шлюз', + auxAddress: 'Исключить IP', + + volume: 'Том | Тома', + volumeDir: 'Директория тома', + nfsEnable: 'Включить NFS хранилище', + nfsAddress: 'Адрес', + mountpoint: 'Точка монтирования', + mountpointNFSHelper: 'например, /nfs, /nfs-share', + options: 'Опции', + createVolume: 'Создать', + + repo: 'Реестры', + createRepo: 'Добавить', + httpRepo: 'Выбор HTTP протокола требует перезапуска службы Docker для добавления в небезопасные реестры.', + delInsecure: 'Удаление учетных данных', + delInsecureHelper: 'Это перезапустит службу Docker для удаления из небезопасных реестров. Хотите продолжить?', + downloadUrl: 'Сервер', + imageRepo: 'Репозиторий образов', + repoHelper: 'Включает ли зеркало репозитория/организации/проекта?', + auth: 'Требуется аутентификация', + mirrorHelper: + 'Если есть несколько зеркал, они должны быть разделены новой строкой, например:\nhttp://xxxxxx.m.daocloud.io \nhttps://xxxxxx.mirror.aliyuncs.com', + registrieHelper: + 'Если существует несколько частных репозиториев, они должны быть разделены новой строкой, например:\n172.16.10.111:8081 \n172.16.10.112:8081', + + compose: 'Compose | Composes', + fromChangeHelper: 'Переключение источника очистит текущее отредактированное содержимое. Хотите продолжить?', + composePathHelper: 'Путь сохранения файла конфигурации: {0}', + composeHelper: + 'Композиция, созданная через редактор 1Panel или шаблон, будет сохранена в директории {0}/docker/compose.', + deleteFile: 'Удалить файл', + allDelete: 'Удалить навсегда', + deleteComposeHelper: + 'Удалить все файлы, связанные с compose контейнера, включая файлы конфигурации и постоянные файлы. Пожалуйста, действуйте с осторожностью!', + deleteCompose: '" Удалить эту композицию.', + apps: 'Магазин приложений', + local: 'Локальный', + createCompose: 'Создать', + composeDirectory: 'Директория', + template: 'Шаблон', + composeTemplate: 'Шаблон Compose | Шаблоны Compose', + createComposeTemplate: 'Создать', + description: 'Описание', + content: 'Содержимое', + contentEmpty: 'Содержимое Compose не может быть пустым, пожалуйста, введите и попробуйте снова!', + containerNumber: 'Количество контейнеров', + containerStatus: 'Статус контейнера', + exited: 'Завершен', + running: 'Работает', + down: 'Остановлен', + up: 'Запущен', + composeDetailHelper: 'Compose создан вне 1Panel. Операции запуска и остановки не поддерживаются.', + composeOperatorHelper: 'Операция {1} будет выполнена для {0}. Хотите продолжить?', + composeDownHelper: 'Это остановит и удалит все контейнеры и сети под compose {0}. Хотите продолжить?', + + setting: 'Настройка | Настройки', + operatorStatusHelper: 'Это выполнит "{0}" службы Docker. Хотите продолжить?', + dockerStatus: 'Служба Docker', + daemonJsonPathHelper: 'Убедитесь, что путь конфигурации совпадает с указанным в docker.service.', + mirrors: 'Зеркала реестра', + mirrorsHelper: '', + mirrorsHelper2: 'Подробности см. в официальной документации. ', + registries: 'Небезопасные реестры', + ipv6Helper: + 'При включении IPv6 необходимо добавить сеть контейнера IPv6. Конкретные шаги настройки см. в официальной документации.', + ipv6CidrHelper: 'Диапазон пула IPv6-адресов для контейнеров', + ipv6TablesHelper: 'Автоматическая настройка Docker IPv6 для правил Iptables.', + experimentalHelper: + 'Включение ip6tables требует включения этой конфигурации; в противном случае ip6tables будет игнорироваться', + cutLog: 'Опция логирования', + cutLogHelper1: 'Текущая конфигурация будет влиять только на вновь созданные контейнеры.', + cutLogHelper2: 'Существующие контейнеры необходимо пересоздать для применения конфигурации.', + cutLogHelper3: + 'Обратите внимание, что пересоздание контейнеров может привести к потере данных. Если ваши контейнеры содержат важные данные, обязательно сделайте резервную копию перед выполнением операции пересборки.', + maxSize: 'Максимальный размер', + maxFile: 'Максимум файлов', + liveHelper: + 'По умолчанию, когда демон Docker завершает работу, он останавливает работающие контейнеры. Вы можете настроить демон так, чтобы контейнеры продолжали работать, если демон становится недоступным. Эта функциональность называется live restore. Опция live restore помогает уменьшить время простоя контейнера из-за сбоев демона, плановых простоев или обновлений.', + liveWithSwarmHelper: 'Конфигурация демона live-restore несовместима с режимом swarm.', + iptablesDisable: 'Отключить Iptables', + iptablesHelper1: 'Автоматическая настройка правил Iptables для Docker.', + iptablesHelper2: + 'Отключение Iptables приведет к тому, что контейнеры не смогут взаимодействовать с внешними сетями.', + daemonJsonPath: 'Путь конфигурации', + serviceUnavailable: 'Служба Docker в настоящее время не запущена.', + startIn: ' для запуска', + sockPath: 'Unix domain socket', + sockPathHelper: 'Канал связи между демоном Docker и клиентом.', + sockPathHelper1: 'Путь по умолчанию: /var/run/docker-x.sock', + sockPathMsg: + 'Сохранение настройки Socket Path может привести к недоступности службы Docker. Хотите продолжить?', + sockPathErr: 'Пожалуйста, выберите или введите правильный путь к файлу Docker sock', + related: 'Связанные', + includeAppstore: 'Показывать контейнеры из магазина приложений', + + cleanDockerDiskZone: 'Очистить дисковое пространство, используемое Docker', + cleanImagesHelper: '(Очистить все образы, не используемые контейнерами)', + cleanContainersHelper: '(Очистить все остановленные контейнеры)', + cleanVolumesHelper: '(Очистить все неиспользуемые локальные тома)', + + makeImage: 'Создать образ', + newImageName: 'Новое имя образа', + commitMessage: 'Сообщение коммита', + author: 'Автор', + ifPause: 'Приостановить контейнер во время создания', + ifMakeImageWithContainer: 'Создать новый образ из этого контейнера?', + }, + cronjob: { + create: 'Создать задачу cron', + edit: 'Редактировать задачу cron', + cronTask: 'Задача Cron | Задачи Cron', + changeStatus: 'Изменить статус', + disableMsg: 'Это остановит автоматическое выполнение запланированной задачи. Хотите продолжить?', + enableMsg: 'Это позволит запланированной задаче автоматически выполняться. Хотите продолжить?', + taskType: 'Тип', + record: 'Записи', + viewRecords: 'Записи', + shell: 'Shell', + log: 'Логи резервного копирования', + logHelper: 'Резервное копирование системного лога', + ogHelper1: '1. Системный лог 1Panel', + logHelper2: '2. Лог SSH-входов на сервер', + logHelper3: '3. Все логи сайта', + containerCheckBox: 'В контейнере (не нужно вводить команду контейнера)', + containerName: 'Имя контейнера', + ntp: 'Синхронизация времени', + ntp_helper: 'Вы можете настроить NTP сервер на странице Быстрой настройки в Инструментах.', + app: 'Резервное копирование приложения', + website: 'Резервное копирование сайта', + rulesHelper: + 'Когда существует несколько правил исключения сжатия, они должны отображаться с переносом строки. Например,\n*.log \n*.sql', + lastRecordTime: 'Время последнего выполнения', + all: 'Все', + failedRecord: 'Неудачные записи', + successRecord: 'Успешные записи', + database: 'Резервное копирование базы данных', + missBackupAccount: 'Не удалось найти учетную запись резервного копирования', + syncDate: 'Время синхронизации', + clean: 'Очистка кэша', + curl: 'Доступ к URL', + taskName: 'Имя', + cronSpec: 'Цикл запуска', + cronSpecHelper: 'Введите правильный период выполнения', + cleanHelper: + 'Эта операция записывает все записи выполнения задач, файлы резервных копий и файлы логов. Хотите продолжить?', + directory: 'Директория резервного копирования', + sourceDir: 'Директория резервного копирования', + snapshot: 'Снапшот системы', + allOptionHelper: + 'Текущий план задачи - резервное копирование всех [{0}]. Прямое скачивание сейчас не поддерживается. Вы можете проверить список резервных копий в меню [{0}].', + exclusionRules: 'Правило исключения', + exclusionRulesHelper: 'Правила исключения будут применяться ко всем операциям сжатия этой резервной копии.', + default_download_path: 'Ссылка для скачивания по умолчанию', + saveLocal: 'Сохранять локальные резервные копии (столько же, сколько копий в облачном хранилище)', + url: 'URL-адрес', + targetHelper: 'Учетные записи резервного копирования управляются в настройках панели.', + retainCopies: 'Сохранять записи', + retainCopiesHelper: 'Количество копий для сохранения записей выполнения и логов', + retainCopiesHelper1: 'Количество копий для сохранения файлов резервных копий', + retainCopiesUnit: ' копий (Просмотр)', + cronSpecRule: 'Формат периода выполнения в строке {0} неверен. Пожалуйста, проверьте и попробуйте снова!', + perMonth: 'Каждый месяц', + perWeek: 'Каждую неделю', + perHour: 'Каждый час', + perNDay: 'Каждые N дней', + perDay: 'Каждый день', + perNHour: 'Каждые N часов', + perNMinute: 'Каждые N минут', + perNSecond: 'Каждые N секунд', + per: 'Каждые ', + handle: '', + day: 'дней', + dayUnit: 'д', + monday: 'Понедельник', + tuesday: 'Вторник', + wednesday: 'Среда', + thursday: 'Четверг', + friday: 'Пятница', + saturday: 'Суббота', + sunday: 'Воскресенье', + shellContent: 'Скрипт', + errRecord: 'Неправильное логирование', + errHandle: 'Сбой выполнения задачи Cron', + noRecord: 'Запустите задачу Cron, и вы увидите записи здесь.', + cleanData: 'Очистить данные', + cleanDataHelper: 'Удалить файл резервной копии, созданный во время этой задачи.', + noLogs: 'Пока нет вывода задачи...', + errPath: 'Ошибка пути резервной копии [{0}], невозможно скачать!', + cutWebsiteLog: 'Ротация логов сайта', + cutWebsiteLogHelper: 'Ротированные файлы логов будут сохранены в директории резервных копий 1Panel.', + + requestExpirationTime: 'Время истечения запроса на загрузку (часы)', + unitHours: 'Единица: часы', + alertTitle: 'Плановая задача - {0} «{1}» Оповещение о сбое задачи', + }, + monitor: { + monitor: 'Мониторинг', + globalFilter: 'Глобальный фильтр', + enableMonitor: 'Включить', + storeDays: 'Дни хранения', + cleanMonitor: 'Очистить записи мониторинга', + + avgLoad: 'Средняя нагрузка', + loadDetail: 'Детали нагрузки', + resourceUsage: 'Использование', + networkCard: 'Сетевой интерфейс', + read: 'Чтение', + write: 'Запись', + readWriteCount: 'Операции ввода/вывода', + readWriteTime: 'Задержка ввода/вывода', + today: 'Сегодня', + yesterday: 'Вчера', + lastNDay: 'Последние {0} дней', + memory: 'Память', + cache: 'Кэш', + disk: 'Диск', + network: 'Сеть', + up: 'Исходящий', + down: 'Входящий', + interval: 'Интервал(минут)', + + gpuUtil: 'Использование GPU', + temperature: 'Температура', + performanceState: 'Состояние производительности', + powerUsage: 'Потребление энергии', + memoryUsage: 'Использование памяти', + fanSpeed: 'Скорость вентилятора', + }, + terminal: { + conn: 'подключение', + connLocalErr: + 'Невозможно автоматически аутентифицироваться, пожалуйста, заполните информацию для входа на локальный сервер.', + testConn: 'Проверить подключение', + saveAndConn: 'Сохранить и подключиться', + connTestOk: 'Информация о подключении доступна', + connTestFailed: 'Подключение недоступно, пожалуйста, проверьте информацию подключения.', + host: 'Хост | Хосты', + createConn: 'Новое подключение', + group: 'Группа', + manageGroup: 'Управление группами', + noHost: 'Нет хостов', + groupChange: 'Изменить группу', + expand: 'Развернуть все', + fold: 'Свернуть все', + batchInput: 'Пакетная обработка', + quickCommand: 'Быстрая команда | Быстрые команды', + quickCommandHelper: 'Вы можете использовать быстрые команды внизу страницы "Терминалы -> Терминалы".', + groupDeleteHelper: + 'После удаления группы все подключения в группе будут перемещены в группу по умолчанию. Хотите продолжить?', + command: 'Команда', + quickCmd: 'Быстрая команда', + addHost: 'Добавить', + localhost: 'Локальный хост', + ip: 'Адрес', + authMode: 'Аутентификация', + passwordMode: 'Пароль', + rememberPassword: 'Запомнить информацию аутентификации', + keyMode: 'Приватный ключ', + key: 'Приватный ключ', + keyPassword: 'Пароль приватного ключа', + emptyTerminal: 'В настоящее время нет подключенных терминалов.', + }, + toolbox: { + swap: { + swap: 'Раздел Swap', + swapHelper1: + 'Размер swap должен быть в 1-2 раза больше физической памяти, регулируется в зависимости от конкретных требований;', + swapHelper2: + 'Перед созданием файла подкачки убедитесь, что на системном диске достаточно свободного места, так как размер файла подкачки будет занимать соответствующее дисковое пространство;', + swapHelper3: + 'Swap может помочь снизить нагрузку на память, но это только альтернатива. Чрезмерная зависимость от swap может привести к снижению производительности системы. Рекомендуется в первую очередь увеличить память или оптимизировать использование памяти приложениями;', + swapHelper4: + 'Рекомендуется регулярно отслеживать использование swap для обеспечения нормальной работы системы.', + swapDeleteHelper: + 'Эта операция удалит раздел Swap {0}. В целях безопасности системы соответствующий файл не будет удален автоматически. Если требуется удаление, выполните его вручную!', + saveHelper: 'Пожалуйста, сначала сохраните текущие настройки!', + saveSwap: 'Сохранение текущей конфигурации изменит размер раздела Swap {0} на {1}. Хотите продолжить?', + swapMin: 'Минимальный размер раздела - 40 КБ. Пожалуйста, измените и попробуйте снова!', + swapMax: 'Максимальное значение для размера раздела - {0}. Пожалуйста, измените и попробуйте снова!', + swapOff: 'Минимальный размер раздела - 40 КБ. Установка значения 0 отключит раздел Swap.', + }, + device: { + dnsHelper: 'DNS сервер', + dnsAlert: + 'Внимание! Изменение конфигурации файла /etc/resolv.conf будет восстановлено до значений по умолчанию после перезагрузки системы.', + dnsHelper1: + 'При наличии нескольких DNS-записей они должны отображаться с новой строки. Например:\n114.114.114.114\n8.8.8.8', + hostsHelper: 'Разрешение имен хостов', + hosts: 'Домен', + hostAlert: 'Скрыты закомментированные записи, нажмите кнопку "Все настройки" для просмотра или настройки', + toolbox: 'Быстрые настройки', + hostname: 'Имя хоста', + passwd: 'Системный пароль', + passwdHelper: 'Вводимые символы не могут включать $ и &', + timeZone: 'Часовой пояс', + localTime: 'Время сервера', + timeZoneChangeHelper: 'Изменение системного часового пояса требует перезапуска службы. Продолжить?', + timeZoneHelper: + 'Если команда "timedatectl" не установлена, вы не сможете изменить часовой пояс. Система использует эту команду для изменения часового пояса.', + timeZoneCN: 'Пекин', + timeZoneAM: 'Лос-Анджелес', + timeZoneNY: 'Нью-Йорк', + ntpALi: 'Alibaba', + ntpGoogle: 'Google', + syncSite: 'NTP сервер', + hostnameHelper: + 'Изменение имени хоста зависит от команды "hostnamectl". Если команда не установлена, изменение может не удаться.', + userHelper: + 'Имя пользователя зависит от команды "whoami" для получения. Если команда не установлена, получение может не удаться.', + passwordHelper: + 'Изменение пароля зависит от команды "chpasswd". Если команда не установлена, изменение может не удаться.', + hostHelper: + 'В предоставленном содержимом есть пустое значение. Пожалуйста, проверьте и попробуйте снова после изменения!', + dnsCheck: 'Проверить доступность', + dnsOK: 'Информация о конфигурации DNS доступна!', + dnsTestFailed: 'Информация о конфигурации DNS недоступна.', + }, + fail2ban: { + sshPort: 'Прослушивание SSH порта', + sshPortHelper: 'Текущий Fail2ban прослушивает порт SSH-подключения хоста', + noFail2ban: 'Служба Fail2ban не обнаружена. Обратитесь к официальной документации для установки.', + unActive: 'Служба Fail2ban в настоящее время не включена.', + operation: 'Вы собираетесь выполнить операцию "{0}" над службой Fail2ban. Хотите продолжить?', + fail2banChange: 'Изменение конфигурации Fail2ban', + ignoreHelper: 'IP-адреса из белого списка будут игнорироваться при блокировке. Хотите продолжить?', + bannedHelper: 'IP-адреса из черного списка будут заблокированы сервером. Хотите продолжить?', + maxRetry: 'Максимальное количество попыток', + banTime: 'Время блокировки', + banTimeHelper: 'Время блокировки по умолчанию 10 минут, -1 означает постоянную блокировку', + banTimeRule: 'Пожалуйста, введите допустимое время блокировки или -1', + banAllTime: 'Постоянная блокировка', + findTime: 'Период обнаружения', + banAction: 'Действие блокировки', + banActionOption: 'Блокировать указанные IP-адреса используя {0}', + allPorts: ' (Все порты)', + ignoreIP: 'Белый список IP', + bannedIP: 'Черный список IP', + logPath: 'Путь к логам', + logPathHelper: 'По умолчанию /var/log/secure или /var/log/auth.log', + }, + ftp: { + ftp: 'FTP аккаунт | FTP аккаунты', + noFtp: 'Служба FTP (pure-ftpd) не обнаружена. Обратитесь к официальной документации для установки.', + operation: 'Это выполнит операцию "{0}" над службой FTP. Хотите продолжить?', + noPasswdMsg: + 'Невозможно получить текущий пароль FTP аккаунта, пожалуйста, установите пароль и попробуйте снова!', + enableHelper: 'Включение выбранного FTP аккаунта восстановит его права доступа. Хотите продолжить?', + disableHelper: 'Отключение выбранного FTP аккаунта отзовет его права доступа. Хотите продолжить?', + syncHelper: 'Синхронизировать данные FTP аккаунта между сервером и базой данных. Хотите продолжить?', + }, + clam: { + clam: 'Антивирусное сканирование', + cron: 'Запланированное сканирование', + cronHelper: 'Профессиональная версия поддерживает функцию запланированного сканирования', + specErr: 'Ошибка формата расписания выполнения, пожалуйста, проверьте и попробуйте снова!', + disableMsg: + 'Остановка запланированного выполнения предотвратит автоматический запуск этой задачи сканирования. Хотите продолжить?', + enableMsg: + 'Включение запланированного выполнения позволит этой задаче сканирования запускаться автоматически через регулярные интервалы. Хотите продолжить?', + showFresh: 'Показать службу обновления сигнатур', + hideFresh: 'Скрыть службу обновления сигнатур', + clamHelper: + 'Минимальная рекомендуемая конфигурация для ClamAV: 3 ГБ ОЗУ или больше, одноядерный процессор с частотой 2.0 ГГц или выше, и не менее 5 ГБ свободного места на жестком диске.', + noClam: 'Служба ClamAV не обнаружена, пожалуйста, обратитесь к официальной документации для установки!', + notStart: 'Служба ClamAV в настоящее время не запущена, пожалуйста, сначала запустите её!', + removeRecord: 'Удалить файлы отчетов', + noRecords: 'Нажмите кнопку "Запустить" для начала сканирования, и вы увидите записи здесь.', + removeResultHelper: 'Удалить файлы отчетов, созданные во время выполнения задачи, чтобы освободить место.', + removeInfected: 'Удалить зараженные файлы', + removeInfectedHelper: + 'Удалить зараженные файлы, обнаруженные во время задачи, для обеспечения безопасности и нормальной работы сервера.', + clamCreate: 'Создать правило сканирования', + infectedStrategy: 'Стратегия для зараженных файлов', + remove: 'Удалить', + removeHelper: 'Удалить зараженные файлы, выбирайте осторожно!', + move: 'Переместить', + moveHelper: 'Переместить зараженные файлы в указанную директорию', + copy: 'Копировать', + copyHelper: 'Копировать зараженные файлы в указанную директорию', + none: 'Ничего не делать', + noneHelper: 'Не предпринимать действий с зараженными файлами', + scanDir: 'Директория сканирования', + infectedDir: 'Директория зараженных файлов', + scanDate: 'Дата сканирования', + scanResult: 'Последние строки лога сканирования', + tail: 'Строк', + scanTime: 'Затраченное время', + infectedFiles: 'Зараженные файлы', + log: 'Подробности', + clamConf: 'Демон Clam AV', + clamLog: '@:toolbox.clam.clamConf логи', + freshClam: 'FreshClam', + freshClamLog: '@:toolbox.clam.freshClam логи', + alertHelper: 'Профессиональная версия поддерживает запланированное сканирование и SMS-оповещения', + alertTitle: 'Задача антивирусного сканирования 「{0}」 обнаружила зараженный файл', + }, + }, + logs: { + panelLog: 'Логи панели', + operation: 'Логи операций', + login: 'Логи входа', + loginIP: 'IP входа', + loginAddress: 'Адрес входа', + loginAgent: 'Агент входа', + loginStatus: 'Статус', + system: 'Системные логи', + deleteLogs: 'Очистить логи', + resource: 'Ресурс', + operate: 'Операция', + detail: { + groups: 'Группа', + hosts: 'Хост', + apps: 'Приложение', + websites: 'Веб-сайт', + containers: 'Контейнер', + files: 'Управление файлами', + runtimes: 'Среда выполнения', + process: 'Процесс', + toolbox: 'Инструменты', + logs: 'Логи панели', + settings: 'Настройки панели', + cronjobs: 'Cron', + databases: 'База данных', + }, + websiteLog: 'Логи веб-сайта', + runLog: 'Логи выполнения', + errLog: 'Логи ошибок', + }, + file: { + dir: 'Папка', + upload: 'Загрузить', + uploadFile: '@:file.upload @.lower:file.file', + uploadDirectory: '@:file.upload @.lower:file.dir', + download: 'Скачать', + fileName: 'Имя файла', + search: 'Поиск', + mode: 'Права доступа', + editPermissions: '@:file.mode', + owner: 'Владелец', + file: 'Файл', + remoteFile: 'Скачать с удаленного сервера', + share: 'Поделиться', + sync: 'Синхронизация данных', + size: 'Размер', + updateTime: 'Изменен', + open: 'Открыть', + rename: 'Переименовать', + role: 'Права доступа', + info: 'Атрибуты', + linkFile: 'Символическая ссылка', + terminal: 'Терминал', + batchoperation: 'Пакетная операция', + shareList: 'Список общих ресурсов', + zip: 'Сжатый', + group: 'Группа', + path: 'Путь', + public: 'Другие', + setRole: 'Установить права', + link: 'Ссылка на файл', + rRole: 'Чтение', + wRole: 'Запись', + xRole: 'Исполнение', + name: 'Имя', + compress: 'Сжать', + deCompress: 'Распаковать', + compressType: 'Формат сжатия', + compressDst: 'Путь сжатия', + replace: 'Перезаписать существующие файлы', + compressSuccess: 'Успешно сжато', + deCompressSuccess: 'Успешно распаковано', + deCompressDst: 'Путь распаковки', + linkType: 'Тип ссылки', + softLink: 'Символическая ссылка', + hardLink: 'Жесткая ссылка', + linkPath: 'Путь ссылки', + selectFile: 'Выбрать файл', + downloadUrl: 'Удаленный URL', + downloadStart: 'Загрузка начата', + moveSuccess: 'Успешно перемещено', + copySuccess: 'Успешно скопировано', + move: 'Переместить', + copy: 'Копировать', + calculate: 'Вычислить', + canNotDeCompress: 'Невозможно распаковать этот файл', + uploadSuccess: 'Успешно загружено', + downloadProcess: 'Прогресс загрузки', + downloading: 'Загрузка...', + infoDetail: 'Свойства файла', + root: 'Корневая директория', + list: 'Список файлов', + sub: 'Подпапки', + downloadSuccess: 'Успешно скачано', + theme: 'Тема', + language: 'Язык', + eol: 'Конец строки', + copyDir: 'Копировать', + paste: 'Вставить', + cancel: 'Отмена', + changeOwner: 'Изменить пользователя и группу', + containSub: 'Применить изменение прав рекурсивно', + ownerHelper: + 'Пользователь по умолчанию для среды PHP: группа пользователей 1000:1000, нормально что пользователи внутри и снаружи контейнера показывают несоответствия', + searchHelper: 'Поддерживает подстановочные знаки, такие как *', + uploadFailed: '[{0}] Ошибка загрузки файла', + fileUploadStart: 'Загрузка [{0}]....', + currentSelect: 'Текущий выбор: ', + unsupportedType: 'Неподдерживаемый тип файла', + deleteHelper: 'Вы уверены, что хотите удалить следующие файлы? По умолчанию они будут помещены в корзину', + fileHeper: 'Примечание:\n1. Результаты поиска нельзя сортировать.\n2. Папки нельзя сортировать по размеру.', + forceDeleteHelper: 'Удалить файл навсегда (без помещения в корзину, удалить напрямую)', + recycleBin: 'Корзина', + sourcePath: 'Исходный путь', + deleteTime: 'Время удаления', + confirmReduce: 'Вы уверены, что хотите восстановить следующие файлы?', + reduceSuccess: 'Успешно восстановлено', + reduce: 'Восстановление', + reduceHelper: + 'Если файл или директория с таким же именем существует в исходном пути, он будет перезаписан. Хотите продолжить?', + clearRecycleBin: 'Очистить', + clearRecycleBinHelper: 'Вы хотите очистить корзину?', + favorite: 'Избранное', + removeFavorite: 'Удалить из избранного?', + addFavorite: 'Добавить в избранное', + clearList: 'Очистить список', + deleteRecycleHelper: 'Вы уверены, что хотите навсегда удалить следующие файлы?', + typeErrOrEmpty: '[{0}] неверный тип файла или пустая папка', + dropHelper: 'Перетащите сюда файлы для загрузки', + fileRecycleBin: 'Включить корзину', + fileRecycleBinMsg: '{0} корзина', + wordWrap: 'Автоматический перенос строк', + deleteHelper2: 'Вы уверены, что хотите удалить выбранный файл? Операцию удаления нельзя отменить', + ignoreCertificate: 'Разрешить небезопасные подключения к серверу', + ignoreCertificateHelper: + 'Разрешение небезопасных подключений к серверу может привести к утечке или подмене данных. Используйте эту опцию только если доверяете источнику загрузки.', + uploadOverLimit: 'Количество файлов превышает 1000! Пожалуйста, сожмите и загрузите', + clashDitNotSupport: 'Имена файлов не должны содержать .1panel_clash', + clashDeleteAlert: 'Папку "Корзина" нельзя удалить', + clashOpenAlert: 'Пожалуйста, нажмите кнопку "Корзина" чтобы открыть директорию корзины', + right: 'Вперед', + back: 'Назад', + top: 'Вернуться', + refresh: 'Обновить', + up: 'Назад', + openWithVscode: 'Открыть в VS Code', + vscodeHelper: 'Пожалуйста, убедитесь что VS Code установлен локально и настроен плагин SSH Remote', + saveContentAndClose: 'Файл был изменен, хотите сохранить и закрыть его?', + saveAndOpenNewFile: 'Файл был изменен, хотите сохранить и открыть новый файл?', + noEdit: 'Файл не был изменен, не нужно этого делать!', + noNameFolder: 'Безымянная папка', + noNameFile: 'Безымянный файл', + minimap: 'Мини-карта кода', + fileCanNotRead: 'Файл не может быть прочитан', + panelInstallDir: 'Директорию установки 1Panel нельзя удалить', + }, + ssh: { + autoStart: 'Автозапуск', + enable: 'Включить автозапуск', + disable: 'Отключить автозапуск', + sshAlert: + 'Данные списка отсортированы по дате входа. Изменение часового пояса или выполнение других операций может вызвать отклонения в дате логов входа.', + sshAlert2: + 'Вы можете использовать "Fail2ban" в "Инструментах" для блокировки IP-адресов, пытающихся выполнить брутфорс-атаки, это повысит безопасность хоста.', + sshOperate: 'Будет выполнена операция "{0}" над службой SSH. Хотите продолжить?', + sshChange: 'Настройки SSH', + sshChangeHelper: 'Это действие изменит "{0}" на "{1}". Хотите продолжить?', + sshFileChangeHelper: + 'Изменение конфигурационного файла может повлиять на доступность службы. Будьте осторожны при выполнении этой операции. Хотите продолжить?', + port: 'Порт', + portHelper: 'Указывает порт, который прослушивает служба SSH.', + listenAddress: 'Адрес прослушивания', + allV4V6: '0.0.0.0:{0}(IPv4) и :::{0}(IPv6)', + listenHelper: + 'Если оставить пустыми настройки IPv4 и IPv6, будет прослушиваться "0.0.0.0:{0}(IPv4)" и ":::{0}(IPv6)".', + addressHelper: 'Указывает адрес, который прослушивает служба SSH.', + permitRootLogin: 'Разрешить вход пользователя root', + rootSettingHelper: 'Метод входа по умолчанию для пользователя root - "Разрешить вход по SSH".', + rootHelper1: 'Разрешить вход по SSH', + rootHelper2: 'Отключить вход по SSH', + rootHelper3: 'Разрешен только вход по ключу', + rootHelper4: 'Можно выполнять только предопределенные команды. Другие операции недоступны.', + passwordAuthentication: 'Аутентификация по паролю', + pwdAuthHelper: 'Включить ли аутентификацию по паролю. Этот параметр включен по умолчанию.', + pubkeyAuthentication: 'Аутентификация по ключу', + key: 'Ключ', + password: 'Пароль', + pubkey: 'Информация о ключе', + encryptionMode: 'Режим шифрования', + passwordHelper: 'Может содержать от 6 до 10 цифр и английских букв в разных регистрах', + generate: 'Сгенерировать ключ', + reGenerate: 'Перегенерировать ключ', + keyAuthHelper: 'Включить ли аутентификацию по ключу.', + useDNS: 'useDNS', + dnsHelper: 'Управляет включением функции DNS-разрешения на SSH-сервере для проверки подлинности подключения.', + analysis: 'Статистическая информация', + denyHelper: + 'Выполнение операции "запретить" для следующих адресов. После установки IP будет запрещен доступ к серверу. Хотите продолжить?', + acceptHelper: + 'Выполнение операции "разрешить" для следующих адресов. После установки IP восстановит нормальный доступ. Хотите продолжить?', + noAddrWarning: 'В настоящее время не выбраны адреса [{0}]. Пожалуйста, проверьте и попробуйте снова!', + successful: 'Успешно', + failed: 'Неудачно', + loginLogs: 'Логи входа', + loginMode: 'Режим', + authenticating: 'Ключ', + publickey: 'Ключ', + belong: 'Принадлежность', + local: 'Локальный', + config: 'Конфигурация', + session: 'Сессия | Сессии', + loginTime: 'Время входа', + loginIP: 'IP входа', + disconnect: 'Отключить', + stopSSHWarn: 'Отключить это SSH-соединение', + }, + setting: { + all: 'Все', + panel: 'Панель', + user: 'Пользователь панели', + userChange: 'Изменить пользователя панели', + userChangeHelper: 'Изменение пользователя панели приведет к выходу из системы. Продолжить?', + passwd: 'Пароль панели', + emailHelper: 'Для восстановления пароля', + title: 'Псевдоним панели', + panelPort: 'Порт панели', + titleHelper: 'Поддерживает начало без спецсимволов, английский, китайский, цифры, пробелы, .- и _, длина 3-30', + portHelper: + 'Рекомендуемый диапазон портов от 8888 до 65535. Примечание: Если на сервере есть группа безопасности, заранее разрешите новый порт в группе безопасности', + portChange: 'Изменение порта', + portChangeHelper: 'Изменить порт службы и перезапустить службу. Хотите продолжить?', + theme: 'Тема', + menuTabs: 'Вкладки меню', + dark: 'Тёмная', + darkGold: 'Тёмное золото', + light: 'Светлая', + auto: 'Как в системе', + language: 'Язык', + languageHelper: 'По умолчанию следует языку браузера. Этот параметр действует только в текущем браузере', + sessionTimeout: 'Время сессии', + sessionTimeoutError: 'Минимальное время сессии 300 секунд', + sessionTimeoutHelper: 'Панель автоматически выйдет из системы, если не будет операций более {0} секунд.', + systemIP: 'IP-адрес панели', + proxy: 'Прокси', + proxyHelper: 'После настройки прокси-сервера он будет действовать в следующих сценариях:', + proxyHelper1: + 'Загрузка установочного пакета и синхронизация из магазина приложений (только профессиональная версия)', + proxyHelper2: 'Обновление системы и получение информации об обновлениях (только профессиональная версия)', + proxyHelper4: 'Сеть Docker будет доступна через прокси-сервер (только профессиональная версия)', + proxyHelper3: 'Проверка и синхронизация системной лицензии', + proxyType: 'Тип прокси', + proxyUrl: 'Адрес прокси', + proxyPort: 'Порт прокси', + proxyPasswdKeep: 'Запомнить пароль', + proxyDocker: 'Прокси Docker', + proxyDockerHelper: + 'Синхронизировать конфигурацию прокси-сервера с Docker, поддержка офлайн загрузки образов и других операций', + apiInterface: 'Включить API', + apiInterfaceClose: 'После закрытия API-интерфейсы будут недоступны. Хотите продолжить?', + apiInterfaceHelper: 'Разрешить сторонним приложениям доступ к API.', + apiInterfaceAlert1: + 'Не включайте в производственной среде, так как это может повысить риски безопасности сервера.', + apiInterfaceAlert2: + 'Не используйте сторонние приложения для вызова API во избежание потенциальных угроз безопасности.', + apiInterfaceAlert3: 'API документация', + apiInterfaceAlert4: 'Руководство по использованию', + apiKey: 'API ключ', + apiKeyHelper: 'API ключ используется сторонними приложениями для доступа к API.', + ipWhiteList: 'Белый список IP', + ipWhiteListEgs: 'По одному в строке. Например,\n172.161.10.111\n172.161.10.0/24', + ipWhiteListHelper: 'IP-адреса из белого списка могут получить доступ к API.', + apiKeyReset: 'Сброс ключа интерфейса', + apiKeyResetHelper: + 'связанный ключевой сервис станет недействительным. Пожалуйста, добавьте новый ключ к сервису', + confDockerProxy: 'Настроить прокси docker', + restartNowHelper: 'Настройка прокси Docker требует перезапуска службы Docker.', + restartNow: 'Перезапустить немедленно', + systemIPWarning: 'Адрес сервера в настоящее время не задан. Сначала установите его в панели управления.', + systemIPWarning1: 'Текущий адрес сервера установлен на {0}, быстрое перенаправление невозможно!', + defaultNetwork: 'Сетевой интерфейс', + syncTime: 'Время сервера', + timeZone: 'Часовой пояс', + timeZoneChangeHelper: 'Изменение часового пояса требует перезапуска службы. Хотите продолжить?', + timeZoneHelper: + 'Изменение часового пояса зависит от системной службы timedatectl. Вступит в силу после перезапуска службы 1Panel.', + timeZoneCN: 'Пекин', + timeZoneAM: 'Лос-Анджелес', + timeZoneNY: 'Нью-Йорк', + ntpALi: 'Alibaba', + ntpGoogle: 'Google', + syncSite: 'NTP сервер', + syncSiteHelper: + 'Эта операция будет использовать {0} как источник для синхронизации системного времени. Хотите продолжить?', + changePassword: 'Изменить пароль', + oldPassword: 'Текущий пароль', + newPassword: 'Новый пароль', + retryPassword: 'Подтвердите пароль', + noSpace: 'Вводимая информация не может включать пробелы', + duplicatePassword: 'Новый пароль не может совпадать с текущим, пожалуйста, введите заново!', + diskClean: 'Очистка кэша', + developerMode: 'Режим предварительного просмотра', + developerModeHelper: + 'Вы сможете опробовать новые функции и исправления до их широкого релиза и оставить ранний отзыв.', + thirdParty: 'Сторонние аккаунты', + addBackupAccount: 'Добавить {0}', + noTypeForCreate: 'В настоящее время не создано типов резервного копирования', + LOCAL: 'Диск сервера', + OSS: 'Ali OSS', + S3: 'Amazon S3', + mode: 'Режим', + MINIO: 'MinIO', + SFTP: 'SFTP', + WebDAV: 'WebDAV', + WebDAVAlist: 'Подключение WebDAV к Alist можно найти в официальной документации', + OneDrive: 'Microsoft OneDrive', + isCN: 'Китайский интернет', + isNotCN: 'Международная версия', + client_id: 'ID клиента', + client_secret: 'Секрет клиента', + redirect_uri: 'URL перенаправления', + onedrive_helper: 'Пользовательская конфигурация описана в официальной документации', + refreshTime: 'Время обновления токена', + refreshStatus: 'Статус обновления токена', + backupDir: 'Директория резервных копий', + codeWarning: 'Текущий формат кода авторизации неверен, пожалуйста, проверьте еще раз!', + code: 'Код авторизации', + codeHelper: + 'Пожалуйста, нажмите кнопку "Получить", затем войдите в OneDrive и скопируйте содержимое после "code" в перенаправленной ссылке. Вставьте его в это поле ввода. Подробные инструкции смотрите в официальной документации.', + loadCode: 'Получить', + COS: 'Tencent COS', + ap_beijing_1: 'Пекин Зона 1', + ap_beijing: 'Пекин', + ap_nanjing: 'Нанкин', + ap_shanghai: 'Шанхай', + ap_guangzhou: 'Гуанчжоу', + ap_chengdu: 'Чэнду', + ap_chongqing: 'Чунцин', + ap_shenzhen_fsi: 'Шэньчжэнь Финансовый', + ap_shanghai_fsi: 'Шанхай Финансовый', + ap_beijing_fsi: 'Пекин Финансовый', + ap_hongkong: 'Гонконг, Китай', + ap_singapore: 'Сингапур', + ap_mumbai: 'Мумбаи', + ap_jakarta: 'Джакарта', + ap_seoul: 'Сеул', + ap_bangkok: 'Бангкок', + ap_tokyo: 'Токио', + na_siliconvalley: 'Силиконовая долина (США Запад)', + na_ashburn: 'Ашберн (США Восток)', + na_toronto: 'Торонто', + sa_saopaulo: 'Сан-Паулу', + eu_frankfurt: 'Франкфурт', + KODO: 'Qiniu Kodo', + scType: 'Тип хранилища', + typeStandard: 'Стандартный', + typeStandard_IA: 'Стандартный_IA', + typeArchive: 'Архивный', + typeDeep_Archive: 'Глубокий_Архив', + scStandard: + 'Стандартное хранилище подходит для бизнес-сценариев с большим количеством горячих файлов, требующих мгновенного доступа, частого обмена данными и т.д.', + scStandard_IA: + 'Низкочастотное хранилище подходит для бизнес-сценариев с относительно низкой частотой доступа и хранит данные не менее 30 дней.', + scArchive: 'Архивное хранилище подходит для бизнес-сценариев с крайне низкой частотой доступа.', + scDeep_Archive: + 'Долговечное холодное хранилище подходит для бизнес-сценариев с крайне низкой частотой доступа.', + archiveHelper: + 'Файлы архивного хранилища нельзя скачать напрямую, сначала их нужно восстановить через веб-сайт соответствующего облачного провайдера. Пожалуйста, используйте с осторожностью!', + backupAlert: + 'Если облачный провайдер совместим с протоколом S3, вы можете напрямую использовать Amazon S3 для резервного копирования.', + domain: 'Домен ускорения', + backupAccount: 'Аккаунт резервного копирования | Аккаунты резервного копирования', + loadBucket: 'Получить корзину', + accountName: 'Имя аккаунта', + accountKey: 'Ключ аккаунта', + address: 'Адрес', + path: 'Путь', + + safe: 'Безопасность', + bindInfo: 'IP-адрес', + bindAll: 'Прослушивать все', + bindInfoHelper: + 'Изменение адреса прослушивания службы или протокола может привести к недоступности службы. Хотите продолжить?', + ipv6: 'Прослушивать IPv6', + bindAddress: 'IP-адрес прослушивания', + entrance: 'Точка входа', + showEntrance: 'Показывать уведомление об отключении на странице "Обзор"', + entranceHelper: + 'Включение безопасной точки входа позволит входить в панель только через указанную точку входа.', + entranceError: + 'Пожалуйста, введите безопасную точку входа длиной 5-116 символов, поддерживаются только цифры или буквы.', + entranceInputHelper: 'Оставьте пустым, чтобы отключить безопасную точку входа.', + randomGenerate: 'Случайно', + expirationTime: 'Дата истечения', + unSetting: 'Не задано', + noneSetting: 'Установите срок действия пароля панели. После истечения срока необходимо сбросить пароль', + expirationHelper: 'Если срок действия пароля [0] дней, функция истечения срока действия пароля отключена', + days: 'Дней до истечения', + expiredHelper: 'Текущий пароль истек. Пожалуйста, измените пароль снова.', + timeoutHelper: + '[ {0} дней ] Срок действия пароля панели скоро истечет. После истечения срока необходимо сбросить пароль', + complexity: 'Проверка сложности', + complexityHelper: + 'После включения правило проверки пароля будет: 8-30 символов, включая английские буквы, цифры и как минимум два специальных символа.', + bindDomain: 'Привязать домен', + unBindDomain: 'Отвязать домен', + panelSSL: 'SSL панели', + unBindDomainHelper: + 'Действие по отвязке доменного имени может привести к небезопасности системы. Хотите продолжить?', + bindDomainHelper: 'После привязки домена только этот домен сможет получить доступ к службе 1Panel.', + bindDomainHelper1: 'Оставьте пустым, чтобы отключить привязку доменного имени.', + bindDomainWarning: + 'После привязки домена вы будете выходить из системы и сможете получить доступ к службе 1Panel только через указанное в настройках доменное имя. Хотите продолжить?', + allowIPs: 'Авторизованные IP', + unAllowIPs: 'Неавторизованные IP', + unAllowIPsWarning: + 'Авторизация пустого IP позволит всем IP получить доступ к системе, что может привести к небезопасности системы. Хотите продолжить?', + allowIPsHelper: + 'После установки списка авторизованных IP-адресов только IP-адреса из списка смогут получить доступ к службе панели.', + allowIPsWarning: + 'После установки списка авторизованных IP-адресов только IP-адреса из списка смогут получить доступ к службе панели. Хотите продолжить?', + allowIPsHelper1: 'Оставьте пустым, чтобы отключить ограничение IP-адресов.', + allowIPEgs: 'По одному в строке. Например,\n172.16.10.111\n172.16.10.0/24', + mfa: '2FA авторизация', + mfaClose: 'Отключение MFA снизит безопасность службы. Хотите продолжить?', + secret: 'Секрет', + mfaInterval: 'Интервал обновления(с)', + mfaTitleHelper: + 'Заголовок используется для различения разных хостов 1Panel. Отсканируйте снова или вручную добавьте секретный ключ после изменения заголовка.', + mfaIntervalHelper: 'Отсканируйте снова или вручную добавьте секретный ключ после изменения времени обновления.', + mfaAlert: + 'Одноразовый токен - это динамически генерируемое 6-значное число, основанное на текущем времени. Убедитесь, что время сервера синхронизировано.', + mfaHelper: 'После включения потребуется проверка одноразового токена.', + mfaHelper1: 'Загрузите приложение-аутентификатор, например,', + mfaHelper2: + 'Чтобы получить одноразовый токен, отсканируйте следующий QR-код с помощью приложения-аутентификатора или скопируйте секретный ключ в приложение аутентификации.', + mfaHelper3: 'Введите шесть цифр из приложения', + mfaCode: 'Одноразовый токен', + sslChangeHelper: 'Изменить настройку https и перезапустить службу. Хотите продолжить?', + sslDisable: 'Отключить', + sslDisableHelper: + 'Если служба https отключена, необходимо перезапустить панель, чтобы изменения вступили в силу. Хотите продолжить?', + noAuthSetting: 'Unauthorized', + noAuthSettingHelper: + 'Когда пользователи не входят через указанную точку входа безопасности или не получают доступ к панели с указанного IP или доменного имени, этот ответ может скрыть характеристики панели.', + responseSetting: 'Настройка ответа', + help200: 'Страница помощи', + error400: 'Неверный запрос', + error401: 'Не авторизован', + error403: 'Запрещено', + error404: 'Не найдено', + error408: 'Тайм-аут запроса', + error416: 'Диапазон не удовлетворяется', + error444: 'Соединение закрыто', + error500: 'Ошибка сервера', + + https: 'Настройка доступа по протоколу HTTPS для панели может повысить безопасность доступа к панели.', + certType: 'Тип сертификата', + selfSigned: 'Самоподписанный', + selfSignedHelper: + 'Браузеры могут не доверять самоподписанным сертификатам и отображать предупреждения безопасности.', + select: 'Выбрать', + domainOrIP: 'Домен или IP:', + timeOut: 'Тайм-аут', + rootCrtDownload: 'Скачать корневой сертификат', + primaryKey: 'Закрытый ключ', + certificate: 'Сертификат', + backupJump: + 'Файлы резервной копии отсутствуют в текущем списке резервных копий, попробуйте скачать из директории файлов и импортировать для резервного копирования.', + + snapshot: 'Снапшот | Снапшоты', + deleteHelper: + 'Все файлы снапшотов, включая те, что находятся в сторонних аккаунтах резервного копирования, будут удалены. Хотите продолжить?', + status: 'Статус снапшота', + ignoreRule: 'Правило игнорирования', + editIgnoreRule: '@:commons.button.edit @.lower:setting.ignoreRule', + ignoreHelper: + 'Это правило будет использоваться для сжатия и резервного копирования директории данных 1Panel при создании снапшота. По умолчанию игнорируются файлы сокетов.', + ignoreHelper1: 'По одному в строке. Например,\n*.log\n/opt/1panel/cache', + panelInfo: 'Записать базовую информацию 1Panel', + panelBin: 'Резервное копирование системных файлов 1Panel', + daemonJson: 'Резервное копирование конфигурационного файла Docker', + appData: 'Резервное копирование установленных приложений из 1Panel', + panelData: 'Резервное копирование директории данных 1Panel', + backupData: 'Резервное копирование локальной директории резервных копий для 1Panel', + compress: 'Создать файл снапшота', + upload: 'Загрузить файл снапшота', + recoverDetail: 'Детали восстановления', + createSnapshot: 'Создать снапшот', + importSnapshot: 'Синхронизировать снапшот', + importHelper: 'Директория снапшот: ', + recover: 'Восстановить', + lastRecoverAt: 'Время последнего восстановления', + lastRollbackAt: 'Время последнего отката', + reDownload: 'Скачать файл резервной копии снова', + statusSuccess: 'Успешно', + statusFailed: 'Неудачно', + recoverErrArch: 'Восстановление снапшотов между разными архитектурами серверов не поддерживается!', + recoverErrSize: + 'Обнаружено недостаточно места на диске, пожалуйста, проверьте или очистите и попробуйте снова!', + recoverHelper: + 'Начало восстановления из снапшота {0}, пожалуйста, подтвердите следующую информацию перед продолжением:', + recoverHelper1: 'Восстановление требует перезапуска служб Docker и 1Panel', + recoverHelper2: + 'Пожалуйста, убедитесь, что на сервере достаточно места на диске (Размер файла снапшота: {0}, Доступное место: {1})', + recoverHelper3: + 'Пожалуйста, убедитесь, что архитектура сервера соответствует архитектуре сервера, где был создан снапшот (Текущая архитектура сервера: {0})', + rollback: 'Откатить', + rollbackHelper: + 'Откат этого восстановления заменит все файлы из этого восстановления и может потребовать перезапуска служб Docker и 1Panel. Хотите продолжить?', + + upgradeHelper: 'Обновление требует перезапуска службы 1Panel. Хотите продолжить?', + noUpgrade: 'В настоящее время это последняя версия', + upgradeNotes: 'Примечания к выпуску', + upgradeNow: 'Обновить сейчас', + source: 'Источник загрузки', + + about: 'О программе', + project: 'GitHub', + issue: 'Проблема', + doc: 'Официальная документация', + star: 'Звезда', + description: 'Панель управления Linux сервером', + forum: 'Обсуждения', + doc2: 'Документация', + currentVersion: 'Версия', + + license: 'Лицензия', + advancedMenuHide: 'Скрыть расширенное меню', + showMainAdvancedMenu: + 'Если сохранено только одно меню, в боковой панели будет отображаться только основное расширенное меню', + showAll: 'Показать все', + hideALL: 'Скрыть все', + ifShow: 'Показывать', + menu: 'Меню', + confirmMessage: 'Страница будет обновлена для обновления списка расширенного меню. Продолжить?', + compressPassword: 'Пароль сжатия', + backupRecoverMessage: + 'Пожалуйста, введите пароль для сжатия или распаковки (оставьте пустым, чтобы не устанавливать)', + }, + license: { + community: 'Free', + pro: 'Pro', + trial: 'Trial', + office: 'Official', + trialInfo: 'Версия', + authorizationId: 'ID авторизации подписки', + authorizedUser: 'Авторизованный пользователь', + expiresAt: 'Дата истечения', + productName: 'Название продукта', + productStatus: 'Статус продукта', + Lost: 'Потеряна', + Enable: 'Включена', + Disable: 'Отключена', + lostHelper: + 'Лицензия достигла максимального количества попыток повторной проверки. Пожалуйста, вручную нажмите кнопку синхронизации, чтобы убедиться, что функции профессиональной версии работают правильно.', + disableHelper: + 'Синхронизация лицензии не удалась. Пожалуйста, вручную нажмите кнопку синхронизации, чтобы убедиться, что функции профессиональной версии работают правильно.', + quickUpdate: 'Быстрое обновление', + import: 'Импорт', + power: 'Авторизовать', + unbind: 'Отвязать лицензию', + unbindHelper: 'Все настройки Pro будут очищены после отвязки. Хотите продолжить?', + importLicense: 'Лицензия', + importHelper: 'Пожалуйста, нажмите или перетащите файл лицензии сюда', + technicalAdvice: 'Техническая консультация', + advice: 'Консультация', + indefinitePeriod: 'Бессрочный период', + levelUpPro: 'Обновить до Pro', + licenseSync: 'Синхронизация лицензии', + knowMorePro: 'Узнать больше', + closeAlert: 'Текущую страницу можно закрыть в настройках панели', + introduce: 'Описание функций', + waf: 'Обновление до профессиональной версии предоставляет такие функции, как карта перехватов, логи, записи блокировок, блокировка по географическому положению, пользовательские правила, пользовательские страницы перехвата и т.д.', + tamper: 'Обновление до профессиональной версии может защитить веб-сайты от несанкционированных изменений или подделок.', + gpu: 'Обновление до профессиональной версии помогает пользователям визуально отслеживать важные параметры GPU, такие как нагрузка, температура, использование памяти в реальном времени.', + setting: + 'Обновление до профессиональной версии позволяет настраивать логотип панели, приветственное сообщение и другую информацию.', + monitor: + 'Обновление до профессиональной версии позволяет просматривать статус веб-сайта в реальном времени, тенденции посещений, источники посетителей, логи запросов и другую информацию.', + alert: 'Обновление до профессиональной версии позволяет получать информацию о тревогах через SMS и просматривать логи тревог, полностью контролировать различные ключевые события и обеспечивать беспроблемную работу системы', + }, + clean: { + scan: 'Начать сканирование', + scanHelper: 'Легко очищайте мусорные файлы, созданные во время работы 1Panel', + clean: 'Очистить сейчас', + reScan: 'Пересканировать', + cleanHelper: 'Это очистит выбранные системные мусорные файлы, и действие нельзя отменить. Хотите продолжить?', + statusSuggest: '(Рекомендуется очистка)', + statusClean: '(Очень чисто)', + statusEmpty: 'Очень чисто, очистка не требуется!', + statusWarning: '(Действуйте с осторожностью)', + lastCleanTime: 'Последняя очистка: {0}', + lastCleanHelper: 'Очищено файлов и директорий: {0}, всего очищено: {1}', + cleanSuccessful: 'Успешно очищено', + currentCleanHelper: 'Очищено файлов и директорий в этой сессии: {0}, Всего очищено: {1}', + suggest: '(Рекомендуется)', + totalScan: 'Всего мусорных файлов для очистки: ', + selectScan: 'Всего выбранных мусорных файлов: ', + + system: 'Системные мусорные файлы', + systemHelper: + 'Временные файлы, созданные во время снапшотов, обновлений, и устаревшее содержимое файлов при итерациях версий', + panelOriginal: 'Файлы резервных копий восстановления системных снапшотов', + upgrade: 'Файлы резервных копий системных обновлений', + upgradeHelper: '(Рекомендуется сохранять последнюю резервную копию обновления для отката системы)', + cache: 'Системные файлы кэша', + cacheHelper: '(Действуйте с осторожностью, очистка требует перезапуска службы)', + snapshotTmp: 'Временные файлы загрузки системных снапшотов', + snapshotLocal: 'Временные файлы создания системных снапшотов', + rollback: 'Файлы резервных копий перед восстановлением', + unused: 'Неиспользуемые системные директории', + oldUpgrade: 'Неиспользуемые директории резервных копий перед обновлением', + oldOriginal: 'Неиспользуемые директории резервных копий перед восстановлением снапшотов', + oldAppsBak: 'Неиспользуемые директории резервных копий приложений', + + upload: 'Временные файлы загрузки', + uploadHelper: 'Временные файлы, загруженные из списка системных резервных копий', + download: 'Временные файлы скачивания', + downloadHelper: 'Временные файлы, скачанные из сторонних аккаунтов резервного копирования системой', + website: 'Веб-сайт', + app: 'Приложение', + database: 'База данных', + directory: 'Директория', + + systemLog: 'Системные файлы логов', + systemLogHelper: + 'Системная информация логов, логи сборки контейнеров или загрузки образов, и файлы логов, созданные в запланированных задачах', + dockerLog: 'Файлы логов операций с контейнерами', + taskLog: 'Файлы логов выполнения запланированных задач', + containerShell: 'Запланированные задачи Shell-скриптов внутри контейнера', + + containerTrash: 'Корзина контейнеров', + images: 'Образы', + containers: 'Контейнеры', + volumes: 'Тома', + buildCache: 'Кэш сборки контейнеров', + }, + app: { + app: 'Приложение | Приложения', + installName: 'Имя', + installed: 'Установленные', + all: 'Все', + version: 'Версия', + detail: 'Детали', + params: 'Редактировать', + install: 'Установить', + author: 'Автор', + source: 'Источник', + sync: 'Синхронизировать', + appName: 'Название приложения', + status: 'Статус', + container: 'Контейнер', + restart: 'Перезапустить', + start: 'Запустить', + stop: 'Остановить', + rebuild: 'Пересобрать', + description: 'Описание', + deleteWarn: + 'Операция удаления удалит все данные и резервные копии. Эту операцию нельзя отменить. Хотите продолжить?', + syncSuccess: 'Синхронизация выполнена успешно', + canUpgrade: 'Обновления', + backupName: 'Имя файла', + backupPath: 'Путь к файлу', + backupdate: 'Время резервного копирования', + update: 'обновить', + versionSelect: 'Пожалуйста, выберите версию', + operatorHelper: 'Операция {0} будет выполнена для выбранного приложения. Хотите продолжить?', + startOperatorHelper: 'Приложение будет запущено. Хотите продолжить?', + stopOperatorHelper: 'Приложение будет остановлено. Хотите продолжить?', + restartOperatorHelper: 'Приложение будет перезапущено. Хотите продолжить?', + reloadOperatorHelper: 'Приложение будет перезагружено. Хотите продолжить?', + checkInstalledWarn: '"{0}" не обнаружено. Перейдите в "Магазин приложений" для установки.', + gotoInstalled: 'Перейти к установке', + search: 'Поиск', + limitHelper: 'Приложение уже установлено.', + deleteHelper: '"{0}" связано со следующими ресурсами. Пожалуйста, проверьте и попробуйте снова!', + checkTitle: 'Подсказка', + website: 'веб-сайт', + database: 'база данных', + defaultConfig: 'Конфигурация по умолчанию', + defaultConfigHelper: 'Восстановлено до конфигурации по умолчанию, вступит в силу после сохранения', + forceDelete: 'Принудительное удаление', + forceDeleteHelper: + 'Принудительное удаление будет игнорировать ошибки во время процесса удаления и в итоге удалит метаданные.', + deleteBackup: 'Удалить резервную копию', + deleteBackupHelper: 'Также удалить резервную копию приложения', + deleteDB: 'Удалить базу данных', + deleteDBHelper: 'Также удалить базу данных', + noService: 'Нет {0}', + toInstall: 'Перейти к установке', + param: 'Параметры', + alreadyRun: 'Возраст', + syncAppList: 'Синхронизировать', + less1Minute: 'Меньше 1 минуты', + appOfficeWebsite: 'Официальный сайт', + github: 'Github', + document: 'Документация', + updatePrompt: 'Нет доступных обновлений', + installPrompt: 'Пока нет установленных приложений', + updateHelper: + 'Редактирование параметров может привести к сбою запуска приложения. Пожалуйста, действуйте с осторожностью.', + updateWarn: 'Обновление параметров требует пересборки приложения. Хотите продолжить?', + busPort: 'Порт', + syncStart: 'Начало синхронизации! Пожалуйста, обновите магазин приложений позже', + advanced: 'Расширенные настройки', + cpuCore: 'ядро(а)', + containerName: 'Имя контейнера', + containerNameHelper: 'Имя контейнера будет автоматически сгенерировано, если не задано', + allowPort: 'Внешний доступ', + allowPortHelper: 'Разрешение внешнего доступа к порту откроет порт в брандмауэре', + appInstallWarn: + 'Приложение по умолчанию не открывает порт для внешнего доступа. Нажмите "Расширенные настройки" для открытия.', + upgradeStart: 'Начало обновления! Пожалуйста, обновите страницу позже', + toFolder: 'Открыть директорию установки', + editCompose: 'Редактировать файл compose', + editComposeHelper: 'Редактирование файла compose может привести к сбою установки программного обеспечения', + composeNullErr: 'compose не может быть пустым', + takeDown: 'Отключить', + allReadyInstalled: 'Установлено', + installHelper: 'Если есть проблемы с загрузкой образа, настройте ускорение образов.', + upgradeHelper: + 'Приведите аномальные приложения в нормальное состояние перед обновлением. Если обновление не удалось, перейдите в "Логи > Системные логи" для проверки причины сбоя.', + installWarn: + 'Внешний доступ не включен, что делает приложение недоступным через внешние сети. Хотите продолжить?', + showIgnore: 'Просмотреть игнорируемые приложения', + cancelIgnore: 'Отменить игнорирование', + ignoreList: 'Игнорируемые приложения', + appHelper: 'Перейдите на страницу приложения, чтобы узнать инструкции и подробности данного приложения.', + backupApp: 'Создать резервную копию приложения перед обновлением', + backupAppHelper: + 'Если обновление не удастся, резервная копия будет автоматически восстановлена. Пожалуйста, проверьте причину сбоя в логе аудита-системном логе. Резервная копия по умолчанию сохранит последние 3 копии', + delete: 'Удалить', + openrestyDeleteHelper: 'Принудительное удаление OpenResty удалит все веб-сайты. Хотите продолжить?', + downloadLogHelper1: 'Будут загружены все логи приложения {0}. Хотите продолжить?', + downloadLogHelper2: 'Будут загружены последние {1} логов приложения {0}. Хотите продолжить?', + syncAllAppHelper: 'Все приложения будут синхронизированы. Хотите продолжить?', + hostModeHelper: + 'Текущий режим сети приложения - режим хоста. Если нужно открыть порт, пожалуйста, откройте его вручную на странице брандмауэра.', + showLocal: 'Показать локальные приложения', + reload: 'Перезагрузить', + upgradeWarn: + 'Обновление приложения заменит файл docker-compose.yml. Если есть изменения, вы можете нажать для просмотра сравнения файлов', + newVersion: 'Новая версия', + oldVersion: 'Текущая версия', + composeDiff: 'Сравнение файлов', + showDiff: 'Просмотреть сравнение', + useNew: 'Использовать пользовательскую версию', + useDefault: 'Использовать версию по умолчанию', + useCustom: 'Настроить docker-compose.yml', + useCustomHelper: + 'Использование пользовательского файла docker-compose.yml может привести к сбою обновления приложения. Если это не необходимо, не отмечайте это.', + diffHelper: + 'Слева старая версия, справа новая версия. После редактирования нажмите для сохранения пользовательской версии', + pullImage: 'Загрузить образ', + pullImageHelper: 'Выполнить docker pull для загрузки образа перед запуском приложения', + }, + website: { + website: 'Веб-сайт | Веб-сайты', + primaryDomain: 'Основной домен', + otherDomains: 'Другие домены', + static: 'Статический', + deployment: 'Развертывание', + supportUpType: 'Поддерживаются только файлы .tar.gz', + zipFormat: 'Структура архива .tar.gz: архив test.tar.gz должен содержать файл {0}', + proxy: 'Обратный прокси', + alias: 'Псевдоним', + enableFtp: 'FTP', + ftpUser: 'FTP аккаунт', + ftpPassword: 'FTP пароль', + ftpHelper: + 'После создания веб-сайта будет создан соответствующий FTP-аккаунт, и FTP-директория будет связана с директорией веб-сайта.', + remark: 'Примечание', + group: 'Группа', + manageGroup: 'Управление группами', + groupSetting: 'Управление группами', + createGroup: 'Создать группу', + app: 'Приложение', + appNew: 'Новое приложение', + appInstalled: 'Установленное приложение', + create: 'Создать веб-сайт', + delete: 'Удалить веб-сайт', + deleteApp: 'Удалить приложение', + deleteBackup: 'Удалить резервную копию', + domain: 'Домен', + domainHelper: 'Один домен в строке.\nПоддерживает wildcard "*" и IP-адреса.\nПоддерживает добавление порта.', + addDomain: 'Добавить', + domainConfig: 'Домены', + defaultDoc: 'Документ', + perserver: 'Параллельные подключения', + perserverHelper: 'Ограничить максимальное количество параллельных подключений для текущего сайта', + perip: 'Один IP', + peripHelper: 'Ограничить максимальное количество параллельных подключений с одного IP', + rate: 'Ограничения трафика', + rateHelper: 'Ограничить поток каждого запроса (единица: КБ)', + limitHelper: 'Включить контроль потока', + other: 'Другое', + currentSSL: 'Текущий сертификат', + dnsAccount: 'DNS аккаунт', + applySSL: 'Заявка на сертификат', + SSLList: 'Список сертификатов', + createDnsAccount: 'DNS аккаунт', + aliyun: 'Aliyun', + volcengine: 'Volcengine', + manual: 'Ручная настройка', + key: 'Ключ', + check: 'Просмотр', + acmeAccountManage: 'ACME аккаунты', + email: 'Email', + acmeAccount: 'ACME аккаунт', + provider: 'Метод проверки', + dnsManual: 'Ручное разрешение', + expireDate: 'Дата истечения', + brand: 'Организация', + deploySSL: 'Развертывание', + deploySSLHelper: 'Вы уверены, что хотите развернуть сертификат?', + ssl: 'Сертификат | Сертификаты', + dnsAccountManage: 'DNS провайдеры', + renewSSL: 'Обновить', + renewHelper: 'Вы уверены, что хотите обновить сертификат?', + renewSuccess: 'Обновить сертификат', + config: 'Редактировать', + enableHTTPS: 'Включить', + aliasHelper: 'Псевдоним - это имя директории веб-сайта', + lastBackupAt: 'время последнего резервного копирования', + null: 'нет', + nginxConfig: 'Конфигурация Nginx', + websiteConfig: 'Настройки веб-сайта', + basic: 'Основные', + source: 'Конфигурация', + security: 'Безопасность', + log: 'Логи', + nginxPer: 'Настройка производительности', + neverExpire: 'Никогда', + setDefault: 'Установить по умолчанию', + default: 'По умолчанию', + deleteHelper: 'Статус связанного приложения аномальный, пожалуйста, проверьте', + toApp: 'Перейти к списку установленных', + cycle: 'Цикл', + frequency: 'Частота', + ccHelper: + 'При накоплении более {1} запросов к одному URL в течение {0} секунд срабатывает защита CC и блокируется этот IP', + mustSave: 'Изменения нужно сохранить, чтобы они вступили в силу', + fileExt: 'расширение файла', + fileExtBlock: 'черный список расширений файлов', + value: 'значение', + enable: 'Включить', + proxyAddress: 'Адрес прокси', + proxyHelper: 'Пример: 127.0.0.1:8080', + forceDelete: 'Принудительное удаление', + forceDeleteHelper: + 'Принудительное удаление будет игнорировать ошибки во время процесса удаления и в итоге удалит метаданные.', + deleteAppHelper: 'Удалить связанные приложения и резервные копии приложений одновременно', + deleteBackupHelper: 'Также удалить резервные копии веб-сайта.', + deleteConfirmHelper: + 'Операцию удаления нельзя отменить. Введите "{0}" для подтверждения удаления.', + staticPath: 'Соответствующая основная директория - ', + limit: 'Схема', + blog: 'Форум/Блог', + imageSite: 'Сайт изображений', + downloadSite: 'Сайт загрузок', + shopSite: 'Магазин', + doorSite: 'Портал', + qiteSite: 'Корпоративный', + videoSite: 'Видео', + errLog: 'Лог ошибок', + accessLog: 'Лог веб-сайта', + stopHelper: + 'После остановки сайта он не будет доступен для нормального доступа, и пользователи будут видеть страницу остановки при посещении. Хотите продолжить?', + startHelper: + 'После включения сайта пользователи смогут нормально получить доступ к содержимому сайта, хотите продолжить?', + sitePath: 'Директория', + siteAlias: 'Псевдоним сайта', + primaryPath: 'Корневая директория', + folderTitle: 'Веб-сайт в основном содержит следующие папки', + wafFolder: 'Правила межсетевого экрана', + indexFolder: 'Корневая директория веб-сайта', + logFolder: 'Лог веб-сайта', + sslFolder: 'Сертификат веб-сайта', + enableOrNot: 'Включить', + oldSSL: 'Существующий сертификат', + manualSSL: 'Импорт сертификата', + select: 'Выбрать', + selectSSL: 'Выбрать сертификат', + privateKey: 'Ключ (KEY)', + certificate: 'Сертификат (формат PEM)', + HTTPConfig: 'Опции HTTP', + HTTPSOnly: 'Блокировать HTTP запросы', + HTTPToHTTPS: 'Перенаправлять на HTTPS', + HTTPAlso: 'Разрешить прямые HTTP запросы', + sslConfig: 'Опции SSL', + disableHTTPS: 'Отключить HTTPS', + disableHTTPSHelper: 'Отключение HTTPS удалит конфигурацию, связанную с сертификатом. Хотите продолжить?', + SSLHelper: + 'Примечание: Не используйте SSL-сертификаты для нелегальных веб-сайтов.\nЕсли после открытия невозможно использовать доступ по HTTPS, проверьте, правильно ли открыт порт 443 в группе безопасности.', + SSLConfig: 'Настройки сертификата', + SSLProConfig: 'Настройки протокола', + supportProtocol: 'Версия протокола', + encryptionAlgorithm: 'Алгоритм шифрования', + notSecurity: '(небезопасно)', + encryptHelper: + "Let's Encrypt имеет ограничение частоты выдачи сертификатов, но его достаточно для нормальных потребностей. Слишком частые операции приведут к сбою выдачи. Конкретные ограничения см. в официальной документации", + ipValue: 'Значение', + ext: 'расширение файла', + wafInputHelper: 'Вводите данные по строкам, одна строка', + data: 'данные', + ever: 'постоянно', + nextYear: 'Через год', + noLog: 'Логи не найдены', + defaultServer: 'Сайт по умолчанию', + noDefaultServer: 'Не установлен', + defaultServerHelper: + 'После установки сайта по умолчанию все непривязанные доменные имена и IP будут направлены на сайт по умолчанию\n что может эффективно предотвратить злонамеренный анализ', + restoreHelper: 'Вы уверены, что хотите восстановить из этой резервной копии?', + websiteDeploymentHelper: + 'Используйте установленное приложение или создайте новое приложение для создания веб-сайта.', + websiteStatictHelper: 'Создать директорию веб-сайта на хосте.', + websiteProxyHelper: + 'Использовать обратный прокси для проксирования существующей службы. Например, если служба установлена и работает на порту 8080, адрес прокси будет "http://127.0.0.1:8080".', + runtimeProxyHelper: 'Использовать среду выполнения веб-сайта для создания веб-сайта.', + runtime: 'Среда выполнения', + deleteRuntimeHelper: + 'Приложение среды выполнения необходимо удалять вместе с веб-сайтом, пожалуйста, обращайтесь с этим осторожно', + proxyType: 'Тип сети', + unix: 'Unix сеть', + tcp: 'TCP/IP сеть', + phpFPM: 'Конфигурация FPM', + phpConfig: 'Конфигурация PHP', + updateConfig: 'Обновить конфигурацию', + isOn: 'Вкл', + isOff: 'Выкл', + rewrite: 'Псевдостатика', + rewriteMode: 'Схема', + current: 'Текущий', + rewriteHelper: + 'Если установка псевдостатики делает веб-сайт недоступным, попробуйте вернуться к настройкам по умолчанию.', + runDir: 'Рабочая директория', + runUserHelper: + 'Для веб-сайтов, развернутых через среду выполнения контейнера PHP, необходимо установить владельца и группу пользователей всех файлов и папок в index и поддиректориях на 1000. Для локальной среды PHP обратитесь к локальным настройкам пользователя и группы PHP-FPM', + userGroup: 'Пользователь/Группа', + uGroup: 'Группа', + proxyPath: 'Путь прокси', + proxyPass: 'Целевой URL', + cache: 'Кэш', + cacheTime: 'Длительность кэширования', + enableCache: 'Кэш', + proxyHost: 'Прокси хост', + disabled: 'Остановлен', + startProxy: 'Это запустит обратный прокси. Хотите продолжить?', + stopProxy: 'Это остановит обратный прокси. Хотите продолжить?', + sourceFile: 'Источник', + proxyHelper1: 'При доступе к этой директории будет возвращено и отображено содержимое целевого URL.', + proxyPassHelper: 'Целевой URL должен быть действительным и доступным.', + proxyHostHelper: 'Передать доменное имя в заголовке запроса прокси-серверу.', + replacementHelper: 'Можно добавить до 5 замен, оставьте пустым, если замена не требуется.', + modifier: 'Правила сопоставления', + modifierHelper: 'Пример: "=" точное совпадение, "~" регулярное совпадение, "^~" совпадение начала пути и т.д.', + replace: 'Замены текста', + addReplace: 'Добавить', + replaced: 'Искомая строка (не может быть пустой)', + replaceText: 'Заменить на строку', + replacedErr: 'Искомая строка не может быть пустой', + replacedErr2: 'Искомая строка не может повторяться', + basicAuth: 'Базовая аутентификация', + editBasicAuthHelper: + 'Пароль асимметрично зашифрован и не может быть показан. При редактировании нужно сбросить пароль', + antiLeech: 'Анти-лич', + extends: 'Расширение', + browserCache: 'Кэш', + leechLog: 'Записывать лог анти-лича', + accessDomain: 'Разрешенные домены', + leechReturn: 'Ответ ресурса', + noneRef: 'Разрешить пустой referrer', + disable: 'не включено', + disableLeechHelper: 'Отключить ли анти-лич', + disableLeech: 'Отключить анти-лич', + ipv6: 'Прослушивать IPv6', + leechReturnError: 'Пожалуйста, заполните HTTP код статуса', + selectAcme: 'Выберите Acme аккаунт', + imported: 'Создан вручную', + importType: 'Тип импорта', + pasteSSL: 'Вставить код', + localSSL: 'Выбрать файл сервера', + privateKeyPath: 'Файл приватного ключа', + certificatePath: 'Файл сертификата', + ipWhiteListHelper: 'Роль белого списка IP: все правила недействительны для белого списка IP', + redirect: 'Перенаправление', + sourceDomain: 'Исходный домен', + targetURL: 'Целевой URL адрес', + keepPath: 'URI параметры', + path: 'путь', + redirectType: 'тип перенаправления', + redirectWay: 'Способ', + keep: 'сохранить', + notKeep: 'Не сохранять', + redirectRoot: 'Перенаправить на главную страницу', + redirectHelper: '301 постоянное перенаправление, 302 временное перенаправление', + changePHPVersionWarn: + 'Переключение версии PHP удалит оригинальный контейнер PHP (смонтированный код веб-сайта не будет потерян), продолжить?', + changeVersion: 'Переключить версию', + retainConfig: 'Сохранить ли файлы php-fpm.conf и php.ini', + runDirHelper2: 'Пожалуйста, убедитесь, что вторичная рабочая директория находится в директории index', + openrestyHelper: + 'OpenResty порт HTTP по умолчанию: {0} порт HTTPS: {1}, что может повлиять на доступ к доменному имени веб-сайта и принудительное перенаправление HTTPS', + primaryDomainHelper: 'Пример: example.com или example.com:8080', + acmeAccountType: 'Тип аккаунта', + keyType: 'Алгоритм ключа', + tencentCloud: 'Tencent Cloud', + containWarn: 'Доменное имя содержит основной домен, пожалуйста, введите заново', + rewriteHelper2: + 'Приложения типа WordPress, установленные из магазина приложений, обычно поставляются с предустановленной конфигурацией псевдостатики. Их перенастройка может привести к ошибкам.', + websiteBackupWarn: + 'Поддерживается только импорт локальных резервных копий, импорт резервных копий с других машин может привести к сбою восстановления', + ipWebsiteWarn: + 'Веб-сайты с IP в качестве домена должны быть установлены как сайт по умолчанию для нормального доступа.', + hstsHelper: 'Включение HSTS может повысить безопасность веб-сайта', + defaultHtml: 'Страница по умолчанию', + website404: 'Страница ошибки 404 веб-сайта', + domain404: 'Домен веб-сайта не существует', + indexHtml: 'Индекс для статического веб-сайта', + stopHtml: 'Остановленный веб-сайт', + indexPHP: 'Индекс для PHP веб-сайта', + sslExpireDate: 'Дата истечения сертификата', + website404Helper: + 'Страница ошибки 404 веб-сайта поддерживается только для веб-сайтов со средой выполнения PHP и статических веб-сайтов', + sni: 'Origin SNI', + sniHelper: + 'Когда бэкенд обратного прокси использует HTTPS, может потребоваться установить origin SNI. Подробности см. в документации провайдера CDN.', + huaweicloud: 'Huawei Cloud', + }, + php: { + short_open_tag: 'Поддержка коротких тегов', + max_execution_time: 'Максимальное время выполнения скрипта', + max_input_time: 'Максимальное время ввода', + memory_limit: 'Лимит памяти скрипта', + post_max_size: 'Максимальный размер данных POST', + file_uploads: 'Разрешить загрузку файлов', + upload_max_filesize: 'Максимальный разрешенный размер загружаемых файлов', + max_file_uploads: 'Максимальное количество файлов, разрешенных для одновременной загрузки', + default_socket_timeout: 'Тайм-аут сокета', + error_reporting: 'Уровень ошибок', + display_errors: 'Выводить подробную информацию об ошибках', + cgi_fix_pathinfo: 'Включить pathinfo', + date_timezone: 'Часовой пояс', + disableFunction: 'Отключить функции', + disableFunctionHelper: 'Введите функции для отключения, например exec, разделяйте запятыми', + uploadMaxSize: 'Ограничение загрузки', + indexHelper: + 'Для обеспечения нормальной работы PHP-сайта разместите код в директории index и избегайте переименования', + extensions: 'Шаблоны расширений', + extension: 'Расширение', + extensionHelper: 'Используйте несколько расширений, разделяйте запятыми', + toExtensionsList: 'Просмотр списка расширений', + }, + nginx: { + serverNamesHashBucketSizeHelper: 'Размер хэш-таблицы для имен серверов', + clientHeaderBufferSizeHelper: 'Размер буфера заголовка для запросов клиента', + clientMaxBodySizeHelper: 'Максимальный размер загружаемого файла', + keepaliveTimeoutHelper: 'Тайм-аут соединения', + gzipMinLengthHelper: 'Минимальный размер сжатого файла', + gzipCompLevelHelper: 'Степень сжатия', + gzipHelper: 'Включить сжатие для передачи', + connections: 'Активные соединения', + accepts: 'Принято', + handled: 'Обработано', + requests: 'Запросы', + reading: 'Чтение', + writing: 'Запись', + waiting: 'Ожидание', + status: 'Текущий статус', + nginxConfig: 'Настройки', + configResource: 'Конфигурация', + saveAndReload: 'Сохранить и перезагрузить', + clearProxyCache: 'Очистить кэш обратного прокси', + clearProxyCacheWarn: + 'Это повлияет на все веб-сайты с настроенным кэшем и перезапустит "OpenResty". Хотите продолжить?', + }, + ssl: { + create: 'Запросить', + provider: 'Тип', + manualCreate: 'Создан вручную', + acmeAccount: 'ACME аккаунт', + resolveDomain: 'Разрешить доменное имя', + err: 'Ошибка', + value: 'значение записи', + dnsResolveHelper: 'Пожалуйста, добавьте следующие записи разрешения у провайдера DNS:', + detail: 'Подробности', + msg: 'Информация', + ssl: 'Сертификат', + key: 'Закрытый ключ', + startDate: 'Время начала действия', + organization: 'организация-издатель', + renewConfirm: 'Это обновит сертификат для доменного имени {0}. Хотите продолжить?', + autoRenew: 'Автопродление', + autoRenewHelper: 'Автоматически продлевать за 30 дней до истечения срока', + renewSuccess: 'Успешно продлено', + renewWebsite: + 'Этот сертификат связан со следующими веб-сайтами, и заявка будет применена к этим сайтам одновременно', + createAcme: 'Создать аккаунт', + acmeHelper: 'Acme аккаунт используется для запроса бесплатных сертификатов', + upload: 'Импорт', + applyType: 'Тип', + apply: 'Продлить', + applyStart: 'Начало запроса сертификата', + getDnsResolve: 'Получение значения DNS-разрешения, пожалуйста, подождите...', + selfSigned: 'Самоподписанный CA', + ca: 'Центр сертификации', + commonName: 'Общее имя', + caName: 'Имя центра сертификации', + company: 'Название организации', + department: 'Название подразделения', + city: 'Название населенного пункта', + province: 'Название штата или области', + country: 'Название страны (2-буквенный код)', + commonNameHelper: 'Например, ', + selfSign: 'Выпустить сертификат', + days: 'срок действия', + domainHelper: 'Одно доменное имя в строке, поддерживает * и IP-адрес', + pushDir: 'Отправить сертификат в локальную директорию', + dir: 'Директория', + pushDirHelper: 'В этой директории будут созданы файл сертификата "fullchain.pem" и файл ключа "privkey.pem".', + organizationDetail: 'Детали организации', + fromWebsite: 'С веб-сайта', + dnsMauanlHelper: + 'В режиме ручного разрешения необходимо нажать кнопку применить после создания для получения значения DNS-разрешения', + httpHelper: 'HTTP режим требует установки OpenResty', + buypassHelper: 'Buypass недоступен в материковом Китае', + googleHelper: 'Как получить EAB HmacKey и EAB kid', + googleCloudHelper: 'Google Cloud API недоступен в большинстве регионов материкового Китая', + httpHelper2: 'Невозможно запросить сертификат общего домена в режиме HTTP', + skipDNSCheck: 'Пропустить проверку DNS', + skipDNSCheckHelper: 'Отметьте здесь только если возникает проблема тайм-аута при запросе сертификата.', + cfHelper: 'Не использовать Global API Key', + deprecated: 'будет устарелым', + deprecatedHelper: + 'Обслуживание остановлено и может быть удалено в будущей версии. Пожалуйста, используйте метод Tencent Cloud для анализа', + disableCNAME: 'Отключить CNAME', + disableCNAMEHelper: 'Отметьте здесь, если доменное имя имеет запись CNAME и запрос не удается.', + nameserver: 'DNS сервер', + nameserverHelper: 'Использовать пользовательский DNS сервер для проверки доменных имен.', + edit: 'Редактировать сертификат', + execShell: 'Выполнить скрипт после запроса сертификата.', + shell: 'Содержимое скрипта', + shellHelper: + 'Директория выполнения скрипта по умолчанию - директория установки 1Panel. Если сертификат отправляется в локальную директорию, директорией выполнения будет директория отправки сертификата. Тайм-аут выполнения по умолчанию - 30 минут.', + }, + firewall: { + create: 'Создать правило', + edit: 'Редактировать правило', + notSupport: + 'Межсетевой экран не обнаружен (firewalld или ufw). Пожалуйста, обратитесь к официальной документации для установки.', + ccDeny: 'CC защита', + ipWhiteList: 'Белый список IP', + ipBlockList: 'Черный список IP', + fileExtBlockList: 'Черный список расширений файлов', + urlWhiteList: 'Белый список URL', + urlBlockList: 'Черный список URL', + argsCheck: 'Проверка GET параметров', + postCheck: 'Проверка POST параметров', + cookieBlockList: 'Черный список Cookie', + + firewall: 'Межсетевой экран', + dockerHelper: + 'Межсетевой экран Linux "{0}" не может отключить сопоставление портов Docker. Приложение может редактировать параметры на странице "Магазин приложений -> Установленные" для контроля открытия портов.', + quickJump: 'Быстрый доступ', + used: 'Используется', + unUsed: 'Не используется', + firewallHelper: '{0} межсетевой экран', + firewallNotStart: 'Межсетевой экран в настоящее время не включен. Сначала включите его.', + restartFirewallHelper: 'Эта операция перезапустит текущий межсетевой экран. Хотите продолжить?', + stopFirewallHelper: 'Это лишит сервер защиты безопасности. Хотите продолжить?', + startFirewallHelper: + 'После включения межсетевого экрана безопасность сервера будет лучше защищена. Хотите продолжить?', + noPing: 'Отключить ping', + noPingTitle: 'Отключить ping', + noPingHelper: 'Это отключит ping, и сервер не будет отвечать на ICMP-запросы. Хотите продолжить?', + onPingHelper: 'Это включит ping, и хакеры смогут обнаружить ваш сервер. Хотите продолжить?', + changeStrategy: 'Изменить стратегию {0}', + changeStrategyIPHelper1: + 'Изменить стратегию IP-адреса на [deny]. После установки IP-адреса доступ к серверу будет запрещен. Хотите продолжить?', + changeStrategyIPHelper2: + 'Изменить стратегию IP-адреса на [allow]. После установки IP-адреса нормальный доступ будет восстановлен. Хотите продолжить?', + changeStrategyPortHelper1: + 'Изменить политику портов на [drop]. После установки политики портов внешний доступ будет запрещен. Хотите продолжить?', + changeStrategyPortHelper2: + 'Изменить политику портов на [accept]. После установки политики портов нормальный доступ к портам будет восстановлен. Хотите продолжить?', + stop: 'Остановить', + portFormatError: 'Это поле должно быть действительным портом.', + portHelper1: 'Несколько портов, например 8080 и 8081', + portHelper2: 'Диапазон портов, например 8080-8089', + changeStrategyHelper: + 'Изменить стратегию {0} [{1}] на [{2}]. После установки {0} будет иметь внешний доступ {2}. Хотите продолжить?', + portHelper: 'Можно ввести несколько портов, например 80,81, или диапазон портов, например 80-88', + strategy: 'Стратегия', + accept: 'Принять', + drop: 'Отбросить', + source: 'Источник', + anyWhere: 'Любой', + address: 'Указанные IP', + addressHelper: 'Поддерживает IP-адрес или сегмент IP', + allow: 'Разрешить', + deny: 'Запретить', + addressFormatError: 'Это поле должно быть действительным IP-адресом.', + addressHelper1: 'Поддерживает IP-адрес или диапазон IP. Например, "172.16.10.11" или "172.16.10.0/24".', + addressHelper2: 'Для нескольких IP-адресов разделяйте запятой. Например, "172.16.10.11, 172.16.0.0/24".', + allIP: 'Все IP', + portRule: 'Правило | Правила', + createPortRule: '@:commons.button.create @.lower:firewall.portRule', + forwardRule: 'Правило переадресации портов | Правила переадресации портов', + createForwardRule: '@:commons.button.create @:firewall.forwardRule', + ipRule: 'IP правило | IP правила', + createIpRule: '@:commons.button.create @:firewall.ipRule', + userAgent: 'Фильтр User-Agent', + sourcePort: 'Исходный порт', + targetIP: 'Целевой IP', + targetPort: 'Целевой порт', + forwardHelper1: + 'Если вы хотите перенаправить на локальный порт, целевой IP должен быть установлен как "127.0.0.1".', + forwardHelper2: 'Оставьте целевой IP пустым для перенаправления на локальный порт.', + forwardHelper3: 'Поддерживается только переадресация портов IPv4.', + }, + runtime: { + runtime: 'Среда выполнения', + image: 'Образ', + workDir: 'Рабочая директория', + create: 'Создать среду выполнения', + resource: 'Источник', + appstore: 'Магазин приложений', + local: 'Локальный', + app: 'Приложение', + localHelper: 'Локальная среда выполнения должна быть установлена самостоятельно', + version: 'Версия', + versionHelper: 'Версия PHP, например v8.0', + buildHelper: + 'При выборе большего количества расширений нагрузка на CPU во время создания образа будет выше. Избегайте выбора всех расширений.', + openrestyWarn: 'PHP требует обновления OpenResty до версии 1.21.4.1 или выше для использования', + toupgrade: 'Обновить', + edit: 'Редактировать среду выполнения', + extendHelper: + 'Если нужных расширений нет в списке, вы можете вручную ввести имя расширения. Например, введите "sockets", затем выберите первое.', + rebuildHelper: 'После редактирования расширения необходимо пересобрать PHP приложение для применения изменений', + rebuild: 'Пересобрать PHP приложение', + source: 'Источник расширений PHP', + ustc: 'Научно-технический университет Китая', + netease: 'Netease', + aliyun: 'Alibaba Cloud', + default: 'по умолчанию', + tsinghua: 'Университет Цинхуа', + xtomhk: 'Зеркало XTOM (Гонконг)', + xtom: 'Зеркало XTOM (Глобальное)', + phpsourceHelper: 'Выберите подходящий источник в соответствии с вашей сетевой средой.', + appPort: 'Порт приложения', + externalPort: 'Внешний порт', + packageManager: 'Менеджер пакетов', + codeDir: 'Директория кода', + appPortHelper: 'Порт, используемый приложением.', + externalPortHelper: 'Порт, открытый для внешнего мира.', + runScript: 'Скрипт запуска', + runScriptHelper: 'Список команд запуска анализируется из файла package.json в исходной директории.', + open: 'Открыть', + close: 'Закрыть', + operatorHelper: 'Операция {0} будет выполнена для выбранной среды выполнения. Хотите продолжить?', + statusHelper: + 'Описание статусов: Запускается - контейнер запущен, но приложение запускается; аномальный - контейнер запущен, но статус приложения аномальный', + taobao: 'Taobao', + tencent: 'Tencent', + imageSource: 'Источник образа', + moduleManager: 'Управление модулями', + module: 'Модуль', + nodeOperatorHelper: + 'Выполнить {0} модуля {1}? Операция может вызвать аномалии в среде выполнения, пожалуйста, подтвердите перед продолжением', + customScript: 'Пользовательская команда запуска', + customScriptHelper: 'Укажите полную команду запуска. Например, "npm run start".', + portError: 'Не повторяйте один и тот же порт.', + systemRestartHelper: 'Описание статуса: Прерывание - получение статуса не удалось из-за перезагрузки системы', + javaScriptHelper: 'Укажите полную команду запуска. Например, "java -jar halo.jar -Xmx1024M -Xms256M".', + javaDirHelper: 'Директория должна содержать jar файлы, поддиректории также допустимы', + goHelper: 'Укажите полную команду запуска. Например, "go run main.go" или "./main".', + goDirHelper: 'Директория или поддиректория должна содержать файлы Go или бинарные файлы.', + pythonHelper: + 'Укажите полную команду запуска. Например, "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:5000".', + dotnetHelper: 'Укажите полную команду запуска. Например, "dotnet MyWebApp.dll".', + }, + process: { + pid: 'ID процесса', + ppid: 'Родительский PID', + numThreads: 'Потоки', + memory: 'Память', + diskRead: 'Чтение диска', + diskWrite: 'Запись диска', + netSent: 'исходящий', + netRecv: 'входящий', + numConnections: 'Соединения', + startTime: 'Время запуска', + status: 'Статус', + state: 'Состояние', + running: 'Работает', + sleep: 'сон', + stop: 'остановлен', + idle: 'простой', + zombie: 'зомби-процесс', + wait: 'ожидание', + lock: 'блокировка', + blocked: 'заблокирован', + cmdLine: 'Команда запуска', + basic: 'Основное', + mem: 'Память', + openFiles: 'Открытые файлы', + file: 'Файл', + env: 'Переменные окружения', + noenv: 'Нет', + net: 'Сетевые подключения', + laddr: 'Исходный адрес/порт', + raddr: 'Целевой адрес/порт', + stopProcess: 'Завершить', + viewDetails: 'Подробности', + stopProcessWarn: 'Вы уверены, что хотите завершить этот процесс (PID:{0})?', + processName: 'Имя процесса', + }, + tool: { + supervisor: { + loadStatusErr: 'Не удалось получить статус процесса, пожалуйста, проверьте состояние службы supervisor.', + notSupport: 'Supervisor не обнаружен. Обратитесь к официальной документации для установки.', + list: 'Демон-процесс | Демон-процессы', + config: 'Конфигурация Supervisor', + primaryConfig: 'Расположение основного конфигурационного файла', + notSupportCrl: 'Supervisorctl не обнаружен. Обратитесь к официальной документации для установки.', + user: 'Пользователь', + command: 'Команда', + dir: 'Директория', + numprocs: 'Кол-во процессов', + initWarn: + 'Это изменит значение "files" в секции "[include"] в основном конфигурационном файле. Директория других конфигурационных файлов будет: "{директория установки 1Panel}/1panel/tools/supervisord/supervisor.d/".', + operatorHelper: 'Операция {1} будет выполнена для {0}, продолжить?', + uptime: 'Время работы', + notStartWarn: 'Supervisor не запущен. Сначала запустите его.', + serviceName: 'Имя службы', + initHelper: 'Служба Supervisor не инициализирована. Нажмите "Инициализировать" для инициализации.', + serviceNameHelper: 'Имя службы Supervisor, управляемой systemctl, обычно supervisor или supervisord', + restartHelper: + 'Это перезапустит службу после инициализации, что приведет к остановке всех существующих демон-процессов.', + msg: 'Сообщение', + RUNNING: 'Работает', + STOPPED: 'Остановлен', + STOPPING: 'Останавливается', + STARTING: 'Запускается', + FATAL: 'Не удалось запустить', + BACKOFF: 'Исключение при запуске', + ERROR: 'Ошибка', + statusCode: 'Код статуса', + manage: 'Управление', + }, + }, + alert: { + isAlert: 'Оповещение', + alertCount: 'Количество оповещений', + clamHelper: 'Отправлять SMS-оповещение при обнаружении зараженных файлов', + cronJobHelper: 'Отправлять SMS-оповещение при сбое выполнения задачи', + licenseHelper: 'Профессиональная версия поддерживает SMS-оповещения', + alertCountHelper: 'Максимальная дневная частота оповещений', + }, +}; + +export default { + ...fit2cloudEnLocale, + ...message, + ...xpackEnLocale, +}; diff --git a/frontend/src/views/home/status/index.vue b/frontend/src/views/home/status/index.vue index 7dc70dfbc..0ff18d0c3 100644 --- a/frontend/src/views/home/status/index.vue +++ b/frontend/src/views/home/status/index.vue @@ -1,5 +1,5 @@ - + @@ -52,7 +52,7 @@ - + {{ $t('home.mem') }}: {{ $t('home.total') }}: {{ computeSize(currentInfo.memoryTotal) }} {{ $t('home.used') }}: {{ computeSize(currentInfo.memoryUsed) }} @@ -431,6 +431,39 @@ defineExpose({