mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-11-12 21:44:22 +08:00
1467 lines
110 KiB
JSON
1467 lines
110 KiB
JSON
{
|
|
"auth": {
|
|
"login": {
|
|
"title": "Войдите в свою учетную запись",
|
|
"description": "Добро пожаловать обратно. Введите свои учетные данные, чтобы продолжить.",
|
|
"username": "Электронная почта или имя пользователя",
|
|
"usernamePlaceholder": "Введите адрес электронной почты или имя пользователя",
|
|
"password": "Пароль",
|
|
"passwordPlaceholder": "Введите свой пароль",
|
|
"showPassword": "Показать пароль",
|
|
"hidePassword": "Скрыть пароль",
|
|
"submit": "Войти",
|
|
"submitting": "Вход в систему…",
|
|
"success": "Вход выполнен успешно",
|
|
"failed": "Не удалось войти в систему. Пожалуйста, попробуйте еще раз.",
|
|
"incomplete": "Адрес электронной почты/имя пользователя или пароль не заполнены",
|
|
"incompleteDesc": "Пожалуйста, введите адрес электронной почты/имя пользователя и пароль перед входом в систему.",
|
|
"capPending": "Человеческая проверка все еще продолжается…",
|
|
"capRequired": "Пожалуйста, сначала завершите проверку человеком",
|
|
"orUse": "Или продолжить с",
|
|
"oauthLogin": "Войдите с помощью {name}",
|
|
"oauthFailed": "Не удалось войти в стороннюю систему",
|
|
"noAccount": "У вас нет учетной записи?",
|
|
"registerNow": "Зарегистрироваться",
|
|
"codeSent": "Код для входа был отправлен на вашу электронную почту",
|
|
"codeTipMasked": "Код входа был отправлен на ваш защищенный адрес электронной почты {email}.",
|
|
"codeTipGeneric": "Пожалуйста, введите код подтверждения входа.",
|
|
"needBind": "Ваша сторонняя учетная запись не связана с локальной учетной записью, и регистрация закрыта. Войдите в систему с существующей локальной учетной записью, чтобы привязать ее.",
|
|
"bindSuccess": "Аккаунт привязан",
|
|
"checkingSession": "Проверка статуса входа",
|
|
"checkingSessionDesc": "Пожалуйста, подождите, пока мы подтвердим ваш сеанс...",
|
|
"redirecting": "Перенаправление на консоль...",
|
|
"verifyingCredentials": "Проверка учетных данных",
|
|
"establishingSession": "Пожалуйста, подождите, пока мы установим безопасный сеанс..."
|
|
},
|
|
"otp": {
|
|
"title": "Подтвердите свой вход",
|
|
"description": "Введите 6-значный код, отправленный на ваш безопасный адрес электронной почты.",
|
|
"code": "Код подтверждения",
|
|
"resend": "Отправить повторно",
|
|
"resendIn": "Отправить повторно через {seconds}s",
|
|
"submit": "Проверить",
|
|
"submitting": "Проверка…",
|
|
"help": "Возникли проблемы со входом?",
|
|
"contactSupport": "Связаться со службой поддержки"
|
|
},
|
|
"register": {
|
|
"title": "Создайте свою учетную запись",
|
|
"description": "Заполните данные ниже, чтобы начать.",
|
|
"username": "Имя пользователя",
|
|
"usernamePlaceholder": "Введите имя пользователя",
|
|
"nickname": "Псевдоним",
|
|
"nicknamePlaceholder": "Введите никнейм",
|
|
"email": "Электронная почта",
|
|
"emailPlaceholder": "Введите адрес электронной почты",
|
|
"password": "Пароль",
|
|
"passwordPlaceholder": "Введите пароль (минимум 8 символов)",
|
|
"emailCode": "Код подтверждения электронной почты",
|
|
"emailCodePlaceholder": "Введите 6-значный код",
|
|
"getCode": "Получить код",
|
|
"resendIn": "Отправить повторно через {seconds}s",
|
|
"submit": "Создать учетную запись",
|
|
"submitting": "Создание…",
|
|
"success": "Зарегистрировался и вошёл в систему",
|
|
"failed": "Регистрация не удалась. Пожалуйста, попробуйте еще раз.",
|
|
"closed": "Регистрация на данный момент отключена",
|
|
"codeSent": "Код подтверждения отправлен на вашу электронную почту",
|
|
"sendCodeFailed": "Не удалось отправить код подтверждения",
|
|
"emailRequired": "Пожалуйста, сначала введите адрес электронной почты",
|
|
"emailInvalid": "Пожалуйста, введите действительный адрес электронной почты",
|
|
"usernamePasswordRequired": "Требуется имя пользователя и пароль",
|
|
"passwordTooShort": "Пароль должен быть не менее 8 символов",
|
|
"emailEmpty": "Требуется электронная почта",
|
|
"codeRequired": "Требуется код подтверждения",
|
|
"capPending": "Человеческая проверка все еще продолжается…",
|
|
"capRequired": "Пожалуйста, сначала завершите проверку человеком",
|
|
"hasAccount": "У вас уже есть аккаунт?",
|
|
"backToLogin": "Вернуться для входа в систему"
|
|
},
|
|
"capWidget": {
|
|
"clickToStart": "Нажмите, чтобы начать проверку",
|
|
"waitingVerification": "Ожидание проверки…",
|
|
"verifying": "Завершение проверки…",
|
|
"verificationPassed": "Проверка пройдена",
|
|
"verificationFailed": "Проверка не удалась",
|
|
"retry": "Повторить"
|
|
},
|
|
"requireAuth": {
|
|
"accessDenied": "Доступ запрещен",
|
|
"noPermission": "У вас нет разрешения на доступ к этой странице"
|
|
}
|
|
},
|
|
"settings": {
|
|
"title": "Настройки",
|
|
"categories": {
|
|
"personal": "Персональный",
|
|
"account": "Учётная запись"
|
|
},
|
|
"items": {
|
|
"profile": "Профиль",
|
|
"profileDesc": "Просмотр информации о вашей учетной записи",
|
|
"accessToken": "Токены доступа",
|
|
"accessTokenDesc": "Управляйте личными токенами для доступа API",
|
|
"notifications": "Уведомления",
|
|
"notificationsDesc": "Управляйте настройками уведомлений",
|
|
"appearance": "Внешний вид",
|
|
"appearanceDesc": "Настройте тему и отображение"
|
|
},
|
|
"appearance": {
|
|
"breadcrumb": "Внешний вид",
|
|
"themeMode": "Тематический режим",
|
|
"themeModeDesc": "Выберите общую светлую или темную тему.",
|
|
"modeLight": "Свет",
|
|
"modeDark": "Темный",
|
|
"modeSystem": "Система",
|
|
"interface": "Интерфейс",
|
|
"interfaceDesc": "Выберите цветовую схему и визуальный стиль",
|
|
"switched": "Внешний вид изменен на {name}",
|
|
"switchFailed": "Не удалось переключить внешний вид",
|
|
"language": "Язык",
|
|
"languageDesc": "Выберите язык интерфейса",
|
|
"comingSoon": "Скоро",
|
|
"comingSoonBody": "На подходе больше возможностей настройки…"
|
|
},
|
|
"notifications": {
|
|
"breadcrumb": "Уведомления",
|
|
"display": "Отображение уведомлений",
|
|
"displayDesc": "Настройка параметров отображения уведомлений",
|
|
"showBell": "Показать колокольчик уведомлений",
|
|
"showBellDesc": "Показывать колокольчик уведомлений в верхней панели навигации."
|
|
},
|
|
"accessToken": {
|
|
"breadcrumb": "Токены доступа",
|
|
"title": "Токены личного доступа",
|
|
"generate": "Создать токен",
|
|
"securityTitle": "Примечание по безопасности:",
|
|
"securityBody": "Токены доступа имеют полные разрешения API для вашей учетной записи. Никогда не делитесь ими через систему контроля версий, чат или общедоступные каналы. Создавайте токены по требованию и оперативно отзывайте неиспользованные.",
|
|
"listTitle": "Активные токены",
|
|
"listDesc": "Все доступные на данный момент токены доступа",
|
|
"userToken": "Токен пользователя",
|
|
"empty": "Вы еще не создали ни одного токена доступа.",
|
|
"generateFirst": "Создайте свой первый токен",
|
|
"createTitle": "Создать токен",
|
|
"createDesc": "Дайте токену узнаваемое имя для облегчения управления в дальнейшем.",
|
|
"name": "Имя токена",
|
|
"adminHint": "Если этот токен включен, он может получить доступ к конечным точкам /admin/** (по умолчанию отключено).",
|
|
"generateAction": "Генерировать",
|
|
"readyTitle": "Секрет токена готов",
|
|
"readyBody": "Это единственный раз, когда вы можете просмотреть секрет открытого текста. Скопируйте его сейчас и сохраните в надежном месте.",
|
|
"nameRequired": "Пожалуйста, введите имя токена",
|
|
"createSuccess": "Токен доступа создан.",
|
|
"createFailed": "Не удалось создать токен доступа.",
|
|
"deleteSuccess": "Токен доступа отозван",
|
|
"deleteFailed": "Не удалось удалить токен доступа.",
|
|
"rotateSuccess": "Секрет токена заменён; старый секрет больше не действует",
|
|
"rotateFailed": "Не удалось заменить секрет токена",
|
|
"deleteConfirm": "Отозвать токен «{name}»? Он немедленно перестанет работать и не подлежит восстановлению.",
|
|
"rotateConfirm": "Заменить секрет токена «{name}»? Будет создан новый секрет, а старый сразу перестанет действовать.",
|
|
"deleteConfirmTitle": "Подтвердить отзыв токена",
|
|
"rotateConfirmTitle": "Подтвердить замену секрета токена",
|
|
"confirmRevoke": "Подтвердить отзыв",
|
|
"confirmRotate": "Подтвердить замену",
|
|
"revoking": "Отзыв...",
|
|
"rotating": "Замена секрета…",
|
|
"subtitle": "Управляйте секретами доступа API для инструментов разработки или сторонних инструментов.",
|
|
"adminBadge": "Админ",
|
|
"adminPermission": "Разрешение администратора",
|
|
"createdAt": "Создано: {date}",
|
|
"copy": "Копировать",
|
|
"rotate": "Заменить секрет",
|
|
"revoke": "Отозвать",
|
|
"copySuccess": "Скопировано",
|
|
"copyFailed": "Не удалось скопировать",
|
|
"namePlaceholder": "например мой-ключ-развития",
|
|
"generating": "Создание…",
|
|
"importantTitle": "Важно:",
|
|
"savedConfirm": "Я скопировал и надежно сохранил его"
|
|
},
|
|
"profile": {
|
|
"passwordChangeSuccess": "Пароль успешно изменен",
|
|
"passwordChangeFailed": "Не удалось изменить пароль. Пожалуйста, попробуйте еще раз.",
|
|
"passwordMismatch": "Новые пароли не совпадают",
|
|
"passwordTooShort": "Новый пароль должен содержать не менее 8 символов.",
|
|
"profileUpdateSuccess": "Профиль успешно обновлен",
|
|
"profileUpdateFailed": "Не удалось обновить профиль. Пожалуйста, попробуйте еще раз.",
|
|
"bindSourceFailed": "Не удалось привязать источник аутентификации.",
|
|
"avatarUploadSuccess": "Аватарка загружена. Нажмите «Сохранить», чтобы подать заявку.",
|
|
"avatarUploadFailed": "Не удалось загрузить аватар",
|
|
"genderMale": "Мужской",
|
|
"genderFemale": "Женский",
|
|
"genderSecret": "Предпочитаю не говорить",
|
|
"title": "Профиль",
|
|
"userNotFound": "Информация о пользователе не найдена",
|
|
"breadcrumbSettings": "Настройки",
|
|
"breadcrumbProfile": "Профиль",
|
|
"basicInfo": "Основная информация",
|
|
"basicInfoDesc": "Основная информация вашего аккаунта",
|
|
"editProfile": "Редактировать профиль",
|
|
"account": "Учётная запись",
|
|
"nickname": "Псевдоним",
|
|
"notSet": "Не установлено",
|
|
"uid": "Пользователь ID (UID)",
|
|
"email": "Электронная почта",
|
|
"notBound": "Не связан",
|
|
"phone": "Номер телефона",
|
|
"gender": "Пол",
|
|
"website": "Сайт",
|
|
"location": "Расположение",
|
|
"isAdmin": "Администратор",
|
|
"yes": "Да",
|
|
"no": "Нет",
|
|
"bio": "Био",
|
|
"bioDefault": "Этот пользователь еще ничего не написал.",
|
|
"changePassword": "Изменить пароль",
|
|
"changePasswordDesc": "Измените пароль своей учетной записи в целях безопасности. Должно быть не менее 8 символов.",
|
|
"passwordRiskWarning": "Предупреждение о безопасности пароля",
|
|
"mustChangePassword": "В целях безопасности вашей учетной записи вам необходимо изменить первоначальный пароль.",
|
|
"currentPassword": "Текущий пароль",
|
|
"currentPasswordPlaceholder": "Введите текущий пароль",
|
|
"newPassword": "Новый пароль",
|
|
"newPasswordPlaceholder": "Новый пароль (минимум 8 символов)",
|
|
"confirmNewPassword": "Подтвердите новый пароль",
|
|
"confirmNewPasswordPlaceholder": "Подтвердите новый пароль",
|
|
"submitting": "Отправка...",
|
|
"confirmChange": "Подтвердить изменение",
|
|
"thirdPartyBinding": "Привязка стороннего аккаунта",
|
|
"thirdPartyBindingDesc": "Управляйте сторонними авторизованными учетными записями и связывайте их для быстрого входа в систему и проверки.",
|
|
"boundAccounts": "Привязанные аккаунты",
|
|
"noAccountIdentifier": "Идентификатор аккаунта не указан",
|
|
"unbind": "Отвязать",
|
|
"bindingRemoved": "Привязка удалена",
|
|
"noBoundAccounts": "Сторонние аккаунты пока не привязаны",
|
|
"bindNewAccount": "Привязать новую учетную запись",
|
|
"bindSource": "Привязать {name}",
|
|
"noAvailableSources": "Нет доступных сторонних источников аутентификации.",
|
|
"editProfileTitle": "Редактировать профиль",
|
|
"editProfileDesc": "Обновите свою основную информацию. Изменения вступают в силу сразу после сохранения.",
|
|
"uploadAvatar": "Нажмите, чтобы загрузить/изменить аватар",
|
|
"nicknamePlaceholder": "Введите свой никнейм",
|
|
"emailPlaceholder": "Введите адрес электронной почты",
|
|
"phonePlaceholder": "Введите номер телефона",
|
|
"genderPlaceholder": "Выберите пол",
|
|
"locationPlaceholder": "например Нью-Йорк",
|
|
"bioPlaceholder": "Расскажите о себе...",
|
|
"cancel": "Отмена",
|
|
"saving": "Сохранение...",
|
|
"saveChanges": "Сохранить изменения",
|
|
"cropAvatar": "Обрезать аватар",
|
|
"cropAvatarDesc": "Отрегулируйте положение и размер аватара так, чтобы он помещался в центральную круглую область."
|
|
},
|
|
"botBinding": {
|
|
"title": "Привязать бота",
|
|
"description": "Свяжите свой личный чат Telegram или QQ с этой учетной записью, чтобы сообщения, которые вы отправляете боту, можно было сохранять.",
|
|
"bound": "Связанный",
|
|
"empty": "Боты пока не привязаны",
|
|
"unbind": "Отвязать",
|
|
"bind": "Введите код сопряжения",
|
|
"bindDialogTitle": "Привязать бота",
|
|
"bindDialogDescription": "Выберите включенный канал и введите код сопряжения, который вам прислал бот.",
|
|
"selectChannel": "Выберите канал",
|
|
"pairingCode": "Код сопряжения",
|
|
"pairingCodePlaceholder": "ABCD-EFGH",
|
|
"submit": "Связать",
|
|
"cancel": "Отмена",
|
|
"bindSuccess": "Связано успешно",
|
|
"bindFailed": "Не удалось привязать",
|
|
"unbindSuccess": "Несвязанный",
|
|
"unbindFailed": "Не удалось отменить привязку",
|
|
"platformUserId": "Пользователь платформы ID",
|
|
"noChannels": "Нет доступных каналов. Попросите администратора добавить его.",
|
|
"typeTelegram": "Telegram",
|
|
"typeQQ": "QQ",
|
|
"loadFailed": "Не удалось загрузить привязки"
|
|
},
|
|
"security": {
|
|
"passwordLoginEnabled": "Разрешить вход по паролю",
|
|
"passwordLoginEnabledDesc": "Если этот параметр отключен, для входа доступны только сторонние источники аутентификации OIDC.",
|
|
"registrationEnabled": "Разрешить регистрацию",
|
|
"registrationEnabledDesc": "Если этот параметр отключен, новые пользователи не могут самостоятельно зарегистрироваться.",
|
|
"passwordRegisterEnabled": "Разрешить регистрацию пароля",
|
|
"passwordRegisterEnabledDesc": "Если этот параметр отключен, учетные записи могут создаваться только администраторами или связываться с помощью сторонней аутентификации.",
|
|
"oidcLoginEnabled": "Разрешить вход OIDC",
|
|
"oidcLoginEnabledDesc": "Если этот параметр отключен, все сторонние кнопки входа OIDC будут скрыты.",
|
|
"emailLoginVerification": "Проверка входа по электронной почте",
|
|
"emailLoginVerificationDesc": "Если эта функция включена, для входа в систему с паролем требуется 6-значный код подтверждения, отправленный по электронной почте.",
|
|
"emailRegisterVerification": "Проверка регистрации по электронной почте",
|
|
"emailRegisterVerificationDesc": "Если эта функция включена, для регистрации требуется 6-значный код подтверждения, отправленный по электронной почте.",
|
|
"loginSessionTTLUpdated": "Продолжительность сеанса входа обновлена.",
|
|
"updateConfigFailed": "Не удалось обновить конфигурацию",
|
|
"invalidHours": "Введите допустимое количество часов (положительное целое число)",
|
|
"securityConfigUpdated": "Конфигурация безопасности обновлена.",
|
|
"authSourceStatusUpdated": "Статус источника аутентификации обновлен.",
|
|
"toggleStatusFailed": "Не удалось переключить статус.",
|
|
"authSourceDeleted": "Источник аутентификации удален.",
|
|
"deleteAuthSourceFailed": "Не удалось удалить источник аутентификации.",
|
|
"captchaConfigSaved": "CAPTCHA конфигурация сохранена",
|
|
"saveConfigFailed": "Не удалось сохранить конфигурацию.",
|
|
"loginRegistrationSettings": "Настройки входа/регистрации",
|
|
"loginRegistrationSettingsDesc": "Настройте ограничения входа и разрешения на саморегистрацию пользователей.",
|
|
"loginSessionTTL": "Продолжительность сеанса входа в систему",
|
|
"loginSessionTTLDesc": "Настройте продолжительность сеансов входа в браузере. Установите значение «Выкл.», чтобы выйти из системы при закрытии браузера.",
|
|
"selectRetentionTime": "Выберите время хранения",
|
|
"sessionOff": "Выкл. (выйти при закрытии браузера)",
|
|
"session7Days": "7 дней",
|
|
"session30Days": "30 дней",
|
|
"sessionNeverExpire": "Никогда не истекает",
|
|
"sessionCustom": "Пользовательская продолжительность",
|
|
"hoursPlaceholder": "ч",
|
|
"authSourceManagement": "Управление источником аутентификации",
|
|
"authSourceManagementDesc": "Добавляйте, изменяйте и активируйте собственные источники аутентификации OIDC.",
|
|
"addAuthSource": "Добавить источник аутентификации",
|
|
"enabled": "Включено",
|
|
"disabled": "Отключено",
|
|
"identifier": "Идентификатор",
|
|
"type": "Тип",
|
|
"secretConfigured": "Секрет настроен",
|
|
"secretNotConfigured": "Секрет не настроен",
|
|
"deleteAuthSourceConfirm": "Удалить источник аутентификации «{name}»? Это невозможно отменить.",
|
|
"deleteAuthSourceTitle": "Подтвердить удаление источника аутентификации",
|
|
"confirmDelete": "Подтвердить удаление",
|
|
"deleting": "Удаление...",
|
|
"noAuthSources": "Источники аутентификации не настроены. Нажмите кнопку выше, чтобы добавить его.",
|
|
"loginCaptchaEnabled": "Войти CAPTCHA",
|
|
"captchaConfig": "Cap CAPTCHA",
|
|
"captchaConfigDesc": "Настройте невидимый CAPTCHA на основе Proof-of-Work (PoW) для защиты входа в систему от атак грубой силы и подброса учетных данных.",
|
|
"autoStartSolving": "Начинайте решать автоматически при загрузке страницы",
|
|
"challengeCount": "Количество испытаний",
|
|
"challengeCountDesc": "Количество задач, которые должен решить клиент. По умолчанию 1, рекомендуется от 1 до 5.",
|
|
"challengeDifficulty": "Сложность",
|
|
"challengeDifficultyDesc": "Хэш-биты префикса PoW; каждое приращение удваивает время вычислений. По умолчанию 4, рекомендуется 4",
|
|
"challengeSize": "Размер соли",
|
|
"challengeSizeDesc": "Вызов длины символа запутывания соли. По умолчанию 32",
|
|
"challengeTTL": "Вызов TTL (секунды)",
|
|
"challengeTTLDesc": "Срок действия вызова. По умолчанию 600 с (10 минут)",
|
|
"tokenTTL": "Токен TTL (секунды)",
|
|
"tokenTTLDesc": "Срок действия подписанного токена входа после завершения PoW. По умолчанию 1200 с (20 минут)",
|
|
"saving": "Сохранение...",
|
|
"saveConfig": "Сохранить настройки"
|
|
},
|
|
"system": {
|
|
"addressAutoDetected": "Текущий домен обнаружен и заполнен автоматически",
|
|
"configUpdated": "Конфигурация обновлена",
|
|
"updateConfigFailed": "Не удалось обновить конфигурацию",
|
|
"generalConfigSaved": "Общая конфигурация сохранена.",
|
|
"saveConfigFailed": "Не удалось сохранить конфигурацию.",
|
|
"smtpConfigSaved": "SMTP конфигурация почты сохранена",
|
|
"connectingTest": "Отправка тестового запроса...",
|
|
"testEmailSent": "Тестовое письмо успешно отправлено",
|
|
"sendFailedCheckConfig": "Отправить не удалось. Пожалуйста, проверьте конфигурацию и журналы.",
|
|
"testEmailFailed": "Не удалось отправить тестовое письмо.",
|
|
"requestFailed": "Запрос не выполнен",
|
|
"requestError": "[Ошибка запроса]",
|
|
"testRequestFailed": "Тестовый запрос не выполнен",
|
|
"enterTargetEmail": "Введите целевой адрес электронной почты",
|
|
"generalSettings": "Общие настройки",
|
|
"generalSettingsDesc": "Настройте идентификацию сайта, адрес сервера и политику индексирования поисковыми системами.",
|
|
"siteName": "Название сайта",
|
|
"siteNameDesc": "Используется в заголовках страниц, страницах входа/регистрации, панели администратора и системных электронных письмах.",
|
|
"serverAddress": "Адрес сервера",
|
|
"useCurrentDomain": "Использовать текущий домен",
|
|
"serverAddressDesc": "Разрешённый источник запросов к API (Origin). Оставьте пустым, чтобы разрешить любой источник.",
|
|
"searchEngineIndexing": "Индексация поисковыми системами",
|
|
"indexingAllowed": "Разрешить индексирование",
|
|
"indexingDenied": "Запретить индексирование",
|
|
"searchEngineIndexingDesc": "Контролируйте, могут ли Google, Baidu, Bing и другие поисковые системы индексировать общедоступные страницы.",
|
|
"addressChangeWarning": "Изменение адреса влияет на политику CORS. Пожалуйста, введите полный код URL с указанием протокола и домена.",
|
|
"saving": "Сохранение...",
|
|
"saveConfig": "Сохранить настройки",
|
|
"smtpSettings": "SMTP настройки почты",
|
|
"smtpSettingsDesc": "Настройте службу отправки электронной почты системы (SMTP)",
|
|
"smtpHost": "SMTP хозяин",
|
|
"smtpPort": "SMTP порт",
|
|
"smtpUsername": "SMTP имя пользователя",
|
|
"smtpPassword": "SMTP пароль",
|
|
"smtpPasswordMasked": "•••••• (настроено, оставьте пустым, чтобы сохранить)",
|
|
"smtpPasswordPlaceholder": "Введите пароль",
|
|
"testSend": "Отправить тест",
|
|
"smtpTestTitle": "SMTP отправить тест",
|
|
"smtpTestDesc": "Введите адрес электронной почты, чтобы получить тестовое сообщение. Система будет использовать конфигурацию SMTP, которую вы ввели в форму выше.",
|
|
"targetEmail": "Целевой адрес электронной почты",
|
|
"connectionLog": "Журнал подключения и передачи",
|
|
"testSuccess": "Тест удался! Письмо отправлено успешно.",
|
|
"testFailed": "Тест не пройден",
|
|
"close": "Закрыть",
|
|
"testing": "Тестирование...",
|
|
"startTest": "Начать тест"
|
|
},
|
|
"other": {
|
|
"menuDisplayUpdated": "Конфигурация отображения меню обновлена.",
|
|
"updateConfigFailed": "Не удалось обновить конфигурацию",
|
|
"menuDisplayManagement": "Управление отображением меню",
|
|
"menuDisplayManagementDesc": "Настройте видимость пунктов меню боковой панели для всех вошедших в систему пользователей.",
|
|
"notHideable": "Невозможно скрыть",
|
|
"securityTipTitle": "Примечание по безопасности:",
|
|
"securityTipDesc": "Чтобы предотвратить блокировку администраторов после сокрытия «Системных настроек», система ограничивает отключение этого пункта меню. Все остальные пункты меню можно свободно переключать. При скрытии пустые заголовки групп также автоматически скрываются.",
|
|
"groupBusiness": "Бизнес-меню",
|
|
"groupAdmin": "Меню администратора",
|
|
"groupDocs": "Меню Документы",
|
|
"descDashboard": "Просматривайте многомерные диаграммы пограничных запросов, посетителей и трафика.",
|
|
"descNodes": "Регистрация и управление состоянием пограничного узла обратного прокси-сервера",
|
|
"descProxyRoutes": "Настройте и опубликуйте прокси-маршруты, балансировку нагрузки и привязки источника.",
|
|
"descWebsites": "Настройте корневые домены и просмотрите сведения о связанном веб-сайте.",
|
|
"descCertificates": "Управление и распространение сертификатов веб-сайта SSL/TLS.",
|
|
"descDnsAccounts": "Настройте учетные данные Cloudflare/Alidns и другого DNS провайдера API.",
|
|
"descOrigins": "Управление серверами-источниками, которые используются в маршрутах.",
|
|
"descWaf": "Настройте WAF собственные правила и ограничения скорости.",
|
|
"descIpGroups": "Управление наборами разрешений/запретов IP, используемых правилами WAF",
|
|
"descPages": "Размещайте и публикуйте проекты статических сайтов с автоматической привязкой к домену.",
|
|
"descConfigVersions": "Просматривайте снимки правил и выполняйте «горячие» обновления или откаты.",
|
|
"descAccessLogs": "Просмотр сведений о доступе к периферийным запросам в режиме реального времени",
|
|
"descPerformance": "Настройка кэша, сжатия изображений и других политик ускорения.",
|
|
"descUsers": "Просмотр и управление пользователями системы и их статусом",
|
|
"descTasks": "Просмотр и планирование асинхронных задач и задач cron",
|
|
"descStorage": "Управляйте хранилищем файлов и очищайте неиспользуемые файлы",
|
|
"descDatabase": "Контролируйте физическую базу данных, просматривайте таблицы и запускайте интерактивный SQL",
|
|
"descPush": "Настройка и отправка системных уведомлений",
|
|
"descLogs": "Просмотр журналов выполнения асинхронных задач и состояния выполнения системы.",
|
|
"descSystem": "Управление конфигурацией «ключ-значение» базовой системы",
|
|
"descAdminSettings": "Настройте капчу, электронную почту и видимость меню.",
|
|
"descUsageDocs": "Руководство по развертыванию и эксплуатации для разработчиков"
|
|
},
|
|
"templates": {
|
|
"templateCreated": "Шаблон уведомления создан.",
|
|
"createTemplateFailed": "Не удалось создать шаблон",
|
|
"templateSaved": "Шаблон уведомления сохранен.",
|
|
"updateTemplateFailed": "Не удалось обновить шаблон.",
|
|
"templateDeleted": "Шаблон уведомления удален.",
|
|
"deleteTemplateFailed": "Не удалось удалить шаблон.",
|
|
"templateManagement": "Управление шаблонами уведомлений",
|
|
"templateManagementDesc": "Настраивайте и редактируйте шаблоны уведомлений по электронной почте/SMS с помощью динамической визуализации переменных.",
|
|
"addTemplate": "Добавить шаблон",
|
|
"systemBuiltIn": "Система встроенная",
|
|
"custom": "Пользовательский",
|
|
"identifier": "Идентификатор",
|
|
"subject": "Тема",
|
|
"deleteTemplateConfirm": "Удалить шаблон «{name}»? Это невозможно отменить.",
|
|
"deleteTemplateTitle": "Подтвердить удаление шаблона",
|
|
"confirmDelete": "Подтвердить удаление",
|
|
"deleting": "Удаление...",
|
|
"noTemplates": "Шаблоны уведомлений не настроены. Нажмите кнопку выше, чтобы добавить его.",
|
|
"editTemplate": "Изменить шаблон уведомления",
|
|
"addTemplateTitle": "Добавить шаблон уведомления",
|
|
"templateDesc": "Используйте синтаксис текста/шаблона Go, например {{.Code}} для кода подтверждения.",
|
|
"templateKey": "Ключ шаблона",
|
|
"templateKeyDesc": "Уникальный идентификатор, используемый для ссылки на этот шаблон в коде.",
|
|
"templateName": "Имя шаблона",
|
|
"templateNameDesc": "Имя, отображаемое администраторам.",
|
|
"templateType": "Тип шаблона",
|
|
"templateTypeDesc": "В настоящее время поддерживаются только шаблоны электронной почты.",
|
|
"templateSubject": "Тема",
|
|
"templateSubjectDesc": "Строка темы, используемая для шаблонов электронных писем.",
|
|
"templateDescription": "Описание и документация по переменным",
|
|
"templateContent": "Содержание",
|
|
"cancel": "Отмена",
|
|
"saving": "Сохранение...",
|
|
"saveConfig": "Сохранить настройки"
|
|
},
|
|
"info": {
|
|
"upgradeVerified": "Пакет обновления проверен. Служба перезапускается.",
|
|
"applyUpgradeFailed": "Не удалось применить обновление.",
|
|
"appUpdate": "Обновление приложения",
|
|
"appUpdateDesc": "Проверьте исходную версию GitHub Действия Выпустить и обновить текущую службу",
|
|
"newVersionAvailable": "Доступна новая версия",
|
|
"alreadyLatest": "Уже в курсе",
|
|
"cannotGetVersion": "Не удалось получить информацию о исходной версии.",
|
|
"recheck": "Перепроверить",
|
|
"currentVersion": "Текущая версия",
|
|
"latestVersion": "Последняя версия",
|
|
"buildTime": "Время сборки",
|
|
"platform": "Платформа",
|
|
"upstreamRepo": "Восходящее репо",
|
|
"releaseAsset": "Освободить актив",
|
|
"releaseNotes": "Примечания к выпуску",
|
|
"checkUpdate": "Проверить наличие обновлений",
|
|
"viewRelease": "Посмотреть выпуск",
|
|
"upgradeNow": "Обновите сейчас",
|
|
"upgradeTo": "Обновить до {version}?",
|
|
"upgradeDesc": "Служба загрузит и проверит {asset}, затем заменит текущий двоичный файл и перезапустится. Убедитесь, что каталог установки доступен для записи и служба поддерживает перезапуск на месте.",
|
|
"cancel": "Отмена",
|
|
"confirmUpgrade": "Подтвердить обновление",
|
|
"devBuildNoUpgrade": "Сборки разработки не имеют сопоставимой версии выпуска. Автоматическое обновление недоступно.",
|
|
"platformNotSupported": "Автоматическое обновление не поддерживается на этой платформе. Пожалуйста, обновите версию вручную со страницы выпуска.",
|
|
"noUpgradeNeeded": "Текущая версия не требует обновления."
|
|
},
|
|
"operation": {
|
|
"whitelistUpdated": "Белый список доступа к файлам обновлен.",
|
|
"updateWhitelistFailed": "Не удалось обновить белый список.",
|
|
"fileAccessControl": "Контроль доступа к файлам",
|
|
"fileAccessControlDesc": "Настройте бизнес-типы файлов, к которым можно получить доступ без входа в систему. Файлы, не входящие в белый список, требуют аутентификации.",
|
|
"addAuthFreeType": "Добавьте тип без авторизации:",
|
|
"selectBusinessType": "Выберите тип бизнеса...",
|
|
"allTypesAdded": "Добавлены все типы",
|
|
"currentAuthFreeList": "Типы файлов, доступные без авторизации",
|
|
"whitelistEmpty": "Белый список пуст. Все типы файлов требуют входа в систему.",
|
|
"typeAvatar": "Аватар (аватар)",
|
|
"typeAttachment": "Приложение (приложение)",
|
|
"typeDoc": "Документ (док)",
|
|
"typeGeneric": "Дженерик (дженерик)",
|
|
"logRetentionTitle": "Хранение журнала",
|
|
"logRetentionDesc": "Настройте дни хранения для каждой базы данных журналов. Журналы с истекшим сроком действия очищаются автоматически после переключения хранилища журналов.",
|
|
"days": "дн.",
|
|
"save": "Сохранить",
|
|
"logRetentionUpdated": "Хранение журнала обновлено.",
|
|
"logRetentionUpdateFailed": "Не удалось обновить хранение журнала.",
|
|
"retentionInvalid": "{label} должно быть целым числом, большим или равным 1.",
|
|
"retentionPostgresDesc": "Дни хранения журналов доступа и показателей наблюдаемости",
|
|
"retentionSqliteDesc": "SQLite дней хранения журнала",
|
|
"retentionClickhouseDesc": "ClickHouse дней хранения журнала"
|
|
},
|
|
"authSourceModal": {
|
|
"authSourceSaved": "Источник аутентификации сохранен.",
|
|
"saveAuthSourceFailed": "Не удалось сохранить источник аутентификации.",
|
|
"editAuthSource": "Изменить источник аутентификации",
|
|
"addAuthSource": "Добавить источник аутентификации",
|
|
"editAuthSourceDesc": "Измените пользовательские параметры источника аутентификации OIDC.",
|
|
"addAuthSourceDesc": "Настройте новый пользовательский источник аутентификации OIDC.",
|
|
"identifier": "Идентификатор (английское название)",
|
|
"displayName": "Отображаемое имя",
|
|
"keepOriginalIfEmpty": "Оставьте пустым, чтобы сохранить текущее значение",
|
|
"discoveryURL": "Открытие URL (OIDC эмитент URL)",
|
|
"iconURL": "Значок URL (необязательно)",
|
|
"enableAuthSource": "Включить источник аутентификации",
|
|
"enableAuthSourceDesc": "При включении он появится на странице входа и привязке учетной записи.",
|
|
"cancel": "Отмена",
|
|
"saving": "Сохранение...",
|
|
"save": "Сохранить"
|
|
}
|
|
},
|
|
"admin": {
|
|
"files": {
|
|
"pageTitle": "Хранилище",
|
|
"tabStats": "Статистика файлов",
|
|
"tabList": "Список файлов",
|
|
"tabStorage": "Конфигурация хранилища",
|
|
"stats": {
|
|
"noData": "Данных для загрузки пока нет",
|
|
"noDataDesc": "Загрузите файлы, чтобы просмотреть анализ емкости и распределения здесь.",
|
|
"totalFiles": "Всего файлов",
|
|
"countUnit": "шт.",
|
|
"totalFilesDesc": "Общее количество доступных загруженных файлов",
|
|
"totalSize": "Использовано памяти",
|
|
"totalSizeDesc": "Общий объем диска/S3, занимаемый файлами",
|
|
"weeklyNewFiles": "Новые файлы (7 дней)",
|
|
"weeklyNewFilesDesc": "Файлы успешно загружены за последние 7 дней",
|
|
"weeklyNewSize": "Данные загружены (7 дней)",
|
|
"weeklyNewSizeDesc": "Общий размер файлов, загруженных за последние 7 дней",
|
|
"trendTitle": "Тенденция загрузки за 7 дней",
|
|
"trendDesc": "Ежедневная статистика загрузок за последнюю неделю",
|
|
"trendCount": "Количество файлов",
|
|
"trendSize": "Размер загрузки (MB)",
|
|
"chartLabelCount": "Новые файлы",
|
|
"chartLabelSize": "Размер загрузки",
|
|
"countDistTitle": "Файлы по категориям",
|
|
"countDistDesc": "Доля загруженных файлов в каждой категории",
|
|
"noCategoryData": "Нет данных о категории",
|
|
"maxCountHint": "Самая частая категория: {name} ({count, plural, one {# файл} few {# файла} many {# файлов} other {# файла}}).",
|
|
"sizeDistTitle": "Хранение по категориям",
|
|
"sizeDistDesc": "Доля хранилища, используемая каждой категорией",
|
|
"noSizeData": "Нет данных о размерах",
|
|
"maxSizeHint": "Самая большая категория: {name} ({size}).",
|
|
"catImages": "Изображения",
|
|
"catVideos": "Видео",
|
|
"catAudio": "Аудио",
|
|
"catDocuments": "Документы",
|
|
"catArchives": "Архивы",
|
|
"catOthers": "Прочее",
|
|
"none": "Нет"
|
|
},
|
|
"list": {
|
|
"searchPlaceholder": "Поиск по имени файла...",
|
|
"selectAll": "Выбрать все на этой странице",
|
|
"deselectAll": "Отменить выбор всех",
|
|
"selectedCount": "Выбрано: {count}",
|
|
"batchDownload": "Скачать как архив",
|
|
"batchDownloadSuccess": "Пакетная загрузка началась.",
|
|
"batchDownloadFailed": "Пакетная загрузка не удалась",
|
|
"totalFiles": "Всего файлов: {count}",
|
|
"noMatch": "Нет подходящих файлов",
|
|
"noFiles": "Файлы еще не загружены",
|
|
"colPreview": "Предпросмотр",
|
|
"colName": "Имя файла",
|
|
"colPath": "Путь",
|
|
"colType": "Тип бизнеса",
|
|
"colMime": "MIME тип",
|
|
"colSize": "Размер",
|
|
"colUploadedAt": "Загружено в",
|
|
"colActions": "Действия",
|
|
"viewDetail": "Посмотреть детали",
|
|
"download": "Скачать",
|
|
"delete": "Удалить",
|
|
"prevPage": "Назад",
|
|
"nextPage": "Далее",
|
|
"detailTitle": "Детали файла",
|
|
"detailDesc": "Просмотрите полные метаданные и свойства конфигурации файла.",
|
|
"detailId": "Файл ID",
|
|
"detailName": "Имя файла",
|
|
"detailPath": "Путь хранения",
|
|
"detailSize": "Размер",
|
|
"bytes": "байты",
|
|
"detailMime": "MIME тип",
|
|
"detailExtension": "Расширение",
|
|
"detailBizType": "Тип бизнеса",
|
|
"detailDriver": "Драйвер хранилища",
|
|
"detailUploaderId": "Загрузчик ID",
|
|
"detailUploadedAt": "Загружено в",
|
|
"detailMetadata": "Дополнительные метаданные",
|
|
"deleteTitle": "Подтвердить удаление файла",
|
|
"deleteConfirm": "Удалить файл «{name}»? Это действие невозможно отменить.",
|
|
"cancel": "Отмена",
|
|
"confirmDelete": "Подтвердить удаление",
|
|
"deleteSuccess": "Файл удален",
|
|
"deleteFailed": "Удаление не удалось",
|
|
"extensionFile": "{ext} файл"
|
|
},
|
|
"storage": {
|
|
"maintenanceMode": "Режим обслуживания хранилища",
|
|
"maintenanceDesc": "{source} → {target}. Во время миграции файлы доступны только для чтения; загрузка, удаление и очистка отключены.",
|
|
"migrationProgress": "Ход переноса доступен в журнале выполнения задачи: {taskId}",
|
|
"notDispatched": "Еще не отправлено",
|
|
"retryMigration": "Повторить миграцию",
|
|
"fileStorage": "Хранение файлов",
|
|
"fileStorageDesc": "По умолчанию используется локальное хранилище. Настройте носитель для хранения системных файлов. При переключении типа хранилища с существующими файлами система переходит в режим обслуживания и автоматически переносит файлы.",
|
|
"storageType": "Тип хранилища",
|
|
"rootDir": "Корневой каталог",
|
|
"endpoint": "Конечная точка",
|
|
"username": "Имя пользователя",
|
|
"password": "Пароль",
|
|
"basePath": "Базовый путь",
|
|
"switchWarning": "⚠️ Вы переключили тип хранилища. Нажатие кнопки «Сохранить конфигурацию» переключит активный механизм хранения и обновит существующие теги драйвера файла. Используйте «Начать миграцию» только в том случае, если необходимо физическое копирование файлов.",
|
|
"saveConfig": "Сохранить настройки",
|
|
"startMigration": "Начать миграцию",
|
|
"keyPrefix": "Префикс объекта",
|
|
"cdnUrl": "CDN URL",
|
|
"pathStyleDesc": "Самостоятельное размещение S3, такое как MinIO, обычно требует включения стиля пути.",
|
|
"saveSuccess": "Конфигурация хранилища сохранена.",
|
|
"saveFailed": "Не удалось сохранить конфигурацию хранилища.",
|
|
"migrateSuccess": "Задача переноса хранилища отправлена.",
|
|
"migrateFailed": "Не удалось отправить задачу миграции хранилища.",
|
|
"retrySuccess": "Задача переноса хранилища повторно отправлена.",
|
|
"retryFailed": "Не удалось выполнить миграцию хранилища.",
|
|
"driverLocal": "Локальная файловая система",
|
|
"driverS3": "AWS S3",
|
|
"driverR2": "Cloudflare R2",
|
|
"driverMinio": "МинИО",
|
|
"driverOss": "Облако Алибаба OSS",
|
|
"driverWebdav": "ВебДАВ",
|
|
"driverUnknown": "Неизвестно"
|
|
}
|
|
},
|
|
"users": {
|
|
"pageTitle": "Пользователи",
|
|
"createUser": "Создать пользователя",
|
|
"colUser": "Пользователь",
|
|
"colEmail": "Электронная почта",
|
|
"colLastLogin": "Последний вход",
|
|
"colRegisteredAt": "Зарегистрировано в",
|
|
"colLastUpdate": "Последнее обновление",
|
|
"colActions": "Действия",
|
|
"loadingUsers": "Загрузка пользователей...",
|
|
"noUsers": "Пользователи не найдены",
|
|
"adminAccount": "учетная запись администратора",
|
|
"disableAccount": "Отключить аккаунт",
|
|
"enableAccount": "Включить учетную запись",
|
|
"viewDetail": "Посмотреть детали",
|
|
"editUser": "Изменить пользователя",
|
|
"editTitle": "Изменить пользователя",
|
|
"editDesc": "Измените профиль пользователя, предоставьте/отзовите доступ администратора или сбросьте пароль.",
|
|
"usernameImmutable": "Имя пользователя (неизменяемое)",
|
|
"nicknameOptional": "Псевдоним (необязательно)",
|
|
"nicknamePlaceholder": "Введите никнейм",
|
|
"email": "Электронная почта",
|
|
"emailPlaceholder": "Введите адрес электронной почты",
|
|
"resetPasswordOptional": "Сбросить пароль (необязательно)",
|
|
"resetPasswordPlaceholder": "Оставьте пустым, чтобы сохранить текущий пароль, или введите новый (не менее 8 символов).",
|
|
"adminPermission": "Разрешение администратора",
|
|
"adminPermissionDesc": "Если эта функция включена, эта учетная запись будет иметь доступ администратора.",
|
|
"cannotRevokeSelfAdmin": "Невозможно отозвать права администратора у текущего вошедшего в систему пользователя.",
|
|
"deleteUser": "Удалить пользователя",
|
|
"cancel": "Отмена",
|
|
"save": "Сохранить",
|
|
"saving": "Сохранение...",
|
|
"deleteConfirmTitle": "Подтвердите удаление пользователя",
|
|
"deleteConfirmDesc": "Удалить пользователя {name}? Это приведет к удалению учетной записи и не может быть отменено.",
|
|
"confirmDelete": "Подтвердить удаление",
|
|
"createTitle": "Создать пользователя",
|
|
"createDesc": "Создайте новую локальную учетную запись с паролем.",
|
|
"username": "Имя пользователя",
|
|
"usernamePlaceholder": "Введите имя пользователя (минимум 3 символа)",
|
|
"password": "Пароль",
|
|
"passwordPlaceholder": "Введите пароль (минимум 8 символов)",
|
|
"enableAccountLabel": "Включить учетную запись",
|
|
"enableAccountDesc": "Если эта учетная запись отключена, вход в систему невозможен.",
|
|
"create": "Создать",
|
|
"creating": "Создание...",
|
|
"userProfile": "Профиль пользователя",
|
|
"refreshingDetail": "Обновление деталей",
|
|
"registeredAt": "Зарегистрировано в",
|
|
"personalInfo": "Личная информация",
|
|
"phone": "Телефон",
|
|
"gender": "Пол",
|
|
"location": "Расположение",
|
|
"website": "Сайт",
|
|
"bio": "Био",
|
|
"systemRecords": "Системные записи",
|
|
"accountStatus": "Статус аккаунта",
|
|
"statusActive": "Активный",
|
|
"statusDisabled": "Отключено",
|
|
"isAdmin": "Админ",
|
|
"yes": "Да",
|
|
"no": "Нет",
|
|
"lastLogin": "Последний вход",
|
|
"lastUpdate": "Последнее обновление",
|
|
"banAccount": "Заблокировать аккаунт",
|
|
"unbanAccount": "Разблокировать аккаунт",
|
|
"search": "Поиск",
|
|
"searchUserIdPlaceholder": "Введите пользователя ID...",
|
|
"searchUsernamePlaceholder": "Введите имя пользователя...",
|
|
"searchEmailPlaceholder": "Введите адрес электронной почты...",
|
|
"clear": "Очистить",
|
|
"status": "Статус",
|
|
"statusAll": "Все статусы",
|
|
"clearFilters": "Очистить фильтры",
|
|
"totalRecords": "Записей: {total}",
|
|
"perPage": "По {count} на странице",
|
|
"refreshData": "Обновить данные",
|
|
"validation": {
|
|
"emailRequired": "Требуется электронная почта",
|
|
"emailInvalid": "Неверный формат электронной почты",
|
|
"passwordTooShort": "Пароль должен быть не менее 8 символов",
|
|
"usernameRequired": "Требуется имя пользователя",
|
|
"usernameTooShort": "Имя пользователя должно быть не менее 3 символов",
|
|
"passwordRequired": "Требуется пароль"
|
|
}
|
|
},
|
|
"tasks": {
|
|
"pageTitle": "Задачи",
|
|
"tabTasks": "Запуск задач",
|
|
"tabSchedules": "Задачи по расписанию",
|
|
"tabExecutions": "Журнал выполнения",
|
|
"unknownError": "Неизвестная ошибка",
|
|
"statusPending": "Ожидает",
|
|
"statusRunning": "Выполняется",
|
|
"statusSucceeded": "Успешно",
|
|
"statusFailed": "Ошибка",
|
|
"triggerSystem": "Система",
|
|
"triggerManual": "Вручную",
|
|
"triggerRetry": "Повторить",
|
|
"triggerSchedule": "Запланировано",
|
|
"allStatuses": "Все статусы",
|
|
"allTasks": "Все задачи",
|
|
"refresh": "Обновить",
|
|
"loadingExecutions": "Загрузка записей выполнения...",
|
|
"noExecutions": "Записи об исполнении не найдены",
|
|
"colTask": "Задача",
|
|
"colStatus": "Статус",
|
|
"colTrigger": "Источник запуска",
|
|
"colRetry": "Повторы",
|
|
"colDuration": "Продолжительность",
|
|
"colResult": "Результат/Ошибка",
|
|
"colCreatedAt": "Создано в",
|
|
"paginationInfo": "Записей: {total}, страница {current}/{totalPages}",
|
|
"prevPage": "Назад",
|
|
"nextPage": "Далее",
|
|
"executionDetailTitle": "Подробности выполнения",
|
|
"loadingDetail": "Загрузка сведений о задаче...",
|
|
"detailStatus": "Статус",
|
|
"detailTrigger": "Источник запуска",
|
|
"detailRetryCount": "Количество повторов",
|
|
"detailDuration": "Продолжительность",
|
|
"detailTaskId": "ID задачи",
|
|
"detailCreatedAt": "Создано в",
|
|
"detailStartedAt": "Начало",
|
|
"detailFinishedAt": "Завершение",
|
|
"detailUpdatedAt": "Обновлено в",
|
|
"detailResult": "Результат",
|
|
"detailError": "Ошибка",
|
|
"detailPayload": "Параметры",
|
|
"detailLog": "Журнал выполнения",
|
|
"noLog": "Нет доступного журнала",
|
|
"noExecutionSelected": "Запись выполнения не выбрана",
|
|
"refreshDetail": "Обновить детали",
|
|
"retryTask": "Повторить задачу",
|
|
"retrySuccess": "Задача отправлена повторно",
|
|
"retrySuccessDesc": "ID новой задачи: {taskId}",
|
|
"retryFailed": "Повторная попытка задачи не удалась",
|
|
"loadSchedulesFailed": "Не удалось загрузить запланированные задачи.",
|
|
"scheduleEnabled": "Запланированная задача включена: {name}",
|
|
"scheduleDisabled": "Запланированная задача отключена: {name}",
|
|
"changeScheduleStatusFailed": "Не удалось изменить статус задачи.",
|
|
"scheduleNameRequired": "Укажите название задачи.",
|
|
"cronRequired": "Требуется выражение Cron.",
|
|
"scheduleUpdateSuccess": "Запланированное задание обновлено.",
|
|
"scheduleCreateSuccess": "Запланированная задача создана.",
|
|
"submitFailed": "Отправка не удалась",
|
|
"scheduleDeleteSuccess": "Запланированное задание удалено",
|
|
"deleteFailed": "Удаление не удалось",
|
|
"addSchedule": "Добавить запланированную задачу",
|
|
"loadingSchedules": "Загрузка запланированных задач...",
|
|
"noSchedules": "Задач по расписанию пока нет. Нажмите кнопку выше, чтобы добавить задачу.",
|
|
"colScheduleName": "Название задачи",
|
|
"colAssociatedTask": "Тип задачи",
|
|
"colCron": "Выражение Cron",
|
|
"colPayload": "Параметры",
|
|
"colEnabled": "Включено",
|
|
"colActions": "Действия",
|
|
"editSchedule": "Изменить запланированное задание",
|
|
"scheduleDialogDesc": "Выберите тип задачи, задайте расписание и параметры.",
|
|
"scheduleName": "Название задачи",
|
|
"scheduleNamePlaceholder": "например ежедневная очистка данных",
|
|
"associatedTask": "Тип задачи",
|
|
"cronExpression": "Выражение Cron",
|
|
"cronPlaceholder": "например 0 */2 * * * или @daily",
|
|
"cronHint": "Использует стандартный формат Cron из 5 полей (минуты, часы, день месяца, месяц, день недели).",
|
|
"scheduleActive": "Включено",
|
|
"scheduleActiveDesc": "Определяет, будет ли эта запланированная задача запускаться по расписанию.",
|
|
"noParamsRequired": "Выбранный тип задачи не требует параметров времени выполнения.",
|
|
"payloadConfig": "Параметры задачи",
|
|
"paramOn": "Вкл.",
|
|
"paramOff": "Выкл.",
|
|
"saveChanges": "Сохранить изменения",
|
|
"confirmCreate": "Создать запланированную задачу",
|
|
"deleteScheduleTitle": "Удалить запланированную задачу",
|
|
"deleteScheduleDesc": "Удалить это запланированное задание? Это действие нельзя отменить, и его расписание будет немедленно отменено.",
|
|
"cancel": "Отмена",
|
|
"confirmDelete": "Подтвердить удаление",
|
|
"loadTaskTypesFailed": "Не удалось загрузить типы задач.",
|
|
"dispatchSuccess": "Задача отправлена",
|
|
"dispatchSuccessDesc": "Задача {name} добавлена в очередь: {taskId}",
|
|
"dispatchFailed": "Отправка задачи не удалась",
|
|
"loadingTaskTypes": "Загрузка типов задач...",
|
|
"noTaskTypes": "Нет доступных типов задач",
|
|
"taskType": "Тип:",
|
|
"taskRetry": "Повторные попытки:",
|
|
"executeNow": "Запустить",
|
|
"dispatchTask": "Запустить задачу",
|
|
"dispatchTaskDesc": "Настройте параметры и запустите задачу. Она будет выполняться в фоновом режиме.",
|
|
"executeTask": "Выполнить задачу",
|
|
"startTime": "Начало периода",
|
|
"startTimeDesc": "Начало временного диапазона",
|
|
"endTime": "Конец периода",
|
|
"endTimeDesc": "Конец временного диапазона",
|
|
"noParamsHint": "Дополнительные параметры не требуются. Задача будет добавлена в очередь после подтверждения.",
|
|
"start": "Запустить",
|
|
"dispatching": "Отправка...",
|
|
"selectDate": "Выберите дату",
|
|
"logPrimaryDb": "Основная база данных журналов",
|
|
"retentionDays": "Дни хранения",
|
|
"migrationStatus": "Статус миграции",
|
|
"migrating": "Миграция",
|
|
"idle": "Не выполняется",
|
|
"selectLogDb": "Выберите базу данных журналов",
|
|
"dbPostgresPrimary": "PostgreSQL (основной)",
|
|
"dbSqlitePrimary": "SQLite (основной)",
|
|
"dbClickhouse": "ClickHouse",
|
|
"taskTypeFilter": "Тип задачи",
|
|
"executionRecord": "Запись выполнения"
|
|
},
|
|
"push": {
|
|
"pageTitle": "Уведомления",
|
|
"eventsTab": "События",
|
|
"historiesTab": "История",
|
|
"settingsTab": "Каналы",
|
|
"events": {
|
|
"eventUpdateSuccess": "Событие обновлено",
|
|
"eventUpdateFailed": "Обновление события не удалось",
|
|
"operationFailed": "Операция не удалась",
|
|
"eventCreateSuccess": "Событие создано",
|
|
"eventCreateFailed": "Не удалось создать событие.",
|
|
"configDeleteSuccess": "Конфигурация удалена.",
|
|
"configDeleteFailed": "Удаление конфигурации не удалось",
|
|
"templateInvalidJson": "Недопустимый шаблон сообщения JSON",
|
|
"selectSystemEvent": "Пожалуйста, выберите системное событие",
|
|
"selectAsyncTask": "Пожалуйста, выберите асинхронную задачу",
|
|
"addEvent": "Добавить событие",
|
|
"loadingEvents": "Загрузка событий уведомлений...",
|
|
"noEvents": "Уведомления о событиях ещё не настроены. Нажмите кнопку выше, чтобы добавить событие.",
|
|
"colEvent": "Событие",
|
|
"colChannels": "Каналы",
|
|
"colTargets": "Получатели",
|
|
"colStatus": "Статус",
|
|
"colActions": "Действия",
|
|
"taskBadge": "Задача",
|
|
"noChannelSpecified": "Каналы не выбраны",
|
|
"emailChannel": "Электронная почта",
|
|
"configure": "Настроить",
|
|
"deleteEventConfirm": "Удалить настройки уведомлений об этом событии? Это действие нельзя отменить.",
|
|
"deleteEventTitle": "Удалить уведомления о событии",
|
|
"confirmDelete": "Подтвердить удаление",
|
|
"deleting": "Удаление...",
|
|
"delete": "Удалить",
|
|
"addEventDialogTitle": "Добавить событие",
|
|
"addEventDialogDesc": "Выберите событие, затем выберите каналы уведомлений и получателей.",
|
|
"eventType": "Тип события",
|
|
"builtinEventType": "Встроенное событие",
|
|
"taskEventType": "Завершение задачи",
|
|
"systemEvent": "Системное событие",
|
|
"loadingSystemEvents": "Загрузка системных событий...",
|
|
"allBuiltinEventsConfigured": "Все встроенные события уже настроены.",
|
|
"selectSystemEventPlaceholder": "Выберите системное событие",
|
|
"systemAsyncTask": "Тип задачи",
|
|
"loadingAsyncTasks": "Загрузка асинхронных задач...",
|
|
"noAvailableTasks": "Нет доступных системных задач.",
|
|
"selectAsyncTaskPlaceholder": "Выберите тип задачи",
|
|
"eventDescription": "Описание события:",
|
|
"noDescription": "Нет описания",
|
|
"taskDescription": "Описание задачи:",
|
|
"pushChannelsMulti": "Каналы уведомлений",
|
|
"selectConfiguredChannels": "Выберите каналы",
|
|
"emailPush": "Отправка по электронной почте",
|
|
"noAvailableChannels": "Нет доступных каналов. Создайте или включите канал на вкладке «Каналы».",
|
|
"pushTargets": "Получатели (для таких каналов, как электронная почта)",
|
|
"pushTargetsPlaceholder": "Адреса получателей через запятую, например user1@example.com, user2@example.com",
|
|
"contentTemplate": "Шаблон сообщения (JSON)",
|
|
"taskTemplateVars": "Поддерживаемые переменные: {{task_name}}, {{task_status}}, {{task_duration}}, {{user.username}}",
|
|
"eventTemplateVars": "Поддерживаемые переменные: {{user.username}}, {{ip}}, {{time}}",
|
|
"enableStatus": "Включено",
|
|
"enableStatusDesc": "Отправлять уведомления об этом событии после создания.",
|
|
"cancel": "Отмена",
|
|
"enableSave": "Создать событие",
|
|
"editEventDialogTitle": "Настроить уведомления о событии",
|
|
"editEventDialogDesc": "Выберите, как и куда отправлять уведомления об этом событии.",
|
|
"eventName": "Название события",
|
|
"eventKey": "Ключ события",
|
|
"relatedAsyncTask": "Тип задачи",
|
|
"noAvailableChannelsEdit": "Нет доступных каналов. Создайте или включите канал на вкладке «Каналы».",
|
|
"saveChanges": "Сохранить изменения",
|
|
"taskCompleteTitle": "Задача выполнена: {name}",
|
|
"taskCompleteContent": "Асинхронная задача {{task_name}} завершена. Статус: {{task_status}}, длительность: {{task_duration}} мс."
|
|
},
|
|
"settings": {
|
|
"channelCreateSuccess": "Канал создан",
|
|
"channelCreateFailed": "Не удалось создать канал",
|
|
"channelUpdateSuccess": "Канал обновлен",
|
|
"channelUpdateFailed": "Обновление канала не выполнено.",
|
|
"channelDeleteSuccess": "Канал удален",
|
|
"channelDeleteFailed": "Удаление канала не удалось",
|
|
"channelNameRequired": "Укажите название канала.",
|
|
"channelNameFormat": "Название канала может содержать только буквы, цифры и символы подчеркивания.",
|
|
"invalidChannelType": "Неверный тип канала",
|
|
"httpsRequired": "Для безопасного подключения URL должен начинаться с https://.",
|
|
"jsonFormatRequired": "Тело запроса должно быть действительным JSON",
|
|
"larkTemplateFormat": "Пользовательский шаблон карты должен быть действительным JSON",
|
|
"sendingTestPush": "Отправка тестового запроса...",
|
|
"testPushSuccess": "Тестовый запрос отправлен. Пожалуйста, проверьте целевую платформу.",
|
|
"connectivityTestFailed": "Проверка подключения не удалась",
|
|
"customPushChannels": "Каналы уведомлений",
|
|
"customPushChannelsDesc": "Подключите сторонние вебхуки и службы уведомлений.",
|
|
"createChannel": "Создать канал",
|
|
"loadingChannels": "Загрузка каналов...",
|
|
"noCustomChannels": "Каналы ещё не настроены. Нажмите кнопку выше, чтобы создать канал.",
|
|
"colName": "Название",
|
|
"colType": "Тип",
|
|
"colRemark": "Примечание",
|
|
"colStatus": "Статус",
|
|
"colActions": "Действия",
|
|
"noRemark": "Нет примечания",
|
|
"test": "Тест",
|
|
"edit": "Изменить",
|
|
"deleteChannelConfirm": "Удалить канал \"{name}\"? Это невозможно отменить.",
|
|
"deleteChannelTitle": "Подтвердить удаление канала",
|
|
"confirmDelete": "Подтвердить удаление",
|
|
"deleting": "Удаление...",
|
|
"delete": "Удалить",
|
|
"editChannelDialogTitle": "Редактировать канал",
|
|
"createChannelDialogTitle": "Создать канал",
|
|
"channelDialogDesc": "Выберите тип канала и настройте параметры его подключения.",
|
|
"channelName": "Название",
|
|
"channelNamePlaceholder": "например alerts_primary",
|
|
"channelNameHint": "Уникальный идентификатор, состоящий из букв, цифр и подчеркиваний. Невозможно изменить после создания.",
|
|
"channelRemark": "Описание",
|
|
"channelRemarkPlaceholder": "Дополнительное описание",
|
|
"channelType": "Тип канала",
|
|
"selectChannelType": "Выберите тип канала",
|
|
"quickLoadTemplates": "Используйте шаблон:",
|
|
"loadedFeishuTemplate": "Feishu Шаблон вебхука загружен.",
|
|
"loadedDingTalkTemplate": "DingTalk шаблон робота загружен",
|
|
"loadedWeChatTemplate": "WeCom шаблон робота загружен",
|
|
"loadedBarkTemplate": "Bark Шаблон приложения загружен.",
|
|
"cancel": "Отмена",
|
|
"confirm": "Подтвердить",
|
|
"sendTestNotification": "Отправить тестовое уведомление",
|
|
"sendTestNotificationDesc": "Введите цель теста и нажмите «Отправить». Система выполнит push-тест подключения через этот канал.",
|
|
"pushChannelName": "Название канала уведомлений",
|
|
"testPushTarget": "Цель теста (переменная шаблона $to)",
|
|
"testPushTargetPlaceholder": "Введите идентификатор цели теста, например токен Bark или адрес электронной почты.",
|
|
"sendTest": "Отправить тест",
|
|
"fieldRequired": "{label} требуется",
|
|
"configHelp": "{name} настройка"
|
|
},
|
|
"histories": {
|
|
"searchPlaceholder": "Фильтровать по ключу события...",
|
|
"sendStatus": "Отправить статус",
|
|
"allStatus": "Все статусы",
|
|
"sendSuccess": "Отправлено",
|
|
"sendFailed": "Ошибка",
|
|
"colEvent": "Событие",
|
|
"colChannel": "Канал",
|
|
"colTarget": "Получатель",
|
|
"colTitle": "Название",
|
|
"colLevel": "Уровень",
|
|
"colStatus": "Статус",
|
|
"colTime": "Время",
|
|
"loadingHistories": "Загрузка истории уведомлений...",
|
|
"noHistoryData": "Нет данных истории отправки",
|
|
"emailChannel": "Электронная почта",
|
|
"success": "Успешно",
|
|
"failed": "Ошибка",
|
|
"totalRecords": "Записей в истории: {total}",
|
|
"pushNotificationDetail": "Детали push-уведомления",
|
|
"pushNotificationDetailDesc": "Просмотрите подробную информацию об аудите и содержание этого уведомления.",
|
|
"eventIdentifier": "Идентификатор события",
|
|
"sendChannel": "Отправить канал",
|
|
"emailPush": "Отправка по электронной почте",
|
|
"pushTarget": "Получатель",
|
|
"sendTime": "Отправить время",
|
|
"notificationLevel": "Уровень уведомления",
|
|
"failureReason": "Причина отказа",
|
|
"notificationTitle": "Название уведомления",
|
|
"notificationContent": "Содержание уведомления",
|
|
"close": "Закрыть"
|
|
}
|
|
},
|
|
"messageGateway": {
|
|
"pageTitle": "Каналы обмена сообщениями",
|
|
"pageDescription": "Настройте ботов уровня экземпляра Telegram и QQ. Пользователи связывают свою личность в личном чате с помощью кода сопряжения.",
|
|
"addChannel": "Добавить канал",
|
|
"emptyTitle": "Каналов для обмена сообщениями пока нет",
|
|
"emptyDescription": "Добавьте общего бота, чтобы пользователи могли привязать его к своему профилю и отправлять личные сообщения.",
|
|
"enabled": "Включено",
|
|
"disabled": "Отключено",
|
|
"delete": "Удалить",
|
|
"deleteConfirmTitle": "Удалить этот канал?",
|
|
"deleteConfirmDescription": "Привязки и неиспользуемые коды сопряжения для этого канала также будут удалены. Это невозможно отменить.",
|
|
"createSuccess": "Канал создан",
|
|
"createFailed": "Не удалось создать канал",
|
|
"updateSuccess": "Канал обновлен",
|
|
"updateFailed": "Не удалось обновить канал",
|
|
"deleteSuccess": "Канал удален",
|
|
"deleteFailed": "Не удалось удалить канал",
|
|
"testSuccess": "Проверка подключения пройдена",
|
|
"testFailed": "Проверка подключения не удалась",
|
|
"name": "Название",
|
|
"namePlaceholder": "например Операционный бот",
|
|
"type": "Тип",
|
|
"typeTelegram": "Telegram",
|
|
"typeQQ": "QQ",
|
|
"selectType": "Выберите тип канала",
|
|
"botToken": "Токен бота",
|
|
"botTokenPlaceholder": "От BotFather",
|
|
"baseUrl": "API база URL",
|
|
"baseUrlPlaceholder": "https://api.telegram.org",
|
|
"appId": "Приложение ID",
|
|
"appSecret": "Секрет приложения",
|
|
"portalHost": "Хост портала",
|
|
"portalHostPlaceholder": "q.qq.com",
|
|
"keepSecretHint": "Оставьте пустым, чтобы сохранить сохраненный секрет.",
|
|
"cancel": "Отмена",
|
|
"create": "Создать",
|
|
"testConnection": "Тестовое соединение",
|
|
"loadFailed": "Не удалось загрузить каналы."
|
|
},
|
|
"database": {
|
|
"pageTitle": "База данных",
|
|
"refreshData": "Обновить данные",
|
|
"fetchOverviewFailed": "Не удалось получить обзор базы данных.",
|
|
"fetchTablesFailed": "Не удалось получить список таблиц.",
|
|
"exportSuccess": "База данных экспортирована.",
|
|
"exportSuccessDesc": "Скачанный архив: {filename}",
|
|
"exportFailed": "Экспорт базы данных не удался",
|
|
"dbType": "Тип базы данных",
|
|
"versionInfo": "Информация о версии",
|
|
"nameOrPath": "Имя/Путь",
|
|
"dbSize": "Размер базы данных",
|
|
"physicalTables": "Физические таблицы",
|
|
"activeConnections": "Активные соединения",
|
|
"featureArea": "Особенности",
|
|
"featureAreaDesc": "Экспорт базы данных и расширенный терминал SQL",
|
|
"dbBackupExport": "Экспорт резервной копии базы данных",
|
|
"dbBackupExportDesc": "Экспортируйте и загрузите физический образ базы данных (SQLite экспортирует .db, PostgreSQL экспортирует упакованный текстовый файл .sql)",
|
|
"preparing": "Подготовка...",
|
|
"startExport": "Начать экспорт",
|
|
"sqlQueryConsole": "SQL консоль запроса",
|
|
"sqlQueryConsoleDesc": "Откройте онлайн-терминал SQL, чтобы выполнить собственный SQL для фильтрации данных, обновлений, отладки или настройки производительности.",
|
|
"enterConsole": "Войдите в консоль",
|
|
"cache": {
|
|
"fetchCacheStatusFailed": "Не удалось получить статус дискового кэша.",
|
|
"saveFailed": "Сохранить не удалось",
|
|
"maxSizeMustBePositive": "Максимальный размер должен быть целым числом >= 1.",
|
|
"ttlMustBeNonNegative": "По умолчанию TTL должно быть целым числом >= 0.",
|
|
"saveSuccess": "Сохранено",
|
|
"cachePolicyHotUpdated": "Политика кэширования диска с горячей перезагрузкой",
|
|
"saveConfigFailed": "Не удалось сохранить конфигурацию.",
|
|
"clearSuccess": "Очищено",
|
|
"cacheDataCleared": "Все данные кэша очищены",
|
|
"clearCacheFailed": "Не удалось очистить кэш",
|
|
"cacheManagement": "Управление кэшем",
|
|
"cacheManagementDesc": "Управление и мониторинг использования ресурсов дискового кэша, жизненного цикла и политики вытеснения на уровне системы.",
|
|
"refreshStatus": "Обновить статус",
|
|
"runtimeStatus": "Статус выполнения",
|
|
"usedSpace": "Используемое пространство",
|
|
"cacheKeysCount": "Количество ключей кэша",
|
|
"files": "файлы",
|
|
"cacheBaseDirectory": "Базовый каталог кэша",
|
|
"clearCacheNow": "Очистить кэш сейчас",
|
|
"policyConfig": "Конфигурация политики",
|
|
"maxSizeLimit": "Максимальный размер (MB)",
|
|
"maxSizeHint": "Выселение инициируется, когда общий размер превышает это значение.",
|
|
"ttlLimit": "TTL лимит (минуты)",
|
|
"ttlHint": "Максимальное время жизни элемента кэша. Просроченные вещи убираются.",
|
|
"enableLru": "Включить вытеснение LRU",
|
|
"enableLruDesc": "При достижении максимального размера удаляются элементы, к которым дольше всего не обращались. Если отключено, удаляются только элементы с истекшим сроком хранения.",
|
|
"saving": "Сохранение...",
|
|
"saveSettings": "Сохранить настройки",
|
|
"noCacheStatus": "Информация о состоянии кэша не загружена",
|
|
"confirmClearAllCache": "Очистить весь кэш?",
|
|
"confirmClearDesc": "Это приведет к безвозвратному удалению всех файлов кэша из каталога диска (включая временные извлечения, обработанные изображения и блочные файлы), а счетчик ключей будет сброшен до 0. Эту операцию нельзя отменить, и это может привести к временному замедлению загрузки ресурсов пользователями.",
|
|
"cancel": "Отмена",
|
|
"clearing": "Очистка...",
|
|
"confirmClear": "Подтвердить очистку",
|
|
"unknownError": "Неизвестная ошибка",
|
|
"maxSizePlaceholder": "e.g. 100",
|
|
"ttlPlaceholder": "например 60, 0 означает, что срок действия никогда не истекает"
|
|
},
|
|
"sql": {
|
|
"sqlExecSuccess": "SQL выполнено успешно",
|
|
"sqlExecFailed": "SQL выполнение не удалось",
|
|
"sqlQueryTerminal": "SQL терминал запросов",
|
|
"sqlEditor": "SQL редактор",
|
|
"quickTemplates": "Быстрые шаблоны:",
|
|
"selectPresetSQL": "Выберите пресет SQL",
|
|
"queryUsers": "Запрос пользователей (SELECT пользователей)",
|
|
"queryFiles": "Файлы запросов (SELECT загрузок)",
|
|
"queryTaskExecutions": "Выполнение задач запроса (SELECT task_executions)",
|
|
"sqliteVersion": "Версия SQLite (только SQLite)",
|
|
"postgresVersion": "Версия PostgreSQL (только Postgres)",
|
|
"running": "Выполнение…",
|
|
"run": "Выполнить",
|
|
"executionOutput": "Выход",
|
|
"type": "Тип",
|
|
"duration": "Продолжительность",
|
|
"executingQuery": "Выполняется запрос, подождите...",
|
|
"queryResultEmpty": "Результат запроса пуст",
|
|
"sqlExecSuccessTitle": "SQL выполнено успешно",
|
|
"affectedRows": "Затронутые строки: {rows}, продолжительность: {ms}ms.",
|
|
"editorReady": "Редактор готов. Напишите SQL выше и запустите, чтобы увидеть результаты.",
|
|
"unknownExecError": "Неизвестная ошибка выполнения",
|
|
"clearEditor": "Очистить редактор",
|
|
"dragResize": "Перетащите, чтобы изменить размер",
|
|
"execErrorTitle": "SQL ошибка выполнения:",
|
|
"connected": "Подключено к {database}"
|
|
},
|
|
"tableBrowser": {
|
|
"tableBrowser": "Обозреватель таблиц",
|
|
"tableBrowserDesc": "Просмотр сведений и содержимого таблиц физической базы данных",
|
|
"selectTable": "Выберите таблицу",
|
|
"noRecordsInTable": "В этой таблице нет записей",
|
|
"totalRows": "Всего строк",
|
|
"records": "записи",
|
|
"prevPage": "Назад",
|
|
"nextPage": "Далее",
|
|
"pageIndicator": "Страница {current} / {total}",
|
|
"noTableSelected": "Таблица не выбрана или ее структуру невозможно загрузить.",
|
|
"fetchTableFailed": "Не удалось получить данные для таблицы {table}.",
|
|
"unknownError": "Неизвестная ошибка"
|
|
},
|
|
"unknownError": "Неизвестная ошибка",
|
|
"exportException": "Экспорт не удался"
|
|
},
|
|
"logs": {
|
|
"pageTitle": "Системные журналы",
|
|
"accessAnalytics": "Доступ к аналитике",
|
|
"userAccessLogs": "Журналы доступа пользователей",
|
|
"appRuntimeLogs": "Журналы приложений",
|
|
"accessLogs": {
|
|
"clickhouseDisabled": "ClickHouse отключено",
|
|
"clickhouseDisabledDesc": "Хранилище ClickHouse не включено в текущей конфигурации системы. Журналы доступа пользователей не собираются. Чтобы использовать эту функцию, настройте и включите ClickHouse в внутреннем файле config.yaml.",
|
|
"username": "Имя пользователя",
|
|
"usernamePlaceholder": "Поиск по имени пользователя...",
|
|
"apiPath": "API путь",
|
|
"pathPlaceholder": "Нечеткий путь совпадения...",
|
|
"startTime": "Начало периода",
|
|
"endTime": "Конец периода",
|
|
"search": "Поиск",
|
|
"reset": "Сброс",
|
|
"loadingAccessLogs": "Загрузка журналов доступа...",
|
|
"noAccessLogs": "Данные журнала доступа не найдены",
|
|
"colMethod": "Метод",
|
|
"colPath": "Путь",
|
|
"colUser": "Пользователь",
|
|
"colIp": "IP",
|
|
"colStatus": "Статус",
|
|
"colLatency": "Задержка",
|
|
"colRequestTime": "Запросить время",
|
|
"colDetail": "Деталь",
|
|
"unknownUser": "Неизвестный пользователь",
|
|
"paginationInfo": "Записей: {total}, страница {page}/{totalPages}",
|
|
"prevPage": "Назад",
|
|
"nextPage": "Далее",
|
|
"accessLogDetail": "Доступ к данным журнала",
|
|
"method": "Метод",
|
|
"responseStatus": "Статус ответа",
|
|
"latency": "Задержка",
|
|
"ipAddress": "IP адрес",
|
|
"user": "Пользователь",
|
|
"noNickname": "Нет псевдонима",
|
|
"unknownGuest": "Неизвестный/Гость",
|
|
"requestPath": "Путь запроса",
|
|
"requestTime": "Запросить время",
|
|
"noLogSelected": "Запись журнала не выбрана",
|
|
"copiedToClipboard": "{subject} скопировано в буфер обмена",
|
|
"noHeaderData": "Нет данных заголовка",
|
|
"accessId": "Доступ ID: {id}",
|
|
"copyUserAgent": "Копировать User-Agent",
|
|
"copyHeaders": "Копировать заголовки"
|
|
},
|
|
"analytics": {
|
|
"clickhouseDisabled": "ClickHouse отключено",
|
|
"clickhouseDisabledDesc": "Хранилище ClickHouse не включено в текущей конфигурации системы. Журналы доступа пользователей не собираются. Чтобы использовать эту функцию, настройте и включите ClickHouse в внутреннем файле config.yaml.",
|
|
"loadingAnalytics": "Загрузка аналитики доступа...",
|
|
"totalRequests7d": "Всего запросов (7 дней)",
|
|
"totalRequests7dDesc": "Всего API аутентифицированных запросов, зарегистрированных системой.",
|
|
"activeBrowserTypes": "Типы активных браузеров",
|
|
"activeBrowserTypesDesc": "Количество категорий браузерных агентов, сделавших запросы на этой неделе",
|
|
"activeUsers": "Активные пользователи (топ-10)",
|
|
"activeUsersDesc": "Аккаунты в топ-10 на этой неделе по API запросам.",
|
|
"weeklyAccessTrend": "Еженедельный тренд доступа",
|
|
"weeklyAccessTrendDesc": "Кривая ежедневных запросов API за последние 7 дней",
|
|
"noTrendData": "Нет данных о тенденциях",
|
|
"browserRanking": "Рейтинг браузера",
|
|
"browserRankingDesc": "Еженедельное распределение на основе классификации заголовков User-Agent.",
|
|
"noBrowserData": "Нет данных о рейтинге браузера",
|
|
"topActiveUsers": "Самые активные пользователи (Топ-10)",
|
|
"topActiveUsersDesc": "Аккаунты с наибольшим количеством API запросов за последнюю неделю",
|
|
"noActiveUsersData": "Нет активных пользовательских данных",
|
|
"unknown": "Неизвестно",
|
|
"noNickname": "(без прозвища)",
|
|
"requests": "запросы",
|
|
"fetchFailed": "Не удалось получить аналитику.",
|
|
"requestVolume": "Запросы",
|
|
"requestCount": "Количество запросов",
|
|
"countTimes": "{count} ({percent}%)",
|
|
"refresh": "Обновить"
|
|
},
|
|
"appLogs": {
|
|
"loading": "Загрузка…",
|
|
"loadOlderLogs": "Загрузить старые журналы",
|
|
"noLogs": "Нет журналов",
|
|
"backToLatest": "Вернуться к последнему",
|
|
"fetchFailed": "Не удалось получить журналы.",
|
|
"loadOlderFailed": "Не удалось загрузить старые журналы."
|
|
}
|
|
},
|
|
"system": {
|
|
"pageTitle": "Параметры системы",
|
|
"configKey": "Ключ",
|
|
"configValue": "Значение",
|
|
"required": "Требуется",
|
|
"configDescription": "Описание",
|
|
"optionalDescription": "Дополнительное описание",
|
|
"publicVisibility": "Публичная видимость",
|
|
"configType": "Тип конфигурации",
|
|
"systemConfig": "Параметры системы",
|
|
"businessConfig": "Бизнес-конфигурация",
|
|
"createdAt": "Создано в",
|
|
"emptyDescription": "Конфигурация системы не найдена",
|
|
"loadingDescription": "Загрузка конфигурации...",
|
|
"visible": "Видно",
|
|
"invisible": "Скрыто",
|
|
"description": "Описание"
|
|
},
|
|
"settings": {
|
|
"pageTitle": "Системные настройки",
|
|
"tabs": {
|
|
"security": "Безопасность",
|
|
"operation": "Обслуживание",
|
|
"system": "Система",
|
|
"other": "Прочее",
|
|
"status": "Статус",
|
|
"info": "Информация",
|
|
"openflare": "OpenFlare"
|
|
},
|
|
"status": {
|
|
"pageTitle": "Статус системы",
|
|
"fetchFailed": "Не удалось получить статус системы.",
|
|
"unknownRequestError": "Во время запроса произошла неизвестная ошибка",
|
|
"autoRefresh": "Автоматическое обновление",
|
|
"refresh": "Обновить",
|
|
"cards": {
|
|
"serviceOverview": "Состояние сервиса",
|
|
"serviceOverviewDesc": "Основные показатели работоспособности сервиса",
|
|
"memoryStats": "Статистика памяти",
|
|
"memoryStatsDesc": "Обзор потребления основной памяти",
|
|
"heapStack": "Детали кучи/стека",
|
|
"heapStackDesc": "Подробности о куче времени выполнения и пространстве памяти стека",
|
|
"internalStructs": "Внутренние структуры",
|
|
"internalStructsDesc": "Накладные расходы на внутреннюю структуру управления во время выполнения",
|
|
"gcAndAlloc": "GC и количество выделений",
|
|
"gcAndAllocDesc": "GC исторические данные и частота распределения"
|
|
},
|
|
"metrics": {
|
|
"uptime": "Время безотказной работы сервиса",
|
|
"goroutines": "Текущие горутины",
|
|
"heapObjects": "Объекты в куче",
|
|
"alloc": "Текущее использование памяти",
|
|
"totalAlloc": "Общий объем выделенной памяти",
|
|
"sys": "Объем памяти",
|
|
"nextGc": "Следующая цель памяти GC",
|
|
"memoryUsagePercent": "Текущее использование (Alloc/Sys)",
|
|
"heapAlloc": "Текущее использование динамической памяти",
|
|
"heapSys": "Объем кучи памяти",
|
|
"heapIdle": "Куча памяти простаивает",
|
|
"heapInuse": "Куча памяти используется",
|
|
"heapReleased": "Куча памяти освобождена",
|
|
"stackInuse": "Память стека используется",
|
|
"stackSys": "Выделенная стековая память",
|
|
"mspanInuse": "Используется структурная память MSpan",
|
|
"mspanSys": "Выделенная память MSpan",
|
|
"mcacheInuse": "Используется структурная память MCache",
|
|
"mcacheSys": "Выделенная память MCache",
|
|
"buckHashSys": "Выделенная память хеш-таблицы профилирования",
|
|
"gcSys": "Выделенная память метаданных GC",
|
|
"otherSys": "Другая выделенная системная память",
|
|
"numGc": "GC количество выполнений",
|
|
"lastGcTime": "Время с момента последнего GC",
|
|
"pauseTotalNs": "Общее время паузы GC",
|
|
"lastPause": "Время последней паузы GC",
|
|
"mallocs": "Счетчик выделения памяти",
|
|
"frees": "Количество освобождений памяти",
|
|
"lookups": "Счетчик поиска указателя"
|
|
}
|
|
}
|
|
},
|
|
"demo": {
|
|
"pageTitle": "Демонстрация стандартов разработки",
|
|
"specTitle": "Примечания к спецификациям",
|
|
"specDescription": "На этой странице показан стандартный макет заголовка для страниц, связанных с боковой панелью, для справки при разработке.",
|
|
"coreSpecTitle": "Детали основной спецификации и принципы написания:",
|
|
"rules": {
|
|
"structureFocus": {
|
|
"title": "Фокус структуры",
|
|
"description": ": Сделайте заголовок простым. Не добавляйте описания или подзаголовки под заголовком страницы."
|
|
},
|
|
"containerAlignment": {
|
|
"title": "Выравнивание контейнера и верхнего поля",
|
|
"description": "для строки заголовка без нижней границы. Использование",
|
|
"description2": "на внешнем контейнере, чтобы обеспечить постоянное расстояние между страницами."
|
|
},
|
|
"iconPresentation": {
|
|
"title": "Представление иконок",
|
|
"description": "стиль. Не заключайте значки в фоновые карточки, закругленные углы или декоративные рамки."
|
|
},
|
|
"textStyle": {
|
|
"title": "Стандарт стиля текста",
|
|
"description": ". Никакого жирного шрифта (например,",
|
|
"description2": ") или любые градиенты. Поддерживайте единообразную типографику по всему сайту."
|
|
},
|
|
"tabsModular": {
|
|
"title": "Модульная декомпозиция вкладок",
|
|
"description": "или разместить локально под",
|
|
"description2": "). Файл главной страницы поддерживает только активное состояние вкладки и макет внешнего скелета."
|
|
},
|
|
"complexityDriven": {
|
|
"title": "Декомпозиция блоков по сложности",
|
|
"description": "линии, разбивайте сложные участки на более мелкие компоненты. Храните компоненты, специфичные для маршрута, в каталоге функций (например,",
|
|
"description2": "). Только действительно межстраничные повторно используемые компоненты попадают в глобальную среду.",
|
|
"description3": ". Типичный эталонный случай — «База данных» ("
|
|
}
|
|
},
|
|
"tabs": {
|
|
"dashboard": "Панель мониторинга и карточки показателей",
|
|
"table": "Стандарты таблиц данных",
|
|
"controls": "Элементы управления вводом и формы"
|
|
},
|
|
"controls": {
|
|
"formDemoTitle": "Демонстрация взаимодействия формы и ввода",
|
|
"formDemoDesc": "Включает варианты кнопок, раскрывающиеся списки, флажки и стандартные стили ввода.",
|
|
"taskName": "Название задачи",
|
|
"taskNamePlaceholder": "Введите описание задачи...",
|
|
"taskNameHint": "Имя задачи используется для удобочитаемого отображения в записях выполнения.",
|
|
"taskCategory": "Категория задачи",
|
|
"categoryDatabase": "Операции с базой данных",
|
|
"categorySync": "Пакетная синхронизация данных",
|
|
"categoryCleanup": "Очистка просроченного диска",
|
|
"allowNotify": "Разрешить асинхронные push-уведомления",
|
|
"allowNotifyDesc": "Если этот флажок установлен, многоканальные push-уведомления будут отправляться после успешного завершения задачи.",
|
|
"buttonStyles": "Выравнивание стиля кнопок:",
|
|
"primaryButton": "Первичное действие",
|
|
"secondaryButton": "Вторичное действие",
|
|
"outlineButton": "Схема",
|
|
"ghostButton": "Призрак",
|
|
"formDesignSpec": "Спецификация дизайна формы",
|
|
"spec": {
|
|
"unifiedHeight": "1. Единый контроль высоты и тени:",
|
|
"checkboxAlignment": "2. Флажок и выравнивание текста:",
|
|
"buttonStrategy": "3. Стратегия использования кнопок:"
|
|
}
|
|
},
|
|
"table": {
|
|
"mockData": {
|
|
"syncExport": "Пакетная синхронизация информации о пользователях",
|
|
"dbBackup": "Еженедельный архив автоматического резервного копирования базы данных",
|
|
"s3Cleanup": "Удаленная задача автоматической очистки объекта кэша с истекшим сроком действия S3"
|
|
},
|
|
"mockType": {
|
|
"dataSync": "Синхронизация данных",
|
|
"dbOps": "Операции с базой данных",
|
|
"diskCleanup": "Очистка диска"
|
|
},
|
|
"mockDuration": {
|
|
"running": "Выполняется"
|
|
},
|
|
"searchPlaceholder": "Поиск по названию задачи...",
|
|
"filter": "Фильтр",
|
|
"newTask": "Новая задача",
|
|
"columns": {
|
|
"taskId": "Задача ID",
|
|
"taskName": "Название задачи",
|
|
"taskType": "Тип",
|
|
"status": "Статус",
|
|
"duration": "Продолжительность",
|
|
"triggerTime": "Время срабатывания",
|
|
"actions": "Действия"
|
|
},
|
|
"status": {
|
|
"success": "Успешно",
|
|
"running": "Выполняется",
|
|
"failed": "Ошибка"
|
|
},
|
|
"tableDesignSpec": "Спецификация конструкции таблицы и шаблон кода",
|
|
"spec": {
|
|
"container": "Контейнеры таблиц должны использовать контейнеры с пунктирной границей, то есть имя класса:",
|
|
"headerBg": "Фон заголовка таблицы:",
|
|
"headerStyle": ". Шрифт ячейки заголовка мелкий и жирный.",
|
|
"cellDivider": "В ячейках используются пунктирные разделители между строками и столбцами (",
|
|
"rowHover": "). При наведении строки таблицы используется плавный переход.",
|
|
"monoFont": "Закодированные поля, поля первичного ключа или уникальные поля ID должны использовать моноширинный шрифт:",
|
|
"badgeStyle": "Значки должны быть закругленными (",
|
|
"badgeStyle2": ") со светлым фоном и соответствующими точками значков для создания современного высококонтрастного визуального ощущения."
|
|
}
|
|
},
|
|
"dashboard": {
|
|
"cpuUsage": "Использование контейнера CPU",
|
|
"cpuStatus": "Контейнер работает нормально, нагрузка стабильна",
|
|
"storageUsage": "Использовано памяти",
|
|
"storageStatus": "Данные синхронизируются с удаленным сегментом S3, поддерживается автоматическое истечение срока действия.",
|
|
"database": "Физическая база данных",
|
|
"activeConnections": "Активные соединения:",
|
|
"totalTables": "Всего таблиц:",
|
|
"dbStatus": "Пул подключений поддерживается автоматически, максимальное количество подключений: 100.",
|
|
"dashboardDesignSpec": "Метрические карты и спецификация дизайна информационной панели",
|
|
"spec": {
|
|
"dashedBorder": "Метрические карты единообразно используют",
|
|
"dashedBorder2": "для границы и тени.",
|
|
"headerLayout": "Использование заголовка",
|
|
"headerLayout2": "макет: небольшой текст заголовка слева, значок Lucide справа.",
|
|
"valueStyle": "Числовое выделение использует и только использует",
|
|
"valueStyle2": "дисплей.",
|
|
"progressBar": "Использование индикаторов выполнения",
|
|
"progressBar2": "высота тонкой планки, не подавляющая.",
|
|
"secondaryText": "Вторичный текст описания внизу должен единообразно использовать",
|
|
"secondaryText2": "и подобные классы полезности."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|