1128 lines
82 KiB
JSON
1128 lines
82 KiB
JSON
{
|
||
"common": {
|
||
"login": "Войти",
|
||
"logout": "Выйти",
|
||
"back": "Назад",
|
||
"cancel": "Отмена",
|
||
"confirm": "Подтвердить",
|
||
"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": "Прокси",
|
||
"alias": "Псевдоним",
|
||
"failure": "Сбой",
|
||
"unknown_error": "Неизвестная ошибка",
|
||
"quota_update_required": "Пожалуйста, обновите CPA или проверьте наличие обновлений",
|
||
"quota_check_credential": "Пожалуйста, проверьте статус учётных данных",
|
||
"copy": "Копировать",
|
||
"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": "Псевдоним модели (необязательно)"
|
||
},
|
||
"title": {
|
||
"main": "Центр управления CLI Proxy API",
|
||
"login": "Центр управления CLI Proxy API",
|
||
"abbr": "CPAMC"
|
||
},
|
||
"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_required": "Пожалуйста, заполните все данные подключения",
|
||
"error_invalid": "Подключение не удалось, проверьте адрес и ключ",
|
||
"error_network": "Сетевая ошибка, проверьте подключение или адрес сервера",
|
||
"error_timeout": "Время ожидания истекло, сервер не отвечает",
|
||
"error_unauthorized": "Аутентификация не удалась, неверный ключ управления",
|
||
"error_forbidden": "Доступ запрещён, недостаточно прав",
|
||
"error_not_found": "Неверный адрес сервера или интерфейс управления не включён",
|
||
"error_server": "Внутренняя ошибка сервера, попробуйте позже",
|
||
"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": "Управление квотами",
|
||
"usage_stats": "Статистика использования",
|
||
"config_management": "Панель конфигурации",
|
||
"logs": "Просмотр логов",
|
||
"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}} O:{{openai}}",
|
||
"oauth_credentials": "Учётные данные OAuth",
|
||
"usage_overview": "Обзор использования",
|
||
"total_requests": "Всего запросов",
|
||
"total_tokens": "Всего токенов",
|
||
"rpm_30min": "RPM (30 мин)",
|
||
"tpm_30min": "TPM (30 мин)",
|
||
"models_used": "Используемые модели",
|
||
"no_usage_data": "Данные об использовании отсутствуют",
|
||
"view_detailed_usage": "Просмотреть детальную статистику",
|
||
"edit_settings": "Изменить настройки",
|
||
"available_models": "Доступные модели",
|
||
"available_models_desc": "Всего моделей от всех провайдеров"
|
||
},
|
||
"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-модель",
|
||
"usage_statistics_title": "Статистика использования",
|
||
"usage_statistics_enable": "Включить статистику использования",
|
||
"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-ключ?"
|
||
},
|
||
"ai_providers": {
|
||
"title": "Конфигурация AI-провайдеров",
|
||
"gemini_title": "API-ключи Gemini",
|
||
"gemini_add_button": "Добавить ключ",
|
||
"gemini_empty_title": "Ключи Gemini отсутствуют",
|
||
"gemini_empty_desc": "Нажмите кнопку выше, чтобы добавить первый ключ",
|
||
"gemini_item_title": "Ключ Gemini",
|
||
"gemini_add_modal_title": "Добавление API-ключа Gemini",
|
||
"gemini_add_modal_key_label": "API-ключи:",
|
||
"gemini_add_modal_key_placeholder": "Введите API-ключ Gemini",
|
||
"gemini_add_modal_key_hint": "Добавляйте ключи по одному и при необходимости указывайте базовый URL.",
|
||
"gemini_keys_add_btn": "Добавить ключ",
|
||
"gemini_base_url_label": "Базовый URL (необязательно):",
|
||
"gemini_base_url_placeholder": "например: https://generativelanguage.googleapis.com",
|
||
"gemini_edit_modal_title": "Редактирование API-ключа Gemini",
|
||
"gemini_edit_modal_key_label": "API-ключ:",
|
||
"gemini_delete_confirm": "Удалить этот ключ Gemini?",
|
||
"excluded_models_label": "Исключённые модели (необязательно):",
|
||
"excluded_models_placeholder": "Через запятую или с новой строки, например gemini-1.5-pro, gemini-1.5-flash",
|
||
"excluded_models_hint": "Оставьте пустым, чтобы разрешить все модели; значения автоматически обрезаются и дедуплицируются.",
|
||
"excluded_models_count": "Исключено моделей: {{count}}",
|
||
"prefix_label": "Префикс (необязательно):",
|
||
"prefix_placeholder": "например: team-a",
|
||
"prefix_hint": "Если задано, обращайтесь к моделям как prefix/<model>, чтобы выбрать эту запись.",
|
||
"config_toggle_label": "Включено",
|
||
"config_disabled_badge": "Отключено",
|
||
"codex_title": "Конфигурация Codex API",
|
||
"codex_add_button": "Добавить конфигурацию",
|
||
"codex_empty_title": "Конфигурации Codex отсутствуют",
|
||
"codex_empty_desc": "Нажмите кнопку выше, чтобы добавить первую конфигурацию",
|
||
"codex_item_title": "Конфигурация Codex",
|
||
"codex_add_modal_title": "Добавление конфигурации Codex API",
|
||
"codex_add_modal_key_label": "API-ключ:",
|
||
"codex_add_modal_key_placeholder": "Введите API-ключ Codex",
|
||
"codex_add_modal_url_label": "Базовый URL (обязательно):",
|
||
"codex_add_modal_url_placeholder": "например: https://api.example.com",
|
||
"codex_add_modal_proxy_label": "URL прокси (необязательно):",
|
||
"codex_add_modal_proxy_placeholder": "например: socks5://proxy.example.com:1080",
|
||
"codex_edit_modal_title": "Редактирование конфигурации Codex API",
|
||
"codex_edit_modal_key_label": "API-ключ:",
|
||
"codex_edit_modal_url_label": "Базовый URL (обязательно):",
|
||
"codex_edit_modal_proxy_label": "URL прокси (необязательно):",
|
||
"codex_delete_confirm": "Удалить эту конфигурацию Codex?",
|
||
"claude_title": "Конфигурация Claude API",
|
||
"claude_add_button": "Добавить конфигурацию",
|
||
"claude_empty_title": "Конфигурации Claude отсутствуют",
|
||
"claude_empty_desc": "Нажмите кнопку выше, чтобы добавить первую конфигурацию",
|
||
"claude_item_title": "Конфигурация Claude",
|
||
"claude_add_modal_title": "Добавление конфигурации Claude API",
|
||
"claude_add_modal_key_label": "API-ключ:",
|
||
"claude_add_modal_key_placeholder": "Введите API-ключ Claude",
|
||
"claude_add_modal_url_label": "Базовый URL (необязательно):",
|
||
"claude_add_modal_url_placeholder": "например: https://api.anthropic.com",
|
||
"claude_add_modal_proxy_label": "URL прокси (необязательно):",
|
||
"claude_add_modal_proxy_placeholder": "например: socks5://proxy.example.com:1080",
|
||
"claude_edit_modal_title": "Редактирование конфигурации Claude API",
|
||
"claude_edit_modal_key_label": "API-ключ:",
|
||
"claude_edit_modal_url_label": "Базовый URL (необязательно):",
|
||
"claude_edit_modal_proxy_label": "URL прокси (необязательно):",
|
||
"claude_delete_confirm": "Удалить эту конфигурацию Claude?",
|
||
"claude_models_label": "Пользовательские модели (необязательно):",
|
||
"claude_models_hint": "Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их.",
|
||
"claude_models_add_btn": "Добавить модель",
|
||
"claude_models_count": "Количество моделей",
|
||
"vertex_title": "Конфигурация Vertex API",
|
||
"vertex_add_button": "Добавить конфигурацию",
|
||
"vertex_empty_title": "Конфигурации Vertex отсутствуют",
|
||
"vertex_empty_desc": "Нажмите кнопку выше, чтобы добавить первую конфигурацию",
|
||
"vertex_item_title": "Конфигурация Vertex",
|
||
"vertex_add_modal_title": "Добавление конфигурации Vertex API",
|
||
"vertex_add_modal_key_label": "API-ключ:",
|
||
"vertex_add_modal_key_placeholder": "Введите API-ключ Vertex",
|
||
"vertex_add_modal_url_label": "Базовый URL (обязательно):",
|
||
"vertex_add_modal_url_placeholder": "например: https://example.com/api",
|
||
"vertex_add_modal_proxy_label": "URL прокси (необязательно):",
|
||
"vertex_add_modal_proxy_placeholder": "например: socks5://proxy.example.com:1080",
|
||
"vertex_edit_modal_title": "Редактирование конфигурации Vertex API",
|
||
"vertex_edit_modal_key_label": "API-ключ:",
|
||
"vertex_edit_modal_url_label": "Базовый URL (обязательно):",
|
||
"vertex_edit_modal_proxy_label": "URL прокси (необязательно):",
|
||
"vertex_delete_confirm": "Удалить эту конфигурацию Vertex?",
|
||
"vertex_models_label": "Псевдонимы моделей (требуется псевдоним):",
|
||
"vertex_models_add_btn": "Добавить сопоставление",
|
||
"vertex_models_hint": "Каждому псевдониму требуются исходная модель и псевдоним.",
|
||
"vertex_models_count": "Количество псевдонимов",
|
||
"ampcode_title": "Интеграция Amp CLI (ampcode)",
|
||
"ampcode_modal_title": "Настройка Ampcode",
|
||
"ampcode_upstream_url_label": "Upstream URL",
|
||
"ampcode_upstream_url_placeholder": "например: https://ampcode.com",
|
||
"ampcode_upstream_url_hint": "Необязательно. Оставьте пустым, чтобы использовать URL плоскости управления по умолчанию/обнаруженный автоматически.",
|
||
"ampcode_upstream_api_key_label": "Upstream API-ключ (официальный Amp)",
|
||
"ampcode_upstream_api_key_placeholder": "Введите sk-amp... (оставьте пустым, чтобы сохранить текущий)",
|
||
"ampcode_upstream_api_key_hint": "Необязательно. Пустое значение не изменит текущий официальный ключ Amp. Используйте кнопку ниже, чтобы очистить его.",
|
||
"ampcode_upstream_api_key_current": "Текущий официальный ключ Amp: {{key}}",
|
||
"ampcode_clear_upstream_api_key": "Очистить официальный ключ",
|
||
"ampcode_clear_upstream_api_key_confirm": "Очистить upstream API-ключ Ampcode (официальный Amp)?",
|
||
"ampcode_force_model_mappings_label": "Принудительно применять сопоставления моделей",
|
||
"ampcode_force_model_mappings_hint": "При включении сопоставления переопределяют локальные проверки доступности API-ключей.",
|
||
"ampcode_model_mappings_label": "Сопоставления моделей (из → в)",
|
||
"ampcode_model_mappings_hint": "Переименовывает модели в запросах Amp. Оставьте пустым, чтобы отключить сопоставления.",
|
||
"ampcode_model_mappings_add_btn": "Добавить сопоставление",
|
||
"ampcode_model_mappings_from_placeholder": "исходная модель",
|
||
"ampcode_model_mappings_to_placeholder": "целевая модель",
|
||
"ampcode_model_mappings_count": "Количество сопоставлений",
|
||
"ampcode_mappings_overwrite_confirm": "Не удалось загрузить существующие сопоставления. Продолжение может перезаписать или очистить их. Продолжить?",
|
||
"openai_title": "Совместимые с OpenAI провайдеры",
|
||
"openai_add_button": "Добавить провайдера",
|
||
"openai_empty_title": "Провайдеры OpenAI отсутствуют",
|
||
"openai_empty_desc": "Нажмите кнопку выше, чтобы добавить первого провайдера",
|
||
"openai_add_modal_title": "Добавление совместимого с OpenAI провайдера",
|
||
"openai_add_modal_name_label": "Имя провайдера:",
|
||
"openai_add_modal_name_placeholder": "например: openrouter",
|
||
"openai_add_modal_url_label": "Базовый URL:",
|
||
"openai_add_modal_url_placeholder": "например: https://openrouter.ai/api/v1",
|
||
"openai_add_modal_keys_label": "API-ключи",
|
||
"openai_edit_modal_keys_label": "API-ключи",
|
||
"openai_keys_hint": "Добавляйте каждый ключ отдельно с необязательным URL прокси для удобства.",
|
||
"openai_keys_add_btn": "Добавить ключ",
|
||
"openai_key_placeholder": "ключ вида sk-...",
|
||
"openai_proxy_placeholder": "Необязательный URL прокси (например, socks5://...)",
|
||
"openai_add_modal_models_label": "Список моделей (name[, alias] по строкам):",
|
||
"openai_models_hint": "Пример: gpt-4o-mini или moonshotai/kimi-k2:free, kimi-k2",
|
||
"openai_model_name_placeholder": "Имя модели, например moonshotai/kimi-k2:free",
|
||
"openai_model_alias_placeholder": "Псевдоним модели (необязательно)",
|
||
"openai_models_add_btn": "Добавить модель",
|
||
"openai_models_fetch_button": "Получить через /models",
|
||
"openai_models_fetch_title": "Выбор моделей из /models",
|
||
"openai_models_fetch_hint": "Вызовите эндпоинт /models, используя указанный выше базовый URL, отправив первый API-ключ как Bearer с дополнительными заголовками.",
|
||
"openai_models_fetch_url_label": "URL запроса",
|
||
"openai_models_fetch_refresh": "Обновить",
|
||
"openai_models_fetch_loading": "Получение моделей из /models...",
|
||
"openai_models_fetch_empty": "Модели не вернулись. Проверьте эндпоинт или авторизацию.",
|
||
"openai_models_fetch_error": "Не удалось получить модели",
|
||
"openai_models_fetch_back": "Вернуться к редактированию",
|
||
"openai_models_fetch_apply": "Добавить выбранные модели",
|
||
"openai_models_search_label": "Поиск моделей",
|
||
"openai_models_search_placeholder": "Фильтр по имени, псевдониму или описанию",
|
||
"openai_models_search_empty": "Модели по запросу не найдены. Попробуйте другой ключ.",
|
||
"openai_models_fetch_invalid_url": "Сначала введите корректный базовый URL",
|
||
"openai_models_fetch_added": "Добавлено новых моделей: {{count}}",
|
||
"openai_edit_modal_title": "Редактирование совместимого с OpenAI провайдера",
|
||
"openai_edit_modal_name_label": "Имя провайдера:",
|
||
"openai_edit_modal_url_label": "Базовый URL:",
|
||
"openai_edit_modal_models_label": "Список моделей (name[, alias] по строкам):",
|
||
"openai_delete_confirm": "Удалить этого провайдера OpenAI?",
|
||
"openai_keys_count": "Количество ключей",
|
||
"openai_models_count": "Количество моделей",
|
||
"openai_test_title": "Тест подключения",
|
||
"openai_test_hint": "Отправьте запрос /chat/completions с текущими настройками, чтобы проверить доступность.",
|
||
"openai_test_model_placeholder": "Модель для теста",
|
||
"openai_test_action": "Запустить тест",
|
||
"openai_test_running": "Отправка тестового запроса...",
|
||
"openai_test_timeout": "Тестовый запрос превысил тайм-аут {{seconds}} с",
|
||
"openai_test_success": "Тест выполнен успешно. Модель ответила.",
|
||
"openai_test_failed": "Тест не выполнен",
|
||
"openai_test_select_placeholder": "Выберите из текущих моделей",
|
||
"openai_test_select_empty": "Модели не настроены. Сначала добавьте модели"
|
||
},
|
||
"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": "Изменён",
|
||
"download_button": "Скачать",
|
||
"delete_button": "Удалить",
|
||
"delete_confirm": "Удалить файл",
|
||
"delete_all_confirm": "Удалить все файлы авторизации? Это действие нельзя отменить!",
|
||
"delete_filtered_confirm": "Удалить все файлы авторизации {{type}}? Это действие нельзя отменить!",
|
||
"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}} для удаления при текущем фильтре",
|
||
"files_count": "файлов",
|
||
"pagination_prev": "Предыдущая",
|
||
"pagination_next": "Следующая",
|
||
"pagination_info": "Страница {{current}} / {{total}} · {{count}} файлов",
|
||
"search_label": "Поиск конфигов",
|
||
"search_placeholder": "Фильтр по имени, типу или провайдеру",
|
||
"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_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_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}}\" отключён",
|
||
"prefix_proxy_button": "Изменить prefix/proxy_url",
|
||
"prefix_proxy_loading": "Загрузка учётных данных...",
|
||
"prefix_proxy_source_label": "JSON учётных данных",
|
||
"prefix_label": "prefix",
|
||
"proxy_url_label": "proxy_url",
|
||
"prefix_placeholder": "",
|
||
"proxy_url_placeholder": "socks5://username:password@proxy_ip:port/",
|
||
"prefix_proxy_invalid_json": "Эти учётные данные не являются 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": "Получить все"
|
||
},
|
||
"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": "Недельный лимит",
|
||
"code_review_primary_window": "Лимит code review на 5 часов",
|
||
"code_review_secondary_window": "Недельный лимит code review",
|
||
"plan_label": "Тариф",
|
||
"plan_plus": "Plus",
|
||
"plan_team": "Team",
|
||
"plan_free": "Free"
|
||
},
|
||
"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}}"
|
||
},
|
||
"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": "Эта функция требует более новой версии CLI Proxy API (CPA). Обновите систему.",
|
||
"upgrade_required_title": "Пожалуйста, обновите CLI Proxy API",
|
||
"upgrade_required_desc": "Текущая версия сервера не поддерживает API исключённых моделей OAuth. Обновите CLI Proxy API (CPA) до последней версии."
|
||
},
|
||
"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": "Псевдоним (обязательно)",
|
||
"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": "Необязательно. Если не указано, система автоматически выберет первый доступный проект вашей учётной записи.",
|
||
"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": "Не удалось проверить статус аутентификации:",
|
||
"qwen_oauth_title": "Qwen OAuth",
|
||
"qwen_oauth_button": "Начать вход Qwen",
|
||
"qwen_oauth_hint": "Выполните вход в сервис Qwen через поток авторизации устройства и автоматически получите/сохраните файлы авторизации.",
|
||
"qwen_oauth_url_label": "URL авторизации:",
|
||
"qwen_open_link": "Открыть ссылку",
|
||
"qwen_copy_link": "Скопировать ссылку",
|
||
"qwen_oauth_status_waiting": "Ожидание аутентификации...",
|
||
"qwen_oauth_status_success": "Аутентификация успешна!",
|
||
"qwen_oauth_status_error": "Ошибка аутентификации:",
|
||
"qwen_oauth_start_error": "Не удалось запустить Qwen OAuth:",
|
||
"qwen_oauth_polling_error": "Не удалось проверить статус аутентификации:",
|
||
"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": "Не удалось получить параметр состояния аутентификации",
|
||
"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": "Не удалось проверить статус аутентификации:",
|
||
"iflow_cookie_title": "Вход iFlow по cookie",
|
||
"iflow_cookie_label": "Значение cookie:",
|
||
"iflow_cookie_placeholder": "Введите значение BXAuth, начиная с BXAuth=",
|
||
"iflow_cookie_hint": "Отправьте существующий cookie, чтобы завершить вход без открытия ссылки авторизации; файл учётных данных будет сохранён автоматически.",
|
||
"iflow_cookie_key_hint": "Примечание: сначала создайте ключ на платформе.",
|
||
"iflow_cookie_button": "Отправить вход по cookie",
|
||
"iflow_cookie_status_success": "Вход по cookie выполнен, учётные данные сохранены.",
|
||
"iflow_cookie_status_error": "Ошибка входа по cookie:",
|
||
"iflow_cookie_status_duplicate": "Дублирующая конфигурация:",
|
||
"iflow_cookie_start_error": "Не удалось отправить вход по cookie:",
|
||
"iflow_cookie_config_duplicate": "Такая конфигурация уже существует. Удалите файл и повторите, если хотите перезаписать.",
|
||
"iflow_cookie_required": "Сначала укажите значение cookie.",
|
||
"iflow_cookie_result_title": "Результат входа по cookie",
|
||
"iflow_cookie_result_email": "Аккаунт",
|
||
"iflow_cookie_result_expired": "Истекает",
|
||
"iflow_cookie_result_path": "Путь сохранения",
|
||
"iflow_cookie_result_type": "Тип",
|
||
"remote_access_disabled": "Этот способ входа недоступен при удалённом доступе. Подключитесь с localhost."
|
||
},
|
||
"usage_stats": {
|
||
"title": "Статистика использования",
|
||
"total_requests": "Всего запросов",
|
||
"success_requests": "Успешные запросы",
|
||
"failed_requests": "Неуспешные запросы",
|
||
"total_tokens": "Всего токенов",
|
||
"cached_tokens": "Кэшированные токены",
|
||
"reasoning_tokens": "Токены рассуждений",
|
||
"rpm_30m": "RPM",
|
||
"tpm_30m": "TPM",
|
||
"rate_30m": "Скорость (последние 30 мин)",
|
||
"model_name": "Название модели",
|
||
"model_price_settings": "Настройки стоимости моделей",
|
||
"saved_prices": "Сохранённые цены",
|
||
"requests_trend": "Динамика запросов",
|
||
"tokens_trend": "Динамика токенов",
|
||
"api_details": "Детали API",
|
||
"by_hour": "По часам",
|
||
"by_day": "По дням",
|
||
"refresh": "Обновить",
|
||
"export": "Экспорт",
|
||
"import": "Импорт",
|
||
"export_success": "Экспорт использования скачан",
|
||
"import_success": "Импорт завершён: добавлено {{added}}, пропущено {{skipped}}, всего {{total}}, ошибок {{failed}}",
|
||
"import_invalid": "Недопустимый файл экспорта использования",
|
||
"chart_line_label_1": "Линия 1",
|
||
"chart_line_label_2": "Линия 2",
|
||
"chart_line_label_3": "Линия 3",
|
||
"chart_line_label_4": "Линия 4",
|
||
"chart_line_label_5": "Линия 5",
|
||
"chart_line_label_6": "Линия 6",
|
||
"chart_line_label_7": "Линия 7",
|
||
"chart_line_label_8": "Линия 8",
|
||
"chart_line_label_9": "Линия 9",
|
||
"chart_line_hidden": "Скрыть",
|
||
"chart_line_actions_label": "Линии для отображения",
|
||
"chart_line_add": "Добавить линию",
|
||
"chart_line_all": "Все",
|
||
"chart_line_delete": "Удалить линию",
|
||
"chart_line_hint": "Отображайте до 9 линий моделей одновременно",
|
||
"no_data": "Данные отсутствуют",
|
||
"loading_error": "Не удалось загрузить",
|
||
"api_endpoint": "API-эндпоинт",
|
||
"requests_count": "Количество запросов",
|
||
"tokens_count": "Количество токенов",
|
||
"models": "Статистика моделей",
|
||
"success_rate": "Успешность",
|
||
"total_cost": "Общая стоимость",
|
||
"total_cost_hint": "Основано на настроенной стоимости моделей",
|
||
"model_price_title": "Стоимость моделей",
|
||
"model_price_reset": "Сбросить цены",
|
||
"model_price_model_label": "Модель",
|
||
"model_price_select_placeholder": "Выберите модель",
|
||
"model_price_select_hint": "Модели берутся из детальной статистики использования",
|
||
"model_price_prompt": "Цена prompt",
|
||
"model_price_completion": "Цена completion",
|
||
"model_price_cache": "Цена кэша",
|
||
"model_price_save": "Сохранить цену",
|
||
"model_price_empty": "Цена для моделей не задана",
|
||
"model_price_model": "Модель",
|
||
"model_price_saved": "Цена модели сохранена",
|
||
"model_price_model_required": "Выберите модель для задания цены",
|
||
"cost_trend": "Обзор стоимости",
|
||
"cost_axis_label": "Стоимость ($)",
|
||
"cost_need_price": "Задайте стоимость модели, чтобы увидеть статистику затрат",
|
||
"cost_need_usage": "Нет данных использования для расчёта стоимости",
|
||
"cost_no_data": "Данных о стоимости ещё нет"
|
||
},
|
||
"stats": {
|
||
"success": "Успех",
|
||
"failure": "Сбой"
|
||
},
|
||
"logs": {
|
||
"title": "Просмотр журналов",
|
||
"refresh_button": "Обновить журналы",
|
||
"clear_button": "Очистить журналы",
|
||
"download_button": "Скачать журналы",
|
||
"error_log_button": "Выбрать журнал ошибок",
|
||
"error_logs_modal_title": "Журналы ошибок запросов",
|
||
"error_logs_description": "Выберите файл журнала ошибок запроса для скачивания (создаётся только при отключённом журналировании запросов).",
|
||
"error_logs_request_log_enabled": "Журналирование запросов включено, поэтому этот список всегда будет пустым. Отключите журналирование запросов и обновите список, чтобы просмотреть журналы ошибок.",
|
||
"error_logs_empty": "Файлы журнала ошибок запросов не найдены",
|
||
"error_logs_load_error": "Не удалось загрузить список журналов ошибок",
|
||
"error_logs_size": "Размер",
|
||
"error_logs_modified": "Изменён",
|
||
"error_logs_download": "Скачать",
|
||
"error_log_download_success": "Журнал ошибок успешно скачан",
|
||
"request_log_download_title": "Скачать журнал запросов",
|
||
"request_log_download_confirm": "Скачать журнал запросов с идентификатором {{id}}?",
|
||
"request_log_download_success": "Журнал запросов успешно скачан",
|
||
"empty_title": "Журналы недоступны",
|
||
"empty_desc": "Когда включена опция \"Включить журналирование в файл\", журналы появятся здесь",
|
||
"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": "Искать по содержимому или ключевым словам",
|
||
"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": "Перезагрузить",
|
||
"save": "Сохранить",
|
||
"description": "Редактируйте config.yaml через визуальный редактор или исходный файл",
|
||
"status_idle": "Ожидание действия",
|
||
"status_loading": "Загрузка конфигурации...",
|
||
"status_loaded": "Конфигурация загружена",
|
||
"status_dirty": "Есть несохранённые изменения",
|
||
"status_disconnected": "Подключитесь к серверу, чтобы загрузить конфигурацию",
|
||
"status_load_failed": "Не удалось загрузить",
|
||
"status_saving": "Сохранение конфигурации...",
|
||
"status_saved": "Конфигурация сохранена",
|
||
"status_save_failed": "Не удалось сохранить",
|
||
"save_success": "Конфигурация успешно сохранена",
|
||
"error_yaml_not_supported": "Сервер не вернул YAML. Убедитесь, что доступна конечная точка /config.yaml.",
|
||
"editor_placeholder": "key: value",
|
||
"search_placeholder": "Поиск по конфигурации...",
|
||
"search_button": "Поиск",
|
||
"search_no_results": "Нет результатов",
|
||
"search_prev": "Назад",
|
||
"search_next": "Вперёд",
|
||
"tabs": {
|
||
"visual": "Визуальный редактор",
|
||
"source": "Редактор файла"
|
||
},
|
||
"visual": {
|
||
"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": "Отключить встроенную веб-панель управления",
|
||
"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": "Сохранять журналы во вращающиеся файлы",
|
||
"usage_statistics": "Статистика использования",
|
||
"usage_statistics_desc": "Собирать статистику использования",
|
||
"logs_max_size": "Максимальный размер файла журнала (МБ)",
|
||
"usage_retention_days": "Хранить статистику (дней)",
|
||
"usage_retention_hint": "0 означает без ограничений (без очистки)"
|
||
},
|
||
"network": {
|
||
"title": "Сетевые настройки",
|
||
"description": "Параметры прокси, повторов и маршрутизации",
|
||
"proxy_url": "URL прокси",
|
||
"request_retry": "Количество повторов запросов",
|
||
"max_retry_interval": "Максимальный интервал повтора (сек)",
|
||
"routing_strategy": "Стратегия маршрутизации",
|
||
"routing_strategy_hint": "Выберите стратегию подбора учётных данных",
|
||
"strategy_round_robin": "По кругу",
|
||
"strategy_fill_first": "Сначала заполнить",
|
||
"force_model_prefix": "Принудительный префикс модели",
|
||
"force_model_prefix_desc": "Запросы к моделям без префикса используют только учётные данные без префикса",
|
||
"ws_auth": "Аутентификация WebSocket",
|
||
"ws_auth_desc": "Включить аутентификацию WebSocket (/v1/ws)"
|
||
},
|
||
"quota": {
|
||
"title": "Резерв по квоте",
|
||
"description": "Стратегия при превышении квоты",
|
||
"switch_project": "Переключить проект",
|
||
"switch_project_desc": "Автоматически переходить на другой проект при превышении квоты",
|
||
"switch_preview_model": "Переключить на preview-модель",
|
||
"switch_preview_model_desc": "Переключаться на preview-версию модели при превышении квоты"
|
||
},
|
||
"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": "Значения по умолчанию, правила переопределения и фильтрации",
|
||
"default_rules": "Правила по умолчанию",
|
||
"default_rules_desc": "Использовать эти значения, если параметр не указан в запросе",
|
||
"override_rules": "Правила переопределения",
|
||
"override_rules_desc": "Принудительно задавать значения параметров в запросе",
|
||
"filter_rules": "Правила фильтрации",
|
||
"filter_rules_desc": "Предварительно фильтровать тело исходящего запроса через JSON Path, автоматически удалять несоответствующие или лишние параметры (санитизация запроса)"
|
||
}
|
||
},
|
||
"api_keys": {
|
||
"label": "Список API-ключей (api-keys)",
|
||
"add": "Добавить API-ключ",
|
||
"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": "Тип параметра",
|
||
"add_param": "Добавить параметр",
|
||
"no_rules": "Правил нет",
|
||
"add_rule": "Добавить правило",
|
||
"value_string": "Строковое значение",
|
||
"value_number": "Числовое значение (например, 0.7)",
|
||
"value_boolean": "true или false",
|
||
"value_json": "Значение JSON",
|
||
"value_default": "Значение"
|
||
},
|
||
"common": {
|
||
"edit": "Изменить",
|
||
"delete": "Удалить",
|
||
"cancel": "Отменить",
|
||
"update": "Обновить",
|
||
"add": "Добавить"
|
||
}
|
||
}
|
||
},
|
||
"quota_management": {
|
||
"title": "Управление квотами",
|
||
"description": "Следите за статусом квот OAuth для учётных данных Antigravity, Codex и Gemini CLI.",
|
||
"refresh_files": "Обновить файлы авторизации",
|
||
"refresh_files_and_quota": "Обновить файлы и квоты"
|
||
},
|
||
"system_info": {
|
||
"title": "Информация о центре управления",
|
||
"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-модель обновлены",
|
||
"usage_statistics_updated": "Настройки статистики использования обновлены",
|
||
"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 успешно удалена",
|
||
"vertex_base_url_required": "Введите базовый URL Vertex",
|
||
"config_enabled": "Конфигурация включена",
|
||
"config_disabled": "Конфигурация выключена",
|
||
"field_required": "Обязательные поля не могут быть пустыми",
|
||
"openai_provider_required": "Заполните имя провайдера и базовый URL",
|
||
"openai_provider_added": "Провайдер OpenAI успешно добавлен",
|
||
"openai_provider_updated": "Провайдер OpenAI успешно обновлён",
|
||
"openai_provider_deleted": "Провайдер OpenAI успешно удалён",
|
||
"ampcode_updated": "Настройки Ampcode обновлены",
|
||
"ampcode_upstream_api_key_cleared": "Переопределение upstream-ключа Ampcode очищено",
|
||
"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",
|
||
"link_copied": "Ссылка скопирована в буфер обмена"
|
||
},
|
||
"language": {
|
||
"switch": "Язык",
|
||
"chinese": "中文",
|
||
"english": "English",
|
||
"russian": "Русский"
|
||
},
|
||
"theme": {
|
||
"switch": "Тема",
|
||
"light": "Светлая",
|
||
"dark": "Тёмная",
|
||
"switch_to_light": "Переключиться на светлую тему",
|
||
"switch_to_dark": "Переключиться на тёмную тему",
|
||
"auto": "Следовать системе"
|
||
},
|
||
"sidebar": {
|
||
"toggle_expand": "Развернуть боковую панель",
|
||
"toggle_collapse": "Свернуть боковую панель"
|
||
},
|
||
"footer": {
|
||
"api_version": "Версия CLI Proxy API",
|
||
"build_date": "Время сборки",
|
||
"version": "Версия интерфейса управления",
|
||
"author": "Автор"
|
||
}
|
||
}
|