diff --git a/public/locales/ru-RU/translations.json b/public/locales/ru-RU/translations.json index 45c64bdd..67cd235e 100644 --- a/public/locales/ru-RU/translations.json +++ b/public/locales/ru-RU/translations.json @@ -56,68 +56,68 @@ "scripts": "Управление скриптами", "system_config": "Настройки системы", "users": "Управление пользователями", - "similarity": "Similarity Detection", - "ai_review": "AI Review", - "ai_review_records": "Review Records", - "ai_review_fullscan": "Full Scan", - "announcements": "Announcements", - "script_audits": "Script Audit", - "reports": "Report management" + "similarity": "Обнаружение схожести", + "ai_review": "ИИ-проверка", + "ai_review_records": "Записи проверок", + "ai_review_fullscan": "Полное сканирование", + "announcements": "Объявления", + "script_audits": "Аудит скриптов", + "reports": "Управление жалобами" }, "advertise": { "title": "Управление рекламой", - "action_create": "New Ad", - "create_title": "New Ad", - "edit_title": "Edit Ad", - "col_slot": "Slot", - "col_type": "Type", - "col_title": "Ad / Title", - "col_enabled": "Status", - "col_stats": "Impressions/Clicks (CTR)", - "col_actions": "Actions", - "col_ad_unit_value": "Unit {id}", - "action_edit": "Edit", - "action_delete": "Delete", - "delete_confirm": "Confirm delete this ad?", - "delete_success": "Deleted successfully", - "create_success": "Created successfully", - "update_success": "Updated successfully", - "upload_success": "Uploaded successfully", - "light_required": "Please upload a light-mode image", - "enabled": "Enabled", - "disabled": "Disabled", - "type_image": "Image", + "action_create": "Новое объявление", + "create_title": "Новое объявление", + "edit_title": "Редактировать объявление", + "col_slot": "Слот", + "col_type": "Тип", + "col_title": "Заголовок", + "col_enabled": "Статус", + "col_stats": "Показы/клики (CTR)", + "col_actions": "Действия", + "col_ad_unit_value": "Блок {id}", + "action_edit": "Редактировать", + "action_delete": "Удалить", + "delete_confirm": "Удалить это рекламное объявление?", + "delete_success": "Успешно удалено", + "create_success": "Успешно создано", + "update_success": "Успешно обновлено", + "upload_success": "Успешно загружено", + "light_required": "Загрузите изображение для светлой темы", + "enabled": "Включено", + "disabled": "Отключено", + "type_image": "Изображение", "type_adsense": "AdSense", "stats_adsense_placeholder": "—", - "stats_adsense_note": "Impressions / clicks are tracked by Google", + "stats_adsense_note": "Показы и клики отслеживаются Google", "stats_multi_slot_note": "Суммарно по {count} блокам", - "field_type": "Ad Type", - "field_slot": "Ad Slot", - "field_title": "Title", - "field_remark_title": "Remark title", - "field_remark_title_placeholder": "Admin-only, for your own reference", - "field_ad_unit_id": "Ad unit ID", - "field_ad_unit_id_placeholder": "data-ad-slot, e.g. 1234567890", - "field_ad_unit_id_hint": "The data-ad-slot value from the ad unit code in your AdSense account.", - "adsense_stats_note": "AdSense impressions and clicks are tracked by Google; the site's own stats always show 0 for this entry. Check revenue in your AdSense account.", - "field_languages": "Target languages (leave empty = all)", - "field_light": "Light-mode image", - "field_dark": "Dark-mode image (optional)", - "field_link": "Destination URL", - "field_weight": "Weight", - "field_range": "Schedule", - "preset_week": "1 week", - "preset_month": "1 month", - "preset_quarter": "1 quarter", - "field_enabled": "Enabled", - "upload": "Upload image", - "image_url_placeholder": "Enter or paste an image URL, or click to upload", + "field_type": "Тип рекламы", + "field_slot": "Рекламный слот", + "field_title": "Заголовок", + "field_remark_title": "Примечание / Название", + "field_remark_title_placeholder": "Только для администратора, для удобства", + "field_ad_unit_id": "ID рекламного блока", + "field_ad_unit_id_placeholder": "data-ad-slot, например 1234567890", + "field_ad_unit_id_hint": "Значение data-ad-slot из кода рекламного блока в вашем аккаунте AdSense.", + "adsense_stats_note": "Показы и клики AdSense отслеживаются Google; внутренняя статистика сайта для этой записи всегда равна 0. Доход можно посмотреть в панели управления AdSense.", + "field_languages": "Целевые языки (пусто = все)", + "field_light": "Изображение для светлой темы", + "field_dark": "Изображение для тёмной темы (необязательно)", + "field_link": "URL перехода", + "field_weight": "Вес", + "field_range": "Период показа", + "preset_week": "1 неделя", + "preset_month": "1 месяц", + "preset_quarter": "1 квартал", + "field_enabled": "Включено", + "upload": "Загрузить изображение", + "image_url_placeholder": "Введите или вставьте URL изображения либо нажмите для загрузки", "recommended_size": "Рекомендуемый размер {size}", - "publisher_id_hint": "AdSense-type ads won't serve until the publisher id is set.", + "publisher_id_hint": "Пока ID издателя AdSense не указан, объявления AdSense показываться не будут.", "publisher_id_placeholder": "ca-pub-…", - "publisher_id_save": "Save", - "publisher_id_save_success": "Saved successfully", - "publisher_id_warning": "The AdSense publisher id isn't set yet — {count} AdSense ad(s) won't serve.", + "publisher_id_save": "Сохранить", + "publisher_id_save_success": "Успешно сохранено", + "publisher_id_warning": "ID издателя AdSense ещё не указан — {count} объявлений AdSense не будут показываться.", "col_weight": "Вес", "col_schedule": "Расписание", "schedule_forever": "Постоянно", @@ -148,11 +148,11 @@ }, "search-rail-left": { "name": "Левая колонка поиска", - "position": "Режим просмотра поиска, левое поле области контента; при наличии рекламы контент сужается, при нехватке места не показывается" + "position": "Режим просмотра поиска, левое поле центрального блока; только при ширине ≥1650px" }, "search-rail-right": { "name": "Правая колонка поиска", - "position": "Режим просмотра поиска, правое поле области контента; при наличии рекламы контент сужается, при нехватке места не показывается" + "position": "Режим просмотра поиска, правое поле центрального блока; только при ширине ≥1650px" }, "search-sidebar": { "name": "Боковая панель поиска", @@ -201,56 +201,56 @@ } }, "ai_review": { - "menu_title": "AI Review", - "menu_records": "Review Records", - "menu_fullscan": "Full Scan", - "title": "AI Review Records", - "filter_status": "Status", - "view_detail": "Detail", + "menu_title": "ИИ-проверка", + "menu_records": "Записи проверок", + "menu_fullscan": "Полное сканирование", + "title": "Записи ИИ-проверки", + "filter_status": "Статус", + "view_detail": "Подробнее", "col_id": "ID", - "col_script": "Script", - "col_status": "Status", - "col_model": "Model", - "col_tokens": "Tokens", - "col_latency": "Latency", - "col_reason": "Reason", - "col_time": "Time", - "col_action": "Action", - "status_0": "Processing", - "status_1": "Passed", - "status_2": "AI Rejected", - "status_3": "AI Uncertain", - "status_4": "Failed (Human Review)", - "status_5": "Skipped", - "tags_title": "Tags", - "risk_signals_title": "Risk Signals", - "noisy_lines_title": "Noisy Lines", - "detail_audit_id": "Linked Human Review ID", - "detail_last_error": "Last Error", - "detail_load_failed": "Failed to load detail", - "evidence_line": "Evidence line: {line}", - "evidence_line_none": "No evidence line", + "col_script": "Скрипт", + "col_status": "Статус", + "col_model": "Модель", + "col_tokens": "Токены", + "col_latency": "Задержка", + "col_reason": "Причина", + "col_time": "Время", + "col_action": "Действие", + "status_0": "Обработка", + "status_1": "Пройдено", + "status_2": "Отклонено ИИ", + "status_3": "ИИ не уверен", + "status_4": "Ошибка (ручная проверка)", + "status_5": "Пропущено", + "tags_title": "Теги", + "risk_signals_title": "Сигналы риска", + "noisy_lines_title": "Шумные строки", + "detail_audit_id": "ID связанной ручной проверки", + "detail_last_error": "Последняя ошибка", + "detail_load_failed": "Не удалось загрузить детали", + "evidence_line": "Строка доказательства: {line}", + "evidence_line_none": "Нет строки доказательства", "fullscan": { - "title": "Full-site AI Rescan", - "running": "Running", - "yes": "Yes", - "no": "No", - "processed": "Processed", - "last_id": "Last cursor", - "scope": "Scan scope", - "scope_all": "All scripts", - "scope_value": "Start ID: {start}, End ID: {end}, Limit: {limit}", - "start_id": "Start script ID", - "end_id": "End script ID", - "limit": "Max scripts", - "started_at": "Started at", - "recent_errs": "Recent errors", - "only_missing": "Only scripts without terminal records", - "reset_cursor": "Reset cursor", - "trigger": "Start", - "cancel": "Cancel", - "triggered": "Triggered", - "cancelled": "Cancel signal sent" + "title": "Полное ИИ-пересканирование сайта", + "running": "Выполняется", + "yes": "Да", + "no": "Нет", + "processed": "Обработано", + "last_id": "Последний курсор", + "scope": "Область сканирования", + "scope_all": "Все скрипты", + "scope_value": "Начальный ID: {start}, конечный ID: {end}, лимит: {limit}", + "start_id": "Начальный ID скрипта", + "end_id": "Конечный ID скрипта", + "limit": "Макс. скриптов", + "started_at": "Начато", + "recent_errs": "Недавние ошибки", + "only_missing": "Только скрипты без финальных записей", + "reset_cursor": "Сбросить курсор", + "trigger": "Запустить", + "cancel": "Отмена", + "triggered": "Запущено", + "cancelled": "Сигнал отмены отправлен" } }, "no_permission": "У вас нет прав администратора для доступа к этой странице.", @@ -276,9 +276,9 @@ "field_redirect_uri_invalid": "Каждая строка должна быть допустимым URL", "field_redirect_uri_required": "Введите URI перенаправления", "field_status": "Статус", - "reset_secret": "Reset Secret", - "reset_secret_confirm": "Are you sure you want to reset the Client Secret? The old secret will be invalidated immediately.", - "reset_secret_success": "Secret reset successfully", + "reset_secret": "Сбросить секрет", + "reset_secret_confirm": "Сбросить Client Secret? Старый секрет сразу станет недействительным.", + "reset_secret_success": "Секрет успешно сброшен", "save_button": "Сохранить", "secret_confirm": "Я сохранил", "secret_title": "Учётные данные приложения", @@ -296,14 +296,14 @@ "col_issuer_url": "URL издателя", "col_name": "Название", "col_status": "Статус", - "col_type": "Type", + "col_type": "Тип", "create_button": "Создать провайдер", "create_success": "Успешно создано", "create_title": "Создать OIDC-провайдер", "delete_confirm": "Вы уверены, что хотите удалить этот провайдер?", "delete_success": "Успешно удалено", "edit_title": "Редактировать OIDC-провайдер", - "field_auth_url": "Auth URL", + "field_auth_url": "URL авторизации", "field_auth_url_required": "Please enter the auth URL", "field_client_id": "ID клиента", "field_client_id_required": "Введите ID клиента", @@ -319,10 +319,10 @@ "field_name_required": "Введите название провайдера", "field_scopes": "Области доступа", "field_status": "Статус", - "field_token_url": "Token URL", + "field_token_url": "URL токена", "field_token_url_required": "Please enter the token URL", - "field_type": "Type", - "field_url_invalid": "Please enter a valid URL", + "field_type": "Тип", + "field_url_invalid": "Введите корректный URL", "field_userinfo_url": "Userinfo URL", "field_userinfo_url_required": "Please enter the userinfo URL", "save_button": "Сохранить", @@ -332,12 +332,12 @@ "type_oauth2": "OAuth2 (GitHub)", "type_oidc": "OIDC", "update_success": "Успешно обновлено", - "col_icon": "Icon", - "discover_button": "Auto Discover", - "discover_failed": "OIDC discovery failed. Please check the URL.", - "discover_success": "OIDC configuration discovered successfully", - "icon_upload": "Upload Icon", - "icon_upload_success": "Icon uploaded successfully" + "col_icon": "Иконка", + "discover_button": "Автообнаружение", + "discover_failed": "Не удалось обнаружить OIDC. Проверьте URL.", + "discover_success": "Конфигурация OIDC успешно обнаружена", + "icon_upload": "Загрузить иконку", + "icon_upload_success": "Иконка успешно загружена" }, "scores": { "action_delete": "Удалить", @@ -384,7 +384,7 @@ "col_name": "Название скрипта", "col_score_multiplier": "Множитель оценки", "col_status": "Статус", - "col_trending_score": "Trend Score", + "col_trending_score": "Оценка тренда", "col_type": "Тип", "col_visibility": "Видимость", "ai_review_confirm": "Отправить задачу AI-проверки для последней версии этого скрипта?", @@ -404,11 +404,11 @@ "status_active": "Активный", "status_deleted": "Удалён", "title": "Управление скриптами", - "trending_score_hint": "Manual changes only affect the current trending_score; the next automatic or manual full recompute will overwrite this value.", - "trending_score_invalid": "Enter a valid trending_score", + "trending_score_hint": "Ручные изменения влияют только на текущий trending_score; следующий автоматический или ручной полный пересчёт перезапишет это значение.", + "trending_score_invalid": "Введите корректный trending_score", "trending_score_label": "trending_score", - "trending_score_success": "trending_score updated successfully", - "trending_score_title": "Edit trending_score", + "trending_score_success": "trending_score успешно обновлён", + "trending_score_title": "Изменить trending_score", "type_library": "Библиотека", "type_subscribe": "Подписка", "type_userscript": "Пользовательский скрипт", @@ -416,11 +416,11 @@ "unwell_yes": "Неприемлемый", "visibility_success": "Видимость успешно обновлена", "visibility_title": "Изменить видимость скрипта", - "delete_reason": "Reason (optional)", - "delete_reason_placeholder": "Record the reason for this deletion (saved with the audit log)", - "search_field_content": "Content", - "search_field_description": "Description", - "search_field_name": "Name" + "delete_reason": "Причина (необязательно)", + "delete_reason_placeholder": "Запишите причину удаления (сохраняется в журнале аудита)", + "search_field_content": "Содержимое", + "search_field_description": "Описание", + "search_field_name": "Название" }, "system_config": { "ai_api_key": "API-ключ", @@ -429,7 +429,7 @@ "ai_system_prompt": "Системный промпт", "ai_title": "Настройка ИИ", "github_title": "Настройки GitHub", - "github_pat": "GitHub Personal Access Token", + "github_pat": "Personal Access Token GitHub", "github_pat_hint": "Используется для аутентификации синхронизации скриптов с GitHub и повышения лимита запросов. Используйте fine-grained PAT с минимальными правами.", "save_button": "Сохранить", "save_success": "Успешно сохранено", @@ -446,17 +446,17 @@ "es_index_button": "Перестроить индекс ES", "es_index_confirm": "Начать перестройку поискового индекса ES? Для больших баз это может занять время.", "es_index_started": "Перестройка поискового индекса ES запущена", - "migrate_avatar_title": "Avatar Migration", - "migrate_avatar_button": "Start Migration", - "migrate_avatar_confirm": "Are you sure you want to start avatar migration? This will download user avatars from UCenter and save them locally.", - "migrate_avatar_started": "Avatar migration started", - "migrate_avatar_progress": "Migrated: {migrated} / Skipped: {skipped} / Failed: {failed} / Total: {total}", - "ranking_title": "Ranking Recompute", - "recompute_trending_hint": "The daily pick (trending_score) is recomputed automatically every day at 03:10. After changing ranking parameters, trigger a full recompute here to see the effect immediately.", - "recompute_trending_button": "Recompute trending_score", - "recompute_trending_confirm": "Recompute trending_score for all scripts now? Large databases may take a few seconds to tens of seconds.", - "recompute_trending_started": "trending_score recompute started", - "recompute_trending_running": "A recompute is already running; not retriggered" + "migrate_avatar_title": "Миграция аватаров", + "migrate_avatar_button": "Начать миграцию", + "migrate_avatar_confirm": "Начать миграцию аватаров? Аватары пользователей будут загружены из UCenter и сохранены локально.", + "migrate_avatar_started": "Миграция аватаров запущена", + "migrate_avatar_progress": "Перенесено: {migrated} / Пропущено: {skipped} / Ошибок: {failed} / Всего: {total}", + "ranking_title": "Пересчёт рейтинга", + "recompute_trending_hint": "Ежедневная подборка (trending_score) автоматически пересчитывается каждый день в 03:10. После изменения параметров рейтинга запустите полный пересчёт здесь, чтобы сразу увидеть эффект.", + "recompute_trending_button": "Пересчитать trending_score", + "recompute_trending_confirm": "Пересчитать trending_score для всех скриптов сейчас? На больших базах это может занять от нескольких секунд до десятков секунд.", + "recompute_trending_started": "Пересчёт trending_score запущен", + "recompute_trending_running": "Пересчёт уже выполняется; повторный запуск не выполнен" }, "users": { "action_admin_level": "Изменить уровень", @@ -483,66 +483,66 @@ "title": "Управление пользователями", "unban_confirm": "Вы уверены, что хотите разблокировать этого пользователя?", "unban_success": "Пользователь успешно разблокирован", - "col_register_ip": "Register IP" + "col_register_ip": "IP регистрации" }, "similarity": { - "tab_pairs": "Pairs", - "tab_suspects": "Suspects", - "tab_integrity_reviews": "Integrity Reviews", - "tab_pair_whitelist": "Pair Whitelist", - "tab_integrity_whitelist": "Integrity Exemptions", + "tab_pairs": "Пары", + "tab_suspects": "Подозрительные", + "tab_integrity_reviews": "Проверки целостности", + "tab_pair_whitelist": "Белый список пар", + "tab_integrity_whitelist": "Исключения целостности", "col_id": "ID", - "col_script_a": "Script A", - "col_script_b": "Script B", + "col_script_a": "Скрипт A", + "col_script_b": "Скрипт B", "col_jaccard": "Jaccard", - "col_common": "Common Fingerprints", - "col_earlier": "Earlier Side", - "col_status": "Status", - "col_integrity": "Integrity Score", - "col_actions": "Actions", - "col_script": "Script", - "col_max_jaccard": "Max Jaccard", - "col_coverage": "External Coverage", - "col_pair_count": "Pair Count", - "col_detected_at": "Detected At", - "col_score": "Score", - "col_createtime": "Created", - "col_reason": "Reason", - "col_added_by": "Added By", - "status_pending": "Pending", - "status_whitelisted": "Whitelisted", - "status_resolved": "Resolved", - "review_pending": "Pending", - "review_ok": "OK", - "review_violated": "Violation", - "action_detail": "Details", - "action_resolve": "Resolve", - "action_whitelist": "Whitelist", - "action_remove": "Remove", - "confirm_remove_whitelist": "Remove this whitelist entry?", - "msg_removed": "Removed", - "modal_add_int_whitelist": "Add Integrity Exemption", - "label_script_id": "Script ID", - "label_reason": "Reason", - "btn_add": "Add", - "modal_resolve_title": "Mark Integrity Review", - "label_decision": "Decision", - "label_note": "Note", - "decision_ok": "OK", - "decision_violated": "Violation", - "msg_review_resolved": "Marked successfully", - "msg_whitelisted": "Added to whitelist", - "drawer_review_detail": "Integrity Review Details", - "label_score": "Total Score", - "label_sub_scores": "Category Scores", - "label_hit_signals": "Hit Signals", + "col_common": "Общие отпечатки", + "col_earlier": "Более ранняя сторона", + "col_status": "Статус", + "col_integrity": "Оценка целостности", + "col_actions": "Действия", + "col_script": "Скрипт", + "col_max_jaccard": "Макс. Jaccard", + "col_coverage": "Внешнее покрытие", + "col_pair_count": "Число пар", + "col_detected_at": "Обнаружено", + "col_score": "Оценка", + "col_createtime": "Создано", + "col_reason": "Причина", + "col_added_by": "Добавил", + "status_pending": "Ожидает", + "status_whitelisted": "В белом списке", + "status_resolved": "Закрыто", + "review_pending": "Ожидает", + "review_ok": "Норма", + "review_violated": "Нарушение", + "action_detail": "Подробности", + "action_resolve": "Закрыть", + "action_whitelist": "В белый список", + "action_remove": "Удалить", + "confirm_remove_whitelist": "Удалить эту запись белого списка?", + "msg_removed": "Удалено", + "modal_add_int_whitelist": "Добавить исключение целостности", + "label_script_id": "ID скрипта", + "label_reason": "Причина", + "btn_add": "Добавить", + "modal_resolve_title": "Отметить проверку целостности", + "label_decision": "Решение", + "label_note": "Примечание", + "decision_ok": "Норма", + "decision_violated": "Нарушение", + "msg_review_resolved": "Успешно отмечено", + "msg_whitelisted": "Добавлено в белый список", + "drawer_review_detail": "Детали проверки целостности", + "label_score": "Итоговая оценка", + "label_sub_scores": "Оценки по категориям", + "label_hit_signals": "Сработавшие сигналы", "label_jaccard": "Jaccard", - "label_common": "Common Fingerprints", - "label_earlier": "Earlier Side", - "label_detected_at": "Detected At", - "label_script_a": "Script A", - "label_script_b": "Script B", - "label_code_diff": "Code Diff", + "label_common": "Общие отпечатки", + "label_earlier": "Более ранняя сторона", + "label_detected_at": "Обнаружено", + "label_script_a": "Скрипт A", + "label_script_b": "Скрипт B", + "label_code_diff": "Различия кода", "script_deleted": "Удалён", "filter_exclude_deleted": "Скрыть пары с удалёнными скриптами", "tab_backfill": "Заполнение и повторное сканирование", @@ -596,80 +596,80 @@ } }, "announcements": { - "title": "Announcement Management", - "action_create": "Create", - "action_edit": "Edit", - "action_delete": "Delete", - "create_title": "Create Announcement", - "edit_title": "Edit Announcement", - "col_title": "Title", - "col_level": "Level", - "col_status": "Status", - "col_createtime": "Created", - "col_actions": "Actions", - "field_title": "Title", - "field_content": "Content", - "field_level": "Level", - "field_status": "Status", - "level_normal": "Normal", - "level_important": "Important", - "status_enabled": "Enabled", - "status_disabled": "Disabled", - "create_success": "Announcement created successfully", - "update_success": "Announcement updated successfully", - "delete_success": "Announcement deleted successfully", - "delete_confirm": "Are you sure you want to delete this announcement?", - "at_least_one_language": "Please fill in the title for at least one language" + "title": "Управление объявлениями", + "action_create": "Создать", + "action_edit": "Редактировать", + "action_delete": "Удалить", + "create_title": "Создать объявление", + "edit_title": "Редактировать объявление", + "col_title": "Заголовок", + "col_level": "Уровень", + "col_status": "Статус", + "col_createtime": "Создано", + "col_actions": "Действия", + "field_title": "Заголовок", + "field_content": "Содержание", + "field_level": "Уровень", + "field_status": "Статус", + "level_normal": "Обычное", + "level_important": "Важное", + "status_enabled": "Включено", + "status_disabled": "Отключено", + "create_success": "Объявление успешно создано", + "update_success": "Объявление успешно обновлено", + "delete_success": "Объявление успешно удалено", + "delete_confirm": "Вы уверены, что хотите удалить это объявление?", + "at_least_one_language": "Укажите заголовок хотя бы на одном языке" }, "script_audits": { - "title": "Script Audit", - "col_script": "Script", - "col_version": "Version", - "col_submitter": "Submitter", - "col_status": "Status", - "col_script_audit_status": "Script Audit State", - "script_auditing": "Auditing", - "script_not_auditing": "Not auditing", - "col_createtime": "Submitted At", - "col_actions": "Actions", - "status_pending": "Pending", - "status_approved": "Approved", - "status_rejected": "Rejected", - "filter_status": "Status", - "filter_all": "All", - "filter_script_name_placeholder": "Search script name", - "refresh": "Refresh", - "action_review": "Review", - "action_approve": "Approve", - "action_reject": "Reject", - "approve_success": "Approved", - "reject_success": "Rejected", - "drawer_title": "Audit Detail", - "detail_script": "Script", - "detail_submitter": "Submitter", - "detail_changelog": "Changelog", - "detail_reason": "Audit Reason / Note", - "detail_reject_reason": "Reject Reason", - "detail_code": "Code", - "approve_modal_title": "Approve Audit", - "approve_reason_label": "Approval note (optional, for AI false-positive correction or audit basis)", - "approve_reason_placeholder": "If this was an AI false positive, note the manual review basis; leave blank to approve directly", - "reject_modal_title": "Reject Audit", - "reject_reason_label": "Reject reason (sent to author via in-app notification)", - "reject_reason_required": "Please provide a reject reason", - "reject_reason_placeholder": "Explain why this script is rejected (e.g. malicious code, policy violation, copyright issue)" + "title": "Аудит скриптов", + "col_script": "Скрипт", + "col_version": "Версия", + "col_submitter": "Отправитель", + "col_status": "Статус", + "col_script_audit_status": "Статус аудита скрипта", + "script_auditing": "На проверке", + "script_not_auditing": "Не на проверке", + "col_createtime": "Отправлено", + "col_actions": "Действия", + "status_pending": "Ожидает", + "status_approved": "Одобрено", + "status_rejected": "Отклонено", + "filter_status": "Статус", + "filter_all": "Все", + "filter_script_name_placeholder": "Поиск по названию скрипта", + "refresh": "Обновить", + "action_review": "Проверить", + "action_approve": "Одобрить", + "action_reject": "Отклонить", + "approve_success": "Одобрено", + "reject_success": "Отклонено", + "drawer_title": "Детали аудита", + "detail_script": "Скрипт", + "detail_submitter": "Отправитель", + "detail_changelog": "Список изменений", + "detail_reason": "Причина / примечание аудита", + "detail_reject_reason": "Причина отклонения", + "detail_code": "Код", + "approve_modal_title": "Одобрить аудит", + "approve_reason_label": "Комментарий к одобрению (необязательно; для исправления ложного срабатывания ИИ или обоснования)", + "approve_reason_placeholder": "Если это ложное срабатывание ИИ, укажите основание ручной проверки; оставьте пустым для прямого одобрения", + "reject_modal_title": "Отклонить аудит", + "reject_reason_label": "Причина отклонения (отправится автору во внутреннем уведомлении)", + "reject_reason_required": "Укажите причину отклонения", + "reject_reason_placeholder": "Объясните, почему скрипт отклонён (например: вредоносный код, нарушение правил, авторские права)" }, "reports": { - "title": "Report management", - "col_script": "Script", - "col_reporter": "Reporter", - "col_reason": "Reason", - "col_status": "Status", - "col_comments": "Comments", - "col_createtime": "Created at", - "col_actions": "Actions", - "action_view": "View", - "filter_status": "Filter by status" + "title": "Управление жалобами", + "col_script": "Скрипт", + "col_reporter": "Заявитель", + "col_reason": "Причина", + "col_status": "Статус", + "col_comments": "Комментарии", + "col_createtime": "Дата создания", + "col_actions": "Действия", + "action_view": "Просмотр", + "filter_status": "Фильтр по статусу" } }, "auth": { @@ -980,13 +980,13 @@ "terms_of_service_link": "Условия использования", "privacy_policy_link": "Политику конфиденциальности", "disclaimer_link": "Отказ от ответственности", - "webauthn_title": "Passkey Verification", - "webauthn_description": "Please verify with your registered passkey to complete login", - "webauthn_retry": "Retry Verification", - "webauthn_back": "Back to Login", - "webauthn_verification_failed": "Passkey verification failed, please try again", - "passkey_login": "Sign in with Passkey", - "passkey_login_loading": "Verifying...", + "webauthn_title": "Проверка Passkey", + "webauthn_description": "Подтвердите вход зарегистрированным passkey", + "webauthn_retry": "Повторить проверку", + "webauthn_back": "Назад к входу", + "webauthn_verification_failed": "Проверка passkey не удалась, попробуйте снова", + "passkey_login": "Войти с Passkey", + "passkey_login_loading": "Проверка…", "passkey_login_failed": "Ошибка входа с помощью ключа доступа, попробуйте ещё раз", "error_no_binding": "Эта сторонняя учётная запись не привязана к аккаунту платформы. Сначала зарегистрируйтесь или войдите, затем привяжите её в настройках", "error_rate_limited": "Слишком много запросов, попробуйте позже", @@ -994,10 +994,10 @@ "error_invalid_params": "Неверные параметры, попробуйте ещё раз", "error_qq_migrate_failed": "Миграция QQ-входа не удалась, попробуйте позже", "error_unknown": "Произошла ошибка при входе, попробуйте ещё раз", - "qq_migrate_deprecation_title": "QQ sign-in will soon be discontinued", - "qq_migrate_deprecation_content": "QQ sign-in will soon be discontinued. After signing in, please bind another sign-in method on the settings page to avoid losing access in the future.", - "qq_migrate_deprecation_continue": "Continue signing in", - "qq_migrate_deprecation_cancel": "Cancel" + "qq_migrate_deprecation_title": "Вход через QQ скоро будет отключён", + "qq_migrate_deprecation_content": "Авторизация через QQ скоро перестанет поддерживаться. Пожалуйста, после входа привяжите другой способ авторизации на странице настроек, чтобы не потерять доступ.", + "qq_migrate_deprecation_continue": "Продолжить вход", + "qq_migrate_deprecation_cancel": "Отмена" }, "notifications": { "access": { @@ -1098,45 +1098,45 @@ "privacy_policy_description": "Узнайте, как ScriptCat собирает, использует и защищает вашу личную информацию.", "disclaimer_title": "Отказ от ответственности", "disclaimer_description": "Ознакомьтесь с отказом от ответственности ScriptCat в отношении содержимого скриптов и рисков использования.", - "last_updated": "Последнее обновление: 25 августа 2026 г.", - "tos_section1_title": "1. General", + "last_updated": "Последнее обновление: 6 марта 2026 г.", + "tos_section1_title": "1. Общие положения", "tos_section1_content": "Welcome to ScriptCat Script Hub (hereinafter referred to as 'the Platform'). The Platform is a user script sharing community that provides services for publishing, searching, and installing scripts. Please carefully read and understand the entire content of this Terms of Service before using the Platform. By registering or using the Platform, you agree to be bound by this agreement.", - "tos_section2_title": "2. Account Registration and Usage", - "tos_section2_content": "You must provide accurate information when registering and keep your account credentials secure. Each user may register only one account and may not transfer or lend the account to others. Losses resulting from improper account management are the user's responsibility. The Platform reserves the right to restrict or ban accounts suspected of violations.", - "tos_section3_title": "3. Script Publishing Guidelines", - "tos_section3_content": "Scripts published on the Platform must comply with the following guidelines:\n\nCode Security: Scripts must not contain malicious code (including but not limited to data theft, cryptocurrency mining, backdoors, etc.); must not import private external executable code; public scripts must not be encrypted, obfuscated, or otherwise made unreadable.\n\nIntellectual Property: Referencing others' code must comply with the original author's license agreement, based on the @license at the time of reference; permissive licenses require source attribution via @original-author, @original-license, and @original-script; modifications to others' scripts must include meaningful improvements — merely adding monetization features is not considered a valid improvement.\n\nContent Standards: Scripts must have practical functionality or educational value; using scripts as a vehicle for advertising or meaningless content is prohibited; script descriptions must accurately reflect functionality, permissions, and potential impacts; adult or inappropriate content is prohibited.\n\n@antifeature Tags: Scripts containing the following features must be tagged with @antifeature: referral-link, ads, payment, miner, membership, tracking.\n\nViolations will be handled progressively based on severity and frequency: warning with a deadline for correction, script removal, temporary suspension, up to permanent ban. Matters not covered above will be determined by community discussion or administrator judgment.", - "tos_section4_title": "4. Intellectual Property", - "tos_section4_content": "The intellectual property of published scripts follows the license agreement declared in the script. If no license is declared, copyright belongs to the script author. The Platform respects intellectual property rights. If you discover infringing content, please report it through the reporting feature and we will handle it according to applicable laws.", - "tos_section5_title": "5. Violation Handling", - "tos_section5_content": "For violations of this agreement or applicable laws, the Platform reserves the right to take measures including but not limited to: removing offending scripts, restricting account features, suspending or permanently banning accounts. For serious violations, the Platform reserves the right to pursue legal remedies.", - "tos_section6_title": "6. Agreement Changes and Termination", - "tos_section6_content": "The Platform reserves the right to modify this agreement as needed. Modified agreements will be published on the Platform. Your continued use of the Platform constitutes acceptance of the modified agreement. The Platform may terminate or suspend services within the scope permitted by law, with advance notice provided when possible. The Platform reserves the right of final interpretation of this agreement.", + "tos_section2_title": "2. Регистрация и использование аккаунта", + "tos_section2_content": "При регистрации указывайте точные данные и храните учётные данные в безопасности. Каждый пользователь может зарегистрировать только один аккаунт и не вправе передавать или одалживать его другим. Убытки из‑за ненадлежащего управления аккаунтом несёт пользователь. Платформа оставляет за собой право ограничивать или блокировать аккаунты при подозрении в нарушениях.", + "tos_section3_title": "3. Правила публикации скриптов", + "tos_section3_content": "Скрипты, публикуемые на Платформе, должны соответствовать следующим правилам:\n\nБезопасность кода: скрипты не должны содержать вредоносный код (включая, но не ограничиваясь кражей данных, майнингом криптовалют, бэкдорами и т.п.); не должны подключать закрытый внешний исполняемый код; публичные скрипты не должны быть зашифрованы, обфусцированы или иным образом сделаны нечитаемыми.\n\nИнтеллектуальная собственность: при использовании чужого кода соблюдайте лицензию исходного автора на момент использования (@license); при свободных лицензиях укажите источник через @original-author, @original-license и @original-script; изменения чужих скриптов должны содержать осмысленные улучшения — простое добавление монетизации не считается достаточным улучшением.\n\nСтандарты контента: скрипты должны иметь практическую пользу или образовательную ценность; запрещено использовать скрипты как носитель рекламы или бессмысленного контента; описание должно точно отражать функции, разрешения и возможные последствия; запрещён контент для взрослых и неприемлемый материал.\n\nТеги @antifeature: скрипты со следующими возможностями должны быть помечены @antifeature: referral-link, ads, payment, miner, membership, tracking.\n\nНарушения рассматриваются поэтапно в зависимости от серьёзности и частоты: предупреждение со сроком исправления, удаление скрипта, временная блокировка, вплоть до постоянной. Вопросы, не охваченные выше, решаются обсуждением сообщества или решением администраторов.", + "tos_section4_title": "4. Интеллектуальная собственность", + "tos_section4_content": "Интеллектуальная собственность опубликованных скриптов определяется лицензией, указанной в скрипте. Если лицензия не указана, авторские права принадлежат автору скрипта. Платформа уважает права интеллектуальной собственности. При обнаружении нарушающего контента сообщите через функцию жалобы — мы разберёмся в соответствии с применимым законодательством.", + "tos_section5_title": "5. Обработка нарушений", + "tos_section5_content": "При нарушении этого соглашения или применимого законодательства Платформа оставляет за собой право принимать меры, включая, но не ограничиваясь: удаление нарушающих скриптов, ограничение функций аккаунта, приостановку или постоянную блокировку аккаунта. При серьёзных нарушениях Платформа оставляет за собой право на судебную защиту.", + "tos_section6_title": "6. Изменения и прекращение соглашения", + "tos_section6_content": "Платформа оставляет за собой право изменять это соглашение по мере необходимости. Изменённые условия публикуются на Платформе. Продолжая использовать Платформу, вы принимаете изменённое соглашение. Платформа может прекратить или приостановить услуги в пределах, допускаемых законом, по возможности с предварительным уведомлением. Платформа оставляет за собой право окончательного толкования этого соглашения.", "pp_section1_title": "1. Сбор информации", - "pp_section1_content": "Мы собираем: адрес электронной почты, имя пользователя и другие данные, которые вы указываете при регистрации; ваш IP-адрес, сведения о браузере и устройстве при посещении; вашу активность на Платформе — просмотр, установку, оценку скриптов и т. п.; а также данные сеанса, необходимые для сохранения входа в аккаунт.\n\nПри регистрации или отправке обратной связи мы записываем ваш IP-адрес и определяем по нему приблизительное местоположение (например, страну и город), чтобы предотвращать злонамеренную регистрацию и злоупотребления. Определение выполняется на наших собственных серверах.", + "pp_section1_content": "We collect the following types of user information: registration information (email address, username); device and network information (IP address, browser type); usage data (script browsing, installation, ratings, etc.); session information used to maintain your login status.", "pp_section2_title": "2. Использование информации", - "pp_section2_content": "Собранную информацию мы используем для: предоставления и улучшения Платформы; сбора статистики; обеспечения безопасности; отправки служебных уведомлений, таких как коды подтверждения и сброс пароля; показа рекламы и оценки её эффективности. Мы не продаём вашу личную информацию третьим лицам.", + "pp_section2_content": "We use the collected information for: providing and improving platform services; data statistics such as script installation counts; security measures (preventing malicious registration, abuse, etc.); sending service notifications such as verification codes and password resets. We will not sell your personal information to third parties.", "pp_section3_title": "3. Сторонние сервисы", - "pp_section3_content": "Платформа использует сторонние сервисы, в том числе Google Analytics (статистика посещений), Cloudflare Turnstile (проверка на робота), вход через сторонние аккаунты и Google AdSense (показ рекламы). При входе через сторонний аккаунт мы получаем только базовые данные, которые вы разрешили передать, — например, имя пользователя и адрес электронной почты.\n\nЭти сервисы собирают необходимые им сведения об устройстве и о просмотре страниц и могут устанавливать в вашем браузере собственные файлы cookie; порядок их обработки определяется политиками конфиденциальности этих сервисов.", - "pp_section4_title": "4. Реклама", - "pp_section4_content": "В рекламных блоках Платформы показывается реклама двух видов: реклама, которую мы размещаем самостоятельно, и реклама, показываемая через Google AdSense.\n\nДля рекламы, размещаемой нами самостоятельно, при клике мы записываем такие сведения, как время клика и расположение рекламного блока, чтобы оценивать эффективность рекламы и выявлять аномальные клики.\n\nДля рекламы Google AdSense показ и подсчёт выполняет Google, и мы не можем определить, кто именно увидел или нажал ту или иную рекламу. Как того требует Google, сообщаем: сторонние поставщики, включая Google, используют файлы cookie для показа объявлений с учётом ваших предыдущих посещений этого и других сайтов; использование Google рекламных файлов cookie позволяет Google и её партнёрам показывать вам объявления с учётом ваших посещений этого сайта и (или) других сайтов в Интернете.\n\nВы можете отключить персонализированную рекламу в настройках рекламных предпочтений Google (google.com/settings/ads) или отказаться от использования рекламных файлов cookie некоторых сторонних поставщиков на сайте aboutads.info.", - "pp_section5_title": "5. Файлы cookie и сеансы", - "pp_section5_content": "Платформа использует файлы cookie, чтобы сохранять ваш вход в аккаунт, запоминать выбранное оформление и язык и в других подобных целях. Перечисленные выше сторонние сервисы также устанавливают собственные файлы cookie для статистики посещений и показа рекламы.\n\nВы можете управлять файлами cookie или удалять их в настройках браузера, однако удаление файлов cookie, связанных со входом, приведёт к невозможности оставаться в аккаунте. Платформа не показывает баннер согласия на использование файлов cookie; если вы не хотите получать персонализированную рекламу, воспользуйтесь способами, описанными в предыдущем разделе.", - "pp_section6_title": "6. Безопасность и хранение данных", - "pp_section6_content": "Мы принимаем разумные технические и организационные меры для защиты данных пользователей. Данные хранятся в течение всего времени существования аккаунта и удаляются или обезличиваются в разумный срок после его закрытия, за исключением случаев, когда хранение требуется по закону.", - "pp_section7_title": "7. Права пользователя", - "pp_section7_content": "Вы имеете право: просматривать и изменять свою личную информацию; требовать удаления вашего аккаунта и связанных с ним данных; узнавать, как мы обрабатываем вашу личную информацию. Чтобы воспользоваться этими правами или задать вопрос, свяжитесь с нами через функцию обратной связи на Платформе.", + "pp_section3_content": "Платформа может использовать сторонние сервисы для отдельных функций, например вход через сторонние аккаунты и проверку человека. При стороннем входе мы получаем только базовую информацию, которую вы разрешаете (имя пользователя, email, аватар). Обработка данных сторонними сервисами регулируется их политиками конфиденциальности.", + "pp_section4_title": "4. Cookies и сессии", + "pp_section4_content": "Платформа использует cookies и сессии для поддержания входа и настроек. Вы можете управлять cookies в настройках браузера, но это может повлиять на нормальную работу Платформы.", + "pp_section5_title": "5. Безопасность и хранение данных", + "pp_section5_content": "Мы применяем разумные технические и организационные меры для защиты данных пользователей. Данные хранятся в период существования аккаунта. После удаления аккаунта персональные данные удаляются или обезличиваются в разумный срок, за исключением случаев, требуемых законом.", + "pp_section6_title": "6. Права пользователя", + "pp_section6_content": "Вы имеете право: просматривать и изменять свои персональные данные; запрашивать удаление аккаунта и связанных данных; узнавать, как мы обрабатываем ваши персональные данные. Чтобы реализовать эти права или задать вопросы, свяжитесь с нами через функцию обратной связи на платформе.", + "pp_section7_title": "7. Обновления политики", + "pp_section7_content": "Мы можем обновлять эту Политику конфиденциальности в связи с изменениями применимого законодательства или функций продукта. Обновлённая политика публикуется на Платформе. Рекомендуем периодически её просматривать. Продолжая использовать Платформу, вы принимаете обновлённую политику. Платформа оставляет за собой право окончательного толкования этой политики.", "pp_section8_title": "8. Обновление политики", "pp_section8_content": "Мы можем обновлять настоящую Политику конфиденциальности в связи с требованиями законодательства или изменениями в работе Платформы. Обновлённые версии публикуются на Платформе; рекомендуем периодически с ними знакомиться. Продолжая пользоваться Платформой, вы принимаете обновлённую политику. Право окончательного толкования настоящей Политики принадлежит Платформе.", - "dc_section1_title": "1. Script Disclaimer", - "dc_section1_content": "All user scripts published on the Platform are independently created and maintained by script authors and do not represent the position or views of the Platform. The Platform makes no express or implied warranties regarding the functionality, security, legality, or suitability of any user script. Users install and use scripts at their own discretion, and all risks and consequences are borne by the user.", - "dc_section2_title": "2. Usage Risks", - "dc_section2_content": "User scripts may modify web page content, send network requests, or access browser features. Before installing a script, please carefully read the script description and code to understand its functionality and required permissions. The Platform recommends that users only install scripts from trusted authors and regularly check the updates and security of installed scripts.", - "dc_section3_title": "3. Service Availability", - "dc_section3_content": "The Platform provides services on an 'as-is' basis and does not guarantee uninterrupted, error-free service or that it will meet your specific needs. The Platform is not liable for service interruptions caused by system maintenance, upgrades, network failures, or force majeure. The Platform reserves the right to modify, suspend, or terminate some or all services at any time.", - "dc_section4_title": "4. Limitation of Liability", - "dc_section4_content": "To the maximum extent permitted by law, the Platform and its operators shall not be liable for any direct, indirect, incidental, special, or consequential damages arising from the use or inability to use the Platform services, including but not limited to data loss, loss of profits, or business interruption. The Platform makes no warranties and assumes no responsibility for any goods or services promoted by advertisers through the Platform, or for advertisements served by third-party advertising networks such as Google AdSense; the Platform does not select, review, or endorse advertisements served by such networks. Any transaction between you and an advertiser, or arising from an advertisement served by a third-party advertising network, is at your own discretion and risk.", - "dc_section5_title": "5. Disclaimer Updates", - "dc_section5_content": "We may update this Disclaimer in response to changes in applicable laws or product features. The updated disclaimer will be published on the Platform. We recommend that you review it periodically. Your continued use of the Platform constitutes acceptance of the updated disclaimer. The Platform reserves the right of final interpretation of this disclaimer." + "dc_section1_title": "1. Отказ от ответственности за скрипты", + "dc_section1_content": "Все пользовательские скрипты, опубликованные на Платформе, создаются и поддерживаются авторами самостоятельно и не выражают позицию или взгляды Платформы. Платформа не даёт явных или подразумеваемых гарантий относительно функциональности, безопасности, законности или пригодности любого пользовательского скрипта. Установка и использование скриптов — на усмотрение пользователя; все риски и последствия несёт пользователь.", + "dc_section2_title": "2. Риски использования", + "dc_section2_content": "Пользовательские скрипты могут изменять содержимое веб-страниц, отправлять сетевые запросы или обращаться к возможностям браузера. Перед установкой внимательно прочитайте описание и код скрипта, чтобы понять его функции и требуемые разрешения. Платформа рекомендует устанавливать скрипты только от доверенных авторов и регулярно проверять обновления и безопасность установленных скриптов.", + "dc_section3_title": "3. Доступность сервиса", + "dc_section3_content": "Платформа предоставляет услуги «как есть» и не гарантирует бесперебойную, безошибочную работу или соответствие вашим конкретным потребностям. Платформа не несёт ответственности за перерывы в обслуживании, вызванные обслуживанием системы, обновлениями, сбоями сети или обстоятельствами непреодолимой силы. Платформа оставляет за собой право в любое время изменять, приостанавливать или прекращать часть или все услуги.", + "dc_section4_title": "4. Ограничение ответственности", + "dc_section4_content": "To the maximum extent permitted by law, the Platform and its operators shall not be liable for any direct, indirect, incidental, special, or consequential damages arising from the use or inability to use the Platform services, including but not limited to data loss, loss of profits, or business interruption.", + "dc_section5_title": "5. Обновления отказа от ответственности", + "dc_section5_content": "Мы можем обновлять этот отказ от ответственности в связи с изменениями применимого законодательства или функций продукта. Обновлённая версия публикуется на Платформе. Рекомендуем периодически её просматривать. Продолжая использовать Платформу, вы принимаете обновлённый отказ от ответственности. Платформа оставляет за собой право окончательного толкования этого документа." }, "script": { "alerts": { @@ -1271,7 +1271,7 @@ "license_no_derivative": "Без производных", "license_none": "Не указана", "license_none_warning": "Лицензия не указана — используйте с осторожностью", - "permissions_title": "Script Permissions", + "permissions_title": "Разрешения скрипта", "scheduled_script": "Запланированный скрипт", "scheduled_script_tooltip": "Этот скрипт поддерживает запланированное выполнение, будет автоматически работать по установленным интервалам времени: {cron}", "script_details": "Детали скрипта", @@ -1281,8 +1281,8 @@ "install": { "install_check_failed": "Не удалось проверить статус установки скрипта", "install_script": "Установить скрипт", - "reinstall_script": "Переустановить скрипт", - "update_script": "Обновить скрипт", + "reinstall_script": "Переустановить скрипт v{version}", + "update_script": "Обновить скрипт до v{version}", "updated_at": "Обновлено {time}", "changelog": "История изменений" }, @@ -1386,7 +1386,7 @@ "connect": "Межсайтовые запросы", "grants": "Возможности", "more": "+{count}", - "high_risk": "Этот скрипт имеет чувствительное разрешение на доступ к файлам cookie и их изменение.", + "high_risk": "Разрешение высокого риска — устанавливайте с осторожностью", "cap": { "net": "Сетевые запросы", "notify": "Уведомления", @@ -1652,7 +1652,7 @@ "labels_title": "Метки", "no_issues": "Пока нет проблем", "no_issues_found": "Не найдено соответствующих проблем", - "pagination_total": "{start}-{end} / {total}", + "pagination_total": "{start}–{end} / {total}", "search_placeholder": "Поиск проблем...", "status_pending": "Ожидает решения", "status_resolved": "Решено", @@ -2385,25 +2385,25 @@ "unbind_success": "Успешно отвязано" }, "passkey": { - "title": "Passkey Management", - "description": "Manage your passkeys for two-factor authentication or passwordless login", - "add": "Add Passkey", - "add_success": "Passkey added successfully", - "add_failed": "Failed to add passkey", - "no_passkeys": "No passkeys registered", - "col_name": "Name", - "col_createtime": "Created", - "col_actions": "Actions", - "rename": "Rename", - "rename_title": "Rename Passkey", - "rename_placeholder": "Enter new name", - "rename_ok": "OK", - "rename_success": "Renamed successfully", - "rename_failed": "Failed to rename", - "delete": "Delete", - "delete_confirm": "Are you sure you want to delete this passkey? You won't be able to use it for authentication after deletion.", - "delete_success": "Deleted successfully", - "delete_failed": "Failed to delete" + "title": "Управление Passkey", + "description": "Управляйте passkey для двухфакторной аутентификации или входа без пароля", + "add": "Добавить Passkey", + "add_success": "Passkey успешно добавлен", + "add_failed": "Не удалось добавить passkey", + "no_passkeys": "Passkey не зарегистрированы", + "col_name": "Название", + "col_createtime": "Создано", + "col_actions": "Действия", + "rename": "Переименовать", + "rename_title": "Переименовать Passkey", + "rename_placeholder": "Введите новое название", + "rename_ok": "ОК", + "rename_success": "Успешно переименовано", + "rename_failed": "Не удалось переименовать", + "delete": "Удалить", + "delete_confirm": "Удалить этот passkey? После удаления вы не сможете использовать его для входа.", + "delete_success": "Успешно удалено", + "delete_failed": "Не удалось удалить" }, "profile": { "achievement_badges": "Значки достижений", @@ -2439,32 +2439,32 @@ "processed_col_operator": "Оператор", "processed_col_time": "Время", "processed_col_reason": "Причина", - "account_deactivated": "This account has been deactivated", - "ban_user": "Ban user", - "unban_user": "Unban user", - "ban_reason": "Ban reason", - "ban_reason_placeholder": "Enter a reason for the ban", - "ban_duration": "Ban duration", - "ban_permanent": "Permanent ban", - "ban_1_day": "1 day", - "ban_3_days": "3 days", - "ban_7_days": "7 days", - "ban_30_days": "30 days", - "ban_90_days": "90 days", - "ban_custom": "Custom", - "ban_clean_options": "Cleanup options", - "ban_clean_scores": "Remove user ratings", - "ban_clean_scripts": "Remove user scripts", - "ban_success": "User banned", - "unban_success": "User unbanned", - "ban_confirm_title": "Confirm ban", - "unban_confirm": "Are you sure you want to unban this user?", - "user_banned": "Banned", - "ban_expire_at": "Ban expires at", - "ban_permanent_label": "Permanent", - "register_ip": "Registration IP", - "ip_location": "IP location", - "register_email": "Registration email" + "account_deactivated": "Этот аккаунт деактивирован", + "ban_user": "Заблокировать пользователя", + "unban_user": "Разблокировать пользователя", + "ban_reason": "Причина блокировки", + "ban_reason_placeholder": "Введите причину блокировки", + "ban_duration": "Срок блокировки", + "ban_permanent": "Навсегда", + "ban_1_day": "1 день", + "ban_3_days": "3 дня", + "ban_7_days": "7 дней", + "ban_30_days": "30 дней", + "ban_90_days": "90 дней", + "ban_custom": "Другой срок", + "ban_clean_options": "Параметры очистки", + "ban_clean_scores": "Удалить оценки пользователя", + "ban_clean_scripts": "Удалить скрипты пользователя", + "ban_success": "Пользователь заблокирован", + "unban_success": "Пользователь разблокирован", + "ban_confirm_title": "Подтверждение блокировки", + "unban_confirm": "Вы действительно хотите разблокировать этого пользователя?", + "user_banned": "Заблокирован", + "ban_expire_at": "Срок действия блокировки", + "ban_permanent_label": "Бессрочно", + "register_ip": "IP при регистрации", + "ip_location": "Местоположение IP", + "register_email": "Email при регистрации" }, "save": "Сохранить", "script_list": { @@ -2494,7 +2494,7 @@ "user_settings": "Настройки пользователя", "webhook_settings": "Настройки Webhook", "deactivate_settings": "Удалить аккаунт", - "passkey_settings": "Passkeys", + "passkey_settings": "Passkey", "account_settings": "Управление аккаунтом", "account_settings_description": "Управление паролями, ключами доступа, привязками сторонних сервисов и настройками безопасности аккаунта", "install_link_settings": "Ссылка для установки" @@ -2586,14 +2586,14 @@ "applied_at": "Дата заявки", "effective_at": "Дата вступления в силу" }, - "contact_email": "Contact email", - "email_code_placeholder": "Enter the 6-digit verification code", - "email_code_required": "Send and enter the email verification code first", - "email_code_resend": "Resend", - "email_code_sent": "Verification code sent", - "email_help_text": "Displayed publicly so others can contact you. This can differ from your registration email and may be left blank.", - "email_send_code": "Send verification code", - "email_send_code_countdown": "Resend in {{seconds}}s", + "contact_email": "Контактный email", + "email_code_placeholder": "Введите 6-значный код подтверждения", + "email_code_required": "Пожалуйста, сначала отправьте и введите код подтверждения", + "email_code_resend": "Отправить повторно", + "email_code_sent": "Код подтверждения отправлен", + "email_help_text": "Отображается публично, чтобы с вами могли связаться. Может отличаться от регистрационного email, можно оставить пустым.", + "email_send_code": "Отправить код", + "email_send_code_countdown": "Повторная отправка через {{seconds}}с", "install_link": { "title": "Ссылка для установки", "description": "Ссылки для установки приватных скриптов содержат собственный токен. Менеджер скриптов использует его для установки и проверки обновлений, поэтому вход на сайт не требуется. Ссылка привязана к вашей учётной записи — не передавайте её посторонним.", @@ -2617,8 +2617,8 @@ }, "similarity": { "evidence": { - "disclaimer_title": "Preliminary Finding, Not a Final Verdict", - "disclaimer_body": "This page shows automatically detected similar-code evidence. It is informational only. Please do not draw definitive conclusions about the author from this data." + "disclaimer_title": "Предварительный результат, не окончательный вердикт", + "disclaimer_body": "На этой странице показаны автоматически найденные признаки похожего кода. Данные носят информационный характер. Не делайте окончательных выводов об авторе только по ним." } }, "errors": { @@ -2626,11 +2626,11 @@ "access_not_found": "Разрешение не существует" }, "integrity_rejected": { - "title": "Code Failed Integrity Check", - "help": "If this is a false positive, please apply for an exemption via the admin contact listed in the site FAQ." + "title": "Код не прошёл проверку целостности", + "help": "Если это ложное срабатывание, запросите исключение через контакт администратора из FAQ сайта." } }, "announcements": { - "title": "Announcements" + "title": "Объявления" } }