mirror of
https://github.com/router-for-me/Cli-Proxy-API-Management-Center.git
synced 2026-06-16 21:03:58 +08:00
1557 lines
110 KiB
JSON
1557 lines
110 KiB
JSON
{
|
||
"common": {
|
||
"login": "Войти",
|
||
"logout": "Выйти",
|
||
"back": "Назад",
|
||
"cancel": "Отмена",
|
||
"confirm": "Подтвердить",
|
||
"leave": "Уйти",
|
||
"stay": "Остаться",
|
||
"save": "Сохранить",
|
||
"delete": "Удалить",
|
||
"edit": "Редактировать",
|
||
"add": "Добавить",
|
||
"update": "Обновить",
|
||
"refresh": "Обновить",
|
||
"close": "Закрыть",
|
||
"success": "Успешно",
|
||
"error": "Ошибка",
|
||
"info": "Информация",
|
||
"warning": "Внимание",
|
||
"loading": "Загрузка...",
|
||
"connecting": "Подключение...",
|
||
"connected": "Подключено",
|
||
"disconnected": "Отключено",
|
||
"connecting_status": "Подключение",
|
||
"connected_status": "Подключено",
|
||
"disconnected_status": "Отключено",
|
||
"yes": "Да",
|
||
"no": "Нет",
|
||
"not_set": "Не задано",
|
||
"optional": "Необязательно",
|
||
"required": "Обязательно",
|
||
"api_key": "Ключ",
|
||
"base_url": "Адрес",
|
||
"prefix": "Префикс",
|
||
"proxy_url": "Прокси",
|
||
"priority": "Приоритет",
|
||
"alias": "Псевдоним",
|
||
"failure": "Сбой",
|
||
"unknown_error": "Неизвестная ошибка",
|
||
"quota_update_required": "Пожалуйста, обновите CPA или проверьте наличие обновлений",
|
||
"quota_check_credential": "Пожалуйста, проверьте статус учётных данных",
|
||
"copy": "Копировать",
|
||
"expand": "Развернуть",
|
||
"collapse": "Свернуть",
|
||
"status": "Статус",
|
||
"action": "Действие",
|
||
"custom_headers_label": "Пользовательские заголовки",
|
||
"custom_headers_hint": "Необязательно — HTTP-заголовки для отправки с запросом. Оставьте пустым для удаления.",
|
||
"custom_headers_add": "Добавить заголовок",
|
||
"custom_headers_key_placeholder": "Имя заголовка, например X-Custom-Header",
|
||
"custom_headers_value_placeholder": "Значение заголовка",
|
||
"model_name_placeholder": "Имя модели, напр. claude-3-5-sonnet-20241022",
|
||
"model_alias_placeholder": "Псевдоним модели (необязательно)",
|
||
"invalid_provider_index": "Неверный индекс провайдера.",
|
||
"unsaved_changes_title": "Несохранённые изменения",
|
||
"unsaved_changes_message": "У вас есть несохранённые изменения. Если вы уйдёте, они будут потеряны. Выйти?"
|
||
},
|
||
"title": {
|
||
"main": "Центр управления CLI Proxy API",
|
||
"login": "Центр управления CLI Proxy API",
|
||
"abbr": "CPAMC"
|
||
},
|
||
"splash": {
|
||
"title": "CLI Proxy API",
|
||
"subtitle": "Центр управления"
|
||
},
|
||
"auto_login": {
|
||
"title": "Автовход...",
|
||
"message": "Пытаемся подключиться к серверу, используя сохранённые данные"
|
||
},
|
||
"login": {
|
||
"subtitle": "Введите данные подключения, чтобы получить доступ к панели управления",
|
||
"connection_title": "Адрес подключения",
|
||
"connection_current": "Текущий URL",
|
||
"connection_auto_hint": "Система автоматически использует текущий URL для подключения",
|
||
"custom_connection_label": "Пользовательский URL подключения:",
|
||
"custom_connection_placeholder": "Напр.: https://example.com:8317",
|
||
"custom_connection_hint": "По умолчанию используется текущий URL. При необходимости замените его.",
|
||
"use_current_address": "Использовать текущий URL",
|
||
"remember_password_label": "Запомнить пароль",
|
||
"management_key_label": "Ключ управления:",
|
||
"management_key_placeholder": "Введите ключ управления",
|
||
"connect_button": "Подключиться",
|
||
"submit_button": "Войти",
|
||
"submitting": "Подключение...",
|
||
"error_title": "Ошибка входа",
|
||
"error_backend_detail": "Ответ сервера",
|
||
"error_required": "Пожалуйста, заполните все данные подключения",
|
||
"error_invalid": "Подключение не удалось, проверьте адрес сервера, Management API и ключ управления",
|
||
"error_network": "Сетевая ошибка, проверьте подключение или адрес сервера",
|
||
"error_timeout": "Время ожидания истекло, сервер не отвечает",
|
||
"error_unauthorized": "Аутентификация не удалась, ключ управления отсутствует или неверен",
|
||
"error_forbidden": "Доступ запрещён: удалённое управление отключено, ключ управления не настроен или IP временно заблокирован",
|
||
"error_not_found": "Management API не найден, проверьте, что адрес указывает на backend CLIProxyAPI",
|
||
"error_server": "Backend не смог обработать запрос управления, проверьте журналы сервера",
|
||
"error_cors": "Блокировка CORS, проверьте конфигурацию сервера",
|
||
"error_ssl": "Ошибка проверки SSL/TLS сертификата"
|
||
},
|
||
"header": {
|
||
"check_connection": "Проверить подключение",
|
||
"refresh_all": "Обновить всё",
|
||
"logout": "Выйти"
|
||
},
|
||
"connection": {
|
||
"title": "Информация о подключении",
|
||
"server_address": "Адрес сервера:",
|
||
"management_key": "Ключ управления:",
|
||
"status": "Статус подключения:"
|
||
},
|
||
"nav": {
|
||
"dashboard": "Панель",
|
||
"basic_settings": "Основные настройки",
|
||
"api_keys": "API ключи",
|
||
"ai_providers": "Поставщики AI",
|
||
"auth_files": "Файлы аутентификации",
|
||
"oauth": "OAuth вход",
|
||
"quota_management": "Управление квотами",
|
||
"plugins": "Плагины",
|
||
"plugin_store": "Магазин плагинов",
|
||
"config_management": "Панель конфигурации",
|
||
"logs": "Просмотр логов",
|
||
"system_info": "Информация системы"
|
||
},
|
||
"nav_groups": {
|
||
"operate": "Работа",
|
||
"gateway": "Шлюз",
|
||
"observe": "Наблюдение",
|
||
"control": "Управление"
|
||
},
|
||
"nav_meta": {
|
||
"dashboard": "Обзор работы",
|
||
"ai_providers": "Маршрутизация моделей",
|
||
"auth_files": "Файлы и учётные данные",
|
||
"oauth": "Авторизация OAuth",
|
||
"quota_management": "API ключи и лимиты",
|
||
"plugins": "Переключатели и ресурсы плагинов",
|
||
"plugin_store": "Поиск и установка плагинов",
|
||
"logs": "Трассировка запросов",
|
||
"config_management": "Базовая конфигурация шлюза",
|
||
"system_info": "Состояние и диагностика"
|
||
},
|
||
"dashboard": {
|
||
"title": "Панель управления",
|
||
"subtitle": "Добро пожаловать в Центр управления CLI Proxy API",
|
||
"openai_providers": "Поставщики OpenAI",
|
||
"quick_actions": "Быстрые действия",
|
||
"current_config": "Текущая конфигурация",
|
||
"management_keys": "Ключи управления",
|
||
"provider_keys_detail": "G:{{gemini}} C:{{codex}} Cl:{{claude}} V:{{vertex}} O:{{openai}}",
|
||
"oauth_credentials": "Учётные данные OAuth",
|
||
"edit_settings": "Изменить настройки",
|
||
"routing_strategy": "Стратегия маршрутизации",
|
||
"available_models": "Доступные модели",
|
||
"available_models_desc": "Всего моделей от всех провайдеров",
|
||
"welcome_back": "С возвращением",
|
||
"greeting_morning": "Доброе утро",
|
||
"greeting_afternoon": "Добрый день",
|
||
"greeting_evening": "Добрый вечер",
|
||
"greeting_night": "Доброй ночи",
|
||
"caring_morning": "Новый день — начнём продуктивно.",
|
||
"caring_afternoon": "Уверенный прогресс — отличная работа.",
|
||
"caring_evening": "День подходит к концу — финальный рывок.",
|
||
"caring_night": "Поздняя работа? Не забудьте отдохнуть.",
|
||
"system_overview": "Обзор системы"
|
||
},
|
||
"basic_settings": {
|
||
"title": "Основные настройки",
|
||
"debug_title": "Режим отладки",
|
||
"debug_enable": "Включить режим отладки",
|
||
"proxy_title": "Настройки прокси",
|
||
"proxy_url_label": "URL прокси:",
|
||
"proxy_url_placeholder": "например: socks5://user:pass@127.0.0.1:1080/",
|
||
"proxy_update": "Обновить",
|
||
"proxy_clear": "Очистить",
|
||
"retry_title": "Повтор запросов",
|
||
"retry_count_label": "Количество повторов:",
|
||
"retry_update": "Обновить",
|
||
"quota_title": "Поведение при превышении квоты",
|
||
"quota_switch_project": "Автоматически переключать проект",
|
||
"quota_switch_preview": "Переключаться на preview-модель",
|
||
"logging_title": "Журналирование",
|
||
"logging_to_file_enable": "Включить журналирование в файл",
|
||
"logs_max_total_size_title": "Лимит размера журналов",
|
||
"logs_max_total_size_label": "Максимальный общий размер журналов (МБ):",
|
||
"logs_max_total_size_hint": "Установите 0, чтобы отключить лимит.",
|
||
"logs_max_total_size_update": "Обновить",
|
||
"request_log_title": "Журналирование запросов",
|
||
"request_log_enable": "Включить журналирование запросов",
|
||
"request_log_warning": "Оставьте выключенным, если подробная диагностика не нужна.",
|
||
"force_model_prefix_enable": "Включить принудительный префикс модели",
|
||
"ws_auth_title": "Аутентификация WebSocket",
|
||
"ws_auth_enable": "Требовать аутентификацию для /ws/*",
|
||
"routing_title": "Стратегия маршрутизации",
|
||
"routing_strategy_label": "Стратегия маршрутизации:",
|
||
"routing_strategy_hint": "round-robin циклически перебирает ключи; fill-first отдаёт приоритет первому доступному ключу.",
|
||
"routing_strategy_update": "Обновить",
|
||
"routing_strategy_round_robin": "round-robin (цикл)",
|
||
"routing_strategy_fill_first": "fill-first (приоритет)"
|
||
},
|
||
"api_keys": {
|
||
"title": "Управление API-ключами",
|
||
"proxy_auth_title": "Ключи аутентификации прокси-сервиса",
|
||
"add_button": "Добавить ключ",
|
||
"empty_title": "API-ключи отсутствуют",
|
||
"empty_desc": "Нажмите кнопку выше, чтобы добавить первый ключ",
|
||
"item_title": "API-ключ",
|
||
"add_modal_title": "Добавление API-ключа",
|
||
"add_modal_key_label": "API-ключ:",
|
||
"add_modal_key_placeholder": "Введите API-ключ",
|
||
"edit_modal_title": "Редактирование API-ключа",
|
||
"edit_modal_key_label": "API-ключ:",
|
||
"delete_confirm": "Удалить этот API-ключ?"
|
||
},
|
||
"auth_files": {
|
||
"title": "Управление файлами авторизации",
|
||
"title_section": "Файлы авторизации",
|
||
"description": "Управляйте всеми JSON-файлами авторизации CLI Proxy (например, Qwen, Gemini, Vertex). Загрузка учётных данных сразу включает соответствующую интеграцию AI.",
|
||
"upload_button": "Загрузить файл",
|
||
"delete_all_button": "Удалить всё",
|
||
"empty_title": "Файлы авторизации отсутствуют",
|
||
"empty_desc": "Нажмите кнопку выше, чтобы загрузить первый файл",
|
||
"search_empty_title": "Файлы не найдены",
|
||
"search_empty_desc": "Попробуйте изменить фильтры или очистить строку поиска.",
|
||
"file_size": "Размер",
|
||
"file_modified": "Изменён",
|
||
"health_status_label": "Состояние",
|
||
"health_status_healthy": "Нормально",
|
||
"health_status_warning": "Предупреждение",
|
||
"health_status_disabled": "Отключено",
|
||
"health_status_unknown": "Неизвестно",
|
||
"health_status_no_message": "Нет сообщения о статусе",
|
||
"last_refresh_label": "Последнее обновление",
|
||
"refresh_not_available": "Н/Д",
|
||
"refresh_just_now": "Только что",
|
||
"download_button": "Скачать",
|
||
"delete_button": "Удалить",
|
||
"delete_confirm": "Удалить файл",
|
||
"delete_all_confirm": "Удалить все файлы авторизации? Это действие нельзя отменить!",
|
||
"delete_filtered_confirm": "Удалить все файлы авторизации {{type}}? Это действие нельзя отменить!",
|
||
"delete_problem_button": "Удалить проблемные",
|
||
"delete_problem_button_with_type": "Удалить проблемные файлы {{type}}",
|
||
"delete_problem_confirm": "Удалить все проблемные файлы авторизации? Это действие нельзя отменить!",
|
||
"delete_problem_filtered_confirm": "Удалить все проблемные файлы авторизации {{type}}? Это действие нельзя отменить!",
|
||
"delete_filtered_result_button": "Удалить результаты фильтра",
|
||
"delete_filtered_result_confirm": "Удалить файлы авторизации из текущих результатов фильтра? Это действие нельзя отменить!",
|
||
"upload_error_json": "Допустимы только файлы JSON",
|
||
"upload_error_size": "Размер файла не может превышать {{maxSize}}",
|
||
"upload_success": "Файл успешно загружен",
|
||
"download_success": "Файл успешно скачан",
|
||
"delete_success": "Файл успешно удалён",
|
||
"delete_all_success": "Удаление завершено",
|
||
"delete_filtered_success": "Удалено файлов {{type}}: {{count}}",
|
||
"delete_filtered_partial": "Удаление файлов {{type}} завершено: успешных {{success}}, ошибок {{failed}}",
|
||
"delete_filtered_none": "Нет файлов {{type}} для удаления при текущем фильтре",
|
||
"delete_problem_success": "Удалено проблемных файлов авторизации: {{count}}",
|
||
"delete_problem_filtered_success": "Удалено проблемных файлов авторизации {{type}}: {{count}}",
|
||
"delete_problem_partial": "Удаление проблемных файлов авторизации завершено: успешных {{success}}, ошибок {{failed}}",
|
||
"delete_problem_filtered_partial": "Удаление проблемных файлов авторизации {{type}} завершено: успешных {{success}}, ошибок {{failed}}",
|
||
"delete_problem_none": "Нет проблемных файлов авторизации для удаления при текущем фильтре",
|
||
"delete_problem_filtered_none": "Нет проблемных файлов авторизации {{type}} для удаления при текущем фильтре",
|
||
"delete_filtered_result_success": "Удалено файлов авторизации из результатов фильтра: {{count}}",
|
||
"delete_filtered_result_partial": "Удаление результатов фильтра завершено: успешных {{success}}, ошибок {{failed}}",
|
||
"delete_filtered_result_none": "Нет файлов авторизации для удаления в текущих результатах фильтра",
|
||
"files_count": "файлов",
|
||
"pagination_prev": "Предыдущая",
|
||
"pagination_next": "Следующая",
|
||
"pagination_info": "Страница {{current}} / {{total}} · {{count}} файлов",
|
||
"search_label": "Поиск конфигов",
|
||
"search_placeholder": "Фильтр по имени, типу или провайдеру, поддерживается wildcard *",
|
||
"problem_filter_label": "Фильтр проблем",
|
||
"problem_filter_only": "Показывать только проблемные учётные данные",
|
||
"disabled_filter_only": "Показывать только отключённые учётные данные",
|
||
"display_options_label": "Параметры отображения",
|
||
"compact_mode_label": "Компактный режим",
|
||
"sort_label": "Сортировка",
|
||
"sort_default": "По умолчанию",
|
||
"sort_az": "A-Z Имя",
|
||
"sort_priority": "Приоритет",
|
||
"priority_display": "Приоритет",
|
||
"page_size_label": "На странице",
|
||
"page_size_unit": "элементов",
|
||
"view_mode_paged": "Постранично",
|
||
"view_mode_all": "Показать все",
|
||
"too_many_files_warning": "Слишком много учётных данных. Полный список может повлиять на производительность, используйте постраничный режим.",
|
||
"filter_all": "Все",
|
||
"filter_qwen": "Qwen",
|
||
"filter_gemini": "Gemini",
|
||
"filter_gemini-cli": "GeminiCLI",
|
||
"filter_kimi": "Kimi",
|
||
"filter_aistudio": "AIStudio",
|
||
"filter_claude": "Claude",
|
||
"filter_codex": "Codex",
|
||
"filter_antigravity": "Antigravity",
|
||
"filter_xai": "xAI",
|
||
"filter_iflow": "iFlow",
|
||
"filter_vertex": "Vertex",
|
||
"filter_empty": "Пусто",
|
||
"filter_unknown": "Другое",
|
||
"type_qwen": "Qwen",
|
||
"type_gemini": "Gemini",
|
||
"type_gemini-cli": "GeminiCLI",
|
||
"type_kimi": "Kimi",
|
||
"type_aistudio": "AIStudio",
|
||
"type_claude": "Claude",
|
||
"type_codex": "Codex",
|
||
"type_antigravity": "Antigravity",
|
||
"type_xai": "xAI",
|
||
"type_iflow": "iFlow",
|
||
"type_vertex": "Vertex",
|
||
"type_empty": "Пусто",
|
||
"type_unknown": "Другое",
|
||
"type_virtual": "Виртуальный файл авторизации",
|
||
"models_button": "Модели",
|
||
"models_title": "Поддерживаемые модели",
|
||
"models_loading": "Загрузка списка моделей...",
|
||
"models_empty": "Для этих учётных данных нет доступных моделей",
|
||
"models_empty_desc": "Возможно, учётные данные ещё не загружены сервером или к ним не привязаны модели.",
|
||
"models_unsupported": "Функция не поддерживается в текущей версии",
|
||
"models_unsupported_desc": "Обновите CLI Proxy API до последней версии и повторите попытку",
|
||
"models_excluded_badge": "Отключена",
|
||
"models_excluded_hint": "Эта OAuth-модель отключена",
|
||
"status_toggle_label": "Включено",
|
||
"status_enabled_success": "\"{{name}}\" включён",
|
||
"status_disabled_success": "\"{{name}}\" отключён",
|
||
"batch_status_success": "{{count}} файлов обновлено",
|
||
"batch_status_partial": "{{success}} обновлено, {{failed}} не удалось",
|
||
"batch_delete_title": "Удалить выбранные файлы",
|
||
"batch_delete_confirm": "Удалить {{count}} файлов?",
|
||
"batch_selected": "{{count}} выбрано",
|
||
"batch_select_all": "Выбрать все",
|
||
"batch_select_page": "Выбрать страницу",
|
||
"batch_select_filtered": "Выбрать по фильтру",
|
||
"batch_invert_page": "Инвертировать страницу",
|
||
"batch_deselect": "Отменить",
|
||
"batch_download": "Скачать выбранные",
|
||
"batch_download_success": "Запущена загрузка {{count}} файлов",
|
||
"batch_download_partial": "Загрузка завершена: успешно {{success}}, ошибок {{failed}}",
|
||
"batch_enable": "Включить",
|
||
"batch_disable": "Отключить",
|
||
"prefix_proxy_button": "Просмотр / редактирование файла авторизации",
|
||
"auth_field_editor_title": "Просмотр / редактирование файла авторизации - {{name}}",
|
||
"prefix_proxy_loading": "Загрузка файла авторизации...",
|
||
"prefix_proxy_info_label": "Информация о файле авторизации (info)",
|
||
"prefix_proxy_source_label": "JSON файла авторизации (предпросмотр)",
|
||
"prefix_proxy_invalid_content_label": "Скачанное содержимое (сокращено)",
|
||
"prefix_label": "Префикс (prefix)",
|
||
"proxy_url_label": "URL прокси (proxy_url)",
|
||
"prefix_placeholder": "",
|
||
"proxy_url_placeholder": "socks5://username:password@proxy_ip:port/",
|
||
"priority_label": "Приоритет (priority)",
|
||
"priority_placeholder": "например: 10 или -1",
|
||
"priority_hint": "Только целые числа. Некорректные значения игнорируются. Чем больше число, тем выше приоритет.",
|
||
"codex_websockets_label": "WebSockets (websockets)",
|
||
"codex_websockets_hint": "Включает websocket-транспорт Responses API для этих учётных данных Codex.",
|
||
"excluded_models_label": "Исключённые модели (excluded_models)",
|
||
"excluded_models_placeholder": "Через запятую или с новой строки, например: model-a, gpt-5-*, *-preview",
|
||
"excluded_models_hint": "Сохраняется как массив; значения trim/нижний регистр/без дублей/с сортировкой.",
|
||
"disable_cooling_label": "Отключение охлаждения (disable_cooling)",
|
||
"disable_cooling_placeholder": "например: true / false / 1 / 0",
|
||
"disable_cooling_hint": "Поддерживает boolean, числа 0/не 0 и строки true/false/1/0; непарсируемые значения игнорируются.",
|
||
"note_label": "Заметка (note)",
|
||
"note_placeholder": "Введите заметку, например: аккаунт Ивана",
|
||
"note_hint": "Необязательно. Используется для описания назначения или владельца учётных данных; оставьте пустым, чтобы не записывать.",
|
||
"note_display": "Заметка",
|
||
"prefix_proxy_invalid_json": "Этот файл авторизации не является JSON-объектом, поэтому поля нельзя редактировать.",
|
||
"prefix_proxy_html_challenge": "Скачанное содержимое является HTML-страницей проверки, а не JSON-объектом авторизации. Повторно авторизуйтесь или замените файл перед редактированием полей.",
|
||
"prefix_proxy_saved_success": "Файл авторизации \"{{name}}\" успешно обновлён",
|
||
"card_tools_title": "Инструменты",
|
||
"quota_refresh_single": "Обновить квоту",
|
||
"quota_refresh_hint": "Обновить квоту только для этих учётных данных",
|
||
"quota_refresh_success": "Квота для \"{{name}}\" обновлена",
|
||
"quota_refresh_failed": "Не удалось обновить квоту для \"{{name}}\": {{message}}"
|
||
},
|
||
"antigravity_quota": {
|
||
"title": "Квота Antigravity",
|
||
"empty_title": "Файлы авторизации Antigravity отсутствуют",
|
||
"empty_desc": "Загрузите учётные данные Antigravity, чтобы увидеть оставшуюся квоту.",
|
||
"idle": "Не загружено. Нажмите \"Обновить квоту\".",
|
||
"loading": "Загрузка квоты...",
|
||
"load_failed": "Не удалось загрузить квоту: {{message}}",
|
||
"missing_auth_index": "В файле авторизации отсутствует auth_index",
|
||
"empty_models": "Данные по квоте отсутствуют",
|
||
"refresh_button": "Обновить квоту",
|
||
"fetch_all": "Получить все"
|
||
},
|
||
"claude_quota": {
|
||
"title": "Квота Claude",
|
||
"empty_title": "Файлы авторизации Claude OAuth отсутствуют",
|
||
"empty_desc": "Войдите через Claude OAuth, чтобы увидеть квоту.",
|
||
"idle": "Не загружено. Нажмите \"Обновить квоту\".",
|
||
"loading": "Загрузка квоты...",
|
||
"load_failed": "Не удалось загрузить квоту: {{message}}",
|
||
"missing_auth_index": "В файле авторизации отсутствует auth_index",
|
||
"empty_windows": "Данные по квоте отсутствуют",
|
||
"refresh_button": "Обновить квоту",
|
||
"fetch_all": "Получить все",
|
||
"five_hour": "Лимит на 5 часов",
|
||
"seven_day": "Лимит на 7 дней",
|
||
"seven_day_oauth_apps": "7 дней OAuth приложения",
|
||
"seven_day_opus": "7 дней Opus",
|
||
"seven_day_sonnet": "7 дней Sonnet",
|
||
"seven_day_cowork": "7 дней Cowork",
|
||
"iguana_necktie": "Iguana Necktie",
|
||
"extra_usage_label": "Дополнительное использование",
|
||
"plan_label": "План",
|
||
"plan_unknown": "Неизвестно",
|
||
"plan_free": "Free",
|
||
"plan_pro": "Pro",
|
||
"plan_max": "Max",
|
||
"plan_max5": "Max 5x",
|
||
"plan_max20": "Max 20x",
|
||
"plan_team": "Team"
|
||
},
|
||
"codex_quota": {
|
||
"title": "Квота Codex",
|
||
"empty_title": "Файлы авторизации Codex отсутствуют",
|
||
"empty_desc": "Загрузите учётные данные Codex, чтобы увидеть квоту.",
|
||
"idle": "Не загружено. Нажмите \"Обновить квоту\".",
|
||
"loading": "Загрузка квоты...",
|
||
"load_failed": "Не удалось загрузить квоту: {{message}}",
|
||
"missing_auth_index": "В файле авторизации отсутствует auth_index",
|
||
"missing_account_id": "В учётных данных Codex отсутствует идентификатор аккаунта ChatGPT",
|
||
"empty_windows": "Данные по квоте отсутствуют",
|
||
"no_access": "У этих учётных данных нет доступа Codex (план: free).",
|
||
"refresh_button": "Обновить квоту",
|
||
"fetch_all": "Получить все",
|
||
"primary_window": "Лимит на 5 часов",
|
||
"secondary_window": "Недельный лимит",
|
||
"team_secondary_window": "Месячный лимит",
|
||
"code_review_primary_window": "Лимит code review на 5 часов",
|
||
"code_review_secondary_window": "Недельный лимит code review",
|
||
"code_review_team_secondary_window": "Месячный лимит code review",
|
||
"additional_primary_window": "{{name}}: лимит на 5 часов",
|
||
"additional_secondary_window": "{{name}}: недельный лимит",
|
||
"additional_team_secondary_window": "{{name}}: месячный лимит",
|
||
"plan_label": "Тариф",
|
||
"expires_label": "Истекает",
|
||
"plan_plus": "Plus",
|
||
"plan_team": "Team",
|
||
"plan_free": "Free",
|
||
"plan_pro": "Pro 20x",
|
||
"plan_prolite": "Pro 5x"
|
||
},
|
||
"gemini_cli_quota": {
|
||
"title": "Квота Gemini CLI",
|
||
"empty_title": "Файлы авторизации Gemini CLI отсутствуют",
|
||
"empty_desc": "Загрузите учётные данные Gemini CLI, чтобы увидеть оставшуюся квоту.",
|
||
"idle": "Не загружено. Нажмите \"Обновить квоту\".",
|
||
"loading": "Загрузка квоты...",
|
||
"load_failed": "Не удалось загрузить квоту: {{message}}",
|
||
"missing_auth_index": "В файле авторизации отсутствует auth_index",
|
||
"missing_project_id": "В учётных данных Gemini CLI отсутствует идентификатор проекта",
|
||
"empty_buckets": "Данные по квоте отсутствуют",
|
||
"refresh_button": "Обновить квоту",
|
||
"fetch_all": "Получить все",
|
||
"remaining_amount": "Осталось {{count}}",
|
||
"tier_label": "Уровень",
|
||
"tier_free": "Бесплатный",
|
||
"tier_legacy": "Устаревший",
|
||
"tier_standard": "Стандартный",
|
||
"tier_pro": "Pro",
|
||
"tier_ultra": "Ultra",
|
||
"credit_label": "Google One AI кредиты",
|
||
"credit_amount": "{{count}} кредитов"
|
||
},
|
||
"kimi_quota": {
|
||
"title": "Квота Kimi",
|
||
"empty_title": "Файлы авторизации Kimi отсутствуют",
|
||
"empty_desc": "Загрузите учётные данные Kimi, чтобы увидеть оставшуюся квоту.",
|
||
"idle": "Не загружено. Нажмите \"Обновить квоту\".",
|
||
"loading": "Загрузка квоты...",
|
||
"load_failed": "Не удалось загрузить квоту: {{message}}",
|
||
"missing_auth_index": "В файле авторизации отсутствует auth_index",
|
||
"empty_data": "Данные по квоте отсутствуют",
|
||
"refresh_button": "Обновить квоту",
|
||
"fetch_all": "Получить все",
|
||
"weekly_limit": "Недельный лимит",
|
||
"limit_window": "Лимит {{duration}}",
|
||
"limit_index": "Лимит #{{index}}",
|
||
"reset_hint": "сброс через {{hint}}"
|
||
},
|
||
"xai_quota": {
|
||
"title": "Квота Grok",
|
||
"empty_title": "Файлы авторизации xAI/Grok отсутствуют",
|
||
"empty_desc": "Войдите через xAI OAuth, чтобы увидеть квоту Grok.",
|
||
"idle": "Не загружено. Нажмите \"Обновить квоту\".",
|
||
"loading": "Загрузка квоты...",
|
||
"load_failed": "Не удалось загрузить квоту: {{message}}",
|
||
"missing_auth_index": "В файле авторизации отсутствует auth_index",
|
||
"empty_data": "Данные по квоте отсутствуют",
|
||
"refresh_button": "Обновить квоту",
|
||
"fetch_all": "Получить все",
|
||
"monthly_credits": "Месячные кредиты",
|
||
"pay_as_you_go_label": "Оплата по факту",
|
||
"pay_as_you_go_enabled": "Включено, лимит {{cap}}",
|
||
"pay_as_you_go_disabled": "Отключено"
|
||
},
|
||
"vertex_import": {
|
||
"title": "Вход с Vertex JSON",
|
||
"description": "Загрузите JSON ключа сервисного аккаунта Google, чтобы сохранить его как auth-dir/vertex-<project>.json по тем же правилам, что и помощник CLI vertex-import.",
|
||
"location_label": "Регион (необязательно)",
|
||
"location_placeholder": "us-central1",
|
||
"location_hint": "Оставьте пустым, чтобы использовать регион us-central1 по умолчанию.",
|
||
"file_label": "JSON ключ сервисного аккаунта",
|
||
"file_hint": "Принимаются только JSON-файлы ключей сервисных аккаунтов Google Cloud.",
|
||
"file_placeholder": "Файл не выбран",
|
||
"choose_file": "Выбрать файл",
|
||
"import_button": "Импортировать учётные данные Vertex",
|
||
"file_required": "Сначала выберите файл учётных данных .json",
|
||
"success": "Учётные данные Vertex успешно импортированы",
|
||
"result_title": "Учётные данные сохранены",
|
||
"result_project": "ID проекта",
|
||
"result_email": "Сервисный аккаунт",
|
||
"result_location": "Регион",
|
||
"result_file": "Сохранённый файл"
|
||
},
|
||
"oauth_excluded": {
|
||
"title": "Отключение OAuth-моделей",
|
||
"description": "Отключения моделей по провайдерам отображаются карточками; нажмите карточку, чтобы изменить или удалить. Поддерживаются шаблоны *. Область зависит от фильтра файлов авторизации.",
|
||
"add": "Добавить отключение",
|
||
"add_title": "Добавление отключения моделей для провайдера",
|
||
"edit_title": "Редактирование отключения моделей для {{provider}}",
|
||
"refresh": "Обновить",
|
||
"refreshing": "Обновляется...",
|
||
"provider_label": "Провайдер",
|
||
"provider_auto": "Следовать текущему фильтру",
|
||
"provider_placeholder": "например: gemini-cli",
|
||
"provider_hint": "По умолчанию используется текущий фильтр; выберите существующего провайдера или введите новое имя.",
|
||
"models_label": "Отключаемые модели",
|
||
"models_loading": "Загрузка моделей...",
|
||
"models_unsupported": "Текущая версия CPA не поддерживает загрузку списка моделей.",
|
||
"models_loaded": "Загружено моделей: {{count}}. Отметьте модели, которые нужно отключить.",
|
||
"no_models_available": "Для этого провайдера нет доступных моделей.",
|
||
"save": "Сохранить/обновить",
|
||
"saving": "Сохранение...",
|
||
"save_success": "Отключение моделей обновлено",
|
||
"save_failed": "Не удалось обновить отключение моделей",
|
||
"delete": "Удалить провайдера",
|
||
"delete_confirm": "Удалить отключение моделей для {{provider}}?",
|
||
"delete_success": "Отключение моделей провайдера удалено",
|
||
"delete_failed": "Не удалось удалить отключение моделей",
|
||
"deleting": "Удаление...",
|
||
"no_models": "Отключаемые модели не настроены",
|
||
"model_count": "Отключено моделей: {{count}}",
|
||
"list_empty_all": "Отключений моделей пока нет — используйте \"Добавить отключение\".",
|
||
"list_empty_filtered": "В этой области нет отключённых моделей; нажмите \"Добавить отключение\".",
|
||
"disconnected": "Подключитесь к серверу, чтобы просматривать отключение моделей",
|
||
"load_failed": "Не удалось загрузить отключение моделей",
|
||
"provider_required": "Сначала укажите провайдера",
|
||
"scope_all": "Область: все провайдеры",
|
||
"scope_provider": "Область: {{provider}}",
|
||
"upgrade_required": "Текущая версия CPA не поддерживает отключение OAuth-моделей. Пожалуйста, обновите систему.",
|
||
"upgrade_required_title": "Пожалуйста, обновите CLI Proxy API",
|
||
"upgrade_required_desc": "Текущая версия сервера не поддерживает получение отключения OAuth-моделей. Обновите CPA (CLI Proxy API) до последней версии и повторите попытку."
|
||
},
|
||
"oauth_model_alias": {
|
||
"title": "Псевдонимы моделей OAuth",
|
||
"add": "Добавить псевдоним",
|
||
"add_title": "Добавление псевдонимов моделей провайдера",
|
||
"provider_label": "Провайдер",
|
||
"provider_placeholder": "например: gemini-cli / vertex",
|
||
"provider_hint": "По умолчанию используется текущий фильтр; выберите существующего провайдера или введите новое имя.",
|
||
"model_source_loading": "Загрузка моделей...",
|
||
"model_source_unsupported": "Текущая версия CPA не поддерживает загрузку списка моделей (ручной ввод остаётся доступным).",
|
||
"model_source_loaded": "Загружено моделей: {{count}}. Используйте выпадающий список \"Исходная модель\" или введите своё значение. Сохранение пустого списка удаляет провайдера. Включите \"Сохранить оригинал\", чтобы оставить исходное имя вместе с псевдонимом.",
|
||
"alias_label": "Псевдонимы моделей",
|
||
"alias_name_placeholder": "Исходное имя модели",
|
||
"alias_placeholder": "Псевдоним (обязательно)",
|
||
"duplicate_alias": "Каждый псевдоним этого провайдера должен быть уникальным.",
|
||
"alias_fork_label": "Сохранить оригинал",
|
||
"add_alias": "Добавить псевдоним",
|
||
"save": "Сохранить/обновить",
|
||
"save_success": "Псевдонимы моделей обновлены",
|
||
"save_failed": "Не удалось обновить псевдонимы моделей",
|
||
"delete": "Удалить провайдера",
|
||
"delete_confirm": "Удалить псевдонимы моделей для {{provider}}?",
|
||
"delete_link_title": "Убрать сопоставление",
|
||
"delete_link_confirm": "Удалить сопоставление из <code>{{sourceModel}}</code> ({{provider}}) к псевдониму <code>{{alias}}</code>?",
|
||
"delete_alias_title": "Удалить псевдоним",
|
||
"delete_alias_confirm": "Удалить псевдоним <code>{{alias}}</code> и все связанные сопоставления?",
|
||
"delete_success": "Псевдонимы моделей удалены",
|
||
"delete_failed": "Не удалось удалить псевдонимы моделей",
|
||
"no_models": "Псевдонимов нет",
|
||
"model_count": "Количество псевдонимов: {{count}}",
|
||
"list_empty_all": "Псевдонимы ещё не созданы — используйте \"Добавить псевдоним\".",
|
||
"chart_title": "Обзор всех сопоставлений",
|
||
"diagram_providers": "Провайдеры",
|
||
"diagram_source_models": "Исходные модели",
|
||
"diagram_aliases": "Псевдонимы",
|
||
"diagram_expand": "Развернуть",
|
||
"diagram_collapse": "Свернуть",
|
||
"diagram_add_alias": "Добавить псевдоним",
|
||
"diagram_rename": "Переименовать",
|
||
"diagram_rename_alias_title": "Переименование псевдонима",
|
||
"diagram_rename_alias_label": "Новое имя псевдонима",
|
||
"diagram_rename_placeholder": "Введите имя псевдонима...",
|
||
"diagram_delete_link": "Убрать связь {{provider}} / {{name}}",
|
||
"diagram_delete_alias": "Удалить псевдоним",
|
||
"diagram_please_enter_alias": "Введите имя псевдонима.",
|
||
"diagram_alias_exists": "Этот псевдоним уже существует.",
|
||
"diagram_add_alias_title": "Добавление псевдонима",
|
||
"diagram_add_alias_label": "Имя псевдонима",
|
||
"diagram_add_placeholder": "Введите новое имя псевдонима...",
|
||
"diagram_rename_btn": "Переименовать",
|
||
"diagram_add_btn": "Добавить",
|
||
"diagram_settings": "Настройки",
|
||
"diagram_settings_title": "Настройки псевдонима — {{alias}}",
|
||
"diagram_settings_source_title": "Настройки исходной модели",
|
||
"diagram_settings_empty": "Для этого псевдонима ещё нет сопоставлений.",
|
||
"diagram_tap_hint": "На сенсорных устройствах: коснитесь исходной модели, затем псевдонима для связывания.",
|
||
"view_mode": "Режим просмотра",
|
||
"view_mode_diagram": "Диаграмма",
|
||
"view_mode_list": "Список",
|
||
"provider_required": "Сначала укажите провайдера",
|
||
"upgrade_required": "Эта функция требует более новой версии CLI Proxy API (CPA). Обновите систему.",
|
||
"upgrade_required_title": "Пожалуйста, обновите CLI Proxy API",
|
||
"upgrade_required_desc": "Текущая версия сервера не поддерживает API псевдонимов моделей OAuth. Обновите CLI Proxy API (CPA) до последней версии."
|
||
},
|
||
"auth_login": {
|
||
"codex_oauth_title": "Codex OAuth",
|
||
"codex_oauth_button": "Начать вход Codex",
|
||
"codex_oauth_hint": "Выполните вход в сервис Codex через OAuth и автоматически получите/сохраните файлы авторизации.",
|
||
"codex_oauth_url_label": "URL авторизации:",
|
||
"codex_open_link": "Открыть ссылку",
|
||
"codex_copy_link": "Скопировать ссылку",
|
||
"codex_oauth_status_waiting": "Ожидание аутентификации...",
|
||
"codex_oauth_status_success": "Аутентификация успешна!",
|
||
"codex_oauth_status_error": "Ошибка аутентификации:",
|
||
"codex_oauth_start_error": "Не удалось запустить Codex OAuth:",
|
||
"codex_oauth_polling_error": "Не удалось проверить статус аутентификации:",
|
||
"anthropic_oauth_title": "Anthropic OAuth",
|
||
"anthropic_oauth_button": "Начать вход Anthropic",
|
||
"anthropic_oauth_hint": "Выполните вход в сервис Anthropic (Claude) через OAuth и автоматически получите/сохраните файлы авторизации.",
|
||
"anthropic_oauth_url_label": "URL авторизации:",
|
||
"anthropic_open_link": "Открыть ссылку",
|
||
"anthropic_copy_link": "Скопировать ссылку",
|
||
"anthropic_oauth_status_waiting": "Ожидание аутентификации...",
|
||
"anthropic_oauth_status_success": "Аутентификация успешна!",
|
||
"anthropic_oauth_status_error": "Ошибка аутентификации:",
|
||
"anthropic_oauth_start_error": "Не удалось запустить Anthropic OAuth:",
|
||
"anthropic_oauth_polling_error": "Не удалось проверить статус аутентификации:",
|
||
"antigravity_oauth_title": "Antigravity OAuth",
|
||
"antigravity_oauth_button": "Начать вход Antigravity",
|
||
"antigravity_oauth_hint": "Выполните вход в сервис Antigravity (Google) через OAuth и автоматически получите/сохраните файлы авторизации.",
|
||
"antigravity_oauth_url_label": "URL авторизации:",
|
||
"antigravity_open_link": "Открыть ссылку",
|
||
"antigravity_copy_link": "Скопировать ссылку",
|
||
"antigravity_oauth_status_waiting": "Ожидание аутентификации...",
|
||
"antigravity_oauth_status_success": "Аутентификация успешна!",
|
||
"antigravity_oauth_status_error": "Ошибка аутентификации:",
|
||
"antigravity_oauth_start_error": "Не удалось запустить Antigravity OAuth:",
|
||
"antigravity_oauth_polling_error": "Не удалось проверить статус аутентификации:",
|
||
"gemini_cli_oauth_title": "Gemini CLI OAuth",
|
||
"gemini_cli_oauth_button": "Начать вход Gemini CLI",
|
||
"gemini_cli_oauth_hint": "Выполните вход в сервис Google Gemini CLI через OAuth и автоматически получите/сохраните файлы авторизации.",
|
||
"gemini_cli_project_id_label": "Google Cloud Project ID (необязательно):",
|
||
"gemini_cli_project_id_placeholder": "Оставьте пустым, чтобы выбрать первый доступный проект автоматически",
|
||
"gemini_cli_project_id_hint": "Необязательно. Если не указано, система автоматически выберет первый доступный проект вашей учётной записи. Введите ALL, чтобы получить все проекты.",
|
||
"gemini_cli_project_id_required": "Укажите идентификатор проекта Google Cloud.",
|
||
"gemini_cli_oauth_url_label": "URL авторизации:",
|
||
"gemini_cli_open_link": "Открыть ссылку",
|
||
"gemini_cli_copy_link": "Скопировать ссылку",
|
||
"gemini_cli_oauth_status_waiting": "Ожидание аутентификации...",
|
||
"gemini_cli_oauth_status_success": "Аутентификация успешна!",
|
||
"gemini_cli_oauth_status_error": "Ошибка аутентификации:",
|
||
"gemini_cli_oauth_start_error": "Не удалось запустить Gemini CLI OAuth:",
|
||
"gemini_cli_oauth_polling_error": "Не удалось проверить статус аутентификации:",
|
||
"kimi_oauth_title": "Kimi OAuth",
|
||
"kimi_oauth_button": "Начать вход Kimi",
|
||
"kimi_oauth_hint": "Выполните вход в сервис Kimi через поток авторизации устройства и автоматически получите/сохраните файлы авторизации.",
|
||
"kimi_oauth_url_label": "URL авторизации:",
|
||
"kimi_open_link": "Открыть ссылку",
|
||
"kimi_copy_link": "Скопировать ссылку",
|
||
"kimi_oauth_status_waiting": "Ожидание аутентификации...",
|
||
"kimi_oauth_status_success": "Аутентификация успешна!",
|
||
"kimi_oauth_status_error": "Ошибка аутентификации:",
|
||
"kimi_oauth_start_error": "Не удалось запустить Kimi OAuth:",
|
||
"kimi_oauth_polling_error": "Не удалось проверить статус аутентификации:",
|
||
"xai_oauth_title": "xAI OAuth",
|
||
"xai_oauth_button": "Начать вход xAI",
|
||
"xai_oauth_hint": "Выполните вход в xAI Grok через OAuth и автоматически получите/сохраните файлы авторизации.",
|
||
"xai_oauth_url_label": "URL авторизации:",
|
||
"xai_open_link": "Открыть ссылку",
|
||
"xai_copy_link": "Скопировать ссылку",
|
||
"xai_oauth_status_waiting": "Ожидание аутентификации...",
|
||
"xai_oauth_status_success": "Аутентификация успешна!",
|
||
"xai_oauth_status_error": "Ошибка аутентификации:",
|
||
"xai_oauth_start_error": "Не удалось запустить xAI OAuth:",
|
||
"xai_oauth_polling_error": "Не удалось проверить статус аутентификации:",
|
||
"xai_callback_label": "Callback URL или код",
|
||
"xai_callback_placeholder": "Вставьте код со страницы Grok или полный callback URL",
|
||
"xai_callback_hint": "Grok иногда показывает только код на странице. Вставьте этот код напрямую, приложение автоматически отправит его как http://127.0.0.1:56121/callback?...",
|
||
"xai_callback_required": "Сначала вставьте код со страницы Grok или полный callback URL.",
|
||
"xai_callback_state_missing": "Отсутствует state для этого входа xAI. Запустите вход xAI заново и затем отправьте код.",
|
||
"oauth_callback_label": "Callback URL",
|
||
"oauth_callback_placeholder": "http://localhost:1455/auth/callback?code=...&state=...",
|
||
"oauth_callback_hint": "Режим удалённого браузера: после перенаправления провайдера на http://localhost:... скопируйте полный URL и отправьте его здесь.",
|
||
"oauth_callback_button": "Отправить Callback URL",
|
||
"oauth_callback_required": "Сначала вставьте полный URL перенаправления.",
|
||
"oauth_callback_success": "Callback URL отправлен. Продолжайте ожидать аутентификацию.",
|
||
"oauth_callback_error": "Не удалось отправить Callback URL:",
|
||
"oauth_callback_upgrade_hint": "Обновите CLI Proxy API или проверьте подключение.",
|
||
"oauth_callback_status_success": "Callback URL отправлен, ожидаем аутентификацию...",
|
||
"oauth_callback_status_error": "Не удалось отправить Callback URL:",
|
||
"missing_state": "Не удалось получить параметр состояния аутентификации",
|
||
"login_another_account": "Войти в другой аккаунт",
|
||
"view_auth_files": "Открыть файлы авторизации",
|
||
"iflow_oauth_title": "iFlow OAuth",
|
||
"iflow_oauth_button": "Начать вход iFlow",
|
||
"iflow_oauth_hint": "Выполните вход в сервис iFlow через OAuth и автоматически получите/сохраните файлы авторизации.",
|
||
"iflow_oauth_url_label": "URL авторизации:",
|
||
"iflow_open_link": "Открыть ссылку",
|
||
"iflow_copy_link": "Скопировать ссылку",
|
||
"iflow_oauth_status_waiting": "Ожидание аутентификации...",
|
||
"iflow_oauth_status_success": "Аутентификация успешна!",
|
||
"iflow_oauth_status_error": "Ошибка аутентификации:",
|
||
"iflow_oauth_start_error": "Не удалось запустить iFlow OAuth:",
|
||
"iflow_oauth_polling_error": "Не удалось проверить статус аутентификации:",
|
||
"remote_access_disabled": "Этот способ входа недоступен при удалённом доступе. Подключитесь с localhost."
|
||
},
|
||
"stats": {
|
||
"success": "Успех",
|
||
"failure": "Сбой"
|
||
},
|
||
"status_bar": {
|
||
"success_short": "✓",
|
||
"failure_short": "✗",
|
||
"no_requests": "Нет запросов"
|
||
},
|
||
"service_health": {
|
||
"title": "Состояние сервиса",
|
||
"window": "Последние 7 дней",
|
||
"oldest": "Старые",
|
||
"newest": "Новые"
|
||
},
|
||
"logs": {
|
||
"title": "Просмотр журналов",
|
||
"runtime_unknown": "Текущий режим: определяется",
|
||
"runtime_cpa": "Текущий режим: CPA",
|
||
"runtime_home": "Текущий режим: Home",
|
||
"refresh_button": "Обновить журналы",
|
||
"clear_button": "Очистить журналы",
|
||
"fullscreen_button": "На весь экран",
|
||
"exit_fullscreen_button": "Выйти из полноэкранного режима",
|
||
"download_button": "Скачать журналы",
|
||
"error_log_button": "Выбрать журнал ошибок",
|
||
"error_logs_modal_title": "Журналы ошибок запросов",
|
||
"error_logs_description": "Выберите файл журнала ошибок запроса, чтобы открыть или скачать его (создаётся только при отключённом журналировании запросов).",
|
||
"error_logs_home_unavailable": "В режиме Home смотрите журналы базы данных на вкладке содержимого. Файлы ошибок запросов относятся только к файловым журналам CPA.",
|
||
"error_logs_request_log_enabled": "Журналирование запросов включено, поэтому этот список всегда будет пустым. Отключите журналирование запросов и обновите список, чтобы просмотреть журналы ошибок.",
|
||
"error_logs_empty": "Файлы журнала ошибок запросов не найдены",
|
||
"error_logs_load_error": "Не удалось загрузить список журналов ошибок",
|
||
"error_logs_size": "Размер",
|
||
"error_logs_modified": "Изменён",
|
||
"error_logs_open": "Открыть",
|
||
"error_logs_download": "Скачать",
|
||
"error_log_view_title": "Подробности журнала ошибок запроса",
|
||
"error_log_open_failed": "Не удалось открыть журнал ошибок",
|
||
"error_log_empty_content": "Этот журнал ошибок пуст",
|
||
"error_log_copy_success": "Содержимое журнала ошибок скопировано",
|
||
"error_log_download_success": "Журнал ошибок успешно скачан",
|
||
"request_log_download_title": "Скачать журнал запросов",
|
||
"request_log_download_confirm": "Скачать журнал запросов с идентификатором {{id}}?",
|
||
"request_log_download_success": "Журнал запросов успешно скачан",
|
||
"empty_title": "Журналы недоступны",
|
||
"empty_desc": "Когда включена опция \"Включить журналирование в файл\", журналы появятся здесь",
|
||
"cpa_file_logging_required": "Подключён режим CPA. Для просмотра журналов сначала включите запись журналов в файл.",
|
||
"cpa_file_logging_required_title": "Требуется файловое журналирование",
|
||
"cpa_file_logging_required_desc": "CPA читает этот журнал из локальных файлов. Включите logging-to-file в конфигурации и обновите страницу.",
|
||
"file_logging_required": "Этот endpoint журналов требует включить запись журналов в файл перед чтением файловых журналов.",
|
||
"file_logging_required_title": "Требуется файловое журналирование",
|
||
"file_logging_required_desc": "Этот endpoint журналов читает локальные файлы. Включите logging-to-file в конфигурации и обновите страницу.",
|
||
"home_clear_unavailable": "Журналы Home загружаются из базы данных и не могут быть очищены здесь.",
|
||
"log_content": "Содержимое журнала",
|
||
"loading": "Загрузка журналов...",
|
||
"load_error": "Не удалось загрузить журналы",
|
||
"clear_confirm": "Очистить все журналы? Действие нельзя отменить!",
|
||
"clear_success": "Журналы успешно очищены",
|
||
"download_success": "Журналы успешно скачаны",
|
||
"auto_refresh": "Автообновление",
|
||
"auto_refresh_enabled": "Автообновление включено",
|
||
"auto_refresh_disabled": "Автообновление выключено",
|
||
"load_more_hint": "Прокрутите вверх, чтобы загрузить ещё",
|
||
"hidden_lines": "Скрыто: {{count}} строк",
|
||
"loaded_lines": "Загружено: {{count}} строк",
|
||
"filtered_lines": "Отфильтровано: {{count}} строк",
|
||
"hide_management_logs": "Скрыть журналы {{prefix}}",
|
||
"show_raw_logs": "Показать исходные журналы",
|
||
"show_raw_logs_hint": "Показать текст журнала без обработки для удобного копирования в несколько строк",
|
||
"search_placeholder": "Искать по содержимому или ключевым словам",
|
||
"filter_panel_title": "Структурные фильтры",
|
||
"filter_panel_expand": "Развернуть структурные фильтры",
|
||
"filter_panel_collapse": "Свернуть структурные фильтры",
|
||
"filter_panel_active_count": "Активно: {{count}}",
|
||
"filter_method": "Метод",
|
||
"filter_status": "Статус",
|
||
"filter_path": "Путь",
|
||
"filter_path_empty": "Нет доступных путей",
|
||
"filter_status_2xx": "2xx",
|
||
"filter_status_3xx": "3xx",
|
||
"filter_status_4xx": "4xx",
|
||
"filter_status_5xx": "5xx",
|
||
"clear_filters": "Очистить фильтры",
|
||
"search_empty_title": "Подходящих журналов не найдено",
|
||
"search_empty_desc": "Попробуйте другой запрос или сбросьте фильтры.",
|
||
"double_click_copy_hint": "Дважды нажмите, чтобы скопировать строку журнала",
|
||
"copy_success": "Строка журнала скопирована",
|
||
"copy_failed": "Не удалось скопировать",
|
||
"lines": "строк",
|
||
"removed": "Отфильтровано",
|
||
"upgrade_required_title": "Обновите CLI Proxy API",
|
||
"upgrade_required_desc": "Текущая версия сервера не поддерживает просмотр журналов. Обновите CLI Proxy API до последней версии, чтобы использовать эту функцию."
|
||
},
|
||
"config_management": {
|
||
"title": "Панель конфигурации",
|
||
"editor_title": "Файл конфигурации",
|
||
"reload": "Перезагрузить",
|
||
"reload_confirm_message": "Перезагрузка отбросит ваши несохранённые изменения. Продолжить?",
|
||
"save": "Сохранить",
|
||
"description": "Редактируйте config.yaml через визуальный редактор или исходный файл",
|
||
"status_idle": "Ожидание действия",
|
||
"status_loading": "Загрузка конфигурации...",
|
||
"status_loading_short": "Загрузка",
|
||
"status_loaded": "Конфигурация загружена",
|
||
"status_loaded_short": "Загружено",
|
||
"status_dirty": "Есть несохранённые изменения",
|
||
"status_dirty_short": "Несохранено",
|
||
"status_disconnected": "Подключитесь к серверу, чтобы загрузить конфигурацию",
|
||
"status_disconnected_short": "Нет связи",
|
||
"status_load_failed": "Не удалось загрузить",
|
||
"status_load_failed_short": "Ошибка",
|
||
"status_saving": "Сохранение конфигурации...",
|
||
"status_saving_short": "Сохранение",
|
||
"status_saved": "Конфигурация сохранена",
|
||
"status_save_failed": "Не удалось сохранить",
|
||
"save_success": "Конфигурация успешно сохранена",
|
||
"error_yaml_not_supported": "Сервер не вернул YAML. Убедитесь, что доступна конечная точка /config.yaml.",
|
||
"visual_mode_unavailable": "Визуальный редактор недоступен, пока не исправлен синтаксис YAML",
|
||
"visual_mode_unavailable_short": "Ошибка YAML",
|
||
"validation_blocked_short": "Есть ошибки",
|
||
"visual_mode_unavailable_detail": "Визуальный редактор недоступен, потому что в конфигурации есть некорректный YAML: {{message}}",
|
||
"visual_mode_save_blocked": "Нельзя сохранять из визуального режима, пока не исправлен синтаксис YAML",
|
||
"visual_mode_latest_yaml_invalid": "Последняя конфигурация на сервере содержит некорректный YAML. Проверьте её в режиме исходника перед сохранением визуальных изменений: {{message}}",
|
||
"editor_placeholder": "key: value",
|
||
"search_placeholder": "Поиск по конфигурации...",
|
||
"search_button": "Поиск",
|
||
"search_no_results": "Нет результатов",
|
||
"search_prev": "Назад",
|
||
"search_next": "Вперёд",
|
||
"diff": {
|
||
"title": "Обзор изменений",
|
||
"current": "Текущая",
|
||
"modified": "Изменённая",
|
||
"confirm": "Подтвердить",
|
||
"no_changes": "Изменений не обнаружено"
|
||
},
|
||
"tabs": {
|
||
"visual": "Визуальный редактор",
|
||
"source": "Редактор файла"
|
||
},
|
||
"visual": {
|
||
"notice": "Визуальный режим охватывает основные поля. Остальные параметры config.yaml по-прежнему нужно проверять или редактировать в режиме исходника.",
|
||
"quick_jump": "Быстрый переход",
|
||
"sections": {
|
||
"server": {
|
||
"title": "Настройки сервера",
|
||
"description": "Базовые параметры сервера",
|
||
"host": "Адрес хоста",
|
||
"port": "Порт"
|
||
},
|
||
"tls": {
|
||
"title": "Настройка TLS/SSL",
|
||
"description": "Параметры безопасного HTTPS-соединения",
|
||
"enable": "Включить TLS",
|
||
"enable_desc": "Включить безопасное HTTPS-соединение",
|
||
"cert": "Путь к сертификату",
|
||
"key": "Путь к закрытому ключу"
|
||
},
|
||
"remote": {
|
||
"title": "Удалённое управление",
|
||
"description": "Настройки удалённого доступа и панели управления",
|
||
"allow_remote": "Разрешить удалённый доступ",
|
||
"allow_remote_desc": "Разрешить управление с других хостов",
|
||
"disable_panel": "Отключить панель",
|
||
"disable_panel_desc": "Отключить встроенную веб-панель управления",
|
||
"disable_auto_update_panel": "Отключить автообновление панели",
|
||
"disable_auto_update_panel_desc": "Скачивать панель при первом отсутствии, но не обновлять её автоматически с GitHub",
|
||
"secret_key": "Ключ управления",
|
||
"secret_key_placeholder": "Задайте ключ управления",
|
||
"panel_repo": "Репозиторий панели"
|
||
},
|
||
"auth": {
|
||
"title": "Настройки аутентификации",
|
||
"description": "API-ключи и каталог аутентификации",
|
||
"auth_dir": "Каталог auth-dir",
|
||
"auth_dir_hint": "Путь к каталогу с файлами аутентификации (поддерживает ~)"
|
||
},
|
||
"system": {
|
||
"title": "Системные настройки",
|
||
"description": "Отладка, журналирование, статистика и производительность",
|
||
"debug": "Режим отладки",
|
||
"debug_desc": "Включить подробные отладочные журналы",
|
||
"commercial_mode": "Коммерческий режим",
|
||
"commercial_mode_desc": "Отключить тяжёлое промежуточное ПО для поддержки высокой нагрузки",
|
||
"logging_to_file": "Журналировать в файл",
|
||
"logging_to_file_desc": "Сохранять журналы в файлы",
|
||
"plugins_enabled": "Включить систему плагинов",
|
||
"plugins_enabled_desc": "Включает загрузку стандартных dynamic-library плагинов; отдельные экземпляры управляются на странице плагинов",
|
||
"plugin_store_sources": "Сторонние источники плагинов",
|
||
"plugin_store_sources_desc": "Добавляет registry-источники магазина плагинов; встроенный официальный источник всегда сохраняется",
|
||
"plugin_store_sources_label": "URL registry источника плагинов (plugins.store-sources)",
|
||
"plugin_store_sources_placeholder": "https://example.com/cliproxy-plugins/registry.json",
|
||
"plugin_store_sources_hint": "Один URL registry.json в строке. Пустые строки отфильтровываются при сохранении",
|
||
"logs_max_size": "Максимальный размер файла журнала (МБ)",
|
||
"error_logs_max_files": "Файлов журнала ошибок",
|
||
"usage_statistics_enabled": "Включить статистику использования в памяти",
|
||
"usage_statistics_enabled_desc": "Агрегировать статистику использования запросов в памяти",
|
||
"redis_usage_retention": "Хранение очереди Redis usage (сек)",
|
||
"redis_usage_retention_hint": "Время хранения вывода RESP LPOP/RPOP в памяти, максимум 3600 секунд",
|
||
"antigravity_signature_cache": "Включить кэш подписей Antigravity",
|
||
"antigravity_signature_cache_desc": "Предпочитать и проверять кэшированные подписи thinking-блоков",
|
||
"antigravity_signature_strict": "Строгая проверка bypass-подписи",
|
||
"antigravity_signature_strict_desc": "Применяется только при отключённом кэше подписей; проверяет полное дерево Claude protobuf"
|
||
},
|
||
"headers": {
|
||
"title": "Заголовки по умолчанию",
|
||
"description": "Заголовки по умолчанию для OAuth-запросов Claude и Codex, когда клиент их не отправил",
|
||
"claude_title": "Claude Header Defaults",
|
||
"codex_title": "Codex Header Defaults",
|
||
"user_agent": "User-Agent",
|
||
"package_version": "Package Version",
|
||
"runtime_version": "Runtime Version",
|
||
"os": "OS",
|
||
"arch": "Arch",
|
||
"timeout": "Timeout",
|
||
"stabilize_device": "Стабилизировать профиль устройства",
|
||
"stabilize_device_desc": "Фиксировать OS/Arch и стабилизировать программный отпечаток для учётных данных/API-ключа",
|
||
"beta_features": "Beta Features",
|
||
"codex_identity_confuse": "Codex identity-confuse",
|
||
"codex_identity_confuse_desc": "При fill-first routing или session affinity переопределяет Codex prompt_cache_key и installation identity под выбранную auth-запись"
|
||
},
|
||
"network": {
|
||
"title": "Сетевые настройки",
|
||
"description": "Параметры прокси, повторов и маршрутизации",
|
||
"proxy_url": "URL прокси",
|
||
"request_retry": "Количество повторов запросов",
|
||
"max_retry_credentials": "Максимум учётных данных для повторов",
|
||
"max_retry_credentials_hint": "Оставьте пустым, чтобы не задавать поле. Значение 0 сохраняет legacy-поведение и позволяет перебрать все доступные учётные данные.",
|
||
"max_retry_interval": "Максимальный интервал повтора (сек)",
|
||
"auth_auto_refresh_workers": "Workers автообновления auth",
|
||
"auth_auto_refresh_workers_hint": "Если больше 0, переопределяет число workers по умолчанию (16)",
|
||
"disable_image_generation": "Отключить генерацию изображений",
|
||
"disable_image_generation_hint": "false включает; true отключает везде; chat отключает только инъекцию на не-image endpoints",
|
||
"disable_image_generation_false": "false (включено)",
|
||
"disable_image_generation_true": "true (отключено везде)",
|
||
"disable_image_generation_chat": "chat (только отключить chat-инъекцию)",
|
||
"gpt_image_2_base_model": "Базовая модель GPT Image 2",
|
||
"gpt_image_2_base_model_hint": "Основная модель для проксирования gpt-image-2 image-запросов; если пусто или неверно, backend использует значение по умолчанию",
|
||
"routing_strategy": "Стратегия маршрутизации",
|
||
"routing_strategy_hint": "Выберите стратегию подбора учётных данных",
|
||
"strategy_round_robin": "По кругу",
|
||
"strategy_fill_first": "Сначала заполнить",
|
||
"session_affinity_ttl": "TTL привязки сессии",
|
||
"force_model_prefix": "Принудительный префикс модели",
|
||
"force_model_prefix_desc": "Запросы к моделям без префикса используют только учётные данные без префикса",
|
||
"passthrough_headers": "Передавать upstream-заголовки",
|
||
"passthrough_headers_desc": "Передавать отфильтрованные upstream-заголовки ответа downstream-клиентам",
|
||
"disable_cooling": "Отключить cooldown",
|
||
"disable_cooling_desc": "Глобально отключить окна охлаждения auth/model после ошибок",
|
||
"session_affinity": "Маршрутизация с привязкой к сессии",
|
||
"ws_auth": "Аутентификация WebSocket",
|
||
"ws_auth_desc": "Включить аутентификацию WebSocket (/v1/ws)",
|
||
"enable_gemini_cli_endpoint": "Включить внутренний endpoint Gemini CLI",
|
||
"enable_gemini_cli_endpoint_desc": "Включить совместимые endpoints /v1internal:*"
|
||
},
|
||
"quota": {
|
||
"title": "Резерв по квоте",
|
||
"description": "Стратегия при превышении квоты",
|
||
"switch_project": "Переключить проект",
|
||
"switch_project_desc": "Автоматически переходить на другой проект при превышении квоты",
|
||
"switch_preview_model": "Переключить на preview-модель",
|
||
"switch_preview_model_desc": "Переключаться на preview-версию модели при превышении квоты",
|
||
"antigravity_credits": "Использовать Antigravity Credits"
|
||
},
|
||
"streaming": {
|
||
"title": "Настройки стриминга",
|
||
"description": "Параметры keepalive и повторов запуска",
|
||
"keepalive_seconds": "Период keepalive (сек)",
|
||
"keepalive_hint": "Установите 0 или оставьте поле пустым, чтобы отключить keepalive",
|
||
"bootstrap_retries": "Повторы запуска",
|
||
"bootstrap_hint": "Количество попыток при запуске стрима (до первого байта)",
|
||
"nonstream_keepalive": "Интервал keepalive для нестиминговых ответов (сек)",
|
||
"nonstream_keepalive_hint": "Отправлять пустые строки каждые N секунд для нестиминговых ответов, чтобы избежать простоя; установите 0 или оставьте пустым для отключения",
|
||
"disabled": "Отключено"
|
||
},
|
||
"payload": {
|
||
"title": "Настройки полезной нагрузки",
|
||
"description": "Значения по умолчанию, raw JSON-правила, правила переопределения и фильтрации",
|
||
"default_rules": "Правила по умолчанию",
|
||
"default_rules_desc": "Использовать эти значения, если параметр не указан в запросе",
|
||
"default_raw_rules": "Raw-правила по умолчанию",
|
||
"default_raw_rules_desc": "Если параметр отсутствует, записывать эти значения как raw JSON-фрагменты, например true, 123, \"high\" или {\"type\":\"object\"}",
|
||
"override_rules": "Правила переопределения",
|
||
"override_rules_desc": "Принудительно задавать значения параметров в запросе",
|
||
"override_raw_rules": "Raw-правила переопределения",
|
||
"override_raw_rules_desc": "Всегда перезаписывать значения как raw JSON-фрагменты; полезно для response_format, схем и других сложных полей",
|
||
"filter_rules": "Правила фильтрации",
|
||
"filter_rules_desc": "Предварительно фильтровать тело исходящего запроса через JSON Path, автоматически удалять несоответствующие или лишние параметры (санитизация запроса)"
|
||
}
|
||
},
|
||
"api_keys": {
|
||
"label": "Список API-ключей (api-keys)",
|
||
"add": "Добавить API-ключ",
|
||
"generate": "Сгенерировать",
|
||
"empty": "API-ключи отсутствуют",
|
||
"hint": "Каждая запись — это API-ключ (в том же стиле, что и на странице управления API-ключами)",
|
||
"edit_title": "Редактирование API-ключа",
|
||
"add_title": "Добавление API-ключа",
|
||
"input_label": "API-ключ",
|
||
"input_placeholder": "Вставьте API-ключ",
|
||
"input_hint": "Меняет только содержимое локального файла конфигурации, не синхронизируется с интерфейсом управления API-ключами",
|
||
"error_empty": "Введите API-ключ",
|
||
"error_invalid": "API-ключ содержит недопустимые символы"
|
||
},
|
||
"payload_rules": {
|
||
"rule": "Правило",
|
||
"models": "Применимые модели",
|
||
"model_name": "Название модели",
|
||
"provider_type": "Тип провайдера",
|
||
"add_model": "Добавить модель",
|
||
"params": "Настройки параметров",
|
||
"remove_params": "Удалить параметры",
|
||
"json_path": "JSON Path (например, temperature)",
|
||
"json_path_filter": "JSON Path (gjson/sjson), например generationConfig.thinkingConfig.thinkingBudget",
|
||
"param_type": "Тип параметра",
|
||
"param_value": "Значение параметра",
|
||
"add_param": "Добавить параметр",
|
||
"no_rules": "Правил нет",
|
||
"add_rule": "Добавить правило",
|
||
"provider_default": "По умолчанию",
|
||
"provider_openai": "OpenAI",
|
||
"provider_openai_response": "OpenAI Response",
|
||
"provider_responses": "Responses",
|
||
"provider_gemini": "Gemini",
|
||
"provider_claude": "Claude",
|
||
"provider_codex": "Codex",
|
||
"provider_antigravity": "Antigravity",
|
||
"advanced": "Дополнительно",
|
||
"hide_advanced": "Скрыть дополнительно",
|
||
"from_protocol": "Исходный протокол (from-protocol)",
|
||
"headers": "Совпадения заголовков запроса",
|
||
"header_name": "Имя заголовка",
|
||
"header_value": "Значение заголовка",
|
||
"add_header": "Добавить заголовок",
|
||
"match": "Обязательные совпадения (match)",
|
||
"notMatch": "Запрещённые совпадения (not-match)",
|
||
"exist": "Обязательные пути (exist)",
|
||
"notExist": "Запрещённые пути (not-exist)",
|
||
"condition_path": "Путь условия",
|
||
"condition_value": "Значение условия",
|
||
"add_condition": "Добавить условие",
|
||
"value_type_string": "Строка",
|
||
"value_type_number": "Число",
|
||
"value_type_boolean": "Булево",
|
||
"value_type_json": "JSON",
|
||
"value_string": "Строковое значение",
|
||
"value_number": "Числовое значение (например, 0.7)",
|
||
"value_boolean": "true или false",
|
||
"value_json": "Значение JSON",
|
||
"value_raw_json": "Raw JSON-фрагмент, например true, 123, \"high\" или {\"type\":\"object\"}",
|
||
"value_default": "Значение",
|
||
"boolean_true": "true",
|
||
"boolean_false": "false"
|
||
},
|
||
"validation": {
|
||
"validation_blocked": "Исправьте ошибки валидации перед сохранением",
|
||
"port_range": "Введите корректный порт от 1 до 65535",
|
||
"non_negative_integer": "Введите неотрицательное целое число",
|
||
"payload_invalid_number": "Введите корректное число",
|
||
"payload_invalid_boolean": "Выберите true или false",
|
||
"payload_invalid_json": "Введите корректный JSON"
|
||
},
|
||
"common": {
|
||
"edit": "Изменить",
|
||
"delete": "Удалить",
|
||
"cancel": "Отменить",
|
||
"update": "Обновить",
|
||
"add": "Добавить"
|
||
}
|
||
}
|
||
},
|
||
"quota_management": {
|
||
"title": "Управление квотами",
|
||
"description": "Следите за статусом квот OAuth для учётных данных Antigravity, Codex и Gemini CLI.",
|
||
"refresh_files": "Обновить файлы авторизации",
|
||
"refresh_files_and_quota": "Обновить файлы и квоты",
|
||
"refresh_all_credentials": "Обновить все учётные данные",
|
||
"card_idle_hint": "Используйте кнопку «Обновить все учётные данные» сверху, чтобы загрузить актуальные данные по квотам."
|
||
},
|
||
"plugin_management": {
|
||
"title": "Управление плагинами",
|
||
"description": "Просматривайте найденные и зарегистрированные плагины, управляйте переключателями экземпляров, полями конфигурации и ссылками на ресурсы.",
|
||
"refresh": "Обновить",
|
||
"load_failed": "Не удалось загрузить плагины",
|
||
"config_load_failed": "Не удалось прочитать конфигурацию плагина",
|
||
"config_not_found": "Не удалось прочитать конфигурацию плагина: backend не нашёл этот плагин.",
|
||
"unsupported_backend": "Текущий backend не предоставляет API управления плагинами. Используйте более новую сборку backend с эндпоинтами управления плагинами и перезапустите сервис.",
|
||
"global_status": "Глобальный статус",
|
||
"global_enabled": "Включено",
|
||
"global_disabled": "Отключено",
|
||
"global_disabled_hint": "plugins.enabled имеет значение false, поэтому включённые экземпляры плагинов не станут активными.",
|
||
"plugins_dir": "Каталог плагинов",
|
||
"discovered": "Найдено",
|
||
"effective": "Активно",
|
||
"search_placeholder": "Искать ID, имя, автора или ресурс плагина...",
|
||
"search_label": "Поиск плагинов",
|
||
"no_plugins": "Плагинов нет",
|
||
"no_plugins_desc": "В каталоге плагинов и реестре времени выполнения плагины не найдены.",
|
||
"configured": "Настроен",
|
||
"not_configured": "Не настроен",
|
||
"registered": "Зарегистрирован",
|
||
"not_registered": "Не зарегистрирован",
|
||
"oauth": "OAuth",
|
||
"status_effective": "Активен",
|
||
"status_inactive": "Неактивен",
|
||
"version_label": "Версия",
|
||
"author_label": "Автор",
|
||
"path_label": "Путь",
|
||
"edit_config": "Изменить конфиг",
|
||
"open_resource": "Открыть ресурс",
|
||
"open_repository": "Открыть репозиторий",
|
||
"config_title": "Настроить {{name}}",
|
||
"base_settings": "Базовые настройки",
|
||
"enabled": "Включено",
|
||
"enabled_hint": "Управляет полем enabled для этого экземпляра плагина в plugins.configs.",
|
||
"priority": "Приоритет",
|
||
"config_fields": "Поля конфигурации",
|
||
"no_config_fields": "Этот плагин не объявляет визуальные поля конфигурации.",
|
||
"select_placeholder": "Выберите",
|
||
"array_item_placeholder": "Введите элемент массива",
|
||
"add_array_item": "Добавить элемент массива",
|
||
"remove_array_item": "Удалить элемент массива",
|
||
"delete_plugin": "Удалить",
|
||
"delete_confirm_title": "Удалить плагин",
|
||
"delete_confirm_message": "Удалить {{name}} ({{id}})? Будут удалены локальный файл плагина и сохранённая конфигурация.",
|
||
"delete_success": "Плагин удалён",
|
||
"delete_failed": "Не удалось удалить плагин",
|
||
"delete_restart_required": "Загруженный плагин можно удалить только после перезапуска backend.",
|
||
"toggle_success": "Статус плагина обновлён",
|
||
"toggle_failed": "Не удалось обновить статус плагина",
|
||
"save_success": "Конфигурация плагина сохранена",
|
||
"save_failed": "Не удалось сохранить конфигурацию плагина",
|
||
"validation_failed": "Сначала исправьте ошибки формы конфигурации плагина",
|
||
"invalid_priority": "Введите целочисленный приоритет",
|
||
"invalid_number": "Введите корректное число",
|
||
"invalid_integer": "Введите корректное целое число",
|
||
"invalid_json": "Введите корректный JSON",
|
||
"expected_array": "Введите JSON-массив",
|
||
"expected_object": "Введите JSON-объект",
|
||
"invalid_enum": "Выберите одно из объявленных значений enum"
|
||
},
|
||
"plugin_store": {
|
||
"title": "Магазин плагинов",
|
||
"description": "Просматривайте реестр плагинов, устанавливайте и обновляйте плагины для текущего бэкенда.",
|
||
"description_show_more": "Показать больше",
|
||
"description_show_less": "Свернуть",
|
||
"source_name": "Источник: {{source}}",
|
||
"cli_proxy_api_source": "Источник CLIProxyAPI",
|
||
"refresh": "Обновить",
|
||
"retry": "Повторить",
|
||
"load_failed": "Не удалось загрузить магазин плагинов",
|
||
"unsupported_backend": "Текущий бэкенд не предоставляет API магазина плагинов. Используйте новую сборку бэкенда с поддержкой магазина плагинов и перезапустите службу.",
|
||
"registry_failed": "Не удалось обратиться к реестру плагинов",
|
||
"global_status": "Глобальный статус",
|
||
"global_enabled": "Включено",
|
||
"global_disabled": "Отключено",
|
||
"global_disabled_hint": "Параметр plugins.enabled выключен, поэтому установленные плагины не будут работать.",
|
||
"plugins_dir": "Каталог плагинов",
|
||
"stat_available": "Доступно",
|
||
"search_placeholder": "Поиск по ID, названию, автору или тегу...",
|
||
"search_label": "Поиск в магазине плагинов",
|
||
"filter_label": "Фильтр по статусу установки",
|
||
"filter_all": "Все",
|
||
"filter_installed": "Установленные",
|
||
"filter_not_installed": "Не установленные",
|
||
"filter_updates": "Обновления",
|
||
"badge_installed": "Установлен",
|
||
"badge_update": "Доступно обновление",
|
||
"badge_effective": "Активен",
|
||
"version_arrow": "v{{from}} → v{{to}}",
|
||
"install": "Установить",
|
||
"update": "Обновить",
|
||
"manage": "Управлять",
|
||
"install_confirm_title": "Установка плагина",
|
||
"install_confirm_message": "Скачать {{target}} из реестра плагинов и установить в локальный каталог плагинов?",
|
||
"update_confirm_title": "Обновление плагина",
|
||
"update_confirm_message": "Скачать и установить последнюю версию {{target}}?",
|
||
"install_success": "Плагин установлен",
|
||
"update_success": "Плагин обновлён",
|
||
"install_failed": "Не удалось установить плагин",
|
||
"update_failed": "Не удалось обновить плагин",
|
||
"restart_required_notice": "Перезапустите службу, чтобы загрузить новую версию плагина",
|
||
"restart_required_banner": "Перезапустите службу, чтобы применить новую версию: {{plugins}}",
|
||
"open_repository": "Открыть репозиторий",
|
||
"open_homepage": "Открыть сайт",
|
||
"no_plugins": "Реестр пуст",
|
||
"no_plugins_desc": "Реестр плагинов не вернул ни одного плагина.",
|
||
"no_matches": "Нет подходящих плагинов",
|
||
"no_matches_desc": "Нет плагинов, соответствующих текущему поиску или фильтру.",
|
||
"clear_filters": "Сбросить фильтры",
|
||
"security_banner_title": "Сторонние плагины работают с полным доступом к бэкенду",
|
||
"security_banner_text": "Плагины выполняют код внутри прокси-сервиса и могут читать ваши учётные данные и трафик. Устанавливайте только плагины, которым доверяете, — особенно осторожно относитесь к плагинам, не опубликованным официальной организацией router-for-me.",
|
||
"badge_untrusted": "Сторонний",
|
||
"gate_title": "Установка {{name}}",
|
||
"gate_title_update": "Обновление {{name}}",
|
||
"gate_warning": "Если вы не прочитаете это, могут произойти неожиданные и опасные последствия.",
|
||
"gate_effect_runs_code": "Этот плагин будет выполнять несертифицированный сторонний код внутри вашего прокси-бэкенда. Система не может изолировать или аудировать его поведение, и он может получить доступ к вашим конфиденциальным учётным данным, сетевым запросам и данным ответов.",
|
||
"gate_effect_no_review": "Этот плагин не опубликован и не проверен официальной организацией router-for-me. Официальная организация не предоставляет никаких явных или подразумеваемых гарантий стабильности, безопасности, соответствия требованиям или любых изменений поведения в последующих версиях этого плагина.",
|
||
"gate_effect_restart": "Установка изменяет локальный каталог плагинов и может потребовать перезапуска сервиса.",
|
||
"gate_untrusted_alert": "Этот плагин не от официальной организации router-for-me. Продолжайте, только если полностью доверяете его автору и источнику.",
|
||
"gate_repository_label": "Репозиторий",
|
||
"gate_source_label": "Источник",
|
||
"gate_step1_action": "Я хочу установить этот плагин",
|
||
"gate_step2_action": "Я прочитал и понимаю эти риски",
|
||
"gate_step3_prompt": "Для подтверждения введите «{{token}}» в поле ниже",
|
||
"gate_step3_action": "Установить этот плагин",
|
||
"gate_step3_hint": "Введите точный идентификатор, показанный выше, чтобы включить установку."
|
||
},
|
||
"system_info": {
|
||
"title": "Информация о центре управления",
|
||
"about_title": "CLI Proxy API Management Center",
|
||
"connection_status_title": "Статус подключения",
|
||
"api_status_label": "Статус API:",
|
||
"config_status_label": "Статус конфигурации:",
|
||
"last_update_label": "Последнее обновление:",
|
||
"cache_data": "Данные из кэша",
|
||
"real_time_data": "Данные в реальном времени",
|
||
"not_loaded": "Не загружено",
|
||
"seconds_ago": "секунд назад",
|
||
"models_title": "Доступные модели",
|
||
"models_desc": "Показывает ответ /models и автоматически использует сохранённые API-ключи для авторизации.",
|
||
"models_loading": "Загрузка доступных моделей...",
|
||
"models_empty": "Сервис /models не вернул модели",
|
||
"models_error": "Не удалось загрузить список моделей",
|
||
"models_count": "Доступно моделей: {{count}}",
|
||
"version_check_title": "Проверка обновлений",
|
||
"version_check_desc": "Вызовите эндпоинт /latest-version, чтобы сравнить с версией сервера и узнать о доступных обновлениях.",
|
||
"version_current_label": "Текущая версия",
|
||
"version_latest_label": "Последняя версия",
|
||
"version_check_button": "Проверить обновления",
|
||
"version_check_idle": "Нажмите, чтобы проверить обновления",
|
||
"version_checking": "Поиск последней версии...",
|
||
"version_update_available": "Доступно обновление: {{version}}",
|
||
"version_is_latest": "Установлена последняя версия",
|
||
"version_check_error": "Не удалось проверить обновление",
|
||
"version_current_missing": "Версия сервера недоступна; сравнение невозможно",
|
||
"version_unknown": "Неизвестно",
|
||
"quick_links_title": "Быстрые ссылки",
|
||
"quick_links_desc": "Доступ к репозиториям проекта и документации для помощи и обновлений.",
|
||
"link_main_repo": "Основной репозиторий",
|
||
"link_main_repo_desc": "Исходный код основной программы CLI Proxy API",
|
||
"link_webui_repo": "Репозиторий WebUI",
|
||
"link_webui_repo_desc": "Исходный код фронтенда центра управления",
|
||
"link_docs": "Документация",
|
||
"link_docs_desc": "Учебные пособия и руководства по настройке",
|
||
"clear_login_title": "Локальные данные входа",
|
||
"clear_login_desc": "Очистите локально сохранённые данные входа и выполните выход.",
|
||
"clear_login_button": "Очистить данные входа",
|
||
"clear_login_confirm": "Очистить локальные данные входа и выйти?"
|
||
},
|
||
"notification": {
|
||
"debug_updated": "Настройки отладки обновлены",
|
||
"proxy_updated": "Настройки прокси обновлены",
|
||
"proxy_cleared": "Настройки прокси очищены",
|
||
"retry_updated": "Настройки повторов обновлены",
|
||
"quota_switch_project_updated": "Настройки переключения проектов обновлены",
|
||
"quota_switch_preview_updated": "Настройки переключения на preview-модель обновлены",
|
||
"logging_to_file_updated": "Настройки журналирования обновлены",
|
||
"logs_max_total_size_updated": "Лимит размера журналов обновлён",
|
||
"request_log_updated": "Настройка журналирования запросов обновлена",
|
||
"force_model_prefix_updated": "Настройка префикса модели обновлена",
|
||
"ws_auth_updated": "Настройка аутентификации WebSocket обновлена",
|
||
"routing_strategy_updated": "Стратегия маршрутизации обновлена",
|
||
"login_storage_cleared": "Локальные данные входа очищены",
|
||
"api_key_added": "API-ключ успешно добавлен",
|
||
"api_key_updated": "API-ключ успешно обновлён",
|
||
"api_key_deleted": "API-ключ успешно удалён",
|
||
"api_key_invalid_chars": "API-ключ может содержать только буквы, цифры и символы",
|
||
"gemini_key_added": "Ключ Gemini успешно добавлен",
|
||
"gemini_key_updated": "Ключ Gemini успешно обновлён",
|
||
"gemini_key_deleted": "Ключ Gemini успешно удалён",
|
||
"gemini_multi_input_required": "Введите хотя бы один ключ Gemini",
|
||
"gemini_multi_failed": "Пакетное добавление Gemini не удалось",
|
||
"gemini_multi_summary": "Пакетное добавление Gemini завершено: добавлено {{success}}, пропущено {{skipped}}, ошибок {{failed}}",
|
||
"codex_config_added": "Конфигурация Codex успешно добавлена",
|
||
"codex_config_updated": "Конфигурация Codex успешно обновлена",
|
||
"codex_config_deleted": "Конфигурация Codex успешно удалена",
|
||
"codex_base_url_required": "Введите базовый URL Codex",
|
||
"claude_config_added": "Конфигурация Claude успешно добавлена",
|
||
"claude_config_updated": "Конфигурация Claude успешно обновлена",
|
||
"claude_config_deleted": "Конфигурация Claude успешно удалена",
|
||
"vertex_config_added": "Конфигурация Vertex успешно добавлена",
|
||
"vertex_config_updated": "Конфигурация Vertex успешно обновлена",
|
||
"vertex_config_deleted": "Конфигурация Vertex успешно удалена",
|
||
"config_enabled": "Конфигурация включена",
|
||
"config_disabled": "Конфигурация выключена",
|
||
"field_required": "Обязательные поля не могут быть пустыми",
|
||
"openai_provider_required": "Заполните имя провайдера и базовый URL",
|
||
"openai_provider_added": "Провайдер OpenAI успешно добавлен",
|
||
"openai_provider_updated": "Провайдер OpenAI успешно обновлён",
|
||
"openai_provider_deleted": "Провайдер OpenAI успешно удалён",
|
||
"openai_model_name_required": "Введите имя модели",
|
||
"openai_test_url_required": "Укажите корректный базовый URL перед тестированием",
|
||
"openai_test_key_required": "Добавьте хотя бы один API-ключ перед тестированием",
|
||
"openai_test_model_required": "Выберите модель для теста",
|
||
"data_refreshed": "Данные успешно обновлены",
|
||
"connection_required": "Сначала установите подключение",
|
||
"refresh_failed": "Не удалось обновить",
|
||
"update_failed": "Не удалось обновить",
|
||
"add_failed": "Не удалось добавить",
|
||
"delete_failed": "Не удалось удалить",
|
||
"upload_failed": "Не удалось загрузить",
|
||
"download_failed": "Не удалось скачать",
|
||
"login_failed": "Вход не выполнен",
|
||
"please_enter": "Пожалуйста, введите",
|
||
"please_fill": "Пожалуйста, заполните",
|
||
"provider_name_url": "имя провайдера и базовый URL",
|
||
"api_key": "API-ключ",
|
||
"gemini_api_key": "API-ключ Gemini",
|
||
"codex_api_key": "API-ключ Codex",
|
||
"claude_api_key": "API-ключ Claude",
|
||
"commercial_mode_restart_required": "Режим коммерческого использования изменён. Перезапустите сервис, чтобы применить изменения",
|
||
"copy_failed": "Не удалось скопировать",
|
||
"link_copied": "Ссылка скопирована в буфер обмена"
|
||
},
|
||
"language": {
|
||
"switch": "Язык",
|
||
"chinese": "中文",
|
||
"chinese_tw": "繁體中文(台灣)",
|
||
"english": "English",
|
||
"russian": "Русский"
|
||
},
|
||
"theme": {
|
||
"switch": "Тема",
|
||
"light": "Шерстяная бумага",
|
||
"white": "Чисто-белая",
|
||
"dark": "Тёмная",
|
||
"switch_to_light": "Переключиться на тему «Шерстяная бумага»",
|
||
"switch_to_dark": "Переключиться на тёмную тему",
|
||
"auto": "Следовать системе"
|
||
},
|
||
"sidebar": {
|
||
"toggle_expand": "Развернуть боковую панель",
|
||
"toggle_collapse": "Свернуть боковую панель"
|
||
},
|
||
"footer": {
|
||
"api_version": "Версия CLI Proxy API",
|
||
"build_date": "Время сборки",
|
||
"version": "Версия интерфейса управления",
|
||
"author": "Автор"
|
||
},
|
||
"providersPage": {
|
||
"header": {
|
||
"title": "AI Провайдеры",
|
||
"activeResources": "{{active}}/{{total}} активных",
|
||
"providerFamilies": "{{count}} семейств",
|
||
"updatedAt": "Обновлено {{time}}",
|
||
"issueCount": "{{count}} проблем"
|
||
},
|
||
"actions": {
|
||
"refresh": "Обновить",
|
||
"syncing": "Синхронизация",
|
||
"new": "Создать",
|
||
"edit": "Изменить",
|
||
"view": "Просмотр",
|
||
"delete": "Удалить",
|
||
"clear": "Очистить",
|
||
"cancel": "Отмена",
|
||
"save": "Сохранить",
|
||
"create": "Создать",
|
||
"enable": "Включить",
|
||
"disable": "Отключить"
|
||
},
|
||
"categories": {
|
||
"title": "Провайдеры",
|
||
"activeCount": "{{active}}/{{total}} активных"
|
||
},
|
||
"providerNames": {
|
||
"gemini": "Gemini",
|
||
"codex": "Codex",
|
||
"claude": "Claude",
|
||
"vertex": "Vertex",
|
||
"openaiCompatibility": "OpenAI-совместимый"
|
||
},
|
||
"table": {
|
||
"key": "Ключ",
|
||
"baseUrl": "Base URL",
|
||
"prefix": "Префикс",
|
||
"models": "Модели/Заголовки",
|
||
"status": "Статус",
|
||
"actions": "Действия",
|
||
"metrics": {
|
||
"models": "Модели",
|
||
"keys": "Ключи",
|
||
"headers": "Заголовки"
|
||
},
|
||
"websocketsTag": "WebSockets",
|
||
"cloakTag": "Cloak",
|
||
"empty": "Нет ресурсов, нажмите \"Создать\".",
|
||
"filterPlaceholder": "Поиск по ключам, URL, префиксам…",
|
||
"description": "Управление ресурсами {{route}}",
|
||
"providerIssue": "Проблема с провайдером"
|
||
},
|
||
"status": {
|
||
"active": "Активен",
|
||
"disabled": "Отключён",
|
||
"notSet": "Не задано",
|
||
"none": "Нет",
|
||
"notConfigured": "Не настроено",
|
||
"defaultSuffix": "(по умолчанию)"
|
||
},
|
||
"detail": {
|
||
"title": "Подробности",
|
||
"metadataTitle": "Метаданные",
|
||
"fields": {
|
||
"identifier": "Идентификатор",
|
||
"baseUrl": "Base URL",
|
||
"proxyUrl": "Proxy URL",
|
||
"prefix": "Префикс",
|
||
"models": "Моделей",
|
||
"headers": "Заголовков",
|
||
"authIndex": "Auth Index",
|
||
"excludedModels": "Исключённых моделей",
|
||
"apiKeyEntries": "API-ключей"
|
||
}
|
||
},
|
||
"form": {
|
||
"createEyebrow": "Создать",
|
||
"editEyebrow": "Изменить",
|
||
"name": "Название",
|
||
"apiKey": "API-ключ",
|
||
"apiKeyCreatePlaceholder": "Введите API-ключ",
|
||
"apiKeyEditPlaceholder": "Оставьте пустым, чтобы не менять",
|
||
"baseUrl": "Base URL",
|
||
"baseUrlRequiredHint": "Обязательно для этого провайдера",
|
||
"proxyUrl": "Proxy URL",
|
||
"prefix": "Префикс",
|
||
"priority": "Приоритет",
|
||
"disabled": "Отключить эту запись",
|
||
"disabledHint": "Отключённые записи не используются шлюзом",
|
||
"websockets": "Включить WebSockets",
|
||
"testModel": "Тестовая модель",
|
||
"testModelClaudeHint": "Используется только для проверки соединения; не сохраняется",
|
||
"testModelAutoWith": "Авто · {{name}}",
|
||
"testModelAutoEmpty": "Авто (модели ещё не добавлены)",
|
||
"testModelCustom": "{{name}} (своя)",
|
||
"modelsSection": "Пользовательские модели",
|
||
"addModel": "Добавить модель",
|
||
"headersSection": "Заголовки запроса",
|
||
"addHeader": "Добавить заголовок",
|
||
"headers": "Заголовки",
|
||
"headersHint": "По одному в строке, формат Key: Value",
|
||
"excludedSection": "Исключённые модели",
|
||
"excludedHint": "По одной модели в строке; совпавшие модели не будут направлены",
|
||
"cloakSection": "Настройки Cloak",
|
||
"cloakMode": "Режим",
|
||
"cloakStrict": "Строгий режим",
|
||
"cloakSensitiveWords": "Стоп-слова (по одному в строке)",
|
||
"apiKeyEntriesSection": "API-ключи",
|
||
"apiKeyEntry": "Ключ #{{index}}",
|
||
"addApiKeyEntry": "Добавить ключ",
|
||
"showApiKey": "Показать ключ API",
|
||
"hideApiKey": "Скрыть ключ API",
|
||
"disableCooling": "Отключить cooldown",
|
||
"disableCoolingHint": "Отключает окна охлаждения после ошибок только для этой записи",
|
||
"modelEntry": "Модель #{{index}}",
|
||
"modelImage": "Разрешить image endpoints",
|
||
"modelImageHint": "Разрешить модель для /v1/images/generations и /v1/images/edits",
|
||
"thinkingConfig": "Thinking config (JSON)",
|
||
"thinkingConfigHint": "Поддерживает levels, min, max, zero_allowed, dynamic_allowed",
|
||
"cloakCacheUserId": "Кэшировать user_id",
|
||
"cloakCacheUserIdHint": "Переиспользовать Claude cloak user_id для каждого API-ключа",
|
||
"experimentalCchSigning": "Экспериментальная CCH-подпись",
|
||
"experimentalCchSigningHint": "Подписывать финальное тело cloaked Claude /v1/messages через CCH",
|
||
"validation": {
|
||
"nameRequired": "Название обязательно",
|
||
"apiKeyRequired": "Нужен хотя бы один API-ключ",
|
||
"baseUrlRequired": "Base URL обязателен"
|
||
}
|
||
},
|
||
"delete": {
|
||
"title": "Удалить ресурс",
|
||
"confirm": "Удалить {{name}}? Действие необратимо."
|
||
},
|
||
"toast": {
|
||
"created": "Создано",
|
||
"updated": "Обновлено",
|
||
"deleted": "Удалено",
|
||
"enabled": "Включено",
|
||
"disabled": "Отключено",
|
||
"toggleFailed": "Не удалось обновить статус"
|
||
},
|
||
"unsavedChanges": {
|
||
"title": "Отменить несохранённые изменения?",
|
||
"message": "В форме есть несохранённые изменения. При закрытии они будут потеряны.",
|
||
"discard": "Отменить изменения",
|
||
"keepEditing": "Продолжить"
|
||
},
|
||
"connectivity": {
|
||
"test": "Проверить",
|
||
"testAll": "Проверить все",
|
||
"success": "Доступно",
|
||
"baseUrlRequired": "Base URL обязателен",
|
||
"endpointInvalid": "Некорректный адрес",
|
||
"apiKeyRequired": "API-ключ обязателен",
|
||
"modelRequired": "Нужна тестовая модель",
|
||
"timeout": "Таймаут после {{seconds}} с",
|
||
"requestFailed": "Запрос не выполнен"
|
||
},
|
||
"discovery": {
|
||
"openButton": "Получить с конечной точки",
|
||
"searchPlaceholder": "Поиск моделей",
|
||
"reload": "Обновить",
|
||
"loading": "Загрузка моделей…",
|
||
"empty": "Конечная точка не вернула моделей",
|
||
"notLoaded": "Нажмите Обновить, чтобы загрузить модели",
|
||
"selectAll": "Выбрать все",
|
||
"clearAll": "Снять выбор",
|
||
"selectedCount": "{{selected}} / {{total}}",
|
||
"alreadyAdded": "Уже добавлено",
|
||
"close": "Закрыть",
|
||
"apply": "Применить ({{count}})"
|
||
},
|
||
"toolbar": {
|
||
"sortBy": "Сортировка",
|
||
"sort": {
|
||
"name": "Имя",
|
||
"priority": "Приоритет",
|
||
"recentSuccess": "Недавние успехи",
|
||
"directionAsc": "По возрастанию",
|
||
"directionDesc": "По убыванию"
|
||
},
|
||
"filter": {
|
||
"allModels": "Все модели",
|
||
"selectedModels": "{{selected}}/{{total}} моделей",
|
||
"selectAll": "Выбрать все",
|
||
"clear": "Очистить",
|
||
"empty": "Модели ещё не настроены"
|
||
}
|
||
},
|
||
"modelCatalog": {
|
||
"notLoaded": "Не загружено"
|
||
}
|
||
}
|
||
}
|