mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-11-12 21:44:22 +08:00
9a51a68206
* feat(domain): 支持通配符域名及关联功能适配 * fix(domain): preserve legacy Unicode imports and address review findings * fix(domain): canonicalize legacy IDNs and exclude empty host labels * fix(domain): normalize equivalent Unicode IDN spellings --------- Co-authored-by: Ryan <63696351+Rain-kl@users.noreply.github.com> Co-authored-by: ryan <ryan@arctel.net>
585 lines
52 KiB
JSON
585 lines
52 KiB
JSON
{
|
||
"websites": {
|
||
"title": "Сайты",
|
||
"createZone": "Добавить зону",
|
||
"searchRoot": "Корневой домен зоны поиска",
|
||
"loadingList": "Загрузка списка зон...",
|
||
"requestFailed": "Запрос не выполнен. Пожалуйста, повторите попытку позже.",
|
||
"emptySearch": "Соответствующая зона не найдена.",
|
||
"emptyList": "Зон пока нет. Нажмите «Добавить зону» в правом верхнем углу, чтобы начать.",
|
||
"rootDomain": "Корневой домен",
|
||
"domainCount": "Домены",
|
||
"createdAt": "Создано",
|
||
"updatedAt": "Обновлено",
|
||
"actions": "Действия",
|
||
"manage": "Управление",
|
||
"manageZone": "Управление зоной",
|
||
"loadingDetail": "Загрузка сведений о зоне...",
|
||
"invalidId": "Неверный сайт ID. Откройте страницу сведений из списка веб-сайтов.",
|
||
"notFound": "Сайт не найден. Возможно, он был удален или ID недействителен.",
|
||
"back": "Назад",
|
||
"detailSubtitle": "Управление сайтом зоны",
|
||
"tabOverview": "Обзор",
|
||
"tabDomains": "Домены ({count})",
|
||
"tabCertificates": "Сертификаты ({count})",
|
||
"basicInfo": "Основная информация",
|
||
"basicInfoDesc": "Поддерживать регистрируемый корневой домен Зоны. После смены корня подтвердите, что его домены по-прежнему принадлежат ему.",
|
||
"currentRoot": "Текущий корневой домен",
|
||
"editRoot": "Изменить корневой домен",
|
||
"dangerZone": "Опасные действия",
|
||
"dangerZoneDesc": "Очистите все домены в зоне перед ее удалением. Удаление невозможно отменить.",
|
||
"deleteZone": "Удалить зону",
|
||
"deleteZoneTitle": "Удалить зону",
|
||
"deleteZoneDesc": "Удалить {domain}? Домены под ним должны быть сначала отвязаны от маршрутов. Это невозможно отменить.",
|
||
"deleting": "Удаление…",
|
||
"confirmDelete": "Удалить",
|
||
"zoneDeleted": "Зона удалена",
|
||
"editZone": "Редактировать зону",
|
||
"editorDesc": "Зона принимает только регистрируемый корневой домен, например example.com.",
|
||
"rootRequired": "Введите корневой домен зоны",
|
||
"rootInvalid": "Введите корневой домен без протокола или подстановочного знака.",
|
||
"zoneUpdated": "Зона обновлена",
|
||
"zoneCreated": "Зона создана",
|
||
"saveFailed": "Сохранить не удалось",
|
||
"saveChanges": "Сохранить изменения",
|
||
"range24h": "24 часа",
|
||
"range7d": "7 дней",
|
||
"range30d": "30 дней",
|
||
"chartUv": "Ведро UV",
|
||
"chartBytes": "Данные переданы",
|
||
"statsFailed": "Не удалось загрузить статистику трафика.",
|
||
"analyticsUnavailable": "Хранилище аналитики недоступно, поэтому диаграммы могут быть пустыми. Убедитесь, что ClickHouse включен.",
|
||
"uniqueVisitors": "Уникальные посетители в окне запроса",
|
||
"uniqueVisitorsDesc": "Верхняя сумма дедуплицируется по всему окну; кривая равна UV для каждого сегмента времени, и сегменты не могут быть сложены вместе",
|
||
"totalRequests": "Всего запросов",
|
||
"totalBytes": "Всего передано данных",
|
||
"zoneInfo": "Информация о зоне",
|
||
"addDomain": "Добавить домен",
|
||
"emptyDomains": "Домены еще не добавлены",
|
||
"certificate": "Сертификат",
|
||
"upstream": "Сервер-источник",
|
||
"certNumber": "Сертификат №{id}",
|
||
"unbound": "Несвязанный",
|
||
"unlinkedRoute": "Нет связанного маршрута",
|
||
"loadingEllipsis": "Загрузка…",
|
||
"upstreamUnset": "Восходящий поток не настроен",
|
||
"viewRoute": "Посмотреть детали маршрута",
|
||
"deleteDomain": "Удалить домен",
|
||
"domainDeleted": "Домен удален",
|
||
"deleteFailed": "Удаление не удалось",
|
||
"deleteDomainTitle": "Удалить домен",
|
||
"deleteDomainDesc": "Удалить {domain}? Это невозможно отменить.",
|
||
"zoneCertsTitle": "Сертификаты, используемые этой зоной",
|
||
"zoneCertsDesc": "Сертификаты управляются в глобальной библиотеке сертификатов. В этом списке показаны только сертификаты, привязанные к доменам в этой зоне.",
|
||
"certLibrary": "Библиотека сертификатов",
|
||
"unboundCertHint": "Доменов без сертификата: {count}. Выберите сертификат на вкладке «Домены».",
|
||
"emptyBoundCerts": "Никаких связанных сертификатов. Выберите сертификат в строке домена или импортируйте/примените его в библиотеке сертификатов.",
|
||
"status": "Статус",
|
||
"coverage": "Охватываемые домены",
|
||
"expiresAt": "Срок действия истекает",
|
||
"selectZone": "Сначала выберите зону",
|
||
"enterDomain": "Введите домен",
|
||
"noWildcard": "Допустим только один символ * как крайняя левая метка, например *.example.com",
|
||
"invalidFormat": "Неверный формат домена",
|
||
"invalidSubdomain": "Неверный формат имени субдомена",
|
||
"mustBelongToZone": "Домен должен принадлежать зоне {root}",
|
||
"domainAdded": "Домен добавлен",
|
||
"addFailed": "Добавить не удалось",
|
||
"quickCreateTitle": "Быстрое добавление домена",
|
||
"quickCreateDesc": "После выбора зоны введите имя субдомена (например, API), @ (корневой) или полное FQDN.",
|
||
"selectRegisteredRoot": "Выберите зарегистрированный корневой домен",
|
||
"zoneLabel": "Зона:",
|
||
"domain": "Домен",
|
||
"domainPlaceholderWithZone": "API или @ или API.{domain}",
|
||
"domainPlaceholder": "API/@/полный домен",
|
||
"willCreate": "Создаст:",
|
||
"domainExample": "Пример: введите <api>api</api> → <fqdn>api.zone.com</fqdn>; <apex>@</apex> → сам корень",
|
||
"certOptional": "Сертификат (необязательно)",
|
||
"noCert": "Нет сертификата"
|
||
},
|
||
"certificates": {
|
||
"title": "Сертификаты",
|
||
"refresh": "Обновить сертификаты",
|
||
"importCert": "Импортный сертификат",
|
||
"applyTitle": "Подать заявку на сертификат",
|
||
"listTitle": "Список сертификатов",
|
||
"listDesc": "Показывает срок действия сертификата, примечания и статус. Вы можете просмотреть подробную информацию, отредактировать содержимое или удалить сертификаты.",
|
||
"loadingList": "Загрузка списка сертификатов...",
|
||
"requestFailed": "Запрос не выполнен. Пожалуйста, повторите попытку позже.",
|
||
"emptyList": "Сертификатов пока нет. Нажмите «Импортировать сертификат» или «Подать заявку на сертификат» в правом верхнем углу, чтобы начать.",
|
||
"notBeforeLabel": "Действительно с: {value}",
|
||
"notAfterLabel": "Срок действия истекает: {value}",
|
||
"sourceLabel": "Источник: {value}",
|
||
"sourceAcme": "Выпущен через ACME",
|
||
"sourceUpload": "Загрузка вручную",
|
||
"statusLabel": "Статус: {value}",
|
||
"converting": "Выполняется конвертация...",
|
||
"applying": "Применение...",
|
||
"statusError": "Статус: {value} ({message})",
|
||
"convertFailed": "Преобразование не удалось",
|
||
"applyFailed": "Не удалось выпустить сертификат",
|
||
"remarkLabel": "Примечание: {value}",
|
||
"noRemark": "Нет примечания",
|
||
"view": "Посмотреть",
|
||
"edit": "Изменить",
|
||
"renew": "Продлить",
|
||
"deleted": "Сертификат удален.",
|
||
"renewSubmitted": "Задача продления отправлена на сертификат {name}",
|
||
"imported": "Сертификат {name} импортирован.",
|
||
"applySubmitted": "Задача заявки отправлена на сертификат {name}",
|
||
"convertSubmitted": "Заявка на конвертацию подана для получения сертификата {name}",
|
||
"reapplySubmitted": "Сертификат {name} обновлен и применяется повторно...",
|
||
"updated": "Сертификат {name} обновлен.",
|
||
"deleteTitle": "Удалить сертификат",
|
||
"deleteDesc": "Удалить сертификат {name}?",
|
||
"applyEditTitle": "Изменить и повторно применить сертификат",
|
||
"applyConvertTitle": "Перевыпустить сертификат через ACME",
|
||
"applyEditDesc": "Измените настройки сертификата ACME. После сохранения сертификат будет повторно применен с новыми настройками.",
|
||
"applyConvertDesc": "Укажите параметры выпуска через ACME. После успешного выпуска текущий сертификат будет заменён на сертификат с автоматическим продлением.",
|
||
"applyDesc": "Используйте ACME (Let's Encrypt и другие), чтобы автоматически подавать заявки на получение и продление сертификатов, включая домены с подстановочными знаками.",
|
||
"name": "Название сертификата",
|
||
"namePlaceholder": "Например: сертификат основного сайта.",
|
||
"primaryDomain": "Основной домен",
|
||
"primaryDomainPlaceholder": "example.com или *.example.com",
|
||
"otherDomains": "Другие домены",
|
||
"otherDomainsHint": "Один домен на строку. Для сертификата с подстановочным знаком также введите соответствующий корневой домен, чтобы его можно было выдать вместе.",
|
||
"dnsAccount": "DNS аккаунт провайдера",
|
||
"selectDnsAccount": "Выберите учетную запись DNS.",
|
||
"keyAlgorithm": "Ключевой алгоритм",
|
||
"remark": "Примечание",
|
||
"remarkPlaceholder": "Необязательно. Запишите, для чего используется этот сертификат.",
|
||
"autoRenew": "Включить автоматическое продление",
|
||
"autoRenewDesc": "Если эта опция включена, сертификат продлевается автоматически за 7 дней до истечения срока его действия.",
|
||
"advanced": "Расширенные параметры",
|
||
"dnsServer1": "DNS сервер проверки 1",
|
||
"dnsServer2": "DNS сервер проверки 2",
|
||
"dnsServerPlaceholder": "Оставьте пустым, чтобы использовать авторитетное значение по умолчанию DNS",
|
||
"skipCname": "Пропустить проверку CNAME",
|
||
"skipCnameDesc": "Не следуйте записям CNAME во время проверки DNS-01.",
|
||
"skipDns": "Пропустить предварительную проверку DNS",
|
||
"skipDnsDesc": "Попросите Let’s Encrypt проверить напрямую, без локальной проверки.",
|
||
"submitting": "Отправка...",
|
||
"saveAndApply": "Сохраните и примените",
|
||
"startConvert": "Начать преобразование",
|
||
"startApply": "Выпустить сертификат",
|
||
"editTitle": "Изменить сертификат",
|
||
"editDesc": "Вы можете изменить имя и примечание сертификата, а также повторно загрузить сертификат PEM и закрытый ключ.",
|
||
"loadingContent": "Загрузка содержимого сертификата...",
|
||
"notFound": "Сертификат не найден. Возможно, оно было удалено.",
|
||
"certPem": "Сертификат PEM",
|
||
"keyPem": "Закрытый ключ PEM",
|
||
"convertSource": "Преобразовать источник",
|
||
"saving": "Сохранение...",
|
||
"saveCert": "Сохранить сертификат",
|
||
"importTitle": "Добавить сертификат",
|
||
"importDesc": "Вставьте PEM вручную или загрузите файлы сертификатов. После импорта его можно сразу выбрать в формах сайта.",
|
||
"manualImport": "Ручной импорт",
|
||
"fileImport": "Импорт файла",
|
||
"remarkProdPlaceholder": "Например: производственный сертификат для основного объекта.",
|
||
"importing": "Импорт...",
|
||
"remarkWildcardPlaceholder": "Например: производственный сертификат с подстановочным знаком.",
|
||
"certFile": "Файл сертификата",
|
||
"keyFile": "Файл закрытого ключа",
|
||
"fileSelected": "Выбрано: {name}",
|
||
"selectCertFile": "Выберите файл PEM/CRT.",
|
||
"selectKeyFile": "Выберите файл KEY/PEM.",
|
||
"uploading": "Загрузка...",
|
||
"uploadFiles": "Загрузить файлы",
|
||
"clearFiles": "Очистить файлы",
|
||
"selectFiles": "Выберите файл сертификата и файл закрытого ключа.",
|
||
"detailTitle": "Детали сертификата",
|
||
"detailDesc": "Просмотр метаданных сертификата, примечаний и текущего сохраненного содержимого PEM.",
|
||
"loadingDetail": "Загрузка сведений о сертификате...",
|
||
"status": "Статус",
|
||
"notBefore": "Действительно с",
|
||
"notAfter": "Срок действия истекает",
|
||
"certPemCopied": "Сертификат PEM скопирован.",
|
||
"keyPemCopied": "Закрытый ключ PEM скопирован.",
|
||
"copy": "Копировать",
|
||
"close": "Закрыть",
|
||
"editCert": "Изменить сертификат",
|
||
"deleting": "Удаление...",
|
||
"deleteCert": "Удалить сертификат",
|
||
"certStatus": {
|
||
"unknownExpiry": "Срок действия неизвестен",
|
||
"expired": "Срок действия истек",
|
||
"expiresInDays": "Срок действия истекает через {days, plural, one {# день} few {# дня} many {# дней} other {# дня}}.",
|
||
"valid": "Действителен"
|
||
},
|
||
"validation": {
|
||
"nameRequired": "Введите имя сертификата",
|
||
"nameTooLong": "Имя сертификата не может превышать 255 символов.",
|
||
"certPemRequired": "Введите сертификат PEM",
|
||
"keyPemRequired": "Введите закрытый ключ PEM",
|
||
"remarkTooLong": "Примечание не может превышать 255 символов.",
|
||
"primaryDomainRequired": "Введите основной домен",
|
||
"dnsAccountRequired": "Выберите учетную запись DNS."
|
||
}
|
||
},
|
||
"dnsAccounts": {
|
||
"title": "DNS аккаунтов",
|
||
"addAccount": "Добавить аккаунт",
|
||
"listTitle": "DNS список аккаунтов",
|
||
"listDesc": "Централизованно управляйте учетными записями поставщиков DNS, используемыми для проверки сертификата DNS ACME.",
|
||
"loadingList": "Загрузка DNS аккаунтов...",
|
||
"requestFailed": "Запрос не выполнен. Пожалуйста, повторите попытку позже.",
|
||
"emptyList": "Аккаунтов DNS пока нет. Нажмите «Добавить учетную запись» в правом верхнем углу, чтобы начать.",
|
||
"createdAt": "Создано: {date}",
|
||
"created": "DNS аккаунт добавлен",
|
||
"deleted": "DNS аккаунт удален",
|
||
"deleteTitle": "Удалить учетную запись DNS",
|
||
"deleteDesc": "Удалить учетную запись DNS {name}?",
|
||
"createTitle": "Добавить аккаунт DNS",
|
||
"createDesc": "Централизованно управляйте учетными записями поставщиков DNS, используемыми для проверки сертификата DNS ACME.",
|
||
"accountName": "Имя учетной записи",
|
||
"accountNamePlaceholder": "Cloudflare адрес электронной почты",
|
||
"provider": "DNS провайдер",
|
||
"tokenPlaceholder": "Не используйте глобальный ключ API.",
|
||
"nameRequired": "Введите имя",
|
||
"tokenRequired": "Введите токен",
|
||
"submitting": "Отправка...",
|
||
"submit": "Отправить"
|
||
},
|
||
"origins": {
|
||
"title": "Серверы-источники",
|
||
"subtitle": "Общий каталог серверов-источников для маршрутов. Измените адрес один раз для всех связанных маршрутов.",
|
||
"refresh": "Обновить",
|
||
"create": "Добавить сервер-источник",
|
||
"loadFailed": "Загрузка не удалась",
|
||
"emptyTitle": "Нет серверов-источников",
|
||
"emptyDesc": "Добавьте сервер-источник, чтобы использовать его адрес в маршрутах.",
|
||
"routeCount": "Маршрутов: {count}",
|
||
"noRemark": "Нет примечания",
|
||
"lastUpdated": "Последнее обновление: {date}",
|
||
"detail": "Подробности",
|
||
"edit": "Изменить",
|
||
"deleted": "Сервер-источник удалён",
|
||
"deleteFailed": "Удаление не удалось",
|
||
"deleteTitle": "Удалить сервер-источник",
|
||
"deleteDesc": "Удалить сервер-источник «{name}»?",
|
||
"confirmDelete": "Удалить",
|
||
"missingId": "Не указан корректный ID сервера-источника.",
|
||
"loadingDetail": "Загрузка сервера-источника…",
|
||
"backToList": "Вернуться к списку",
|
||
"notFound": "Сервер-источник не найден или уже удалён.",
|
||
"editOrigin": "Изменить сервер-источник",
|
||
"deleteOrigin": "Удалить сервер-источник",
|
||
"boundRoutes": "Связанные маршруты",
|
||
"createdAt": "Создано",
|
||
"updatedAt": "Обновлено",
|
||
"remark": "Примечание",
|
||
"relatedRoutes": "Связанные маршруты",
|
||
"relatedRoutesDesc": "Маршруты, использующие этот сервер-источник в качестве основного.",
|
||
"noRelatedRoutes": "Нет связанных маршрутов",
|
||
"noRelatedRoutesDesc": "Этот сервер-источник пока не используется ни в одном маршруте.",
|
||
"domain": "Домен",
|
||
"address": "Адрес сервера-источника",
|
||
"status": "Статус",
|
||
"enabled": "Включено",
|
||
"disabled": "Отключено",
|
||
"addressRequired": "Укажите адрес сервера-источника",
|
||
"addressInvalid": "Неверный формат адреса сервера-источника.",
|
||
"updated": "Сервер-источник обновлён",
|
||
"created": "Сервер-источник создан",
|
||
"saveFailed": "Сохранить не удалось",
|
||
"editorDesc": "Каталог адресов серверов-источников для повторного использования в маршрутах. Протокол и порт задаются в самом маршруте.",
|
||
"name": "Название сервера-источника",
|
||
"namePlaceholder": "Основной сервер-источник",
|
||
"saving": "Сохранение...",
|
||
"saveChanges": "Сохранить изменения"
|
||
},
|
||
"proxyRoutes": {
|
||
"title": "Маршруты прокси",
|
||
"refresh": "Обновить",
|
||
"createRule": "Новый маршрут",
|
||
"listTitle": "Список маршрутов",
|
||
"searchPlaceholder": "Поиск по сайтам, доменам или серверам-источникам…",
|
||
"emptyTitle": "Нет веб-сайтов",
|
||
"emptyDesc": "Сначала создайте веб-сайт, затем откройте страницу конфигурации, чтобы завершить настройку HTTPS, кэша и ограничений скорости.",
|
||
"noMatches": "Нет соответствующих результатов",
|
||
"noMatchesDesc": "Попробуйте другой поисковый запрос или очистите фильтр.",
|
||
"siteName": "Название сайта",
|
||
"domain": "Домен",
|
||
"status": "Статус",
|
||
"upstream": "Сервер-источник",
|
||
"actions": "Действия",
|
||
"enabled": "Включено",
|
||
"disabled": "Отключено",
|
||
"configure": "Настроить",
|
||
"siteCreated": "Сайт создан",
|
||
"siteDeleted": "Сайт удален",
|
||
"deleteFailed": "Удаление не удалось",
|
||
"loadListFailed": "Не удалось загрузить список маршрутов.",
|
||
"unknownError": "Неизвестная ошибка",
|
||
"deleteSiteTitle": "Удалить сайт",
|
||
"deleteSiteDesc": "Удалить сайт {name}? При этом будут удалены все домены и настройки сайта.",
|
||
"deleting": "Удаление...",
|
||
"missingId": "Действительный маршрут ID отсутствует.",
|
||
"notFound": "Маршрут не найден",
|
||
"notFoundDesc": "Вернитесь к списку и повторите попытку.",
|
||
"saving": "Сохранение...",
|
||
"saveFailed": "Сохранить не удалось",
|
||
"requestFailed": "Запрос не выполнен. Пожалуйста, повторите попытку позже.",
|
||
"back": "Назад",
|
||
"publish": "Опубликовать конфигурацию",
|
||
"diffFailed": "Не удалось загрузить разницу конфигурации.",
|
||
"noPublishNeeded": "Текущая конфигурация соответствует активной версии. Нечего публиковать.",
|
||
"publishSuccess": "Опубликовано успешно",
|
||
"versionLabel": "Версия {version}",
|
||
"publishFailed": "Опубликовать не удалось",
|
||
"publishTitle": "Опубликовать конфигурацию",
|
||
"publishDesc": "Это создаст новую версию из ожидающей конфигурации и сделает ее активной. Затем узлы получат обновление.",
|
||
"confirmPublish": "Опубликовать",
|
||
"createDesc": "Выбирайте привязки из зарегистрированных доменов Зоны. После создания маршрута вы можете продолжить настройку кэша, ограничений скорости и других дополнительных параметров.",
|
||
"siteId": "Идентификатор сайта",
|
||
"siteIdOptionalDesc": "Необязательно. Если оставить пустым, автоматически будет использоваться первый домен.",
|
||
"siteIdStableDesc": "Используйте стабильный и читаемый бизнес-идентификатор. Он не обязательно должен точно совпадать с доменом.",
|
||
"bindDomains": "Связанные домены",
|
||
"bindDomainsHint": "Выберите зарегистрированные домены для привязки. Используйте «Быстрое добавление домена», чтобы создать FQDN под зоной и выбрать его автоматически.",
|
||
"upstreamType": "Исходный режим",
|
||
"upstreamDirect": "Прямое подключение к серверу-источнику",
|
||
"upstreamTunnel": "Туннель",
|
||
"upstreamPages": "Страницы статического сайта",
|
||
"upstreamAddresses": "Восходящие адреса",
|
||
"upstreamUrlsHint": "Полный URL на каждой строке. Первая строка — основной сервер-источник. Для нескольких серверов используйте один протокол, без пути и параметров запроса.",
|
||
"selectTunnel": "Выберите туннель",
|
||
"pleaseSelect": "Пожалуйста, выберите...",
|
||
"online": "Онлайн",
|
||
"offline": "Оффлайн",
|
||
"tunnelForwardHint": "Пересылать запросы на клиентский узел, подключенный этим туннелем.",
|
||
"tunnelProtocol": "Внутренний протокол обслуживания",
|
||
"tunnelAddress": "Адрес внутреннего сервиса",
|
||
"tunnelAddressHint": "Например: 127.0.0.1:8080 или 192.168.1.10:80.",
|
||
"selectPagesProject": "Выберите проект Pages",
|
||
"pagesProjectHint": "Показаны только включенные проекты Pages с активным развертыванием.",
|
||
"enableSite": "Включить сайт",
|
||
"enableSiteDesc": "Если этот параметр отключен, конфигурация сохраняется, но не включается в публикацию.",
|
||
"createFailed": "Создать не удалось. Пожалуйста, повторите попытку позже.",
|
||
"creating": "Создание…",
|
||
"create": "Создать",
|
||
"searchDomainOrZone": "Поиск домена или зоны…",
|
||
"quickAddDomain": "Быстрое добавление домена",
|
||
"noZoneDomains": "Нет доступных доменов зоны. Сначала добавьте FQDN в <websites>Управление веб-сайтами</websites> или используйте «Быстрое добавление домена».",
|
||
"noBindableDomains": "Нет привязываемых доменов (остальные уже привязаны к другим маршрутам). Используйте «Быстрое добавление домена», чтобы создать его.",
|
||
"noMatchingDomains": "Нет подходящих доменов",
|
||
"certNumber": "Сертификат №{id}",
|
||
"noCert": "Нет сертификата",
|
||
"zoneName": "Зона {name}",
|
||
"zoneId": "Зона №{id}",
|
||
"unboundDomain": "Нет привязки к домену",
|
||
"pagesProjectId": "Проект страниц №{id}",
|
||
"pagesUnbound": "Проект страниц не связан",
|
||
"tunnelTargetUnset": "Цель не настроена",
|
||
"upstreamUnset": "Восходящий поток не настроен",
|
||
"domainSettings": "Настройки домена",
|
||
"domainSettingsDesc": "Привяжите полные доменные имена, уже зарегистрированные в зоне. Поддерживать сертификаты в управлении доменами зоны.",
|
||
"redirectNeedsCert": "Привяжите сертификат к выбранным доменам (в Зоне) перед включением перенаправления HTTP.",
|
||
"domainSettingsSaved": "Настройки домена сохранены.",
|
||
"redirectHttp": "Автоматически перенаправить HTTP на HTTPS",
|
||
"redirectHttpEnabledHint": "Если этот параметр включен, генерируются дополнительные правила перенаправления порта 80.",
|
||
"redirectHttpNeedsCert": "Прежде чем эту функцию можно будет включить, хотя бы один выбранный домен должен иметь привязанный сертификат.",
|
||
"reverseProxy": "Обратный прокси",
|
||
"reverseProxyDesc": "Настройте адреса серверов-источников и стратегию выбора сервера.",
|
||
"enableHttp2": "Включить HTTP/2",
|
||
"enableHttp2Desc": "Включено по умолчанию. Если этот параметр отключен, трафик HTTPS не будет использовать HTTP/2.",
|
||
"proxySaved": "Настройки обратного прокси сохранены.",
|
||
"originHostHint": "Если оставить пустым, запрос имени хоста $host передается по умолчанию.",
|
||
"customHeaders": "Пользовательские заголовки запросов",
|
||
"customHeadersHint": "По одному на строку в формате Ключ: Значение.",
|
||
"limits": "Ограничения трафика",
|
||
"limitsDesc": "Лимиты запросов для сайта. Пустое значение или 0 — глобальные настройки; -1 — отключено; положительное значение — собственный лимит.",
|
||
"limitsSaved": "Лимиты трафика сохранены",
|
||
"connLimit": "Предел параллелизма",
|
||
"connLimitHint": "Пусто или 0 наследует глобальное значение по умолчанию; -1 выключает его; Значение больше 0 — это пользовательское ограничение параллелизма.",
|
||
"ipLimit": "Лимит на IP",
|
||
"ipLimitHint": "Пусто или 0 наследует глобальное значение по умолчанию; -1 выключает его; Значение больше 0 — это индивидуальное ограничение на IP.",
|
||
"rateLimit": "Ограничение скорости",
|
||
"rateLimitPlaceholder": "512k/1m или -1",
|
||
"rateLimitHint": "Пусто или 0 наследует глобальное значение по умолчанию; -1 выключает его; например, 512k или 1m — это пользовательская полоса пропускания.",
|
||
"reqLimit": "Скорость запроса на IP",
|
||
"reqLimitPlaceholder": "10r/s / 100r/m или -1",
|
||
"reqLimitHint": "Пустое значение или 0 — глобальные настройки; -1 — отключено; например, 10r/s или 100r/m задаёт собственную частоту запросов.",
|
||
"cache": "Кэш",
|
||
"cacheDesc": "Настройте политику пограничного кэша сайта.",
|
||
"cacheSaved": "Настройки кэша сохранены.",
|
||
"enableCache": "Включить кэш сайта",
|
||
"enableCacheDesc": "Новые сайты должны использовать «Стандартные статические ресурсы».",
|
||
"cachePolicy": "Политика кэширования",
|
||
"policyStatic": "Стандартные статические ресурсы (рекомендуется)",
|
||
"policyAll": "Все кэшируемое GET (дополнительно)",
|
||
"policySuffix": "Пользовательский суффикс",
|
||
"policyPrefix": "Префикс пути",
|
||
"policyExact": "Точный путь",
|
||
"advancedRiskTitle": "Расширенный политический риск",
|
||
"advancedRiskDesc": "Персонализированный HTML может быть кэширован на периферии и передан другим пользователям, если источник не заявляет о приватности/отсутствии хранилища. Подробности смотрите в справке рядом с заголовком.",
|
||
"cacheRules": "Правила кэширования",
|
||
"cacheHelpTitle": "Примечания по использованию кэша",
|
||
"cacheHelpIntro": "Расширение/политика решает, можно ли кэшировать ответ. Заголовки источника и Set-Cookie решают, будет ли он сохранен. Также необходимо включить глобальный кэш OpenResty в настройках производительности.",
|
||
"cacheHelpRecommendLabel": "Рекомендуемая политика:",
|
||
"cacheHelpRecommend": "Новые сайты должны использовать «Стандартные статические ресурсы» (включая css/js/map/images/fonts/media, исключая HTML/JSON).",
|
||
"cacheHelpGeneralLabel": "Общие правила:",
|
||
"cacheHelpGeneral": "Номера, отличные от GET, не кэшируются; файлы cookie входа не пропускают кэш самостоятельно; origin Private/no-store или ответ Set-Cookie не записывается на край.",
|
||
"cacheHelpAllGetLabel": "Все кэшируемое GET:",
|
||
"cacheHelpAllGet": "Расширенный вариант, аналогичный «Кэшировать все». Персонализированные страницы должны быть объявлены источником как частные/не храниться, иначе HTML может быть кэшировано в Edge и предоставлено другим пользователям.",
|
||
"cacheHelpCustomLabel": "Пользовательские правила:",
|
||
"cacheHelpCustom": "Используйте суффиксы, такие как jpg/css/js; префиксы путей, такие как /assets; точные пути, такие как /robots.txt. После сохранения повторно опубликуйте версию конфигурации, прежде чем она вступит в силу на узлах.",
|
||
"cacheHintSuffix": "По одному суффиксу в строке, например jpg, css, js.",
|
||
"cacheHintPrefix": "Один префикс пути в каждой строке, например /assets, /static.",
|
||
"cacheHintExact": "Один точный путь в каждой строке, например /robots.txt.",
|
||
"cacheHintStatic": "Стандартные статические ресурсы используют встроенный список расширений. Никаких дополнительных правил не требуется.",
|
||
"cacheHintNone": "Текущая политика не требует дополнительных правил пути.",
|
||
"cachePlaceholderNone": "Никаких дополнительных правил для текущей политики.",
|
||
"auth": "Аутентификация",
|
||
"authDesc": "Настройте Basic Auth, чтобы ограничить доступ. Защита PoW настраивается в группе правил WAF.",
|
||
"authSaved": "Настройки аутентификации сохранены.",
|
||
"authFormInvalid": "Проверьте форму аутентификации",
|
||
"authMode": "Режим аутентификации",
|
||
"authNone": "Нет аутентификации",
|
||
"powHint": "Защиту PoW можно включить только в группе правил WAF и привязать к сайту.",
|
||
"username": "Имя пользователя",
|
||
"password": "Пароль",
|
||
"wafDesc": "Глобальные группы правил применяются всегда. Здесь вы можете добавить собственные группы правил для текущего сайта.",
|
||
"wafUpdated": "WAF группы правил обновлены",
|
||
"loadingWaf": "Загрузка групп правил WAF...",
|
||
"alwaysOn": "Всегда включен",
|
||
"selectCustomRules": "Выберите специальные правила",
|
||
"selectCustomRulesDesc": "Выбранные правила выполняются в порядке выполнения, указанном ниже.",
|
||
"selectRule": "Выберите {name}",
|
||
"ruleEnabled": "Включено",
|
||
"ruleDisabled": "Отключено",
|
||
"nodeCount": "Узлов: {count}",
|
||
"executionOrder": "Порядок выполнения",
|
||
"executionOrderDesc": "Пользовательские правила выполняются в этом порядке. Перетащите их или используйте кнопки вверх/вниз, чтобы изменить порядок.",
|
||
"noCustomWaf": "Нет пользовательских групп правил WAF.",
|
||
"dragRule": "Перетащите {name}",
|
||
"moveUpRule": "Переместить {name} вверх.",
|
||
"moveDownRule": "Переместите {name} вниз.",
|
||
"sections": {
|
||
"domains": "Настройки домена",
|
||
"domainsDesc": "Сохраняйте идентификатор сайта и выбирайте привязанные домены из зоны.",
|
||
"limits": "Ограничения трафика",
|
||
"limitsDesc": "Установите ограничения на соединения и ограничения скорости (можно наследовать глобальные значения по умолчанию).",
|
||
"proxy": "Обратный прокси",
|
||
"proxyDesc": "Настройте основной сервер-источник и дополнительные адреса.",
|
||
"cache": "Кэш",
|
||
"cacheDesc": "Настройте политику кэширования сайта.",
|
||
"waf": "WAF",
|
||
"wafDesc": "Свяжите группы правил WAF и просмотрите политики, применимые к этому сайту.",
|
||
"auth": "Аутентификация",
|
||
"authDesc": "Настройте базовую аутентификацию, чтобы посетители должны были вводить имя пользователя и пароль."
|
||
},
|
||
"validation": {
|
||
"enterDomain": "Введите домен",
|
||
"invalidDomain": "Неверный формат домена",
|
||
"enterAtLeastOneDomain": "Введите хотя бы один домен",
|
||
"invalidDomainWithValue": "Неверный формат домена: {domain}",
|
||
"duplicateDomain": "Дубликат домена: {domain}",
|
||
"enterAtLeastOneUpstream": "Укажите хотя бы один адрес сервера-источника",
|
||
"invalidUpstream": "Неверный формат адреса сервера-источника: {url}",
|
||
"upstreamMustBeHttp": "Адрес сервера-источника должен начинаться с http:// или https://: {url}",
|
||
"upstreamMissingHost": "В адресе сервера-источника не указано имя хоста: {url}",
|
||
"multiUpstreamNoPath": "При использовании нескольких серверов-источников адреса не должны содержать путь или параметры запроса.",
|
||
"multiUpstreamSameProtocol": "Все серверы-источники одного сайта должны использовать одинаковый протокол.",
|
||
"invalidOriginHost": "Неверный исходный формат хоста",
|
||
"invalidHeader": "Неверный формат заголовка пользовательского запроса: {line}",
|
||
"invalidHeaderName": "Недопустимое имя заголовка пользовательского запроса: {key}",
|
||
"invalidLimitRate": "Неверный формат ограничения скорости. Используйте 512k, 1m, число или -1, чтобы отключить его.",
|
||
"invalidLimitReq": "Неверный формат частоты запросов. Используйте 10r/s, 100r/m или -1 для отключения.",
|
||
"cacheRuleRequired": "Для текущей политики кэширования требуется хотя бы одно правило.",
|
||
"invalidCacheSuffix": "Неверный формат суффикса кэша: {rule}",
|
||
"invalidCachePath": "Неверный формат правила пути к кэшу: {rule}",
|
||
"siteNameTooLong": "Идентификатор сайта не может превышать 255 символов.",
|
||
"selectAtLeastOneDomain": "Выберите хотя бы один домен",
|
||
"selectTunnel": "Выберите туннель",
|
||
"enterTunnelTarget": "Введите внутренний адрес службы (например, 127.0.0.1:8080).",
|
||
"selectPagesProject": "Выберите проект Pages",
|
||
"enterSiteId": "Введите идентификатор сайта",
|
||
"enterIntegerOrMinusOne": "Введите -1, 0 или целое положительное число.",
|
||
"enterUsername": "Введите имя пользователя",
|
||
"enterPassword": "Введите пароль"
|
||
}
|
||
},
|
||
"responses": {
|
||
"title": "Страницы ответов",
|
||
"subtitle": "Настройте страницы ошибок сервера-источника и страницы для работы без сети.",
|
||
"loadingPermission": "Загрузка информации о разрешении...",
|
||
"loadingConfig": "Загрузка настроек страницы ответов...",
|
||
"loadingPage": "Загрузка страниц ответов...",
|
||
"loadingErrorConfig": "Загрузка настроек страницы ошибки...",
|
||
"loadingOfflineConfig": "Загрузка настроек офлайн-страницы...",
|
||
"loadFailed": "Загрузка не удалась",
|
||
"forbidden": "Недостаточное разрешение",
|
||
"forbiddenSettings": "Доступ к настройкам страницы ответов имеют только администраторы.",
|
||
"forbiddenPreviewError": "Только администраторы могут просматривать страницу ошибки.",
|
||
"forbiddenPreviewOffline": "Только администраторы могут просматривать автономную страницу.",
|
||
"forbiddenEditError": "Только администраторы могут редактировать страницу ошибки HTML.",
|
||
"forbiddenEditOffline": "Только администраторы могут редактировать автономную страницу HTML.",
|
||
"errorPage": "Страница ошибки",
|
||
"offlinePage": "Офлайн-страница",
|
||
"saveFailed": "Сохранить не удалось",
|
||
"policySaved": "Политика триггера сохранена. Опубликуйте версию, чтобы конфигурация вступила в силу.",
|
||
"triggerPolicy": "Триггерная политика",
|
||
"triggerPolicyDesc": "Настройте, когда страница исходной ошибки включена и какие коды состояния ее запускают.",
|
||
"enableErrorPage": "Показывать страницу ошибки сервера-источника",
|
||
"enableErrorPageDesc": "Если этот параметр отключен, передается исходный ответ или ответ об ошибке Nginx по умолчанию.",
|
||
"getOnly": "GET только запросы",
|
||
"getOnlyDesc": "Если этот параметр включен, пользовательская страница ошибок возвращается только для сопоставления кодов состояния ошибок по запросам GET.",
|
||
"statusCodes": "Коды состояния триггера",
|
||
"statusCodesDesc": "Поддерживает один код (например, 502) или закрытый диапазон (например, 500–599).",
|
||
"statusCodesPlaceholder": "Например 502 или 500-599, затем нажмите Enter.",
|
||
"pagePreview": "Предварительный просмотр страницы",
|
||
"preview": "Предпросмотр",
|
||
"edit": "Изменить",
|
||
"errorPagePreview": "Предпросмотр страницы ошибки сервера-источника",
|
||
"errorPreview": "Предварительный просмотр страницы ошибки",
|
||
"offlinePreview": "Предварительный просмотр страницы в автономном режиме",
|
||
"offlinePageDesc": "Если этот параметр включен, Service Worker выдается веб-сайтам HTTPS. Если домен недоступен, браузер отображает эту автономную страницу из кэша.",
|
||
"offlineSaved": "Офлайн-страница сохранена. Опубликуйте версию, чтобы конфигурация вступила в силу.",
|
||
"enableOffline": "Включить автономную страницу Service Worker",
|
||
"enableOfflineDesc": "Вступает в силу только на веб-сайтах HTTPS.",
|
||
"enableOfflineAria": "Включить автономную страницу",
|
||
"scope": "Область применения",
|
||
"scopeDesc": "Применяется только к выбранным доменам HTTPS. Если пусто, ничего не вводится.",
|
||
"addDomain": "Добавить домен",
|
||
"noScopeSelected": "Домены области действия не выбраны. После сохранения ни на один сайт ничего не внедряется.",
|
||
"enableThenSelectScope": "Включите резервный режим автономного режима перед выбором доменов области.",
|
||
"removeDomain": "Удалить {domain}",
|
||
"selectScopeTitle": "Выберите домены области действия",
|
||
"selectScopeDesc": "Внедрите резервный вариант автономного режима только для выбранных доменов HTTPS. Поиск, фильтрация и массовый выбор.",
|
||
"domain": "Домен",
|
||
"searchDomainOrZone": "Поиск домена или апекса…",
|
||
"selectedCount": "Выбрано: {count}",
|
||
"visibleCount": "Показано: {count}",
|
||
"unselectVisible": "Снять выбор с видимых доменов",
|
||
"selectVisible": "Выбрать видимый",
|
||
"clear": "Очистить",
|
||
"noAvailableDomains": "Нет доступных доменов. Сначала зарегистрируйте домены в разделе «Управление зонами».",
|
||
"noMatchingDomains": "Нет подходящих доменов",
|
||
"selectZone": "Выберите вершину {domain}",
|
||
"apex": "Апекс",
|
||
"confirm": "OK",
|
||
"backToError": "Вернуться на страницу ошибки",
|
||
"backToOffline": "Вернуться на офлайн-страницу",
|
||
"closePreview": "Закрыть предварительный просмотр",
|
||
"fullscreen": "Полноэкранный просмотр",
|
||
"htmlTooLarge": "HTML превышает ограничение размера (максимум 256 КБ)",
|
||
"errorHtmlSaved": "Страница исходной ошибки HTML сохранена. Опубликуйте версию, чтобы конфигурация вступила в силу.",
|
||
"offlineHtmlSaved": "Офлайн-страница HTML сохранена. Опубликуйте версию, чтобы конфигурация вступила в силу.",
|
||
"templateNotFound": "Выбранный шаблон не найден",
|
||
"templateLoaded": "Загрузил шаблон «{name}» в редактор.",
|
||
"errorRestored": "Снято для использования встроенного шаблона сервера по умолчанию (сохраните, чтобы применить).",
|
||
"offlineRestored": "Снято для использования встроенного шаблона по умолчанию (сохраните, чтобы применить)",
|
||
"editErrorHtml": "Изменить страницу ошибки HTML",
|
||
"editOfflineHtml": "Редактировать офлайн-страницу HTML",
|
||
"offlineLivePreview": "Предварительный просмотр оффлайн-страницы",
|
||
"builtinTemplates": "Встроенные шаблоны",
|
||
"selectTemplate": "Выберите шаблон",
|
||
"loadTemplate": "Загрузить шаблон",
|
||
"restoreDefault": "Восстановить настройки по умолчанию",
|
||
"restoreTitle": "Восстановить значение по умолчанию HTML?",
|
||
"restoreErrorDesc": "Это очищает редактор. После сохранения используется встроенный шаблон сервера по умолчанию. Это действие не сохраняется автоматически.",
|
||
"restoreOfflineDesc": "Это очищает редактор. После сохранения используется встроенный шаблон по умолчанию. Это действие не сохраняется автоматически.",
|
||
"confirmRestore": "Восстановить"
|
||
}
|
||
}
|