{ "common": { "save": "Сохранить", "cancel": "Отмена", "confirm": "Подтвердить", "delete": "Удалить", "loading": "Загрузка…", "retry": "Повторить", "optional": "(необязательно)", "settings": "Настройки", "search": "Поиск", "unknownError": "Что-то пошло не так. Пожалуйста, попробуйте еще раз.", "loadFailed": "Загрузка не удалась", "previousPage": "Предыдущая страница", "nextPage": "Следующая страница" }, "contexts": { "adminUsers": { "userStatusChanged": "Пользователь {username}: {action}", "enabled": "доступ разрешён", "disabled": "доступ заблокирован", "updateStatusFailed": "Не удалось обновить статус", "userCreated": "Пользователь {username} успешно создан.", "createUserFailed": "Не удалось создать пользователя", "userDeleted": "Пользователь {username} удален.", "deleteUserFailed": "Не удалось удалить пользователя", "updateUserSuccess": "Информация о пользователе обновлена", "updateUserFailed": "Не удалось обновить информацию о пользователе." }, "admin": { "loadConfigFailed": "Не удалось загрузить конфигурацию системы.", "updateConfigFailed": "Не удалось обновить конфигурацию системы." }, "user": { "getUserInfoFailed": "Не удалось получить информацию о пользователе.", "logoutFailed": "Выход из системы не выполнен" } }, "docs": { "backToHome": "На главную", "sectionCount": "Разделов: {count}", "lastUpdated": "Последнее обновление", "copied": "Скопировано", "copyMarkdown": "Копировать Markdown", "toc": "Оглавление", "haveQuestions": "Есть вопросы?", "contactSupport": "Связаться со службой поддержки", "api": { "title": "API документация", "description": "Полный справочник по серверной части платформы Wavelet API, охватывающий аутентификацию, пользователей, токены и управление конфигурацией.", "field": "Поле", "type": "Тип", "descriptionLabel": "Описание", "endpoint": "Конечная точка", "desc": "Описание", "param": "Параметр", "required": "Требуется", "yes": "Да", "no": "Нет", "username": "Имя пользователя", "password": "Пароль", "optional": "Необязательно", "default": "По умолчанию", "section1": { "title": "Общие соглашения", "desc": "Все ответы API имеют единый формат конверта.", "responseFormat": "Формат ответа", "responseFormatDesc": "Все конечные точки возвращают следующую структуру JSON:", "errorMsgDesc": "Пустая строка в случае успеха, удобочитаемое сообщение об ошибке в случае неудачи.", "dataDesc": "Бизнес-данные; структура зависит от конечной точки", "successExample": "Пример успешного ответа", "failExample": "Пример ответа на отказ", "failExampleErrorMsg": "Сообщение об ошибке", "authentication": "Аутентификация", "authenticationDesc": "Система поддерживает два метода аутентификации. Для всех защищенных конечных точек требуется один из них:", "sessionCredential": "Учетные данные сеанса", "sessionCredentialDesc": "Возвращается через Set-Cookie после входа в систему. Браузеры переносят его автоматически.", "accessTokenCredential": "Учетные данные AccessToken", "accessTokenCredentialDesc": "Передаётся в заголовке запроса. Подходит для вызовов API и сторонних интеграций:", "supportedHeaders": "Поддерживаемые заголовки" }, "section2": { "title": "Конечные точки аутентификации", "register": "Зарегистрироваться", "registerDesc": "Создайте новую учетную запись пользователя и войдите в систему автоматически.", "usernameDesc": "Имя пользователя, уникальное, минимум 3 символа", "passwordDesc": "Пароль, не менее 8 символов", "nicknameDesc": "Псевдоним (необязательно)", "passwordLogin": "Пароль для входа", "passwordLoginDesc": "Войдите в систему, используя адрес электронной почты/имя пользователя + пароль. Устанавливает cookie в случае успеха.", "logout": "Выход из системы", "logoutDesc": "Уничтожить текущий сеанс.", "getProfile": "Получить текущую информацию о пользователе", "getProfileDesc": "Возвращает полный профиль пользователя, вошедшего в систему." }, "section3": { "title": "Управление токенами доступа", "desc": "Управляйте личными токенами доступа API (AccessToken) для использования API без использования браузера.", "listTokens": "Список токенов", "listTokensDesc": "Получите все токены активного доступа для текущего пользователя.", "createToken": "Создать токен", "tokenName": "Имя токена", "createTokenDesc": "Создайте новый токен доступа. Возвращает секрет один раз.", "isAdminDesc": "Предоставлять ли права администратора (по умолчанию false)", "endpoint": "Конечная точка", "successResponseExample": "Пример успешного ответа", "deleteToken": "Удалить токен", "deleteTokenDesc": "Отозвать указанный токен доступа.", "rotateToken": "Заменить секрет токена", "rotateTokenDesc": "Создайте новый секрет для указанного токена. Старый секрет немедленно аннулируется." }, "section4": { "title": "Управление конфигурацией системы", "publicConfig": "Получить общедоступную конфигурацию", "publicConfigDesc": "Возвращает все элементы конфигурации системы, помеченные как общедоступные. Никакой аутентификации не требуется.", "responseExample": "Пример ответа", "adminConfigs": "Конечные точки конфигурации администратора", "adminConfigsDesc": "Следующие конечные точки требуют разрешений администратора.", "getConfigList": "Получить список конфигурации", "createConfig": "Создать конфигурацию", "updateConfig": "Обновить конфигурацию", "deleteConfig": "Удалить конфигурацию" } }, "howToUse": { "title": "Руководство пользователя", "description": "Краткое руководство по работе с платформой Wavelet, охватывающее аутентификацию, токены, конфигурацию, задачи и возможность наблюдения.", "section1": { "title": "Обзор архитектуры системы", "desc": "Платформа Wavelet использует архитектуру, разделенную на Go + Next.js.", "architecture": "Технический стек", "architectureDesc": "Go 1.25+ / Gin / GORM / PostgreSQL / Redis / Asynq", "authSystem": "Система аутентификации", "authSystemDesc": "Поддерживает вход по паролю + стороннюю аутентификацию OIDC", "accessToken": "Токены доступа", "accessTokenDesc": "Личные токены доступа для вызовов API", "observability": "Наблюдаемость", "observabilityDesc": "OpenTelemetry + структурированное журналирование" }, "section2": { "title": "Аутентификация и регистрация", "desc": "Система поддерживает несколько методов аутентификации, настраиваемых через панель администратора.", "passwordAuth": "Аутентификация по паролю", "selfRegister": "Самостоятельная регистрация", "selfRegisterDesc": "Пользователи могут создавать учетные записи через страницу регистрации.", "bcryptDesc": "Пароли хранятся с использованием шифрования bcrypt.", "switchControl": "Переключить элементы управления", "switchControlDesc": "Администраторы могут самостоятельно контролировать:", "oidc": "OIDC сторонний вход", "oidcDesc": "Поддерживает настройку любого источника аутентификации, совместимого с OIDC- (например, Google, GitHub, Enterprise SSO).", "oidcStep1": "Добавьте источник аутентификации в «Настройки системы → Безопасность»", "oidcStep2": "Введите Discovery URL, Client ID, Секрет клиента.", "oidcStep3": "После включения на странице входа появится соответствующая кнопка." }, "section3": { "title": "Токены доступа (AccessToken)", "desc": "Используется для вызовов API без использования браузера.", "generation": "Генерация и управление", "oneTimeDisplay": "Одноразовый показ", "oneTimeDisplayDesc": "Секрет отображается только один раз при создании токена.", "oneTimeDisplayHint": "Скопируйте и сохраните его сразу после создания.", "secureHash": "Безопасное хранение", "secureHashDesc": "Система хранит только хеш токена SHA-256. Исходный секрет не может быть восстановлен.", "headerUsage": "Использование", "headerUsageDesc": "Включите токен в заголовок запроса:", "bearerHeader": "Метод токена на предъявителя", "customHeader": "Пользовательский метод заголовка" }, "section4": { "title": "Конфигурация системы", "desc": "Динамически управляйте конфигурацией системы через панель администратора или API.", "cacheAccel": "Ускорение кэша", "cacheAccelDesc": "Общедоступные элементы конфигурации поддерживают многоуровневое кэширование (память → Redis → база данных), хорошо работая в сценариях с высокой частотой чтения.", "coreConfigs": "Основные элементы конфигурации", "siteName": "Название сайта", "passwordLoginEnabled": "Переключение входа в систему с паролем", "registrationEnabled": "Переключение регистрации", "maxApiKeys": "Максимум ключей API" }, "section5": { "title": "Асинхронные задачи", "desc": "Распределенная система очередей задач на основе Asynq.", "scheduler": "Планировщик", "schedulerDesc": "Поддерживает настройку выражений Cron для запланированных задач.", "worker": "Рабочий", "workerDesc": "Фоновые рабочие процессы потребляют и выполняют задачи." }, "section6": { "title": "Наблюдаемость", "desc": "Встроенная поддержка OpenTelemetry.", "tracing": "Распределенная трассировка", "tracingDesc": "Поддерживает экспорт данных трассировки в Jaeger, Zipkin и другие серверы.", "structuredLog": "Структурированное журналирование", "structuredLogDesc": "Высокопроизводительное структурированное ведение журналов на основе Zap с выводом на основе уровней." } }, "terms": { "title": "Условия обслуживания", "description": "Перед использованием платформы Wavelet внимательно прочтите следующие условия обслуживания.", "section1": { "title": "Общие положения", "subject": "Стороны соглашения", "subjectDesc": "Настоящее соглашение заключается между вами и оператором платформы Wavelet в отношении использования услуг платформы.", "readCarefully": "Пожалуйста, прочитайте внимательно", "readCarefullyDesc": "Пожалуйста, прочтите все содержание настоящего соглашения перед использованием услуги. Если вы не согласны с какими-либо условиями, пожалуйста, не используйте платформу.", "composition": "Состав договора", "compositionDesc": "Настоящее соглашение включает в себя текст соглашения и все правила, которые платформа опубликовала или может опубликовать в будущем. Все правила являются неотъемлемой частью настоящего соглашения и имеют ту же юридическую силу, что и текст соглашения." }, "section2": { "title": "Содержание услуги", "liability": "Объем ответственности", "liabilityDesc": "Эта платформа предоставляет только техническую инфраструктуру и услуги инструментов разработки. Пользователи несут всю ответственность, вытекающую из использования ими платформы." }, "section3": { "title": "Учетные записи пользователей", "accountSystem": "Система аккаунтов", "accountSystemDesc": "После регистрации и получения учетной записи на этой платформе пользователи должны правильно хранить свою учетную запись и пароль. Пользователи несут ответственность за все действия под своей учетной записью.", "securityResponsibility": "Ответственность за безопасность", "passwordSecurity": "Безопасность пароля", "passwordSecurityDesc": "Пользователи должны использовать достаточно надежные пароли и регулярно их менять. Убытки, вызванные неправильным хранением пароля, являются ответственностью пользователя.", "tokenSecurity": "Безопасность токена", "tokenSecurityDesc": "Токены доступа (AccessToken) эквивалентны учетным данным учетной записи и должны быть надлежащим образом защищены.", "tokenLeakLiability": "Любые убытки, вызванные утечкой токенов, являются ответственностью пользователя." }, "section4": { "title": "Правила использования", "desc": "Пользователи должны соблюдать следующие правила при использовании сервисов платформы:", "redLine": "Запрещенные действия", "nationalSecurity": "Угроза национальной безопасности", "nationalSecurityDesc": "Запрещается использовать сервисы платформы для производства, копирования или публикации информации, которая ставит под угрозу национальную безопасность.", "illegalInfo": "Незаконная информация", "illegalInfoDesc": "Запрещается производить, копировать или публиковать информацию, которая нарушает национальные законы и правила.", "harmfulContent": "Вредный контент", "harmfulContentDesc": "Запрещается публиковать информацию, содержащую преследования, оскорбления, запугивания или другой вредный контент.", "ipInfringement": "Нарушение интеллектуальной собственности", "ipInfringementDesc": "Не следует нарушать интеллектуальную собственность, коммерческую тайну или другие законные права других лиц.", "otherIllegal": "Другие незаконные действия", "otherIllegalDesc": "Запрещается использовать услуги платформы для совершения других действий, нарушающих законы и правила.", "enforcement": "Правоприменение", "enforcementDesc": "Если пользователи нарушают вышеуказанные правила, платформа оставляет за собой право предпринять следующие действия:", "enforcementAction": "Предупреждение, приостановка или прекращение обслуживания" }, "section5": { "title": "Отказ от ответственности", "basicDisclaimer": "Основной отказ от ответственности", "basicDisclaimerDesc": "Платформа приложит все усилия для обеспечения безопасности и стабильности сервиса, но не несет ответственности за следующие ситуации:", "techInterruption": "Технический перерыв", "techInterruptionDesc": "Прерывание обслуживания или потеря данных, вызванная:", "naturalDisaster": "Стихийные бедствия и другие форс-мажорные обстоятельства", "govAction": "Действия правительства или законодательные изменения", "telecomFailure": "Сбои оператора связи", "hacking": "Хакерские атаки или компьютерные вирусы" }, "section6": { "title": "Применимое право и разрешение споров", "applicableLaw": "Применимое право", "applicableLawDesc": "Заключение, исполнение и толкование настоящего соглашения регулируются:", "lawName": "Законы Китайской Народной Республики", "lawScope": "Исключение коллизионных норм", "disputeResolution": "Разрешение споров", "disputeResolutionDesc": "Любой спор, возникающий из настоящего соглашения или связанный с ним, разрешается путем дружественных переговоров. Если переговоры не увенчались успехом, любая из сторон может подать иск в суд компетентной юрисдикции." } }, "privacy": { "title": "Политика конфиденциальности", "description": "Платформа Wavelet ценит конфиденциальность пользователей. Эта политика объясняет, как мы собираем, используем и защищаем вашу личную информацию.", "descriptionRights": "Пожалуйста, внимательно прочтите эту политику перед использованием наших услуг.", "section1": { "title": "Сбор информации", "desc": "Мы собираем следующие типы информации:", "authInfo": "Информация аутентификации", "authInfoDesc": "Включая имя пользователя, адрес электронной почты и зашифрованный хеш пароля.", "authInfoNote": "Мы не храним ваш пароль в виде открытого текста.", "logInfo": "Журнал запросов", "logInfoDesc": "Включая адрес IP, тип браузера, время доступа и путь запроса." }, "section2": { "title": "Использование информации", "desc": "Информация, которую мы собираем, используется для следующих целей:", "storageSecurity": "Безопасность хранения", "storageSecurityDesc": "Все пользовательские данные зашифрованы и хранятся в защищенных серверных средах.", "encryption": "Меры шифрования", "encryptionDesc": "Пароли используют одностороннее хэш-шифрование bcrypt. Токены используют хеш-хранилище SHA-256.", "accessControl": "Контроль доступа", "accessControlDesc": "Строгое управление разрешениями гарантирует, что только авторизованный персонал сможет получить доступ к пользовательским данным." }, "section3": { "title": "Цель использования информации", "desc": "Информация, которую мы собираем, используется для следующих целей:", "identity": "Проверка личности", "identityDesc": "Подтвердите личность пользователя и обеспечьте безопасность учетной записи.", "business": "Деловые операции", "businessDesc": "Предоставлять, поддерживать и улучшать наши услуги.", "riskControl": "Контроль рисков", "riskControlDesc": "Обнаруживайте, предотвращайте и устраняйте риски безопасности и мошеннические действия.", "prohibited": "Запрещенное использование", "prohibitedDesc": "Мы обязуемся не использовать информацию пользователя для: продажи третьим лицам, рассылки нежелательных коммерческих предложений." }, "section4": { "title": "Обмен и раскрытие информации", "sharingPrinciple": "Принцип обмена", "sharingPrincipleDesc": "Мы не передаем личную информацию третьим лицам без согласия пользователя, за исключением следующих ситуаций:", "sharingException1": "Требуется законами, постановлениями или государственными органами посредством юридических процедур.", "sharingException2": "Необходимо для защиты законных прав платформы или общественности.", "transfer": "Передача информации", "transferDesc": "В случае слияния, поглощения или аналогичной сделки мы потребуем от нового владельца продолжать соблюдать данную политику." }, "section5": { "title": "Права пользователя", "desc": "Пользователи имеют следующие права в отношении своей личной информации:", "viewManage": "Просмотр и управление", "viewManageDesc": "Пользователи могут просматривать и изменять свою личную информацию в любое время в своих настройках.", "deleteAccount": "Удаление аккаунта", "deleteAccountDesc": "Пользователи могут запросить удаление своей учетной записи и всех связанных с ней личных данных." }, "section6": { "title": "Обновления политики", "desc": "Мы можем время от времени обновлять данную политику конфиденциальности. После обновлений мы опубликуем уведомление на платформе.", "notification": "О существенных изменениях будет сообщено через уведомление в приложении или по электронной почте." } } }, "files": { "uploadSuccess": "Файл успешно загружен", "uploadFailed": "Загрузка не удалась", "deleteSuccess": "Файл успешно удален", "deleteFailed": "Удаление не удалось", "searchPlaceholder": "Поиск по имени файла...", "private": "Приватный", "public": "Публичный", "uploading": "Загрузка...", "uploadFile": "Загрузить файл", "noFiles": "Файлы еще не загружены", "noMatchingFiles": "Соответствующие файлы не найдены", "uploadFirstFile": "Загрузите свой первый файл. Поддерживает изображения, видео, документы и архивы.", "selectFileUpload": "Выберите файл для загрузки", "downloadFile": "Скачать файл", "deleteFile": "Удалить файл", "prevPage": "Назад", "nextPage": "Далее", "confirmDeleteFile": "Подтвердить удаление файла", "confirmDeleteFileDesc": "Удалить файл «{name}»? Этот файл невозможно восстановить после удаления.", "cancel": "Отмена", "confirmDelete": "Подтвердить удаление", "myFiles": "Мои файлы" }, "general": { "manage": { "saveSuccess": "Сохранено", "saveFailed": "Сохранить не удалось", "unknownError": "Неизвестная ошибка", "deleteSuccess": "Удалено", "deleteFailed": "Удаление не удалось", "loading": "Загрузка", "noData": "Нет данных", "configList": "Список конфигурации", "confirmDelete": "Подтвердить удаление?", "confirmDeleteDesc": "Это невозможно отменить. Это приведет к безвозвратному удалению конфигурации.", "cancel": "Отмена", "confirmDeleteAction": "Подтвердить удаление", "configInfo": "Информация о конфигурации", "selectConfigToView": "Выберите конфигурацию, чтобы просмотреть подробности", "updating": "Обновление", "update": "Обновить", "actions": "Действия" }, "passwordDialog": { "enterPassword": "Введите пароль", "enterPasswordDesc": "Для безопасности вашей учетной записи введите 6-значный пароль подтверждения.", "cancel": "Отмена", "verifying": "Проверка...", "confirm": "Подтвердить" } }, "home": { "banner": { "description": "Универсальная вторичная платформа разработки со встроенными функциями управления пользователями, аутентификацией, хранилищем файлов, планированием задач, push-уведомлениями и возможностями наблюдения, которые помогают разработчикам быстро начинать новые проекты.", "getStarted": "Начать", "hideHint": "Закрыть" }, "navigation": { "title": "Навигация" }, "quickLinks": { "profile": { "title": "Профиль", "description": "Просмотр и редактирование информации вашей учетной записи" }, "apiDocs": { "title": "API документы", "description": "Полная ссылка API" }, "userDocs": { "title": "Руководство пользователя", "description": "Краткое руководство" } }, "adminLinks": { "settings": { "title": "Системные настройки", "description": "Настройка безопасности, операций и внешнего вида" }, "systemConfig": { "title": "Параметры системы", "description": "Управление элементами конфигурации системы «ключ-значение»" }, "userManagement": { "title": "Управление пользователями", "description": "Просмотр и управление всеми зарегистрированными пользователями" }, "tasks": { "title": "Задачи", "description": "Очередь асинхронных задач и планирование запланированных задач" }, "logs": { "title": "Системные журналы", "description": "Журналы доступа пользователей и журналы выполнения приложений" } }, "jumpNow": "Перейти", "enterNow": "Войдите сейчас", "adminConsole": "Консоль администратора", "developerSection": { "heading": "Удобен для разработчиков", "description": "Встроенные полные документы RESTful API, Swagger UI и TypeScript SDK примеры для быстрой интеграции.", "features": { "restful": "Полный RESTful API", "swagger": "Онлайн Swagger документы", "typescript": "TypeScript SDK примеры", "examples": "Богатые примеры использования" }, "apiDocs": "Посмотреть документы API", "codeComment": "// Быстрый старт — пример вызова API", "codeQuickStart": "Быстрый старт" }, "hero": { "subtitle": "Встроенная аутентификация пользователей, хранилище файлов, планирование задач,", "subtitleLine2": "push-уведомления и возможность наблюдения, которые помогут вам быстро запустить следующий проект.", "getStarted": "Начать", "learnMore": "Узнать больше", "features": { "readyToUse": "Готов к использованию", "highlyExtensible": "Высокая расширяемость", "industrialGrade": "Промышленный класс" } }, "footer": { "description": "Универсальная платформа для вторичной разработки.", "product": "Продукт", "dashboard": "Обзор", "personalSettings": "Персональные настройки", "development": "Развитие", "quickStart": "Быстрый старт", "apiDocs": "API документы", "sourceCode": "Исходный код", "community": "Сообщество", "discussions": "Обсуждения", "privacyPolicy": "Политика конфиденциальности", "termsOfService": "Условия обслуживания" } }, "metadata": { "title": "OpenFlare", "description": "OpenFlare — управление пограничными узлами и обратным прокси" }, "notFound": { "description": "Извините, страница, которую вы ищете, кажется затерянной в цифровой туманности. Пожалуйста, проверьте путь или вернитесь в безопасное место.", "previousPage": "Предыдущая страница", "home": "Главная" }, "providers": { "titleUpdater": { "login": "Войти", "register": "Зарегистрироваться", "admin": "Админ", "dashboard": "Обзор" } } }