diff --git a/messages/ru-RU.json b/messages/ru-RU.json
index f93b599a..9f56e17f 100644
--- a/messages/ru-RU.json
+++ b/messages/ru-RU.json
@@ -56,6 +56,9 @@
"sitesBannerTitle": "Подключить любую сеть",
"sitesBannerDescription": "Сайт — это соединение с удаленной сетью, которое позволяет Pangolin предоставлять доступ к ресурсам, будь они общедоступными или частными, пользователям в любом месте. Установите сетевой коннектор сайта (Newt) там, где можно запустить исполняемый файл или контейнер, чтобы установить соединение.",
"sitesBannerButtonText": "Установить сайт",
+ "approvalsBannerTitle": "Одобрить или запретить доступ к устройству",
+ "approvalsBannerDescription": "Просмотрите и подтвердите или отклоните запросы на доступ к устройству от пользователей. Когда требуется подтверждение устройства, пользователи должны получить одобрение администратора, прежде чем их устройства смогут подключиться к ресурсам вашей организации.",
+ "approvalsBannerButtonText": "Узнать больше",
"siteCreate": "Создать сайт",
"siteCreateDescription2": "Следуйте инструкциям ниже для создания и подключения нового сайта",
"siteCreateDescription": "Создайте новый сайт для начала подключения ресурсов",
@@ -257,6 +260,8 @@
"accessRolesSearch": "Поиск ролей...",
"accessRolesAdd": "Добавить роль",
"accessRoleDelete": "Удалить роль",
+ "accessApprovalsManage": "Управление утверждениями",
+ "accessApprovalsDescription": "Просмотр и управление утверждениями в ожидании доступа к этой организации",
"description": "Описание",
"inviteTitle": "Открытые приглашения",
"inviteDescription": "Управление приглашениями для присоединения других пользователей к организации",
@@ -450,6 +455,18 @@
"selectDuration": "Укажите срок действия",
"selectResource": "Выберите ресурс",
"filterByResource": "Фильтровать по ресурсам",
+ "selectApprovalState": "Выберите состояние одобрения",
+ "filterByApprovalState": "Фильтр по состоянию утверждения",
+ "approvalListEmpty": "Нет утверждений",
+ "approvalState": "Состояние одобрения",
+ "approve": "Одобрить",
+ "approved": "Одобрено",
+ "denied": "Отказано",
+ "deniedApproval": "Отказано в одобрении",
+ "all": "Все",
+ "deny": "Запретить",
+ "viewDetails": "Детали",
+ "requestingNewDeviceApproval": "запросил новое устройство",
"resetFilters": "Сбросить фильтры",
"totalBlocked": "Запросы заблокированы Панголином",
"totalRequests": "Всего запросов",
@@ -729,16 +746,28 @@
"countries": "Страны",
"accessRoleCreate": "Создание роли",
"accessRoleCreateDescription": "Создайте новую роль для группы пользователей и выдавайте им разрешения.",
+ "accessRoleEdit": "Изменить роль",
+ "accessRoleEditDescription": "Редактировать информацию о роли.",
"accessRoleCreateSubmit": "Создать роль",
"accessRoleCreated": "Роль создана",
"accessRoleCreatedDescription": "Роль была успешно создана.",
"accessRoleErrorCreate": "Не удалось создать роль",
"accessRoleErrorCreateDescription": "Произошла ошибка при создании роли.",
+ "accessRoleUpdateSubmit": "Обновить роль",
+ "accessRoleUpdated": "Роль обновлена",
+ "accessRoleUpdatedDescription": "Роль была успешно обновлена.",
+ "accessApprovalUpdated": "Выполнено утверждение",
+ "accessApprovalApprovedDescription": "Принять решение об утверждении запроса.",
+ "accessApprovalDeniedDescription": "Отказано в запросе об утверждении.",
+ "accessRoleErrorUpdate": "Не удалось обновить роль",
+ "accessRoleErrorUpdateDescription": "Произошла ошибка при обновлении роли.",
+ "accessApprovalErrorUpdate": "Не удалось обработать подтверждение",
+ "accessApprovalErrorUpdateDescription": "Произошла ошибка при обработке одобрения.",
"accessRoleErrorNewRequired": "Новая роль обязательна",
"accessRoleErrorRemove": "Не удалось удалить роль",
"accessRoleErrorRemoveDescription": "Произошла ошибка при удалении роли.",
"accessRoleName": "Название роли",
- "accessRoleQuestionRemove": "Вы собираетесь удалить роль {name}. Это действие нельзя отменить.",
+ "accessRoleQuestionRemove": "Вы собираетесь удалить `{name}` роль. Это действие нельзя отменить.",
"accessRoleRemove": "Удалить роль",
"accessRoleRemoveDescription": "Удалить роль из организации",
"accessRoleRemoveSubmit": "Удалить роль",
@@ -960,7 +989,7 @@
"passwordResetSmtpRequired": "Пожалуйста, обратитесь к администратору",
"passwordResetSmtpRequiredDescription": "Для сброса пароля необходим код сброса пароля. Обратитесь к администратору за помощью.",
"passwordBack": "Назад к паролю",
- "loginBack": "Вернуться к входу",
+ "loginBack": "Вернуться на главную страницу входа",
"signup": "Регистрация",
"loginStart": "Войдите для начала работы",
"idpOidcTokenValidating": "Проверка OIDC токена",
@@ -1118,6 +1147,10 @@
"actionUpdateIdpOrg": "Обновить организацию IDP",
"actionCreateClient": "Создать Клиента",
"actionDeleteClient": "Удалить Клиента",
+ "actionArchiveClient": "Архивировать клиента",
+ "actionUnarchiveClient": "Разархивировать клиента",
+ "actionBlockClient": "Блокировать клиента",
+ "actionUnblockClient": "Разблокировать клиента",
"actionUpdateClient": "Обновить Клиента",
"actionListClients": "Список Клиентов",
"actionGetClient": "Получить Клиента",
@@ -1134,14 +1167,14 @@
"searchProgress": "Поиск...",
"create": "Создать",
"orgs": "Организации",
- "loginError": "Произошла ошибка при входе",
- "loginRequiredForDevice": "Для аутентификации устройства необходимо войти в систему.",
+ "loginError": "Произошла непредвиденная ошибка. Пожалуйста, попробуйте еще раз.",
+ "loginRequiredForDevice": "Логин необходим для вашего устройства.",
"passwordForgot": "Забыли пароль?",
"otpAuth": "Двухфакторная аутентификация",
"otpAuthDescription": "Введите код из вашего приложения-аутентификатора или один из ваших одноразовых резервных кодов.",
"otpAuthSubmit": "Отправить код",
"idpContinue": "Или продолжить с",
- "otpAuthBack": "Вернуться к входу",
+ "otpAuthBack": "Назад к паролю",
"navbar": "Навигационное меню",
"navbarDescription": "Главное навигационное меню приложения",
"navbarDocsLink": "Документация",
@@ -1189,6 +1222,7 @@
"sidebarOverview": "Обзор",
"sidebarHome": "Главная",
"sidebarSites": "Сайты",
+ "sidebarApprovals": "Запросы на утверждение",
"sidebarResources": "Ресурсы",
"sidebarProxyResources": "Публичный",
"sidebarClientResources": "Приватный",
@@ -1205,7 +1239,7 @@
"sidebarIdentityProviders": "Поставщики удостоверений",
"sidebarLicense": "Лицензия",
"sidebarClients": "Клиенты",
- "sidebarUserDevices": "Пользователи",
+ "sidebarUserDevices": "Устройства пользователя",
"sidebarMachineClients": "Машины",
"sidebarDomains": "Домены",
"sidebarGeneral": "Управление",
@@ -1277,6 +1311,7 @@
"setupErrorCreateAdmin": "Произошла ошибка при создании учётной записи администратора сервера.",
"certificateStatus": "Статус сертификата",
"loading": "Загрузка",
+ "loadingAnalytics": "Загрузка аналитики",
"restart": "Перезагрузка",
"domains": "Домены",
"domainsDescription": "Создание и управление доменами, доступными в организации",
@@ -1304,6 +1339,7 @@
"refreshError": "Не удалось обновить данные",
"verified": "Подтверждено",
"pending": "В ожидании",
+ "pendingApproval": "Ожидает утверждения",
"sidebarBilling": "Выставление счетов",
"billing": "Выставление счетов",
"orgBillingDescription": "Управление платежной информацией и подписками",
@@ -1420,7 +1456,7 @@
"securityKeyRemoveSuccess": "Ключ безопасности успешно удален",
"securityKeyRemoveError": "Не удалось удалить ключ безопасности",
"securityKeyLoadError": "Не удалось загрузить ключи безопасности",
- "securityKeyLogin": "Продолжить с ключом безопасности",
+ "securityKeyLogin": "Использовать ключ безопасности",
"securityKeyAuthError": "Не удалось аутентифицироваться с ключом безопасности",
"securityKeyRecommendation": "Зарегистрируйте резервный ключ безопасности на другом устройстве, чтобы всегда иметь доступ к вашему аккаунту.",
"registering": "Регистрация...",
@@ -1547,6 +1583,8 @@
"IntervalSeconds": "Интервал здоровых состояний",
"timeoutSeconds": "Таймаут (сек)",
"timeIsInSeconds": "Время указано в секундах",
+ "requireDeviceApproval": "Требовать подтверждения устройства",
+ "requireDeviceApprovalDescription": "Пользователям с этой ролью нужны новые устройства, одобренные администратором, прежде чем они смогут подключаться и получать доступ к ресурсам.",
"retryAttempts": "Количество попыток повторного запроса",
"expectedResponseCodes": "Ожидаемые коды ответов",
"expectedResponseCodesDescription": "HTTP-код состояния, указывающий на здоровое состояние. Если оставить пустым, 200-300 считается здоровым.",
@@ -1876,7 +1914,7 @@
"orgAuthChooseIdpDescription": "Выберите своего поставщика удостоверений личности для продолжения",
"orgAuthNoIdpConfigured": "Эта организация не имеет настроенных поставщиков идентификационных данных. Вместо этого вы можете войти в свой Pangolin.",
"orgAuthSignInWithPangolin": "Войти через Pangolin",
- "orgAuthSignInToOrg": "Войдите в организацию",
+ "orgAuthSignInToOrg": "Войти в организацию",
"orgAuthSelectOrgTitle": "Вход в организацию",
"orgAuthSelectOrgDescription": "Введите ID вашей организации, чтобы продолжить",
"orgAuthOrgIdPlaceholder": "ваша-организация",
@@ -2232,6 +2270,8 @@
"deviceCodeInvalidFormat": "Код должен быть 9 символов (например, A1AJ-N5JD)",
"deviceCodeInvalidOrExpired": "Неверный или просроченный код",
"deviceCodeVerifyFailed": "Не удалось проверить код устройства",
+ "deviceCodeValidating": "Проверка кода устройства...",
+ "deviceCodeVerifying": "Проверка авторизации устройства...",
"signedInAs": "Вы вошли как",
"deviceCodeEnterPrompt": "Введите код, отображаемый на устройстве",
"continue": "Продолжить",
@@ -2244,7 +2284,7 @@
"deviceOrganizationsAccess": "Доступ ко всем организациям, к которым ваш аккаунт имеет доступ",
"deviceAuthorize": "Авторизовать {applicationName}",
"deviceConnected": "Устройство подключено!",
- "deviceAuthorizedMessage": "Устройство авторизовано для доступа к вашей учетной записи.",
+ "deviceAuthorizedMessage": "Устройство авторизовано для доступа к вашей учетной записи. Вернитесь в клиентское приложение.",
"pangolinCloud": "Облако Панголина",
"viewDevices": "Просмотр устройств",
"viewDevicesDescription": "Управление подключенными устройствами",
@@ -2306,6 +2346,7 @@
"identifier": "Identifier",
"deviceLoginUseDifferentAccount": "Не вы? Используйте другую учетную запись.",
"deviceLoginDeviceRequestingAccessToAccount": "Устройство запрашивает доступ к этой учетной записи.",
+ "loginSelectAuthenticationMethod": "Выберите метод аутентификации для продолжения.",
"noData": "Нет данных",
"machineClients": "Машинные клиенты",
"install": "Установить",
@@ -2394,5 +2435,92 @@
"maintenanceScreenTitle": "Сервис временно недоступен",
"maintenanceScreenMessage": "В настоящее время мы испытываем технические трудности. Пожалуйста, зайдите позже.",
"maintenanceScreenEstimatedCompletion": "Предполагаемое завершение:",
- "createInternalResourceDialogDestinationRequired": "Укажите адрес назначения. Это может быть имя хоста или IP-адрес."
+ "createInternalResourceDialogDestinationRequired": "Укажите адрес назначения. Это может быть имя хоста или IP-адрес.",
+ "available": "Доступно",
+ "archived": "Архивировано",
+ "noArchivedDevices": "Архивные устройства не найдены",
+ "deviceArchived": "Устройство архивировано",
+ "deviceArchivedDescription": "Устройство успешно архивировано.",
+ "errorArchivingDevice": "Ошибка архивирования устройства",
+ "failedToArchiveDevice": "Не удалось архивировать устройство",
+ "deviceQuestionArchive": "Вы уверены, что хотите архивировать это устройство?",
+ "deviceMessageArchive": "Устройство будет архивировано и удалено из вашего списка активных устройств.",
+ "deviceArchiveConfirm": "Архивировать устройство",
+ "archiveDevice": "Архивировать устройство",
+ "archive": "Архивировать",
+ "deviceUnarchived": "Устройство разархивировано",
+ "deviceUnarchivedDescription": "Устройство было успешно разархивировано.",
+ "errorUnarchivingDevice": "Ошибка разархивирования устройства",
+ "failedToUnarchiveDevice": "Не удалось распаковать устройство",
+ "unarchive": "Разархивировать",
+ "archiveClient": "Архивировать клиента",
+ "archiveClientQuestion": "Вы уверены, что хотите архивировать этого клиента?",
+ "archiveClientMessage": "Клиент будет архивирован и удален из вашего активного списка клиентов.",
+ "archiveClientConfirm": "Архивировать клиента",
+ "blockClient": "Блокировать клиента",
+ "blockClientQuestion": "Вы уверены, что хотите заблокировать этого клиента?",
+ "blockClientMessage": "Устройство будет вынуждено отключиться, если подключено в данный момент. Вы можете разблокировать устройство позже.",
+ "blockClientConfirm": "Блокировать клиента",
+ "active": "Активный",
+ "usernameOrEmail": "Имя пользователя или Email",
+ "selectYourOrganization": "Выберите вашу организацию",
+ "signInTo": "Войти в",
+ "signInWithPassword": "Продолжить с паролем",
+ "noAuthMethodsAvailable": "Методы аутентификации для этой организации недоступны.",
+ "enterPassword": "Введите ваш пароль",
+ "enterMfaCode": "Введите код из вашего приложения-аутентификатора",
+ "securityKeyRequired": "Пожалуйста, используйте ваш защитный ключ для входа.",
+ "needToUseAnotherAccount": "Нужно использовать другой аккаунт?",
+ "loginLegalDisclaimer": "Нажимая на кнопки ниже, вы подтверждаете, что прочитали, поняли и согласны с Условиями использования и Политикой конфиденциальности.",
+ "termsOfService": "Условия предоставления услуг",
+ "privacyPolicy": "Политика конфиденциальности",
+ "userNotFoundWithUsername": "Пользователь с таким именем пользователя не найден.",
+ "verify": "Подтвердить",
+ "signIn": "Войти",
+ "forgotPassword": "Забыли пароль?",
+ "orgSignInTip": "Если вы вошли в систему ранее, вы можете ввести имя пользователя или адрес электронной почты, чтобы войти в систему с поставщиком идентификации вашей организации. Это проще!",
+ "continueAnyway": "Все равно продолжить",
+ "dontShowAgain": "Больше не показывать",
+ "orgSignInNotice": "Знаете ли вы?",
+ "signupOrgNotice": "Пытаетесь войти?",
+ "signupOrgTip": "Вы пытаетесь войти через оператора идентификации вашей организации?",
+ "signupOrgLink": "Войдите или зарегистрируйтесь через вашу организацию",
+ "verifyEmailLogInWithDifferentAccount": "Использовать другую учетную запись",
+ "logIn": "Войти",
+ "deviceInformation": "Информация об устройстве",
+ "deviceInformationDescription": "Информация о устройстве и агенте",
+ "platform": "Платформа",
+ "macosVersion": "Версия macOS",
+ "windowsVersion": "Версия Windows",
+ "iosVersion": "Версия iOS",
+ "androidVersion": "Версия Android",
+ "osVersion": "Версия ОС",
+ "kernelVersion": "Версия ядра",
+ "deviceModel": "Модель устройства",
+ "serialNumber": "Серийный номер",
+ "hostname": "Hostname",
+ "firstSeen": "Первый раз виден",
+ "lastSeen": "Последнее посещение",
+ "deviceSettingsDescription": "Просмотр информации и настроек устройства",
+ "devicePendingApprovalDescription": "Это устройство ожидает одобрения",
+ "deviceBlockedDescription": "Это устройство заблокировано. Оно не сможет подключаться к ресурсам, если не разблокировано.",
+ "unblockClient": "Разблокировать клиента",
+ "unblockClientDescription": "Устройство разблокировано",
+ "unarchiveClient": "Разархивировать клиента",
+ "unarchiveClientDescription": "Устройство было разархивировано",
+ "block": "Блок",
+ "unblock": "Разблокировать",
+ "deviceActions": "Действия устройства",
+ "deviceActionsDescription": "Управление статусом устройства и доступом",
+ "devicePendingApprovalBannerDescription": "Это устройство ожидает одобрения. Он не сможет подключиться к ресурсам до утверждения.",
+ "connected": "Подключено",
+ "disconnected": "Отключено",
+ "approvalsEmptyStateTitle": "Утверждения устройства не включены",
+ "approvalsEmptyStateDescription": "Включите одобрение ролей для того, чтобы пользователи могли подключать новые устройства.",
+ "approvalsEmptyStateStep1Title": "Перейти к ролям",
+ "approvalsEmptyStateStep1Description": "Перейдите в настройки ролей вашей организации для настройки утверждений устройств.",
+ "approvalsEmptyStateStep2Title": "Включить утверждения устройства",
+ "approvalsEmptyStateStep2Description": "Редактировать роль и включить опцию 'Требовать утверждения устройств'. Пользователям с этой ролью потребуется подтверждение администратора для новых устройств.",
+ "approvalsEmptyStatePreviewDescription": "Предпросмотр: Если включено, ожидающие запросы на устройство появятся здесь для проверки",
+ "approvalsEmptyStateButtonText": "Управление ролями"
}