diff --git a/messages/ru-RU.json b/messages/ru-RU.json
index 702525a2f..cacc4b895 100644
--- a/messages/ru-RU.json
+++ b/messages/ru-RU.json
@@ -101,6 +101,8 @@
"sitesTableViewPrivateResources": "Просмотр частных ресурсов",
"siteInstallNewt": "Установить Newt",
"siteInstallNewtDescription": "Запустите Newt в вашей системе",
+ "siteInstallKubernetesDocsDescription": "Для получения дополнительной информации об установке Kubernetes, см. docs.pangolin.net/manage/sites/install-kubernetes.",
+ "siteInstallAdvantechDocsDescription": "Для инструкций по установке модема Advantech, см. docs.pangolin.net/manage/sites/install-advantech.",
"WgConfiguration": "Конфигурация WireGuard",
"WgConfigurationDescription": "Используйте следующую конфигурацию для подключения к сети",
"operatingSystem": "Операционная система",
@@ -157,7 +159,7 @@
"shareDeleted": "Ссылка удалена",
"shareDeletedDescription": "Ссылка была успешно удалена",
"shareDelete": "Удалить общую ссылку",
- "shareDeleteConfirm": "Подтвердите удаление общей ссылки",
+ "shareDeleteConfirm": "Подтвердить удаление общей ссылки",
"shareQuestionRemove": "Вы уверены, что хотите удалить эту общую ссылку?",
"shareMessageRemove": "После удаления ссылка перестанет работать, и все, кто ее использует, потеряют доступ к ресурсу.",
"shareTokenDescription": "Токен доступа может быть передан двумя способами: как параметр запроса или в заголовках запроса. Они должны быть переданы от клиента по каждому запросу для аутентифицированного доступа.",
@@ -177,6 +179,7 @@
"shareCreateDescription": "Любой, у кого есть эта ссылка, может получить доступ к ресурсу",
"shareTitleOptional": "Заголовок (необязательно)",
"sharePathOptional": "Путь (необязательно)",
+ "sharePathDescription": "Ссылка перенаправит пользователей на этот путь после аутентификации.",
"expireIn": "Срок действия",
"neverExpire": "Бессрочный доступ",
"shareExpireDescription": "Срок действия - это период, в течение которого ссылка будет работать и предоставлять доступ к ресурсу. После этого времени ссылка перестанет работать, и пользователи, использовавшие эту ссылку, потеряют доступ к ресурсу.",
@@ -200,8 +203,8 @@
"shareErrorSelectResource": "Пожалуйста, выберите ресурс",
"proxyResourceTitle": "Управление публичными ресурсами",
"proxyResourceDescription": "Создание и управление ресурсами, которые доступны через веб-браузер",
- "publicResourcesBannerTitle": "Общедоступный доступ через веб",
- "publicResourcesBannerDescription": "Общедоступные ресурсы - это прокси-по HTTPS или TCP/UDP, доступные любому пользователю в Интернете через веб-браузер. В отличие от частных ресурсов, они не требуют программного обеспечения на стороне клиента и могут включать политики доступа на основе идентификации и контекста.",
+ "publicResourcesBannerTitle": "Веб-доступ к публичным ресурсам",
+ "publicResourcesBannerDescription": "Публичные ресурсы — это HTTPS-прокси, доступные для любого пользователя Интернета через веб-браузер. В отличие от частных ресурсов, они не требуют программного обеспечения на стороне клиента и могут включать в себя политики доступа, учитывающие идентичность и контекст.",
"clientResourceTitle": "Управление приватными ресурсами",
"clientResourceDescription": "Создание и управление ресурсами, которые доступны только через подключенный клиент",
"privateResourcesBannerTitle": "Частный доступ с нулевым доверием",
@@ -209,15 +212,19 @@
"resourcesSearch": "Поиск ресурсов...",
"resourceAdd": "Добавить ресурс",
"resourceErrorDelte": "Ошибка при удалении ресурса",
- "resourcePoliciesTitle": "Управление политиками ресурсов",
- "resourcePoliciesAttachedResourcesColumnTitle": "Прикрепленные ресурсы",
+ "resourcePoliciesBannerTitle": "Повторное использование правил аутентификации и доступа",
+ "resourcePoliciesBannerDescription": "Политики общих ресурсов позволяют один раз определить методы аутентификации и правила доступа, а затем прикреплять их к нескольким публичным ресурсам. Когда вы обновляете политику, каждое связанное с ней наследует изменение автоматически.",
+ "resourcePoliciesBannerButtonText": "Узнать больше",
+ "resourcePoliciesTitle": "Управление политиками публичных ресурсов",
+ "resourcePoliciesAttachedResourcesColumnTitle": "Ресурсы",
"resourcePoliciesAttachedResources": "{count} ресурс(ов)",
+ "resourcePoliciesAttachedResourcesCount": "{count, plural, one {# ресурс} few {# ресурса} many {# ресурсов} other {# ресурсов}}",
"resourcePoliciesAttachedResourcesEmpty": "нет ресурсов",
- "resourcePoliciesDescription": "Создавайте и управляйте политиками аутентификации для контроля доступа к вашим ресурсам",
+ "resourcePoliciesDescription": "Создание и управление политиками аутентификации для контроля доступа к вашим публичным ресурсам",
"resourcePoliciesSearch": "Поиск политик...",
"resourcePoliciesAdd": "Добавить политику",
"resourcePoliciesDefaultBadgeText": "Политика по умолчанию",
- "resourcePoliciesCreate": "Создать политику ресурса",
+ "resourcePoliciesCreate": "Создать политику публичного ресурса",
"resourcePoliciesCreateDescription": "Следуйте шагам ниже, чтобы создать новую политику",
"resourcePolicyName": "Имя политики",
"resourcePolicyNameDescription": "Дайте этой политике имя для идентификации ее в ваших ресурсах",
@@ -274,7 +281,7 @@
"back": "Назад",
"cancel": "Отмена",
"resourceConfig": "Фрагменты конфигурации",
- "resourceConfigDescription": "Скопируйте и вставьте эти сниппеты для настройки TCP/UDP ресурса",
+ "resourceConfigDescription": "Скопируйте и вставьте эти фрагменты конфигурации для настройки ресурса TCP/UDP.",
"resourceAddEntrypoints": "Traefik: Добавить точки входа",
"resourceExposePorts": "Gerbil: Открыть порты в Docker Compose",
"resourceLearnRaw": "Узнайте, как настроить TCP/UDP-ресурсы",
@@ -287,6 +294,8 @@
"labelDelete": "Удалить метку",
"labelAdd": "Добавить метку",
"labelCreateSuccessMessage": "Метка успешно создана",
+ "labelDuplicateError": "Повторяющаяся метка",
+ "labelDuplicateErrorDescription": "Метка с таким именем уже существует.",
"labelEditSuccessMessage": "Метка успешно изменена",
"labelNameField": "Название метки",
"labelColorField": "Цвет метки",
@@ -311,7 +320,7 @@
"rules": "Правила",
"resourceSettingDescription": "Настройка параметров ресурса",
"resourceSetting": "Настройки {resourceName}",
- "resourcePolicySettingDescription": "Настройка параметров политики ресурса",
+ "resourcePolicySettingDescription": "Настройте параметры этой политики публичного ресурса",
"resourcePolicySetting": "Настройки {policyName}",
"alwaysAllow": "Авторизация байпасса",
"alwaysDeny": "Блокировать доступ",
@@ -719,7 +728,7 @@
"targetSubmit": "Добавить цель",
"targetNoOne": "Этот ресурс не имеет никаких целей. Добавьте цель для настройки, где отправлять запросы в бэкэнд.",
"targetNoOneDescription": "Добавление более одной цели выше включит балансировку нагрузки.",
- "targetsSubmit": "Сохранить цели",
+ "targetsSubmit": "Сохранить настройки",
"addTarget": "Добавить цель",
"proxyMultiSiteRoundRobinNodeHelp": "Роутинг с балансировкой нагрузки не будет работать между сайтами, не подключенными к одному и тому же узлу, но подмена будет работать.",
"targetErrorInvalidIp": "Неверный IP-адрес",
@@ -753,11 +762,11 @@
"rulesErrorDuplicate": "Дублирующее правило",
"rulesErrorDuplicateDescription": "Правило с такими настройками уже существует",
"rulesErrorInvalidIpAddressRange": "Неверный CIDR",
- "rulesErrorInvalidIpAddressRangeDescription": "Пожалуйста, введите корректное значение CIDR",
- "rulesErrorInvalidUrl": "Неверный URL путь",
- "rulesErrorInvalidUrlDescription": "Пожалуйста, введите корректное значение URL пути",
- "rulesErrorInvalidIpAddress": "Неверный IP",
- "rulesErrorInvalidIpAddressDescription": "Пожалуйста, введите корректный IP адрес",
+ "rulesErrorInvalidIpAddressRangeDescription": "Введите действительный диапазон CIDR (например, 10.0.0.0/8).",
+ "rulesErrorInvalidUrl": "Неверный путь",
+ "rulesErrorInvalidUrlDescription": "Введите действительный URL-путь или шаблон (например, /api/*).",
+ "rulesErrorInvalidIpAddress": "Недействительный IP адрес",
+ "rulesErrorInvalidIpAddressDescription": "Введите действительный адрес IPv4 или IPv6.",
"rulesErrorUpdate": "Не удалось обновить правила",
"rulesErrorUpdateDescription": "Произошла ошибка при обновлении правил",
"rulesUpdated": "Включить правила",
@@ -766,14 +775,23 @@
"rulesMatchIpAddress": "Введите IP адрес (например, 103.21.244.12)",
"rulesMatchUrl": "Введите URL путь или шаблон (например, /api/v1/todos или /api/v1/*)",
"rulesErrorInvalidPriority": "Неверный приоритет",
- "rulesErrorInvalidPriorityDescription": "Пожалуйста, введите корректный приоритет",
- "rulesErrorDuplicatePriority": "Дублирующие приоритеты",
- "rulesErrorDuplicatePriorityDescription": "Пожалуйста, введите уникальные приоритеты",
+ "rulesErrorInvalidPriorityDescription": "Введите целое число 1 или больше.",
+ "rulesErrorDuplicatePriority": "Повторяющиеся приоритеты",
+ "rulesErrorDuplicatePriorityDescription": "Каждое правило должно иметь уникальный номер приоритета.",
+ "rulesErrorValidation": "Неверные правила",
+ "rulesErrorValidationRuleDescription": "Правило {ruleNumber}: {message}",
+ "rulesErrorInvalidMatchTypeDescription": "Выберите действительный тип совпадения (путь, IP, CIDR, страна, регион или ASN).",
+ "rulesErrorValueRequired": "Введите значение для этого правила.",
+ "rulesErrorInvalidCountry": "Недействительная страна",
+ "rulesErrorInvalidCountryDescription": "Выберите правильную страну.",
+ "rulesErrorInvalidAsn": "Недействительный ASN",
+ "rulesErrorInvalidAsnDescription": "Введите действительный ASN (например, AS15169).",
"ruleUpdated": "Правила обновлены",
"ruleUpdatedDescription": "Правила успешно обновлены",
"ruleErrorUpdate": "Операция не удалась",
"ruleErrorUpdateDescription": "Произошла ошибка во время операции сохранения",
"rulesPriority": "Приоритет",
+ "rulesReorderDragHandle": "Перетащите, чтобы изменить приоритет правила",
"rulesAction": "Действие",
"rulesMatchType": "Тип совпадения",
"value": "Значение",
@@ -792,7 +810,7 @@
"rulesResource": "Конфигурация правил ресурса",
"rulesResourceDescription": "Настройка правил для контроля доступа к ресурсу",
"ruleSubmit": "Добавить правило",
- "rulesNoOne": "Нет правил. Добавьте правило с помощью формы.",
+ "rulesNoOne": "Пока нет правил.",
"rulesOrder": "Правила оцениваются по приоритету в возрастающем порядке.",
"rulesSubmit": "Сохранить правила",
"policyErrorCreate": "Ошибка создания политики",
@@ -803,7 +821,48 @@
"policyErrorUpdateMessageDescription": "Произошла неожиданная ошибка",
"policyCreatedSuccess": "Политика ресурса успешно создана",
"policyUpdatedSuccess": "Политика ресурса успешно обновлена",
- "authMethodsSave": "Сохранить методы аутентификации",
+ "authMethodsSave": "Сохранить настройки",
+ "policyAuthStackTitle": "Аутентификация",
+ "policyAuthStackDescription": "Контроль, какие методы аутентификации требуются для доступа к этому ресурсу",
+ "policyAuthOrLogicTitle": "Несколько методов аутентификации активны",
+ "policyAuthOrLogicBanner": "Посетители могут аутентифицироваться, используя любой из активных методов ниже. Им не нужно выполнять все.",
+ "policyAuthMethodActive": "Активно",
+ "policyAuthMethodOff": "Отключено",
+ "policyAuthSsoTitle": "Платформа SSO",
+ "policyAuthSsoDescription": "Требуется войти через поставщика удостоверений вашей организации",
+ "policyAuthSsoSummary": "{idp} · {users} пользователей, {roles} ролей",
+ "policyAuthSsoDefaultIdp": "Поставщик по умолчанию",
+ "policyAuthAddDefaultIdentityProvider": "Добавить поставщика удостоверений по умолчанию",
+ "policyAuthOtherMethodsTitle": "Другие методы",
+ "policyAuthOtherMethodsDescription": "Дополнительные методы, которые посетители могут использовать вместо или вместе с платформой SSO",
+ "policyAuthPasscodeTitle": "Пароль",
+ "policyAuthPasscodeDescription": "Требуется общий буквенно-цифровой пароль для доступа к ресурсу",
+ "policyAuthPasscodeSummary": "Пароль установлен",
+ "policyAuthPincodeTitle": "ПИН-код",
+ "policyAuthPincodeDescription": "Краткий числовой код, необходимый для доступа к ресурсу",
+ "policyAuthPincodeSummary": "Установлен 6-значный PIN-код",
+ "policyAuthEmailTitle": "Белый список email",
+ "policyAuthEmailDescription": "Разрешить перечисленные email-адреса с одноразовыми паролями",
+ "policyAuthEmailSummary": "Разрешено адресов: {count}",
+ "policyAuthEmailOtpCallout": "Включение белого списка email отправляет одноразовый пароль на email посетителя при входе.",
+ "policyAuthHeaderAuthTitle": "Базовая аутентификация заголовка",
+ "policyAuthHeaderAuthDescription": "Проверка пользовательского имени и значения HTTP-заголовка для каждого запроса",
+ "policyAuthHeaderAuthSummary": "Заголовок настроен",
+ "policyAuthHeaderName": "Имя заголовка",
+ "policyAuthHeaderValue": "Ожидаемое значение",
+ "policyAuthSetPasscode": "Установить пароль",
+ "policyAuthSetPincode": "Установить ПИН-код",
+ "policyAuthSetEmailWhitelist": "Установить белый список email",
+ "policyAuthSetHeaderAuth": "Установить базовую аутентификацию заголовка",
+ "policyAccessRulesTitle": "Правила доступа",
+ "policyAccessRulesEnableDescription": "При включении правила оцениваются в порядке убывания до тех пор, пока одно из них не оценивается как истинное.",
+ "policyAccessRulesFirstMatch": "Правила оцениваются сверху вниз. Первое совпадающее правило определяет результат.",
+ "policyAccessRulesHowItWorks": "Правила сопоставляют запросы по пути, IP-адресу, местоположению или другим критериям. Каждое правило применяет действие: обойти аутентификацию, заблокировать доступ или передать для аутентификации. Если правило не подписано, трафик продолжается для аутентификации.",
+ "policyAccessRulesFallthroughOff": "Когда правила отключены, весь трафик проходит для аутентификации.",
+ "policyAccessRulesFallthroughOn": "Когда правило не совпадает, трафик проходит для аутентификации.",
+ "rulesPlaceholderCidr": "10.0.0.0/8",
+ "rulesPlaceholderPath": "/admin/*",
+ "rulesPlaceholderGeo": "RU, KP",
"rulesSave": "Сохранить правила",
"resourceErrorCreate": "Ошибка при создании ресурса",
"resourceErrorCreateDescription": "Произошла ошибка при создании ресурса",
@@ -916,10 +975,18 @@
"resourceRoleDescription": "Администраторы всегда имеют доступ к этому ресурсу.",
"resourcePolicySelectTitle": "Политика доступа к ресурсам",
"resourcePolicySelectDescription": "Выберите тип политики ресурса для аутентификации",
+ "resourcePolicyTypeLabel": "Тип политики",
+ "resourcePolicyLabel": "Политика ресурса",
"resourcePolicyInline": "Политика ресурса на месте",
"resourcePolicyInlineDescription": "Политика доступа ограничена только этим ресурсом",
"resourcePolicyShared": "Общая политика ресурса",
- "resourcePolicySharedDescription": "Этот ресурс использует общую политику. Настройки уровня политики (методы аутентификации, список разрешенных email) заблокированы. Вы можете добавить правила, роли и пользователей, специфичные для ресурса, ниже.",
+ "resourcePolicySharedDescription": "Этот ресурс использует общую политику.",
+ "sharedPolicy": "Общая политика",
+ "sharedPolicyNoneDescription": "У этого ресурса есть своя политика.",
+ "resourceSharedPolicyOwnDescription": "У этого ресурса есть собственные средства управления аутентификацией и правилами доступа.",
+ "resourceSharedPolicyInheritedDescription": "Этот ресурс наследует от {policyName}.",
+ "resourceSharedPolicyAuthenticationNotice": "Этот ресурс использует общую политику. Некоторые настройки аутентификации можно изменить в этом ресурсе, чтобы добавить их в политику. Чтобы изменить основную политику, отредактируйте {policyName}.",
+ "resourceSharedPolicyRulesNotice": "Этот ресурс использует общую политику. Некоторые правила доступа могут быть отредактированы для этого ресурса. Чтобы изменить основную политику, вы должны отредактировать {policyName}.",
"resourceUsersRoles": "Контроль доступа",
"resourceUsersRolesDescription": "Выберите пользователей и роли с доступом к этому ресурсу",
"resourceUsersRolesSubmit": "Сохранить контроль доступа",
@@ -944,7 +1011,14 @@
"resourceVisibilityTitle": "Видимость",
"resourceVisibilityTitleDescription": "Включите или отключите видимость ресурса",
"resourceGeneral": "Общие настройки",
- "resourceGeneralDescription": "Настройте общие параметры этого ресурса",
+ "resourceGeneralDescription": "Настройте имя, адрес и политику доступа для этого ресурса.",
+ "resourceGeneralDetailsSubsection": "Детали ресурса",
+ "resourceGeneralDetailsSubsectionDescription": "Установите отображаемое имя, идентификатор и публично доступный домен для этого ресурса.",
+ "resourceGeneralDetailsSubsectionPortDescription": "Установите отображаемое имя, идентификатор и публичный порт для этого ресурса.",
+ "resourceGeneralPublicAddressSubsection": "Публичный адрес",
+ "resourceGeneralPublicAddressSubsectionDescription": "Настройте, как пользователи будут получать доступ к этому ресурсу.",
+ "resourceGeneralAuthenticationAccessSubsection": "Аутентификация и доступ",
+ "resourceGeneralAuthenticationAccessSubsectionDescription": "Выберите, будет ли этот ресурс использовать собственную политику или наследовать от общей политики.",
"resourceEnable": "Ресурс активен",
"resourceTransfer": "Перенести ресурс",
"resourceTransferDescription": "Перенесите этот ресурс на другой сайт",
@@ -1220,11 +1294,14 @@
"addLabels": "Добавить метки",
"siteLabelsTab": "Метки",
"siteLabelsDescription": "Управляйте метками, связанными с этим сайтом.",
- "labelsNotFound": "Метки не найдены",
+ "labelsNotFound": "Метки не найдены.",
+ "labelsEmptyCreateHint": "Начните печатать выше, чтобы создать метку.",
"labelSearch": "Поиск меток",
+ "labelSearchOrCreate": "Найти или создать метку",
"accessLabelFilterCount": "{count, plural, one {# метка} few {# метки} many {# меток} other {# меток}}",
"labelOverflowCount": "+{count, plural, one {# метка} few {# метки} many {# меток} other {# меток}}",
"accessLabelFilterClear": "Очистить фильтры меток",
+ "accessFilterClear": "Очистить фильтры",
"selectColor": "Выберите цвет",
"createNewLabel": "Создать новую метку организации \"{label}\"",
"inviteInvalidDescription": "Ссылка на приглашение недействительна.",
@@ -1461,8 +1538,8 @@
"sidebarResources": "Ресурсы",
"sidebarProxyResources": "Публичный",
"sidebarClientResources": "Приватный",
- "sidebarPolicies": "Политики",
- "sidebarResourcePolicies": "Ресурсы",
+ "sidebarPolicies": "Общие политики",
+ "sidebarResourcePolicies": "Публичные ресурсы",
"sidebarAccessControl": "Контроль доступа",
"sidebarLogsAndAnalytics": "Журналы и аналитика",
"sidebarTeam": "Команда",
@@ -1470,7 +1547,7 @@
"sidebarAdmin": "Админ",
"sidebarInvitations": "Приглашения",
"sidebarRoles": "Роли",
- "sidebarShareableLinks": "Ссылки",
+ "sidebarShareableLinks": "Общие ссылки",
"sidebarApiKeys": "API ключи",
"sidebarProvisioning": "Подготовка",
"sidebarSettings": "Настройки",
@@ -1647,7 +1724,7 @@
"standaloneHcFilterResourceIdFallback": "Ресурс {id}",
"blueprints": "Чертежи",
"blueprintsLog": "Журнал чертежей",
- "blueprintsDescription": "Просмотр прошлых применений чертежа и их результатов",
+ "blueprintsDescription": "Просмотреть предыдущие приложения с чертежами и их результаты или применить новый чертеж",
"blueprintAdd": "Добавить чертёж",
"blueprintGoBack": "Посмотреть все чертежи",
"blueprintCreate": "Создать чертёж",
@@ -1667,10 +1744,10 @@
"enableDockerSocket": "Включить чертёж Docker",
"enableDockerSocketDescription": "Включить сбор меток Docker Socket для чертежей. Путь сокета должен быть предоставлен подключателю сайта. Прочтите о том, как это работает, в документации.",
"newtAutoUpdate": "Включить автообновление сайта",
- "newtAutoUpdateDescription": "При включении, коннекторы сайта будут автоматически обновляться до последней версии, когда доступен новый выпуск.",
+ "newtAutoUpdateDescription": "При включении разъемы сайта автоматически загрузят последнюю версию и перезапустятся. Это можно переопределить на уровне каждого сайта.",
"siteAutoUpdate": "Автообновление сайта",
"siteAutoUpdateLabel": "Включить автообновление",
- "siteAutoUpdateDescription": "Контролировать, будет ли коннектор этого сайта автоматически загружать последнюю версию.",
+ "siteAutoUpdateDescription": "При включении разъем этого сайта автоматически скачает последнюю версию и перезапустится.",
"siteAutoUpdateOrgDefault": "Значение по умолчанию для организации: {state}",
"siteAutoUpdateOverriding": "Переопределение настройки организации",
"siteAutoUpdateResetToOrg": "Сброс до значения по умолчанию для организации",
@@ -1768,9 +1845,9 @@
"accountSetupSuccess": "Настройка аккаунта завершена! Добро пожаловать в Pangolin!",
"documentation": "Документация",
"saveAllSettings": "Сохранить все настройки",
- "saveResourceTargets": "Сохранить цели",
- "saveResourceHttp": "Сохранить настройки прокси",
- "saveProxyProtocol": "Сохранить настройки прокси-протокола",
+ "saveResourceTargets": "Сохранить настройки",
+ "saveResourceHttp": "Сохранить настройки",
+ "saveProxyProtocol": "Сохранить настройки",
"settingsUpdated": "Настройки обновлены",
"settingsUpdatedDescription": "Настройки успешно обновлены",
"settingsErrorUpdate": "Не удалось обновить настройки",
@@ -2027,13 +2104,13 @@
"healthCheckUnknown": "Неизвестно",
"healthCheck": "Проверка здоровья",
"configureHealthCheck": "Настроить проверку здоровья",
- "configureHealthCheckDescription": "Настройте мониторинг состояния для {target}",
+ "configureHealthCheckDescription": "Настройте мониторинг вашего ресурса, чтобы обеспечить его постоянную доступность",
"enableHealthChecks": "Включить проверки здоровья",
"healthCheckDisabledStateDescription": "Когда отключен, сайт не будет выполнять проверки состояния и состояние будет считаться неизвестным.",
"enableHealthChecksDescription": "Мониторинг здоровья этой цели. При необходимости можно контролировать другую конечную точку.",
"healthScheme": "Метод",
"healthSelectScheme": "Выберите метод",
- "healthCheckPortInvalid": "Порт проверки здоровья должен быть от 1 до 65535",
+ "healthCheckPortInvalid": "Порт должен быть в диапазоне от 1 до 65535",
"healthCheckPath": "Путь",
"healthHostname": "IP / хост",
"healthPort": "Порт",
@@ -2046,6 +2123,7 @@
"requireDeviceApproval": "Требовать подтверждения устройства",
"requireDeviceApprovalDescription": "Пользователям с этой ролью нужны новые устройства, одобренные администратором, прежде чем они смогут подключаться и получать доступ к ресурсам.",
"sshSettings": "Настройки SSH",
+ "sshAccess": "Доступ по SSH",
"rdpSettings": "Настройки RDP",
"vncSettings": "Настройки VNC",
"sshServer": "SSH сервер",
@@ -2072,8 +2150,13 @@
"sshDaemonDisclaimer": "Убедитесь, что целевой хост правильно настроен для запуска демона аутентификации перед завершением этой настройки, иначе предоставление не удастся.",
"sshDaemonPort": "Порт демона",
"sshServerDestination": "Пункт назначения сервера",
- "sshServerDestinationDescription": "Настройте пункт назначения и порт SSH-сервера",
+ "sshServerDestinationDescription": "Настройте адрес сервера SSH",
"destination": "Пункт назначения",
+ "destinationRequired": "Требуется указание пункта назначения.",
+ "domainRequired": "Требуется домен.",
+ "proxyPortRequired": "Требуется порт.",
+ "invalidPathConfiguration": "Недействительная конфигурация пути.",
+ "invalidRewritePathConfiguration": "Недействительная конфигурация пути переписывания.",
"bgTargetMultiSiteDisclaimer": "Выбор нескольких сайтов включает в себя устойчивую маршрутизацию и автоматический отказ для обеспечения высокой доступности.",
"roleAllowSsh": "Разрешить SSH",
"roleAllowSshAllow": "Разрешить",
@@ -2088,10 +2171,25 @@
"sshSudoModeCommandsDescription": "Пользователь может запускать только указанные команды с помощью sudo.",
"sshSudo": "Разрешить sudo",
"sshSudoCommands": "Sudo Команды",
- "sshSudoCommandsDescription": "Список команд, которые пользователь может выполнять с sudo, через запятую. Должны использоваться абсолютные пути.",
+ "sshSudoCommandsDescription": "Список команд, которые пользователь может запускать с sudo, разделенный запятыми, пробелами или новыми строками. Должны использоваться абсолютные пути.",
"sshCreateHomeDir": "Создать домашний каталог",
"sshUnixGroups": "Unix группы",
- "sshUnixGroupsDescription": "Группы Unix через запятую, чтобы добавить пользователя на целевой хост.",
+ "sshUnixGroupsDescription": "Группы Unix, к которым пользователь добавляется на целевом хосте, разделяются запятыми, пробелами или новыми строками.",
+ "roleTextFieldPlaceholder": "Введите значения или перетащите файл .txt или .csv",
+ "roleTextImportTitle": "Импорт из файла",
+ "roleTextImportDescription": "Импортирую {fileName} в {fieldLabel}.",
+ "roleTextImportSkipHeader": "Пропустить первую строку (заголовок)",
+ "roleTextImportOverride": "Заменить существующее",
+ "roleTextImportAppend": "Добавить к существующему",
+ "roleTextImportMode": "Режим импорта",
+ "roleTextImportPreview": "Предпросмотр",
+ "roleTextImportItemCount": "{count, plural, =0 {Нет элементов для импорта} one {# элемент для импорта} few {# элемента для импорта} many {# элементов для импорта} other {# элементов для импорта}}",
+ "roleTextImportTotalCount": "{existing} существующих + {imported} импортированных = {total} всего",
+ "roleTextImportConfirm": "Импортировать",
+ "roleTextImportInvalidFile": "Неподдерживаемый тип файла",
+ "roleTextImportInvalidFileDescription": "Поддерживаются только файлы .txt и .csv.",
+ "roleTextImportEmpty": "Элементы в файле не найдены",
+ "roleTextImportEmptyDescription": "Файл не содержит элементов, которые можно импортировать.",
"retryAttempts": "Количество попыток повторного запроса",
"expectedResponseCodes": "Ожидаемые коды ответов",
"expectedResponseCodesDescription": "HTTP-код состояния, указывающий на здоровое состояние. Если оставить пустым, 200-300 считается здоровым.",
@@ -2875,9 +2973,10 @@
"enableProxyProtocol": "Включить Прокси Протокол",
"proxyProtocolInfo": "Сохранять IP-адреса клиента для backend'ов TCP",
"proxyProtocolVersion": "Версия протокола прокси",
- "version1": " Версия 1 (рекомендуется)",
+ "version1": "Версия 1 (рекомендуется)",
"version2": "Версия 2",
- "versionDescription": "Версия 1 основана на тексте и широко поддерживается. Версия 2 является бинарной и более эффективной, но менее совместимой.",
+ "version1Description": "Основано на тексте и широко поддерживается. Убедитесь, что транспорт сервера добавлен в динамическую конфигурацию.",
+ "version2Description": "Бинарная и более эффективная, но менее совместимая. Убедитесь, что транспорт сервера добавлен в динамическую конфигурацию.",
"warning": "Предупреждение",
"proxyProtocolWarning": "Бэкэнд приложение должно быть настроено на принятие соединений прокси-протокола. Если ваш бэкэнд не поддерживает Прокси-протокол, то включение этой опции прервет все подключения, поэтому включите это только если вы знаете, что вы делаете. Обязательно настройте вашего бэкэнда на доверие заголовкам Proxy Protocol от Traefik.",
"restarting": "Перезапуск...",
@@ -3034,7 +3133,7 @@
"enterConfirmation": "Введите подтверждение",
"blueprintViewDetails": "Подробности",
"defaultIdentityProvider": "Поставщик удостоверений по умолчанию",
- "defaultIdentityProviderDescription": "Когда выбран поставщик идентификации по умолчанию, пользователь будет автоматически перенаправлен на провайдер для аутентификации.",
+ "defaultIdentityProviderDescription": "Пользователь будет автоматически перенаправлен к этому поставщику удостоверений для аутентификации.",
"editInternalResourceDialogNetworkSettings": "Настройки сети",
"editInternalResourceDialogAccessPolicy": "Политика доступа",
"editInternalResourceDialogAddRoles": "Добавить роли",
@@ -3075,6 +3174,7 @@
"maintenanceModeType": "Тип режима обслуживания",
"showMaintenancePage": "Показать страницу обслуживания посетителям",
"enableMaintenanceMode": "Включить режим обслуживания",
+ "enableMaintenanceModeDescription": "Когда включено, посетители увидят страницу обслуживания вместо вашего ресурса.",
"automatic": "Автоматический",
"automaticModeDescription": "Показывать страницу обслуживания только когда все цели бэкэнда недоступны или неисправны. Ваш ресурс продолжит работать нормально, пока хотя бы одна цель здорова.",
"forced": "Принудительно",
@@ -3082,6 +3182,8 @@
"warning:": "Предупреждение:",
"forcedeModeWarning": "Весь трафик будет направлен на страницу обслуживания. Ваши бекэнд ресурсы не будут получать никакие запросы.",
"pageTitle": "Заголовок страницы",
+ "maintenancePageContentSubsection": "Содержимое страницы",
+ "maintenancePageContentSubsectionDescription": "Настройте содержимое, отображаемое на странице обслуживания",
"pageTitleDescription": "Основной заголовок, отображаемый на странице обслуживания",
"maintenancePageMessage": "Сообщение об обслуживании",
"maintenancePageMessagePlaceholder": "Мы скоро вернемся! Наш сайт в настоящее время проходит плановое техническое обслуживание.",
@@ -3346,6 +3448,8 @@
"idpUnassociateQuestion": "Вы уверены, что хотите рассоединить этого поставщика удостоверений с этой организацией?",
"idpUnassociateDescription": "Все пользователи, связанные с этим поставщиком удостоверений, будут удалены из этой организации, но поставщик удостоверений будет продолжать существовать для других связанных организаций.",
"idpUnassociateConfirm": "Подтвердите рассоединение поставщика удостоверений",
+ "idpConfirmDeleteAndRemoveMeFromOrg": "УДАЛИТЬ И ИЗВЛЕЧЬ МЕНЯ ИЗ ОРГАНИЗАЦИИ",
+ "idpUnassociateAndRemoveMeFromOrg": "РАЗОРВАТЬ СВЯЗЬ И УДАЛИТЬ МЕНЯ ИЗ ОРГАНИЗАЦИИ",
"idpUnassociateWarning": "Это не может быть отменено для этой организации.",
"idpUnassociatedDescription": "Поставщик удостоверений успешно рассоединен с этой организацией",
"idpUnassociateMenu": "Рассоединить",
@@ -3439,18 +3543,58 @@
"sshConnecting": "Подключение…",
"sshInitializing": "Инициализация…",
"sshSignInTitle": "Вход в SSH",
- "sshSignInDescription": "Введите свои учетные данные SSH",
+ "sshSignInDescription": "Введите свои учетные данные SSH для подключения",
"sshPasswordTab": "Пароль",
"sshPrivateKeyTab": "Закрытый ключ",
"sshPrivateKeyField": "Закрытый ключ",
"sshPrivateKeyDisclaimer": "Ваш закрытый ключ не хранится и не виден для Pangolin. Вместо этого вы можете использовать краткосрочные сертификаты для бесшовной аутентификации с использованием вашей текущей идентификации Pangolin.",
"sshLearnMore": "Узнать больше",
"sshPrivateKeyFile": "Файл закрытого ключа",
- "sshAuthenticate": "Аутентификация",
+ "sshAuthenticate": "Подключиться",
"sshTerminate": "Завершить",
"sshPoweredBy": "Разработано",
"sshErrorNoTarget": "Цель не указана",
"sshErrorWebSocket": "Подключение WebSocket не удалось",
"sshErrorAuthFailed": "Ошибка аутентификации",
- "sshErrorConnectionClosed": "Подключение закрыто до завершения аутентификации"
+ "sshErrorConnectionClosed": "Подключение закрыто до завершения аутентификации",
+ "sitePangolinSshDescription": "Разрешить доступ по SSH к ресурсам на этом сайте. Это можно изменить позже.",
+ "browserGatewayNoResourceForDomain": "Ресурс для этого домена не найден",
+ "browserGatewayNoTarget": "Нет цели",
+ "browserGatewayConnect": "Подключиться",
+ "browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
+ "sshErrorSignKeyFailed": "Не удалось подписать ключ SSH для аутентификации через PAM push. Проверьте, вошли ли вы как пользователь?",
+ "sshTerminalError": "Ошибка: {error}",
+ "sshConnectionClosedCode": "Соединение закрыто (код {code})",
+ "sshPrivateKeyPlaceholder": "-----НАЧАЛО ЛИЧНОГО КЛЮЧА OPENSSH-----",
+ "sshPrivateKeyRequired": "Требуется личный ключ",
+ "vncTitle": "VNC",
+ "vncSignInDescription": "Введите пароль VNC для подключения",
+ "vncPasswordOptional": "Пароль (необязательно)",
+ "vncNoResourceTarget": "Отсутствует целевой ресурс",
+ "vncFailedToLoadNovnc": "Не удалось загрузить noVNC",
+ "vncAuthFailedStatus": "Статус {status}",
+ "vncPasteClipboard": "Вставить из буфера обмена",
+ "rdpTitle": "RDP",
+ "rdpSignInTitle": "Вход в удаленный рабочий стол",
+ "rdpSignInDescription": "Введите учетные данные Windows для подключения",
+ "rdpLoadingModule": "Загрузка модуля...",
+ "rdpFailedToLoadModule": "Не удалось загрузить модуль RDP",
+ "rdpNotReady": "Не готово",
+ "rdpModuleInitializing": "Модуль RDP все еще инициализируется",
+ "rdpDownloadingFiles": "Загрузка {count} файлов с удалённого сервера…",
+ "rdpDownloadFailed": "Ошибка загрузки: {fileName}",
+ "rdpUploaded": "Загружено: {fileName}",
+ "rdpNoConnectionTarget": "Доступная цель подключения отсутствует",
+ "rdpConnectionFailed": "Ошибка соединения",
+ "rdpFit": "Подгонка",
+ "rdpFull": "Полный",
+ "rdpReal": "Настоящий",
+ "rdpMeta": "Метаданные",
+ "rdpUploadFiles": "Загрузить файлы",
+ "rdpFilesReadyToPaste": "Файлы готовы к вставке",
+ "rdpFilesReadyToPasteDescription": "{count, plural, one {# файл скопирован в удалённый буфер обмена — нажмите Ctrl+V на удалённом рабочем столе, чтобы вставить.} few {# файла скопированы в удалённый буфер обмена — нажмите Ctrl+V на удалённом рабочем столе, чтобы вставить.} many {# файлов скопированы в удалённый буфер обмена — нажмите Ctrl+V на удалённом рабочем столе, чтобы вставить.} other {# файла скопированы в удалённый буфер обмена — нажмите Ctrl+V на удалённом рабочем столе, чтобы вставить.}}",
+ "rdpUploadFailed": "Ошибка загрузки",
+ "rdpUnicodeKeyboardMode": "Режим клавиатуры Unicode",
+ "sessionToolbarShow": "Показать панель инструментов",
+ "sessionToolbarHide": "Скрыть панель инструментов"
}