Files
MyGoNavi/shared/i18n/ru-RU.json
tianqijiuyun-latiao d13c153f5e feat(i18n): 收口数据库驱动多语言代码
- 提交 internal/db 多驱动用户可见错误与状态文案多语言化

- 补齐数据库驱动多语言测试与六语言 catalog

- 修复 frontend i18n catalog 的 4 个失效 guard
2026-06-22 10:09:45 +08:00

7295 lines
1.0 MiB
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common.cancel": "Отмена",
"common.close": "Закрыть",
"common.confirm": "Подтвердить",
"common.continue": "Продолжить",
"common.delete": "Удалить",
"common.edit": "Изменить",
"common.error": "Ошибка",
"common.loading": "Загрузка",
"common.named_item": "{{name}}",
"common.ok": "OK",
"common.refresh": "Обновить",
"common.save": "Сохранить",
"common.search": "Поиск",
"common.success": "Успешно",
"common.unknown": "Неизвестно",
"common.warning": "Предупреждение",
"dev.perf_data_grid.title": "Страница воспроизведения производительности DataGrid",
"dev.perf_data_grid.ui_version.legacy": "Старый UI",
"dev.perf_data_grid.ui_version.v2": "Новый UI",
"dev.perf_data_grid.ui_version.legacy_short": "старый",
"dev.perf_data_grid.ui_version.v2_short": "новый",
"dev.perf_data_grid.rows": "Строки",
"dev.perf_data_grid.columns": "Столбцы",
"dev.perf_data_grid.density.comfortable": "Стандартная",
"dev.perf_data_grid.density.standard": "Компактная",
"dev.perf_data_grid.density.compact": "Очень компактная",
"dev.perf_data_grid.trigger_layout": "Пересчитать макет",
"dev.perf_data_grid.notice.message": "Эта страница предназначена только для измерения производительности прокрутки в режиме разработки",
"dev.perf_data_grid.notice.description": "Текущий {{uiVersion}} UI, {{rows}} строк / {{columns}} столбцов. Измеряйте вертикальную, горизонтальную и Shift+колесо прокрутку прямо в области таблицы.",
"connection.sidebar.group.untitled": "Группа без имени",
"connection.sidebar.group.meta": "{{count}} подключений · Группа подключений",
"connection.sidebar.group.badge": "Группа",
"connection.sidebar.group.edit": "Изменить группу",
"connection.sidebar.group.delete": "Удалить группу",
"connection.sidebar.group.deleteConfirmTitle": "Подтвердить удаление",
"connection.sidebar.group.deleteConfirmContent": "Удалить группу \"{{name}}\"? Подключения внутри останутся.",
"connection.sidebar.group.expandAria": "Развернуть группу подключений {{name}}",
"connection.sidebar.group.collapseAria": "Свернуть группу подключений {{name}}",
"connection.sidebar.menu.section": "Подключение",
"connection.sidebar.menu.groupSection": "Группы подключений",
"connection.sidebar.menu.copy": "Копировать подключение",
"connection.sidebar.menu.disconnect": "Отключить",
"connection.sidebar.menu.delete": "Удалить подключение",
"connection.sidebar.menu.hostFallback": "Адрес не указан",
"connection.sidebar.menu.hostBadge": "HOST",
"connection.sidebar.menu.moveToTag": "Переместить в тег",
"connection.sidebar.menu.moveOutTag": "Убрать из тега",
"connection.sidebar.menu.moveToUngrouped": "Убрать из группы",
"connection.sidebar.menu.createDatabase": "Новая база данных",
"connection.sidebar.menu.refresh": "Обновить подключение",
"connection.sidebar.menu.current": "Текущий",
"connection.sidebar.duplicate.backendUnavailable": "Не удалось скопировать подключение: интерфейс бэкенда недоступен",
"connection.sidebar.duplicate.noResult": "Не удалось скопировать подключение: бэкенд не вернул результат",
"connection.sidebar.duplicate.success": "Подключение скопировано: {{name}}",
"connection.sidebar.duplicate.failureFallback": "Не удалось скопировать подключение",
"connection.sidebar.disconnect.success": "Подключение отключено",
"connection.sidebar.delete.confirmTitle": "Подтвердить удаление",
"connection.sidebar.delete.confirmContent": "Удалить подключение \"{{name}}\"?",
"connection.sidebar.delete.backendUnavailable": "Не удалось удалить подключение: интерфейс бэкенда недоступен",
"connection.sidebar.delete.success": "Подключение удалено",
"connection.sidebar.delete.failureFallback": "Не удалось удалить подключение",
"find_in_database.title": "Поиск в базе данных - {{dbName}}",
"find_in_database.placeholder.keyword": "Введите строку для поиска...",
"find_in_database.match.contains": "Содержит",
"find_in_database.match.exact": "Точное совпадение",
"find_in_database.message.keyword_required": "Введите ключевое слово для поиска",
"find_in_database.message.connection_config_not_found": "Конфигурация подключения не найдена",
"find_in_database.message.get_tables_failed": "Не удалось получить список таблиц: {{detail}}",
"find_in_database.message.no_tables": "В текущей базе данных нет таблиц",
"find_in_database.message.no_matches": "Совпадающие данные не найдены",
"find_in_database.message.search_failed": "Ошибка поиска: {{detail}}",
"find_in_database.column.table_name": "Таблица",
"find_in_database.column.matched_columns": "Совпавшие столбцы",
"find_in_database.column.match_count": "Строк с совпадениями",
"find_in_database.column.action": "Действия",
"find_in_database.tooltip.collapse_details": "Свернуть подробности",
"find_in_database.tooltip.view_details": "Показать подробности",
"find_in_database.progress.searching_table": "Поиск в {{table}}... ({{current}}/{{total}})",
"find_in_database.summary.found_tables": "Найдено таблиц с совпадающими данными: {{count}}",
"find_in_database.summary.searching": " (поиск продолжается...)",
"find_in_database.detail.title": "{{table}} - подробности строк с совпадениями",
"find_in_database.detail.row_count": "{{count}} строк",
"import_preview.title": "Предпросмотр импорта данных",
"import_preview.action.start": "Начать импорт",
"import_preview.status.loading_preview": "Загрузка данных предпросмотра...",
"import_preview.status.importing": "Импорт данных...",
"import_preview.progress.processed_rows": "Обработано {{current}} / {{total}} строк",
"import_preview.progress.success_count": "Успешно {{count}}",
"import_preview.progress.error_count": "Ошибок {{count}}",
"import_preview.preview.summary": "{{rows}} строк и {{columns}} полей",
"import_preview.preview.description": "Ниже показаны первые 5 строк. Начните импорт после проверки данных.",
"import_preview.preview.field_list": "Список полей:",
"import_preview.preview.table_title": "Предпросмотр данных (первые 5 строк):",
"import_preview.error.preview_failed": "Не удалось выполнить предпросмотр",
"import_preview.error.preview_failed_detail": "Не удалось выполнить предпросмотр: {{detail}}",
"import_preview.error.connection_config_not_found": "Конфигурация подключения не найдена",
"import_preview.error.import_failed": "Не удалось выполнить импорт",
"import_preview.error.import_failed_detail": "Не удалось выполнить импорт: {{detail}}",
"import_preview.result.completed": "Импорт завершен",
"import_preview.result.success_rows": "Успешно импортировано строк: {{count}}",
"import_preview.result.failed_rows": "Строк с ошибками: {{count}}",
"import_preview.result.error_logs": "Журнал ошибок:",
"log_panel.title": "Журнал выполнения SQL",
"log_panel.description": "Фиксирует статус выполнения, длительность и ошибки для быстрого анализа.",
"log_panel.action.clear": "Очистить журнал",
"log_panel.action.close": "Закрыть панель",
"log_panel.empty": "Нет журналов выполнения SQL",
"log_panel.column.time": "Время",
"log_panel.column.status": "Статус",
"log_panel.column.duration": "Длительность",
"log_panel.column.sql_message": "SQL / сообщение",
"log_panel.affected_rows": "Затронуто строк: {{count}}",
"table_overview.status.loading_tables": "Загрузка сведений о таблицах...",
"table_overview.message.load_tables_failed": "Не удалось загрузить сведения о таблицах: {{detail}}",
"table_overview.message.pinned": "Таблица закреплена",
"table_overview.message.unpinned": "Закрепление таблицы снято",
"table_overview.message.copy_structure_success": "Структура таблицы скопирована в буфер обмена",
"table_overview.message.copy_structure_failed": "Не удалось скопировать структуру таблицы: {{detail}}",
"table_overview.message.copy_table_name_empty": "Имя таблицы пустое, копирование невозможно",
"table_overview.message.copy_table_name_success": "Имя таблицы скопировано в буфер обмена",
"table_overview.message.copy_table_name_failed": "Не удалось скопировать имя таблицы: {{detail}}",
"table_overview.message.exporting_table_format": "Экспорт {{table}} в формате {{format}}...",
"table_overview.message.export_success": "Экспорт выполнен",
"table_overview.message.export_failed": "Ошибка экспорта: {{detail}}",
"table_overview.message.delete_table_success": "Таблица удалена",
"table_overview.message.delete_table_failed": "Не удалось удалить таблицу: {{detail}}",
"table_overview.table_data_action.truncate.label": "Усечь таблицу",
"table_overview.table_data_action.clear.label": "Очистить таблицу",
"table_overview.modal.table_data_action.title": "Подтвердите {{action}}",
"table_overview.modal.table_data_action.content": "{{action}} безвозвратно удалит все данные в таблице \"{{table}}\". Это действие нельзя отменить. Продолжить?",
"table_overview.message.table_data_action_loading": "Выполняется {{action}} для {{table}}...",
"table_overview.message.table_data_action_success": "{{action}} выполнено",
"table_overview.message.table_data_action_failed": "{{action}} завершилось ошибкой: {{detail}}",
"table_overview.message.rename_table_success": "Таблица переименована",
"table_overview.message.rename_table_failed": "Не удалось переименовать таблицу: {{detail}}",
"table_overview.message.unknown_error": "Неизвестная ошибка",
"table_overview.tab.design_table_title": "Проектирование таблицы ({{table}})",
"table_overview.tab.table_structure_title": "Структура таблицы ({{table}})",
"table_overview.modal.delete_table.title": "Удалить таблицу",
"table_overview.modal.delete_table.content": "Удалить таблицу \"{{table}}\"? Это действие нельзя отменить.",
"table_overview.modal.rename_table.title": "Переименовать таблицу",
"table_overview.modal.rename_table.placeholder": "Введите новое имя таблицы",
"table_overview.validation.table_name_required": "Имя таблицы обязательно",
"table_overview.validation.table_name_unchanged": "Новое имя таблицы совпадает с текущим",
"table_overview.toolbar.summary": "{{count}} табл. · {{rows}} строк · {{size}}",
"table_overview.placeholder.search": "Поиск по именам таблиц или комментариям...",
"table_overview.tooltip.sort": "Сортировка",
"table_overview.tooltip.card_view": "Карточки",
"table_overview.tooltip.list_view": "Список",
"table_overview.tooltip.refresh": "Обновить",
"table_overview.sort.name": "Имя",
"table_overview.sort.rows": "Строки",
"table_overview.sort.size": "Размер",
"table_overview.metric.data_size": "Размер данных",
"table_overview.metric.index_size": "Размер индекса",
"table_overview.metric.relative_size": "Относительный размер",
"table_overview.metric.engine": "Движок",
"table_overview.section.all": "Все",
"table_overview.section.pinned": "Закрепленные",
"table_overview.row.engine_table": "Таблица {{engine}}",
"table_overview.row.open_hint": "Дважды щелкните, чтобы открыть данные; щелкните правой кнопкой для дополнительных действий",
"table_overview.status.updating_filter": "Обновление результатов фильтра...",
"table_overview.status.matching_rendered": "Найдено таблиц: {{matched}}, отображается: {{rendered}}",
"table_overview.status.hidden_count_hint": "Еще не отображено: {{count}}. Загрузите больше или сузьте поиск.",
"table_overview.empty.no_matches": "Совпадений нет",
"table_overview.empty.no_tables": "Таблиц нет",
"table_overview.action.show_more": "Показать еще таблицы (осталось {{count}})",
"table_overview.menu.new_query": "Новый запрос",
"table_overview.menu.design_table": "Конструктор таблицы",
"table_overview.menu.table_structure": "Структура таблицы",
"table_overview.menu.copy_table_name": "Копировать имя таблицы",
"table_overview.menu.copy_structure": "Копировать структуру таблицы",
"table_overview.menu.backup_table_sql": "Резервная копия таблицы (SQL)",
"table_overview.menu.rename_table": "Переименовать таблицу",
"table_overview.menu.danger_operations": "Опасные операции",
"table_overview.menu.truncate_table": "Усечь таблицу",
"table_overview.menu.clear_table": "Очистить таблицу",
"table_overview.menu.delete_table": "Удалить таблицу",
"table_overview.menu.export_table_data": "Экспорт данных таблицы",
"table_overview.menu.export_csv": "Экспорт CSV",
"table_overview.menu.export_xlsx": "Экспорт XLSX",
"table_overview.menu.export_json": "Экспорт JSON",
"table_overview.menu.export_markdown": "Экспорт Markdown",
"table_overview.menu.export_html": "Экспорт HTML",
"settings.language.description": "Выберите язык интерфейса GoNavi.",
"settings.language.english": "English",
"settings.language.follow_system": "Как в системе",
"settings.language.german": "Deutsch",
"settings.language.japanese": "日本語",
"settings.language.restart_hint": "Для полного применения в некоторых редакторах и системных меню может потребоваться заново открыть окно.",
"settings.language.russian": "Русский",
"settings.language.simplified_chinese": "简体中文",
"settings.language.title": "Язык",
"settings.language.traditional_chinese": "繁體中文",
"settings.title": "Настройки",
"app.about.action.check_updates": "Проверить обновления",
"app.about.action.download_progress": "Ход загрузки",
"app.about.action.download_update": "Скачать обновление",
"app.about.action.mute_this_version": "Не напоминать в этот раз",
"app.about.community.ai_book": "AI全书",
"app.about.description": "Просмотр версии, ссылок на репозиторий, статуса обновлений и загрузок.",
"app.about.field.author": "Автор",
"app.about.field.community": "Сообщество",
"app.about.field.update_status": "Статус обновления",
"app.about.field.version": "Версия",
"app.about.message.load_failed": "Не удалось получить информацию о приложении: {{error}}",
"app.about.project_links": "Ссылки проекта",
"app.about.title": "О GoNavi",
"app.ai_panel.action.close": "Закрыть панель",
"app.ai_panel.action.reload": "Перезагрузить",
"app.ai_panel.aria.close": "Закрыть AI-панель",
"app.ai_panel.error.description": "Обычно это происходит из-за того, что после hot reload в режиме разработки перестают работать лениво загружаемые ресурсы. Полный белый экран уже предотвращен, можно сразу повторить попытку.",
"app.ai_panel.error.title": "Не удалось загрузить AI-панель",
"app.data_root.action.migrate_and_switch": "Перенести существующие данные и переключиться",
"app.data_root.action.open_current": "Открыть текущий каталог",
"app.data_root.action.restore_default_directory": "Восстановить каталог по умолчанию",
"app.data_root.action.select": "Выбрать каталог",
"app.data_root.action.switch_only": "Только переключиться на выбранный каталог",
"app.data_root.apply_method": "Способ применения",
"app.data_root.current_directory": "Текущий каталог",
"app.data_root.default_directory": "Каталог по умолчанию",
"app.data_root.description": "Единое управление корневым каталогом файловых данных, таких как подключения, прокси, настройки AI и драйверы.",
"app.data_root.driver_directory": "Каталог драйверов",
"app.data_root.backend.dialog.select_directory": "Выбрать каталог данных GoNavi",
"app.data_root.backend.error.create_target_failed": "Не удалось создать целевой каталог данных: {{detail}}",
"app.data_root.backend.error.create_bootstrap_directory_failed": "Не удалось создать каталог начальной загрузки по умолчанию: {{detail}}",
"app.data_root.backend.error.create_data_directory_failed": "Не удалось создать каталог данных: {{detail}}",
"app.data_root.backend.error.directory_empty": "Каталог данных не может быть пустым",
"app.data_root.backend.error.directory_unavailable": "Каталог данных не существует или недоступен",
"app.data_root.backend.error.migrate_directory_failed": "Не удалось перенести каталог ({{entry}}): {{detail}}",
"app.data_root.backend.error.migrate_file_failed": "Не удалось перенести файл ({{entry}}): {{detail}}",
"app.data_root.backend.error.open_directory_failed": "Не удалось открыть каталог данных: {{detail}}",
"app.data_root.backend.error.open_directory_unsupported": "Открытие каталогов не поддерживается на этой платформе: {{platform}}",
"app.data_root.backend.error.read_source_failed": "Не удалось прочитать исходные данные ({{entry}}): {{detail}}",
"app.data_root.backend.error.resolve_source_failed": "Не удалось определить исходный каталог данных: {{detail}}",
"app.data_root.backend.error.resolve_target_failed": "Не удалось определить целевой каталог данных: {{detail}}",
"app.data_root.backend.error.target_inside_source": "Целевой каталог данных не может находиться внутри исходного каталога",
"app.data_root.backend.error.read_source_root_failed": "Не удалось прочитать исходный каталог данных: {{detail}}",
"app.data_root.backend.error.read_migrated_security_update_state_failed": "Не удалось прочитать состояние обновления безопасности после переноса: {{detail}}",
"app.data_root.backend.error.write_migrated_security_update_state_failed": "Не удалось записать состояние обновления безопасности после переноса: {{detail}}",
"app.data_root.backend.error.read_migrated_security_update_manifest_failed": "Не удалось прочитать манифест резервной копии обновления безопасности после переноса: {{detail}}",
"app.data_root.backend.error.parse_migrated_security_update_manifest_failed": "Не удалось разобрать манифест резервной копии обновления безопасности после переноса: {{detail}}",
"app.data_root.backend.error.write_migrated_security_update_manifest_failed": "Не удалось записать манифест резервной копии обновления безопасности после переноса: {{detail}}",
"app.data_root.backend.error.read_migrated_security_update_result_failed": "Не удалось прочитать результат обновления безопасности после переноса: {{detail}}",
"app.data_root.backend.error.parse_migrated_security_update_result_failed": "Не удалось разобрать результат обновления безопасности после переноса: {{detail}}",
"app.data_root.backend.error.write_migrated_security_update_result_failed": "Не удалось записать результат обновления безопасности после переноса: {{detail}}",
"app.data_root.backend.message.migrated_restart": "Данные перенесены, выполнено переключение на новый каталог. Перезапустите приложение, чтобы завершить переключение всех модулей.",
"app.data_root.backend.message.opened": "Каталог данных открыт",
"app.data_root.backend.message.unchanged": "Каталог данных не изменился",
"app.data_root.backend.message.updated_restart": "Каталог данных обновлен. Перезапустите приложение, чтобы AI и другие работающие модули полностью переключились на новый каталог.",
"app.data_root.message.apply_failed": "Не удалось применить каталог данных",
"app.data_root.message.apply_failed_with_error": "Не удалось применить каталог данных: {{error}}",
"app.data_root.message.load_failed": "Не удалось загрузить сведения о каталоге данных",
"app.data_root.message.load_failed_with_error": "Не удалось загрузить сведения о каталоге данных: {{error}}",
"app.data_root.message.open_failed": "Не удалось открыть каталог данных",
"app.data_root.message.open_failed_with_error": "Не удалось открыть каталог данных: {{error}}",
"app.data_root.message.select_failed": "Не удалось выбрать каталог данных",
"app.data_root.message.select_failed_with_error": "Не удалось выбрать каталог данных: {{error}}",
"app.data_root.message.select_valid_first": "Сначала выберите допустимый каталог данных",
"app.data_root.message.updated": "Каталог данных обновлен",
"app.data_root.placeholder.select_new_directory": "Выберите новый каталог данных",
"app.data_root.restart_hint": "После переключения рекомендуется перезапустить приложение, чтобы AI и другие долгоживущие модули полностью перешли в новый каталог. Конфиденциальные пароли остаются в системном secret store и не переносятся вместе с файловыми каталогами.",
"app.data_root.switch_target": "Цель переключения",
"app.data_root.title": "Место хранения данных",
"app.proxy.description": "Единая настройка проверки обновлений, управления драйверами и сетевого выхода для подключений без отдельного прокси.",
"app.proxy.enable": "Включить глобальный прокси",
"app.proxy.host": "Хост прокси",
"app.proxy.host_placeholder": "Пример: 127.0.0.1",
"app.proxy.message.config_applied": "Конфигурация глобального прокси применена",
"app.proxy.message.invalid_enabled": "Глобальный прокси включен, но хост или порт недействительны. Сейчас он считается отключенным.",
"app.proxy.message.save_failed": "Не удалось настроить глобальный прокси: {{error}}",
"app.proxy.password_optional": "Пароль (необязательно)",
"app.proxy.port": "Порт",
"app.proxy.scope_hint": "* Применяется к проверке обновлений, сетевым запросам управления драйверами и подключениям к базе данных без отдельного прокси",
"app.proxy.section_title": "Глобальный прокси",
"app.proxy.title": "Настройки глобального прокси",
"app.proxy.type": "Тип прокси",
"app.proxy.username_optional": "Имя пользователя (необязательно)",
"proxy.backend.error.unsupported_type": "Неподдерживаемый тип прокси: {{type}}",
"proxy.backend.error.host_empty": "Хост прокси пуст",
"proxy.backend.error.port_invalid": "Недопустимый порт прокси: {{port}}",
"proxy.backend.error.remote_addr_invalid": "Недопустимый удалённый адрес: {{address}}",
"proxy.backend.error.listen_failed": "Не удалось создать локальный слушатель прокси: {{detail}}",
"proxy.backend.error.socks5_dialer_failed": "Не удалось создать dialer для SOCKS5-прокси: {{detail}}",
"proxy.backend.error.socks5_connect_failed": "Не удалось подключиться через SOCKS5-прокси: {{detail}}",
"proxy.backend.error.http_connect_failed": "Не удалось подключиться к HTTP-прокси: {{detail}}",
"proxy.backend.error.http_connect_write_failed": "Не удалось отправить запрос HTTP CONNECT: {{detail}}",
"proxy.backend.error.http_connect_read_failed": "Не удалось прочитать ответ HTTP CONNECT: {{detail}}",
"proxy.backend.error.http_connect_status_failed": "HTTP-прокси CONNECT завершился ошибкой: {{status}}",
"app.startup_readiness.loading_local_config": "Загрузка локальной конфигурации...",
"app.startup_readiness.loading_security_config": "Загрузка конфигурации безопасности...",
"app.security_update.error.capability_unavailable": "Функция безопасного обновления недоступна",
"app.security_update.message.completed": "Безопасное обновление сохраненных конфигураций завершено",
"app.security_update.message.needs_attention": "Обновление еще не завершено. Несколько конфигураций требуют внимания.",
"app.security_update.message.not_finished_retry_later": "Безопасное обновление не завершено. Повторите попытку позже.",
"app.security_update.message.postpone_failed": "Сейчас не удалось отложить это безопасное обновление",
"app.security_update.message.rolled_back": "Это обновление не завершено. Система сохранила текущую рабочую конфигурацию.",
"app.security_update.stage.checking_saved_config": "Проверка сохраненных конфигураций",
"app.security_update.stage.updating_secure_storage": "Обновление безопасного хранилища",
"app.security_update.stage.verifying_result": "Проверка результата обновления",
"security_update.banner.title": "Сохраненные конфигурации можно безопасно обновить",
"security_update.banner.action.start_now": "Обновить сейчас",
"security_update.banner.action.view_details": "Показать сведения",
"security_update.banner.action.restart_update": "Запустить обновление заново",
"security_update.banner.action.retry_check": "Проверить снова",
"security_update.backend.issue.ai_provider.migration_required": "Конфигурация AI-провайдера все еще сохранена в текущей конфигурации приложения. После завершения безопасного обновления она будет перенесена в новое безопасное хранилище.",
"security_update.backend.issue.ai_provider.missing_or_resave": "Конфигурация AI-провайдера больше не существует или ее нужно сохранить заново перед завершением безопасного обновления.",
"security_update.backend.issue.ai_provider.secret_missing": "Для конфигурации AI-провайдера нужно добавить данные перед завершением безопасного обновления.",
"security_update.backend.issue.connection.incomplete": "Для конфигурации подключения нужно добавить данные перед завершением безопасного обновления.",
"security_update.backend.issue.connection.missing_or_resave": "Конфигурация подключения больше не существует или ее нужно сохранить заново перед завершением безопасного обновления.",
"security_update.backend.issue.connection.password_missing": "Пароль подключения потерян. Сохраните его заново перед продолжением.",
"security_update.backend.issue.global_proxy.missing_or_resave": "Настройки глобального прокси больше не существуют или их нужно сохранить заново перед завершением безопасного обновления.",
"security_update.backend.issue.global_proxy.password_incomplete": "Для пароля глобального прокси нужно добавить данные перед завершением безопасного обновления.",
"security_update.backend.issue.global_proxy.password_missing": "Пароль глобального прокси потерян. Сохраните его заново перед продолжением.",
"security_update.backend.issue.global_proxy.title": "Глобальный прокси",
"security_update.backend.issue.system.message": "Текущая среда не смогла завершить это безопасное обновление. Повторите попытку позже.",
"security_update.backend.issue.system.title": "Безопасное обновление не завершено",
"security_update.intro.title": "Безопасное обновление сохраненных конфигураций",
"security_update.intro.subtitle": "Перед использованием нового безопасного хранилища нужно выполнить локальное обновление конфигурации.",
"security_update.intro.description": "Чтобы сохраненные подключения, прокси и связанные настройки служб использовали новое безопасное хранилище, это обновление нужно один раз выполнить локально. Перед обновлением автоматически создается локальная резервная копия. Если обновление не завершится, система сохранит текущую рабочую конфигурацию, а вы сможете продолжить позже.",
"security_update.intro.action.details": "Показать сведения",
"security_update.intro.action.later": "Напомнить позже",
"security_update.intro.action.start_now": "Обновить сейчас",
"security_update.progress.default_detail": "Текущая рабочая конфигурация будет сохранена во время обновления. Подождите.",
"security_update.settings.title": "Безопасное обновление",
"security_update.settings.subtitle": "Управление статусом безопасного обновления и ожидающими пунктами сохраненных конфигураций.",
"security_update.settings.action.retry_check": "Проверить снова",
"security_update.settings.action.restart_update": "Запустить обновление заново",
"security_update.settings.action.start": "Начать обновление",
"security_update.settings.action.close": "Закрыть",
"security_update.settings.current_status": "Текущий статус: {{status}}",
"security_update.settings.scope_title": "Область влияния",
"security_update.settings.summary.total": "Всего",
"security_update.settings.summary.updated": "Обновлено",
"security_update.settings.summary.pending": "Ожидает обработки",
"security_update.settings.summary.skipped": "Пропущено",
"security_update.settings.summary.failed": "Ошибки",
"security_update.settings.pending_list": "Ожидающие пункты",
"security_update.settings.empty_pending": "Ожидающих пунктов нет",
"security_update.settings.item_status": "Статус: {{status}}",
"security_update.settings.item_severity": "Уровень: {{severity}}",
"security_update.settings.item_default_message": "Этот пункт требует дополнительной обработки перед завершением безопасного обновления.",
"security_update.settings.recent_result": "Последний результат",
"security_update.settings.backup_path": "Расположение резервной копии: ",
"security_update.settings.last_error": "Последняя ошибка: ",
"security_update.status.pending.label": "Ожидает обновления",
"security_update.status.pending.description": "Доступно безопасное обновление. Можно начать сейчас или продолжить позже.",
"security_update.status.postponed.label": "Ожидает обновления",
"security_update.status.postponed.description": "Это безопасное обновление отложено. Текущая рабочая конфигурация сохранена.",
"security_update.status.in_progress.label": "Обновляется",
"security_update.status.in_progress.description": "Проверяется и обновляется безопасное хранилище сохраненных конфигураций.",
"security_update.status.needs_attention.label": "Требует внимания",
"security_update.status.needs_attention.description": "Обновление еще не завершено. Несколько конфигураций требуют внимания.",
"security_update.status.completed.label": "Завершено",
"security_update.status.completed.description": "Безопасное обновление сохраненных конфигураций завершено.",
"security_update.status.rolled_back.label": "Откат выполнен",
"security_update.status.rolled_back.description": "Это обновление не завершено. Система сохранила текущую рабочую конфигурацию.",
"security_update.status.not_detected.label": "Не обнаружено",
"security_update.status.not_detected.description": "Сейчас нет безопасных обновлений, требующих внимания.",
"security_update.action.open_connection": "Открыть подключение",
"security_update.action.open_proxy_settings": "Настройки прокси",
"security_update.action.open_ai_settings": "Настройки AI",
"security_update.action.retry_update": "Проверить снова",
"security_update.action.view_details": "Показать сведения",
"security_update.item_status.pending": "Ожидает обновления",
"security_update.item_status.updated": "Обновлено",
"security_update.item_status.needs_attention": "Требует внимания",
"security_update.item_status.skipped": "Пропущено",
"security_update.item_status.failed": "Ошибка",
"security_update.severity.high": "Высокий риск",
"security_update.severity.medium": "Средний риск",
"security_update.severity.low": "Низкий риск",
"security_update.repair.warning.connection_not_found": "Соответствующее подключение не найдено. Сначала проверьте актуальный статус.",
"security_update.bootstrap.legacy.connection.message": "Это подключение все еще сохранено в локальной конфигурации текущего приложения. После завершения безопасного обновления оно будет перенесено в новое безопасное хранилище.",
"security_update.bootstrap.legacy.global_proxy.title": "Глобальный прокси",
"security_update.bootstrap.legacy.global_proxy.message": "Глобальные настройки прокси все еще сохранены в локальной конфигурации текущего приложения. После завершения безопасного обновления они будут перенесены в новое безопасное хранилище.",
"security_update.error.capability_unavailable": "Функция безопасного обновления недоступна",
"app.settings.description": "Управление общими настройками: язык, прокси, тема, AI и сведения о приложении.",
"app.settings.entry.about.description": "Просмотр версии, ссылок на репозиторий и статуса обновлений.",
"app.settings.entry.about.title": "О GoNavi",
"app.settings.entry.ai.description": "Управление поставщиками моделей, ключами и поведением по умолчанию.",
"app.settings.entry.ai.title": "Настройки AI",
"app.settings.entry.proxy.description": "Настройка проверки обновлений, управления драйверами и общего сетевого доступа.",
"app.settings.entry.proxy.title": "Глобальный прокси",
"app.settings.entry.theme.description": "Переключение светлой или темной темы и настройка внешнего вида интерфейса.",
"app.settings.entry.theme.title": "Тема и внешний вид",
"app.settings.title": "Центр настроек",
"app.shortcuts.action.focusSidebarSearch.description": "Перейти к полю поиска в левом дереве подключений",
"app.shortcuts.action.focusSidebarSearch.label": "Фокус на поиске боковой панели",
"app.shortcuts.action.newConnection.description": "Создать новое подключение к базе данных, runtime или другому источнику данных",
"app.shortcuts.action.newConnection.label": "Новый источник данных",
"app.shortcuts.action.newQueryTab.description": "Создать новую вкладку SQL-запроса",
"app.shortcuts.action.newQueryTab.label": "Новая вкладка запроса",
"app.shortcuts.action.openShortcutManager.description": "Открыть панель настройки горячих клавиш",
"app.shortcuts.action.openShortcutManager.label": "Открыть управление горячими клавишами",
"app.shortcuts.action.record": "Записать",
"app.shortcuts.action.resetWindowZoom.description": "Запустить вручную, если после восстановления из панели задач Windows шрифт стал аномально крупным; один раз переключает максимизацию, чтобы WebView2 пересчитал метрики шрифта",
"app.shortcuts.action.resetWindowZoom.label": "Сбросить масштаб окна",
"app.shortcuts.action.restore_defaults": "Восстановить значения по умолчанию",
"app.shortcuts.action.runQuery.description": "Выполнить SQL на текущей странице запроса",
"app.shortcuts.action.runQuery.label": "Выполнить SQL",
"app.shortcuts.action.saveQuery.description": "Сохранить текущую вкладку запроса; для безымянных запросов откроется окно сохранения",
"app.shortcuts.action.saveQuery.label": "Сохранить запрос",
"app.shortcuts.action.selectCurrentStatement.description": "Выбрать SQL-оператор под курсором в редакторе запросов",
"app.shortcuts.action.selectCurrentStatement.label": "Выбрать текущий оператор",
"app.shortcuts.action.toggleQueryResultsPanel.description": "Показать или скрыть область результатов под редактором запросов",
"app.shortcuts.action.toggleQueryResultsPanel.label": "Переключить область результатов",
"app.shortcuts.action.sendAIChatMessage.description": "Отправить текущее сообщение из поля ввода AI; Shift+Enter всегда вставляет новую строку",
"app.shortcuts.action.sendAIChatMessage.label": "Отправить AI-чат",
"app.shortcuts.action.switchToNextTab.description": "Переключиться вправо среди открытых вкладок",
"app.shortcuts.action.switchToNextTab.label": "Следующая вкладка",
"app.shortcuts.action.switchToPreviousTab.description": "Переключиться влево среди открытых вкладок",
"app.shortcuts.action.switchToPreviousTab.label": "Предыдущая вкладка",
"app.shortcuts.action.toggleAIPanel.description": "Открыть правую панель аналитики данных AI",
"app.shortcuts.action.toggleAIPanel.label": "Открыть аналитику данных AI",
"app.shortcuts.action.toggleLogPanel.description": "Открыть или закрыть панель журнала выполнения SQL",
"app.shortcuts.action.toggleLogPanel.label": "Переключить панель журнала",
"app.shortcuts.action.toggleMacFullscreen.description": "Переключение нативного полноэкранного режима в режиме нативных элементов окна macOS",
"app.shortcuts.action.toggleMacFullscreen.label": "Переключить нативный полноэкранный режим",
"app.shortcuts.action.toggleTheme.description": "Переключение между светлой и темной темами",
"app.shortcuts.action.toggleTheme.label": "Переключить тему",
"app.shortcuts.capture_hint": "Нажмите сочетание клавиш после нажатия \"Записать\". Нажмите Esc, чтобы отменить запись. Для глобальных горячих клавиш рекомендуется модификатор; отправка AI-чата поддерживает только комбинации с Enter, а Shift+Enter сохраняет перенос строки.",
"app.shortcuts.capture_waiting": "Нажмите сочетание клавиш...",
"app.shortcuts.context.datagrid": "Таблица данных",
"app.shortcuts.context.global": "Браузер",
"app.shortcuts.context.monaco": "Редактор",
"app.shortcuts.description": "Просматривайте, записывайте и включайте распространенные глобальные горячие клавиши в одном месте.",
"app.shortcuts.message.ai_send_limit": "Горячая клавиша отправки AI-чата поддерживает только Enter / Ctrl+Enter / Cmd+Enter / Alt+Enter; Shift+Enter сохраняет перенос строки",
"app.shortcuts.message.conflict": "Конфликт с \"{{action}}\". Выберите другое сочетание клавиш.",
"app.shortcuts.message.modifier_required": "Сочетание клавиш должно содержать хотя бы одну из клавиш Ctrl / Alt / Shift / Meta",
"app.shortcuts.message.reserved_conflict_info": "Переопределяет стандартную горячую клавишу редактора \"{{labels}}\"",
"app.shortcuts.message.reserved_conflict_warning": "Конфликт с {{contexts}} \"{{labels}}\"; может не работать",
"app.shortcuts.message.restored_defaults": "Горячие клавиши по умолчанию восстановлены",
"app.shortcuts.reserved.browser_close_tab": "Браузер закрыть вкладку",
"app.shortcuts.reserved.browser_new_incognito_window": "Браузер новое инкогнито-окно",
"app.shortcuts.reserved.browser_new_tab": "Браузер новая вкладка",
"app.shortcuts.reserved.browser_new_window": "Браузер новое окно",
"app.shortcuts.reserved.browser_print": "Браузер печать",
"app.shortcuts.reserved.browser_save": "Браузер сохранить",
"app.shortcuts.reserved.datagrid_copy": "Копировать таблицу данных",
"app.shortcuts.reserved.editor_add_selection": "Редактор добавить выделение",
"app.shortcuts.reserved.editor_delete_line": "Редактор удалить строку",
"app.shortcuts.reserved.editor_find": "Редактор поиск",
"app.shortcuts.reserved.editor_find_global": "Редактор глобальный поиск",
"app.shortcuts.reserved.editor_goto_line": "Редактор перейти к строке",
"app.shortcuts.reserved.editor_insert_line_after": "Редактор вставить строку ниже",
"app.shortcuts.reserved.editor_insert_line_before": "Редактор вставить строку выше",
"app.shortcuts.reserved.editor_quick_open": "Редактор быстрое открытие",
"app.shortcuts.reserved.editor_rename_symbol": "Редактор переименовать символ",
"app.shortcuts.reserved.editor_replace": "Редактор замена",
"app.shortcuts.title": "Управление горячими клавишами",
"app.sidebar.ai_assistant": "AI-ассистент",
"app.sidebar.resize_width": "Перетащите, чтобы изменить ширину",
"app.sidebar.settings": "Настройки",
"app.sidebar.sql_execution_log": "Журнал выполнения SQL",
"app.sidebar.tools": "Инструменты",
"app.tools.entry.snippets.description": "Управление SQL-сниппетами и автодополнением по префиксу.",
"app.tools.entry.snippets.title": "Управление сниппетами",
"app.theme.action.restore_defaults": "Восстановить значения по умолчанию",
"app.theme.appearance.blur_hint": "* Управляет размытием только внутренних оверлейных слоев приложения",
"app.theme.appearance.blur_title": "Гауссово размытие (Blur)",
"app.theme.appearance.enable_transparency_blur": "Включить прозрачность и размытие",
"app.theme.appearance.enable_transparency_blur_hint": "При отключении текущие пороги сохраняются и будут восстановлены при повторном включении.",
"app.theme.appearance.font_size_title": "Базовый размер шрифта (Font Size)",
"app.theme.appearance.opacity_title": "Непрозрачность фона (Opacity)",
"app.theme.appearance.transparency_blur_title": "Эффекты прозрачности и размытия",
"app.theme.appearance.ui_scale_hint": "* Для небольших экранов рекомендуется 85%-95%",
"app.theme.appearance.ui_scale_title": "Масштаб UI (UI Scale)",
"app.theme.appearance.windows_acrylic_hint": "Windows использует системный эффект Acrylic. Сила размытия управляется системой.",
"app.theme.appearance_settings_description": "Единая настройка масштаба, размера шрифта, прозрачности и размытия.",
"app.theme.appearance_settings_title": "Настройки внешнего вида",
"app.theme.data_table.column_width_hint": "В стандартном режиме ширина столбца по умолчанию 200px; в компактном режиме 140px. Вручную измененные ширины столбцов сохраняются в приоритете.",
"app.theme.data_table.column_width_mode": "Режим ширины столбцов таблицы данных",
"app.theme.data_table.column_width_mode.compact": "Компактный 140px",
"app.theme.data_table.column_width_mode.standard": "Стандартный 200px",
"app.theme.data_table.title": "Отображение таблицы данных",
"app.theme.data_table.vertical_borders": "Показывать вертикальные разделители таблицы данных",
"app.theme.data_table.vertical_borders_hint": "Влияет только на DataGrid на страницах таблиц данных и не затрагивает другие табличные компоненты.",
"app.theme.mac_window.restart_hint": "* Пользовательские кнопки справа вверху скрыты. Если системный стиль окна не обновился сразу, перезапустите приложение.",
"app.theme.mac_window.title": "Управление окном macOS",
"app.theme.mac_window.use_native_controls": "Использовать нативные элементы управления окном macOS",
"app.theme.mac_window.use_native_controls_hint": "Показывает красную, желтую и зеленую кнопки слева вверху и отдает приоритет нативному полноэкранному поведению macOS.",
"app.theme.mode.dark.description": "Подходит для слабого освещения и более спокойного визуального восприятия.",
"app.theme.mode.dark.label": "Темная тема",
"app.theme.mode.light.description": "Подходит для яркой среды и более легкой визуальной иерархии.",
"app.theme.mode.light.label": "Светлая тема",
"app.theme.mode_title": "Режим темы",
"app.theme.nav.appearance.description": "Масштаб, шрифт и прозрачность",
"app.theme.nav.appearance.title": "Параметры внешнего вида",
"app.theme.nav.theme.description": "Переключение светлой и темной темы",
"app.theme.nav.theme.title": "Режим темы",
"app.theme.navigation_title": "Навигация по настройкам",
"app.theme.startup_window.fullscreen": "Полный экран при запуске",
"app.theme.startup_window.fullscreen_windows": "Полный экран при запуске (Windows обрабатывает это как максимизацию)",
"app.theme.startup_window.hint": "* Вступает в силу при следующем запуске",
"app.theme.startup_window.title": "Окно запуска",
"app.theme.startup_window.windows_hint": "* В Windows этот параметр обрабатывается как \"максимизировать при запуске\" и вступает в силу при следующем запуске",
"app.theme.theme_settings_description": "Переключение светлой и темной тем с сохранением единого визуального стиля.",
"app.theme.theme_settings_title": "Настройки темы",
"app.theme.ui_version.badge.new": "NEW",
"app.theme.ui_version.beta_warning": "Новый UI все еще находится в Beta, поэтому некоторые экраны могут отличаться от старого UI. При необходимости можно переключиться обратно в любой момент.",
"app.theme.ui_version.description": "Переключайте общий внешний вид, сохраняя доступ ко всем функциям. Новая версия использует более компактную информационную иерархию и более современный визуальный язык.",
"app.theme.ui_version.legacy.badge": "По умолчанию",
"app.theme.ui_version.legacy.description": "Текущий стабильный интерфейс, в котором полностью доступны все функции.",
"app.theme.ui_version.legacy.label": "Старый UI",
"app.theme.ui_version.platform_hint": "Windows, macOS и Linux поддерживают переключение. Изменения применяются сразу, а некоторые модальные окна используют новый стиль при следующем открытии.",
"app.theme.ui_version.sidebar_search.command": "Новый командный поиск",
"app.theme.ui_version.sidebar_search.filter": "Старый фильтр боковой панели",
"app.theme.ui_version.sidebar_search.hint": "Новый командный поиск удобен для перехода к подключениям, таблицам и действиям. Включите синхронизацию на панели, чтобы постоянно фильтровать левое дерево; старый фильтр боковой панели показывает поле ввода напрямую и сохраняет текст фильтра.",
"app.theme.ui_version.sidebar_search.title": "Новый режим поиска в левой боковой панели",
"app.theme.tab_display.title": "Отображение меток вкладок",
"app.theme.tab_display.description": "Настройте порядок отображения имени подключения, типа объекта, имени объекта, базы данных, Schema и Host/IP. В двухстрочном режиме контекст можно вынести во вторую строку.",
"app.theme.tab_display.layout.single": "Одна строка",
"app.theme.tab_display.layout.double": "Две строки",
"app.theme.tab_display.badge.current": "Текущий",
"app.theme.tab_display.row.primary": "Основная строка",
"app.theme.tab_display.row.secondary": "Вторая строка",
"app.theme.tab_display.action.move_up": "Вверх",
"app.theme.tab_display.action.move_down": "Вниз",
"app.theme.tab_display.preview.prefix": "Текущий предпросмотр: ",
"app.theme.tab_display.preview.default_label": "Метка по умолчанию",
"app.theme.tab_display.preview.secondary": ", вторая строка {{labels}}",
"app.theme.tab_display.preview.focused": "; выбрано {{label}}",
"app.theme.tab_display.element.connection.label": "Подключение",
"app.theme.tab_display.element.connection.description": "Псевдоним подключения или имя среды, например DEV",
"app.theme.tab_display.element.kind.label": "Тип объекта",
"app.theme.tab_display.element.kind.description": "Метки типов, например SQL / TABLE / VIEW",
"app.theme.tab_display.element.object.label": "Имя объекта",
"app.theme.tab_display.element.object.description": "Основные имена, например таблицы, запроса или ресурса",
"app.theme.tab_display.element.database.label": "База данных",
"app.theme.tab_display.element.database.description": "Текущее имя DB / catalog",
"app.theme.tab_display.element.schema.label": "Schema",
"app.theme.tab_display.element.schema.description": "Префикс schema / owner",
"app.theme.tab_display.element.host.label": "Host/IP",
"app.theme.tab_display.element.host.description": "Краткий адрес целевого подключения",
"app.theme.ui_version.title": "Версия интерфейса",
"app.theme.ui_version.v2.badge": "Beta",
"app.theme.ui_version.v2.description": "Переработанный компактный интерфейс с усиленным входом AI и обзором таблиц.",
"app.theme.ui_version.v2.label": "Новый UI",
"app.tools.description": "Единое управление конфигурацией подключений, синхронизацией, драйверами и горячими клавишами.",
"app.tools.entry.data_root.description": "Просмотр, переключение или перенос локального места хранения данных.",
"app.tools.entry.data_root.title": "Каталог данных",
"app.tools.entry.drivers.description": "Установка, обновление или удаление драйверов баз данных.",
"app.tools.entry.drivers.title": "Управление драйверами",
"app.tools.entry.export.description": "Экспорт текущих подключений и видимых полей конфигурации.",
"app.tools.entry.export.title": "Экспорт конфигурации подключений",
"app.tools.entry.import.description": "Восстановление списка подключений из локального файла.",
"app.tools.entry.import.title": "Импорт конфигурации подключений",
"app.tools.entry.security_update.description": "Просмотр статуса безопасного обновления сохраненных конфигураций.",
"app.tools.entry.security_update.status_description": "Текущий статус: {{status}}",
"app.tools.entry.security_update.title": "Безопасное обновление",
"app.window_zoom.message.fullscreen_exit_first": "Нельзя сбросить масштаб в полноэкранном режиме. Сначала выйдите из полноэкранного режима.",
"app.window_zoom.message.reset_failed": "Не удалось сбросить масштаб окна",
"app.window_zoom.message.reset_success": "Масштаб окна сброшен",
"app.window_zoom.message.reset_success_fallback": "Масштаб окна сброшен (резервный вариант)",
"app.window_zoom.message.windows_only": "Эта функция доступна только в Windows",
"app.tools.entry.shortcuts.description": "Просмотр и настройка глобальных горячих клавиш.",
"app.tools.entry.shortcuts.title": "Управление горячими клавишами",
"app.tools.entry.schema_compare.description": "Сравнивает различия структуры исходной и целевой таблиц, только предварительный просмотр без выполнения.",
"app.tools.entry.schema_compare.title": "Сравнение схем",
"app.tools.entry.data_compare.description": "Анализирует добавленные, обновленные, удаленные и неизмененные строки по первичному ключу.",
"app.tools.entry.data_compare.title": "Сравнение данных",
"app.tools.entry.sync.description": "Открыть рабочий процесс синхронизации между источниками.",
"app.tools.entry.sync.title": "Синхронизация данных",
"app.tools.title": "Центр инструментов",
"app.connection_package.action.start_export": "Начать экспорт",
"app.connection_package.action.start_import": "Начать импорт",
"app.connection_package.dialog.export_title": "Экспорт подключений",
"app.connection_package.dialog.file_password_placeholder": "Введите пароль защиты файла (необязательно)",
"app.connection_package.dialog.help.encrypted_passwords_recommend_file_password": "Пароли зашифрованы. Для передачи через публичную сеть рекомендуется задать пароль защиты файла.",
"app.connection_package.dialog.help.exclude_passwords": "Будут экспортированы только настройки подключений. Пароли не включаются.",
"app.connection_package.dialog.help.share_file_password_separately": "Передайте пароль получателю по отдельному каналу. Не отправляйте его вместе с файлом.",
"app.connection_package.dialog.import_password_title": "Введите пароль импорта",
"app.connection_package.dialog.option.include_passwords": "Экспортировать пароли подключений",
"app.connection_package.dialog.option.use_file_password": "Задать пароль защиты файла",
"app.connection_package.dialog.restore_password_placeholder": "Введите пароль пакета восстановления",
"app.connection_package.error.export_capability_unavailable": "Экспорт не выполнен: текущий backend не предоставляет новую возможность экспорта",
"app.connection_package.error.file_password_required": "Пароль защиты файла не может быть пустым",
"app.connection_package.error.import_capability_unavailable": "Импорт не выполнен: текущий backend не предоставляет новую возможность импорта",
"app.connection_package.error.import_no_connections": "Импорт не выполнен: backend не вернул список подключений",
"app.connection_package.error.missing_import_payload": "Импорт не выполнен: содержимое пакета восстановления для импорта не найдено",
"app.connection_package.error.refresh_failed_no_connections": "Импорт выполнен, но обновить список подключений не удалось: backend не вернул список подключений",
"app.connection_package.error.restore_password_required": "Пароль пакета восстановления не может быть пустым",
"app.connection_package.message.export_failed": "Экспорт не выполнен",
"app.connection_package.message.export_succeeded": "Экспорт выполнен",
"app.connection_package.message.import_failed": "Импорт не выполнен",
"app.connection_package.message.import_failed_with_error": "Импорт не выполнен: {{error}}",
"app.connection_package.message.imported_connections": "Импортировано подключений: {{count}}",
"app.connection_package.message.imported_with_missing_passwords": "Импортировано подключений: {{count}}. В некоторых подключениях нет паролей; отредактируйте эти подключения, введите пароли и сохраните.",
"app.connection.message.editable_load_failed": "Не удалось загрузить сведения сохраненного подключения. Вместо этого будет открыта маскированная конфигурация.",
"app.connection.message.editable_load_failed_with_detail": "Не удалось загрузить сведения сохраненного подключения: {{detail}}. Вместо этого будет открыта маскированная конфигурация.",
"app.connection_package.message.no_connections_to_export": "Нет подключений для экспорта",
"app.connection_package.message.unsupported_file_format": "Ошибка формата файла: поддерживаются только пакеты восстановления GoNavi, старые массивы подключений JSON или MySQL Workbench XML",
"app.browser_mock.export_sql_unsupported": "Браузерный mock не поддерживает экспорт SQL-файлов",
"app.browser_mock.import_connection_package_unsupported": "Браузерный mock не поддерживает импорт пакетов восстановления; поддерживаются только старые массивы подключений JSON",
"app.browser_mock.export_connection_package_unsupported": "Браузерный mock не поддерживает экспорт пакетов восстановления",
"app.browser_mock.mcp_http.not_running": "Служба GoNavi MCP HTTP не запущена",
"app.browser_mock.mcp_http.started": "Служба GoNavi MCP HTTP запущена",
"app.browser_mock.mcp_http.stopped": "Служба GoNavi MCP HTTP остановлена",
"app.browser_mock.mcp_server.command_required": "Команда MCP не может быть пустой",
"app.browser_mock.mcp_server.test_success": "Проверка MCP mock выполнена успешно",
"app.browser_mock.mcp_tool.unavailable": "Браузерный mock не подключен к реальной службе MCP",
"app.browser_mock.mcp_client.claude_code.installed": "Пользовательская конфигурация MCP для Claude Code записана. Перезапустите Claude CLI, после чего GoNavi появится в User MCPs в /mcp.",
"app.browser_mock.mcp_client.claude_code.not_detected": "Пользовательская конфигурация GoNavi MCP для Claude Code не обнаружена",
"app.browser_mock.mcp_client.codex.installed": "Пользовательская конфигурация MCP для Codex записана. Перезапустите Codex CLI или настольное приложение, чтобы увидеть GoNavi.",
"app.browser_mock.mcp_client.codex.path_mismatch": "В Codex обнаружена запись GoNavi MCP, но она не совпадает с текущим путем установки GoNavi. Рекомендуется обновить.",
"ai.service.mcp_client.claude_code.install_success": "Пользовательская конфигурация MCP для Claude Code записана. Перезапустите Claude CLI, после чего GoNavi появится в User MCPs в /mcp.",
"ai.service.mcp_client.codex.install_success": "Пользовательская конфигурация MCP для Codex записана. Перезапустите Codex CLI или настольное приложение, чтобы увидеть GoNavi.",
"ai.service.mcp_client.claude_code.config_path_failed": "Не удалось найти конфигурацию Claude Code: {{detail}}",
"ai.service.mcp_client.codex.config_path_failed": "Не удалось найти конфигурацию Codex: {{detail}}",
"ai.service.mcp_client.executable_path_failed": "Не удалось найти текущий исполняемый файл GoNavi: {{detail}}",
"ai.service.mcp_client.user_home_dir_unavailable": "Не удалось определить домашний каталог текущего пользователя",
"ai.service.mcp_client.executable_path_empty": "Путь к текущему исполняемому файлу GoNavi пуст",
"ai.service.mcp_client.claude_code.config_format_invalid": "Неверный формат конфигурации Claude Code: {{path}} должен быть {{expected}}",
"ai.service.mcp_client.codex.config_format_invalid": "Неверный формат конфигурации Codex: {{path}} не удалось разобрать как {{expected}}",
"ai.service.mcp_client.claude_code.config_read_failed": "Не удалось прочитать конфигурацию Claude Code: {{detail}}",
"ai.service.mcp_client.claude_code.config_parse_failed": "Не удалось разобрать конфигурацию Claude Code: {{detail}}",
"ai.service.mcp_client.claude_code.config_serialize_failed": "Не удалось сериализовать конфигурацию Claude Code: {{detail}}",
"ai.service.mcp_client.claude_code.config_dir_create_failed": "Не удалось создать каталог конфигурации Claude Code: {{detail}}",
"ai.service.mcp_client.claude_code.config_write_failed": "Не удалось записать конфигурацию Claude Code: {{detail}}",
"ai.service.mcp_client.codex.config_read_failed": "Не удалось прочитать конфигурацию Codex: {{detail}}",
"ai.service.mcp_client.codex.config_dir_create_failed": "Не удалось создать каталог конфигурации Codex: {{detail}}",
"ai.service.mcp_client.codex.config_write_failed": "Не удалось записать конфигурацию Codex: {{detail}}",
"ai.service.mcp_client.claude_code.status.missing": "Пользовательская конфигурация GoNavi MCP для Claude Code не обнаружена",
"ai.service.mcp_client.codex.status.missing": "Пользовательская конфигурация GoNavi MCP для Codex не обнаружена",
"ai.service.mcp_client.claude_code.status.path_check_failed": "В Claude Code обнаружена запись GoNavi MCP, но проверка текущего пути установки GoNavi не удалась: {{detail}}",
"ai.service.mcp_client.codex.status.path_check_failed": "В Codex обнаружена запись GoNavi MCP, но проверка текущего пути установки GoNavi не удалась: {{detail}}",
"ai.service.mcp_client.claude_code.status.connected": "Пользовательская конфигурация GoNavi MCP для Claude Code обнаружена и совпадает с текущим путем установки GoNavi",
"ai.service.mcp_client.codex.status.connected": "Пользовательская конфигурация GoNavi MCP для Codex обнаружена и совпадает с текущим путем установки GoNavi",
"ai.service.mcp_client.claude_code.status.path_mismatch": "В Claude Code обнаружена запись GoNavi MCP, но она не совпадает с текущим путем установки GoNavi. Рекомендуется обновить.",
"ai.service.mcp_client.codex.status.path_mismatch": "В Codex обнаружена запись GoNavi MCP, но она не совпадает с текущим путем установки GoNavi. Рекомендуется обновить.",
"ai.service.mcp_client.remote.status.message": "{{label}} обычно работает в облаке или удаленной среде. Подключите его к Windows GoNavi через удаленный MCP-мост; пароли баз данных остаются на этой машине GoNavi.",
"app.browser_mock.provider.test_failed_detail": "Проверка подключения не удалась: {{detail}}",
"app.browser_mock.provider.test_success": "Проверка подключения к конечной точке выполнена успешно",
"app.backend.error.reset_webview_zoom_failed": "Не удалось сбросить масштаб WebView2: {{detail}}",
"app.update.action.hide_to_background": "Скрыть в фон",
"app.update.action.install_update": "Установить обновление",
"app.update.action.open_install_directory": "Открыть каталог установки",
"app.update.backend.error.check_failed": "Не удалось проверить обновления: {{detail}}",
"app.update.backend.error.check_http_status": "Не удалось проверить обновления: HTTP {{status}}",
"app.update.backend.error.download_failed": "Не удалось скачать обновление: {{detail}}",
"app.update.backend.error.install_unsupported": "Установка обновления не поддерживается на этой платформе: {{platform}}",
"app.update.backend.error.latest_version_unparseable": "Не удалось разобрать номер последней версии",
"app.update.backend.error.online_update_unsupported": "Онлайн-обновление не поддерживается на этой платформе: {{platform}}",
"app.update.backend.error.package_download_http_failed": "Не удалось скачать пакет обновления: HTTP {{status}}",
"app.update.backend.error.package_file_busy": "Не удалось скачать обновление, потому что файл занят: {{detail}}",
"app.update.backend.error.release_version_unparseable": "Не удалось разобрать версию релиза",
"app.update.backend.error.sha256_missing_current_package": "SHA256SUMS не содержит пакет обновления для текущей платформы",
"app.update.backend.error.sha256sums_download_failed": "Не удалось скачать SHA256SUMS: HTTP {{status}}",
"app.update.backend.error.sha256sums_missing": "Release не предоставляет SHA256SUMS",
"app.update.backend.error.update_package_not_found": "Пакет обновления не найден: {{name}}",
"app.update.backend.message.app_directory_unavailable": "Нет доступа к каталогу приложения: {{path}}",
"app.update.backend.message.app_directory_unresolved_download": "Не удалось определить текущий каталог приложения, поэтому обновление нельзя скачать",
"app.update.backend.message.check_first": "Сначала проверьте обновления",
"app.update.backend.message.checksum_failed": "Проверка контрольной суммы пакета обновления не пройдена. Повторите попытку.",
"app.update.backend.message.checksum_missing": "Отсутствует контрольная сумма пакета обновления (SHA256SUMS)",
"app.update.backend.message.create_workspace_failed": "Не удалось создать рабочий каталог обновления в каталоге приложения: {{path}}",
"app.update.backend.message.download_in_progress": "Пакет обновления загружается. Повторите попытку позже.",
"app.update.backend.message.install_launch_failed": "Не удалось запустить установщик обновления: {{detail}}",
"app.update.backend.message.install_launch_failed_with_log": "Не удалось запустить установщик обновления: {{detail}} (журнал обновления: {{path}})",
"app.update.backend.message.install_started": "Установка обновления начата",
"app.update.backend.message.install_started_with_log": "Установка обновления начата. Путь к журналу: {{path}}",
"app.update.backend.message.latest": "Уже установлена последняя версия",
"app.update.backend.message.no_downloaded_package": "Скачанный пакет обновления не найден",
"app.update.backend.message.no_update_package": "Доступный пакет обновления не найден",
"app.update.backend.message.open_directory_failed": "Не удалось открыть каталог обновления: {{detail}}",
"app.update.backend.message.open_directory_unsupported": "Открытие каталогов не поддерживается на этой платформе: {{platform}}",
"app.update.backend.message.opened_install_directory": "Каталог установки открыт: {{path}}",
"app.update.backend.message.package_already_downloaded": "Пакет обновления уже скачан",
"app.update.backend.message.package_directory_unavailable": "Каталог обновления не существует или недоступен",
"app.update.backend.message.package_directory_unresolved": "Не удалось определить каталог обновления",
"app.update.backend.message.package_downloaded": "Пакет обновления скачан",
"app.update.backend.message.package_path_empty": "Путь к пакету обновления пуст",
"app.update.backend.message.update_found": "Найдена новая версия: {{version}}",
"app.update.download_title": "Скачать обновление",
"app.update.download_title_with_version": "Скачать обновление {{version}}",
"app.update.message.check_failed": "Не удалось проверить обновления: {{error}}",
"app.update.message.download_completed": "Загрузка обновления завершена",
"app.update.message.download_completed_with_path": "Загрузка обновления завершена. Путь к пакету: {{path}}",
"app.update.message.download_failed": "Не удалось скачать обновление: {{error}}",
"app.update.message.install_failed": "Не удалось установить обновление: {{error}}",
"app.update.message.open_install_directory_failed": "Не удалось открыть каталог установки: {{error}}",
"app.update.message.opened_install_directory": "Каталог установки открыт. Завершите замену вручную.",
"app.update.message.package_ready": "Пакет обновления готов ({{version}})",
"app.update.message.package_ready_with_path": "Пакет обновления готов ({{version}}), путь: {{path}}",
"app.update.message.update_found": "Найдена новая версия: {{version}}",
"app.update.status.available_downloaded": "Найдена новая версия {{version}} (скачана; нажмите \"Ход загрузки\", чтобы установить)",
"app.update.status.available_not_downloaded": "Найдена новая версия {{version}} (не скачана)",
"app.update.status.check_failed": "Не удалось проверить обновления: {{error}}",
"app.update.status.checking": "Проверка обновлений...",
"app.update.status.latest": "Уже установлена последняя версия ({{version}})",
"app.update.status.not_checked": "Не проверено",
"connection.delete": "Удалить подключение",
"connection.edit": "Изменить подключение",
"connection.new": "Новое подключение",
"connection.test": "Проверить подключение",
"connection.unnamed": "Безымянное подключение",
"database.unnamed": "База данных без имени",
"database.label": "База данных",
"connection.copy_suffix": " - копия",
"query.format": "Форматировать SQL",
"query.new": "Новый запрос",
"query.run": "Выполнить",
"query.save": "Сохранить запрос",
"saved_query.default_name": "Запрос {{index}}",
"saved_query.error.missing_context": "В сохраненном запросе отсутствует SQL, подключение или контекст базы данных",
"query.stop": "Остановить",
"message_publish_modal.title": "Тестовая отправка сообщения",
"message_publish_modal.title_with_connection": "Тестовая отправка сообщения · {{connectionName}}",
"message_publish_modal.action.send": "Отправить",
"message_publish_modal.error.build_command_failed": "Не удалось создать команду отправки",
"message_publish_modal.error.send_failed_detail": "Отправка не удалась: {{detail}}",
"message_publish_modal.error.unknown_error": "Неизвестная ошибка",
"message_publish_modal.field.exchange.label": "Exchange (необязательно)",
"message_publish_modal.field.exchange.extra": "Оставьте пустым, чтобы использовать exchange по умолчанию. Если указан пользовательский exchange, убедитесь, что для целевой Queue создан binding.",
"message_publish_modal.field.exchange.placeholder": "Пример: events.topic",
"message_publish_modal.field.routing_key.label": "Routing Key (необязательно)",
"message_publish_modal.field.routing_key.extra": "Оставьте пустым, чтобы по умолчанию использовать имя текущей Queue.",
"message_publish_modal.field.routing_key.placeholder": "Пример: orders.queue",
"message_publish_modal.field.qos.extra": "0 означает at most once, 1 означает at least once, 2 означает exactly once.",
"message_publish_modal.field.retain.label": "Retain-сообщение",
"message_publish_modal.field.tag.label": "Tag (необязательно)",
"message_publish_modal.field.tag.extra": "Оставьте пустым, чтобы не фильтровать и не записывать Tag.",
"message_publish_modal.field.delay_level.label": "Delay Level (необязательно)",
"message_publish_modal.field.delay_level.extra": "RocketMQ использует фиксированные уровни задержки. 0 означает немедленную отправку.",
"message_publish_modal.field.body_mode.label": "Тип тела сообщения",
"message_publish_modal.field.body.label": "Тело сообщения",
"message_publish_modal.field.body.required": "Введите тело сообщения",
"message_publish_modal.field.body.extra": "В режиме JSON требуется корректный JSON. В текстовом режиме содержимое отправляется как есть.",
"message_publish_modal.field.body.placeholder": "Введите тело сообщения",
"message_publish_modal.field.headers.label": "Headers (необязательно)",
"message_publish_modal.field.headers.extra": "Должно быть JSON-объектом, например {{example}}.",
"message_publish_modal.field.properties.label": "Properties (необязательно)",
"message_publish_modal.field.properties.extra": "Должно быть JSON-объектом, например {{example}}.",
"message_publish_modal.option.no_delay": "Без задержки",
"message_publish_modal.option.text": "Текст",
"message_publish_modal.footer.success_prefix": "При успешной отправке возвращается",
"message_publish_modal.footer.success_suffix": ", чтобы подтвердить, было ли отправлено это тестовое сообщение.",
"message_publish.field.body": "Тело сообщения",
"message_publish.field.message_key": "Ключ сообщения",
"message_publish.error.destination_required": "Введите целевой Topic / Queue",
"message_publish.error.required_field": "Введите {{field}}",
"message_publish.error.invalid_json_detail": "{{field}} не является корректным JSON: {{detail}}",
"message_publish.error.json_object_required": "{{field}} должен быть JSON-объектом",
"message_publish.error.mqtt_wildcard_topic": "Topic для отправки MQTT не может содержать подстановочные символы + или #",
"message_publish.error.unsupported_type": "Текущий источник данных не поддерживает тестовую отправку сообщений: {{type}}",
"message_publish.presentation.rabbitmq.destination_placeholder": "Пример: orders.queue",
"message_publish.presentation.rabbitmq.destination_required": "Введите Queue",
"message_publish.presentation.rabbitmq.alert": "Эта форма автоматически собирает RabbitMQ publish JSON-команду и отправляет тестовое сообщение через Management API.",
"message_publish.presentation.rabbitmq.success_hint": "Если Exchange пустой, используется exchange по умолчанию, а имя Queue применяется как routing key.",
"message_publish.presentation.rocketmq.destination_placeholder": "Пример: orders.events",
"message_publish.presentation.topic_required": "Введите Topic",
"message_publish.presentation.rocketmq.alert": "Эта форма автоматически собирает RocketMQ publish JSON-команду и отправляет тестовое сообщение через NameServer/Broker.",
"message_publish.presentation.rocketmq.success_hint": "Tag, Keys, Delay Level и Properties записываются в атрибуты сообщения RocketMQ.",
"message_publish.presentation.keys_label": "Ключи сообщения Keys (необязательно)",
"message_publish.presentation.rocketmq.key_placeholder": "Можно ввести несколько значений Key через запятую",
"message_publish.presentation.rocketmq.tag_placeholder": "Пример: TagA",
"message_publish.presentation.mqtt.destination_placeholder": "Пример: devices/device-001/telemetry",
"message_publish.presentation.mqtt.alert": "Эта форма автоматически собирает MQTT publish JSON-команду и отправляет тестовое сообщение напрямую через broker.",
"message_publish.presentation.mqtt.success_hint": "QoS и retain можно задать отдельно. Пустые поля используют значения по умолчанию из текущего подключения.",
"message_publish.presentation.kafka.destination_placeholder": "Пример: orders.events",
"message_publish.presentation.kafka.alert": "Эта форма автоматически собирает Kafka publish JSON-команду и вызывает backend для тестовой отправки.",
"message_publish.presentation.kafka.success_hint": "Headers отправляются как Kafka Record Headers.",
"message_publish.presentation.key_label": "Ключ сообщения Key (необязательно)",
"message_publish.presentation.kafka.key_placeholder": "Необязательно. В режиме JSON введите одну корректную строку JSON.",
"connection_modal.action.browse": "Выбрать...",
"connection_modal.action.disable": "Отключить",
"connection_modal.action.discover_members": "Обнаружить участников",
"connection_modal.action.enable_and_prefer": "Включить и предпочесть",
"connection_modal.badge.current_editing": "Редактируется",
"connection_modal.badge.preferred": "Предпочтительный",
"connection_modal.field.additional_hosts": "Дополнительные хосты",
"connection_modal.field.additional_srv_hosts_optional": "Дополнительные SRV-хосты (необязательно)",
"connection_modal.field.auth_source": "База аутентификации (authSource)",
"connection_modal.field.cluster_additional_hosts": "Дополнительные узлы кластера",
"connection_modal.field.connection_timeout_seconds": "Тайм-аут подключения (секунды)",
"connection_modal.field.connection_timeout_seconds_ascii": "Тайм-аут подключения (секунды)",
"connection_modal.field.default_database_optional": "База данных по умолчанию (необязательно)",
"connection_modal.field.display_databases_optional": "Отображаемые базы данных (необязательно)",
"connection_modal.field.file_path_absolute": "Путь к файлу (абсолютный)",
"connection_modal.field.host_address": "Адрес хоста",
"connection_modal.field.password_optional": "Пароль (необязательно)",
"connection_modal.field.port": "Порт",
"connection_modal.field.port_plain": "Порт",
"connection_modal.field.private_key_path_optional": "Путь к закрытому ключу (необязательно)",
"connection_modal.field.proxy_host": "Хост прокси",
"connection_modal.field.proxy_password_optional": "Пароль прокси (необязательно)",
"connection_modal.field.proxy_type": "Тип прокси",
"connection_modal.field.proxy_username_optional": "Имя пользователя прокси (необязательно)",
"connection_modal.field.replica_hosts": "Список хостов реплик",
"connection_modal.field.replica_password_optional": "Пароль реплики (необязательно)",
"connection_modal.field.replica_set_optional": "Replica Set (необязательно)",
"connection_modal.field.replica_set_password_optional": "Пароль Replica Set (необязательно)",
"connection_modal.field.replica_set_username_optional": "Имя пользователя Replica Set (необязательно)",
"connection_modal.field.replica_username_optional": "Имя пользователя реплики (необязательно)",
"connection_modal.field.save_password": "Сохранить пароль",
"connection_modal.field.service_name": "Имя сервиса",
"connection_modal.field.defaultDatabase.placeholder": "Например: appdb",
"connection_modal.field.serviceName.placeholder": "Например: ORCLPDB1",
"connection_modal.field.clickHouseProtocol.auto": "Авто",
"connection_modal.field.oceanBaseProtocol.label": "Протокол OceanBase",
"connection_modal.field.oceanBaseProtocol.help.primary": "Для арендаторов MySQL выберите MySQL, для арендаторов Oracle выберите Oracle. GoNavi автоматически выбирает режим по порту: для порта OB MySQL wire используется внедрение возможностей OBClient (тот же путь, что и в Navicat), для порта OBProxy Oracle listener используется стандартный TNS.",
"connection_modal.field.oceanBaseProtocol.help.connectionAttributes": "Если при подключении к Oracle-арендатору возникает \"Error 1235\" или сбой рукопожатия OBClient, в поле \"Параметры подключения\" можно через {{attributes}} переопределить OBClient capability, которую GoNavi внедряет по умолчанию.",
"connection.oceanbase.error.unsupported_protocol": "OceanBase поддерживает только tenant-протоколы MySQL/Oracle; \"{{value}}\" не поддерживается. Переключитесь на MySQL или Oracle.",
"connection_modal.field.ssh_host": "SSH-хост",
"connection_modal.field.ssh_password": "SSH-пароль",
"connection_modal.field.ssh_user": "SSH-пользователь",
"connection_modal.field.ssl_cert_path": "Путь к SSL-сертификату",
"connection_modal.field.ssl_key_path": "Путь к SSL-ключу",
"connection_modal.field.tunnel_host": "Хост HTTP Tunnel",
"connection_modal.field.tunnel_password_optional": "Пароль HTTP Tunnel (необязательно)",
"connection_modal.field.tunnel_username_optional": "Имя пользователя HTTP Tunnel (необязательно)",
"connection_modal.field.username": "Имя пользователя",
"connection_modal.field.username.optional_placeholder": "Оставьте пустым, если аутентификация отключена",
"connection_modal.help.additional_hosts": "Необязательные участники MongoDB, разделенные запятой, точкой с запятой или пробелом.",
"connection_modal.help.additional_srv_hosts": "Необязательные дополнительные SRV-хосты для обнаружения MongoDB.",
"connection_modal.help.connection_timeout": "Применяется к тестам подключения и загрузке метаданных. Диапазон: 1-300 секунд.",
"connection_modal.help.custom_driver": "Поддерживаются: mysql, postgres, sqlite, oracle, dm, kingbase. Алиасы: postgresql/pgx, dm8, kingbase8/kingbasees/kingbasev8. Расширение драйверов через JDBC Jar сейчас не поддерживается.",
"connection_modal.help.default_database": "Оставьте пустым, чтобы использовать базу данных сервера по умолчанию.",
"connection_modal.help.oracle_service_name": "Имя сервиса Oracle, например ORCLPDB1.",
"connection_modal.help.private_key_path": "Используйте закрытый ключ для SSH-аутентификации. Оставьте пароль пустым, если ключ не зашифрован.",
"connection_modal.help.redis_cluster_hosts": "Дополнительные узлы Redis Cluster, разделенные запятой, точкой с запятой или пробелом.",
"connection_modal.help.replica_hosts": "Хосты реплик в формате host:port, разделенные запятой, точкой с запятой или пробелом.",
"connection_modal.help.select_after_test": "Сначала выполните тест подключения, чтобы загрузить доступные базы данных.",
"connection_modal.jvm.access_mode_description": "Выберите режимы доступа JVM для этого подключения и предпочтительный режим.",
"connection_modal.jvm.access_mode_title": "Режимы доступа",
"connection_modal.jvm.agent_api_key_optional": "Ключ API Agent (необязательно)",
"connection_modal.jvm.agent_description": "Подключение через GoNavi Agent, когда прямой сетевой доступ ограничен.",
"connection_modal.jvm.agent_help": "Базовый URL сервиса GoNavi Agent.",
"connection_modal.jvm.agent_url": "URL Agent",
"connection_modal.jvm.diagnostic.agent_bridge_description": "Использовать диагностический Endpoint GoNavi Agent Bridge.",
"connection_modal.jvm.diagnostic.arthas_tunnel_description": "Использовать Arthas Tunnel для доступа к целевой JVM.",
"connection_modal.jvm.diagnostic.arthas_tunnel_help": "Базовый URL сервера Arthas Tunnel.",
"connection_modal.jvm.diagnostic.transport.agent_bridge": "Agent Bridge",
"connection_modal.jvm.diagnostic.transport.arthas_tunnel": "Arthas Tunnel",
"connection_modal.jvm.diagnostic.arthas_tunnel_url": "URL Arthas Tunnel",
"connection_modal.jvm.diagnostic.bridge_help": "Базовый URL диагностического моста GoNavi.",
"connection_modal.jvm.diagnostic.bridge_url": "URL диагностического моста",
"connection_modal.jvm.diagnostic.mutating_commands": "Изменяющие команды",
"connection_modal.jvm.diagnostic.mutating_commands_description": "Разрешить команды, которые могут изменить состояние выполнения. Используйте только в контролируемых средах.",
"connection_modal.jvm.diagnostic.observe_commands": "Команды наблюдения",
"connection_modal.jvm.diagnostic.observe_commands_description": "Разрешить команды только для чтения, такие как dashboard, thread и сведения JVM.",
"connection_modal.jvm.diagnostic.target_agent_id": "ID целевого Agent",
"connection_modal.jvm.diagnostic.target_agent_id_help": "Agent ID, зарегистрированный в Arthas Tunnel.",
"connection_modal.jvm.diagnostic.target_id": "ID цели",
"connection_modal.jvm.diagnostic.target_id_help": "Идентификатор цели для диагностического моста. Оставьте пустым, если мост выбирает цель по умолчанию.",
"connection_modal.jvm.diagnostic.trace_commands": "Команды трассировки",
"connection_modal.jvm.diagnostic.trace_commands_description": "Разрешить trace и watch команды, которые добавляют нагрузку во время выполнения.",
"connection_modal.jvm.diagnostic_api_key_optional": "Ключ API диагностики (необязательно)",
"connection_modal.jvm.diagnostic_description": "Включить необязательные диагностические команды для устранения неполадок JVM.",
"connection_modal.jvm.diagnostic_disabled_hint": "Диагностическое расширение отключено. Включайте его только для диагностики во время выполнения.",
"connection_modal.jvm.diagnostic_timeout_seconds": "Тайм-аут диагностики (секунды)",
"connection_modal.jvm.diagnostic_title": "Диагностическое расширение",
"connection_modal.jvm.diagnostic_transport": "Диагностический транспорт",
"connection_modal.jvm.endpoint_api_key_optional": "Ключ API Endpoint (необязательно)",
"connection_modal.jvm.endpoint_description": "Подключаться к предоставленному сервисом Endpoint вместо прямого JMX.",
"connection_modal.jvm.endpoint_help": "Базовый URL Endpoint управления JVM.",
"connection_modal.jvm.endpoint_url": "URL Endpoint",
"connection_modal.jvm.environment": "Среда",
"connection_modal.jvm.environment.dev": "Разработка",
"connection_modal.jvm.environment.dev_description": "Тестовая среда с меньшим риском.",
"connection_modal.jvm.environment.prod": "Продакшен",
"connection_modal.jvm.environment.prod_description": "Производственная среда; рекомендуется режим только для чтения.",
"connection_modal.jvm.environment.uat": "UAT",
"connection_modal.jvm.environment.uat_description": "Среда проверки перед продакшеном.",
"connection_modal.jvm.jmx_description": "Подключение через JMX с хостом, портом и необязательными учетными данными.",
"connection_modal.jvm.jmx_host_override_optional": "Переопределение хоста JMX (необязательно)",
"connection_modal.jvm.jmx_password_optional": "Пароль JMX (необязательно)",
"connection_modal.jvm.jmx_port": "Порт JMX",
"connection_modal.jvm.jmx_username_optional": "Имя пользователя JMX (необязательно)",
"connection_modal.jvm.mode.agent_description": "Использовать GoNavi Agent для сред за firewall или NAT.",
"connection_modal.jvm.mode.endpoint_description": "Использовать HTTP Endpoint, предоставленный целевым сервисом.",
"connection_modal.jvm.mode.jmx_description": "Использовать стандартный удаленный доступ JMX.",
"connection_modal.jvm.preferred_mode_hint": "Текущий предпочтительный режим: {{mode}}",
"connection_modal.jvm.read_only_first": "Предпочитать операции только для чтения",
"connection_modal.jvm.security_policy": "Политика безопасности",
"connection_modal.message.srv_with_ssh_dns_warning": "SRV вместе с SSH Tunnel может зависеть от локального DNS. Если разрешение не удается, используйте стандартные хосты.",
"connection_modal.messageQueue.kafka.defaultTopic.label": "Topic по умолчанию (необязательно)",
"connection_modal.messageQueue.kafka.defaultTopic.help": "Если поле пустое, Topic нужно явно указать в SQL. После заполнения SHOW, CONSUME или SELECT могут сразу выполнять предварительный просмотр.",
"connection_modal.messageQueue.kafka.defaultTopic.placeholder": "Например: orders.events",
"connection_modal.messageQueue.rocketmq.defaultTopic.label": "Topic по умолчанию (необязательно)",
"connection_modal.messageQueue.rocketmq.defaultTopic.help": "Если поле пустое, Topic нужно явно указать в SQL. В параметрах подключения можно дополнительно задать groupId, namespace, tag, pullBatchSize и startOffset.",
"connection_modal.messageQueue.rocketmq.defaultTopic.placeholder": "Например: orders.events",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.label": "Topic / Filter по умолчанию (необязательно)",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.help": "Если поле пустое, Topic нужно явно указать в SQL. После заполнения SHOW, CONSUME или SELECT могут сразу выполнять предварительный просмотр. Поддерживаются /, + и #.",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.placeholder": "Например: devices/+/telemetry",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.label": "Virtual Host по умолчанию (необязательно)",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.help": "Если поле пустое, по умолчанию используется /. После заполнения редактор запросов использует текущий vhost как контекст просмотра Queue и тестовой отправки.",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.placeholder": "Например: / или orders-vhost",
"connection_modal.messageQueue.topology.cluster.label": "Режим кластера",
"connection_modal.messageQueue.kafka.topology.single.label": "Один Broker",
"connection_modal.messageQueue.kafka.topology.single.description": "Настраивает один bootstrap broker для локальной или простой среды.",
"connection_modal.messageQueue.kafka.topology.cluster.description": "Настраивает несколько bootstrap broker, чтобы повысить успешность обнаружения и failover.",
"connection_modal.messageQueue.rocketmq.topology.single.label": "Один NameServer",
"connection_modal.messageQueue.rocketmq.topology.single.description": "Настраивает один NameServer для локальной или простой среды.",
"connection_modal.messageQueue.rocketmq.topology.cluster.description": "Настраивает несколько NameServer, чтобы повысить успешность обнаружения маршрутов и failover.",
"connection_modal.messageQueue.mqtt.topology.single.label": "Один Broker",
"connection_modal.messageQueue.mqtt.topology.single.description": "Настраивает один broker для локальной или простой среды.",
"connection_modal.messageQueue.mqtt.topology.cluster.description": "Настраивает несколько broker, чтобы повысить успешность обнаружения подключения и failover.",
"connection_modal.messageQueue.kafka.extraBrokers.label": "Дополнительные адреса Broker",
"connection_modal.messageQueue.kafka.extraBrokers.help": "Введите несколько адресов broker в формате host:port и нажмите Enter для подтверждения.",
"connection_modal.messageQueue.kafka.extraBrokers.placeholder": "Например: 10.10.0.12:9092, 10.10.0.13:9092",
"connection_modal.messageQueue.rocketmq.extraNameServers.label": "Дополнительные адреса NameServer",
"connection_modal.messageQueue.rocketmq.extraNameServers.help": "Введите несколько адресов NameServer в формате host:port и нажмите Enter для подтверждения.",
"connection_modal.messageQueue.rocketmq.extraNameServers.placeholder": "Например: 10.10.0.12:9876, 10.10.0.13:9876",
"connection_modal.messageQueue.mqtt.extraBrokers.label": "Дополнительные адреса Broker",
"connection_modal.messageQueue.mqtt.extraBrokers.help": "Введите несколько адресов broker в формате host:port и нажмите Enter для подтверждения.",
"connection_modal.messageQueue.mqtt.extraBrokers.placeholder": "Например: 10.10.0.12:1883, 10.10.0.13:1883",
"connection_modal.redis.topology.single.label": "Одиночный режим",
"connection_modal.redis.topology.single.description": "Подключение к одному узлу Redis.",
"connection_modal.redis.topology.cluster.label": "Режим кластера",
"connection_modal.redis.topology.cluster.description": "Redis Cluster с несколькими seed-узлами.",
"connection_modal.redis.topology.sentinel.label": "Режим Sentinel",
"connection_modal.redis.topology.sentinel.description": "Обнаруживает primary-узел через Sentinel для высокой доступности primary-replica.",
"connection_modal.redis.hosts.sentinel.label": "Дополнительные адреса узлов Sentinel",
"connection_modal.redis.hosts.sentinel.help": "Указанный выше host используется как первый Sentinel. Введите здесь другие узлы Sentinel в формате host:port.",
"connection_modal.redis.hosts.sentinel.placeholder": "Например: 10.10.0.12:26379, 10.10.0.13:26379",
"connection_modal.redis.hosts.cluster.label": "Дополнительные адреса узлов кластера",
"connection_modal.redis.hosts.cluster.help": "Указанный выше host используется как primary-узел. Введите здесь другие seed-узлы в формате host:port.",
"connection_modal.redis.hosts.cluster.placeholder": "Например: 10.10.0.12:6379, 10.10.0.13:6379",
"connection_modal.redis.sentinel.master.label": "Имя Sentinel master",
"connection_modal.redis.sentinel.master.help": "Введите имя monitor из конфигурации Sentinel, например mymaster.",
"connection_modal.redis.sentinel.master.required": "Введите имя Sentinel master",
"connection_modal.redis.sentinel.master.placeholder": "Например: mymaster",
"connection_modal.redis.credentials.primary.label": "Пароль (необязательно)",
"connection_modal.redis.credentials.primary.placeholder.empty": "Пароль Redis, если задан requirepass",
"connection_modal.redis.credentials.primary.placeholder.retained": "Сохраненный пароль Redis",
"connection_modal.redis.credentials.sentinelUser.label": "Имя пользователя Sentinel (необязательно)",
"connection_modal.redis.credentials.sentinelUser.placeholder": "Оставьте пустым, если Sentinel не использует имя пользователя ACL",
"connection_modal.redis.credentials.sentinelPassword.label": "Пароль Sentinel (необязательно)",
"connection_modal.redis.credentials.sentinelPassword.placeholder.empty": "Пароль аутентификации самого Sentinel. Оставьте пустым, чтобы ничего не отправлять.",
"connection_modal.redis.credentials.sentinelPassword.placeholder.retained": "Сохраненный пароль Sentinel",
"connection_modal.redis.credentials.sentinelPassword.clear": "Очистить сохраненный пароль Sentinel",
"connection_modal.redis.credentials.sentinelPassword.description": "Пароль Sentinel уже сохранен. Оставьте поле пустым, чтобы продолжить использовать его, или введите новое значение для замены.",
"connection_modal.redis.databaseScope.label": "Показываемые базы данных (пусто значит все)",
"connection_modal.redis.databaseScope.help": "Можно выбрать после успешной проверки подключения",
"connection_modal.redis.databaseScope.placeholder": "Выберите базы данных для показа",
"connection_modal.mongodb.auth.auto": "Авто",
"connection_modal.mongodb.auth.auto_description": "Позволить драйверу выбрать механизм аутентификации.",
"connection_modal.mongodb.auth.aws_iam_description": "Использовать аутентификацию AWS IAM. Учетные данные AWS IAM должны быть в среде выполнения.",
"connection_modal.mongodb.auth.none": "Без аутентификации",
"connection_modal.mongodb.auth.none_description": "Подключаться без аутентификации MongoDB.",
"connection_modal.mongodb.auth.scram_sha1_description": "Использовать аутентификацию SCRAM-SHA-1.",
"connection_modal.mongodb.auth.scram_sha256_description": "Использовать аутентификацию SCRAM-SHA-256.",
"connection_modal.mongodb.auth_mechanism": "Механизм аутентификации",
"connection_modal.mongodb.topology.single.label": "Одиночный режим",
"connection_modal.mongodb.topology.replica.label": "Replica Set / несколько узлов",
"connection_modal.mongodb.discovery.standard.label": "Стандартный адрес",
"connection_modal.mongodb.discovery.standard.description": "Подключение напрямую через host:port или список узлов Replica Set.",
"connection_modal.mongodb.discovery.srv.label": "SRV-адрес",
"connection_modal.mongodb.discovery.srv.description": "Использовать mongodb+srv, чтобы DNS обнаружил целевые узлы.",
"connection_modal.mongodb.discovery.current": "Текущий",
"connection_modal.mongodb.discovery.srv_ssh_warning": "Если SRV и SSH Tunnel включены одновременно, может потребоваться локальное DNS-разрешение.",
"connection_modal.mongodb.replica.hosts.srv.label": "Дополнительные SRV-хосты (необязательно)",
"connection_modal.mongodb.replica.hosts.srv.help": "Введите несколько имен кандидатов host в формате host. Если оставить пустым, используется только host выше.",
"connection_modal.mongodb.replica.hosts.srv.placeholder": "Например: cluster-a.example.com, cluster-b.example.com",
"connection_modal.mongodb.replica.hosts.standard.label": "Дополнительные адреса узлов",
"connection_modal.mongodb.replica.hosts.standard.help": "Введите несколько адресов узлов в формате host:port и нажмите Enter для подтверждения.",
"connection_modal.mongodb.replica.hosts.standard.placeholder": "Например: 10.10.0.12:27017, 10.10.0.13:27017",
"connection_modal.mongodb.replica.set.label": "Имя Replica Set (необязательно)",
"connection_modal.mongodb.replica.set.placeholder": "Например: rs0",
"connection_modal.mongodb.replica.user.label": "Имя пользователя Replica Set (необязательно)",
"connection_modal.mongodb.replica.user.placeholder": "Оставьте пустым, чтобы использовать основное имя пользователя",
"connection_modal.mongodb.replica.password.label": "Пароль Replica Set (необязательно)",
"connection_modal.mongodb.replica.password.placeholder.empty": "Оставьте пустым, чтобы использовать основной пароль",
"connection_modal.mongodb.replica.password.placeholder.retained": "Сохраненный пароль Replica Set",
"connection_modal.mongodb.replica.password.clear": "Очистить сохраненный пароль Replica Set",
"connection_modal.mongodb.replica.password.description": "Пароль Replica Set уже сохранен. Оставьте поле пустым, чтобы продолжить использовать его, или введите новое значение для замены.",
"connection_modal.mongodb.members.role": "Роль",
"connection_modal.mongodb.members.health": "Состояние",
"connection_modal.mongodb.members.health.ok": "Норма",
"connection_modal.mongodb.members.health.error": "Ошибка",
"connection_modal.mongodb.policy.auth_source.label": "База аутентификации (authSource)",
"connection_modal.mongodb.policy.auth_source.placeholder": "По умолчанию используется database или admin",
"connection_modal.mongodb.read_preference": "readPreference",
"connection_modal.mongodb.read_preference.nearest": "Направлять чтение к ближайшему участнику.",
"connection_modal.mongodb.read_preference.primary": "Читать только с primary.",
"connection_modal.mongodb.read_preference.primary_preferred": "Предпочитать primary, при необходимости переходить на secondary.",
"connection_modal.mongodb.read_preference.secondary": "Читать только с secondary.",
"connection_modal.mongodb.read_preference.secondary_preferred": "Предпочитать secondary, при необходимости переходить на primary.",
"connection_modal.mongodb.srv_address": "SRV-адрес",
"connection_modal.mongodb.srv_address_description": "Использовать запись MongoDB SRV для обнаружения хостов.",
"connection_modal.mongodb.standard_address": "Стандартный адрес",
"connection_modal.mongodb.standard_address_description": "Использовать хост и порт, а также необязательный список участников.",
"connection_modal.network.http_tunnel": "HTTP Tunnel",
"connection_modal.network.http_tunnel_description": "Перенаправлять трафик базы данных через HTTP Tunnel.",
"connection_modal.network.http_tunnel_disabled_hint": "Включите HTTP Tunnel, чтобы настроить хост, порт и учетные данные Tunnel.",
"connection_modal.network.http_tunnel_mutex_hint": "HTTP Tunnel нельзя использовать вместе с SSH Tunnel или прокси.",
"connection_modal.network.http_tunnel_panel_description": "Настройте шлюз HTTP Tunnel для этого подключения.",
"connection_modal.network.proxy": "Прокси",
"connection_modal.network.proxy_disabled_hint": "Включите прокси, чтобы направить это подключение через SOCKS5 или HTTP CONNECT.",
"connection_modal.network.proxy_panel_description": "Настройте параметры прокси для этого подключения.",
"connection_modal.network.proxy_type.http_description": "Использовать прокси HTTP CONNECT.",
"connection_modal.network.proxy_type.socks5_description": "Использовать прокси SOCKS5.",
"connection_modal.network.ssh_disabled_hint": "Включите SSH Tunnel для подключения через bastion host.",
"connection_modal.network.ssh_panel_description": "Настройте хост SSH Tunnel, учетные данные и необязательный закрытый ключ.",
"connection_modal.network.ssh_tunnel": "SSH Tunnel",
"connection_modal.network.ssh_tunnel_description": "Подключаться к базе данных через SSH Tunnel.",
"connection_modal.network.ssl_description": "Шифровать подключение к базе данных с помощью SSL/TLS.",
"connection_modal.network.ssl_tls": "SSL/TLS",
"connection_modal.network.ssl_disabled_hint": "Включите SSL/TLS для настройки политики сертификатов.",
"connection_modal.network.ssl_mode": "Режим SSL",
"connection_modal.network.ssl_mode.preferred_description": "Сначала попробовать SSL и откатиться, если сервер не требует шифрования.",
"connection_modal.network.ssl_mode.required_description": "Требовать SSL и завершать ошибкой, если шифрованное подключение невозможно.",
"connection_modal.network.ssl_mode.skip_verify_description": "Использовать SSL, но пропустить проверку сертификата. Только для тестов или самоподписанных сертификатов.",
"connection_modal.network.ssl_panel_description": "Настройте политику SSL/TLS для этого подключения.",
"connection_modal.placeholder.absolute_path": "/absolute/path/to/file",
"connection_modal.placeholder.agent_api_key": "Необязательный ключ API Agent",
"connection_modal.placeholder.agent_url": "http://127.0.0.1:19090",
"connection_modal.placeholder.custom_dsn_example": "Пример: DSN конкретного драйвера",
"connection_modal.placeholder.default_database_or_admin": "база данных по умолчанию или admin",
"connection_modal.placeholder.diagnostic_api_key": "Необязательный ключ API диагностики",
"connection_modal.placeholder.diagnostic_target_agent_id": "Arthas Agent ID",
"connection_modal.placeholder.diagnostic_target_id": "ID цели",
"connection_modal.placeholder.empty_without_auth": "Оставьте пустым без аутентификации",
"connection_modal.placeholder.endpoint_api_key": "Необязательный ключ API Endpoint",
"connection_modal.placeholder.endpoint_url": "http://127.0.0.1:8080",
"connection_modal.placeholder.example_appdb": "appdb",
"connection_modal.placeholder.example_mongo_hosts": "mongo2:27017, mongo3:27017",
"connection_modal.placeholder.example_mysql_replica_hosts": "replica1:3306, replica2:3306",
"connection_modal.placeholder.example_orclpdb1": "ORCLPDB1",
"connection_modal.placeholder.example_redis_hosts": "redis2:6379, redis3:6379",
"connection_modal.placeholder.example_rs0": "rs0",
"connection_modal.placeholder.example_srv_hosts": "cluster0.example.mongodb.net",
"connection_modal.placeholder.no_auth": "Без аутентификации",
"connection_modal.placeholder.proxy_host": "127.0.0.1",
"connection_modal.placeholder.redis_password": "Пароль Redis",
"connection_modal.placeholder.select_databases": "Выберите базы данных для отображения",
"connection_modal.placeholder.select_redis_databases": "Выберите базы Redis для отображения",
"connection_modal.placeholder.ssh_host": "bastion.example.com",
"connection_modal.placeholder.ssl_cert_path": "/absolute/path/client.crt",
"connection_modal.placeholder.ssl_key_path": "/absolute/path/client.key",
"connection_modal.placeholder.tunnel_host": "tunnel.example.com",
"connection_modal.placeholder.use_primary_host": "Использовать основной хост",
"connection_modal.placeholder.use_primary_password": "Использовать основной пароль",
"connection_modal.placeholder.use_primary_password_short": "Использовать основной пароль",
"connection_modal.placeholder.use_primary_port": "Использовать основной порт",
"connection_modal.placeholder.use_primary_username": "Использовать основное имя пользователя",
"connection_modal.placeholder.use_primary_username_short": "Использовать основное имя пользователя",
"connection_modal.secret.clear_saved_mongo_replica_password": "Очистить сохраненный пароль реплики MongoDB",
"connection_modal.secret.clear_saved_password": "Очистить сохраненный пароль",
"connection_modal.secret.clear_saved_proxy_password": "Очистить сохраненный пароль прокси",
"connection_modal.secret.clear_saved_replica_password": "Очистить сохраненный пароль реплики",
"connection_modal.secret.clear_saved_ssh_password": "Очистить сохраненный SSH-пароль",
"connection_modal.secret.clear_saved_tunnel_password": "Очистить сохраненный пароль HTTP Tunnel",
"connection_modal.secret.error.saved_connection_deleted": "Сохраненное подключение не найдено. Возможно, оно было удалено. Обновите список и попробуйте еще раз.",
"connection_modal.secret.error.saved_connection_missing": "Сохраненный секрет для текущего подключения не найден. Повторно введите пароль, сохраните и попробуйте снова.",
"connection_modal.secret.error.store_unavailable": "Безопасное хранилище секретов сейчас недоступно. Проверьте системную связку ключей или диспетчер учетных данных и попробуйте снова.",
"connection_modal.secret.saved_mongo_replica_password": "Сохраненный пароль реплики MongoDB",
"connection_modal.secret.saved_mongo_replica_password_description": "Пароль реплики MongoDB уже сохранен в защищенном хранилище. Оставьте поле пустым, чтобы сохранить его.",
"connection_modal.secret.saved_password": "Сохраненный пароль",
"connection_modal.secret.saved_placeholder": "•••••• (оставьте пустым, чтобы продолжить использовать {{label}})",
"connection_modal.secret.saved_primary_password_description": "Пароль основного подключения уже сохранен в защищенном хранилище. Оставьте поле пустым, чтобы сохранить его.",
"connection_modal.secret.saved_proxy_password": "Сохраненный пароль прокси",
"connection_modal.secret.saved_proxy_password_description": "Пароль прокси уже сохранен в защищенном хранилище. Оставьте поле пустым, чтобы сохранить его.",
"connection_modal.secret.saved_redis_password": "Сохраненный пароль Redis",
"connection_modal.secret.saved_redis_password_description": "Пароль Redis уже сохранен в защищенном хранилище. Оставьте поле пустым, чтобы сохранить его.",
"connection_modal.secret.saved_replica_password": "Сохраненный пароль реплики",
"connection_modal.secret.saved_replica_password_description": "Пароль реплики уже сохранен в защищенном хранилище. Оставьте поле пустым, чтобы сохранить его.",
"connection_modal.secret.saved_ssh_password": "Сохраненный SSH-пароль",
"connection_modal.secret.saved_ssh_password_description": "SSH-пароль уже сохранен в защищенном хранилище. Оставьте поле пустым, чтобы сохранить его.",
"connection_modal.secret.saved_tunnel_password": "Сохраненный пароль HTTP Tunnel",
"connection_modal.secret.saved_tunnel_password_description": "Пароль HTTP Tunnel уже сохранен в защищенном хранилище. Оставьте поле пустым, чтобы сохранить его.",
"connection_modal.section.advanced_connection": "Расширенное подключение",
"connection_modal.section.config_sections": "Разделы конфигурации",
"connection_modal.status.disabled": "Отключено",
"connection_modal.status.enabled": "Включено",
"connection_modal.status.healthy": "Исправен",
"connection_modal.status.unhealthy": "Неисправен",
"connection_modal.switch.off": "Выкл",
"connection_modal.switch.on": "Вкл",
"connection_modal.table.health": "Состояние",
"connection_modal.table.role": "Роль",
"connection_modal.topology.cluster": "Кластер",
"connection_modal.topology.mongodb_replica": "Replica Set",
"connection_modal.topology.mongodb_replica_description": "Подключиться к MongoDB Replica Set и при необходимости обнаружить участников.",
"connection_modal.topology.mongodb_single_description": "Подключиться к одному хосту MongoDB.",
"connection_modal.topology.mysql_replica_description": "Использовать основное подключение и необязательные хосты реплик.",
"connection_modal.topology.mysql_single_description": "Подключиться к одному MySQL-совместимому узлу.",
"connection_modal.topology.primary_replica": "Primary/replica",
"connection_modal.topology.redis_cluster_description": "Подключиться к Redis Cluster и указать дополнительные узлы.",
"connection_modal.topology.redis_single_description": "Подключиться к одному узлу Redis.",
"connection_modal.topology.single": "Один узел",
"connection_modal.validation.address_or_path_required": "Введите адрес хоста или путь к файлу",
"connection_modal.validation.agent_url_required": "Введите URL Agent",
"connection_modal.validation.arthas_tunnel_url_required": "Введите URL Arthas Tunnel",
"connection_modal.validation.dameng_ssl_cert_path_required": "Введите путь к SSL-сертификату Dameng",
"connection_modal.validation.dameng_ssl_key_path_required": "Введите путь к SSL-ключу Dameng",
"connection_modal.validation.diagnostic_bridge_url_required": "Введите URL диагностического моста",
"connection_modal.validation.diagnostic_target_required": "Введите диагностическую цель",
"connection_modal.validation.diagnostic_timeout_range_1_300": "Тайм-аут диагностики должен быть от 1 до 300 секунд",
"connection_modal.validation.endpoint_url_required": "Введите URL Endpoint",
"connection_modal.validation.jvm_access_mode_required": "Выберите хотя бы один режим доступа JVM",
"connection_modal.validation.jvm_preferred_mode_required": "Выберите предпочтительный режим доступа JVM",
"connection_modal.validation.oracle_service_required": "Введите имя сервиса Oracle",
"connection_modal.validation.port_required": "Введите порт",
"connection_modal.validation.proxy_host_required": "Введите хост прокси",
"connection_modal.validation.proxy_port_required": "Введите порт прокси",
"connection_modal.validation.ssh_host_required": "Введите SSH-хост",
"connection_modal.validation.ssh_port_required": "Введите SSH-порт",
"connection_modal.validation.ssh_user_required": "Введите SSH-пользователя",
"connection_modal.validation.timeout_range_1_300": "Тайм-аут должен быть от 1 до 300 секунд",
"connection_modal.validation.tunnel_host_required": "Введите хост HTTP Tunnel",
"connection_modal.validation.tunnel_port_required": "Введите порт HTTP Tunnel",
"connection_modal.validation.username_required": "Введите имя пользователя",
"sidebar.batch_databases": "Пакетные базы данных",
"sidebar.batch_tables": "Пакетные таблицы",
"connection_modal.ssl_hint.mysql_like": "Включите SSL, если MySQL/MariaDB/Doris/Sphinx требует защищенную передачу. Для самоподписанных сертификатов сначала проверьте Preferred или Skip Verify.",
"connection_modal.ssl_hint.dameng": "Для SSL в Dameng нужны пути к клиентскому сертификату и закрытому ключу (sslCertPath / sslKeyPath).",
"connection_modal.ssl_hint.sqlserver": "Для SQL Server в продакшене используйте Required и отключите TrustServerCertificate.",
"connection_modal.ssl_hint.mongodb": "Подключения MongoDB можно защитить через TLS. Если проверка сертификата мешает тесту, сначала используйте Skip Verify.",
"connection_modal.ssl_hint.default": "Предпочитайте Required. Используйте Skip Verify только для тестов или самоподписанных сертификатов.",
"connection_modal.secret.new_value_replaces_saved": "Введено новое значение. При сохранении оно заменит текущие сохраненные данные.",
"connection_modal.badge.current": "Текущий",
"connection_modal.message.driver_not_enabled_with_name": "Драйвер {{name}} не установлен или не включен. Сначала установите или включите его в управлении драйверами.",
"connection_modal.driver.current": "Текущий",
"connection_modal.message.driver_unavailable_title": "Драйвер {{name}} недоступен",
"connection_modal.action.open_driver_manager": "Открыть управление драйверами",
"connection_modal.action.cancel": "Отмена",
"connection_modal.placeholder.uri_example_postgres": "postgresql://user:pass@localhost:5432/appdb?sslmode=require",
"connection_modal.message.uri_generated": "URI сформирован",
"connection_modal.message.uri_generate_failed": "Операция не удалась",
"connection_modal.message.uri_required": "Заполните обязательное поле",
"connection_modal.message.uri_type_mismatch": "Тип URI не соответствует выбранному источнику данных",
"connection_modal.message.uri_parsed": "URI разобран и перенесен в форму",
"connection_modal.message.uri_parse_failed": "Операция не удалась",
"connection_modal.message.uri_empty_copy": "URI пуст: нечего копировать",
"connection_modal.message.uri_copied": "URI скопирован",
"connection_modal.message.copy_failed": "Операция не удалась",
"connection_modal.message.select_ssh_key_failed": "Не удалось выбрать закрытый ключ SSH: {{error}}",
"connection_modal.error.unknown": "Неизвестная ошибка",
"connection_modal.message.select_database_file_failed": "Не удалось выбрать файл базы данных: {{error}}",
"connection_modal.message.save_backend_unavailable": "Операция не удалась",
"connection_modal.message.save_updated_disconnected": "Конфигурация сохранена (не подключено)",
"connection_modal.message.save_created_disconnected": "Конфигурация сохранена (без подключения).",
"connection_modal.message.save_security_refresh_failed": "Операция не удалась",
"connection_modal.message.save_failed": "Операция не удалась",
"connection_modal.message.test_requires_new_password": "Перед проверкой введите новый пароль подключения.",
"connection_modal.secret.blocking.redis_sentinel": "Перед проверкой введите новый пароль Sentinel или отмените очистку сохраненного пароля Sentinel",
"connection_modal.test.redis_database_list_timeout": "Подключение успешно, но загрузка списка баз данных Redis превысила время ожидания (>{{seconds}} сек.)",
"connection_modal.test.redis_database_list_failure": "Подключение успешно, но не удалось загрузить список баз данных Redis: {{detail}}",
"connection_modal.message.test_requires_new_ssh_password": "Перед проверкой введите новый SSH-пароль.",
"connection_modal.message.test_requires_new_proxy_password": "Перед проверкой введите новый пароль прокси.",
"connection_modal.message.test_requires_new_tunnel_password": "Перед проверкой введите новый пароль HTTP Tunnel.",
"connection_modal.message.test_requires_new_replica_password": "Перед проверкой введите новый пароль реплики.",
"connection_modal.message.test_requires_new_mongo_replica_password": "Перед проверкой введите новый пароль MongoDB Replica Set.",
"connection_modal.message.test_requires_new_mongodb_password": "Перед проверкой введите новый пароль MongoDB.",
"connection_modal.message.driver_not_enabled": "Драйвер не установлен или не включен.",
"connection_modal.message.connection_params_incomplete": "Параметры подключения неполные.",
"connection_modal.message.test_timeout": "Время операции истекло через {{seconds}} с",
"connection_modal.message.database_list_timeout": "Время операции истекло через {{seconds}} с",
"connection_modal.message.no_visible_schema": "Видимые схемы не возвращены.",
"connection_modal.message.no_visible_databases": "Видимые базы данных не возвращены.",
"connection_modal.message.database_list_failed": "Не удалось загрузить список баз данных: {{error}}",
"connection_modal.message.connection_rejected": "Подключение отклонено.",
"connection_modal.message.required_fields_before_test": "Заполните обязательные поля перед проверкой подключения.",
"connection_modal.message.test_failed_detail": "Проверка не удалась: {{detail}}",
"connection_modal.error.unknown_exception": "Неизвестная ошибка",
"connection_modal.message.member_discovery_failed": "Операция не удалась",
"connection_modal.message.member_discovery_success": "Обнаружено участников: {{count}}",
"connection_modal.message.unsupported_jvm_modes": "Выбранный режим доступа JVM не поддерживается",
"connection_modal.message.unsupported_jvm_diagnostic_transport": "Выбранный диагностический транспорт JVM не поддерживается",
"connection_modal.message.dameng_ssl_cert_required": "Заполните обязательное поле",
"connection_modal.message.http_tunnel_host_required": "Заполните обязательное поле",
"connection_modal.message.http_tunnel_port_invalid": "Недопустимый порт HTTP Tunnel",
"connection_modal.message.unsupported_jvm_modes_current": "Это подключение содержит неподдерживаемые режимы доступа JVM",
"connection_modal.group.relational": "Реляционные базы данных",
"connection_modal.group.chinese_databases": "Китайские базы данных",
"connection_modal.step1.group.nosql": "Базы данных NoSQL",
"connection_modal.step1.group.relational": "Реляционные базы данных",
"connection_modal.step1.group.domestic": "Отечественные базы данных",
"connection_modal.step1.group.vector": "Векторные базы данных",
"connection_modal.step1.group.timeseries": "Базы данных временных рядов",
"connection_modal.step1.group.message_queue": "Очереди сообщений",
"connection_modal.step1.group.other": "Другое",
"connection_modal.group.time_series": "Базы данных временных рядов",
"connection_modal.group.other": "Другое",
"connection_modal.db_type.custom": "Пользовательский",
"connection_modal.layout.mysql_compatible": "MySQL-совместимое подключение",
"connection_modal.layout.mongodb": "Подключение MongoDB",
"connection_modal.layout.redis": "Подключение Redis",
"connection_modal.layout.postgres_compatible": "PostgreSQL-совместимое подключение",
"connection_modal.layout.oracle": "Подключение Oracle",
"connection_modal.layout.file": "Подключение к файловой базе данных",
"connection_modal.layout.custom": "Подключение через пользовательский драйвер",
"connection_modal.layout.jvm": "Подключение к среде JVM",
"connection_modal.layout.generic_sql": "Универсальное SQL-подключение",
"connection_modal.layoutKind.mysqlCompatible": "MySQL-совместимые",
"connection_modal.layoutKind.mongodb": "MongoDB",
"connection_modal.layoutKind.redis": "Redis",
"connection_modal.layoutKind.postgresCompatible": "PostgreSQL-совместимые",
"connection_modal.layoutKind.oracle": "Oracle",
"connection_modal.layoutKind.file": "Файловые базы данных",
"connection_modal.layoutKind.search": "Поисковые движки",
"connection_modal.layoutKind.vector": "Векторные базы данных",
"connection_modal.layoutKind.timeseries": "Базы данных временных рядов",
"connection_modal.layoutKind.custom": "Пользовательский драйвер",
"connection_modal.layoutKind.jvm": "Среда выполнения JVM",
"connection_modal.layoutKind.genericSql": "Стандартный SQL",
"connection_modal.db_type_hint.custom": "Подключение с пользовательским драйвером и DSN.",
"connection_modal.db_type_hint.redis": "Подключение к Redis Standalone или Redis Cluster.",
"connection_modal.db_type_hint.mongodb": "Подключение к MongoDB Standalone, Replica Set или SRV-адресам.",
"connection_modal.db_type_hint.file": "Выберите локальный файл базы данных SQLite или DuckDB.",
"connection_modal.db_type_hint.standard": "Введите хост, порт, данные аутентификации и необязательную базу данных.",
"connection_modal.step1.hint.jvm": "JMX / Endpoint / Agent",
"connection_modal.step1.hint.custom": "Пользовательский драйвер и DSN",
"connection_modal.step1.hint.redis": "Одиночный узел / кластер",
"connection_modal.step1.hint.mongodb": "Одиночный узел / Replica Set",
"connection_modal.step1.hint.elasticsearch": "Просмотр индексов, проверка Mapping, JSON DSL и запросы query_string",
"connection_modal.step1.hint.chroma": "Просмотр Collection, векторный поиск и фильтрация метаданных",
"connection_modal.step1.hint.qdrant": "Просмотр Collection, векторный поиск и фильтрация Payload",
"connection_modal.step1.hint.oceanBase": "MySQL / Oracle арендатор",
"connection_modal.step1.hint.goldendb": "Совместимость с MySQL / распределенные транзакции",
"connection_modal.step1.hint.file": "Подключение к локальному файлу",
"connection_modal.step1.hint.standard": "Стандартная конфигурация подключения",
"connection_modal.step.select_source": "Выбор источника данных",
"connection_modal.step.select_source_description": "Выберите тип создаваемого подключения.",
"connection_modal.message.driver_not_enabled_with_name_short": "Драйвер {{name}} не установлен или не включен. Сначала откройте управление драйверами.",
"connection_modal.section.basic.title": "Основная информация",
"connection_modal.section.basic.description": "Назовите подключение и укажите цель, драйвер и данные аутентификации.",
"connection_modal.field.connection_name": "Имя подключения",
"connection_modal.placeholder.jvm_name": "jvm имя",
"connection_modal.placeholder.connection_name": "подключение имя",
"connection_modal.field.uri": "URI",
"connection_modal.help.uri": "Вставьте или сформируйте URI подключения.",
"connection_modal.action.generate_uri": "Сформировать URI",
"connection_modal.action.parse_uri": "Разобрать URI",
"connection_modal.action.copy_uri": "Копировать URI",
"connection_modal.secret.clear_saved_uri": "Очистить сохраненный URI",
"connection_modal.secret.saved_uri_description": "URI подключения уже сохранен в защищенном хранилище. Оставьте поле пустым, чтобы сохранить его.",
"connection_modal.field.driver_name": "драйвер имя",
"connection_modal.field.driver.placeholder": "Например: mysql, postgres",
"connection_modal.validation.driver_name_required": "Введите имя драйвера.",
"connection_modal.placeholder.driver_name": "драйвер имя",
"connection_modal.field.dsn": "DSN",
"connection_modal.field.dsn.placeholder": "Например: user:pass@tcp(localhost:3306)/dbname?charset=utf8",
"connection_modal.validation.custom_dsn_required": "Введите строку подключения.",
"connection_modal.validation.custom_dsn_required_when_clearing_saved": "Введите новую строку подключения или отмените очистку сохраненного DSN.",
"connection_modal.secret.clear_saved_dsn": "Очистить сохраненный DSN",
"connection_modal.secret.saved_dsn_description": "DSN уже сохранен в защищенном хранилище. Оставьте поле пустым, чтобы сохранить его.",
"connection_modal.message.unsupported_jvm_modes_detected": "Обнаружены неподдерживаемые режимы доступа JVM",
"connection_modal.jvm.target_title": "Цель JVM",
"connection_modal.jvm.target_description": "Настройте хост, порт и способ доступа к Endpoint управления JVM.",
"connection_modal.field.host": "Хост",
"connection_modal.validation.jvm_host_required": "Введите хост JVM.",
"connection_modal.field.primary_port": "Основной порт",
"connection_modal.validation.jvm_port_required": "Введите порт JVM.",
"connection_modal.section.network.title": "Сеть и безопасность",
"connection_modal.section.network.description": "Настройте SSL/TLS, SSH Tunnel, прокси и HTTP Tunnel.",
"connection_modal.message.current_driver_not_enabled": "Текущий драйвер не установлен или не включен.",
"connection_modal.section.basic.jvm_description": "Настройте цель JVM, режимы доступа и учетные данные.",
"connection_modal.section.basic.sql_description": "Настройте цель, драйвер, учетные данные и область баз данных.",
"connection_modal.section.network.nav_description": "Настройте сеть и безопасность для этого подключения.",
"connection_modal.section.appearance.title": "Внешний вид",
"connection_modal.section.appearance.description": "Задайте значок и цвет подключения в боковой панели.",
"connection_modal.appearance.icon": "Значок",
"connection_modal.appearance.current_icon": "Текущий значок: {{icon}}",
"connection_modal.db_icon_label.custom": "Пользовательский",
"connection_modal.appearance.color": "Цвет",
"connection_modal.appearance.custom_color": "Пользовательский цвет",
"connection_modal.appearance.preview": "Предпросмотр",
"connection_modal.placeholder.connection_name_fallback": "Имя подключения",
"connection_modal.action.reset_default": "Сбросить по умолчанию",
"connection_modal.message.connection_failed": "Не удалось подключиться",
"connection_modal.action.previous_step": "Назад",
"connection_modal.message.connection_success": "Подключение успешно",
"connection_modal.action.view_reason": "Показать причину",
"connection_modal.action.test": "Проверить подключение",
"connection_modal.action.save": "Сохранить",
"connection_modal.title.select_type": "Выберите тип источника данных",
"connection_modal.title.select_type_description": "Выберите один из поддерживаемых типов источников данных.",
"connection_modal.title.edit": "Изменить подключение",
"connection_modal.title.edit_description": "Измените конфигурацию подключения {{type}}.",
"connection_modal.title.create": "Новое подключение {{type}}",
"connection_modal.title.create_description": "Введите и сохраните конфигурацию подключения.",
"connection_modal.test_error.title": "Сведения об ошибке проверки подключения",
"connection_modal.test_error.description": "Просмотрите полный текст ошибки, возвращенной backend.",
"connection_modal.action.close": "Закрыть",
"connection_modal.test_error.empty": "Нет сведений об ошибке",
"sidebar.message.duplicate_backend_unavailable": "Дублирование подключений недоступно в этой сборке.",
"sidebar.message.duplicate_empty_result": "Дублированное подключение не было возвращено.",
"sidebar.message.duplicated_connection": "Подключение {{name}} продублировано.",
"sidebar.message.duplicate_failed": "Не удалось дублировать подключение.",
"sidebar.message.jvm_provider_probe_failed_with_diagnostic": "Не удалось проверить JVM Provider: {{error}}. Вход в режим расширенной диагностики остается доступным.",
"sidebar.message.jvm_provider_probe_failed": "Не удалось проверить провайдеры JVM: {{error}}",
"sidebar.error.unknown": "Неизвестная ошибка",
"sidebar.message.jvm_provider_probe_exception_with_diagnostic": "Во время проверки JVM Provider возникло исключение: {{error}}. Вход в режим расширенной диагностики остается доступным.",
"sidebar.message.jvm_provider_probe_exception": "Проверка провайдеров JVM завершилась ошибкой: {{error}}",
"sidebar.message.connection_failed": "Ошибка подключения: {{error}}",
"sidebar.message.load_jvm_resources_failed": "Не удалось загрузить ресурсы JVM: {{error}}",
"sidebar.message.load_tables_failed": "Не удалось загрузить объекты: {{error}}",
"sidebar.message.table_pinned": "Таблица закреплена",
"sidebar.message.table_unpinned": "Таблица откреплена",
"sidebar.message.table_structure_copied": "Структура таблицы скопирована.",
"sidebar.message.exporting_table_format": "Экспорт {{table}} в формате {{format}}...",
"sidebar.message.export_success": "Экспорт выполнен.",
"sidebar.message.export_failed": "Ошибка экспорта: {{error}}",
"sidebar.message.backing_up_database": "Создается резервная копия базы данных {{database}}...",
"sidebar.message.exporting_database_schema": "Экспортируется структура базы данных {{database}}...",
"sidebar.message.exporting_database_backup": "Создается резервная копия {{database}} (структура и данные)...",
"sidebar.message.schema_export_target_missing": "Целевая схема не найдена, экспорт невозможен.",
"sidebar.message.exporting_schema_structure": "Экспортируется структура схемы {{schema}}...",
"sidebar.message.exporting_schema_backup": "Создается резервная копия схемы {{schema}} (структура и данные)...",
"sidebar.message.export_tables_same_database_required": "Выберите таблицы из одной базы данных.",
"sidebar.message.backing_up_selected_tables": "Создается резервная копия выбранных таблиц: {{count}}...",
"sidebar.message.exporting_selected_table_schema": "Экспортируется структура выбранных таблиц: {{count}}...",
"sidebar.message.load_database_list_failed": "Не удалось загрузить базы данных: {{error}}",
"sidebar.message.load_table_list_failed": "Не удалось загрузить таблицы: {{error}}",
"sidebar.message.locate_external_sql_file_not_found": "SQL-файл не найден во внешних SQL-каталогах: {{path}}",
"sidebar.message.locate_connection_not_found_for_object": "Подключение для текущего объекта не найдено",
"sidebar.message.locate_connection_not_in_tree": "Текущее подключение не найдено в левом дереве",
"sidebar.message.locate_database_loading": "Узел базы данных ещё загружается: {{database}}. Повторите попытку позже",
"sidebar.message.locate_database_not_found": "База данных не найдена в левом дереве: {{database}}",
"sidebar.message.locate_object_loading": "Объекты базы данных для {{object}} в {{database}} ещё загружаются. Повторите попытку позже",
"sidebar.message.locate_object_not_found": "{{object}} не найден в левом дереве: {{name}}. Обновите узел базы данных и повторите попытку",
"sidebar.message.select_object_required": "Выберите хотя бы один объект.",
"sidebar.message.backing_up_selected_objects": "Создается резервная копия выбранных объектов: {{count}}...",
"sidebar.message.exporting_selected_object_data": "Экспортируются данные {{format}} для выбранных объектов: {{count}}...",
"sidebar.message.exporting_selected_object_schema": "Экспортируется структура выбранных объектов: {{count}}...",
"sidebar.message.export_success_skipped_views": "Экспорт завершен. Представления пропущены при экспорте данных: {{count}}.",
"sidebar.modal.confirm_clear_selected_tables.title": "Подтвердите очистку выбранных таблиц",
"sidebar.modal.confirm_clear_selected_tables.content": "Очистить данные выбранных объектов в {{connection}} / {{database}}? Это действие нельзя отменить.",
"sidebar.action.continue": "Продолжить",
"sidebar.action.cancel": "Отмена",
"sidebar.action.delete": "Удалить",
"sidebar.message.clearing_selected_tables": "Очищаются выбранные таблицы: {{count}}...",
"sidebar.message.clear_success": "Очистка завершена.",
"sidebar.message.clear_failed": "Ошибка очистки: {{error}}",
"sidebar.message.select_database_required": "Выберите хотя бы одну базу данных.",
"sidebar.message.database_export_success": "{{database}} экспортирована.",
"sidebar.message.database_export_failed": "Не удалось экспортировать {{database}}: {{error}}",
"sidebar.message.connection_config_not_found": "Конфигурация подключения не найдена.",
"sidebar.message.ai_table_context_missing": "У текущей таблицы нет контекста подключения, поэтому ее нельзя отправить AI.",
"sidebar.sql_file_exec.title": "Запустить внешний SQL-файл",
"sidebar.message.read_file_failed": "Не удалось прочитать файл: {{error}}",
"sidebar.message.select_connection_or_database_first": "Сначала выберите подключение или базу данных.",
"sidebar.message.schema_create_unsupported": "Эта база данных не поддерживает создание schema.",
"sidebar.message.schema_target_missing": "Выберите базу данных для создания schema.",
"sidebar.message.schema_created": "schema создана.",
"sidebar.message.schema_edit_unsupported": "Текущий узел не поддерживает редактирование schema через этот вход.",
"sidebar.message.schema_target_edit_missing": "Не найдена целевая schema для редактирования.",
"sidebar.message.schema_name_unchanged": "Имя schema не изменилось.",
"sidebar.message.schema_renamed": "schema переименована.",
"sidebar.message.schema_target_delete_missing": "Не найдена целевая schema для удаления.",
"sidebar.message.schema_deleted": "schema удалена.",
"sidebar.message.operation_create_failed": "Не удалось создать: {{error}}",
"sidebar.sql_file.default_name": "SQL-файл",
"sidebar.message.sql_file_context_incomplete": "Контекст SQL-файла неполный.",
"sidebar.message.sql_file_path_incomplete": "Путь к SQL-файлу неполный, открыть файл невозможно.",
"sidebar.message.select_host_before_large_sql_file": "Выберите Host перед запуском большого SQL-файла.",
"sidebar.message.read_sql_file_failed": "Не удалось прочитать SQL-файл: {{error}}",
"sidebar.message.external_sql_file_parent_missing": "Не найден каталог для создания SQL-файла.",
"sidebar.message.external_sql_file_rename_target_missing": "Не найден SQL-файл для переименования.",
"sidebar.message.external_sql_file_delete_target_missing": "SQL-файл для удаления не найден.",
"sidebar.message.external_sql_directory_parent_missing": "Не найдено место для создания каталога.",
"sidebar.message.external_sql_directory_rename_target_missing": "Не найден каталог для переименования.",
"sidebar.message.external_sql_directory_delete_target_missing": "SQL-каталог для удаления не найден.",
"sidebar.message.sql_file_name_required": "Имя SQL-файла обязательно.",
"sidebar.message.sql_directory_name_required": "Имя каталога обязательно.",
"sidebar.message.create_sql_file_failed": "Не удалось создать SQL-файл: {{error}}",
"sidebar.message.sql_file_created": "SQL-файл создан.",
"sidebar.message.rename_sql_file_failed": "Не удалось переименовать SQL-файл: {{error}}",
"sidebar.message.sql_file_renamed": "SQL-файл переименован.",
"sidebar.message.delete_sql_file_failed": "Не удалось удалить SQL-файл: {{error}}",
"sidebar.message.sql_file_deleted": "SQL-файл удален.",
"sidebar.message.create_sql_directory_failed": "Не удалось создать каталог: {{error}}",
"sidebar.message.sql_directory_created": "Каталог создан.",
"sidebar.message.rename_sql_directory_failed": "Не удалось переименовать каталог: {{error}}",
"sidebar.message.external_sql_directory_rename_sync_failed": "Каталог переименован, но список внешних SQL-каталогов не удалось синхронизировать. Добавьте каталог заново.",
"sidebar.message.sql_directory_renamed": "Каталог переименован.",
"sidebar.message.delete_sql_directory_failed": "Не удалось удалить SQL-каталог: {{error}}",
"sidebar.message.sql_directory_deleted": "SQL-каталог удален.",
"sidebar.message.add_sql_directory_database_required": "Выберите базу данных перед добавлением SQL-каталога.",
"sidebar.message.select_sql_directory_failed": "Не удалось выбрать SQL-каталог: {{error}}",
"sidebar.message.sql_directory_path_invalid": "Путь к SQL-каталогу недействителен.",
"sidebar.sql_directory.default_name": "SQL-каталог",
"sidebar.message.external_sql_directory_added": "SQL-каталог добавлен.",
"sidebar.message.external_sql_directory_not_found": "SQL-каталог не найден.",
"sidebar.message.external_sql_directory_removed": "SQL-каталог удален.",
"sidebar.message.external_sql_directory_context_missing": "Контекст SQL-каталога отсутствует.",
"sidebar.message.external_sql_directory_refreshed": "SQL-каталог обновлен.",
"sidebar.message.database_created": "База данных создана.",
"sidebar.message.create_failed": "Не удалось создать: {{error}}",
"sidebar.modal.confirm_delete_database.title": "Удалить базу данных",
"sidebar.modal.confirm_delete_database.content": "Удалить {{name}}? Это действие нельзя отменить.",
"sidebar.modal.confirm_delete_schema.title": "Удалить schema",
"sidebar.modal.confirm_delete_schema.content": "Удалить schema {{name}}? schema и все объекты внутри будут удалены. Это действие нельзя отменить.",
"sidebar.modal.confirm_delete_sql_file.title": "Удалить SQL-файл",
"sidebar.modal.confirm_delete_sql_file.content": "Удалить \"{{name}}\"? Это удалит локальный файл с диска без возможности восстановления.",
"sidebar.modal.confirm_delete_sql_directory.title": "Удалить SQL-каталог",
"sidebar.modal.confirm_delete_sql_directory.content": "Удалить \"{{name}}\"? Это удалит локальный каталог с диска; удалить можно только пустой каталог.",
"sidebar.modal.confirm_delete_table.title": "Удалить таблицу",
"sidebar.modal.confirm_delete_table.content": "Удалить {{name}}? Это действие нельзя отменить.",
"sidebar.modal.confirm_table_data_action.title": "Подтвердите {{action}}",
"sidebar.modal.confirm_table_data_action.content": "Выполнить {{action}} для {{table}}? Это действие нельзя отменить.",
"sidebar.modal.confirm_delete_view.title": "Удалить представление",
"sidebar.modal.confirm_delete_view.content": "Удалить {{name}}? Это действие нельзя отменить.",
"sidebar.modal.confirm_delete_routine.title": "Удалить {{type}}",
"sidebar.modal.confirm_delete_routine.content": "Удалить {{type}} {{name}}? Это действие нельзя отменить.",
"sidebar.search.scope.smart": "Умный",
"sidebar.search.scope_title": "Область поиска",
"sidebar.search.scope_description": "Выберите, где должен искать сайдбар.",
"sidebar.badge.recommended": "Рекомендуется",
"sidebar.search.scope.smart_description": "Автоматически сужает поиск по выбранному узлу.",
"sidebar.search.manual_scope": "Ручная область",
"sidebar.search.multi_select_supported": "Можно выбрать несколько областей",
"sidebar.search.scope_hint": "В умном режиме поиск учитывает контекст и ищет по именам, хостам, базам данных и объектам.",
"sidebar.modal.confirm_delete.title": "Подтвердите удаление",
"sidebar.modal.confirm_delete_tag.content": "Удалить группу \"{{name}}\"? Подключения внутри нее не будут удалены.",
"sidebar.menu.edit_connection": "изменить подключение",
"sidebar.menu.delete_connection": "удалить подключение",
"sidebar.modal.confirm_delete_connection.content": "Удалить {{name}}?",
"sidebar.message.delete_connection_backend_unavailable": "Удаление подключений недоступно в этой сборке.",
"sidebar.message.connection_deleted": "Подключение удалено.",
"sidebar.message.delete_connection_failed": "Не удалось удалить подключение.",
"sidebar.modal.confirm_delete_saved_query.content": "Удалить сохраненный запрос \"{{name}}\"? Это действие нельзя отменить.",
"sidebar.search.placeholder": "Поиск...",
"sidebar.punctuation.list_separator": ", ",
"sidebar.command_search.label": "Искать таблицы, подключения, действия",
"sidebar.command_search.placeholder": "Искать таблицы, подключения, действия... или спросить AI",
"sidebar.command_search.sync_to_filter_tooltip": "Синхронизировать ввод с левым фильтром",
"sidebar.command_search.sync_to_filter_aria": "Синхронизировать с левым фильтром",
"sidebar.command_search.reset_filter": "Сбросить фильтр боковой панели",
"sidebar.command_search.no_synced_filter": "Нет синхронизированного фильтра боковой панели",
"sidebar.command_search.no_filter_content": "Нет текста фильтра",
"sidebar.command_search.recent_sql_fallback": "Запись SQL",
"sidebar.command_search.action.ask_ai.title": "Спросить AI",
"sidebar.command_search.action.new_query.meta": "Открыть новую вкладку SQL-редактора",
"sidebar.command_search.action.new_connection.title": "Новый источник данных",
"sidebar.command_search.action.new_connection.meta": "Создать подключение к базе данных, среде выполнения или другому источнику данных",
"sidebar.command_search.action.open_ai.title": "Открыть AI-анализ данных",
"sidebar.command_search.action.open_ai.meta": "AI проанализирует текущий контекст базы данных",
"sidebar.command_search.action.open_sql_log.title": "Показать журнал выполнения SQL",
"sidebar.command_search.action.open_sql_log.meta": "Открыть панель недавней истории выполнения",
"sidebar.command_search.empty.ai": "Введите вопрос после \"?\" и нажмите Enter, чтобы отправить его на панель AI.",
"sidebar.command_search.empty.object": "Подходящие таблицы, представления или материализованные представления не найдены.",
"sidebar.command_search.empty.default": "Совпадений нет. Введите @таблица, чтобы искать только объекты таблиц, или ?вопрос, чтобы спросить AI.",
"sidebar.command_search.section.goto": "Перейти",
"sidebar.command_search.section.ai": "AI · Вопрос",
"sidebar.command_search.section.actions": "Действия",
"sidebar.command_search.section.recent": "Недавние запросы",
"sidebar.command_search.footer.navigate": "Навигация",
"sidebar.command_search.footer.select": "Выбрать",
"sidebar.command_search.footer.object_only": "Только объекты таблиц",
"sidebar.command_search.footer.ask_ai": "Отправить AI",
"sidebar.ai_prompt.explain.intro": "Объясните структуру и бизнес-смысл таблицы {{table}}.",
"sidebar.ai_prompt.explain.detail": "Особо опишите значения полей, первичные ключи/индексы, возможные связи, типовые сценарии запросов и риски.",
"sidebar.ai_prompt.query.intro": "Создайте 3 распространенных SQL-запроса для таблицы {{table}}.",
"sidebar.ai_prompt.query.detail": "Включите: запрос предварительного просмотра данных, запрос с фильтрацией по ключевым полям и один агрегирующий или статистический запрос.",
"sidebar.command_search.object_kind.all": "Все",
"sidebar.command_search.object_kind.tables": "Таблицы",
"sidebar.command_search.object_kind.views": "Представления",
"sidebar.command_search.object_kind.routines": "Подпрограммы",
"sidebar.command_search.object_kind.events": "События",
"sidebar.command_search.object_kind.filter_aria": "Фильтр объектов",
"sidebar.command_search.scope.smart": "Умный",
"sidebar.command_search.scope.object": "Объекты таблиц",
"sidebar.command_search.scope.database": "База данных",
"sidebar.command_search.scope.host": "Host",
"sidebar.command_search.scope.tag": "Теги",
"sidebar.command_search.scope.summary_smart": "Умный",
"sidebar.command_search.scope.title": "Область поиска",
"sidebar.command_search.scope.description": "\"Умный\" автоматически подбирает наиболее вероятные совпадения; ручной режим позволяет комбинировать измерения фильтрации.",
"sidebar.command_search.scope.recommended": "Рекомендуется",
"sidebar.command_search.scope.smart_help": "Подходит для ежедневного поиска: автоматически охватывает имена, базы данных, Host и теги.",
"sidebar.command_search.scope.manual_title": "Ручная область",
"sidebar.command_search.scope.multi_select": "Можно выбрать несколько",
"sidebar.command_search.scope.manual_help": "Умный режим взаимоисключается с другими пунктами. Если точно известно, что нужно искать объекты, базы данных, Host или теги, переключитесь на ручную область, чтобы уменьшить шум в результатах.",
"sidebar.command_search.scope.tooltip": "Область поиска: {{scope}}",
"sidebar.command_search.scope.compact_smart": "Умно",
"sidebar.search.scope_tooltip": "Текущая область поиска: {{scope}}",
"sidebar.search.scope.smart_short": "Умный",
"sidebar.rail.object_actions": "Быстрые действия в области объектов",
"sidebar.rail.system_actions": "Системные действия",
"sidebar.action.new_group": "Новая группа",
"sidebar.action.batch_tables": "Пакетные операции с таблицами",
"sidebar.action.batch_databases": "Пакетные операции с базами данных",
"sidebar.action.locate_current_table": "Найти текущую открытую таблицу",
"sidebar.action.locate_current_tab": "Найти текущую вкладку",
"sidebar.action.pin_table": "Закрепить таблицу",
"sidebar.action.unpin_table": "Открепить таблицу",
"sidebar.status.pinned": "Закреплено",
"sidebar.v2_table_menu.meta.rows_empty": "— строк",
"sidebar.v2_table_menu.meta.rows": "{{count}} строк",
"sidebar.v2_table_menu.meta.idle": "Нажмите обновить, чтобы загрузить статистику",
"sidebar.v2_table_menu.meta.loading": "Загрузка статистики таблицы...",
"sidebar.v2_table_menu.meta.unavailable": "Статистика таблицы недоступна",
"sidebar.v2_table_menu.meta.summary": "{{rows}} · {{data}} данные · {{indexes}} индексы",
"sidebar.v2_table_menu.open_data": "Просмотреть данные",
"sidebar.v2_table_menu.design_table_detail": "столбцы / индексы / внешние ключи",
"sidebar.v2_table_menu.open_in_new_tab": "Открыть в новой вкладке",
"sidebar.v2_table_menu.metadata_section": "Метаданные",
"sidebar.v2_table_menu.view_in_er": "Показать в ER-диаграмме",
"sidebar.v2_table_menu.copy_section": "Копировать",
"sidebar.v2_table_menu.copy_table_name": "Копировать имя таблицы",
"sidebar.copy_object_name.label.table": "Имя таблицы",
"sidebar.copy_object_name.label.view": "Имя представления",
"sidebar.copy_object_name.label.materialized_view": "Имя материализованного представления",
"sidebar.copy_object_name.label.event": "Имя события",
"sidebar.copy_object_name.empty": "{{label}} пусто, копирование невозможно",
"sidebar.copy_object_name.copied": "{{label}} скопировано в буфер обмена",
"sidebar.copy_object_name.failed": "Не удалось скопировать {{label}}: {{error}}",
"sidebar.v2_table_menu.copy_table_as_insert": "Копировать всю таблицу как {{keyword}}",
"sidebar.v2_table_menu.maintenance_section": "Обслуживание",
"sidebar.v2_table_menu.rename_compact": "Переименовать...",
"sidebar.v2_table_menu.new_rollup": "Новый {{keyword}}",
"sidebar.v2_table_menu.backup_sql_dump": "Резервная копия · {{keyword}}",
"sidebar.v2_table_menu.refresh_stats": "Обновить статистику",
"sidebar.v2_table_menu.item_with_suffix": "{{label}} · {{suffix}}",
"sidebar.v2_table_menu.truncate_table": "Усечь таблицу",
"sidebar.v2_table_menu.ai_explain_table": "Объяснить эту таблицу с помощью AI",
"sidebar.v2_table_menu.ai_generate_query": "Сгенерировать запрос с помощью AI",
"sidebar.v2_table_group_menu.title": "Таблицы",
"sidebar.v2_table_group_menu.current_database": "Текущая база данных",
"sidebar.v2_table_group_menu.sort_name": "имени",
"sidebar.v2_table_group_menu.sort_frequency": "частоте использования",
"sidebar.v2_table_group_menu.meta": "{{database}} · {{count}} таблиц · сортировка по {{sort}}",
"sidebar.message.locate_current_table_unavailable": "В текущей вкладке нет таблицы, которую можно найти",
"sidebar.message.locate_current_tab_unavailable": "В текущей вкладке нет содержимого, которое можно найти",
"sidebar.locate.object.table": "Таблица",
"sidebar.locate.object.view": "Представление",
"sidebar.locate.object.materialized_view": "Материализованное представление",
"sidebar.locate.object.routine": "Функция/процедура",
"sidebar.locate.object.trigger": "Триггер",
"sidebar.active_connection.current_host_database": "Текущий Host и база данных",
"sidebar.active_connection.no_database_selected": "База данных не выбрана",
"sidebar.active_connection.no_host_selected": "Host не выбран",
"sidebar.active_connection.actions": "Действия с подключением",
"sidebar.modal.tag.edit_title": "Изменить группу",
"sidebar.modal.tag.create_title": "Создать группу",
"sidebar.modal.tag.edit_description": "Обновите имя группы и входящие в нее подключения.",
"sidebar.modal.tag.create_description": "Создайте группу для организации подключений.",
"sidebar.field.tag_name": "Имя группы",
"sidebar.validation.tag_name_required": "Введите имя группы.",
"sidebar.placeholder.tag_name": "Имя группы",
"sidebar.field.select_connections": "Выберите подключения",
"sidebar.modal.create_database.title": "Создать базу данных",
"sidebar.field.database_name": "Имя базы данных",
"sidebar.validation.name_required": "Введите имя.",
"sidebar.modal.rename_database.title": "Переименовать базу данных: {{name}}",
"sidebar.modal.rename_schema.title": "Редактировать schema: {{name}}",
"sidebar.field.new_database_name": "Новое имя базы данных",
"sidebar.validation.new_database_name_required": "Введите новое имя базы данных.",
"sidebar.field.schema_name": "Имя schema",
"sidebar.validation.schema_name_required": "Введите имя schema.",
"sidebar.modal.rename_table.title": "Переименовать таблицу: {{name}}",
"sidebar.field.new_table_name": "Новое имя таблицы",
"sidebar.validation.new_table_name_required": "Введите новое имя таблицы.",
"sidebar.modal.rename_view.title": "Переименовать представление: {{name}}",
"sidebar.field.new_view_name": "Новое имя представления",
"sidebar.validation.new_view_name_required": "Введите новое имя представления.",
"sidebar.modal.batch_tables.title": "Пакетные операции с таблицами",
"sidebar.modal.batch_tables.description": "Выберите таблицы и представления, затем экспортируйте или очистите их одной операцией.",
"sidebar.action.clear_tables": "Очистить таблицы",
"sidebar.action.export_schema": "Экспортировать структуру",
"sidebar.action.export_data_only": "Экспортировать только данные",
"sidebar.action.backup_schema_data": "Создать резервную копию структуры и данных",
"sidebar.field.select_connection": "Подключение",
"sidebar.placeholder.select_connection": "Выберите подключение",
"sidebar.field.select_database": "База данных",
"sidebar.placeholder.select_connection_first": "Сначала выберите подключение",
"sidebar.modal.batch_tables.selection_hint": "Выберите таблицы или представления для этой пакетной операции.",
"sidebar.placeholder.filter_table_view": "Фильтр таблиц и представлений",
"sidebar.filter.all_objects": "Все объекты",
"sidebar.filter.tables_only": "Только таблицы",
"sidebar.filter.views_only": "Только представления",
"sidebar.filter.scope_filtered": "Отфильтрованные результаты",
"sidebar.filter.scope_all": "Все результаты",
"sidebar.batch.filtered_count": "Показано объектов: {{filtered}} / {{total}}",
"sidebar.action.select_all": "Выбрать все",
"sidebar.action.clear_selection": "Снять выбор",
"sidebar.action.invert_selection": "Инвертировать выбор",
"sidebar.batch.selected_objects": "Выбрано объектов: {{selected}} / {{total}}",
"sidebar.modal.batch_databases.title": "Пакетные операции с базами данных",
"sidebar.modal.batch_databases.description": "Выберите базы данных и экспортируйте схемы или полные резервные копии.",
"sidebar.action.export_database_schema_count": "Экспортировать структуру баз данных ({{count}})",
"sidebar.action.backup_database_count": "Создать резервные копии баз данных ({{count}})",
"sidebar.modal.batch_databases.selection_hint": "Выберите базы данных из выбранного подключения.",
"sidebar.batch.selected_databases": "Выбрано баз данных: {{selected}} / {{total}}",
"sidebar.sql_file_exec.cancel": "Отменить выполнение",
"sidebar.action.close": "Закрыть",
"sidebar.sql_file_exec.file_size": "Размер файла: ",
"sidebar.sql_file_exec.status_label": "Статус: ",
"sidebar.sql_file_exec.status.running": "Выполняется",
"sidebar.sql_file_exec.status.done": "Готово",
"sidebar.sql_file_exec.status.cancelled": "Отменено",
"sidebar.sql_file_exec.status.error": "Ошибка",
"sidebar.sql_file_exec.executed_label": "Выполнено: ",
"sidebar.sql_file_exec.rows_separator": " строк | Ошибок: ",
"sidebar.sql_file_exec.rows_suffix": " строк",
"connection_modal.config_section.identity.title": "Идентификация",
"connection_modal.config_section.identity.description": "Настройте Идентификация.",
"connection_modal.config_section.uri.title": "URI подключения",
"connection_modal.config_section.uri.description": "Введите, сформируйте или разберите URI подключения.",
"connection_modal.config_section.target.title": "Адрес назначения",
"connection_modal.config_section.target.description": "Настройте Адрес назначения.",
"connection_modal.config_section.fileTarget.title": "Файловая база данных",
"connection_modal.config_section.fileTarget.description": "Настройте Файловая база данных.",
"connection_modal.config_section.connectionMode.title": "Режим подключения",
"connection_modal.config_section.connectionMode.description": "Настройте Режим подключения.",
"connection_modal.config_section.mongoDiscovery.title": "Обнаружение MongoDB",
"connection_modal.config_section.mongoDiscovery.description": "Настройте Обнаружение MongoDB.",
"connection_modal.config_section.replica.title": "Реплики",
"connection_modal.config_section.replica.description": "Настройте Реплики.",
"connection_modal.config_section.service.title": "Сервис и база данных",
"connection_modal.config_section.service.description": "Настройте Сервис и база данных.",
"connection_modal.config_section.mongoPolicy.title": "Политика MongoDB",
"connection_modal.config_section.mongoPolicy.description": "Настройте Политика MongoDB.",
"connection_modal.config_section.credentials.title": "Учетные данные",
"connection_modal.config_section.credentials.description": "Настройте Учетные данные.",
"connection_modal.config_section.databaseScope.title": "Область баз данных",
"connection_modal.config_section.databaseScope.description": "Настройте Область баз данных.",
"connection_modal.config_section.customDriver.title": "Пользовательский драйвер",
"connection_modal.config_section.customDriver.description": "Настройте Пользовательский драйвер.",
"connection_modal.config_section.customDsn.title": "Пользовательский DSN",
"connection_modal.config_section.customDsn.description": "Настройте Пользовательский DSN.",
"connection_modal.config_section.jvmRuntime.title": "Среда JVM",
"connection_modal.config_section.jvmRuntime.description": "Настройте Среда JVM.",
"connection_modal.field.password": "Пароль",
"sidebar.menu.refresh": "Обновить",
"sidebar.search.scope.object": "Объект",
"sidebar.search.scope.database": "База данных",
"sidebar.search.scope.host": "Хост",
"sidebar.search.scope.tag": "Тег",
"sidebar.tree.saved_queries": "Сохраненные запросы",
"sidebar.tree.untitled_query": "Запрос без имени",
"sidebar.tree.default_database": "База данных по умолчанию",
"sidebar.tree.unknown_connection": "Неизвестное подключение",
"sidebar.tree.unmatched_saved_queries": "Несопоставленные",
"sidebar.tree.all_saved_queries": "Все сохраненные запросы",
"sidebar.tree.default_schema": "Схема по умолчанию",
"sidebar.object_group.tables": "Таблицы",
"sidebar.object_group.views": "Представления",
"sidebar.object_group.routines": "Функции и процедуры",
"sidebar.object_group.triggers": "Триггеры",
"sidebar.object_group.events": "События",
"sidebar.object_group.materialized_views": "Материализованные представления",
"sidebar.table_folder.columns": "Столбцы",
"sidebar.table_folder.indexes": "Индексы",
"sidebar.table_folder.foreign_keys": "Внешние ключи",
"sidebar.table_folder.triggers": "Триггеры",
"sidebar.object.view": "Представление",
"sidebar.object.function": "Функция",
"sidebar.object.procedure": "Процедура",
"sidebar.table_action.truncate.label": "Очистить таблицу через TRUNCATE",
"sidebar.table_action.truncate.progress": "Выполняется TRUNCATE",
"sidebar.table_action.clear.label": "Очистить таблицу",
"sidebar.table_action.clear.progress": "Очищается",
"sidebar.tab.table_structure": "Структура таблицы ({{table}})",
"sidebar.tab.design_table": "Проектирование таблицы ({{table}})",
"sidebar.tab.new_table": "Новая таблица - {{database}}",
"sidebar.tab.table_overview": "Обзор таблицы - {{database}}{{schema}}",
"sidebar.tab.trigger": "Триггер: {{name}}",
"sidebar.tab.event": "Событие: {{name}}",
"sidebar.tab.edit_event": "Изменить событие: {{name}}",
"sidebar.tab.new_event": "Новое событие",
"sidebar.tab.materialized_view_definition": "Материализованное представление: {{name}}",
"sidebar.tab.view_definition": "Представление: {{name}}",
"sidebar.tab.edit_view": "Изменить представление: {{name}}",
"sidebar.tab.create_view": "Новое представление",
"sidebar.tab.routine_definition": "{{type}}: {{name}}",
"sidebar.tab.edit_routine": "Изменить {{type}}: {{name}}",
"sidebar.tab.create_function": "Новая функция",
"sidebar.tab.create_procedure": "Новая процедура",
"sidebar.tab.new_query": "Новый запрос",
"sidebar.tab.new_query_database": "Новый запрос ({{database}})",
"store.fallback.connection_name": "Подключение {{index}}",
"store.fallback.connection_tag_name": "Тег {{index}}",
"store.fallback.sql_snippet_name": "Фрагмент {{index}}",
"sidebar.tab.redis_command": "Команда - {{database}}",
"sidebar.tab.redis_monitor": "Мониторинг - {{database}}",
"sidebar.tab.recent_query": "Недавний запрос",
"tab_manager.menu.close_all": "Закрыть все вкладки",
"tab_manager.menu.close_left": "Закрыть вкладки слева",
"tab_manager.menu.close_other": "Закрыть остальные вкладки",
"tab_manager.menu.close_right": "Закрыть вкладки справа",
"tab_manager.menu.tab_display_settings": "Настройки вкладок",
"tab_manager.close_aria": "Закрыть {{title}}",
"tab_manager.kind_badge.query": "SQL",
"tab_manager.kind_badge.table": "Таблица",
"tab_manager.kind_badge.design": "Дизайн",
"tab_manager.kind_badge.table_overview": "БД",
"tab_manager.kind_badge.redis": "Redis",
"tab_manager.kind_badge.jvm": "JVM",
"tab_manager.kind_badge.trigger": "Триггер",
"tab_manager.kind_badge.materialized_view": "MV",
"tab_manager.kind_badge.view": "Вид",
"tab_manager.kind_badge.event": "Событие",
"tab_manager.kind_badge.routine": "Функция",
"tab_manager.kind_badge.fallback": "Вкладка",
"tab_manager.empty.action.open_ai": "Открыть AI",
"tab_manager.empty.aria.start_workbench": "Стартовая рабочая область GoNavi",
"tab_manager.empty.eyebrow.connections": "{{count}} подключений",
"tab_manager.empty.eyebrow.workbench": "РАБОЧАЯ ОБЛАСТЬ",
"tab_manager.empty.hero.description": "Выберите источник данных, откройте редактор запросов или продолжите с контекстом в AI-панели.",
"tab_manager.empty.hero.title": "Подключения, запросы и анализ начинаются в одной рабочей области.",
"tab_manager.empty.quick.ai_assist.description": "Объяснение SQL, генерация запросов и проверка результатов",
"tab_manager.empty.quick.ai_assist.title": "Открыть AI-помощь",
"tab_manager.empty.quick.aria": "Быстрый рабочий процесс",
"tab_manager.empty.quick.configure_source.description": "Настроить URI, SSH, прокси и драйвер в одном месте",
"tab_manager.empty.quick.configure_source.title": "Настроить источник данных",
"tab_manager.empty.quick.heading": "Быстрый рабочий процесс",
"tab_manager.empty.quick.sql_workspace.description": "Открыть редактор запросов с текущим контекстом",
"tab_manager.empty.quick.sql_workspace.title": "Запустить рабочую область SQL",
"tab_manager.hover.fallback.database_not_specified": "Не указано",
"tab_manager.hover.fallback.host_not_configured": "Не настроено",
"tab_manager.hover.fallback.unbound_connection": "Непривязанное подключение",
"tab_manager.hover.kind.design": "Дизайн таблицы",
"tab_manager.hover.kind.event": "Событие",
"tab_manager.hover.kind.fallback": "Вкладка",
"tab_manager.hover.kind.jvm_audit": "Аудит JVM",
"tab_manager.hover.kind.jvm_diagnostic": "Диагностика JVM",
"tab_manager.hover.kind.jvm_monitoring": "Мониторинг JVM",
"tab_manager.hover.kind.jvm_overview": "Обзор JVM",
"tab_manager.hover.kind.jvm_resource": "Ресурс JVM",
"tab_manager.hover.kind.materialized_view": "Материализованное представление",
"tab_manager.hover.kind.query": "SQL-запрос",
"tab_manager.hover.kind.redis_command": "Команда Redis",
"tab_manager.hover.kind.redis_keys": "Redis Key",
"tab_manager.hover.kind.redis_monitor": "Монитор Redis",
"tab_manager.hover.kind.routine": "Функция / процедура",
"tab_manager.hover.kind.table": "Данные таблицы",
"tab_manager.hover.kind.table_overview": "Обзор таблицы",
"tab_manager.hover.kind.trigger": "Триггер",
"tab_manager.hover.kind.view": "Представление",
"tab_manager.hover.label.connection": "Подключение",
"tab_manager.hover.label.database": "База данных",
"tab_manager.hover.label.object": "Объект",
"tab_manager.hover.label.type": "Тип",
"tab_manager.sql_file_close.read_failed_cancel_close": "Не удалось прочитать SQL-файл, закрытие отменено: {{detail}}",
"tab_manager.sql_file_close.dirty_single_label": "\"{{title}}\"",
"tab_manager.sql_file_close.dirty_multiple_label": "{{count}} SQL-файлов",
"tab_manager.sql_file_close.save_confirm_title": "Сохранить изменения SQL-файлов?",
"tab_manager.sql_file_close.save_confirm_content": "В {{label}} есть несохраненные изменения. Сохранить перед закрытием?",
"tab_manager.sql_file_close.save_and_close": "Сохранить и закрыть",
"tab_manager.sql_file_close.discard": "Не сохранять",
"tab_manager.sql_file_close.save_failed": "Не удалось сохранить {{title}}: {{detail}}",
"tab_manager.sql_file_close.unknown_error": "Неизвестная ошибка",
"tab_manager.sql_file_close.saved": "SQL-файл сохранен",
"tab_manager.sql_file_close.missing_single_label": "\"{{title}}\"",
"tab_manager.sql_file_close.missing_multiple_label": "{{count}} вкладок SQL-файлов",
"tab_manager.sql_file_close.missing_confirm_title": "Закрыть вкладки отсутствующих SQL-файлов?",
"tab_manager.sql_file_close.missing_confirm_content": "Внешний SQL-файл для {{label}} больше не существует или был перемещен. При закрытии локальный черновик во вкладке будет отброшен.",
"tab_manager.sql_file_close.continue_close": "Продолжить закрытие",
"tab_manager.sql_file_close.close_tabs": "Закрыть вкладки",
"sidebar.message.no_visible_databases": "Видимые базы данных или схемы не возвращены. Проверьте права учетной записи или обновите через контекстное меню.",
"sidebar.message.visual_new_table_unsupported": "Этот источник данных пока не поддерживает визуальное создание таблиц.",
"sidebar.message.jvm_resources_backend_unavailable": "Просмотр ресурсов JVM недоступен в этой сборке.",
"sidebar.message.external_sql_directory_read_failed": "Не удалось прочитать SQL-каталог {{name}}: {{error}}",
"sidebar.message.sphinx_unsupported_objects": "Этот экземпляр Sphinx не предоставляет следующие возможности объектов: {{objects}}. Применен режим совместимости.",
"sidebar.message.sidebar_filter_sync_enabled": "Синхронизация левого фильтра включена.",
"sidebar.message.sidebar_filter_sync_disabled": "Синхронизация левого фильтра отключена.",
"sidebar.message.sidebar_filter_reset": "Фильтр боковой панели сброшен.",
"sidebar.message.database_name_required": "Введите имя базы данных.",
"sidebar.message.database_name_unchanged": "Имя базы данных не изменилось.",
"sidebar.message.database_renamed": "База данных переименована.",
"sidebar.message.database_deleted": "База данных удалена.",
"sidebar.message.table_name_required": "Введите имя таблицы.",
"sidebar.message.table_name_unchanged": "Имя таблицы не изменилось.",
"sidebar.message.table_renamed": "Таблица переименована.",
"sidebar.message.table_deleted": "Таблица удалена.",
"sidebar.message.view_name_required": "Введите имя представления.",
"sidebar.message.view_name_unchanged": "Имя представления не изменилось.",
"sidebar.message.view_deleted": "Представление удалено.",
"sidebar.message.view_renamed": "Представление переименовано.",
"sidebar.message.routine_deleted": "{{type}} удалена.",
"sidebar.message.rename_failed": "Не удалось переименовать: {{error}}",
"sidebar.message.delete_failed": "Не удалось удалить: {{error}}",
"sidebar.message.table_data_action_loading": "{{action}} {{table}}...",
"sidebar.message.table_data_action_success": "{{action}} завершено.",
"sidebar.message.table_data_action_failed": "{{action}} завершилось ошибкой: {{error}}",
"sidebar.message.disconnected": "Отключено.",
"sidebar.message.database_closed": "База данных закрыта.",
"sidebar.message.saved_query_deleted": "Запрос удален.",
"sidebar.message.saved_query_name_unchanged": "Имя запроса не изменилось.",
"sidebar.message.saved_query_renamed": "Запрос переименован.",
"sidebar.message.saved_query_rename_failed": "Не удалось переименовать запрос: {{error}}",
"sidebar.message.saved_query_rebind_success": "Запрос привязан к {{name}}",
"sidebar.message.saved_query_rebind_failed": "Не удалось привязать запрос: {{error}}",
"sidebar.message.saved_query_delete_failed": "Не удалось удалить запрос: {{error}}",
"sidebar.message.message_publish_unsupported": "Текущий объект не поддерживает тестовую отправку сообщений",
"sidebar.message.message_publish_success": "Тестовое сообщение отправлено в {{destination}}",
"sidebar.message.message_publish_success_with_count": "Тестовое сообщение отправлено в {{destination}} (отправлено {{count}})",
"sidebar.message.message_publish_target_fallback": "цель",
"sidebar.message.connection_release_failed": "Не удалось освободить подключение",
"sidebar.message.connection_release_failed_from_sidebar": "Подключение отключено из боковой панели, но backend не смог освободить подключение",
"sidebar.menu.sort_by_name": "Сортировать по имени",
"sidebar.menu.sort_by_frequency": "Сортировать по частоте использования",
"sidebar.menu.new_table": "Новая таблица",
"sidebar.menu.create_event": "Новое событие",
"sidebar.menu.bind_to_connection": "Привязать к подключению",
"sidebar.aria.switch_connection": "Переключиться на подключение {{name}}",
"sidebar.menu.edit_schema": "Редактировать schema",
"sidebar.menu.export_current_schema_sql": "Экспортировать структуру таблиц текущей schema (SQL)",
"sidebar.menu.backup_current_schema_sql": "Создать резервную копию всех таблиц текущей schema (структура и данные SQL)",
"sidebar.menu.delete_schema": "Удалить schema",
"sidebar.menu.create_view": "Новое представление",
"sidebar.menu.create_function": "Новая функция",
"sidebar.menu.create_procedure": "Новая процедура",
"sidebar.menu.edit_tag": "Изменить группу",
"sidebar.menu.delete_tag": "Удалить группу",
"sidebar.menu.new_command_window": "Новое командное окно",
"sidebar.menu.redis_monitor": "Redis мониторинг",
"sidebar.menu.duplicate_connection": "Дублировать подключение",
"sidebar.menu.disconnect": "Отключить",
"sidebar.menu.move_out_of_tag": "Убрать из группы",
"sidebar.menu.create_database": "Новая база данных",
"sidebar.menu.new_query": "Новый запрос",
"sidebar.menu.move_to_tag": "Переместить в группу",
"sidebar.menu.browse_keys": "Просмотреть ключи",
"sidebar.menu.create_table": "Новая таблица",
"sidebar.menu.rename_database": "Переименовать базу данных",
"sidebar.menu.danger_operations": "Опасные операции",
"sidebar.menu.delete_database": "Удалить базу данных",
"sidebar.menu.export_all_table_schema_sql": "Экспортировать структуру всех таблиц в SQL",
"sidebar.menu.backup_all_tables_sql": "Создать резервную копию всех таблиц (схема + данные SQL)",
"sidebar.menu.close_database": "Закрыть базу данных",
"sidebar.menu.browse_view_data": "Просмотреть данные представления",
"sidebar.menu.view_definition": "Определение представления",
"sidebar.menu.browse_materialized_view_data": "Просмотреть данные материализованного представления",
"sidebar.menu.materialized_view_definition": "Определение материализованного представления",
"sidebar.menu.view_object_definition": "Показать определение",
"sidebar.menu.edit_view": "Редактировать представление",
"sidebar.menu.rename_view": "Переименовать представление",
"sidebar.menu.delete_view": "Удалить представление",
"sidebar.menu.view_routine_definition": "Показать определение",
"sidebar.menu.edit_definition": "Редактировать определение",
"sidebar.menu.delete_routine": "Удалить {{type}}",
"sidebar.menu.copy_object_name": "Копировать имя",
"sidebar.menu.table_structure": "Структура таблицы",
"sidebar.menu.design_table": "Проектировать таблицу",
"sidebar.menu.copy_table_name": "Копировать имя таблицы",
"sidebar.menu.copy_table_structure": "Копировать структуру таблицы",
"sidebar.menu.backup_table_sql": "Создать резервную копию таблицы (SQL)",
"sidebar.menu.rename_table": "Переименовать таблицу",
"sidebar.menu.truncate_table": "Усечь таблицу",
"sidebar.menu.clear_table": "Очистить таблицу",
"sidebar.menu.delete_table": "Удалить таблицу",
"sidebar.menu.export_table_data": "Экспортировать данные таблицы",
"sidebar.menu.export_csv": "Экспортировать CSV",
"sidebar.menu.export_xlsx": "Экспортировать XLSX",
"sidebar.menu.export_json": "Экспортировать JSON",
"sidebar.menu.export_markdown": "Экспортировать Markdown",
"sidebar.menu.export_html": "Экспортировать HTML",
"sidebar.menu.open_query": "Открыть запрос",
"sidebar.menu.rename_query": "Переименовать запрос",
"sidebar.menu.delete_query": "Удалить запрос",
"sidebar.menu.add_sql_directory": "Добавить SQL-каталог",
"sidebar.menu.refresh_directory": "Обновить каталог",
"sidebar.menu.remove_directory": "Удалить каталог",
"sidebar.menu.open_sql_file": "Открыть SQL-файл",
"sidebar.menu.new_sql_file": "Создать SQL-файл",
"sidebar.menu.new_sql_directory": "Создать каталог",
"sidebar.menu.rename_sql_directory": "Переименовать каталог",
"sidebar.menu.delete_local_directory": "Удалить локальный каталог",
"sidebar.menu.delete_sql_directory": "Удалить каталог",
"sidebar.menu.rename_sql_file": "Переименовать SQL-файл",
"sidebar.menu.new_sql_file_in_directory": "Создать SQL-файл в этом каталоге",
"sidebar.menu.new_sql_directory_in_directory": "Создать каталог в этом каталоге",
"sidebar.menu.delete_sql_file": "Удалить SQL-файл",
"sidebar.batch.group.tables": "Таблицы",
"sidebar.batch.group.views": "Представления",
"sidebar.batch.no_matching_objects": "Нет подходящих объектов",
"sidebar.sql_template.edit_view": "Изменить представление {{name}}",
"sidebar.sql_template.modify_then_execute": "Изменить и выполнить",
"sidebar.sql_template.edit_routine": "Изменить {{type}} {{name}}",
"sidebar.sql_template.duckdb_procedure_unsupported": "DuckDB пока не поддерживает хранимые процедуры",
"sidebar.sql_template.duckdb_macro_hint": "Используйте SQL Macro для поведения, похожего на функцию",
"connection_modal.network.ssl_mode.preferred": "Предпочтительно",
"connection_modal.network.ssl_mode.required": "Обязательно",
"connection_modal.network.ssl_mode.skip_verify": "Без проверки",
"sidebar.external_sql.root": "Внешние SQL-файлы",
"sidebar.external_sql.directory_fallback": "SQL-каталог",
"sidebar.external_sql_modal.title.create_file": "Создать SQL-файл",
"sidebar.external_sql_modal.title.rename_file": "Переименовать SQL-файл",
"sidebar.external_sql_modal.title.create_directory": "Создать каталог",
"sidebar.external_sql_modal.title.rename_directory": "Переименовать каталог",
"sidebar.external_sql_modal.action.create": "Создать",
"sidebar.external_sql_modal.action.rename": "Переименовать",
"sidebar.external_sql_modal.field.directory_name": "Имя каталога",
"sidebar.external_sql_modal.field.sql_file_name": "Имя SQL-файла",
"sidebar.external_sql_modal.validation.directory_name_required": "Введите имя каталога",
"sidebar.external_sql_modal.validation.sql_file_name_required": "Введите имя SQL-файла",
"sidebar.external_sql_modal.validation.directory_name_no_separator": "Имя каталога не должно содержать разделители пути",
"sidebar.external_sql_modal.validation.sql_file_name_no_separator": "Имя файла не должно содержать разделители пути",
"sidebar.external_sql_modal.help.directory": "Каталог отображается только в дереве внешних SQL-каталогов; файлы не SQL по-прежнему скрыты",
"sidebar.external_sql_modal.help.sql_file": "Если суффикс .sql не указан, он будет добавлен автоматически",
"sidebar.external_sql_modal.placeholder.directory_name": "Например: reports",
"sidebar.external_sql_modal.placeholder.sql_file_name": "Например: report.sql",
"sidebar.jvm.action.monitoring": "Непрерывный мониторинг",
"sidebar.jvm.action.diagnostic": "Расширенная диагностика",
"sidebar.jvm.tab.overview": "Обзор JVM",
"sidebar.jvm.tab.resource": "Ресурсы JVM",
"sidebar.jvm.tab.audit": "Аудит JVM",
"sidebar.jvm.tab.diagnostic": "Диагностика JVM",
"sidebar.jvm.tab.monitoring": "Мониторинг JVM",
"jvm.backend.message.connect_success": "Подключение JVM успешно выполнено",
"jvm.backend.error.preview_confirmation_missing": "Токен подтверждения предварительного просмотра отсутствует. Перед отправкой выполните предварительный просмотр еще раз.",
"jvm.backend.error.confirmation_token_missing": "Токен подтверждения отсутствует. Сначала завершите подтверждение предварительного просмотра.",
"jvm.backend.error.confirmation_token_invalid": "Токен подтверждения недействителен. Выполните предварительный просмотр и подтвердите снова.",
"jvm.backend.error.confirmation_token_expired": "Срок действия токена подтверждения истек. Выполните предварительный просмотр и подтвердите снова.",
"jvm.backend.error.preview_context_hash_failed": "Не удалось создать контекст предварительного просмотра JVM: {{detail}}",
"jvm.backend.error.preview_payload_hash_failed": "Не удалось создать digest Payload предварительного просмотра JVM: {{detail}}",
"jvm.backend.error.change_blocked_by_guard": "Текущее изменение заблокировано Guard",
"jvm.backend.error.change_blocked_read_only": "Текущее подключение доступно только для чтения, поэтому запись заблокирована",
"jvm.backend.error.change_resource_id_required": "ID ресурса JVM обязателен",
"jvm.backend.error.change_action_required": "Действие изменения JVM обязательно",
"jvm.backend.error.change_reason_required": "Причина изменения JVM обязательна",
"jvm.backend.error.change_confirmation_token_failed": "Не удалось создать токен подтверждения изменения JVM: {{detail}}",
"jvm.backend.error.disallowed_mode": "Текущее подключение не разрешает режим {{mode}}",
"jvm.backend.error.resource_path_invalid": "Недопустимый путь ресурса JVM: {{detail}}",
"jvm.backend.error.audit_write_blocked": "Не удалось записать запись аудита, изменение JVM заблокировано: {{detail}}",
"jvm.backend.warning.failed_audit_write_failed": "Не удалось записать аудит сбоя: {{detail}}",
"jvm.backend.warning.terminal_audit_write_failed": "Не удалось записать финальный аудит: {{detail}}",
"jvm.backend.separator.message_warning": "; ",
"jvm.backend.capability.reason.read_only": "Текущее подключение доступно только для чтения",
"jvm.backend.monitoring.error.snapshot_unsupported": "Снимок мониторинга {{provider}} пока не поддерживается",
"jvm.backend.monitoring.error.session_not_found": "Сеанс мониторинга JVM для {{connectionId}} {{providerMode}} не найден",
"jvm.backend.monitoring.warning.sample_auto_stopped": "Сбор данных мониторинга завершился с ошибкой {{count}} раз подряд, поэтому этот сеанс был автоматически остановлен",
"jvm.backend.connection_error.suggestion": "Рекомендация: {{detail}}",
"jvm.backend.connection_error.technical_detail": "Технические сведения: {{detail}}",
"jvm.backend.connection_error.generic": "Подключение JVM не удалось",
"jvm.backend.connection_error.endpoint.base_url_required": "Подключение Endpoint не удалось: Endpoint Base URL отсутствует.",
"jvm.backend.connection_error.endpoint.base_url_invalid.summary": "Подключение Endpoint не удалось: Endpoint Base URL недействителен.",
"jvm.backend.connection_error.endpoint.base_url_invalid.help": "Укажите полный URL http:// или https://, который указывает на корневой путь management API, реализующего GoNavi JVM HTTP contract, например http://127.0.0.1:19090/manage/jvm.",
"jvm.backend.connection_error.endpoint.scheme_unsupported.summary": "Подключение Endpoint не удалось: поддерживаются только HTTP или HTTPS.",
"jvm.backend.connection_error.endpoint.scheme_unsupported.help": "Измените Endpoint Base URL на адрес, начинающийся с http:// или https://.",
"jvm.backend.connection_error.endpoint.not_found.summary": "Подключение Endpoint не удалось: целевой адрес ответил, но management API GoNavi JVM не найден.",
"jvm.backend.connection_error.endpoint.not_found.help": "Убедитесь, что Base URL указывает на корневой путь management API JVM, а не на бизнес-endpoint, health check или домашнюю страницу gateway.",
"jvm.backend.connection_error.endpoint.connection_refused.summary": "Подключение Endpoint не удалось: целевой management API не слушает порт или адрес недоступен.",
"jvm.backend.connection_error.endpoint.connection_refused.help": "Убедитесь, что Base URL указывает на management API, реализующий GoNavi JVM HTTP contract, и проверьте прослушивание сервиса, port mapping и правила firewall.",
"jvm.backend.connection_error.endpoint.unauthorized.summary": "Подключение Endpoint не удалось: целевой management API ответил, но API Key отсутствует или недействителен.",
"jvm.backend.connection_error.endpoint.unauthorized.help": "Проверьте, совпадает ли Endpoint API Key в подключении с конфигурацией целевого сервиса.",
"jvm.backend.connection_error.endpoint.forbidden.summary": "Подключение Endpoint не удалось: целевой management API отклонил этот запрос.",
"jvm.backend.connection_error.endpoint.forbidden.help": "Убедитесь, что источник клиента, настройки authentication и access policy разрешают GoNavi доступ к этому management API.",
"jvm.backend.connection_error.endpoint.timeout.summary": "Подключение Endpoint не удалось: истекло время ожидания доступа к целевому management API.",
"jvm.backend.connection_error.endpoint.timeout.help": "Убедитесь, что Base URL доступен, целевой сервис запущен, и при необходимости увеличьте connection timeout.",
"jvm.backend.connection_error.agent.base_url_required": "Подключение Agent не удалось: Agent Base URL отсутствует.",
"jvm.backend.connection_error.agent.base_url_invalid.summary": "Подключение Agent не удалось: Agent Base URL недействителен.",
"jvm.backend.connection_error.agent.base_url_invalid.help": "Укажите полный URL http:// или https://, например http://127.0.0.1:19090/gonavi/agent/jvm.",
"jvm.backend.connection_error.agent.scheme_unsupported.summary": "Подключение Agent не удалось: поддерживаются только HTTP или HTTPS.",
"jvm.backend.connection_error.agent.scheme_unsupported.help": "Измените Agent Base URL на адрес, начинающийся с http:// или https://.",
"jvm.backend.connection_error.agent.connection_refused.summary": "Подключение Agent не удалось: целевой management port Agent не слушается или адрес недоступен.",
"jvm.backend.connection_error.agent.connection_refused.help": "Убедитесь, что Java service запущен с GoNavi Agent через `-javaagent`, и проверьте Base URL, port mapping и правила firewall.",
"jvm.backend.connection_error.agent.unauthorized.summary": "Подключение Agent не удалось: Agent ответил, но API Key отсутствует или недействителен.",
"jvm.backend.connection_error.agent.unauthorized.help": "Проверьте, совпадает ли Agent API Key в подключении с параметрами запуска целевого сервиса.",
"jvm.backend.connection_error.agent.forbidden.summary": "Подключение Agent не удалось: Agent отклонил этот запрос.",
"jvm.backend.connection_error.agent.forbidden.help": "Убедитесь, что источник клиента, настройки authentication и access policy Agent разрешают GoNavi доступ.",
"jvm.backend.connection_error.agent.timeout.summary": "Подключение Agent не удалось: истекло время ожидания доступа к management port Agent.",
"jvm.backend.connection_error.agent.timeout.help": "Убедитесь, что целевой адрес доступен, Agent запущен, и при необходимости увеличьте connection timeout.",
"jvm.backend.connection_error.jmx.host_required": "Подключение JMX не удалось: host отсутствует.",
"jvm.backend.connection_error.jmx.port_invalid": "Подключение JMX не удалось: port недействителен. Укажите допустимый port от 1 до 65535.",
"jvm.backend.connection_error.jmx.java_missing.summary": "Подключение JMX не удалось: на текущей машине не найден runtime `java`, поэтому GoNavi не может запустить JMX helper.",
"jvm.backend.connection_error.jmx.java_missing.help": "Сначала установите JRE/JDK или укажите правильный исполняемый файл `java` через переменную окружения GONAVI_JMX_JAVA_BIN.",
"jvm.backend.connection_error.jmx.non_jrmp.summary": "Подключение JMX не удалось: {{target}} не является стандартным удаленным management port JMX; это похоже на бизнес-порт или HTTP port.",
"jvm.backend.connection_error.jmx.non_jrmp.help": "Используйте фактический JMX port, открытый приложением, а не бизнес `server.port`. Если сервис только включает `-Dcom.sun.management.jmxremote`, но не задает `jmxremote.port`, удаленное подключение невозможно.",
"jvm.backend.connection_error.jmx.no_such_object.summary": "Подключение JMX не удалось: на {{target}} есть RMI service, но это не пригодный JMX RMIServer port.",
"jvm.backend.connection_error.jmx.no_such_object.help": "Обычно это означает, что указан port RMI registry, debug port или другой port Java service. Проверьте настройки `jmxremote.port` и `jmxremote.rmi.port`.",
"jvm.backend.connection_error.jmx.connection_reset.summary": "Подключение JMX не удалось: сервис на {{target}} закрыл соединение; port не является совместимым стандартным JMX RMI port.",
"jvm.backend.connection_error.jmx.connection_reset.help": "Убедитесь, что настроенный port является открытым JMX port JVM, а не бизнес-портом, debug port или проксированным port.",
"jvm.backend.connection_error.jmx.connection_refused.summary": "Подключение JMX не удалось: не удалось подключиться к {{target}}, потому что port не слушается или сеть недоступна.",
"jvm.backend.connection_error.jmx.connection_refused.help": "Убедитесь, что на целевой JVM включен remote JMX, и проверьте host, firewall, port mapping, SSH и настройки proxy.",
"jvm.backend.connection_error.jmx.auth.summary": "Подключение JMX не удалось: {{target}} требует authentication или текущие credentials недействительны.",
"jvm.backend.connection_error.jmx.auth.help": "Проверьте, отключена ли authentication у целевого JMX. Если authentication требуется, укажите username и password перед подключением.",
"jvm.backend.connection_error.jmx.timeout.summary": "Подключение JMX не удалось: время ожидания подключения к {{target}} истекло.",
"jvm.backend.connection_error.jmx.timeout.help": "Убедитесь, что port доступен, сеть не заблокирована, и при необходимости увеличьте connection timeout.",
"jvm.backend.diagnostic.error.disabled": "Для этого подключения не включен режим расширенной диагностики JVM",
"jvm.backend.diagnostic.error.session_id_required": "Diagnostic session ID обязателен. Сначала создайте session.",
"jvm.backend.diagnostic.error.command_required": "Diagnostic command не может быть пустой",
"jvm.backend.diagnostic.error.cancel_identifiers_required": "Для cancel command требуются sessionId и commandId",
"jvm.backend.diagnostic.error.audit_write_blocked": "Не удалось записать diagnostic audit record, выполнение command заблокировано: {{detail}}",
"jvm.backend.diagnostic.error.execute_canceled": "Запрос выполнения диагностики отменен: {{detail}}",
"jvm.backend.diagnostic.error.transport_unsupported": "Неподдерживаемый транспорт диагностики JVM: {{transport}}",
"jvm.backend.diagnostic.warning.audit_write_failed": "Не удалось записать audit record: {{detail}}",
"jvm.backend.diagnostic.message.command_completed": "Diagnostic command выполнена",
"jvm.backend.diagnostic.message.cancel_requested": "Cancel request отправлен; ожидание остановки command диагностическим bridge",
"jvm.backend.diagnostic.message.arthas_command_completed": "Arthas command выполнена",
"jvm.backend.diagnostic.message.arthas_command_canceled": "Arthas command отменена",
"jvm.backend.diagnostic.policy.observe_not_allowed": "Observe diagnostic commands не включены для этого подключения: {{command}}",
"jvm.backend.diagnostic.policy.trace_not_allowed": "Trace diagnostic commands не включены для этого подключения: {{command}}",
"jvm.backend.diagnostic.policy.mutating_not_allowed": "High-risk diagnostic commands не включены для этого подключения: {{command}}",
"jvm.backend.diagnostic.policy.read_only_observe_only": "Текущее подключение доступно только для чтения. Разрешены только observe diagnostic commands",
"jvm.backend.diagnostic.policy.multiline_not_supported": "Diagnostic command не поддерживает переносы строк или несколько commands",
"jvm.backend.diagnostic.arthas.base_url_required": "Требуется адрес Arthas Tunnel",
"jvm.backend.diagnostic.arthas.base_url_invalid": "Адрес Arthas Tunnel недействителен: {{detail}}",
"jvm.backend.diagnostic.arthas.target_id_required": "Требуется target ID для Arthas Tunnel (targetId / agentId)",
"jvm.backend.diagnostic.arthas.scheme_unsupported": "Arthas Tunnel поддерживает только адреса http/https/ws/wss: {{scheme}}",
"jvm.backend.diagnostic.arthas.session_missing": "Diagnostic session не существует. Создайте Arthas Tunnel session заново.",
"jvm.backend.diagnostic.arthas.session_config_changed": "Конфигурация Arthas Tunnel session изменилась. Создайте diagnostic session заново.",
"jvm.backend.diagnostic.arthas.command_already_running": "В этой Arthas Tunnel session уже выполняется command. Дождитесь завершения или сначала отмените ее.",
"jvm.backend.diagnostic.arthas.no_running_command": "В этой Arthas Tunnel session нет выполняющейся command.",
"jvm.backend.diagnostic.arthas.cancel_command_mismatch": "Активная command в этой Arthas Tunnel session не совпадает с command для отмены.",
"jvm.backend.diagnostic.arthas.connection_not_ready": "Подключение Arthas Tunnel еще не готово. Повторите попытку позже.",
"jvm.backend.diagnostic.arthas.http_failed": "Подключение Arthas Tunnel не удалось: HTTP {{status}}",
"jvm.backend.diagnostic.arthas.connect_timeout": "WebSocket-подключение Arthas Tunnel не получило ответ за {{timeout}} и завершилось по timeout",
"jvm.backend.diagnostic.arthas.connect_canceled": "WebSocket-подключение Arthas Tunnel отменено",
"jvm.backend.diagnostic.arthas.connect_failed": "WebSocket-подключение Arthas Tunnel не удалось: {{detail}}",
"jvm.backend.diagnostic.arthas.request_encode_failed": "Не удалось закодировать запрос Arthas Tunnel: {{detail}}",
"jvm.backend.diagnostic.arthas.write_deadline_failed": "Не удалось задать write deadline Arthas Tunnel: {{detail}}",
"jvm.backend.diagnostic.arthas.send_timeout": "Отправка terminal command в Arthas Tunnel не получила ответ за {{timeout}} и завершилась по timeout",
"jvm.backend.diagnostic.arthas.send_canceled": "Отправка terminal command в Arthas Tunnel отменена",
"jvm.backend.diagnostic.arthas.send_failed": "Не удалось отправить terminal command в Arthas Tunnel: {{detail}}",
"jvm.backend.diagnostic.arthas.read_deadline_failed": "Не удалось задать read deadline Arthas Tunnel: {{detail}}",
"jvm.backend.diagnostic.arthas.read_timeout": "Чтение вывода Arthas Tunnel не получило ответ за {{timeout}} и завершилось по timeout",
"jvm.backend.diagnostic.arthas.read_canceled": "Чтение вывода Arthas Tunnel отменено",
"jvm.backend.diagnostic.arthas.read_failed": "Не удалось прочитать вывод Arthas Tunnel: {{detail}}",
"jvm.backend.diagnostic.arthas.connection_closed": "Подключение Arthas Tunnel закрыто: {{detail}}",
"jvm.backend.diagnostic.arthas.connection_closed_code": "Подключение Arthas Tunnel закрыто: code={{code}}",
"jvm.backend.diagnostic.arthas.command_timeout": "Arthas Tunnel command завершилась по timeout за {{timeout}}",
"jvm.backend.diagnostic.arthas.command_canceled": "Arthas Tunnel command отменена",
"jvm.backend.diagnostic.arthas.target_not_found": "Целевой instance не найден. Проверьте targetId / agentId и убедитесь, что tunnel client онлайн.",
"jvm.backend.diagnostic.arthas.target_not_found_with_id": "Целевой instance {{target}} не найден. Проверьте targetId / agentId и убедитесь, что tunnel client онлайн.",
"jvm.backend.diagnostic.arthas.terminal_command_encode_failed": "Не удалось закодировать terminal command Arthas Tunnel: {{detail}}",
"jvm_resource.error.connection_missing": "Подключение не существует или было удалено.",
"jvm_resource.error.resource_path_empty": "Путь к ресурсу пуст.",
"jvm_resource.error.get_value_unavailable": "Чтение значения JVM недоступно в этой сборке.",
"jvm_resource.error.read_failed": "Не удалось прочитать ресурс JVM.",
"jvm_resource.error.ai_plan_missing_context": "В плане AI отсутствует исходный контекст. Сначала создайте его заново на странице целевого ресурса JVM.",
"jvm_resource.error.ai_plan_context_mismatch": "Текущая вкладка JVM не совпадает с исходным контекстом плана AI, поэтому автоматическое применение отклонено.",
"jvm_resource.error.ai_plan_to_draft_failed": "Сейчас не удалось преобразовать план AI в черновик предварительного просмотра JVM.",
"jvm_resource.message.ai_plan_draft_filled": "Черновик заполнен из плана AI для {{resourceId}}. Перед подтверждением записи сначала просмотрите изменение.",
"jvm_ai_plan.error.resource_locator_missing": "В плане AI отсутствует пригодная информация для поиска ресурса.",
"jvm_ai_plan.error.reason_missing": "В плане AI отсутствует причина изменения.",
"jvm_ai_plan.error.action_missing": "В плане AI отсутствует исполняемое action.",
"jvm_ai_plan.error.payload_json_object_required": "Текущий предварительный просмотр JVM требует, чтобы payload оставался JSON-объектом.",
"jvm_ai_plan.snapshot.unavailable": "Текущий снимок ресурса еще не был успешно загружен.",
"jvm_ai_plan.actions.none": "Текущий ресурс не объявляет поддерживаемые действия. Если вы создаете план, указывайте action только когда его можно явно вывести из снимка, и оставляйте payload JSON-объектом.",
"jvm_ai_plan.actions.label": " ({{label}})",
"jvm_ai_plan.actions.description": ": {{description}}",
"jvm_ai_plan.actions.payload_fields": "; поля payload: {{fields}}",
"jvm_ai_plan.actions.field_separator": ", ",
"jvm_ai_plan.actions.required_suffix": "(required)",
"jvm_ai_plan.prompt.resource_path_missing": "(путь ресурса не указан)",
"jvm_ai_plan.prompt.environment_unknown": "unknown",
"jvm_ai_plan.prompt.intro": "Проанализируйте следующий ресурс JVM и создайте структурированный план изменения для GoNavi \"Предварительный просмотр изменения\".",
"jvm_ai_plan.prompt.connection_name": "Имя подключения: {{connectionName}}",
"jvm_ai_plan.prompt.target_host": "Целевой хост: {{host}}",
"jvm_ai_plan.prompt.provider_mode": "Режим Provider: {{providerMode}}",
"jvm_ai_plan.prompt.environment": "Среда: {{environmentLabel}}",
"jvm_ai_plan.prompt.connection_policy.read_only": "Подключение только для чтения. Можно создать только план и анализ рисков; нельзя предполагать, что выполнение уже произошло.",
"jvm_ai_plan.prompt.connection_policy.writable": "Подключение доступно для записи, но изменение все равно сначала должно быть просмотрено и подтверждено вручную.",
"jvm_ai_plan.prompt.connection_policy": "Политика подключения: {{policy}}",
"jvm_ai_plan.prompt.resource_path": "Текущий путь ресурса: {{resourcePath}}",
"jvm_ai_plan.prompt.snapshot_title": "Текущий снимок ресурса:",
"jvm_ai_plan.prompt.supported_actions_title": "Поддерживаемые действия для текущего ресурса:",
"jvm_ai_plan.prompt.output_requirements_title": "Требования к выводу:",
"jvm_ai_plan.prompt.requirement.single_json_block": "1. Сначала можно добавить короткий анализ, но ответ должен содержать ровно один блок кода ```json.",
"jvm_ai_plan.prompt.requirement.fields": "2. Поля JSON внутри блока кода должны быть строго такими: targetType, selector, action, payload, reason.",
"jvm_ai_plan.prompt.requirement.resource_path": "3. Предпочитайте selector.resourcePath с текущим путем ресурса {{resourcePath}}. Не придумывайте другой путь.",
"jvm_ai_plan.prompt.requirement.action": "4. Предпочитайте выбирать action из \"Поддерживаемые действия для текущего ресурса\"; выводите его из снимка только если поддерживаемые действия не объявлены.",
"jvm_ai_plan.prompt.requirement.payload": "5. payload должен быть обернут как JSON-объект. Не выводите скрипты, команды или сырые двоичные данные. Если нужно текстовое значение, оберните его как {\"format\":\"text\",\"value\":\"...\"}.",
"jvm_ai_plan.prompt.requirement.no_execute": "6. Не утверждайте, что изменение уже выполнено, и не выводите скрипты или команды.",
"jvm_ai_plan.prompt.example_title": "Пример JSON:",
"jvm_ai_plan.prompt.example_reason": "Исправить грязное значение кэша",
"jvm_resource.error.reason_required": "Укажите причину изменения.",
"jvm_resource.error.payload_object_required": "Payload должен быть JSON-объектом.",
"jvm_resource.error.resource_id_empty": "ID ресурса пуст, поэтому невозможно создать черновик изменения.",
"jvm_resource.error.preview_unavailable": "Предварительный просмотр изменений JVM недоступен в этой сборке.",
"jvm_resource.error.draft_invalid": "Черновик изменения недействителен.",
"jvm_resource.error.preview_failed": "Не удалось предварительно просмотреть изменение JVM.",
"jvm_resource.error.preview_result_invalid": "Результат предварительного просмотра имеет неверный формат.",
"jvm_resource.error.apply_unavailable": "Выполнение изменений JVM недоступно в этой сборке.",
"jvm_resource.error.preview_required": "Перед подтверждением выполнения сначала просмотрите изменение.",
"jvm_resource.error.context_changed": "Контекст ресурса изменился. Перед выполнением снова выполните предварительный просмотр.",
"jvm_resource.error.confirmation_missing": "Отсутствует токен подтверждения. Перед выполнением снова выполните предварительный просмотр.",
"jvm_resource.presentation.action.set.label": "Установить свойство",
"jvm_resource.presentation.action.set.description": "Обновляет доступное для записи значение свойства текущего ресурса.",
"jvm_resource.presentation.action.invoke.label": "Вызвать операцию",
"jvm_resource.presentation.action.invoke.description": "Вызывает управляющую операцию, предоставляемую текущим ресурсом.",
"jvm_resource.presentation.action.put.label": "Записать ресурс",
"jvm_resource.presentation.action.put.description": "Записывает содержимое payload в текущий ресурс JVM.",
"jvm_resource.presentation.action.clear.label": "Очистить ресурс",
"jvm_resource.presentation.action.clear.description": "Очищает данные или состояние в текущем ресурсе JVM.",
"jvm_resource.presentation.action.evict.label": "Вытеснить кэш",
"jvm_resource.presentation.action.evict.description": "Вытесняет целевой элемент кэша из текущей среды выполнения JVM.",
"jvm_resource.presentation.action.remove.label": "Удалить запись",
"jvm_resource.presentation.action.remove.description": "Удаляет указанную запись из текущего ресурса.",
"jvm_resource.presentation.action.delete.label": "Удалить ресурс",
"jvm_resource.presentation.action.delete.description": "Удаляет текущий ресурс или отменяет его регистрацию.",
"jvm_resource.presentation.action.refresh.label": "Обновить ресурс",
"jvm_resource.presentation.action.refresh.description": "Обновляет состояние выполнения текущего ресурса.",
"jvm_resource.presentation.action.reload.label": "Перезагрузить",
"jvm_resource.presentation.action.reload.description": "Перезагружает текущий ресурс или его конфигурацию.",
"jvm_resource.presentation.action.reset.label": "Сбросить состояние",
"jvm_resource.presentation.action.reset.description": "Возвращает текущий ресурс в начальное состояние или состояние по умолчанию.",
"jvm_resource.presentation.unnamed_action": "Действие без имени",
"jvm_resource.presentation.risk.low": "Низкий",
"jvm_resource.presentation.risk.medium": "Средний",
"jvm_resource.presentation.risk.high": "Высокий",
"jvm_resource.presentation.risk.unknown": "Неизвестно",
"jvm_resource.presentation.audit_result.unknown": "Неизвестно",
"jvm_resource.presentation.audit_result.applied": "Выполнено",
"jvm_resource.presentation.audit_result.success": "Успешно",
"jvm_resource.presentation.audit_result.warning": "Предупреждение",
"jvm_resource.presentation.audit_result.blocked": "Заблокировано",
"jvm_resource.presentation.audit_result.failed": "Ошибка",
"jvm_resource.error.apply_failed": "Не удалось выполнить изменение JVM.",
"jvm_resource.message.apply_success": "Изменение JVM выполнено.",
"jvm_resource.title": "Рабочая область ресурсов JVM",
"jvm_resource.badge.read_only": "Подключение только для чтения",
"jvm_resource.badge.writable": "Подключение с записью",
"jvm_resource.action.audit": "Журнал аудита",
"jvm_resource.action.generate_ai_plan": "Создать план AI",
"jvm_resource.action.ask_ai_plan": "Попросить AI создать план",
"jvm_resource.card.snapshot": "Снимок ресурса",
"jvm_resource.field.resource_id": "ID ресурса",
"jvm_resource.field.resource_type": "Тип ресурса",
"jvm_resource.field.format": "Формат",
"jvm_resource.field.version": "Версия",
"jvm_resource.field.available_actions": "Доступные действия",
"jvm_resource.section.resource_value": "Значение ресурса",
"jvm_resource.section.metadata": "Метаданные",
"jvm_resource.empty.no_resource_data": "Нет данных ресурса",
"jvm_resource.card.change_draft": "Черновик изменения",
"jvm_resource.field.resource_path": "Путь к ресурсу",
"jvm_resource.field.target_resource": "Целевой ресурс",
"jvm_resource.field.resource_version": "Версия ресурса",
"jvm_resource.field.draft_source": "Источник черновика",
"jvm_resource.draft_source.ai_plan": "Черновик с помощью AI",
"jvm_resource.draft_source.manual": "Ручное редактирование",
"jvm_resource.section.supported_actions": "Поддерживаемые действия ресурса",
"jvm_resource.field.payload_fields": "Поля Payload: ",
"jvm_resource.marker.required_suffix": " (обязательно)",
"jvm_resource.list_separator": ", ",
"jvm_resource.field.action": "Действие",
"jvm_resource.placeholder.action_jmx": "Например, set или invoke",
"jvm_resource.placeholder.action_default": "Например, put / clear / evict",
"jvm_resource.message.current_action": "Текущее действие: ",
"jvm_resource.field.reason": "Причина изменения",
"jvm_resource.placeholder.reason": "Введите причину этого изменения ресурса JVM",
"jvm_resource.field.payload": "Payload (JSON)",
"jvm_resource.message.payload_hint": "Предварительный просмотр использует текущий черновик. Подтверждение выполнения использует последний успешный запрос предварительного просмотра. После изменения черновика выполните просмотр снова.",
"jvm_resource.message.payload_template_applied": "Для текущего действия заполнен рекомендуемый шаблон.",
"jvm_resource.action.preview_change": "Предпросмотр изменения",
"jvm_overview.connection_missing.message": "Подключение не существует или было удалено",
"jvm_overview.error.capability_load_failed": "Не удалось прочитать возможности режима JVM",
"jvm_overview.eyebrow": "Среда выполнения JVM",
"jvm_overview.title": "Обзор среды выполнения JVM",
"jvm_overview.badge.read_only": "Подключение только для чтения",
"jvm_overview.badge.writable": "Подключение с записью",
"jvm_overview.card.connection_summary": "Сводка подключения",
"jvm_overview.card.mode_capability": "Возможности режимов",
"jvm_overview.field.current_mode": "Текущий режим",
"jvm_overview.field.allowed_modes": "Разрешенные режимы",
"jvm_overview.field.jmx_address": "JMX-адрес",
"jvm_overview.field.endpoint": "Endpoint",
"jvm_overview.field.agent": "Agent",
"jvm_overview.field.resource_browse": "Просмотр ресурсов",
"jvm_overview.value.enabled": "Включено",
"jvm_overview.value.not_configured": "Не настроено",
"jvm_overview.value.resource_browse_lazy_load": "Ленивая загрузка после раскрытия узла режима на боковой панели",
"jvm_overview.empty.capabilities": "Нет данных о возможностях режима",
"jvm_overview.capability.can_browse": "Можно просматривать",
"jvm_overview.capability.cannot_browse": "Нельзя просматривать",
"jvm_overview.capability.writable": "Запись разрешена",
"jvm_overview.capability.read_only": "Только чтение",
"jvm_overview.capability.preview_supported": "Предпросмотр поддерживается",
"jvm_overview.capability.preview_unsupported": "Предпросмотр не поддерживается",
"jvm_monitoring_dashboard.connection_missing.message": "Подключение не существует или было удалено",
"jvm_monitoring_dashboard.error.history_unavailable": "Метод backend JVMGetMonitoringHistory недоступен",
"jvm_monitoring_dashboard.error.history_load_failed": "Не удалось загрузить историю мониторинга",
"jvm_monitoring_dashboard.error.start_unavailable": "Метод backend JVMStartMonitoring недоступен",
"jvm_monitoring_dashboard.error.start_failed": "Не удалось запустить мониторинг",
"jvm_monitoring_dashboard.error.stop_unavailable": "Метод backend JVMStopMonitoring недоступен",
"jvm_monitoring_dashboard.error.stop_failed": "Не удалось остановить мониторинг",
"jvm_monitoring_dashboard.title": "Непрерывный мониторинг JVM",
"jvm_monitoring_dashboard.status.sampling": "Идет сбор",
"jvm_monitoring_dashboard.status.stopped": "Не запущено",
"jvm_monitoring_dashboard.action.refresh": "Обновить",
"jvm_monitoring_dashboard.action.start": "Запустить мониторинг",
"jvm_monitoring_dashboard.action.stop": "Остановить мониторинг",
"jvm_monitoring_dashboard.degraded.message": "Возможности мониторинга снижены",
"jvm_monitoring_dashboard.empty.title": "Непрерывный мониторинг еще не запущен",
"jvm_monitoring_dashboard.empty.description": "После нажатия \"Запустить мониторинг\" GoNavi сохраняет результаты сбора данных для этого подключения в текущем сеансе; переключение вкладок не останавливает сбор данных.",
"jvm_diagnostic.workbench.eyebrow": "Диагностика JVM",
"jvm_diagnostic.workbench.title": "Рабочая область диагностики JVM",
"jvm_diagnostic.workbench.status.session_established": "Сеанс установлен",
"jvm_diagnostic.workbench.status.no_session": "Нет сеанса",
"jvm_diagnostic.workbench.status.command_running": "Команда выполняется",
"jvm_diagnostic.workbench.action.probe": "Проверить возможности",
"jvm_diagnostic.workbench.action.restart_session": "Пересоздать сеанс",
"jvm_diagnostic.workbench.action.start_session": "Создать сеанс",
"jvm_diagnostic.workbench.action.execute_command": "Выполнить команду",
"jvm_diagnostic.workbench.action.cancel_command": "Отменить команду",
"jvm_diagnostic.connection_missing.message": "Подключение не существует или было удалено",
"jvm_diagnostic.error.probe_unavailable": "Метод backend JVMProbeDiagnosticCapabilities недоступен",
"jvm_diagnostic.error.probe_failed": "Не удалось проверить диагностические возможности",
"jvm_diagnostic.error.start_unavailable": "Метод бэкенда JVMStartDiagnosticSession недоступен",
"jvm_diagnostic.error.start_failed": "Не удалось создать диагностический сеанс",
"jvm_diagnostic.error.history_load_failed": "Не удалось загрузить историю диагностики",
"jvm_diagnostic.error.execute_unavailable": "Метод бэкенда JVMExecuteDiagnosticCommand недоступен",
"jvm_diagnostic.error.execute_session_required": "Перед выполнением команды создайте диагностический сеанс",
"jvm_diagnostic.error.execute_command_required": "Диагностическая команда обязательна",
"jvm_diagnostic.error.execute_failed": "Не удалось выполнить диагностическую команду",
"jvm_diagnostic.error.cancel_unavailable": "Метод бэкенда JVMCancelDiagnosticCommand недоступен",
"jvm_diagnostic.error.cancel_failed": "Не удалось отменить диагностическую команду",
"jvm_diagnostic.message.cancel_sent": "Запрос на отмену отправлен",
"jvm_diagnostic.session.default_title": "Консоль диагностики JVM",
"jvm_diagnostic.session.default_reason": "Сеанс запущен из консоли",
"jvm_diagnostic.ai_plan.error.transport_mismatch": "Диагностический transport в AI-плане: {{planTransport}}, он не совпадает с текущей консолью {{currentTransport}}. Перед применением создайте план заново.",
"jvm_diagnostic.ai_plan.message.filled": "Диагностический AI-план перенесен в консоль",
"jvm_diagnostic.ai_plan.default_reason": "Диагностический AI-план: {{intent}}",
"jvm_diagnostic.session_capability.title": "Сеанс и возможности",
"jvm_diagnostic.session_capability.description": "Текущий канал, права и быстрое обслуживание",
"jvm_diagnostic.session_capability.status.session_established": "Сеанс установлен",
"jvm_diagnostic.session_capability.status.no_session": "Нет сеанса",
"jvm_diagnostic.session_capability.status.command_running": "Команда выполняется",
"jvm_diagnostic.session_capability.status.idle": "Ожидание",
"jvm_diagnostic.session_capability.session_id_hint": "ID сеанса появится здесь после создания сеанса.",
"jvm_diagnostic.session_capability.note": "Проверка возможностей не выполняет команды; перед выполнением команды нужно создать сеанс. История аудита показывает последние записи команд и может содержать записи прошлых сеансов даже без текущего сеанса.",
"jvm_diagnostic.session_capability.action.clear_output": "Очистить вывод",
"jvm_diagnostic.session_capability.action.refresh_history": "Обновить историю",
"jvm_diagnostic.workflow.probe.title": "Проверить возможности",
"jvm_diagnostic.workflow.probe.description": "Считывает только диагностический канал, потоковый вывод и права на команды, не создавая сеанс.",
"jvm_diagnostic.workflow.session.title": "Создать сеанс",
"jvm_diagnostic.workflow.session.description": "Создает диагностический контекст, чтобы последующие команды были привязаны к этому сеансу.",
"jvm_diagnostic.workflow.command.title": "Выполнить команду",
"jvm_diagnostic.workflow.command.description": "После создания сеанса отображаются редактор команды, поле причины и шаблоны.",
"jvm_diagnostic.capability.empty.title": "Возможности еще не проверены",
"jvm_diagnostic.capability.empty.description": "Проверка возможностей только считывает права канала и политику команд. Она не создает сеанс и не выполняет команды.",
"jvm_diagnostic.capability_result.title": "Результаты проверки возможностей",
"jvm_diagnostic.capability_result.session_allowed": "Сеансы доступны",
"jvm_diagnostic.capability_result.session_denied": "Сеансы недоступны",
"jvm_diagnostic.capability_result.streaming_supported": "Потоковый вывод",
"jvm_diagnostic.capability_result.streaming_unsupported": "Потоковая передача не поддерживается",
"jvm_diagnostic.capability_result.observe_allowed": "Команды Observe",
"jvm_diagnostic.capability_result.observe_denied": "Observe запрещен",
"jvm_diagnostic.capability_result.trace_allowed": "Команды Trace",
"jvm_diagnostic.capability_result.mutating_allowed": "Команды высокого риска",
"jvm_diagnostic.no_session.title": "Начать диагностический сеанс",
"jvm_diagnostic.no_session.description": "Сначала создайте сеанс, затем появятся редактор команд и шаблоны",
"jvm_diagnostic.no_session.alert.title": "Ввод команды появится после создания сеанса",
"jvm_diagnostic.no_session.alert.description": "Это не дает принять несвязанный с сеансом ввод за готовую к выполнению команду и привязывает аудит, поток вывода и отмену к одному сеансу.",
"jvm_diagnostic.no_session.action.start": "Создать диагностический сеанс",
"jvm_diagnostic.no_session.action.probe": "Сначала проверить возможности",
"jvm_diagnostic.command_input.title": "Ввод команды",
"jvm_diagnostic.command_input.description": "Поддерживает автодополнение. Нажмите Ctrl/Cmd + Enter для запуска.",
"jvm_diagnostic.command_input.command_label": "Диагностическая команда",
"jvm_diagnostic.command_input.command_description": "Введите команду Arthas/диагностики, например thread -n 5, dashboard или jvm; шаблоны ниже заполняют ее одним щелчком.",
"jvm_diagnostic.command_input.reason_label": "Причина (необязательно)",
"jvm_diagnostic.command_input.reason_placeholder": "Например: исследовать высокую нагрузку CPU, подтвердить блокировку потоков или найти медленный метод",
"jvm_diagnostic.command_input.reason_help": "Используется для записей аудита и контекста AI. Не отправляется в целевую JVM как команда Arthas.",
"jvm_diagnostic.command_templates.title": "Шаблоны команд",
"jvm_diagnostic.output.title": "Вывод в реальном времени",
"jvm_diagnostic.output.description": "Добавляется из потока событий backend",
"jvm_diagnostic.output.empty.description": "Оперативного вывода пока нет. После выполнения команды вывод бэкенда будет появляться здесь в хронологическом порядке.",
"jvm_diagnostic.output.local_pending": "Диагностическая команда отправлена; ожидание вывода backend: {{command}}",
"jvm_diagnostic.output.frontend_completed_fallback": "Вызов диагностической команды вернулся, но терминальное событие backend не было получено. Frontend завершил состояние ожидания как fallback.",
"jvm_diagnostic.presentation.category.observe": "Команды наблюдения",
"jvm_diagnostic.presentation.category.trace": "Команды трассировки",
"jvm_diagnostic.presentation.category.mutating": "Команды высокого риска",
"jvm_diagnostic.presentation.phase.running": "Выполняется",
"jvm_diagnostic.presentation.phase.completed": "Завершено",
"jvm_diagnostic.presentation.phase.failed": "Не удалось",
"jvm_diagnostic.presentation.phase.canceled": "Отменено",
"jvm_diagnostic.presentation.phase.canceling": "Отмена",
"jvm_diagnostic.presentation.phase.diagnostic": "Диагностическое событие",
"jvm_diagnostic.presentation.event.diagnostic": "Диагностический вывод",
"jvm_diagnostic.presentation.event.chunk": "Фрагмент вывода",
"jvm_diagnostic.presentation.event.done": "Выполнение завершено",
"jvm_diagnostic.presentation.transport.agent_bridge": "Agent Bridge",
"jvm_diagnostic.presentation.transport.arthas_tunnel": "Arthas Tunnel",
"jvm_diagnostic.presentation.risk.low": "Низкий риск",
"jvm_diagnostic.presentation.risk.medium": "Средний риск",
"jvm_diagnostic.presentation.risk.high": "Высокий риск",
"jvm_diagnostic.presentation.command_type.observe": "Наблюдение",
"jvm_diagnostic.presentation.command_type.trace": "Трассировка",
"jvm_diagnostic.presentation.command_type.mutating": "Высокий риск",
"jvm_diagnostic.presentation.source.manual": "Ручной ввод",
"jvm_diagnostic.presentation.source.ai_plan": "AI-план",
"jvm_diagnostic.presentation.fallback.unknown": "Неизвестно",
"jvm_diagnostic.presentation.chunk.empty_event": "Пустое событие",
"jvm_diagnostic.history.title": "История аудита",
"jvm_diagnostic.history.description": "Последние команды и состояние выполнения",
"jvm_diagnostic.history.current_session": "Текущий сеанс",
"jvm_diagnostic.history.no_session": "Диагностический сеанс еще не создан",
"jvm_diagnostic.history.recent_records": "Последние записи",
"jvm_diagnostic.history.reason_missing": "Причина диагностики не указана",
"jvm_diagnostic.history.no_records": "История диагностики отсутствует",
"jvm_audit.eyebrow": "Аудит JVM",
"jvm_audit.title": "Аудит изменений JVM",
"jvm_audit.card.records": "Записи аудита",
"jvm_audit.description.current_range": "Текущий диапазон: последние {{limit}} записей",
"jvm_audit.option.last_records": "Последние {{limit}} записей",
"jvm_audit.action.refresh": "Обновить",
"jvm_audit.column.time": "Время",
"jvm_audit.column.mode": "Режим",
"jvm_audit.column.action": "Действие",
"jvm_audit.column.resource": "Ресурс",
"jvm_audit.column.reason": "Причина",
"jvm_audit.column.source": "Источник",
"jvm_audit.column.result": "Результат",
"jvm_audit.source.ai_plan": "С помощью AI",
"jvm_audit.source.manual": "Вручную",
"jvm_audit.error.connection_missing": "Подключение не существует или было удалено.",
"jvm_audit.error.backend_unavailable": "Метод бэкенда JVMListAuditRecords недоступен.",
"jvm_audit.error.load_failed": "Не удалось загрузить записи аудита JVM{{separator}}{{detail}}",
"jvm_audit.empty.load_failed": "Записи аудита сейчас недоступны",
"jvm_audit.empty.no_records": "Нет записей аудита",
"query_editor.placeholder.connection": "Выберите подключение",
"query_editor.placeholder.database": "Выберите базу данных",
"query_editor.max_rows.tooltip": "Максимальное число возвращаемых строк. Для SELECT автоматически добавляется LIMIT, чтобы большие результаты не блокировали интерфейс.",
"query_editor.max_rows.option_500": "Макс. строк: 500",
"query_editor.max_rows.option_1000": "Макс. строк: 1000",
"query_editor.max_rows.option_5000": "Макс. строк: 5000",
"query_editor.max_rows.option_20000": "Макс. строк: 20000",
"query_editor.max_rows.option_unlimited": "Макс. строк: без ограничения",
"query_editor.action.run": "Выполнить",
"query_editor.action.run_with_shortcut": "Выполнить ({{shortcut}})",
"query_editor.action.stop": "Остановить",
"query_editor.action.save": "Сохранить",
"query_editor.action.save_with_shortcut": "Сохранить ({{shortcut}})",
"query_editor.completion.documentation.comment": "Комментарий: {{comment}}",
"query_editor.hover.switch_database_with_shortcut": "{{shortcut}} + щелчок, чтобы переключиться на эту базу данных",
"query_editor.hover.open_table_with_shortcut": "{{shortcut}} + щелчок, чтобы открыть эту таблицу",
"query_editor.hover.open_view_with_shortcut": "{{shortcut}} + щелчок, чтобы открыть это представление",
"query_editor.hover.open_materialized_view_with_shortcut": "{{shortcut}} + щелчок, чтобы открыть это материализованное представление",
"query_editor.hover.open_trigger_with_shortcut": "{{shortcut}} + щелчок, чтобы открыть этот триггер",
"query_editor.hover.open_procedure_with_shortcut": "{{shortcut}} + щелчок, чтобы открыть эту хранимую процедуру",
"query_editor.hover.open_function_with_shortcut": "{{shortcut}} + щелчок, чтобы открыть эту функцию",
"query_editor.object_info.database": "База данных",
"query_editor.object_info.table": "Таблица",
"query_editor.object_info.column": "Столбец",
"query_editor.object_info.materialized_view": "Материализованное представление",
"query_editor.object_info.label.database": "База данных",
"query_editor.object_info.label.table": "Таблица",
"query_editor.object_info.label.type": "Тип",
"query_editor.object_info.label.schema": "Схема",
"query_editor.object_info.label.separator": ": ",
"query_editor.action.more": "Еще",
"query_editor.action.format": "Форматировать",
"query_editor.action.format_sql": "Форматировать SQL",
"query_editor.action.resize_editor": "Перетащите, чтобы изменить высоту",
"query_editor.action.ai_generate_sql": "AI: сгенерировать SQL",
"query_editor.action.ai_explain_sql": "AI: объяснить SQL",
"query_editor.action.ai_optimize_sql": "AI: оптимизировать SQL",
"query_editor.action.ai_generate_sql_menu": "Сгенерировать SQL",
"query_editor.action.ai_explain_sql_menu": "Объяснить SQL",
"query_editor.action.ai_optimize_sql_menu": "Оптимизировать SQL",
"query_editor.action.ai_schema_analysis": "Анализ схемы",
"query_editor.action.show_results_panel": "Показать область результатов",
"query_editor.action.hide_results_panel": "Скрыть область результатов",
"query_editor.action.show_results_panel_with_shortcut": "Показать область результатов ({{shortcut}})",
"query_editor.action.hide_results_panel_with_shortcut": "Скрыть область результатов ({{shortcut}})",
"query_editor.action.results": "Результаты",
"query_editor.transaction.delay.immediate": "Сразу",
"query_editor.transaction.mode.tooltip": "Как в DBeaver: когда SQL-редактор выполняет DML, например INSERT/UPDATE/DELETE/MERGE/REPLACE, GoNavi сначала открывает управляемую транзакцию. В ручном режиме нужно выполнить commit/rollback; в автоматическом режиме после успешного выполнения автоматически запускается COMMIT.",
"query_editor.transaction.mode.manual": "Вручную",
"query_editor.transaction.mode.auto": "Авто",
"query_editor.transaction.status.auto_commit_countdown": "Автоматический commit через {{seconds}}s",
"query_editor.transaction.status.auto_committing": "Выполняется автоматический commit",
"query_editor.transaction.action.commit": "Commit",
"query_editor.transaction.action.commit_with_count": "Commit ({{count}})",
"query_editor.transaction.action.rollback": "Rollback",
"query_editor.transaction.message.pending_managed_transaction": "В SQL-редакторе уже есть незавершённая транзакция. Перед выполнением нового DML-оператора выполните commit или rollback.",
"query_editor.action.show_object_info": "Показать сведения об объекте",
"query_editor.action.rename_query": "Переименовать запрос",
"query_editor.action.export_sql_file": "Экспортировать SQL-файл",
"query_editor.format.keyword_upper": "Ключевые слова в верхнем регистре",
"query_editor.format.keyword_lower": "Ключевые слова в нижнем регистре",
"query_editor.format.restore_last_format": "Вернуть состояние до последнего форматирования",
"query_editor.format.snippet_settings": "Настройки сниппетов...",
"query_editor.format.shortcut_settings": "Настройки сочетаний клавиш...",
"snippet_settings.list.title": "Список сниппетов",
"snippet_settings.action.new": "Новый сниппет",
"snippet_settings.action.reset": "Сбросить к стандартному",
"snippet_settings.action.delete": "Удалить",
"snippet_settings.action.save": "Сохранить",
"snippet_settings.action.close": "Закрыть",
"snippet_settings.tag.builtin": "Встроенный",
"snippet_settings.field.prefix.label": "Префикс",
"snippet_settings.field.prefix.placeholder": "например, sel, ins",
"snippet_settings.field.name.label": "Название",
"snippet_settings.field.name.placeholder": "Отображаемое имя сниппета",
"snippet_settings.field.description.label": "Описание (необязательно)",
"snippet_settings.field.description.placeholder": "Описание, показываемое в деталях автодополнения",
"snippet_settings.field.body.label": "Содержимое сниппета",
"snippet_settings.empty_state": "Выберите сниппет слева для редактирования или нажмите «{{action}}»",
"snippet_settings.syntax_help.label": "Памятка по синтаксису сниппетов (редактируемая)",
"snippet_settings.syntax_help.placeholder": "Подсказка для деталей автодополнения, например значения плейсхолдеров, соглашения по параметрам или примечания",
"snippet_settings.syntax_reference.label": "Справка по синтаксису плейсхолдеров",
"snippet_settings.syntax_reference.first_tabstop": "${1:плейсхолдер} Первая позиция Tab; плейсхолдер служит текстом-подсказкой",
"snippet_settings.syntax_reference.second_tabstop": "${2:значение_по_умолчанию} Вторая позиция Tab; значение по умолчанию можно сразу принять",
"snippet_settings.syntax_reference.final_cursor": "$0 Итоговая позиция курсора",
"snippet_settings.syntax_reference.linked_tabstop": "${1:имя_таблицы} Повтор одного и того же номера синхронизирует редактирование",
"snippet_settings.syntax_reference.builtin_variables": "Встроенные переменные (автоматически подставляются при разворачивании):",
"snippet_settings.syntax_reference.current_date": "${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE} Текущая дата",
"snippet_settings.syntax_reference.current_time": "${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND} Текущее время",
"snippet_settings.syntax_reference.unix_seconds": "${CURRENT_SECONDS_UNIX} Unix-временная метка",
"snippet_settings.syntax_reference.uuid": "${UUID} Случайный UUID",
"snippet_settings.syntax_reference.random": "${RANDOM} 6-значное случайное число",
"snippet_settings.syntax_reference.example": "Пример: SELECT ${1:имя_столбца} FROM ${2:имя_таблицы} WHERE date >= '${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}';$0",
"snippet_settings.confirm.reset.title": "Сбросить к стандартному",
"snippet_settings.confirm.reset.description": "Восстановить исходное содержимое этого встроенного сниппета",
"snippet_settings.confirm.delete.title": "Удалить сниппет",
"snippet_settings.confirm.delete.description": "Вы уверены, что хотите удалить этот сниппет?",
"snippet_settings.message.prefix_required": "Префикс обязателен",
"snippet_settings.message.name_required": "Название обязательно",
"snippet_settings.message.body_required": "Содержимое сниппета обязательно",
"snippet_settings.message.prefix_duplicate": "Префикс \"{{prefix}}\" уже используется другим сниппетом",
"snippet_settings.message.saved": "Сниппет сохранён",
"snippet_settings.message.deleted": "Сниппет удалён",
"snippet_settings.message.reset_default": "Сброшено к стандартному",
"sql_snippets.builtin.sel.name": "Базовый SELECT-запрос",
"sql_snippets.builtin.sel.description": "Шаблон базового SELECT-запроса",
"sql_snippets.builtin.selw.name": "SELECT WHERE",
"sql_snippets.builtin.selw.description": "SELECT-запрос с условием WHERE",
"sql_snippets.builtin.selj.name": "SELECT JOIN",
"sql_snippets.builtin.selj.description": "SELECT-запрос с INNER JOIN",
"sql_snippets.builtin.ins.name": "INSERT",
"sql_snippets.builtin.ins.description": "Шаблон вставки данных INSERT",
"sql_snippets.builtin.upd.name": "UPDATE",
"sql_snippets.builtin.upd.description": "Шаблон обновления данных UPDATE",
"sql_snippets.builtin.del.name": "DELETE",
"sql_snippets.builtin.del.description": "Шаблон удаления данных DELETE",
"sql_snippets.builtin.ct.name": "CREATE TABLE",
"sql_snippets.builtin.ct.description": "Шаблон CREATE TABLE",
"sql_snippets.builtin.alt.name": "ALTER TABLE",
"sql_snippets.builtin.alt.description": "Шаблон ALTER TABLE для добавления столбца",
"sql_snippets.builtin.dro.name": "DROP TABLE",
"sql_snippets.builtin.dro.description": "Шаблон DROP TABLE",
"sql_snippets.builtin.grp.name": "GROUP BY",
"sql_snippets.builtin.grp.description": "Шаблон агрегирующего запроса с GROUP BY",
"sql_snippets.builtin.ljo.name": "LEFT JOIN",
"sql_snippets.builtin.ljo.description": "Шаблон LEFT JOIN",
"sql_snippets.builtin.sub.name": "Подзапрос",
"sql_snippets.builtin.sub.description": "Шаблон подзапроса IN",
"sql_snippets.builtin.lim.name": "LIMIT-запрос",
"sql_snippets.builtin.lim.description": "Шаблон постраничного запроса с LIMIT",
"sql_snippets.builtin.ord.name": "ORDER BY",
"sql_snippets.builtin.ord.description": "Шаблон запроса с сортировкой",
"sql_snippets.builtin.seld.name": "SELECT по дате",
"sql_snippets.builtin.seld.description": "SELECT-запрос с фильтром по дате, автоматически подставляет сегодняшнюю дату",
"sql_snippets.builtin.ctt.name": "CREATE TABLE (со столбцами времени)",
"sql_snippets.builtin.ctt.description": "Шаблон создания таблицы со столбцами времени created_at / updated_at",
"sql_snippets.builtin.inst.name": "INSERT (с временной меткой)",
"sql_snippets.builtin.inst.description": "Шаблон INSERT с автоматической подстановкой текущей временной метки",
"query_editor.message.format_failed": "Ошибка форматирования: возможно, синтаксис SQL неверен.",
"query_editor.message.no_format_restore_snapshot": "Нет сохранённого состояния SQL до форматирования для восстановления.",
"query_editor.message.format_restore_success": "Восстановлено состояние SQL до форматирования.",
"query_editor.message.page_query_failed": "Ошибка запроса страницы: {{error}}",
"query_editor.message.page_query_empty": "Запрос страницы не вернул набор результатов.",
"query_editor.message.refresh_failed": "Не удалось обновить: {{error}}",
"query_editor.message.select_database_first": "Сначала выберите базу данных.",
"query_editor.message.connection_not_found": "Подключение не найдено.",
"query_editor.message.unsupported_source": "Этот источник данных не поддерживает редактор SQL-запросов. Используйте соответствующую страницу.",
"query_editor.message.no_executable_sql": "Нет SQL для выполнения.",
"query_editor.message.no_selectable_sql": "Нет SQL-инструкции для выбора.",
"query_editor.message.statement_failed_prefix": "Ошибка в инструкции {{index}}: ",
"query_editor.message.execution_success": "Выполнение успешно.",
"query_editor.message.execution_multi_success": "Выполнено инструкций: {{statements}}, создано наборов результатов: {{results}}.",
"query_editor.message.execution_result_sets_success": "Выполнение завершено, создано наборов результатов: {{results}}.",
"query_editor.message.execution_failed_with_error": "Ошибка выполнения запроса: {{error}}",
"query_editor.sql_error.unknown": "Неизвестная ошибка",
"query_editor.sql_error.wrapper.semantic_line": "Смысл: {{label}}. {{explanation}}",
"query_editor.sql_error.wrapper.suggestion_line": "Рекомендация: {{suggestion}}",
"query_editor.sql_error.wrapper.raw_line": "Исходная ошибка: {{error}}",
"query_editor.sql_error.rule.syntax.label": "Синтаксическая ошибка SQL",
"query_editor.sql_error.rule.syntax.explanation": "Обычно причина в ключевых словах, запятых, скобках, кавычках, порядке инструкций или несовпадении текущего SQL-диалекта.",
"query_editor.sql_error.rule.syntax.suggestion": "Проверьте фрагмент SQL рядом с указанной позицией и убедитесь, что тип текущего источника данных соответствует SQL-диалекту.",
"query_editor.sql_error.rule.object_missing.label": "Таблица или объект не существует",
"query_editor.sql_error.rule.object_missing.explanation": "SQL ссылается на таблицу, представление, последовательность или другой объект базы данных, которого нет в текущей базе или schema.",
"query_editor.sql_error.rule.object_missing.suggestion": "Проверьте имя объекта, регистр, префикс schema/database и правильность выбранной для запроса базы данных.",
"query_editor.sql_error.rule.column_missing.label": "Столбец не существует",
"query_editor.sql_error.rule.column_missing.explanation": "SQL ссылается на столбец, которого нет в наборе результатов, имя отличается по написанию или столбца нет в текущей таблице.",
"query_editor.sql_error.rule.column_missing.suggestion": "Проверьте имена столбцов, алиасы, регистр, алиасы таблиц и принадлежность столбца текущему объекту FROM/JOIN.",
"query_editor.sql_error.rule.unique_conflict.label": "Конфликт уникального ограничения или первичного ключа",
"query_editor.sql_error.rule.unique_conflict.explanation": "Вставляемые или обновляемые данные дублируют существующее значение в уникальном индексе, первичном ключе или уникальном ограничении.",
"query_editor.sql_error.rule.unique_conflict.suggestion": "Проверьте дублирующееся значение ключа; при необходимости используйте UPDATE или UPSERT либо измените значение уникального ключа.",
"query_editor.sql_error.rule.permission_denied.label": "Недостаточно прав",
"query_editor.sql_error.rule.permission_denied.explanation": "У текущей учетной записи базы данных нет прав на выполнение этого SQL или доступ к связанным объектам.",
"query_editor.sql_error.rule.permission_denied.suggestion": "Проверьте права учетной записи, права на schema, ограничения подключения только для чтения и необходимость выдачи прав администратором.",
"query_editor.sql_error.rule.type_mismatch.label": "Несоответствие типа или формата данных",
"query_editor.sql_error.rule.type_mismatch.explanation": "Записываемое, сравниваемое или преобразуемое значение не соответствует целевому столбцу или формату выражения.",
"query_editor.sql_error.rule.type_mismatch.suggestion": "Проверьте даты, числа, булевы значения, enum-значения, неявные преобразования и типы столбцов; при необходимости используйте явный CAST.",
"query_editor.sql_error.rule.constraint_failed.label": "Ошибка проверки ограничения",
"query_editor.sql_error.rule.constraint_failed.explanation": "Данные нарушают внешний ключ, NOT NULL, CHECK-ограничение или правило ссылочной целостности.",
"query_editor.sql_error.rule.constraint_failed.suggestion": "Проверьте связанные записи родительской таблицы, обязательные поля, условия CHECK и правильность порядка записи.",
"query_editor.sql_error.rule.timeout_or_canceled.label": "Запрос превысил таймаут или был отменен",
"query_editor.sql_error.rule.timeout_or_canceled.explanation": "SQL выполнялся дольше лимита таймаута или выполнение было отменено вручную.",
"query_editor.sql_error.rule.timeout_or_canceled.suggestion": "Проверьте план выполнения SQL, условия фильтрации и индексы; при необходимости сузьте диапазон запроса или измените таймаут.",
"query_editor.sql_error.rule.connection_or_auth.label": "Ошибка подключения к базе данных или аутентификации",
"query_editor.sql_error.rule.connection_or_auth.explanation": "Клиент не смог подключиться к базе данных, либо есть проблема с учетными данными, сетью или состоянием экземпляра.",
"query_editor.sql_error.rule.connection_or_auth.suggestion": "Проверьте хост, порт, имя пользователя, пароль, доступность сети, proxy/SSH-туннель и состояние службы базы данных.",
"query_editor.sql_error.rule.generic.label": "Ошибка выполнения в базе данных",
"query_editor.sql_error.rule.generic.explanation": "База данных вернула ошибку выполнения, но более конкретный тип ошибки не был определен.",
"query_editor.sql_error.rule.generic.suggestion": "Продолжайте диагностику по исходной ошибке, фрагменту SQL и текущему диалекту базы данных.",
"query_editor.message.cancel_no_running": "Нет выполняющегося запроса для отмены.",
"query_editor.message.cancel_success": "Запрос отменен.",
"query_editor.message.cancel_failed": "Не удалось отменить запрос: {{error}}",
"query_editor.message.read_only_no_safe_locator": "Первичный ключ или подходящий уникальный индекс не обнаружен, поэтому изменения нельзя безопасно зафиксировать.",
"query_editor.message.read_only_index_metadata_unavailable": "Не удалось загрузить метаданные уникального индекса, поэтому изменения нельзя безопасно зафиксировать.",
"query_editor.message.read_only_table_locator_metadata_unavailable": "Не удалось загрузить метаданные первичного ключа/уникального индекса для {{table}}, поэтому изменения нельзя безопасно зафиксировать.",
"query_editor.message.read_only_system_metadata": "Результаты запросов к системным метаданным остаются доступными только для чтения.",
"query_editor.message.read_only_oracle_rowid_injection_unavailable": "В Oracle-запросе используется *, поэтому столбец-локатор ROWID не удалось автоматически внедрить. Результат остается только для чтения.",
"query_editor.message.read_only_warning_with_detail": "Результаты запроса остаются доступными только для чтения: {{detail}}",
"query_editor.message.object_info_target_not_found": "Текущий курсор не указывает на распознанную таблицу или колонку.",
"query_editor.message.insert_success": "Код вставлен в текущую позицию курсора.",
"query_editor.message.append_success": "Код добавлен.",
"query_editor.message.saved": "Запрос сохранен.",
"query_editor.message.sql_file_saved": "SQL-файл сохранен.",
"query_editor.message.save_sql_file_failed": "Не удалось сохранить SQL-файл: {{error}}",
"query_editor.message.save_query_failed": "Не удалось сохранить запрос: {{error}}",
"query_editor.message.export_sql_file_success": "Файл SQL экспортирован.",
"query_editor.message.export_sql_file_failed": "Не удалось экспортировать файл SQL: {{error}}",
"query_editor.message.save_first_before_rename": "Сначала сохраните запрос, а затем переименуйте его.",
"query_editor.message.renamed": "Запрос переименован.",
"query_editor.empty_state.title": "Ожидание выполнения SQL",
"query_editor.empty_state.description": "Запустите запрос, и результаты отобразятся ниже в новой таблице данных.",
"query_editor.result.tab_title": "Результат {{index}} ({{count}})",
"query_editor.result.tab_title_success": "Результат {{index}} ✓",
"query_editor.result.close": "Закрыть результат",
"query_editor.result.execution_success": "Выполнение успешно",
"query_editor.result.affected_rows": "Затронуто строк: {{count}}",
"query_editor.result.execution_failed": "Ошибка выполнения",
"query_editor.result.ai_diagnose": "AI-диагностика",
"query_editor.results_panel.tooltip.hide": "Скрыть область результатов",
"query_editor.results_panel.tooltip.hide_with_shortcut": "Скрыть область результатов ({{shortcut}})",
"query_editor.results_panel.menu.close_other": "Закрыть другие вкладки",
"query_editor.results_panel.menu.close_left": "Закрыть вкладки слева",
"query_editor.results_panel.menu.close_right": "Закрыть вкладки справа",
"query_editor.results_panel.menu.close_all": "Закрыть все вкладки",
"query_editor.results_panel.action.hide": "Скрыть",
"query_editor.results_panel.aria.hide": "Скрыть область результатов",
"query_editor.results_panel.tab.message": "Сообщение {{index}}",
"query_editor.results_panel.tab.result": "Результат {{index}}",
"query_editor.results_panel.message.title": "Сообщения выполнения",
"query_editor.results_panel.panel.title": "Область результатов",
"query_editor.save_modal.title": "Сохранить запрос",
"query_editor.save_modal.rename_title": "Переименовать запрос",
"query_editor.save_modal.rename_ok": "Переименовать",
"query_editor.save_modal.name_label": "Имя запроса",
"query_editor.save_modal.name_required": "Введите имя запроса.",
"query_editor.save_modal.name_placeholder": "Например: запросить всех пользователей",
"query_editor.save_modal.unnamed": "Запрос без имени",
"query_editor.ai_prompt.default_source": "База данных",
"query_editor.ai_prompt.default_database": "По умолчанию",
"query_editor.ai_prompt.context": "Контекст: {{type}} {{name}}, выбранная база данных {{database}}.\n",
"query_editor.ai_prompt.generate": "Сгенерируй запрос на основе текущей схемы базы данных.",
"query_editor.ai_prompt.explain": "Объясни логику выполнения этой SQL-инструкции:\n```sql\n{{sql}}\n```",
"query_editor.ai_prompt.optimize": "Проанализируй эту SQL-инструкцию на проблемы производительности и предложи оптимизацию:\n```sql\n{{sql}}\n```",
"query_editor.ai_prompt.schema": "Проанализируй текущую схему базы данных и предложи улучшения производительности и дизайна.",
"query_editor.ai_prompt.diagnose": "При выполнении этого SQL возникла ошибка:\n```sql\n{{sql}}\n```\n\nБаза данных вернула ошибку:\n```text\n{{error}}\n```\n\nПроанализируй причину и предложи исправление.",
"query_editor.slash_command.query.label": "Запрос на естественном языке",
"query_editor.slash_command.query.description": "Опишите, что нужно запросить",
"query_editor.slash_command.query.prompt": "Напиши SQL-запрос для этого требования:",
"query_editor.slash_command.sql.label": "Сгенерировать SQL",
"query_editor.slash_command.sql.description": "Описать требование и сгенерировать инструкцию",
"query_editor.slash_command.sql.prompt": "Сгенерируй SQL для этого требования:",
"query_editor.slash_command.explain.label": "Объяснить SQL",
"query_editor.slash_command.explain.description": "Объяснить логику выбранного SQL",
"query_editor.slash_command.explain.prompt": "Объясни логику выполнения этой SQL-инструкции:\n```sql\n{{sql}}\n```",
"query_editor.slash_command.optimize.label": "Анализ оптимизации",
"query_editor.slash_command.optimize.description": "Проанализировать узкие места производительности SQL",
"query_editor.slash_command.optimize.prompt": "Проанализируй эту SQL-инструкцию на проблемы производительности и предложи оптимизацию:\n```sql\n{{sql}}\n```",
"query_editor.slash_command.schema.label": "Ревью дизайна таблиц",
"query_editor.slash_command.schema.description": "Проверить качество структуры таблиц",
"query_editor.slash_command.schema.prompt": "Проверь дизайн связанных таблиц, включая типы полей, нормализацию, индексы и предложения по улучшению.",
"query_editor.slash_command.index.label": "Рекомендации по индексам",
"query_editor.slash_command.index.description": "Рекомендовать стратегию индексов",
"query_editor.slash_command.index.prompt": "На основе текущей структуры таблиц и типичных сценариев запросов предложи стратегию индексов и при необходимости добавь SQL.",
"query_editor.slash_command.diff.label": "Сравнение таблиц",
"query_editor.slash_command.diff.description": "Сравнить различия таблиц и создать изменения",
"query_editor.slash_command.diff.prompt": "Сравни структуры двух таблиц и сгенерируй ALTER-инструкции для миграции со старой версии на новую.",
"query_editor.slash_command.mock.label": "Тестовые данные",
"query_editor.slash_command.mock.description": "Сгенерировать тестовые INSERT-данные",
"query_editor.slash_command.mock.prompt": "Сгенерируй 10 осмысленных тестовых INSERT-строк для связанной таблицы.",
"query_editor.completion.detail.aggregate": "Агрегатная функция",
"query_editor.completion.detail.string": "Строковая функция",
"query_editor.completion.detail.math": "Математическая функция",
"query_editor.completion.detail.date_time": "Функция даты и времени",
"query_editor.completion.detail.conditional": "Условная функция",
"query_editor.completion.detail.conversion": "Функция преобразования типа",
"query_editor.completion.detail.json": "JSON-функция",
"query_editor.completion.detail.utility": "Служебная функция",
"query_editor.completion.detail.info": "Информационная функция",
"query_editor.completion.detail.window": "Оконная функция",
"query_editor.completion.detail.sql_function": "SQL-функция",
"query_editor.completion.detail.aggregate_count": "Агрегат - подсчет",
"query_editor.completion.detail.string_concat": "Строка - конкатенация",
"query_editor.completion.detail.math_abs": "Математика - абсолютное значение",
"query_editor.completion.detail.date_now": "Дата - текущая дата и время",
"query_editor.completion.detail.conditional_if": "Условие - IF",
"query_editor.completion.detail.conversion_cast": "Преобразование - приведение типа",
"query_editor.completion.detail.json_extract": "JSON - извлечь значение",
"query_editor.completion.detail.crypto_md5": "Хеш - MD5",
"query_editor.completion.detail.info_database": "Информация - текущая база данных",
"query_editor.completion.detail.window_row_number": "Окно - номер строки",
"query_editor.completion.detail.modifier_distinct": "Модификатор - уникальные значения",
"query_editor.completion.action.absolute_value": "абсолютное значение",
"query_editor.completion.action.approximate_distinct": "приблизительные уникальные значения",
"query_editor.completion.action.approximate_distinct_count": "приблизительный подсчет уникальных значений",
"query_editor.completion.action.approximate_percentile": "приблизительный перцентиль",
"query_editor.completion.action.approximate_quantile": "приблизительный квантиль",
"query_editor.completion.action.array_aggregation": "агрегация массива",
"query_editor.completion.action.array_length": "длина массива",
"query_editor.completion.action.average": "среднее",
"query_editor.completion.action.bitmap_aggregation": "агрегация Bitmap",
"query_editor.completion.action.bitmap_construction": "построить Bitmap",
"query_editor.completion.action.bitmap_count": "количество Bitmap",
"query_editor.completion.action.boolean_and_aggregation": "булева AND-агрегация",
"query_editor.completion.action.boolean_or_aggregation": "булева OR-агрегация",
"query_editor.completion.action.character_length": "длина строки",
"query_editor.completion.action.concat_with_separator": "конкатенация с разделителем",
"query_editor.completion.action.concatenation": "конкатенация",
"query_editor.completion.action.condition_mapping": "сопоставление условий",
"query_editor.completion.action.conditional_check": "проверка условия",
"query_editor.completion.action.count": "подсчет",
"query_editor.completion.action.current_database": "текущая база данных",
"query_editor.completion.action.current_date": "текущая дата",
"query_editor.completion.action.current_date_time": "текущая дата и время",
"query_editor.completion.action.current_time": "текущее время",
"query_editor.completion.action.current_timestamp": "текущая временная метка",
"query_editor.completion.action.current_user": "текущий пользователь",
"query_editor.completion.action.database_current_time": "текущее время базы данных",
"query_editor.completion.action.date_addition": "прибавление даты",
"query_editor.completion.action.date_conversion": "преобразовать в дату",
"query_editor.completion.action.date_difference": "разница дат",
"query_editor.completion.action.date_field_extraction": "извлечь поле даты",
"query_editor.completion.action.date_formatting": "форматирование даты",
"query_editor.completion.action.date_subtraction": "вычитание даты",
"query_editor.completion.action.date_truncation": "усечение даты",
"query_editor.completion.action.date_value": "дата",
"query_editor.completion.action.datetime_conversion": "преобразовать в дату и время",
"query_editor.completion.action.datetime_value": "дата и время",
"query_editor.completion.action.decimal_truncation": "усечь десятичные знаки",
"query_editor.completion.action.dense_rank": "плотный ранг",
"query_editor.completion.action.distinct_array_aggregation": "агрегация уникальных массивов",
"query_editor.completion.action.e_power": "степень числа e",
"query_editor.completion.action.elapsed_time": "прошедшее время",
"query_editor.completion.action.epoch_seconds": "секунды эпохи",
"query_editor.completion.action.exact_distinct": "точные уникальные значения",
"query_editor.completion.action.first_non_null": "вернуть первое не-NULL значение",
"query_editor.completion.action.first_value": "первое значение",
"query_editor.completion.action.format_as_text": "форматировать как текст",
"query_editor.completion.action.group_concatenation": "групповая конкатенация",
"query_editor.completion.action.guid_generation": "сгенерировать GUID",
"query_editor.completion.action.hexadecimal": "шестнадцатеричное значение",
"query_editor.completion.action.high_precision_current_time": "текущее время высокой точности",
"query_editor.completion.action.hll_aggregation": "HLL-агрегация",
"query_editor.completion.action.hll_hash": "HLL-хеш",
"query_editor.completion.action.instant_rate_of_change": "мгновенная скорость изменения",
"query_editor.completion.action.int64_conversion": "преобразовать в Int64",
"query_editor.completion.action.interpolation": "интерполяция",
"query_editor.completion.action.json_string_extraction": "извлечение JSON-строки",
"query_editor.completion.action.json_unquote": "убрать кавычки JSON",
"query_editor.completion.action.json_value_extraction": "извлечение JSON-значения",
"query_editor.completion.action.json_value_set": "задать JSON-значение",
"query_editor.completion.action.jsonb_path_extraction": "извлечение пути JSONB",
"query_editor.completion.action.julian_day": "юлианский день",
"query_editor.completion.action.last_insert_id": "последний ID вставки",
"query_editor.completion.action.last_row": "последняя строка",
"query_editor.completion.action.last_value": "последнее значение",
"query_editor.completion.action.least_squares": "метод наименьших квадратов",
"query_editor.completion.action.left_padding": "дополнить слева",
"query_editor.completion.action.left_space_trimming": "убрать пробелы слева",
"query_editor.completion.action.left_substring": "извлечь слева",
"query_editor.completion.action.length": "длина",
"query_editor.completion.action.list_aggregation": "агрегация списка",
"query_editor.completion.action.list_unnest": "развернуть список",
"query_editor.completion.action.log_base_10": "логарифм по основанию 10",
"query_editor.completion.action.log_base_2": "логарифм по основанию 2",
"query_editor.completion.action.logarithm": "логарифм",
"query_editor.completion.action.lowercase": "преобразовать в нижний регистр",
"query_editor.completion.action.maximum": "максимум",
"query_editor.completion.action.md5_hash": "MD5-хеш",
"query_editor.completion.action.minimum": "минимум",
"query_editor.completion.action.modulo": "остаток от деления",
"query_editor.completion.action.month_addition": "добавить месяцы",
"query_editor.completion.action.month_difference": "разница месяцев",
"query_editor.completion.action.month_end_date": "дата конца месяца",
"query_editor.completion.action.next_row": "следующая строка",
"query_editor.completion.action.null_branch": "ветвь NULL",
"query_editor.completion.action.null_if_equal": "вернуть NULL при равенстве",
"query_editor.completion.action.null_replacement": "замена NULL",
"query_editor.completion.action.number_conversion": "преобразовать в число",
"query_editor.completion.action.number_formatting": "форматирование числа",
"query_editor.completion.action.position_lookup": "найти позицию",
"query_editor.completion.action.power_operation": "возведение в степень",
"query_editor.completion.action.previous_row": "предыдущая строка",
"query_editor.completion.action.quantile": "квантиль",
"query_editor.completion.action.random_number": "случайное число",
"query_editor.completion.action.rank": "ранг",
"query_editor.completion.action.rate_of_change": "скорость изменения",
"query_editor.completion.action.regex_match": "совпадение по регулярному выражению",
"query_editor.completion.action.regex_replace": "замена по регулярному выражению",
"query_editor.completion.action.replacement": "замена",
"query_editor.completion.action.right_padding": "дополнить справа",
"query_editor.completion.action.right_space_trimming": "убрать пробелы справа",
"query_editor.completion.action.right_substring": "извлечь справа",
"query_editor.completion.action.round_down": "округлить вниз",
"query_editor.completion.action.round_up": "округлить вверх",
"query_editor.completion.action.rounding": "округление",
"query_editor.completion.action.row_number": "номер строки",
"query_editor.completion.action.set_lookup": "поиск по множеству",
"query_editor.completion.action.sha1_hash": "SHA1-хеш",
"query_editor.completion.action.sha2_hash": "SHA2-хеш",
"query_editor.completion.action.space_trimming": "убрать пробелы",
"query_editor.completion.action.spread": "разброс",
"query_editor.completion.action.sql_literal": "SQL-литерал",
"query_editor.completion.action.square_root": "квадратный корень",
"query_editor.completion.action.string_aggregation": "агрегация строк",
"query_editor.completion.action.string_conversion": "преобразовать в строку",
"query_editor.completion.action.string_repetition": "повторить строку",
"query_editor.completion.action.string_reversal": "обратить строку",
"query_editor.completion.action.string_to_date": "преобразовать строку в дату",
"query_editor.completion.action.string_to_timestamp": "преобразовать строку во временную метку",
"query_editor.completion.action.struct_construction": "построить структуру",
"query_editor.completion.action.substring_extraction": "извлечение подстроки",
"query_editor.completion.action.sum": "сумма",
"query_editor.completion.action.time_difference": "разница времени",
"query_editor.completion.action.time_value": "время",
"query_editor.completion.action.time_weighted_average": "среднее, взвешенное по времени",
"query_editor.completion.action.timestamp_difference": "разница временных меток",
"query_editor.completion.action.truncate_date_or_number": "усечь дату или число",
"query_editor.completion.action.try_conversion": "попытаться преобразовать",
"query_editor.completion.action.type_conversion": "преобразование типа",
"query_editor.completion.action.unix_time_to_datetime": "преобразовать Unix-время в дату и время",
"query_editor.completion.action.unix_timestamp": "Unix-временная метка",
"query_editor.completion.action.uppercase": "преобразовать в верхний регистр",
"query_editor.completion.action.uuid_generation": "сгенерировать UUID",
"query_editor.completion.action.value_formatting": "форматирование значения",
"query_editor.completion.action.version": "версия",
"data_grid.action.apply": "Применить",
"data_grid.ai_prompt.analyze_page": "Проанализируй следующие данные результата запроса (первые {{count}} строк-образцов):\n```json\n{{json}}\n```\n\nОпредели особенности данных, найди закономерности или дай бизнес-выводы.",
"data_grid.batch_fill.set_null": "Установить NULL",
"data_grid.batch_fill.title": "Массовое заполнение ({{count}} ячеек)",
"data_grid.batch_fill.value_placeholder": "Введите значение для заполнения",
"data_grid.cell_editor.now": "Сейчас",
"data_grid.cell_editor.title": "Редактировать ячейку",
"data_grid.cell_editor.title_with_column": "Редактировать ячейку: {{column}}",
"data_grid.column.comment_tooltip": "Комментарий: {{comment}}",
"data_grid.column.drag_tooltip": "Перетащите, чтобы изменить порядок столбцов",
"data_grid.column.foreign_key_jump_title": "Перейти к таблице внешнего ключа: {{tableName}}",
"data_grid.column.foreign_key_tooltip": "Внешний ключ: {{target}}",
"data_grid.column.resize_tooltip": "Перетащите, чтобы изменить ширину столбца; двойной щелчок подгонит автоматически",
"data_grid.column.type_tooltip": "Тип: {{type}}",
"data_grid.column_quick_find.placeholder": "Перейти к столбцу...",
"data_grid.column_quick_find.tooltip": "Введите имя столбца, затем нажмите Enter или кнопку перехода, чтобы перейти к этому столбцу",
"data_grid.ai_insight.prompt": "Проанализируй следующие результаты запроса (первые {{count}} строк примера):\n```json\n{{json}}\n```\n\nПроанализируй характеристики данных, найди закономерности или предложи бизнес-инсайты.",
"data_grid.datetime_picker.now": "Сейчас",
"data_grid.column_settings.column_visibility": "Видимость столбцов",
"data_grid.column_settings.display_settings": "Настройки отображения",
"data_grid.column_settings.field_info": "Информация о поле",
"data_grid.column_settings.hide_all": "Скрыть все",
"data_grid.column_settings.remember_column_order": "Запомнить пользовательский порядок столбцов",
"data_grid.column_settings.remember_hidden_columns": "Запомнить настройки скрытых столбцов",
"data_grid.column_settings.reset_hidden": "Сбросить скрытые столбцы",
"data_grid.column_settings.reset_hidden_success": "Все столбцы снова отображаются",
"data_grid.column_settings.reset_order": "Сбросить порядок",
"data_grid.column_settings.reset_order_success": "Порядок столбцов по умолчанию восстановлен",
"data_grid.column_settings.search_columns_placeholder": "Поиск по именам столбцов...",
"data_grid.column_settings.show_all": "Показать все",
"data_grid.column_settings.show_comments": "Показывать комментарии столбцов в заголовке",
"data_grid.column_settings.show_types": "Показывать типы столбцов в заголовке",
"data_grid.aria.row_number": "Номер строки",
"data_grid.context_menu.auto_fit_column": "Подогнать ширину столбца по содержимому",
"data_grid.context_menu.clear_column_sort": "Сбросить сортировку этого поля",
"data_grid.context_menu.column_display_section": "Отображение поля",
"data_grid.context_menu.column_no_comment": "Нет комментария",
"data_grid.context_menu.column_unknown_type": "Неизвестный тип",
"data_grid.context_menu.column_unnamed_field": "Поле без имени",
"data_grid.context_menu.copy_as_csv": "Копировать как CSV",
"data_grid.context_menu.copy_as_delete": "Копировать как DELETE",
"data_grid.context_menu.copy_as_insert": "Копировать как INSERT",
"data_grid.context_menu.copy_as_json": "Копировать как JSON",
"data_grid.context_menu.copy_as_markdown": "Копировать как Markdown",
"data_grid.context_menu.copy_as_update": "Копировать как UPDATE",
"data_grid.context_menu.copy_column_data": "Копировать данные столбца",
"data_grid.context_menu.copy_field_name": "Копировать имя поля",
"data_grid.context_menu.copy_row_data": "Копировать данные строки",
"data_grid.context_menu.current_marker": "Текущий",
"data_grid.context_menu.current_row": "Текущая строка",
"data_grid.context_menu.current_cell": "Текущая ячейка",
"data_grid.context_menu.edit_section": "Редактировать",
"data_grid.context_menu.edit_row": "Редактировать эту строку",
"data_grid.context_menu.copy_row_as_new": "Копировать эту строку как новую",
"data_grid.context_menu.undo_cell_change": "Отменить изменение этой ячейки",
"data_grid.context_menu.export_as_csv": "Экспортировать как CSV",
"data_grid.context_menu.export_as_excel": "Экспортировать как Excel",
"data_grid.context_menu.export_as_html": "Экспортировать как HTML",
"data_grid.context_menu.export_as_json": "Экспортировать как JSON",
"data_grid.context_menu.export_selected": "Экспортировать выбранные данные",
"data_grid.context_menu.fill_to_selected_rows": "Заполнить выбранные строки ({{count}})",
"data_grid.context_menu.hide_column": "Скрыть это поле",
"data_grid.context_menu.hide_column_comment": "Скрыть комментарий поля",
"data_grid.context_menu.hide_column_type": "Скрыть тип поля",
"data_grid.context_menu.paste_copied_columns": "Вставить скопированные столбцы (с теми же именами)",
"data_grid.context_menu.paste_row_as_new": "Вставить как новую строку",
"data_grid.context_menu.paste_row_as_new_count": "Вставить как новую строку ({{count}})",
"data_grid.context_menu.show_column_comment": "Показать комментарий поля",
"data_grid.context_menu.show_column_type": "Показать тип поля",
"data_grid.context_menu.sort_ascending": "Сортировать по возрастанию",
"data_grid.context_menu.sort_descending": "Сортировать по убыванию",
"data_grid.context_menu.sort_section": "Сортировка",
"data_grid.copy_sql.error.missing_safe_where": "В текущем наборе результатов нет первичного или уникального ключа, который безопасно определяет строку, и он не покрывает все столбцы таблицы, поэтому условие WHERE нельзя сформировать.",
"data_grid.copy_sql.error.missing_table_name": "Текущий набор результатов не связан с явным именем таблицы, поэтому {{mode}} SQL нельзя сформировать.",
"data_grid.copy_sql.error.no_copyable_fields": "В текущем наборе результатов нет полей, которые можно скопировать, поэтому SQL нельзя сформировать.",
"data_grid.data_panel.click_cell_description": "Щелкните ячейку таблицы, чтобы просмотреть данные полностью",
"data_grid.data_panel.click_cell_title": "Щелкните ячейку для просмотра данных",
"data_grid.data_panel.title": "Предпросмотр данных",
"data_grid.ddl.copy": "Копировать DDL",
"data_grid.ddl.layout_bottom": "Снизу",
"data_grid.ddl.layout_side": "Боковая панель",
"data_grid.ddl.loading": "Загрузка DDL...",
"data_grid.ddl.reload": "Перезагрузить",
"data_grid.ddl.sidebar_aria": "Боковая панель DDL таблицы",
"data_grid.ddl.view": "Показать DDL",
"data_grid.error_boundary.description": "При отображении таблицы данных произошла ошибка. Возможно, формат данных недопустим.",
"data_grid.error_boundary.retry": "Повторить",
"data_grid.error_boundary.title": "Ошибка отображения",
"data_grid.export.all_data": "Экспортировать все данные",
"data_grid.export.all_rows": "Экспорт всех строк ({{count}})",
"data_grid.export.all_rows_requery": "Экспортировать всё (повторный запрос)",
"data_grid.export.current_page": "Экспортировать текущую страницу ({{count}} строк)",
"data_grid.export.current_page_rows": "Экспорт текущей страницы ({{count}} строк)",
"data_grid.export.group_filtered_results": "Отфильтрованные результаты",
"data_grid.export.group_full_table": "Вся таблица",
"data_grid.export.no_selection_prompt": "Строки не выбраны. Выберите область экспорта:",
"data_grid.export.options_title": "Параметры экспорта",
"data_grid.export.query_result_title": "Экспорт результатов запроса",
"data_grid.export.scope_prompt": "Выберите область экспорта:",
"data_grid.export.selected_rows": "Экспорт выбранных строк ({{count}})",
"data_grid.table_fallback.query_result": "Результат запроса",
"data_grid.metadata_view.fields_badge": "Поля",
"data_grid.metadata_view.er_table_badge": "Таблица",
"data_grid.metadata_view.er_field_badge": "Поле",
"data_grid.metadata_view.field_count": "{{count}} полей",
"data_grid.metadata_view.column_name": "Имя",
"data_grid.metadata_view.column_type": "Тип",
"data_grid.metadata_view.default_value": "Значение по умолчанию",
"data_grid.metadata_view.comment": "Комментарий",
"data_grid.filter.add_condition": "Добавить условие",
"data_grid.filter.add_sort": "Добавить сортировку",
"data_grid.filter.apply": "Применить",
"data_grid.filter.apply_where": "Применить WHERE",
"data_grid.filter.clear": "Очистить",
"data_grid.filter.custom_where_placeholder": "Введите пользовательское выражение WHERE (без WHERE), например: status IN ('A','B')",
"data_grid.filter.disable_all": "Отключить все",
"data_grid.filter.enable_all": "Включить все",
"data_grid.filter.enabled": "Включено",
"data_grid.filter.end_value_placeholder": "Конечное значение",
"data_grid.filter.first_condition": "Первое",
"data_grid.filter.invalid_quick_where": "Условие WHERE не может содержать точки с запятой или SQL-комментарии",
"data_grid.filter.list_values_placeholder": "Разделяйте несколько значений запятыми или переносами строк",
"data_grid.filter.logic.and": "И (AND)",
"data_grid.filter.logic.or": "Или (OR)",
"data_grid.filter.mongodb_query_placeholder": "Введите объект MongoDB-запроса в JSON, например {\"status\":\"A\"}",
"data_grid.filter.no_value_placeholder": "Значение не требуется",
"data_grid.filter.op.between": "Между",
"data_grid.filter.op.contains": "Содержит",
"data_grid.filter.op.custom": "[Пользовательское]",
"data_grid.filter.op.ends_with": "Заканчивается на",
"data_grid.filter.op.in_list": "В списке",
"data_grid.filter.op.is_empty": "Пусто",
"data_grid.filter.op.is_not_empty": "Не пусто",
"data_grid.filter.op.is_not_null": "Не NULL",
"data_grid.filter.op.is_null": "NULL",
"data_grid.filter.op.not_between": "Не между",
"data_grid.filter.op.not_contains": "Не содержит",
"data_grid.filter.op.not_ends_with": "Не заканчивается на",
"data_grid.filter.op.not_in_list": "Не в списке",
"data_grid.filter.op.not_starts_with": "Не начинается с",
"data_grid.filter.op.starts_with": "Начинается с",
"data_grid.filter.quick_where_placeholder": "Введите условие после WHERE, например status = 1 AND name LIKE 'A%'",
"data_grid.filter.search_field_placeholder": "Поиск по именам полей",
"data_grid.filter.select_sort_field_placeholder": "Выберите поле сортировки",
"data_grid.filter.sort_asc": "По возрастанию",
"data_grid.filter.sort_desc": "По убыванию",
"data_grid.filter.sort_label": "Сортировка",
"data_grid.filter.start_value_placeholder": "Начальное значение",
"data_grid.filter.suggestion.column": "Столбец",
"data_grid.filter.suggestion.keyword": "Ключевое слово",
"data_grid.filter.suggestion.operator": "Оператор",
"data_grid.filter.then_label": "Затем",
"data_grid.json_editor.apply_changes": "Применить изменения",
"data_grid.json_editor.description": "Редактируйте в текущем порядке результатов. В режиме JSON нельзя добавлять или удалять записи. Для этого используйте табличный режим.",
"data_grid.json_editor.format": "Форматировать JSON",
"data_grid.json_editor.invalid_format": "Недопустимый формат JSON: {{error}}",
"data_grid.json_editor.title": "Редактировать набор результатов JSON",
"data_grid.message.cell_edit_mode_entered": "Режим редактирования ячеек включен. Перетаскивайте, чтобы выбрать несколько ячеек.",
"data_grid.message.cell_edit_mode_exited": "Режим редактирования ячеек отключен.",
"data_grid.message.change_set_build_failed": "Не удалось построить набор изменений",
"data_grid.message.change_set_build_failed_detail": "Не удалось построить набор изменений: {{detail}}",
"data_grid.message.column_order_reset": "Порядок столбцов по умолчанию восстановлен",
"data_grid.message.column_quick_find_not_found": "Столбец поля не найден: {{query}}",
"data_grid.message.column_quick_find_not_rendered": "Столбец поля \"{{column}}\" сейчас не отрисован, поэтому его нельзя найти.",
"data_grid.message.column_visibility_reset": "Все столбцы восстановлены",
"data_grid.message.auto_commit_failed": "Автофиксация не удалась: {{detail}}",
"data_grid.message.auto_commit_success": "Автофиксация выполнена",
"data_grid.message.commit_failed": "Не удалось зафиксировать изменения: {{detail}}",
"data_grid.message.rollback_failed": "Не удалось откатить транзакцию: {{detail}}",
"data_grid.message.undo_added_row_hint": "Для новых строк используйте удаление выбранных строк или откат всей таблицы.",
"data_grid.message.undo_cell_original_missing": "Исходные данные этой ячейки не найдены, поэтому отменить изменение нельзя.",
"data_grid.message.undo_cell_success": "Изменение ячейки отменено",
"data_grid.message.copied_columns": "Скопировано столбцов: {{count}}. Их можно вставить в целевые строки.",
"data_grid.message.copied_rows": "Скопировано строк: {{count}}. Их можно вставить как новые строки.",
"data_grid.message.copied_to_clipboard": "Скопировано в буфер обмена",
"data_grid.message.copy_columns_first": "Сначала скопируйте значения столбцов",
"data_grid.message.copy_columns_same_row_only": "При копировании значений столбцов выбирайте ячейки только из одной строки",
"data_grid.message.copy_rows_first": "Сначала скопируйте строки",
"data_grid.message.copy_sql_not_supported": "Этот источник данных не поддерживает копирование SQL. Используйте копирование JSON/CSV/Markdown.",
"data_grid.message.current_record_not_editable": "Текущую запись нельзя редактировать",
"data_grid.message.current_row_no_copyable_content": "В текущей строке нет копируемого содержимого",
"data_grid.message.ddl_copied": "DDL скопирован в буфер обмена",
"data_grid.message.ddl_copy_failed": "Не удалось скопировать DDL",
"data_grid.message.ddl_load_failed": "Не удалось загрузить DDL",
"data_grid.message.ddl_missing_context": "У текущей таблицы отсутствует подключение или имя таблицы, поэтому DDL нельзя просмотреть",
"data_grid.message.drag_select_cells_to_copy": "Сначала перетащите, чтобы выбрать ячейки для копирования",
"data_grid.message.export_failed": "Не удалось экспортировать: {{detail}}",
"data_grid.message.export_success": "Экспорт завершен",
"data_grid.message.export_with_uncommitted_changes": "Есть незафиксированные изменения. Для экспорта будут использованы видимые данные таблицы. Если нужны полные данные длинных полей, сначала зафиксируйте изменения.",
"data_grid.message.exporting": "Экспорт...",
"data_grid.message.exporting_all": "Экспорт всех данных...",
"data_grid.message.exporting_rows": "Экспорт строк: {{count}}...",
"data_grid.message.filled_cells": "Заполнено ячеек: {{count}}",
"data_grid.message.filled_rows": "Заполнено строк: {{count}}",
"data_grid.message.current_field_not_editable": "Текущее поле недоступно для редактирования",
"data_grid.message.filtered_export_not_supported": "Этот источник данных не поддерживает экспорт отфильтрованных результатов",
"data_grid.message.filtered_export_uses_committed_data": "Есть незафиксированные изменения. Для экспорта отфильтрованных результатов используются зафиксированные данные базы.",
"data_grid.message.import_done": "Импорт завершен",
"data_grid.message.json_applied": "Изменения JSON применены к текущему набору результатов. Можно продолжить и зафиксировать транзакцию.",
"data_grid.message.json_invalid": "Недопустимый JSON: {{detail}}",
"data_grid.message.json_parse_failed": "Не удалось разобрать JSON: {{detail}}",
"data_grid.message.json_record_count_mismatch": "Количество записей не совпадает: сейчас {{current}} строк, в JSON {{json}} строк. В этом режиме не добавляйте и не удаляйте записи.",
"data_grid.message.json_record_missing_row_key": "В записи {{index}} отсутствует идентификатор строки, поэтому ее нельзя применить",
"data_grid.message.json_record_not_object": "Запись {{index}} не является объектом, поэтому ее нельзя применить",
"data_grid.message.json_view_must_be_array": "JSON-представление должно быть массивом, где каждый элемент соответствует одной записи",
"data_grid.message.keep_one_visible_column": "Оставьте хотя бы один видимый столбец",
"data_grid.message.locate_record_to_edit": "Сначала найдите запись для редактирования",
"data_grid.message.locator_column_value_empty": "Значение столбца локатора {{column}} пустое, поэтому изменения нельзя безопасно отправить.",
"data_grid.message.no_changes_to_commit": "Нет изменений для фиксации",
"data_grid.message.no_copyable_cells": "Копируемые ячейки не распознаны",
"data_grid.message.no_copyable_columns": "Копируемые столбцы не распознаны",
"data_grid.message.no_copyable_rows": "Копируемые строки не распознаны",
"data_grid.message.no_data_changes": "Данные не изменились",
"data_grid.message.no_ddl_to_copy": "Нет DDL для копирования",
"data_grid.message.no_field_name": "Имя поля не распознано",
"data_grid.message.no_safe_locator": "Для текущего результата нет безопасного способа определить строку, поэтому изменения нельзя отправить.",
"data_grid.message.no_filter_applied": "Сейчас не применено ни одно условие фильтра",
"data_grid.message.no_rows_selected": "Строки не выбраны",
"data_grid.message.no_other_rows_to_fill": "Нет других выбранных строк, которые можно заполнить",
"data_grid.message.no_pasteable_editable_fields": "Нет редактируемых полей, которые можно вставить",
"data_grid.message.no_pasteable_rows": "Нет строк, которые можно вставить",
"data_grid.message.pasted_columns_to_rows": "Вставлено в {{rows}} строк, всего {{cells}} ячеек",
"data_grid.message.pasted_rows_as_new": "Вставлено новых строк: {{count}}. Проверьте их перед фиксацией.",
"data_grid.message.preview_sql_failed": "Не удалось сформировать предпросмотр SQL",
"data_grid.message.preview_sql_failed_detail": "Не удалось сформировать предпросмотр SQL: {{detail}}",
"data_grid.preview_sql.copied": "Скопировано",
"data_grid.preview_sql.no_changes": "Нет изменений",
"data_grid.preview_sql.summary": "{{deletes}} DELETE, {{updates}} UPDATE, {{inserts}} INSERT",
"data_grid.preview_sql.title": "Предпросмотр изменений",
"data_grid.message.result_set_no_copyable_content": "В текущем наборе результатов нет копируемого содержимого",
"data_grid.message.saved": "Сохранено",
"data_grid.message.select_cells_to_fill": "Сначала выберите ячейки для заполнения",
"data_grid.message.select_file_failed": "Не удалось выбрать файл: {{detail}}",
"data_grid.message.select_rows_to_copy": "Сначала выберите строки для копирования",
"data_grid.message.select_rows_to_fill": "Сначала выберите строки для заполнения",
"data_grid.message.select_same_row_cells_to_copy": "Сначала выберите ячейки в одной строке для копирования",
"data_grid.message.select_target_rows": "Сначала выберите целевые строки",
"data_grid.message.selected_cells_no_update": "Выбранные ячейки не требуют обновления",
"data_grid.message.selection_no_copyable_content": "В текущем выделении нет копируемого содержимого",
"data_grid.message.target_row_not_found": "Целевая строка не найдена. Обновите данные и повторите попытку.",
"data_grid.message.target_rows_cannot_only_source": "Целевые строки не могут состоять только из исходной строки. Выберите другую строку.",
"data_grid.message.target_rows_no_update": "Целевые строки не требуют обновления",
"data_grid.message.transaction_committed": "Транзакция зафиксирована",
"data_grid.message.transaction_rolled_back": "Транзакция отменена",
"data_viewer.message.result_not_ready": "Текущий набор результатов еще не готов. Сначала загрузите данные один раз.",
"data_viewer.message.query_failed": "Ошибка запроса",
"data_viewer.message.query_timeout": "Запрос превысил тайм-аут подключения и был прерван. Увеличьте тайм-аут подключения или сократите область запроса и повторите попытку.",
"data_viewer.message.duckdb_query_timeout": "Запрос DuckDB превысил тайм-аут подключения и был прерван. Увеличьте тайм-аут подключения или сократите область сортировки/фильтрации и повторите попытку.",
"data_viewer.message.connection_not_found": "Подключение не найдено",
"data_viewer.message.fetch_data_failed_detail": "Ошибка при получении данных: {{detail}}",
"data_viewer.message.total_count_failed": "Не удалось подсчитать общее количество строк",
"data_viewer.message.total_count_failed_detail": "Не удалось подсчитать общее количество строк: {{detail}}",
"data_viewer.message.total_count_parse_failed": "Не удалось разобрать результат подсчета общего количества строк",
"data_viewer.message.mongo_filter_invalid_detail": "Недопустимое условие фильтра MongoDB: {{detail}}",
"data_viewer.message.mongo_filter_parse_failed": "Не удалось разобрать",
"data_viewer.message.sort_buffer_retry_succeeded": "Буфер сортировки был автоматически увеличен, повторный запрос выполнен успешно.",
"data_viewer.read_only.reason.mongo_id_missing": "В наборе результатов MongoDB отсутствует _id, поэтому изменения нельзя безопасно отправить.",
"data_viewer.read_only.reason.metadata_unavailable": "Не удалось загрузить метаданные первичного ключа или уникального индекса, поэтому изменения нельзя безопасно отправить.",
"data_viewer.read_only.reason.index_metadata_unavailable": "Не удалось загрузить метаданные уникального индекса, поэтому изменения нельзя безопасно отправить.",
"data_viewer.read_only.reason.no_safe_locator": "Первичный ключ или пригодный уникальный индекс не найден, поэтому изменения нельзя безопасно отправить.",
"data_viewer.read_only.reason.oracle_rowid_missing": "Первичный ключ или пригодный уникальный индекс не найден, а Oracle ROWID отсутствует в результате, поэтому изменения нельзя безопасно отправить.",
"data_viewer.read_only.reason.duckdb_rowid_missing": "Первичный ключ, пригодный уникальный индекс или DuckDB rowid не найден, поэтому изменения нельзя безопасно отправить.",
"data_viewer.read_only.reason.primary_key_column_missing": "В наборе результатов отсутствует столбец первичного ключа {{columns}}, поэтому изменения нельзя безопасно отправить.",
"data_viewer.read_only.warning.table": "Таблица {{target}} остается только для чтения: {{reason}}",
"data_viewer.read_only.warning.collection": "Коллекция {{target}} остается только для чтения: {{reason}}",
"data_viewer.sql_log.phase.main_query": "Основной запрос",
"data_viewer.sql_log.phase.complex_type_fallback_retry": "Повтор с резервной обработкой сложного типа",
"data_viewer.sql_log.phase.sort_buffer_retry": "Повтор ({{size}} sort_buffer)",
"definition_viewer.object.view": "Представление",
"definition_viewer.object.materialized_view": "Материализованное представление",
"definition_viewer.object.routine": "Функция/процедура",
"definition_viewer.object.event": "Событие",
"definition_viewer.loading.view_definition": "Загрузка определения представления...",
"definition_viewer.loading.routine_definition": "Загрузка определения функции/процедуры...",
"definition_viewer.loading.event_definition": "Загрузка определения события...",
"definition_viewer.error.load_failed": "Не удалось загрузить",
"definition_viewer.error.connection_not_found": "Подключение к базе данных не найдено",
"definition_viewer.error.view_name_empty": "Имя представления пустое",
"definition_viewer.error.event_name_empty": "Имя события пустое",
"definition_viewer.error.routine_name_empty": "Имя функции/процедуры пустое",
"definition_viewer.error.query_failed": "Не удалось запросить определение",
"definition_viewer.error.query_failed_detail": "Не удалось запросить определение: {{detail}}",
"definition_viewer.field.database": "База данных",
"definition_viewer.field.type": "Тип",
"definition_viewer.action.edit_object": "Изменить объект",
"definition_viewer.warning.refresh_latest_failed": "Не удалось обновить последнее определение",
"definition_viewer.edit.tab_title": "Изменить {{object}}: {{name}}",
"definition_viewer.edit.comment_title": "Изменить {{object}}: {{name}}",
"definition_viewer.edit.comment_compatibility": "Перед выполнением убедитесь, что синтаксис совместим с текущей базой данных",
"definition_viewer.edit.comment_empty_definition": "Текущее определение объекта пусто. Перед выполнением дополните DDL для {{name}}",
"definition_viewer.editor.unsupported_view_definition": "Этот тип базы данных не поддерживает просмотр определений представлений",
"definition_viewer.editor.unsupported_sqlite_routine_definition": "SQLite не поддерживает управление определениями функций/процедур",
"definition_viewer.editor.unsupported_routine_definition": "Этот тип базы данных не поддерживает просмотр определений функций/процедур",
"definition_viewer.editor.unsupported_event_definition": "Этот тип базы данных не поддерживает просмотр определений событий",
"definition_viewer.editor.unsupported_object_definition": "Просмотр определения этого объекта не поддерживается",
"definition_viewer.editor.view_definition_not_found": "Определение представления не найдено",
"definition_viewer.editor.routine_definition_not_found": "Определение функции/процедуры не найдено",
"definition_viewer.editor.event_definition_not_found": "Определение события не найдено",
"definition_viewer.editor.object_definition_not_found": "Определение {{object}} не найдено",
"definition_viewer.editor.metadata_fallback.header": "Текущий источник данных не вернул исполняемый текст определения; возвращены метаданные",
"definition_viewer.editor.metadata_fallback.name_label": "Имя",
"definition_viewer.editor.metadata_fallback.type_label": "Тип",
"definition_viewer.editor.event_fragment_fallback.header": "Текущий источник данных не вернул полный оператор CREATE EVENT; возвращен фрагмент определения события",
"definition_viewer.editor.sphinx.empty_result": "Текущий экземпляр Sphinx{{version}} не вернул определение {{object}}.",
"definition_viewer.editor.sphinx.compat_queries_hint": "Было выполнено несколько совместимых запросов. Причиной могут быть ограничения версии или неподдерживаемый тип объекта.",
"definition_viewer.editor.sphinx.unsupported_query": "Текущий экземпляр Sphinx{{version}} не поддерживает запрос определений {{object}}.",
"definition_viewer.editor.sphinx.failed_message_label": "Возвращенное сообщение об ошибке",
"definition_viewer.editor.sphinx.failed_message_unknown": "Возвращенное сообщение об ошибке: неизвестная ошибка",
"definition_viewer.editor.sphinx.version_suffix": " (версия: {{version}})",
"trigger_viewer.loading.definition": "Загрузка определения триггера...",
"trigger_viewer.error.load_failed": "Не удалось загрузить",
"trigger_viewer.error.connection_not_found": "Подключение к базе данных не найдено",
"trigger_viewer.error.trigger_name_empty": "Имя триггера пустое",
"trigger_viewer.error.query_failed": "Не удалось запросить определение триггера",
"trigger_viewer.error.query_failed_detail": "Не удалось запросить определение триггера: {{detail}}",
"trigger_viewer.field.trigger": "Триггер",
"trigger_viewer.field.database": "База данных",
"trigger_viewer.editor.unsupported.duckdb": "DuckDB не поддерживает триггеры",
"trigger_viewer.editor.unsupported.tdengine": "TDengine не поддерживает триггеры",
"trigger_viewer.editor.unsupported.mongodb": "MongoDB не поддерживает триггеры",
"trigger_viewer.editor.unsupported.generic": "Этот тип базы данных не поддерживает просмотр определений триггеров",
"trigger_viewer.editor.definition_not_found": "Определение триггера не найдено",
"trigger_viewer.editor.sphinx.version_suffix": " (версия: {{version}})",
"trigger_viewer.editor.sphinx.empty_result": "Текущий экземпляр Sphinx{{version}} не вернул определение триггера.",
"trigger_viewer.editor.sphinx.compat_queries_hint": "Выполнено несколько совместимых запросов. Причиной могут быть ограничения версии или неподдерживаемый тип объекта.",
"trigger_viewer.editor.sphinx.unsupported_query": "Текущий экземпляр Sphinx{{version}} не поддерживает запрос определений триггеров.",
"trigger_viewer.editor.sphinx.failed_message_label": "Возвращенное сообщение об ошибке",
"trigger_viewer.editor.sphinx.failed_message_unknown": "Возвращенное сообщение об ошибке: неизвестная ошибка",
"trigger_viewer.action.edit_object": "Изменить объект",
"trigger_viewer.warning.refresh_latest_failed": "Не удалось обновить последнее определение",
"trigger_viewer.tab.edit_trigger_title": "Изменить триггер: {{name}}",
"trigger_viewer.edit_sql.header": "Изменить триггер: {{name}}",
"trigger_viewer.edit_sql.replace_hint": "Изменение структуры таблицы сначала удалит исходный триггер, а затем создаст новый. Проверьте перед выполнением.",
"trigger_viewer.edit_sql.compatibility_hint": "Перед выполнением проверьте совместимость синтаксиса с текущей базой данных.",
"trigger_viewer.edit_sql.empty_definition": "Определение триггера пустое. Дополните инструкцию CREATE TRIGGER перед выполнением.",
"trigger_viewer.edit_sql.fragment_definition": "Текущий источник данных вернул только фрагмент определения триггера. Дополните инструкцию CREATE TRIGGER перед выполнением.",
"data_grid.modal.export_options.all_data": "Экспортировать все данные",
"data_grid.modal.export_options.current_page": "Экспортировать текущую страницу ({{count}} строк)",
"data_grid.modal.export_options.filtered_results": "Отфильтрованные результаты",
"data_grid.modal.export_options.no_rows_selected": "Строки не выбраны. Выберите область экспорта:",
"data_grid.modal.export_options.title": "Параметры экспорта",
"data_grid.modal.export_options.whole_table": "Вся таблица",
"data_grid.page_find.next": "Далее",
"data_grid.page_find.placeholder": "Поиск на текущей странице...",
"data_grid.page_find.previous": "Назад",
"data_grid.page_find.summary": "{{occurrences}} совпадений / {{cells}} ячеек",
"data_grid.page_find.tooltip": "Ищет только по строкам, загруженным на текущей странице. Условия WHERE не меняются.",
"data_grid.preview_panel.no_cell_description": "Нажмите ячейку таблицы, чтобы посмотреть полные данные",
"data_grid.preview_panel.no_cell_title": "Нажмите ячейку, чтобы посмотреть данные",
"data_grid.record_view.edit_current": "Редактировать текущую запись",
"data_grid.record_view.edit_json": "Редактировать JSON",
"data_grid.record_view.empty": "В текущем наборе результатов нет данных",
"data_grid.record_view.json_record_count": "Текущий набор результатов: {{count}} записей",
"data_grid.record_view.next": "Следующая",
"data_grid.record_view.previous": "Предыдущая",
"data_grid.record_view.record_position": "Запись {{current}} / {{total}}",
"data_grid.pagination.jump_action": "ОК",
"data_grid.pagination.jump_aria": "Перейти на страницу",
"data_grid.pagination.jump_label": "Перейти",
"data_grid.pagination.page.current": "Страница {{current}}",
"data_grid.pagination.page.known": "Страница {{current}} / {{totalPages}}",
"data_grid.pagination.page_size_aria": "Строк на странице",
"data_grid.pagination.page_size_option": "{{count}} строк / страница",
"data_grid.pagination.result_set": "Набор результатов",
"data_grid.pagination.summary.approximate": "Сейчас {{current}} строк / около {{total}} строк",
"data_grid.pagination.summary.cancelled": "Сейчас {{current}} строк / подсчет отменен",
"data_grid.pagination.summary.counting": "Сейчас {{current}} строк / подсчет общего числа...",
"data_grid.pagination.summary.counting_exact": "Сейчас {{current}} строк / подсчет точного общего числа...",
"data_grid.pagination.summary.empty": "Сейчас 0 строк / всего 0 строк",
"data_grid.pagination.summary.known": "Сейчас {{current}} строк / всего {{total}} строк",
"data_grid.pagination.summary.not_counted": "Сейчас {{current}} строк / общее число не подсчитано",
"data_grid.secondary.column_display": "Отображение столбцов",
"data_grid.secondary.data_preview": "Предпросмотр данных",
"data_grid.secondary.er_diagram": "ER-диаграмма",
"data_grid.secondary.jump_column": "Перейти к столбцу",
"data_grid.secondary.live": "активно",
"data_grid.secondary.object_design": "Дизайн объекта",
"data_grid.embedded_designer.title": "Проектирование таблицы ({{tableName}})",
"data_grid.secondary.pending_changes": "Не отправлено {{count}}",
"data_grid.secondary.row_count": "{{count}} строк",
"data_grid.secondary.view_ddl": "Показать DDL",
"data_grid.row_editor.popup_edit": "Редактировать во всплывающем окне",
"data_grid.row_editor.title": "Редактировать строку",
"data_grid.toolbar.add_row": "Добавить строку",
"data_grid.toolbar.ai_insight": "AI-анализ данных",
"data_grid.toolbar.ai_insight_short": "AI-анализ",
"data_grid.toolbar.ai_insight_tooltip": "Попросить AI проанализировать данные текущей страницы запроса",
"data_grid.toolbar.batch_fill": "Массовое заполнение ({{count}})",
"data_grid.toolbar.cancel_count": "Отменить подсчет",
"data_grid.toolbar.cancel_count_tooltip": "Отменить этот подсчет точного общего числа. Текущий просмотр не изменится.",
"data_grid.toolbar.cell_editor": "Редактор ячеек",
"data_grid.toolbar.commit": "Зафиксировать транзакцию ({{count}})",
"data_grid.toolbar.commit_label": "Зафиксировать транзакцию",
"data_grid.toolbar.commit_delay.seconds": "{{seconds}} с",
"data_grid.toolbar.commit_mode.auto": "Автофиксация",
"data_grid.toolbar.commit_mode.auto_countdown": "Фиксация через {{seconds}}s",
"data_grid.toolbar.commit_mode.manual": "Ручная фиксация",
"data_grid.toolbar.commit_mode.tooltip": "Управляет фиксацией изменений данных таблицы. Ручная фиксация безопаснее; автофиксация выполняется через выбранную задержку после последнего изменения.",
"data_grid.toolbar.copied_columns_count": "Скопировано столбцов: {{count}}",
"data_grid.toolbar.copy": "Копировать",
"data_grid.toolbar.copy_row": "Копировать строку",
"data_grid.toolbar.copy_selection": "Копировать выделение ({{count}})",
"data_grid.toolbar.copy_selection_columns": "Копировать значения столбцов из выделения ({{count}})",
"data_grid.toolbar.count_total": "Подсчитать всего",
"data_grid.toolbar.count_total_tooltip": "Подсчитать точное общее число с текущим фильтром",
"data_grid.toolbar.delete_selected": "Удалить выбранное",
"data_grid.toolbar.export": "Экспорт",
"data_grid.toolbar.filter": "Фильтр",
"data_grid.toolbar.import": "Импорт",
"data_grid.toolbar.paste_row": "Вставить строку",
"data_grid.toolbar.paste_row_count": "Вставить строку ({{count}})",
"data_grid.toolbar.paste_to_selected_rows": "Вставить в выбранные строки ({{count}})",
"data_grid.toolbar.preview_sql": "Предпросмотр SQL",
"data_grid.toolbar.preview_sql_generate": "Сформировать предпросмотр SQL",
"data_grid.toolbar.refresh": "Обновить",
"data_grid.toolbar.rollback": "Откат",
"data_grid.toolbar.selected_count": "Выбрано: {{count}}",
"data_grid.toolbar.undo_delete": "Отменить удаление",
"data_grid.view.edit_current_record": "Редактировать текущую запись",
"data_grid.view.edit_json": "Редактировать JSON",
"data_grid.view.empty_result": "В текущем наборе результатов нет данных",
"data_grid.view.next_record": "Следующая запись",
"data_grid.view.previous_record": "Предыдущая запись",
"data_grid.view.record_count": "Текущий набор результатов: {{count}} записей",
"data_grid.view.record_position": "Запись {{current}} / {{total}}",
"data_grid.view.result_view": "Просмотр результата",
"data_grid.view.table": "Таблица",
"data_grid.view.text": "Текст",
"table_designer.action.add": "Добавить",
"table_designer.action.add_after_selected": "Добавить после выбранного столбца",
"table_designer.action.add_column": "Добавить столбец",
"table_designer.action.apply": "Применить",
"table_designer.action.cancel": "Отмена",
"table_designer.action.copy_selected_to_new_table": "Скопировать выбранное в новую таблицу",
"table_designer.action.create": "Создать",
"table_designer.action.create_table": "Создать таблицу",
"table_designer.action.delete": "Удалить",
"table_designer.action.edit": "Изменить",
"table_designer.action.execute": "Выполнить",
"table_designer.action.refresh": "Обновить",
"table_designer.action.refresh_anyway": "Все равно обновить",
"table_designer.action.save": "Сохранить",
"table_designer.action.table_comment": "Комментарий таблицы",
"table_designer.action.view_statement": "Показать оператор",
"table_designer.column.actions": "Действия",
"table_designer.column.auto_increment": "Автоинкремент",
"table_designer.column.comment": "Комментарий",
"table_designer.column.default": "По умолчанию",
"table_designer.column.name": "Имя",
"table_designer.column.not_null": "NOT NULL",
"table_designer.column.primary_key": "Первичный ключ",
"table_designer.column.type": "Тип",
"table_designer.empty.triggers": "У этой таблицы нет триггеров",
"table_designer.fallback.empty": "(пусто)",
"table_designer.fallback.unknown_error": "Неизвестная ошибка",
"table_designer.fallback.unnamed_foreign_key": "(внешний ключ без имени)",
"table_designer.fallback.unnamed_index": "(индекс без имени)",
"table_designer.foreign_key.column.constraint_name": "Имя ограничения",
"table_designer.foreign_key.column.fields": "Поля",
"table_designer.foreign_key.column.ref_fields": "Ссылочные поля",
"table_designer.foreign_key.column.ref_table": "Ссылочная таблица",
"table_designer.index.column.fields": "Поля",
"table_designer.index.column.name": "Имя индекса",
"table_designer.index.column.type": "Тип индекса",
"table_designer.index.column.uniqueness": "Уникальность",
"table_designer.index.kind.fulltext": "Полнотекстовый индекс",
"table_designer.index.kind.normal": "Обычный индекс",
"table_designer.index.kind.normal_nonclustered": "Обычный индекс (некластеризованный)",
"table_designer.index.kind.primary_clustered": "Индекс первичного ключа (кластеризованный)",
"table_designer.index.kind.spatial": "Пространственный индекс",
"table_designer.index.kind.unique": "Уникальный индекс",
"table_designer.index.uniqueness.normal": "Обычный",
"table_designer.index.uniqueness.unique": "Уникальный",
"table_designer.label.create_statement": "CREATE-оператор для {{name}}",
"table_designer.label.create_statement_plain": "CREATE-оператор",
"table_designer.message.add_at_least_one_column": "Добавьте хотя бы один столбец",
"table_designer.message.columns_copied_to_new_table": "{{count}} столбцов скопировано в новую таблицу {{table}}",
"table_designer.message.connection_not_found": "Подключение не найдено",
"table_designer.message.delete_failed": "Не удалось удалить: {{detail}}",
"table_designer.message.drop_old_trigger_failed": "Не удалось удалить старый триггер: {{detail}}",
"table_designer.message.execution_failed": "Не удалось выполнить: {{detail}}",
"table_designer.message.execution_failed_plain": "Не удалось выполнить",
"table_designer.message.execution_failed_prefix": "Не удалось выполнить: ",
"table_designer.message.foreign_key_column_count_mismatch": "Количество локальных полей должно совпадать с количеством ссылочных полей",
"table_designer.message.foreign_key_created": "Внешний ключ создан",
"table_designer.message.foreign_key_delete_unsupported": "Эта база данных не поддерживает удаление этого внешнего ключа здесь",
"table_designer.message.foreign_key_deleted": "Внешний ключ удален",
"table_designer.message.foreign_key_maintenance_unsupported": "Эта база данных не поддерживает управление внешними ключами здесь",
"table_designer.message.foreign_key_name_exists": "Ограничение внешнего ключа уже существует: {{name}}",
"table_designer.message.foreign_key_name_required": "Введите имя ограничения внешнего ключа",
"table_designer.message.foreign_key_updated": "Внешний ключ обновлен",
"table_designer.message.index_created": "Индекс создан",
"table_designer.message.index_create_sql_unavailable": "Не удалось получить SQL создания индекса",
"table_designer.message.index_create_sql_placeholder": "SQL создания индекса пока недоступен",
"table_designer.message.index_delete_named_unsupported": "Эта база данных не поддерживает удаление индекса \"{{name}}\"",
"table_designer.message.index_delete_unsupported": "Эта база данных не поддерживает удаление этого индекса",
"table_designer.message.index_deleted": "Индекс удален",
"table_designer.message.index_kind_unsupported": "Эта база данных не поддерживает этот тип индекса",
"table_designer.message.index_maintenance_unsupported": "Эта база данных не поддерживает управление индексами здесь",
"table_designer.message.index_name_exists": "Имя индекса уже существует: {{name}}",
"table_designer.message.index_name_required": "Введите имя индекса",
"table_designer.message.index_restore_failed": "{{detail}}; не удалось восстановить исходный индекс: {{restoreDetail}}",
"table_designer.message.index_restore_unavailable": "{{detail}}; исходный индекс не удалось восстановить автоматически. Проверьте его как можно скорее.",
"table_designer.message.index_restored_after_failure": "{{detail}}; исходный индекс восстановлен автоматически.",
"table_designer.message.index_updated": "Индекс обновлен",
"table_designer.message.indexes_deleted": "{{count}} индексов удалено",
"table_designer.message.load_columns_failed": "Не удалось загрузить столбцы: {{detail}}",
"table_designer.message.no_changes_detected": "Изменения не обнаружены",
"table_designer.message.no_copyable_columns": "Не выбраны столбцы для копирования",
"table_designer.message.no_index_changes": "Изменения индекса не обнаружены",
"table_designer.message.only_normal_unique_index_supported": "Эта база данных поддерживает управление только обычными и уникальными индексами",
"table_designer.message.ref_columns_required": "Введите хотя бы одно ссылочное поле",
"table_designer.message.ref_table_required": "Введите ссылочную таблицу",
"table_designer.message.relational_index_unsupported": "Этот источник данных не поддерживает управление реляционными индексами",
"table_designer.message.schema_saved_alter": "Структура таблицы обновлена.",
"table_designer.message.schema_saved_create": "Таблица создана.",
"table_designer.message.select_at_least_one_column": "Выберите хотя бы один столбец",
"table_designer.message.select_column_before_insert": "Перед вставкой выберите столбец.",
"table_designer.message.select_columns_to_copy": "Сначала выберите столбцы для копирования",
"table_designer.message.select_index_to_delete": "Сначала выберите индекс для удаления",
"table_designer.message.select_local_columns": "Выберите хотя бы одно локальное поле",
"table_designer.message.select_one_foreign_key": "Сначала выберите один внешний ключ",
"table_designer.message.select_one_index": "Сначала выберите один индекс",
"table_designer.message.statement_execution_failed_prefix": "Не удалось выполнить оператор {{current}}/{{total}}: ",
"table_designer.message.switch_index_kind": "Переключите категорию индекса на индекс {{kind}}",
"table_designer.message.table_comment_unsupported": "Эта база данных не поддерживает редактирование комментария таблицы здесь",
"table_designer.message.table_comment_updated": "Комментарий таблицы обновлен",
"table_designer.message.table_name_required": "Введите имя таблицы",
"table_designer.message.target_table_required": "Введите имя целевой таблицы",
"table_designer.message.duckdb_primary_key_change_unsupported": "DuckDB сейчас поддерживает только добавление первичного ключа в таблицы без него. Изменение или удаление существующего первичного ключа требует пересоздания таблицы.",
"table_designer.message.trigger_created": "Триггер создан",
"table_designer.message.trigger_deleted": "Триггер удален",
"table_designer.message.trigger_updated": "Триггер обновлен",
"table_designer.modal.column_comment_title": "Комментарий столбца",
"table_designer.modal.column_comment_title_named": "Комментарий столбца - {{name}}",
"table_designer.modal.confirm_sql_title": "Подтверждение изменений SQL",
"table_designer.modal.copy_columns_title": "Скопировать выбранные столбцы в новую таблицу",
"table_designer.modal.delete_foreign_key_content": "Удалить ограничение внешнего ключа \"{{name}}\"?",
"table_designer.modal.delete_foreign_key_title": "Удаление внешнего ключа",
"table_designer.modal.delete_index_many": "Удалить эти индексы ({{count}})?\n{{names}}",
"table_designer.modal.delete_index_one": "Удалить индекс {{names}}?",
"table_designer.modal.delete_index_title": "Удаление индекса",
"table_designer.modal.delete_trigger_content": "Удалить триггер \"{{name}}\"? Это действие нельзя отменить.",
"table_designer.modal.delete_trigger_title": "Удаление триггера",
"table_designer.modal.foreign_key_create_title": "Добавить внешний ключ",
"table_designer.modal.foreign_key_edit_title": "Изменить внешний ключ",
"table_designer.modal.index_create_title": "Добавить индекс",
"table_designer.modal.index_edit_title": "Изменить индекс",
"table_designer.modal.table_comment_title": "Изменить комментарий таблицы",
"table_designer.modal.trigger_create_title": "Добавить триггер",
"table_designer.modal.trigger_detail_title": "Сведения о триггере",
"table_designer.modal.trigger_detail_title_named": "Триггер: {{name}}",
"table_designer.modal.trigger_edit_title": "Изменить триггер",
"table_designer.modal.unsaved_changes_content": "При обновлении несохраненные изменения столбцов в текущем черновике будут потеряны. Все равно обновить и перезаписать черновик?",
"table_designer.modal.unsaved_changes_title": "Есть несохраненные изменения столбцов",
"table_designer.notice.foreign_key_readonly": "Эта база данных не поддерживает редактирование внешних ключей здесь. Доступен только просмотр.",
"table_designer.notice.foreign_key_replace_hint": "При изменении внешнего ключа сначала удаляется старый внешний ключ, затем создается новый.",
"table_designer.notice.index_readonly": "Эта база данных не поддерживает редактирование индексов здесь. Доступен только просмотр.",
"table_designer.notice.index_restore_hint": "Если при изменении индекса создание нового индекса завершится ошибкой, система попытается восстановить исходный индекс.",
"table_designer.notice.sql_irreversible": "Внимательно проверьте SQL. После выполнения действие нельзя отменить.",
"table_designer.notice.sql_statement_irreversible": "Внимательно проверьте оператор SQL. После выполнения действие нельзя отменить.",
"table_designer.notice.trigger_replace_hint": "При изменении триггера сначала удаляется исходный триггер, затем создается новый.",
"table_designer.option.default": "По умолчанию",
"table_designer.option.recommended_suffix": "(рекомендуется)",
"table_designer.placeholder.column_comment": "Введите комментарий столбца",
"table_designer.placeholder.foreign_key_name": "Имя ограничения внешнего ключа, например fk_order_user",
"table_designer.placeholder.index_columns": "Выберите столбцы индекса; используется порядок выбора",
"table_designer.placeholder.index_name": "Имя индекса, например idx_user_name",
"table_designer.placeholder.local_columns": "Выберите локальные поля; порядок должен совпадать со ссылочными полями",
"table_designer.placeholder.primary_index_name": "Индекс первичного ключа использует фиксированное имя: PRIMARY",
"table_designer.placeholder.ref_columns": "Введите ссылочные поля; можно указать несколько",
"table_designer.placeholder.ref_table": "Ссылочная таблица; поддерживается db.table",
"table_designer.placeholder.table_comment": "Введите комментарий таблицы",
"table_designer.placeholder.table_name": "Введите имя таблицы",
"table_designer.placeholder.target_table_name": "Введите имя целевой таблицы",
"table_designer.schema_sql.doris.primary_key_hint": "-- Изменения модели первичного ключа/Key в Doris требуют ручной миграции с учетом модели таблицы. Специфичные для MySQL фразы DROP/ADD PRIMARY KEY пропущены.",
"table_designer.schema_sql.duckdb.comment_hint": "-- DuckDB не может сохранять комментарии столбцов через COMMENT ON COLUMN. Комментарий для столбца {{column}} останется только в предпросмотре дизайнера.",
"table_designer.schema_sql.duckdb.primary_key_hint": "-- DuckDB сейчас поддерживает только добавление PRIMARY KEY к таблицам без существующего первичного ключа. Изменение или удаление существующего первичного ключа требует перестройки таблицы.",
"table_designer.schema_sql.limited_column_hint": "-- Синтаксис ограничений столбцов, значений по умолчанию и комментариев в {{dialect}} отличается от MySQL. Специфичные для MySQL фразы пропущены; добавьте SQL для целевого диалекта перед выполнением.",
"table_designer.schema_sql.sqlite.modify_column_hint": "-- SQLite не может напрямую изменять свойства столбцов. Для столбца {{column}} создайте новую таблицу, перенесите данные и замените старую таблицу.",
"table_designer.schema_sql.sqlserver.drop_primary_key_hint": "-- SQL Server требует исходное имя ограничения для удаления старого первичного ключа. Перед удалением проверьте его на вкладке индексов.",
"table_designer.schema_sql.tdengine.timestamp_hint": "-- Обычным таблицам TDengine обычно нужен столбец времени TIMESTAMP. Перед выполнением проверьте модель таблицы.",
"table_designer.starrocks.table_kind.olap": "OLAP-таблица",
"table_designer.starrocks.table_kind.external": "Внешняя таблица",
"table_designer.starrocks.key_model.duplicate": "Дублирующий ключ",
"table_designer.starrocks.key_model.unique": "Уникальный ключ",
"table_designer.starrocks.key_model.aggregate": "Агрегатный ключ",
"table_designer.starrocks.placeholder.key_columns": "Ключевые столбцы, например id, date",
"table_designer.starrocks.placeholder.partition_clause": "Секция партиционирования, например PARTITION BY RANGE(date_col)(...)",
"table_designer.starrocks.distribution.hash": "Хеш-распределение",
"table_designer.starrocks.distribution.random": "Случайное распределение",
"table_designer.starrocks.distribution.none": "Без распределения",
"table_designer.starrocks.placeholder.distribution_columns": "Столбцы распределения, например user_id",
"table_designer.starrocks.bucket_mode.auto": "Авточисло сегментов",
"table_designer.starrocks.bucket_mode.number": "Фиксированное число сегментов",
"table_designer.starrocks.placeholder.bucket_count": "Число сегментов",
"table_designer.selection.columns_selected": "Выбрано столбцов: {{count}}",
"table_designer.selection.foreign_key_selected": "Выбрано: {{name}}",
"table_designer.selection.indexes_selected": "Выбрано индексов: {{count}}",
"table_designer.selection.trigger_prompt": "Щелкните, чтобы выбрать триггер",
"table_designer.selection.trigger_selected": "Выбрано: {{name}}",
"table_designer.sql_preview.change.add": "Добавление",
"table_designer.sql_preview.change.comment": "Изменение комментария",
"table_designer.sql_preview.change.constraint": "Изменение ограничения",
"table_designer.sql_preview.change.create": "Структура новой таблицы",
"table_designer.sql_preview.change.create_index": "Создание индекса",
"table_designer.sql_preview.change.drop": "Удаление",
"table_designer.sql_preview.change.modify": "Изменение свойств столбца",
"table_designer.sql_preview.change.rename": "Переименование",
"table_designer.summary.indexes": "Индексов: {{count}}, индексных полей: {{fields}}",
"table_designer.summary.columns": "{{count}} столбцов",
"table_designer.status.read_only": "Только чтение",
"table_designer.title.untitled_table": "Таблица без имени",
"table_designer.title.default_database": "База данных по умолчанию",
"table_designer.title.schema_designer": "Конструктор схемы",
"table_designer.tab.columns": "Столбцы",
"table_designer.tab.edit_trigger_title": "Редактировать триггер: {{name}}",
"table_designer.tab.foreign_keys": "Внешние ключи",
"table_designer.tab.indexes": "Индексы",
"table_designer.tab.triggers": "Триггеры",
"table_designer.table_comment.current": "Текущий комментарий: {{comment}}",
"table_designer.tooltip.edit_comment_popup": "Редактировать комментарий во всплывающем окне",
"table_designer.trigger.column.event": "Событие",
"table_designer.trigger.column.name": "Имя",
"table_designer.trigger.column.timing": "Момент",
"table_designer.trigger.definition_unavailable": "Не удалось получить полное определение триггера",
"table_designer.trigger.field.event": "Событие",
"table_designer.trigger.field.timing": "Момент",
"table_designer.trigger.template.body_comment": "Логика триггера",
"table_designer.trigger.template.enter_create": "Введите оператор CREATE TRIGGER",
"redis_command.action.clear_console": "Очистить консоль",
"redis_command.action.execute": "Выполнить (Cmd+Enter)",
"redis_command.completion.detail": "Команда Redis",
"redis_command.message.command_required": "Введите команду для выполнения",
"redis_command.output.empty_hint": "Выполняйте команды в этой консоли; результаты отображаются как возвращены.",
"redis_command.output.selection_tip": "Подсказка: выделите строки и нажмите Ctrl + Enter, чтобы выполнить только выделение.",
"redis_command.output.title": "Вывод выполнения",
"redis_command.state.connection_not_found": "Подключение не найдено",
"redis_command.title.console": "Консоль Redis",
"db.backend.error.data_source_type_required": "Сначала выберите тип источника данных",
"db.backend.error.unsupported_database_type": "Неподдерживаемый тип базы данных: {{dbType}}",
"db.backend.error.clickhouse_address_required": "Укажите адрес хоста ClickHouse или URI подключения",
"db.backend.error.clickhouse_http_client_protocol_version_unsupported": "Текущий HTTP-порт ClickHouse не поддерживает client_protocol_version (часто встречается в ClickHouse 22.8); будет выполнена повторная попытка в режиме совместимости HTTP. Если ошибка сохранится, проверьте протокол подключения и порт",
"db.backend.error.clickhouse_native_protocol_mismatch": "Ответ сервера не похож на Native-handshake; текущий порт больше похож на HTTP/HTTPS-порт. Выберите протокол HTTP или проверьте Native-порт ClickHouse",
"db.backend.error.clickhouse_http_protocol_mismatch": "Ответ сервера не похож на HTTP-ответ; текущий порт больше похож на Native-порт. Выберите протокол Native или проверьте HTTP-порт ClickHouse",
"db.backend.error.clickhouse_unknown_error": "Неизвестная ошибка",
"db.backend.error.clickhouse_driver_detail_missing": "Драйвер не вернул подробности ошибки",
"db.backend.error.clickhouse_attempt_tls_config_failed": "Ошибка настройки TLS при попытке {{attempt}} (protocol={{protocol}}): {{detail}}",
"db.backend.error.clickhouse_attempt_validation_failed": "Ошибка проверки подключения при попытке {{attempt}} (protocol={{protocol}}): {{detail}}",
"db.backend.error.clickhouse_validation_failed_manual": "Проверка подключения ClickHouse не удалась: использован выбранный пользователем протокол {{protocol}} для {{host}}:{{port}}. {{detail}}",
"db.backend.error.clickhouse_validation_failed_auto": "Проверка подключения ClickHouse не удалась: автоматическое определение протокола не удалось (типичные Native-порты 9000/9440, типичные HTTP-порты {{httpPorts}}; для нестандартных портов укажите протокол подключения вручную). {{detail}}",
"db.backend.error.duckdb_driver_unavailable": "Драйвер DuckDB недоступен: {{detail}}",
"db.backend.error.duckdb_build_unavailable": "Текущая сборка не содержит драйвер DuckDB (platform={{platform}}). Включите CGO и используйте поддерживаемую платформу (darwin/linux amd64|arm64, windows/amd64) или предоставьте пользовательскую библиотеку через -tags duckdb_use_lib / duckdb_use_static_lib",
"db.backend.error.connection_open_failed_prefix": "Не удалось открыть подключение к базе данных: ",
"db.backend.error.custom_driver_system_odbc_unsupported_prefix": "Не удалось открыть подключение к базе данных: пользовательские подключения не поддерживают прямой ввод имени системного драйвера ODBC/JDBC \"{{driver}}\". Укажите имя драйвера Go database/sql, уже зарегистрированного в GoNavi. Текущая сборка не регистрирует универсальный ODBC-драйвер, поэтому подключение к InterSystems IRIS через \"{{driver}}\" пока не поддерживается: ",
"db.backend.error.custom_driver_unregistered_prefix": "Не удалось открыть подключение к базе данных: драйвер пользовательского подключения \"{{driver}}\" не зарегистрирован в GoNavi. Укажите зарегистрированное имя драйвера Go database/sql вместо имени системного драйвера ODBC/JDBC: ",
"db.backend.error.connection_verify_failed_prefix": "Не удалось проверить подключение после установления: ",
"db.backend.error.sqlite_file_path_required": "SQLite требуется путь к локальному файлу базы данных (например, /path/to/demo.sqlite)",
"db.backend.error.sqlite_host_port_not_file_path": "SQLite требуется путь к локальному файлу базы данных; текущий ввод похож на адрес хоста: {{dsn}}",
"db.backend.error.connection_not_open": "Подключение не открыто",
"db.backend.error.transaction_not_open": "Транзакция не открыта",
"db.backend.error.transaction_already_finished": "Транзакция уже завершена",
"db.backend.error.mqtt_connect_timeout": "Превышено время ожидания подключения MQTT",
"db.backend.error.mqtt_subscribe_timeout": "Превышено время ожидания подписки MQTT",
"db.backend.error.mqtt_publish_timeout": "Превышено время ожидания публикации MQTT",
"db.backend.action.delete": "Удаление",
"db.backend.action.update": "Обновление",
"db.backend.error.row_delete_failed": "Не удалось удалить запись: {{detail}}",
"db.backend.error.row_action_not_effective_rows_affected_unknown": "{{action}} не было применено: не удалось определить число затронутых строк: {{detail}}",
"db.backend.error.row_action_not_effective_no_rows_matched": "{{action}} не было применено: совпадающие строки не найдены",
"db.backend.error.row_action_not_effective_multiple_rows": "{{action}} не было применено: затронуто {{count}} строк; ожидалась ровно 1",
"db.backend.error.row_update_key_conditions_required": "Для операции обновления требуются условия ключа",
"db.backend.error.row_update_failed": "Не удалось обновить запись: {{detail}}",
"db.backend.error.batch_insert_quote_column_required": "Требуется функция экранирования имени столбца",
"db.backend.error.batch_insert_placeholder_required": "Требуется функция заполнителя",
"db.backend.error.batch_insert_exec_required": "Требуется функция выполнения",
"db.backend.error.batch_insert_literal_required": "Требуется функция литерала",
"db.backend.error.batch_insert_failed": "Не удалось вставить данные: {{detail}}",
"db.backend.error.batch_insert_failed_with_sql": "Не удалось вставить данные: {{detail}}; SQL={{sql}}",
"db.backend.error.batch_insert_no_rows_affected": "Вставка не была применена: не затронуто ни одной строки",
"db.backend.error.mongo_member_discovery_unsupported": "Текущий драйвер MongoDB не поддерживает обнаружение участников",
"db.backend.error.http_tunnel_proxy_conflict": "HTTP Tunnel нельзя включать одновременно с обычным прокси",
"db.backend.error.http_tunnel_host_required": "Требуется хост HTTP Tunnel",
"db.backend.error.http_tunnel_port_invalid": "Недопустимый порт HTTP Tunnel: {{port}}",
"db.backend.error.proxy_ssh_gateway_connect_failed": "Не удалось подключиться к SSH-шлюзу через прокси: {{detail}}",
"db.backend.error.proxy_target_port_invalid": "Целевой порт недопустим: {{port}}",
"db.backend.error.proxy_local_forward_addr_parse_failed": "Не удалось разобрать локальный адрес прокси-переадресации: {{address}}",
"db.backend.message.connect_timeout_detail": "Тайм-аут подключения к базе данных: {{dbType}} {{host}}:{{port}}/{{database}}: {{detail}}",
"db.backend.message.connect_failure_cooldown": "Подключение недавно завершилось ошибкой и сейчас находится на охлаждении. Повторите попытку через {{remaining}}; последняя ошибка: {{detail}}",
"db.backend.message.connect_success": "Подключение выполнено",
"db.backend.message.mongo_primary_credentials_label": "учетные данные primary",
"db.backend.message.mongo_replica_credentials_label": "учетные данные реплики",
"db.backend.message.release_success": "Подключение освобождено",
"db.backend.message.mongo_members_discovered": "Обнаружено участников: {{count}}",
"db.backend.error.schema_name_required": "Требуется имя схемы",
"db.backend.error.schema_create_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает создание схем через эту точку входа",
"db.backend.error.schema_same_name": "Старое и новое имена схемы должны отличаться",
"db.backend.error.schema_rename_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает переименование схем через эту точку входа",
"db.backend.error.schema_drop_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает удаление схем через эту точку входа",
"db.backend.error.target_database_required": "Требуется целевая база данных",
"db.backend.message.schema_created": "Схема создана",
"db.backend.message.schema_renamed": "Схема переименована",
"db.backend.message.schema_dropped": "Схема удалена",
"db.backend.error.database_name_required": "Требуется имя базы данных",
"db.backend.error.database_create_sphinx_unsupported": "Sphinx не поддерживает создание баз данных",
"db.backend.error.database_create_user_schema_unsupported": "Текущий источник данных ({{dbType}}) рассматривает базы данных как пользователей/схемы и не поддерживает их создание через эту точку входа. Используйте SQL-редактор для выполнения инструкции CREATE USER",
"db.backend.error.database_same_name": "Старое и новое имена базы данных должны отличаться",
"db.backend.error.database_rename_direct_unsupported": "MySQL/MariaDB/OceanBase/StarRocks/Sphinx не поддерживает прямое переименование баз данных. Создайте новую базу данных и перенесите данные",
"db.backend.error.database_rename_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает переименование баз данных",
"db.backend.error.database_drop_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает удаление баз данных",
"db.backend.message.database_created": "База данных создана",
"db.backend.message.database_renamed": "База данных переименована",
"db.backend.message.database_dropped": "База данных удалена",
"db.backend.error.multi_statement_execution_failed": "Не удалось выполнить оператор {{index}}: {{detail}}",
"db.backend.error.multi_statement_previous_success": " ({{count}} предыдущих операторов уже выполнены успешно)",
"db.backend.message.multi_statement_sequential_fallback": "Текущий источник данных ({{dbType}}) не поддерживает нативное выполнение нескольких операторов. Запрос был автоматически разделен на {{count}} операторов и выполнен последовательно.",
"db.backend.error.managed_transaction_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает управляемые транзакции редактора SQL",
"db.backend.error.transaction_query_unsupported": "Текущий сеанс транзакции не поддерживает операторы запроса",
"db.backend.error.transaction_id_required": "Требуется ID транзакции",
"db.backend.error.transaction_not_found": "Транзакция не найдена или уже завершена",
"db.backend.error.transaction_commit_failed": "Не удалось зафиксировать транзакцию: {{detail}}",
"db.backend.error.transaction_rollback_failed": "Не удалось откатить транзакцию: {{detail}}",
"db.backend.error.transaction_commit_close_failed": "Транзакция зафиксирована, но не удалось закрыть сеанс: {{detail}}",
"db.backend.error.transaction_rollback_close_failed": "Транзакция отменена, но не удалось закрыть сеанс: {{detail}}",
"db.backend.message.transaction_committed": "Транзакция зафиксирована",
"db.backend.message.transaction_rolled_back": "Транзакция отменена",
"db.backend.error.table_name_required": "Имя таблицы обязательно",
"db.backend.error.clickhouse_delete_failed_with_sql": "Не удалось удалить строки ClickHouse: {{detail}}; SQL={{sql}}",
"db.backend.error.clickhouse_update_failed_with_sql": "Не удалось обновить строки ClickHouse: {{detail}}; SQL={{sql}}",
"db.backend.error.tdengine_apply_changes_insert_only": "Целевые таблицы TDengine сейчас поддерживают только запись INSERT; ApplyChanges не поддерживает различия UPDATE/DELETE",
"db.backend.error.oracle_column_metadata_load_failed": "Не удалось загрузить метаданные столбцов (table={{table}}): {{detail}}. Проверьте права на запрос ALL_TAB_COLUMNS и существование таблицы",
"db.backend.error.create_table_statement_not_found": "Инструкция CREATE TABLE не найдена",
"db.backend.error.oceanbase_oracle_show_create_table_fallback_failed": "{{metadataDetail}}; сбой резервного запроса OceanBase Oracle SHOW CREATE TABLE: {{showDetail}}",
"db.backend.error.table_columns_missing_for_ddl": "Не удалось получить определения столбцов, поэтому не удалось сформировать инструкцию CREATE TABLE",
"db.backend.error.table_columns_empty_for_ddl": "Полученные определения столбцов оказались пустыми, поэтому не удалось сформировать инструкцию CREATE TABLE",
"db.backend.error.table_same_name": "Старое и новое имя таблицы должны отличаться",
"db.backend.error.table_new_name_no_qualifier": "Новое имя таблицы не должно содержать префикс схемы или базы данных",
"db.backend.error.table_rename_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает переименование таблиц",
"db.backend.error.old_table_name_required": "Старое имя таблицы обязательно",
"db.backend.error.table_drop_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает удаление таблиц",
"db.backend.message.table_renamed": "Таблица переименована",
"db.backend.message.table_dropped": "Таблица удалена",
"db.backend.error.view_name_required": "Имя представления обязательно",
"db.backend.error.view_same_name": "Старое и новое имя представления должны отличаться",
"db.backend.error.view_new_name_no_qualifier": "Новое имя представления не должно содержать префикс схемы или базы данных",
"db.backend.error.view_rename_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает переименование представлений",
"db.backend.error.old_view_name_required": "Старое имя представления обязательно",
"db.backend.error.view_drop_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает удаление представлений",
"db.backend.message.view_renamed": "Представление переименовано",
"db.backend.message.view_dropped": "Представление удалено",
"db.backend.error.routine_name_required": "Требуется имя функции или хранимой процедуры",
"db.backend.error.routine_drop_unsupported": "Текущий источник данных ({{dbType}}) не поддерживает удаление функций или хранимых процедур",
"db.backend.error.duckdb_procedure_drop_unsupported": "DuckDB пока не поддерживает хранимые процедуры",
"db.backend.message.function_dropped": "Функция удалена",
"db.backend.message.procedure_dropped": "Хранимая процедура удалена",
"redis.backend.message.connect_success": "Подключение выполнено",
"redis.backend.message.set_success": "Значение задано",
"redis.backend.message.select_db_success": "База данных переключена",
"redis.backend.message.rename_success": "Переименование выполнено",
"redis.backend.message.delete_success": "Удаление выполнено",
"redis.backend.message.add_success": "Добавление выполнено",
"redis.backend.message.flush_success": "Очистка выполнена",
"redis.backend.error.command_required": "Command не может быть пустым",
"redis.backend.error.argument_required": "{{name}} обязателен",
"redis.backend.error.argument_invalid_type": "{{name}} имеет недопустимый тип",
"redis.backend.error.address_required": "Адрес подключения Redis не может быть пустым",
"redis.backend.error.node_address_required": "Адрес узла Redis не может быть пустым",
"redis.backend.error.invalid_node_address": "Недопустимый адрес узла Redis: {{address}}",
"redis.backend.error.invalid_port": "Недопустимый порт Redis: {{address}}",
"redis.backend.label.topology_sentinel": "Sentinel",
"redis.backend.label.topology_cluster": "кластер",
"redis.backend.label.topology_multi_node": "многоузловой",
"redis.backend.error.topology_ssh_tunnel_unsupported": "Режим Redis {{topology}} пока не поддерживает SSH-туннели. Отключите SSH и повторите попытку.",
"redis.backend.error.sentinel_master_required": "Для режима Redis Sentinel требуется имя master",
"redis.backend.error.connect_tls_setup_failed": "Сбой настройки TLS на попытке {{attempt}}: {{detail}}",
"redis.backend.error.connect_attempt_failed": "Попытка подключения {{attempt}} завершилась ошибкой: {{detail}}",
"redis.backend.error.sentinel_connect_failed": "Не удалось подключиться к Redis Sentinel: {{detail}}",
"redis.backend.error.cluster_connect_failed": "Не удалось подключиться к Redis Cluster: {{detail}}",
"redis.backend.error.connect_failed": "Не удалось подключиться к Redis: {{detail}}",
"redis.backend.error.ssh_tunnel_create_failed": "Не удалось создать SSH-туннель: {{detail}}",
"redis.backend.error.select_db_index_required": "Для команды SELECT требуется индекс базы данных",
"redis.backend.error.select_db_index_invalid": "Недопустимый индекс базы данных: {{value}}",
"redis.backend.error.select_db_index_out_of_range": "Индекс базы данных должен быть в диапазоне от {{min}} до {{max}}",
"redis_monitor.action.pause_refresh": "Приостановить обновление",
"redis_monitor.action.refresh_now": "Обновить сейчас",
"redis_monitor.action.resume_refresh": "Возобновить обновление",
"redis_monitor.chart.clients_keys": "Сведения о подключениях (клиенты и Keys)",
"redis_monitor.chart.cpu_usage": "Использование CPU",
"redis_monitor.chart.memory": "Расход памяти",
"redis_monitor.chart.qps": "Пропускная способность запросов (QPS)",
"redis_monitor.message.fetch_failed": "Не удалось получить сведения Redis: {{detail}}",
"redis_monitor.metric.blocked_clients": "Заблокировано: {{value}}",
"redis_monitor.metric.clients": "Клиенты",
"redis_monitor.metric.days": "Дней: {{value}}",
"redis_monitor.metric.memory_peak": "Пик: {{value}}",
"redis_monitor.metric.memory_used": "Используемая память",
"redis_monitor.metric.ops": "Пропускная способность (OPS)",
"redis_monitor.metric.uptime": "Время работы",
"redis_monitor.series.clients": "Клиенты",
"redis_monitor.series.rss_memory": "Память RSS",
"redis_monitor.series.system": "Система",
"redis_monitor.series.total_keys": "Всего Keys",
"redis_monitor.series.used_memory": "Используемая память",
"redis_monitor.series.user": "Пользователь",
"redis_monitor.server_details.title": "Подробные параметры сервера",
"redis_monitor.state.connection_not_found": "Подключение не найдено",
"redis_monitor.title.instance": "Монитор Redis-инстанса",
"redis_viewer.action.add_field": "Добавить поле",
"redis_viewer.action.add_list_head": "Добавить в начало",
"redis_viewer.action.add_list_tail": "Добавить в конец",
"redis_viewer.action.add_member": "Добавить участника",
"redis_viewer.action.add_stream_entry": "Добавить запись",
"redis_viewer.action.clear_group_selection": "Снять выбор",
"redis_viewer.action.clear_selection": "Снять выбор",
"redis_viewer.action.copy": "Копировать",
"redis_viewer.action.copy_key_name": "Копировать имя Key",
"redis_viewer.action.copy_value": "Копировать значение",
"redis_viewer.action.delete_key": "Удалить Key",
"redis_viewer.action.delete_selected": "Удалить выбранное ({{count}})",
"redis_viewer.action.edit": "Редактировать",
"redis_viewer.action.load_more": "Загрузить еще",
"redis_viewer.action.new_key": "Создать",
"redis_viewer.action.refresh": "Обновить",
"redis_viewer.action.rename_key": "Переименовать Key",
"redis_viewer.action.select_all_loaded": "Выбрать все загруженные",
"redis_viewer.action.select_group": "Выбрать",
"redis_viewer.action.set_ttl": "Задать TTL",
"redis_viewer.aria.collapse_group": "Свернуть группу",
"redis_viewer.aria.expand_group": "Развернуть группу",
"redis_viewer.confirm.delete_field": "Удалить это поле?",
"redis_viewer.confirm.delete_key": "Удалить Key \"{{key}}\"?",
"redis_viewer.confirm.delete_member": "Удалить этого участника?",
"redis_viewer.confirm.delete_selected": "Удалить выбранные Keys: {{count}}?",
"redis_viewer.confirm.delete_stream_entry": "Удалить эту запись Stream?",
"redis_viewer.field.field_name": "Имя поля",
"redis_viewer.field.fields_json": "Поля JSON:",
"redis_viewer.field.key": "Key",
"redis_viewer.field.member": "Участник:",
"redis_viewer.field.new_key_name": "Новое имя Key",
"redis_viewer.field.new_score": "Новая оценка:",
"redis_viewer.field.score": "Оценка:",
"redis_viewer.field.stream_id": "ID (необязательно, по умолчанию *):",
"redis_viewer.field.ttl_seconds": "TTL (секунды)",
"redis_viewer.field.value": "Значение",
"redis_viewer.help.ttl_forever": "-1 означает без срока действия",
"redis_viewer.hint.binary_readonly": "Двоичные данные нельзя редактировать",
"redis_viewer.hint.switch_auto_to_edit": "Переключитесь в режим Auto для редактирования",
"redis_viewer.label.encoding": "Кодировка: {{encoding}}",
"redis_viewer.label.keys_count": "Keys: {{count}}",
"redis_viewer.label.node_count": "Узлов: {{count}}",
"redis_viewer.label.length": "Длина: {{count}}",
"redis_viewer.label.original_key": "Исходный Key: {{key}}",
"redis_viewer.message.add_failed": "Не удалось добавить: {{detail}}",
"redis_viewer.message.add_success": "Добавлено",
"redis_viewer.message.add_success_with_id": "Добавлено {{id}}",
"redis_viewer.message.copied": "Скопировано",
"redis_viewer.message.copy_failed": "Не удалось скопировать",
"redis_viewer.message.create_failed": "Не удалось создать: {{detail}}",
"redis_viewer.message.create_success": "Создано",
"redis_viewer.message.delete_failed": "Не удалось удалить: {{detail}}",
"redis_viewer.message.delete_success": "Удалено",
"redis_viewer.message.deleted_keys": "Удалено Keys: {{count}}",
"redis_viewer.message.fields_json_invalid": "Поля JSON недействительны",
"redis_viewer.message.fields_must_be_json_object": "Поля должны быть объектом JSON",
"redis_viewer.message.fields_required": "Укажите хотя бы одно поле",
"redis_viewer.message.key_check_failed": "Не удалось проверить целевой Key: {{detail}}",
"redis_viewer.message.key_missing_removed": "Key больше не существует или истек и был удален из списка",
"redis_viewer.message.key_name_copied": "Имя Key скопировано",
"redis_viewer.message.load_keys_failed": "Не удалось загрузить Keys: {{detail}}",
"redis_viewer.message.new_key_name_required": "Введите новое имя Key",
"redis_viewer.message.rename_failed": "Не удалось переименовать: {{detail}}",
"redis_viewer.message.rename_same_key": "Новое имя Key должно отличаться от исходного",
"redis_viewer.message.rename_success": "Key переименован",
"redis_viewer.message.save_failed": "Не удалось сохранить: {{detail}}",
"redis_viewer.message.save_success": "Сохранено",
"redis_viewer.message.set_failed": "Не удалось задать значение: {{detail}}",
"redis_viewer.message.stream_entry_not_deleted": "Запись Stream не удалена; возможно, ее уже нет",
"redis_viewer.message.target_key_exists": "Целевой Key уже существует: {{key}}",
"redis_viewer.message.ttl_set_success": "TTL обновлен",
"redis_viewer.message.update_failed": "Не удалось обновить: {{detail}}",
"redis_viewer.message.update_success": "Обновлено",
"redis_viewer.message.value_load_failed": "Не удалось получить значение: {{detail}}",
"redis_viewer.modal.add_element": "Добавить элемент",
"redis_viewer.modal.add_element_head": "Добавить элемент в начало",
"redis_viewer.modal.add_field": "Добавить поле",
"redis_viewer.modal.add_member": "Добавить участника",
"redis_viewer.modal.add_stream_entry": "Добавить запись Stream",
"redis_viewer.modal.edit_field": "Редактировать поле: {{field}}",
"redis_viewer.modal.edit_index": "Редактировать индекс {{index}}",
"redis_viewer.modal.edit_value": "Редактировать значение",
"redis_viewer.modal.new_key": "Новый Key",
"redis_viewer.modal.rename_key": "Переименовать Key",
"redis_viewer.modal.set_ttl": "Задать TTL",
"redis_viewer.modal.update_score": "Обновить оценку",
"redis_viewer.notice.large_keyspace_mode": "Включен режим производительности для большого keyspace. Отрисовка узлов упрощена, сохраняется до {{count}} развернутых групп.",
"redis_viewer.placeholder.key_name": "Имя Key",
"redis_viewer.placeholder.member_value": "Введите значение участника",
"redis_viewer.placeholder.new_element_value": "Введите значение нового элемента",
"redis_viewer.placeholder.new_key_name": "new:key:name",
"redis_viewer.placeholder.new_member_value": "Введите значение нового участника",
"redis_viewer.placeholder.search_exact": "Введите полный Key или namespace для точного поиска",
"redis_viewer.placeholder.search_fuzzy": "Поиск Keys (нечеткое совпадение)",
"redis_viewer.placeholder.stream_id": "Например: * или 1723110000000-0",
"redis_viewer.placeholder.value": "Значение",
"redis_viewer.search.exact": "Точно",
"redis_viewer.search.fuzzy": "Нечетко",
"redis_viewer.topology.cluster": "Cluster",
"redis_viewer.topology.sentinel": "Sentinel",
"redis_viewer.topology.single": "Одиночный",
"redis_viewer.state.connection_not_found": "Подключение не найдено",
"redis_viewer.state.empty_selection": "Выберите Key, чтобы просмотреть детали",
"redis_viewer.table.action": "Действия",
"redis_viewer.table.field": "Поле",
"redis_viewer.table.fields": "Поля",
"redis_viewer.table.index": "Индекс",
"redis_viewer.table.member": "Участник",
"redis_viewer.table.score": "Оценка",
"redis_viewer.table.value": "Значение",
"redis_viewer.title.active_key": "Активный Key",
"redis_viewer.title.key_explorer": "Обозреватель Keys",
"redis_viewer.title.namespace_key": "Пространство имен / Key",
"redis_viewer.title.type_ttl": "Тип / TTL",
"redis_viewer.tooltip.copy_fields_json": "Копировать поля JSON",
"redis_viewer.tooltip.copy_id": "Копировать ID",
"redis_viewer.tooltip.copy_key_name": "Копировать имя Key",
"redis_viewer.tooltip.copy_value": "Копировать значение",
"redis_viewer.tooltip.resize_panels": "Перетащите, чтобы изменить размер",
"redis_viewer.ttl.days_hours": "{{days}} д. {{hours}} ч.",
"redis_viewer.ttl.expired": "Истек",
"redis_viewer.ttl.forever": "Постоянный",
"redis_viewer.ttl.hours_minutes": "{{hours}} ч. {{minutes}} мин.",
"redis_viewer.ttl.minutes_seconds": "{{minutes}} мин. {{seconds}} сек.",
"redis_viewer.ttl.seconds": "{{seconds}} сек.",
"redis_viewer.validation.key_required": "Введите Key",
"redis_viewer.validation.new_key_name_required": "Введите новое имя Key",
"redis_viewer.validation.value_required": "Введите значение",
"redis_viewer.view.auto": "Auto",
"redis_viewer.view.hex": "Hex",
"redis_viewer.view.text": "Исходный текст",
"redis_viewer.view.title": "Режим просмотра",
"ai_chat.header.default_session_title": "Новый чат",
"ai_chat.header.export_time": "Время экспорта:",
"ai_chat.header.export_user": "Вы",
"ai_chat.header.tooltip.close": "Закрыть панель",
"ai_chat.header.tooltip.export_markdown": "Экспортировать как Markdown",
"ai_chat.header.tooltip.history": "История чатов",
"ai_chat.header.tooltip.new_chat": "Новый чат",
"ai_chat.header.tooltip.new_chat_clear": "Новый чат (очистить текущий)",
"ai_chat.header.tooltip.settings": "Настройки AI",
"ai_chat.header.session.connected": "{{title}} · Подключено",
"ai_chat.header.mode_tabs.aria_label": "Режим работы AI",
"ai_chat.header.mode.chat": "Чат",
"ai_chat.header.mode.insights": "Автоинсайты",
"ai_chat.header.mode.history": "История",
"ai_chat.header.action.export": "Экспорт",
"ai_chat.history.action.new_chat": "Начать новый чат",
"ai_chat.history.default_session_title": "Новый чат",
"ai_chat.history.empty.no_history": "Истории пока нет",
"ai_chat.history.empty.no_matches": "Нет подходящих чатов",
"ai_chat.history.search.placeholder": "Поиск по истории...",
"ai_chat.history.title": "История чатов",
"ai_chat.history.tooltip.collapse": "Свернуть",
"ai_chat.history.tooltip.delete": "Удалить",
"ai_chat.welcome.description.default": "Я ваш помощник по базам данных. Я могу помочь создавать SQL-запросы, анализировать схемы, объяснять логику выполнения и оптимизировать производительность базы данных.",
"ai_chat.welcome.description.with_context": "Связано структур таблиц: {{count}}. Используйте быстрые действия ниже, чтобы начать анализ.",
"ai_chat.welcome.title": "Здравствуйте, я GoNavi AI",
"ai_chat.quick_action.explain_schema": "🔍 Объяснить схему",
"ai_chat.quick_action.explain_schema.hint.with_context": "Пояснить поля и ограничения",
"ai_chat.quick_action.explain_schema.prompt.with_context": "Подробно объясните замысел дизайна и значения полей этих таблиц: {{tables}}",
"ai_chat.quick_action.explain_schema.title": "Объяснить схему",
"ai_chat.quick_action.explain_sql": "🔍 Объяснить SQL",
"ai_chat.quick_action.explain_sql.hint.default": "Объяснить логику выполнения",
"ai_chat.quick_action.explain_sql.prompt.default": "Объясните логику выполнения этого SQL-выражения:\n```sql\n\n```",
"ai_chat.quick_action.explain_sql.title": "Объяснить SQL",
"ai_chat.quick_action.generate_sql": "📝 Создать SQL",
"ai_chat.quick_action.generate_sql.hint.default": "Создать запрос из естественного языка",
"ai_chat.quick_action.generate_sql.hint.with_context": "Создать запрос из естественного языка",
"ai_chat.quick_action.generate_sql.prompt.default": "Создайте запрос на основе текущей структуры таблиц базы данных:",
"ai_chat.quick_action.generate_sql.prompt.with_context": "Создайте часто используемый запрос для этих структур таблиц: {{tables}}",
"ai_chat.quick_action.generate_sql.title": "Создать SQL",
"ai_chat.quick_action.optimize": "⚡ Советы по оптимизации",
"ai_chat.quick_action.optimize.hint.default": "Советы по производительности и индексам",
"ai_chat.quick_action.optimize.hint.with_context": "Индексы, нормализация и риски",
"ai_chat.quick_action.optimize.prompt.default": "Проанализируйте производительность этого SQL-выражения и предложите оптимизации:\n```sql\n\n```",
"ai_chat.quick_action.optimize.prompt.with_context": "Проанализируйте дизайн структуры этих таблиц и предложите оптимизации индексов и производительности запросов: {{tables}}",
"ai_chat.quick_action.optimize.title": "Советы по оптимизации",
"ai_chat.quick_action.schema_analysis": "🏗️ Анализ схемы",
"ai_chat.quick_action.schema_analysis.hint.default": "Анализ качества структуры",
"ai_chat.quick_action.schema_analysis.hint.with_context": "Связи таблиц и граф зависимостей",
"ai_chat.quick_action.schema_analysis.prompt.default": "Проанализируйте текущую структуру таблиц базы данных и предложите оптимизации.",
"ai_chat.quick_action.schema_analysis.prompt.with_context": "Выполните полный Schema-анализ этих таблиц, включая выбор типов данных, проверку нормализации и предложения по улучшению: {{tables}}",
"ai_chat.quick_action.schema_analysis.title": "Анализ Schema",
"ai_chat.quick_action.table_separator": ", ",
"ai_chat.welcome.suggestion.channel_distribution.default": "Распределение каналов заказов за последние 7 дней",
"ai_chat.welcome.suggestion.channel_distribution.with_context": "Распределение ключевых каналов за последние 7 дней",
"ai_chat.welcome.suggestion.cleanup.default": "Помоги написать SQL для очистки аномальных данных",
"ai_chat.welcome.suggestion.cleanup.with_context": "Помоги написать SQL для отключения аномальных каналов",
"ai_chat.welcome.suggestion.divider": "Или задайте вопрос напрямую",
"ai_chat.welcome.suggestion.low_rows.default": "Почему в текущем результате так мало строк?",
"ai_chat.welcome.suggestion.low_rows.with_context": "Почему в {{table}} так мало строк?",
"ai_chat.input.action.send": "Отправить",
"ai_chat.input.action.stop": "Остановить генерацию",
"ai_chat.input.context.add": "Добавить",
"ai_chat.input.context.current_count": "Текущий контекст · {{count}}",
"ai_chat.input.context.connection_tooltip": "Текущий контекст запроса данных",
"ai_chat.input.context.label": "Связанный контекст",
"ai_chat.input.context.memory_tooltip": "Использование памяти текущего сеанса. При достижении лимита {{limit}} начнется автоматическое сжатие.",
"ai_chat.input.context.tag_label": "Связанный контекст ({{count}})",
"ai_chat.input.context.selector.cancel": "Отмена",
"ai_chat.input.context.selector.confirm": "Синхронизировать выбранные таблицы в контекст",
"ai_chat.input.context.selector.database_placeholder": "Переключить базу данных",
"ai_chat.input.context.selector.empty_no_match": "Таблицы, подходящие под '{{searchText}}', не найдены",
"ai_chat.input.context.selector.empty_no_tables": "В текущей базе данных нет таблиц, которые можно привязать к контексту",
"ai_chat.input.context.selector.invert_selection": "Инвертировать совпавший выбор",
"ai_chat.input.context.selector.search_placeholder": "Искать имена таблиц в текущей базе данных...",
"ai_chat.input.context.selector.select_all": "Выбрать все совпавшие таблицы ({{count}})",
"ai_chat.input.context.selector.title": "Привязать структуры таблиц к контексту",
"ai_chat.input.message.context_added": "Структуры таблиц добавлены в контекст: {{count}}",
"ai_chat.input.message.context_load_failed": "Не удалось загрузить контекст таблиц: {{detail}}",
"ai_chat.input.message.context_removed": "Структуры таблиц удалены из контекста: {{count}}",
"ai_chat.input.message.context_synced": "Контекст синхронизирован: добавлено {{added}}, удалено {{removed}}",
"ai_chat.input.message.fetch_table_schema_failed": "Не удалось загрузить структуру {{table}}: {{detail}}",
"ai_chat.input.message.fetch_tables_failed": "Не удалось загрузить таблицы: {{detail}}",
"ai_chat.input.message.select_database_context_first": "Перед добавлением контекста чата выберите базу данных слева",
"ai_chat.input.message.selection_unchanged": "Выбор таблиц не изменился",
"ai_chat.input.message.context_sync_failed": "Не удалось синхронизировать контекст AI: {{detail}}",
"ai_chat.input.modal.empty_tables": "Нет таблиц, соответствующих «{{query}}»",
"ai_chat.input.modal.invert_matching": "Инвертировать найденные результаты",
"ai_chat.input.modal.ok": "Синхронизировать выбранные таблицы с контекстом",
"ai_chat.input.modal.search_table.placeholder": "Поиск таблиц в текущей базе данных...",
"ai_chat.input.modal.select_all_matching": "Выбрать все найденные таблицы ({{count}})",
"ai_chat.input.modal.switch_database.placeholder": "Сменить базу данных",
"ai_chat.input.modal.title": "Добавить контекст схемы таблиц базы данных",
"ai_chat.input.model.placeholder": "Выберите модель",
"ai_chat.input.placeholder": "Введите сообщение... ({{shortcut}}, Shift+Enter — новая строка, / — команды)",
"ai_chat.input.placeholder_compact": "Введите сообщение... {{shortcut}} · / команды",
"ai_chat.input.shortcut.disabled": "Отправка по горячей клавише отключена",
"ai_chat.input.shortcut.send_with_combo": "{{shortcut}} — отправить",
"ai_chat.mcp_client.install.status_tone.connected": "Подключено",
"ai_chat.mcp_client.install.status_tone.update_required": "Нужно обновить",
"ai_chat.mcp_client.install.status_tone.remote_bridge": "Удаленный мост",
"ai_chat.mcp_client.install.status_tone.status_error": "Ошибка статуса",
"ai_chat.mcp_client.install.status_tone.not_connected": "Не подключено",
"ai_chat.mcp_client.install.state.connected": "Состояние подключения внешнего инструмента: подключено к этому GoNavi",
"ai_chat.mcp_client.install.state.stale": "Состояние подключения внешнего инструмента: найдена старая конфигурация, нужно обновление",
"ai_chat.mcp_client.install.state.error": "Состояние подключения внешнего инструмента: не удалось прочитать",
"ai_chat.mcp_client.install.state.remote": "Состояние подключения внешнего инструмента: нужен удаленный MCP-мост",
"ai_chat.mcp_client.install.state.missing": "Состояние подключения внешнего инструмента: не подключено",
"ai_chat.mcp_client.install.summary.connected": "{{label}} подключен к этому GoNavi MCP и может вызывать его напрямую.",
"ai_chat.mcp_client.install.summary.stale": "В {{label}} уже есть старая запись GoNavi. После обновления она будет указывать на этот GoNavi.",
"ai_chat.mcp_client.install.summary.error": "Не удалось прочитать состояние подключения для {{label}}. Сначала обновите проверку.",
"ai_chat.mcp_client.install.summary.remote": "{{label}} обычно работает в облаке или на другой машине, поэтому для вызова этого GoNavi нужен удаленный MCP-мост.",
"ai_chat.mcp_client.install.summary.missing": "Этот GoNavi MCP еще не подключен к {{label}}.",
"ai_chat.mcp_client.install.option.connected": "Этот GoNavi MCP уже подключен к этому клиенту.",
"ai_chat.mcp_client.install.option.stale": "Обнаружена старая запись GoNavi. Обновите ее до текущего пути установки.",
"ai_chat.mcp_client.install.option.error": "Состояние подключения выглядит некорректно. Обновите его перед изменениями.",
"ai_chat.mcp_client.install.option.remote": "Для облачных Agents: schema-only по умолчанию читает структуру GoNavi, не копируя пароли базы данных и не открывая execute_sql.",
"ai_chat.mcp_client.install.option.missing": "Текущий GoNavi MCP еще не подключен здесь.",
"ai_chat.mcp_client.install.detection.remote": "{{label}} обычно не работает на этой машине Windows. Локальная проверка команды {{command}} не нужна; настройте в облаке URL удаленного MCP-моста.",
"ai_chat.mcp_client.install.detection.detected": "Обнаружена локальная команда {{command}}. После подключения или обновления перезапустите {{label}} для проверки.",
"ai_chat.mcp_client.install.detection.not_detected": "Локальная команда {{command}} не обнаружена. Если CLI еще не добавлен в PATH, можно сначала записать конфигурацию {{label}} и проверить после перезапуска.",
"ai_chat.mcp_client.install.selected.connected": "Подключено к текущему GoNavi; повторное действие не требуется",
"ai_chat.mcp_client.install.selected.stale": "Есть старая запись подключения; обновите ее до текущего пути GoNavi",
"ai_chat.mcp_client.install.selected.error": "Чтение статуса некорректно; сначала обновите проверку",
"ai_chat.mcp_client.install.selected.remote": "Настройте удаленный MCP-мост; пароли базы данных останутся на машине GoNavi",
"ai_chat.mcp_client.install.selected.missing": "GoNavi MCP еще не подключен",
"ai_chat.mcp_client.install.action.connected": "{{label}} подключен; повторная установка не нужна",
"ai_chat.mcp_client.install.action.update": "Обновить конфигурацию подключения {{label}}",
"ai_chat.mcp_client.install.action.copy_remote": "Скопировать руководство удаленного подключения для {{label}}",
"ai_chat.mcp_client.install.action.install": "Установить в {{label}} (внешний инструмент)",
"ai_chat.mcp_client.install.intro.title": "Здесь GoNavi MCP подключается к Claude Code / Codex / OpenClaw / Hermans для вызовов внешними инструментами. Это не установка плагина в сам GoNavi.",
"ai_chat.mcp_client.install.intro.description": "Claude Code и Codex записывают локальную пользовательскую конфигурацию MCP. Облачные Agents, такие как OpenClaw и Hermans, используют руководство удаленного подключения, чтобы пароли базы данных не копировались в облако.",
"ai_chat.mcp_client.install.repeat_avoidance": "Если этот GoNavi уже подключен, основная кнопка отключается, чтобы избежать повторной записи.",
"ai_chat.mcp_client.install.selector.title": "Подключить внешний клиент",
"ai_chat.mcp_client.install.selector.description": "Сначала выберите один целевой клиент. Локальные CLI могут автоматически записать или обновить конфигурацию; удаленные Agents должны обращаться к текущему GoNavi через MCP-мост или туннель и не должны хранить пароли базы данных.",
"ai_chat.mcp_client.install.selector.aria_label": "Выберите внешний клиент для GoNavi MCP",
"ai_chat.mcp_client.install.selector.choice_title": "Выберите внешний клиент",
"ai_chat.mcp_client.install.selector.step.target.title": "Выберите целевой клиент",
"ai_chat.mcp_client.install.selector.step.target.detail": "Локальные Claude/Codex можно установить автоматически. OpenClaw/Hermans используют руководство удаленного подключения.",
"ai_chat.mcp_client.install.selector.step.write.title": "Записать или скопировать конфигурацию",
"ai_chat.mcp_client.install.selector.step.write.detail": "Автоматическая установка меняет только пользовательскую MCP-конфигурацию. Для удаленных Agents копируется руководство по мосту.",
"ai_chat.mcp_client.install.selector.step.restart.title": "Перезапустить или настроить цель",
"ai_chat.mcp_client.install.selector.step.restart.detail": "Локальный CLI проверяется после перезапуска. Облачные Agents проверяются после настройки удаленного MCP URL.",
"ai_chat.mcp_client.install.selector.hint.active_remote": "Выбрано. Будет скопировано руководство удаленного подключения.",
"ai_chat.mcp_client.install.selector.hint.active_local": "Выбрано. Будет записан или обновлен только этот клиент.",
"ai_chat.mcp_client.install.selector.hint.inactive_remote": "Нажмите, чтобы посмотреть способ удаленного подключения.",
"ai_chat.mcp_client.install.selector.hint.inactive_local": "Нажмите, чтобы переключиться на этот клиент.",
"ai_chat.mcp_client.install.status.title": "Статус выбранного клиента",
"ai_chat.mcp_client.install.status.current_target": "Текущий целевой клиент: {{label}}",
"ai_chat.mcp_client.install.status.no_client": "Клиент не выбран",
"ai_chat.mcp_client.install.status.current_state": "Текущий статус: {{status}}",
"ai_chat.mcp_client.install.status.remote_boundary": "Граница удаленного подключения: данные подключения и пароли базы данных остаются в Windows GoNavi. Облачные Agents по умолчанию читают сводки подключений, таблицы и DDL через MCP-инструменты schema-only, а execute_sql не регистрируется. Для доступа между машинами используйте режим GoNavi Streamable HTTP с token, туннелем или обратным прокси.",
"ai_chat.mcp_client.install.status.cli_prefix": "Проверка CLI: {{status}}",
"ai_chat.mcp_client.install.status.cli.remote": "Удаленному Agent не нужна локальная проверка команды {{command}}",
"ai_chat.mcp_client.install.status.cli.detected": "Обнаружено {{command}}",
"ai_chat.mcp_client.install.status.cli.not_detected": "{{command}} не обнаружено; конфигурацию все равно можно записать сначала",
"ai_chat.mcp_client.install.status.command_path": "Путь команды: {{path}}",
"ai_chat.mcp_client.install.status.detection_result": "Результат проверки: {{message}}",
"ai_chat.mcp_client.install.status.detection_missing": "Статус подключения не обнаружен",
"ai_chat.mcp_client.install.status.config_file": "Файл конфигурации: {{path}}",
"ai_chat.mcp_client.install.status.launch_command": "Команда запуска: {{command}}",
"ai_chat.mcp_client.install.status.refresh": "Обновить статус",
"ai_chat.mcp_client.install.status.copy_config": "Скопировать путь конфигурации",
"ai_chat.mcp_client.install.status.copy_command": "Скопировать команду запуска",
"ai_chat.mcp_client.install.message.refresh_failed": "Не удалось обновить статус установки клиента",
"ai_chat.mcp_client.install.message.remote_guide_copied": "Руководство удаленного подключения для {{label}} скопировано",
"ai_chat.mcp_client.install.message.remote_guide_copy_failed": "Не удалось скопировать руководство удаленного подключения для {{label}}",
"ai_chat.mcp_client.install.message.already_connected": "{{label}} уже подключен к текущему GoNavi MCP. Повторная запись не нужна.",
"ai_chat.mcp_client.install.message.codex_not_supported": "Эта версия пока не поддерживает автоматическую установку Codex MCP",
"ai_chat.mcp_client.install.message.claude_not_supported": "Эта версия пока не поддерживает автоматическую установку Claude Code MCP",
"ai_chat.mcp_client.install.message.install_success": "Пользовательская MCP-конфигурация для {{label}} записана",
"ai_chat.mcp_client.install.message.install_failed": "Не удалось установить {{label}} MCP",
"ai_chat.mcp_client.install.message.config_path_missing": "Нет доступного для копирования пути файла конфигурации",
"ai_chat.mcp_client.install.message.config_path_copied": "Путь файла конфигурации скопирован",
"ai_chat.mcp_client.install.message.config_path_copy_failed": "Не удалось скопировать путь файла конфигурации",
"ai_chat.mcp_client.install.message.launch_command_missing": "Нет доступной для копирования команды запуска",
"ai_chat.mcp_client.install.message.launch_command_copied": "Команда запуска скопирована",
"ai_chat.mcp_client.install.message.launch_command_copy_failed": "Не удалось скопировать команду запуска",
"ai_chat.input.slash.diff.desc": "Сравнить две таблицы и создать изменения",
"ai_chat.input.slash.diff.label": "🔄 Сравнение таблиц",
"ai_chat.input.slash.diff.prompt": "Сравните различия структуры этих двух таблиц и создайте ALTER-выражения для миграции со старой версии на новую:",
"ai_chat.input.slash.explain.desc": "Объяснить логику выбранного SQL",
"ai_chat.input.slash.explain.label": "💡 Объяснить SQL",
"ai_chat.input.slash.explain.prompt": "Объясните логику выполнения этого SQL и назначение каждого шага:\n```sql\n\n```",
"ai_chat.input.slash.index.desc": "Рекомендовать оптимальный план индексов",
"ai_chat.input.slash.index.label": "📊 Рекомендации по индексам",
"ai_chat.input.slash.index.prompt": "Рекомендуйте оптимальный план индексов на основе текущей структуры таблиц и типовых сценариев запросов, а также предоставьте DDL:",
"ai_chat.input.slash.mock.desc": "Создать тестовые данные INSERT",
"ai_chat.input.slash.mock.label": "🎲 Тестовые данные",
"ai_chat.input.slash.mock.prompt": "Создайте 10 реалистичных для бизнеса INSERT-выражений с тестовыми данными для текущих связанных таблиц:",
"ai_chat.input.slash.optimize.desc": "Анализировать узкие места производительности SQL",
"ai_chat.input.slash.optimize.label": "⚡ Анализ оптимизации",
"ai_chat.input.slash.optimize.prompt": "Проанализируйте этот SQL на проблемы производительности и предоставьте оптимизированную версию:\n```sql\n\n```",
"ai_chat.input.slash.query.desc": "Опишите, что хотите запросить",
"ai_chat.input.slash.query.label": "🔍 Запрос на естественном языке",
"ai_chat.input.slash.query.prompt": "Напишите SQL-запрос:",
"ai_chat.input.slash.schema.desc": "Оценить качество проектирования таблиц",
"ai_chat.input.slash.schema.label": "🏗️ Ревью дизайна таблиц",
"ai_chat.input.slash.schema.prompt": "Проведите ревью текущего связанного дизайна таблиц, включая типы полей, нормализацию, стратегию индексов и предложения по улучшению:",
"ai_chat.input.slash.sql.desc": "Описать требования и создать выражения",
"ai_chat.input.slash.sql.label": "📝 Создать SQL",
"ai_chat.input.slash.sql.prompt": "Создайте SQL по следующим требованиям:",
"ai_chat.input.slash.category.generate.title": "Генерация SQL",
"ai_chat.input.slash.category.generate.description": "Сразу создавать SQL, тестовые данные или черновики миграции.",
"ai_chat.input.slash.category.review.title": "Ревью структуры",
"ai_chat.input.slash.category.review.description": "Объяснять SQL и проверять дизайн таблиц и стратегию индексов.",
"ai_chat.input.slash.category.diagnose.title": "Диагностические пробы",
"ai_chat.input.slash.category.diagnose.description": "Сначала запускать встроенные пробы, чтобы увидеть реальное состояние AI, MCP и недавней SQL-активности.",
"ai_chat.input.slash.empty.title": "Подходящих slash-команд не найдено",
"ai_chat.input.slash.empty.description": "Сначала попробуйте эти частые точки входа, чтобы быстро перейти к генерации SQL, проверке AI или диагностике MCP.",
"ai_chat.input.slash.empty.summary": "Сейчас доступно {{count}} slash-команд. Ищите по имени команды, описанию или ключевому слову.",
"ai_chat.input.slash.health.label": "🩺 Проверка AI",
"ai_chat.input.slash.health.desc": "Запустить пробы для текущей конфигурации AI",
"ai_chat.input.slash.health.prompt": "Сначала вызовите inspect_ai_setup_health, выполните полную проверку текущей конфигурации GoNavi AI, а затем подведите blockers, warnings и nextActions.",
"ai_chat.input.slash.tools.label": "🧰 Каталог инструментов",
"ai_chat.input.slash.tools.desc": "Выбрать нужную встроенную пробу по ключевому слову",
"ai_chat.input.slash.tools.prompt": "Сначала вызовите inspect_ai_tool_catalog, отфильтруйте по ключевым словам моего вопроса рекомендуемые сценарии, подсказки по параметрам встроенных инструментов и текущую сводку по MCP-инструментам, а затем скажите, какой инструмент мне вызвать следующим. Ключевые слова:",
"ai_chat.input.slash.budget.label": "🧠 Объем контекста",
"ai_chat.input.slash.budget.desc": "Проверить объем сообщений, DDL, MCP schema и Skills",
"ai_chat.input.slash.budget.prompt": "Сначала вызовите inspect_ai_context_budget, проверьте риски объема текущих сообщений диалога, результатов инструментов, DDL, MCP schema, подсказок и Skills, а затем скажите, какой контекст стоит сузить.",
"ai_chat.input.slash.hotspots.label": "🧱 Горячие точки кода",
"ai_chat.input.slash.hotspots.desc": "Посмотреть кандидатов на разбиение больших файлов и область тестов",
"ai_chat.input.slash.hotspots.prompt": "Сначала вызовите inspect_codebase_hotspots, прочитайте текущие горячие точки больших файлов фронтенда GoNavi, рекомендуемые срезы для разбиения и цели тестирования, а затем скажите, какой файл лучше разбирать следующим, какую границу выбрать и какие проверки нужно запустить. Ключевые слова:",
"ai_chat.input.slash.mcp.label": "🪛 Разобрать подключение MCP",
"ai_chat.input.slash.mcp.desc": "Проверить сервисы MCP и состояние внешних клиентов",
"ai_chat.input.slash.mcp.prompt": "Сначала вызовите inspect_mcp_setup, перечислите текущие сервисы MCP, результаты обнаружения инструментов, а также состояние подключения локальных клиентов Claude Code / Codex и удаленных Agent OpenClaw / Hermans.",
"ai_chat.input.slash.mcpfail.label": "🧯 Сбои MCP во время работы",
"ai_chat.input.slash.mcpfail.desc": "Прочитать недавние логи ошибок запуска, обнаружения и вызовов MCP",
"ai_chat.input.slash.mcpfail.prompt": "Сначала вызовите inspect_mcp_runtime_failures, прочитайте недавние логи ошибок запуска MCP, обнаружения инструментов, вызовов инструментов, stdio, Docker или HTTP MCP, а затем вместе с текущей конфигурацией сервиса MCP определите причину и nextActions. Ключевое слово или имя сервиса:",
"ai_chat.input.slash.mcpadd.label": "🧭 Подсказки по добавлению MCP",
"ai_chat.input.slash.mcpadd.desc": "Посмотреть, как заполнять command, args, env и шаблоны",
"ai_chat.input.slash.mcpadd.prompt": "Сначала вызовите inspect_mcp_authoring_guide; если я приложил полный стартовый command или черновик, дополнительно вызовите inspect_mcp_draft, чтобы просчитать поля и проблемы валидации. Затем вместе с inspect_mcp_setup скажите, как заполнять command, args, env и timeout при добавлении сервиса GoNavi MCP и какой шаблон ближе всего подходит.",
"ai_chat.input.slash.mcpdraft.label": "🧪 Проверка черновика MCP",
"ai_chat.input.slash.mcpdraft.desc": "Проверить, как разложить одну команду запуска MCP",
"ai_chat.input.slash.mcpdraft.prompt": "Сначала вызовите inspect_mcp_draft, чтобы проверить предоставленный мной MCP fullCommand или черновик command/args/env/timeout. Верните результат автоматического разбиения, превью запуска, suggestedServerSeed, ошибки, предупреждения и nextActions; если еще не хватает пояснений по полям, дополнительно вызовите inspect_mcp_authoring_guide.",
"ai_chat.input.slash.mcptool.label": "🧩 Аргументы MCP-инструмента",
"ai_chat.input.slash.mcptool.desc": "Проверить schema MCP-инструмента и формат arguments",
"ai_chat.input.slash.mcptool.prompt": "Сначала вызовите inspect_mcp_setup, чтобы найти alias уже обнаруженного MCP-инструмента. Если я уже дал имя инструмента или ключевое слово, дополнительно вызовите inspect_mcp_tool_schema, прочитайте соответствующий inputSchema и скажите, какие параметры обязательны, какие типы полей, enum-значения, вложенные пути и как должен выглядеть arguments JSON.",
"ai_chat.input.slash.connfail.label": "🧯 Проба сбоев подключения",
"ai_chat.input.slash.connfail.desc": "Суммировать недавние ошибки подключения, охлаждение и сбои проверки",
"ai_chat.input.slash.connfail.prompt": "Сначала вызовите inspect_recent_connection_failures, суммируйте реальные выводы из логов по недавним ошибкам подключения к базам данных, охлаждению подключений, сбоям проверки и исключениям SSH-туннелей; если уже есть понятный адрес или тип, дополнительно используйте inspect_current_connection или inspect_saved_connections, чтобы еще сузить область.",
"ai_chat.input.slash.shortcuts.label": "⌨️ Проба горячих клавиш",
"ai_chat.input.slash.shortcuts.desc": "Прочитать текущую конфигурацию сочетаний Win/Mac",
"ai_chat.input.slash.shortcuts.prompt": "Сначала вызовите inspect_shortcuts, расскажите текущую конфигурацию горячих клавиш GoNavi, особенно как на текущей платформе и на другой платформе выполняются SQL, переключение области результатов, открытие панели AI и отправка сообщений AI, и были ли изменены значения по умолчанию.",
"ai_chat.input.slash.applog.label": "🪵 Логи приложения",
"ai_chat.input.slash.applog.desc": "Просмотреть недавние логи приложения GoNavi",
"ai_chat.input.slash.applog.prompt": "Сначала вызовите inspect_app_logs, посмотрите недавние ошибки и предупреждения в логах приложения GoNavi; если я упоминаю ошибки подключения, сбои запуска MCP, ошибки старта или gonavi.log, в первую очередь фильтруйте по этим ключевым словам.",
"ai_chat.input.slash.airender.label": "🧯 Сбой рендера AI",
"ai_chat.input.slash.airender.desc": "Прочитать последнюю запись о сбое рендера сообщения AI",
"ai_chat.input.slash.airender.prompt": "Сначала вызовите inspect_ai_last_render_error, скажите, какое сообщение упало в последней записи о сбое рендера AI, что говорится в кратком описании ошибки и что мне проверять дальше.",
"ai_chat.input.slash.safety.label": "🛡️ Безопасность записи",
"ai_chat.input.slash.safety.desc": "Подтвердить границы чтения/записи и allowMutating",
"ai_chat.input.slash.safety.prompt": "Сначала вызовите inspect_ai_safety, скажите, какие сейчас границы записи у AI и GoNavi MCP, работают ли они только на чтение и нужен ли allowMutating для execute_sql.",
"ai_chat.input.slash.activity.label": "🕘 Недавняя SQL-активность",
"ai_chat.input.slash.activity.desc": "Суммировать недавние выполнения, ошибки и горячие точки",
"ai_chat.input.slash.activity.prompt": "Сначала вызовите inspect_recent_sql_activity, суммируйте недавнюю SQL-активность, горячие точки ошибок и основные шаблоны чтения и записи.",
"ai_chat.input.slash.tx.label": "🔁 Состояние SQL-транзакции",
"ai_chat.input.slash.tx.desc": "Проверить режим коммита SQL-редактора и ожидающие транзакции",
"ai_chat.input.slash.tx.prompt": "Сначала вызовите inspect_sql_editor_transaction, расскажите текущую семантику управляемых DML-транзакций в SQL-редакторе, настройки ручного/автоматического коммита, входят ли активные SQL-вкладки в транзакцию, есть ли ожидающие транзакции и нужно ли мне дальше коммитить, откатывать или продолжать выполнение.",
"ai_chat.input.slash.query.keywords": "запрос|естественный язык|поиск данных",
"ai_chat.input.slash.sql.keywords": "sql|создать|текст запроса",
"ai_chat.input.slash.mock.keywords": "mock|тестовые данные|insert",
"ai_chat.input.slash.diff.keywords": "diff|миграция|alter",
"ai_chat.input.slash.explain.keywords": "объяснить|sql|логика",
"ai_chat.input.slash.optimize.keywords": "оптимизация|индекс|производительность",
"ai_chat.input.slash.schema.keywords": "schema|структура таблицы|дизайн",
"ai_chat.input.slash.index.keywords": "index|индекс|медленный запрос",
"ai_chat.input.slash.health.keywords": "health|проверка состояния|ai конфигурация|зонд",
"ai_chat.input.slash.tools.keywords": "каталог инструментов|встроенные инструменты|toolcatalog|подсказки параметров|arguments|маршрут зонда",
"ai_chat.input.slash.budget.keywords": "контекст|context|объем|бюджет|медленно|ошибочные ответы|schema слишком большая|результаты инструментов",
"ai_chat.input.slash.hotspots.keywords": "большой файл|раздутый|разделение|рефакторинг|hotspots|горячие точки кода|тысячи строк",
"ai_chat.input.slash.mcp.keywords": "mcp|codex|claude|openclaw|hermans|внешний клиент",
"ai_chat.input.slash.mcpfail.keywords": "mcpfail|ошибка mcp|ошибка выполнения|найдено 0 инструментов|stdio|docker mcp|http mcp|ошибка запуска|ошибка вызова",
"ai_chat.input.slash.mcpadd.keywords": "добавить mcp|command|args|env|шаблон",
"ai_chat.input.slash.mcpdraft.keywords": "черновик mcp|проверка mcp|fullcommand|команда запуска|разделение аргументов|command|args|env",
"ai_chat.input.slash.mcptool.keywords": "mcp инструмент|аргументы mcp инструмента|schema|arguments|параметры|вызов инструмента|inputschema",
"ai_chat.input.slash.connfail.keywords": "сбой подключения|cooldown|ошибка проверки|ssh|mysql",
"ai_chat.input.slash.shortcuts.keywords": "горячие клавиши|shortcuts|область результатов|mac|windows",
"ai_chat.input.slash.applog.keywords": "логи|gonavi.log|ошибка mcp|сбой подключения|ошибка запуска",
"ai_chat.input.slash.airender.keywords": "ошибка рендера|пустой пузырь|ai сообщение|render|белый блок",
"ai_chat.input.slash.safety.keywords": "безопасность|только чтение|allowmutating|ddl|dml",
"ai_chat.input.slash.activity.keywords": "activity|sql логи|последние выполнения|ошибка",
"ai_chat.input.slash.tx.keywords": "транзакция|transaction|commit|автоматический commit|ручной commit|ожидающая транзакция|dml",
"ai_chat.input.tooltip.attach_table_context": "Добавить контекст таблиц базы данных",
"ai_chat.input.tooltip.slash_command": "Слэш-команды",
"ai_chat.input.tooltip.upload_attachment": "Загрузить вложение (изображения, Markdown, Word, Excel, PDF, текст)",
"ai_chat.input.tooltip.upload_image": "Загрузить изображение или скриншот",
"ai_chat.input.attachment.remove_file": "Удалить вложение",
"ai_chat.input.attachment.remove_image": "Удалить изображение",
"ai_chat.input.attachment.kind.text": "Текст",
"ai_chat.input.attachment.kind.image": "Изображение",
"ai_chat.input.attachment.kind.file": "Файл",
"ai_chat.input.attachment.warning.pdf_partial_text": "Для PDF использовано облегчённое извлечение текста; содержимое из сканов или со сжатыми шрифтами может считываться не полностью.",
"ai_chat.input.attachment.warning.pdf_no_text": "Из PDF не удалось извлечь читаемый текст; если это скан или PDF со сложной кодировкой, скопируйте основной текст перед отправкой.",
"ai_chat.input.attachment.warning.legacy_office_partial_text": "Для старых бинарных форматов Office используется только облегчённое извлечение текстовых фрагментов; для более полного содержимого перед загрузкой преобразуйте файл в docx/xlsx.",
"ai_chat.input.attachment.warning.too_large": "Файл превышает {{size}}; сведения о файле были добавлены, но содержимое не считывалось.",
"ai_chat.input.attachment.warning.unsupported_type": "Этот тип файла был прикреплён, но текст содержимого пока не извлекался; если модели нужно проанализировать содержимое, используйте markdown, txt, docx, xlsx или pdf.",
"ai_chat.input.attachment.warning.extract_failed": "Не удалось извлечь содержимое вложения: {{detail}}",
"ai_chat.input.attachment.excel.worksheet_header": "[Лист: {{sheetName}}]",
"ai_chat.input.attachment.kind.markdown": "Markdown",
"ai_chat.input.attachment.kind.pdf": "PDF",
"ai_chat.input.attachment.kind.word": "Word",
"ai_chat.input.attachment.kind.excel": "Excel",
"ai_chat.input.attachment.kind.document": "Файл",
"ai_chat.input.attachment.prompt.content_truncated": "[Текст вложения сокращён]",
"ai_chat.input.attachment.prompt.heading": "### Вложение {{index}}: {{name}}",
"ai_chat.input.attachment.prompt.kind": "- Тип: {{kind}}",
"ai_chat.input.attachment.prompt.mime": "- MIME: {{mimeType}}",
"ai_chat.input.attachment.prompt.size": "- Размер: {{size}}",
"ai_chat.input.attachment.prompt.extract_warning": "- Примечание по извлечению: {{message}}",
"ai_chat.input.attachment.prompt.text_truncated": "- Примечание по извлечению: текст вложения был слишком длинным и перед отправкой сокращён.",
"ai_chat.input.attachment.prompt.no_text": "Не удалось извлечь текст вложения, пригодный для отправки.",
"ai_chat.input.attachment.prompt.default_user_content": "Продолжайте обработку с учётом следующего содержимого вложений.",
"ai_chat.input.attachment.prompt.wrapper_start": "<Вложения, загруженные пользователем>",
"ai_chat.input.attachment.prompt.wrapper_end": "</Вложения, загруженные пользователем>",
"ai_chat.input.attachment.message.warning": "{{name}}: {{message}}",
"ai_chat.input.attachment.message.read_failed": "Не удалось прочитать вложение {{name}}: {{detail}}",
"ai_chat.input.status.label.not_ready": "Не готово",
"ai_chat.input.status.label.needs_fix": "Требует исправления",
"ai_chat.input.status.label.loading": "Загрузка",
"ai_chat.input.status.label.model_required": "Нужна модель",
"ai_chat.input.status.label.ready": "Готово",
"ai_chat.input.status.action.open_settings": "Открыть настройки AI",
"ai_chat.input.status.action.fix_provider": "Исправить конфигурацию провайдера",
"ai_chat.input.status.action.reload_models": "Перезагрузить модели",
"ai_chat.input.status.dismiss_aria_label": "Закрыть уведомление о статусе AI",
"ai_chat.input.status.provider_fallback_name": "Текущий провайдер",
"ai_chat.input.status.issue.missing_secret": "API-ключ",
"ai_chat.input.status.issue.missing_base_url": "URL конечной точки",
"ai_chat.input.status.issue.missing_selected_model": "модель",
"ai_chat.input.status.issue.separator": ", ",
"ai_chat.input.status.missing_provider.title.none": "Нет доступного провайдера",
"ai_chat.input.status.missing_provider.description.none": "Сначала добавьте и включите провайдера моделей в настройках AI.",
"ai_chat.input.status.missing_provider.title.unselected": "Провайдеры настроены, но сейчас ни один не выбран как активный",
"ai_chat.input.status.missing_provider.description.unselected": "Перед отправкой выберите активного провайдера в настройках AI.",
"ai_chat.input.status.provider_incomplete.title": "У {{provider}} не хватает: {{issues}}",
"ai_chat.input.status.provider_incomplete.description": "Перед отправкой завершите настройку провайдера, чтобы запрос не завершился ошибкой сразу.",
"ai_chat.input.status.missing_model.title.loading": "Загружается список моделей для {{provider}}",
"ai_chat.input.status.missing_model.title.select": "Сначала выберите модель для {{provider}}",
"ai_chat.input.status.missing_model.description.available": "Сейчас доступно {{count}} моделей. Выберите одну перед отправкой.",
"ai_chat.input.status.missing_model.description.empty": "Если список пуст, проверьте конечную точку провайдера, API-ключ и доступ к моделям.",
"ai_chat.input.status.ready.title": "AI готов: {{provider}} / {{model}}",
"ai_chat.input.status.ready.description.with_context": "Сейчас подключено {{count}} контекстов со схемами таблиц. Можно отправлять запрос.",
"ai_chat.input.status.ready.description.with_connection": "Текущее подключение уже выбрано. Для более точных рекомендаций по базе данных добавьте и контекст со схемой таблиц.",
"ai_chat.input.status.ready.description.no_context": "Можно отправлять запрос. Для более точных рекомендаций по базе данных сначала выберите подключение или добавьте контекст со схемой таблиц.",
"ai_chat.tools.mcp_fallback_description": "MCP-инструмент {{toolName}} от {{serverName}}",
"ai_chat.composer_notice.missing_model.description": "Откройте список моделей ниже и выберите модель. Если список пуст, проверьте конечную точку поставщика и API Key.",
"ai_chat.composer_notice.missing_model.title": "Сначала выберите модель",
"ai_chat.composer_notice.missing_provider.description": "Сначала добавьте и включите поставщика моделей в настройках AI.",
"ai_chat.composer_notice.missing_provider.title": "Нет доступного поставщика",
"ai_chat.composer_notice.model_fetch_failed.default_description": "Проверьте конечную точку поставщика, API Key или права учетной записи, затем снова откройте список моделей.",
"ai_chat.composer_notice.model_fetch_failed.detail_description": "Детали поставщика: {{detail}}",
"ai_chat.composer_notice.model_fetch_failed.title": "Не удалось загрузить список моделей",
"ai_chat.message.action.copy_full": "Копировать весь текст",
"ai_chat.message.action.copied": "Скопировано",
"ai_chat.message.action.delete": "Удалить сообщение",
"ai_chat.message.action.edit": "Редактировать это сообщение, удалить последующие записи и отправить заново",
"ai_chat.message.action.retry": "Сгенерировать заново из предыдущего сообщения пользователя",
"ai_chat.message.action.copy_error_raw": "Копировать исходный текст ошибки",
"ai_chat.message.action.copied_error_raw": "Исходный текст ошибки скопирован",
"ai_chat.message.render_error.title": "Это сообщение AI не удалось отобразить, поэтому оно изолировано",
"ai_chat.message.render_error.body": "Остальная переписка доступна. Вы можете удалить это проблемное сообщение перед продолжением.",
"ai_chat.message.render_error.unknown": "Неизвестная ошибка рендеринга",
"ai_chat.message.render_error.retry": "Повторить рендеринг",
"ai_chat.message.render_error.delete": "Удалить это сообщение",
"ai_chat.message.role.user": "Вы",
"ai_chat.message.image_alt": "Вложенное изображение {{index}}",
"ai_chat.message.code.copy": "Копировать код",
"ai_chat.message.code.copied": "Скопировано",
"ai_chat.message.code.insert": "Вставить",
"ai_chat.message.code.insert_tooltip": "Вставить этот SQL в рабочую область запросов для быстрого изменения или выполнения",
"ai_chat.message.code.execute": "Выполнить",
"ai_chat.message.code.execute_tooltip": "Выполнить сейчас с учетом политики безопасности AI",
"ai_chat.message.code.executing": "Выполняется...",
"ai_chat.message.code.preview": "Предпросмотр",
"ai_chat.message.code.preview_tooltip": "Просмотреть результаты запроса в чате, максимум 20 строк",
"ai_chat.message.code.expand_all": "Развернуть весь код",
"ai_chat.message.code.collapse": "Свернуть код",
"ai_chat.message.code.preview_result": "Результат предпросмотра (строк: {{rows}}, столбцов: {{columns}})",
"ai_chat.message.code.preview_collapse": "Свернуть",
"ai_chat.message.code.view_result": "Показать результат (строк: {{rows}})",
"ai_chat.message.code.query_no_result": "Запрос не вернул результатов",
"ai_chat.message.code.execute_failed": "Выполнение не удалось",
"ai_chat.message.security.blocked": "🔒 Политика безопасности заблокировала этот SQL: текущий уровень безопасности не разрешает операции {{operationType}}. Измените уровень безопасности в настройках AI.",
"ai_chat.message.security.confirm_title": "⚠️ Подтверждение безопасности",
"ai_chat.message.security.default_warning": "Этот SQL является операцией {{operationType}}. Выполнить?",
"ai_chat.message.security.confirm_execute": "Выполнить",
"ai_chat.message.thinking.title": "Ход рассуждений",
"ai_chat.message.thinking.active": "Идет рассуждение...",
"ai_chat.message.thinking.count": "({{count}} симв.)",
"ai_chat.message.tool_result.title": "Результат проверки ({{name}})",
"ai_chat.message.tool_result.char_count": "{{count}} симв.",
"ai_chat.message.tool_result.no_data": "Нет данных",
"ai_chat.message.tool_call.inspect_ai_runtime": "Прочитать текущий статус выполнения AI",
"ai_chat.message.tool_call.inspect_ai_safety": "Прочитать текущие границы безопасности AI",
"ai_chat.message.tool_call.inspect_ai_providers": "Прочитать текущую конфигурацию провайдеров и моделей AI",
"ai_chat.message.tool_call.inspect_ai_chat_readiness": "Прочитать состояние готовности AI-чата к отправке",
"ai_chat.message.tool_call.inspect_ai_tool_catalog": "Прочитать каталог инструментов AI и подсказки параметров",
"ai_chat.message.tool_call.inspect_ai_support_bundle": "Создать пакет поддержки для диагностики AI",
"ai_chat.message.tool_call.inspect_mcp_setup": "Прочитать текущий статус конфигурации MCP",
"ai_chat.message.tool_call.inspect_mcp_runtime_failures": "Диагностировать ошибки выполнения MCP",
"ai_chat.message.tool_call.inspect_mcp_authoring_guide": "Прочитать руководство по добавлению MCP",
"ai_chat.message.tool_call.inspect_mcp_draft": "Проверить черновик MCP",
"ai_chat.message.tool_call.inspect_mcp_tool_schema": "Прочитать schema параметров инструмента MCP",
"ai_chat.message.tool_call.inspect_ai_guidance": "Прочитать текущие настройки подсказок и навыков AI",
"ai_chat.message.tool_call.get_connections": "Загрузить доступные подключения",
"ai_chat.message.tool_call.get_databases": "Сканировать список баз данных",
"ai_chat.message.tool_call.get_tables": "Анализировать сведения о структуре таблиц",
"ai_chat.message.tool_call.get_all_columns": "Суммировать столбцы по таблицам",
"ai_chat.message.tool_call.get_columns": "Проверить реальные определения столбцов",
"ai_chat.message.tool_call.get_indexes": "Проверить определения индексов",
"ai_chat.message.tool_call.get_foreign_keys": "Сопоставить связи внешних ключей",
"ai_chat.message.tool_call.get_triggers": "Проверить логику триггеров",
"ai_chat.message.tool_call.get_table_ddl": "Извлечь выражение CREATE TABLE",
"ai_chat.message.tool_call.inspect_table_bundle": "Получить полный снимок структуры таблицы",
"ai_chat.message.tool_call.inspect_database_bundle": "Получить обзор структуры базы данных",
"ai_chat.inspection.app_health.last_render_error.empty_summary": "Ошибки рендеринга сообщений AI пока не зафиксированы.",
"ai_chat.inspection.last_render_error.empty_summary": "Ошибки рендеринга сообщений AI пока не зафиксированы.",
"ai_chat.inspection.last_render_error.empty_next_action.reproduce": "Если пользователь сообщает о пустом сообщении AI, белом блоке или локальной ошибке рендеринга, воспроизведите проблему и снова прочитайте этот снимок.",
"ai_chat.inspection.last_render_error.empty_next_action.inspect_health": "Если сбоит вся панель AI, сопоставьте это с inspect_ai_setup_health и inspect_app_logs.",
"ai_chat.inspection.last_render_error.recorded_summary": "Зафиксирована недавняя ошибка рендеринга сообщения AI, включая сообщение, путь рендеринга и сводку стека для диагностики.",
"ai_chat.inspection.last_render_error.next_action.match_message": "Сопоставьте messageId и contentPreview с текущим диалогом, чтобы определить, какой пузырь вызвал ошибку рендеринга.",
"ai_chat.inspection.last_render_error.next_action.narrow_scope": "Если нужно сузить область дальше, сравните последний ввод пользователя, результаты инструментов и связанный код компонентов.",
"ai_chat.inspection.app_health.log_reading_unavailable": "Текущая среда выполнения не предоставляет возможность чтения логов",
"ai_chat.inspection.app_health.app_log.unread": "Логи приложения GoNavi недоступны для чтения: {{detail}}",
"ai_chat.inspection.app_health.connection_failures.unread": "Логи ошибок подключения недоступны для чтения: {{detail}}",
"ai_chat.inspection.app_health.warning.app_log_unread": "Сейчас невозможно прочитать логи приложения GoNavi, поэтому для ошибок запуска и ошибок MCP/подключения нет лог-доказательств",
"ai_chat.inspection.app_health.next_action.enable_app_log_reading": "Убедитесь, что текущая среда может читать gonavi.log, затем вызовите inspect_app_logs для подробностей логов",
"ai_chat.inspection.app_health.warning.app_log_errors": "В последних логах приложения есть {{count}} записей ERROR; сначала следует проверить inspect_app_logs",
"ai_chat.inspection.app_health.next_action.inspect_app_log_errors": "Вызовите inspect_app_logs, чтобы посмотреть последние исходные строки ERROR/WARN и понять, влияют ли они на AI, MCP или подключения к базе данных",
"ai_chat.inspection.app_health.warning.app_log_warnings": "В последних логах приложения есть {{count}} записей WARN; проверьте, являются ли они известными игнорируемыми предупреждениями",
"ai_chat.inspection.app_health.next_action.inspect_app_log_warnings": "Если пользователь сообщает о нестабильности, сначала вызовите inspect_app_logs и проверьте, сосредоточены ли WARN вокруг AI/MCP/подключений",
"ai_chat.inspection.app_health.warning.connection_failures_unread": "Сейчас невозможно прочитать логи ошибок подключения, поэтому для cooldown подключений к базе данных и ошибок валидации нет структурированных доказательств",
"ai_chat.inspection.app_health.warning.connection_failures_recent": "Недавно обнаружено {{count}} записей об ошибках подключения/cooldown",
"ai_chat.inspection.app_health.next_action.inspect_recent_connection_failures": "Вызовите inspect_recent_connection_failures, чтобы посмотреть последнюю причину ошибки подключения, затем решите, проверять ли текущее подключение или сохраненную конфигурацию",
"ai_chat.inspection.app_health.warning.no_workspace_tabs": "В текущей рабочей области нет открытых вкладок, поэтому у AI нет активного контекста редактора для прямого чтения",
"ai_chat.inspection.app_health.next_action.open_sql_tab": "Чтобы проанализировать текущий SQL, сначала откройте или выберите целевую вкладку SQL, затем вызовите inspect_active_tab",
"ai_chat.inspection.app_health.warning.last_render_error": "Недавно зафиксирована ошибка рендеринга сообщения AI, она может влиять на отображение пузыря ответа или рендеринг Markdown",
"ai_chat.inspection.app_health.next_action.inspect_last_render_error": "Вызовите inspect_ai_last_render_error, чтобы посмотреть messageId, предпросмотр содержимого и стек компонентов последней ошибки рендеринга",
"ai_chat.inspection.app_health.message.ready": "Обзор состояния приложения AI пройден; в конфигурации AI, логах, ошибках подключения и контексте рабочей области нет очевидных проблем",
"ai_chat.inspection.app_health.message.blocked": "В состоянии приложения AI есть {{count}} блокирующих проблем; сначала исправьте поставщика и предварительные условия отправки",
"ai_chat.inspection.app_health.message.degraded": "В состоянии приложения AI есть сигналы аномалий времени выполнения; сначала углубитесь в логи или записи ошибок подключения",
"ai_chat.inspection.app_health.message.needs_attention": "Состояние приложения AI в целом пригодно к работе, но есть еще {{count}} рекомендаций",
"ai_chat.inspection.connection_failures.category.cooldown": "Cooldown подключения",
"ai_chat.inspection.connection_failures.category.parameter_compatibility": "Проблема параметров/совместимости подключения",
"ai_chat.inspection.connection_failures.category.validation": "Проверка подключения не прошла",
"ai_chat.inspection.connection_failures.category.authentication": "Ошибка аутентификации",
"ai_chat.inspection.connection_failures.category.timeout": "Тайм-аут подключения",
"ai_chat.inspection.connection_failures.category.network": "Сеть недоступна",
"ai_chat.inspection.connection_failures.category.ssh": "Сбой SSH-туннеля",
"ai_chat.inspection.connection_failures.category.startup": "Сбой запуска драйвера/процесса",
"ai_chat.inspection.connection_failures.category.other": "Другая аномалия подключения",
"ai_chat.inspection.connection_failures.next_action.cooldown": "Сначала исправьте предыдущую реальную ошибку подключения и только потом повторяйте попытку; простое обновление будет снова попадать в cooldown подключения.",
"ai_chat.inspection.connection_failures.next_action.parameter_compatibility": "Сначала проверьте параметры подключения, DSN и совместимость протокола, особенно multiStatements, charset, дополнительные query-параметры и URL-кодирование.",
"ai_chat.inspection.connection_failures.next_action.validation": "Проверьте детали ошибки валидации от сервера и убедитесь, что тип базы данных, протокол драйвера, имя базы или Service Name соответствуют целевому сервису.",
"ai_chat.inspection.connection_failures.next_action.authentication": "Проверьте имя пользователя, пароль, базу аутентификации, tenant или Service Name и убедитесь, что сервер разрешает вход этой учетной записи.",
"ai_chat.inspection.connection_failures.next_action.ssh": "Проверьте адрес SSH jump host, порт, учетную запись и целевой адрес туннеля; при необходимости сначала проверьте доступность базы данных с jump host.",
"ai_chat.inspection.connection_failures.next_action.network": "Проверьте доступность целевого адреса, порта, firewall, proxy и туннельного пути, а также убедитесь, что сервер действительно слушает.",
"ai_chat.inspection.connection_failures.next_action.startup": "Проверьте, может ли драйверный процесс или внешняя зависимость нормально запускаться; при необходимости отдельно проверьте команду запуска локально или на целевом хосте.",
"ai_chat.inspection.connection_failures.next_action.check_current_connection": "Если нужно подтвердить, что подключение в текущем интерфейсе все еще указывает на ту же цель, вызовите inspect_current_connection и проверьте, указывает ли оно на {{address}}.",
"ai_chat.inspection.connection_failures.next_action.inspect_config": "Сначала используйте inspect_current_connection и inspect_saved_connections, чтобы проверить текущую конфигурацию подключения; затем расширьте окно логов, если нужны дополнительные доказательства.",
"ai_chat.inspection.connection_failures.message.detected": "В последних логах обнаружено {{count}} аномалий подключения; последняя категория: {{categoryLabel}}",
"ai_chat.inspection.connection_failures.message.no_keyword_match": "В последних логах не найдено записей об ошибках подключения по ключевому слову \"{{keyword}}\"",
"ai_chat.inspection.connection_failures.message.none": "В последних логах не обнаружены ошибки подключения, ошибки валидации или записи cooldown подключения",
"ai_chat.inspection.context_budget.warning.missing_session": "Целевая AI-сессия не найдена, поэтому статистика объема сообщений охватывает только пустое окно",
"ai_chat.inspection.context_budget.next_action.open_session": "Сначала откройте или выберите целевую AI-сессию, затем снова вызовите inspect_ai_context_budget",
"ai_chat.inspection.context_budget.warning.critical_risk": "Текущий входной контекст AI достиг объема critical и может привести к медленным ответам, обрезке или игнорированию ключевых ограничений",
"ai_chat.inspection.context_budget.warning.high_risk": "Текущий входной контекст AI слишком большой; перед сложными вопросами сузьте контекст",
"ai_chat.inspection.context_budget.warning.large_schema_context": "Подключено много схем таблиц или длинные DDL, что может вытеснять вопрос пользователя и результаты инструментов",
"ai_chat.inspection.context_budget.next_action.narrow_tables": "Оставьте только таблицы, относящиеся к этому шагу; при необходимости используйте inspect_table_bundle для чтения целевых таблиц по требованию",
"ai_chat.inspection.context_budget.warning.large_messages": "Недавние сообщения в этой сессии длинные и могут повлиять на стабильность последующих ответов",
"ai_chat.inspection.context_budget.next_action.summarize_or_new_session": "Начните новую сессию или попросите AI сначала кратко подвести текущий итог, а затем продолжайте следующую сложную задачу",
"ai_chat.inspection.context_budget.warning.large_tool_results": "Недавние результаты инструментов длинные и могут размыть последующие ответы логами или большими наборами результатов",
"ai_chat.inspection.context_budget.next_action.reduce_tool_results": "Уменьшите объем, возвращаемый inspect_app_logs / inspect_recent_sql_logs / includeDDL / includeLogLines",
"ai_chat.inspection.context_budget.warning.large_mcp_catalog": "Открыто много MCP-инструментов или schema, из-за чего модель может чаще выбирать неверный инструмент",
"ai_chat.inspection.context_budget.next_action.narrow_tools": "Временно отключите нерелевантные MCP-сервисы или сначала вызовите inspect_ai_tool_catalog с ключевым словом, чтобы сузить маршрут инструментов",
"ai_chat.inspection.context_budget.warning.large_skills": "Включено много Skills или промпты длинные, что может накладывать конфликтующие ограничения",
"ai_chat.inspection.context_budget.next_action.reduce_skills": "Оставьте только Skills, относящиеся к этому шагу, а после завершения восстановите остальные Skills",
"ai_chat.inspection.context_budget.warning.unresolved_tool_calls": "В недавнем окне сообщений есть {{count}} незамкнутых вызовов инструментов",
"ai_chat.inspection.context_budget.next_action.inspect_message_flow": "Сначала вызовите inspect_ai_message_flow, чтобы проверить, не отсутствуют ли сообщения результата tool для вызовов инструментов",
"ai_chat.inspection.context_budget.next_action.continue_narrow_probe": "Текущий объем контекста управляем; продолжайте вызывать более узкие проверки структуры, логов или SQL-рисков для конкретного вопроса",
"ai_chat.inspection.tool_catalog.next_action.filter_by_keyword": "Сначала отфильтруйте по ключевым словам вопроса пользователя, например mcp, сбой подключения, транзакция, горячие клавиши, schema или логи",
"ai_chat.inspection.tool_catalog.warning.no_mcp_tools": "Внешние MCP-инструменты не обнаружены; если пользователю нужны внешние возможности, сначала проверьте конфигурацию MCP-сервисов и состояние обнаружения инструментов",
"ai_chat.inspection.tool_catalog.next_action.inspect_mcp_setup": "Вызовите inspect_mcp_setup, чтобы проверить MCP-сервисы и состояние подключения внешних клиентов",
"ai_chat.inspection.tool_catalog.warning.no_matches": "Подходящие инструменты или рекомендуемые сценарии не найдены",
"ai_chat.inspection.tool_catalog.next_action.broaden_keyword": "Используйте более широкие ключевые слова или сначала вызовите inspect_ai_runtime, чтобы посмотреть полный текущий список инструментов",
"ai_chat.inspection.tool_catalog.next_action.use_parameter_descriptions": "Перед вызовом инструментов с параметрами сначала соберите arguments по parameters.description; если контекста не хватает, уточните у пользователя",
"ai_chat.inspection.tool_catalog.message.by_tool_name": "Возвращена информация каталога для инструмента {{toolName}}",
"ai_chat.inspection.tool_catalog.message.by_keyword": "Возвращены рекомендации каталога инструментов по ключевому слову {{keyword}}",
"ai_chat.inspection.tool_catalog.message.summary": "Возвращена сводка каталога инструментов GoNavi AI",
"ai_chat.inspection.app_health.error.support_bundle_failed": "Не удалось создать пакет поддержки AI",
"ai_chat.inspection.support_bundle.message.ready": "Создан снимок пакета поддержки GoNavi AI для диагностики проблем AI, MCP, журналов, подключений и объема контекста",
"ai_chat.inspection.support_bundle.privacy.note": "По умолчанию возвращаются только сводки и структурированные счетчики; строки журналов или предпросмотры сообщений включаются только при явном включении includeLogLines/includeMessageContent.",
"ai_chat.inspection.codebase_hotspots.evidence.note": "Based on the current repository frontend file-line hotspot snapshot; before extraction, prefer slices that are readyToExtract and already covered by tests.",
"ai_chat.inspection.codebase_hotspots.next_action.pick_ready_slice": "Prefer a slice with readiness=readyToExtract and existing test coverage for small-step extraction; avoid rewriting an entire large component directly.",
"ai_chat.inspection.codebase_hotspots.next_action.confirm_safe_seam": "Confirm the safeSeam before every extraction, and do not cross SQL execution, transaction, connection secret, or database dialect boundaries.",
"ai_chat.inspection.codebase_hotspots.next_action.run_targeted_tests": "After extraction, run the corresponding component tests, related utils tests, and npm --prefix frontend run build at minimum.",
"ai_chat.inspection.codebase_hotspots.next_action.browser_smoke": "For visible UI extraction, open the real page in a browser for one smoke verification.",
"ai_chat.inspection.codebase_hotspots.sidebar.why": "The left tree, command palette, context menus, and connection actions are concentrated in one file, so change entry points are numerous and regression risk is high.",
"ai_chat.inspection.codebase_hotspots.sidebar.preferred_next_slice": "External SQL directory dialog",
"ai_chat.inspection.codebase_hotspots.sidebar.safe_seam": "Extract stateless dialog and menu configuration first, then handle action dispatch that depends on connection tree state.",
"ai_chat.inspection.codebase_hotspots.sidebar.suggested_slice.v2_command_palette": "V2 command palette",
"ai_chat.inspection.codebase_hotspots.sidebar.suggested_slice.external_sql_directory_dialog": "External SQL directory dialog",
"ai_chat.inspection.codebase_hotspots.sidebar.suggested_slice.connection_tree_actions": "Connection tree actions",
"ai_chat.inspection.codebase_hotspots.sidebar.suggested_slice.batch_operation_dialogs": "Batch operation dialogs",
"ai_chat.inspection.codebase_hotspots.sidebar.verification.browser_smoke": "Open the sidebar in a browser and verify the connection tree, context menus, and external SQL directory entry.",
"ai_chat.inspection.codebase_hotspots.data_grid.why": "Result display, editing, DDL, export, and column operations are coupled, so a focused fix can affect the query result area.",
"ai_chat.inspection.codebase_hotspots.data_grid.preferred_next_slice": "Result export toolbar",
"ai_chat.inspection.codebase_hotspots.data_grid.safe_seam": "Extract the pure display toolbar and menu item generation first; do not move data-editing transaction state yet.",
"ai_chat.inspection.codebase_hotspots.data_grid.suggested_slice.result_export_toolbar": "Result export toolbar",
"ai_chat.inspection.codebase_hotspots.data_grid.suggested_slice.column_header_menu": "Column header menu",
"ai_chat.inspection.codebase_hotspots.data_grid.suggested_slice.ddl_view": "DDL view",
"ai_chat.inspection.codebase_hotspots.data_grid.suggested_slice.cell_edit_transaction_hint": "Cell edit transaction hint",
"ai_chat.inspection.codebase_hotspots.data_grid.verification.browser_smoke": "Run a query in the browser and verify the result table, export, column menu, and table editing entry.",
"ai_chat.inspection.codebase_hotspots.connection_modal.why": "Multi-source connection forms are still concentrated in one component, so adding data sources or secret rules can affect each other.",
"ai_chat.inspection.codebase_hotspots.connection_modal.preferred_next_slice": "TLS configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.safe_seam": "The connection form already has presentation utilities; first extract configuration sections shown per data source.",
"ai_chat.inspection.codebase_hotspots.connection_modal.suggested_slice.ssh_proxy_section": "SSH/proxy configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.suggested_slice.tls_section": "TLS configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.suggested_slice.mongodb_section": "MongoDB configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.suggested_slice.jvm_section": "JVM configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.verification.browser_smoke": "Open the add/edit connection dialog in a browser and switch MySQL, Oracle, MongoDB, and Redis forms.",
"ai_chat.inspection.codebase_hotspots.query_editor.why": "SQL editing, execution, transactions, result layout, and shortcut state are concentrated, so transaction and result-panel regressions are likely.",
"ai_chat.inspection.codebase_hotspots.query_editor.preferred_next_slice": "Editor toolbar",
"ai_chat.inspection.codebase_hotspots.query_editor.safe_seam": "The toolbar JSX can pass state and callbacks through props, avoiding SQL execution, transaction, and result pagination logic.",
"ai_chat.inspection.codebase_hotspots.query_editor.suggested_slice.result_toolbar": "Result area toolbar",
"ai_chat.inspection.codebase_hotspots.query_editor.suggested_slice.transaction_status_bar": "Transaction status bar",
"ai_chat.inspection.codebase_hotspots.query_editor.suggested_slice.execution_log_hint": "Execution log hint",
"ai_chat.inspection.codebase_hotspots.query_editor.suggested_slice.editor_shortcut_binding": "Editor shortcut binding",
"ai_chat.inspection.codebase_hotspots.query_editor.verification.browser_smoke": "Open the SQL editor in a browser and verify connection/database selection, run, save, format, result visibility, and the AI menu.",
"ai_chat.inspection.codebase_hotspots.table_designer.why": "Field editing, indexes, foreign keys, partitions, and DDL generation are concentrated, so database dialect differences can spread easily.",
"ai_chat.inspection.codebase_hotspots.table_designer.preferred_next_slice": "Field editing table",
"ai_chat.inspection.codebase_hotspots.table_designer.safe_seam": "Add field type, length, NULL, and default value snapshot tests first, then extract the field editing table.",
"ai_chat.inspection.codebase_hotspots.table_designer.suggested_slice.field_editing_table": "Field editing table",
"ai_chat.inspection.codebase_hotspots.table_designer.suggested_slice.index_panel": "Index configuration panel",
"ai_chat.inspection.codebase_hotspots.table_designer.suggested_slice.foreign_key_panel": "Foreign key configuration panel",
"ai_chat.inspection.codebase_hotspots.table_designer.suggested_slice.dialect_ddl_preview": "Dialect DDL preview",
"ai_chat.inspection.codebase_hotspots.table_designer.verification.browser_smoke": "Open object design in a browser and verify fields, indexes, foreign keys, and DDL preview.",
"ai_chat.inspection.codebase_hotspots.redis_viewer.why": "Key browsing, data-structure editing, TTL, encoding display, and the add dialog are concentrated, so Redis Cluster/Sentinel follow-up validation is broad.",
"ai_chat.inspection.codebase_hotspots.redis_viewer.preferred_next_slice": "Key search bar",
"ai_chat.inspection.codebase_hotspots.redis_viewer.safe_seam": "Extract the search bar and topology hint first, avoiding early changes to each data-structure editor.",
"ai_chat.inspection.codebase_hotspots.redis_viewer.suggested_slice.key_search_bar": "Key search bar",
"ai_chat.inspection.codebase_hotspots.redis_viewer.suggested_slice.structure_editors": "String/List/Set/ZSet/Hash/Stream editors",
"ai_chat.inspection.codebase_hotspots.redis_viewer.suggested_slice.add_key_dialog": "Add key dialog",
"ai_chat.inspection.codebase_hotspots.redis_viewer.verification.browser_smoke": "Open a Redis connection in a browser and verify key search, refresh, TTL, and the add entry.",
"ai_chat.inspection.codebase_hotspots.driver_manager.why": "Driver installation, status display, downloads, and optional proxy logic are substantial, so status cards and action areas are good next extraction targets.",
"ai_chat.inspection.codebase_hotspots.driver_manager.preferred_next_slice": "Driver status list",
"ai_chat.inspection.codebase_hotspots.driver_manager.safe_seam": "The status list is presentational; extract it first while keeping install and download actions in the parent component.",
"ai_chat.inspection.codebase_hotspots.driver_manager.suggested_slice.driver_status_list": "Driver status list",
"ai_chat.inspection.codebase_hotspots.driver_manager.suggested_slice.install_actions": "Install action area",
"ai_chat.inspection.codebase_hotspots.driver_manager.suggested_slice.download_logs": "Download log area",
"ai_chat.inspection.codebase_hotspots.driver_manager.verification.browser_smoke": "Open driver management in a browser and verify status display, install buttons, and the log area.",
"ai_chat.inspection.codebase_hotspots.data_sync.why": "Data sync connections, table mapping, prechecks, and execution results are concentrated, so database dialect issues can be hidden.",
"ai_chat.inspection.codebase_hotspots.data_sync.preferred_next_slice": "Sync precheck results",
"ai_chat.inspection.codebase_hotspots.data_sync.safe_seam": "Make precheck results a pure display component first, keeping connection selection and execution actions in the parent component.",
"ai_chat.inspection.codebase_hotspots.data_sync.suggested_slice.connection_selection": "Connection selection area",
"ai_chat.inspection.codebase_hotspots.data_sync.suggested_slice.table_mapping": "Table mapping area",
"ai_chat.inspection.codebase_hotspots.data_sync.suggested_slice.precheck_results": "Sync precheck results",
"ai_chat.inspection.codebase_hotspots.data_sync.suggested_slice.execution_logs": "Execution log area",
"ai_chat.inspection.codebase_hotspots.data_sync.verification.browser_smoke": "Open data sync in a browser and verify connection selection, table mapping, precheck, and execution logs.",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.why": "Diagnostic commands, output blocks, permission hints, and session state can continue to be split to lower JVM diagnostics regression risk.",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.preferred_next_slice": "Diagnostic output area",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.safe_seam": "The output area mainly depends on the command result array, so it can be extracted as a display component first.",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.suggested_slice.command_input": "Command input area",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.suggested_slice.diagnostic_output": "Diagnostic output area",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.suggested_slice.permission_hint": "Permission hint area",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.verification.browser_smoke": "Open the JVM diagnostics panel in a browser and verify command input, output, and permission hints.",
"ai_chat.inspection.app_health.error.app_health_failed": "Не удалось прочитать обзор состояния приложения AI",
"ai_chat.inspection.guidance.scope.global": "Глобально",
"ai_chat.inspection.guidance.scope.database": "Сеанс базы данных",
"ai_chat.inspection.guidance.scope.jvm": "Анализ ресурсов JVM",
"ai_chat.inspection.guidance.scope.jvmDiagnostic": "Диагностика JVM",
"ai_chat.inspection.guidance.message.configured": "Включено {{promptCount}} пользовательских промптов и {{skillCount}} Skills",
"ai_chat.inspection.guidance.message.empty": "Пользовательские промпты или Skills не включены",
"ai_chat.inspection.runtime.safety.readonly": "Только чтение",
"ai_chat.inspection.runtime.safety.readwrite": "Чтение/запись",
"ai_chat.inspection.runtime.safety.full": "Полный доступ",
"ai_chat.inspection.runtime.context.schema_only": "Только schema",
"ai_chat.inspection.runtime.context.with_samples": "schema + примеры",
"ai_chat.inspection.runtime.context.with_results": "schema + результаты",
"ai_chat.inspection.runtime.message.active": "AI использует {{provider}}; доступно инструментов: {{toolCount}}",
"ai_chat.inspection.runtime.message.no_provider": "Сейчас нет активного поставщика AI",
"ai_chat.inspection.safety.rule.readonly": "В режиме только чтения разрешены только запросы.",
"ai_chat.inspection.safety.rule.readwrite": "В режиме чтения/записи разрешены запросы и DML; DDL по-прежнему блокируется.",
"ai_chat.inspection.safety.rule.full": "В режиме полного доступа разрешены все операции SQL; рискованные или нераспознанные инструкции по-прежнему требуют подтверждения.",
"ai_chat.inspection.safety.restriction.readonly_blocks_mutating": "На текущем уровне безопасности все DML/DDL напрямую блокируются.",
"ai_chat.inspection.safety.restriction.non_query_confirmation": "Любая разрешенная инструкция без выборки по-прежнему требует подтверждения человеком.",
"ai_chat.inspection.safety.restriction.mcp_allow_mutating": "При выполнении инструкций без выборки через GoNavi MCP execute_sql также нужно явно передать allowMutating=true.",
"ai_chat.inspection.safety.restriction.active_result_readonly": "Набор результатов текущей активной вкладки доступен только для чтения и не может считаться напрямую редактируемой таблицей данных.",
"ai_chat.inspection.safety.restriction.jvm_readonly": "Текущее подключение JVM доступно только для чтения, поэтому диагностические планы по умолчанию должны ограничиваться наблюдением и устранением неполадок.",
"ai_chat.inspection.safety.restriction.jvm_mutating_disabled": "Текущая диагностика JVM явно запрещает команды mutating, даже если уровень безопасности AI разрешает запись.",
"ai_chat.inspection.safety.recommendation.enable_readwrite_for_dml": "Перед выполнением INSERT/UPDATE/DELETE переключите уровень безопасности AI в режим чтения/записи.",
"ai_chat.inspection.safety.recommendation.enable_full_for_ddl": "Перед выполнением изменений schema через CREATE/ALTER/DROP/TRUNCATE переключитесь в режим полного доступа.",
"ai_chat.inspection.safety.recommendation.full_required_for_schema": "DML уже разрешены; для изменений schema по-прежнему нужен режим полного доступа.",
"ai_chat.inspection.safety.recommendation.open_editable_grid": "Если цель - редактировать таблицу результатов, заново откройте редактируемую таблицу или результат запроса вместо текущей вкладки только для чтения.",
"ai_chat.inspection.safety.recommendation.confirm_jvm_policy": "Текущее подключение JVM следует считать доступным только для чтения; перед mutating-диагностикой подтвердите, нужно ли менять политику.",
"ai_chat.inspection.safety.recommendation.enable_jvm_mutating": "Диагностика JVM сейчас запрещает команды mutating; перед рискованными командами настройте диагностические разрешения.",
"ai_chat.inspection.safety.message.active": "Уровень безопасности AI: {{safety}}; активное подключение: {{connection}}",
"ai_chat.inspection.safety.message.no_connection": "Уровень безопасности AI: {{safety}}; активное подключение не выбрано",
"ai_chat.inspection.provider.message.empty": "Поставщики AI не настроены",
"ai_chat.inspection.provider.message.active_needs_attention": "Используется {{provider}}, но еще нужно проверить {{issueCount}} пунктов",
"ai_chat.inspection.provider.message.active_ready": "Настроено поставщиков: {{count}}; используется {{provider}}",
"ai_chat.inspection.provider.message.unselected": "Настроено поставщиков: {{count}}, но активный поставщик не выбран",
"ai_chat.inspection.table_schema.warning.ddl_fallback": "Не удалось получить DDL таблицы {{tableName}}; выполнен переход к сводке метаданных столбцов.",
"ai_chat.inspection.table_schema.warning.ddl_error": "Ошибка DDL: {{detail}}",
"ai_chat.inspection.table_schema.warning.fallback_limitation": "Этот результат не содержит полных сведений DDL об индексах, ограничениях, триггерах и других объектах; продолжайте анализ по списку столбцов и не останавливайтесь только из-за ошибки прав на DDL.",
"ai_chat.inspection.table_schema.warning.columns_contract": "⚠️ Ниже приведен фактический список field для таблицы {{tableName}}. При генерации SQL используйте только эти значения field как имена столбцов, строго без изменений, сокращений или самостоятельного составления имен.",
"ai_chat.inspection.table_schema.warning.available_fields": "Доступные поля: {{fields}}",
"ai_chat.inspection.table_schema.warning.detail": "Подробности: {{detail}}",
"ai_chat.inspection.table_schema.value.none": "нет",
"ai_chat.inspection.table_schema.error.unknown": "Неизвестная ошибка",
"ai_chat.inspection.table_schema.error.ddl_failed": "Не удалось получить DDL CREATE TABLE: {{detail}}",
"ai_chat.inspection.table_schema.error.ddl_and_columns_failed": "Не удалось получить DDL CREATE TABLE: {{ddlDetail}}; резервное получение списка столбцов также завершилось ошибкой: {{columnDetail}}",
"ai_chat.inspection.mcp.warning.config_errors": "У {{count}} MCP-сервера есть ошибки конфигурации запуска; тестирование и обнаружение инструментов могут завершиться неудачно",
"ai_chat.inspection.mcp.warning.config_warnings": "У {{count}} MCP-сервера есть предупреждения конфигурации запуска; проверьте их перед диагностикой сбоев обнаружения инструментов",
"ai_chat.inspection.mcp.next_action.fix_config_errors": "Сначала исправьте ошибки конфигурации MCP-сервера, затем повторно протестируйте сервер",
"ai_chat.inspection.mcp.next_action.fix_config_warnings": "Откройте затронутый MCP-сервер и разделите команду запуска, аргументы и тайм-аут согласно подсказкам проверки конфигурации",
"ai_chat.inspection.mcp.message.with_issues": "Настроено MCP-серверов: {{serverCount}}; включено: {{enabledCount}}; требуют внимания проверки конфигурации: {{issueCount}}",
"ai_chat.inspection.mcp.message.configured": "Настроено MCP-серверов: {{serverCount}}; включено: {{enabledCount}}",
"ai_chat.inspection.mcp.message.empty": "MCP-серверы еще не настроены",
"ai_chat.inspection.mcp_draft.default_name": "Черновик MCP",
"ai_chat.inspection.mcp_draft.redacted_parse_failed": "[Разбор не удался, исходная команда скрыта]",
"ai_chat.inspection.mcp_draft.parse.no_full_command": "fullCommand не предоставлен; проверен черновик из отдельных полей.",
"ai_chat.inspection.mcp_draft.next_action.command_missing": "Сначала вставьте полную команду запуска из README или хотя бы укажите node, npx, uvx, python либо exe в command.",
"ai_chat.inspection.mcp_draft.next_action.command_whole_line": "Поместите всю строку команды в поле fullCommand для автоматического разбиения; в command оставьте только исполняемый файл, а имя скрипта, пакет и --stdio перенесите в args.",
"ai_chat.inspection.mcp_draft.next_action.args_missing_for_launcher": "Дополните аргументы запуска: npx обычно требует -y и имя пакета, node требует server.js, python требует -m и имя модуля, uvx требует имя пакета, docker требует run, -i и имя образа.",
"ai_chat.inspection.mcp_draft.next_action.docker_run": "Для Docker MCP укажите command как docker и отдельно добавьте run в args.",
"ai_chat.inspection.mcp_draft.next_action.docker_interactive": "Добавьте -i или --interactive в args Docker MCP, чтобы stdio-соединение не закрывалось сразу.",
"ai_chat.inspection.mcp_draft.next_action.docker_image": "Добавьте в args Docker MCP имя образа из README, например mcp/server-fetch:latest.",
"ai_chat.inspection.mcp_draft.next_action.env_lines": "Записывайте переменные окружения по одной на строку в формате KEY=VALUE; не помещайте export, set, env, && или $env:KEY=VALUE; в args.",
"ai_chat.inspection.mcp_draft.next_action.timeout": "Установите timeout на 20 секунд; для медленно стартующих сервисов можно использовать 45 или 60 секунд.",
"ai_chat.inspection.mcp_draft.next_action.ready_to_save": "Текущий черновик можно сохранить и проверить обнаружение инструментов; если найдено 0 инструментов, проверьте, поддерживает ли сервис stdio.",
"ai_chat.inspection.mcp_draft.next_action.can_test_with_warnings": "Текущий черновик можно тестировать, но сначала обработайте warnings, чтобы избежать тайм-аута обнаружения инструментов или 0 найденных инструментов.",
"ai_chat.inspection.mcp_draft.next_action.send_full_command": "Если вы все еще не уверены, как разделить команду, передайте исходную полную команду в fullCommand и дайте GoNavi рассчитать поля.",
"ai_chat.inspection.mcp_docker.next_action.add_run": "Добавьте run в args, например docker run --rm -i <image>",
"ai_chat.inspection.mcp_docker.next_action.add_interactive": "Добавьте -i или --interactive в args, чтобы MCP stdio не закрывался сразу",
"ai_chat.inspection.mcp_docker.next_action.add_image": "Добавьте имя образа из README после опций docker run",
"ai_chat.inspection.mcp_docker.next_action.timeout": "Первый запуск Docker может быть медленным; используйте timeoutSeconds 45 или 60",
"ai_chat.inspection.mcp_docker.next_action.no_tools": "Структура конфигурации выглядит полной, но инструменты не обнаружены; нажмите \"Проверить обнаружение инструментов\", чтобы подтвердить Docker, образ и зависимости в контейнере",
"ai_chat.inspection.mcp_docker.next_action.disabled": "Этот Docker MCP сейчас отключен; после проверки конфигурации включите его и проверьте обнаружение инструментов",
"ai_chat.inspection.mcp_docker.next_action.create_from_readme": "Если README содержит docker run -i --rm <image>, создайте сервер из шаблона \"Docker image\" в настройках MCP",
"ai_chat.inspection.mcp_docker.warning.incomplete": "У Docker MCP-серверов с количеством {{count}} отсутствуют ключевые аргументы, такие как run, -i или имя образа",
"ai_chat.inspection.mcp_docker.next_action.fix_key_args": "Сначала исправьте ключевые аргументы Docker MCP, затем снова проверьте обнаружение инструментов",
"ai_chat.inspection.mcp_docker.warning.config_warnings": "У Docker MCP-серверов с количеством {{count}} все еще есть предупреждения конфигурации",
"ai_chat.inspection.mcp_docker.next_action.open_services": "Откройте соответствующие сервисы Docker MCP и проверьте аргументы и timeout по подсказкам проверки конфигурации",
"ai_chat.inspection.mcp_docker.warning.no_tools": "У включенных Docker MCP-серверов с количеством {{count}} пока не обнаружены инструменты",
"ai_chat.inspection.mcp_docker.next_action.refresh_tools": "Убедитесь, что локальный Docker доступен, образ загружен, затем нажмите \"Проверить обнаружение инструментов\", чтобы обновить список инструментов",
"ai_chat.inspection.mcp_docker.message.with_incomplete": "Сейчас Docker MCP-серверов: {{total}}; у {{count}} ключевые аргументы неполные",
"ai_chat.inspection.mcp_docker.message.with_enabled": "Сейчас Docker MCP-серверов: {{total}}; включено: {{enabled}}",
"ai_chat.inspection.mcp_docker.message.empty": "Docker MCP-серверы сейчас не настроены",
"ai_chat.inspection.mcp_tool_schema.usage.no_input_schema": "Этот MCP-инструмент не объявляет inputSchema; сначала проверьте README сервиса или попробуйте пустой объект.",
"ai_chat.inspection.mcp_tool_schema.usage.required_params": "Перед вызовом {{alias}} укажите: {{parameters}}",
"ai_chat.inspection.mcp_tool_schema.usage.enum_values": "{{path}} должен быть одним из enum-значений: {{values}}",
"ai_chat.inspection.mcp_tool_schema.usage.nested_json": "Вложенные объекты и массивы должны передаваться по JSON-структуре; не передавайте весь объект строкой.",
"ai_chat.inspection.mcp_tool_schema.usage.schema_fields_only": "Передавайте только поля, объявленные в schema; если смысл поля неясен, уточните у пользователя вместо догадки.",
"ai_chat.inspection.mcp_tool_schema.warning.no_tools": "MCP-инструменты не обнаружены; возможно, MCP-сервисы не настроены или тест/обнаружение сервиса завершились ошибкой.",
"ai_chat.inspection.mcp_tool_schema.next_action.inspect_setup": "Сначала вызовите inspect_mcp_setup, чтобы проверить, включены ли MCP-сервисы и обнаружены ли инструменты.",
"ai_chat.inspection.mcp_tool_schema.warning.no_matches": "Подходящий MCP-инструмент не найден.",
"ai_chat.inspection.mcp_tool_schema.next_action.lookup_alias": "Сначала вызовите inspect_mcp_setup, чтобы проверить фактически обнаруженные alias MCP-инструментов, затем ищите по точному alias.",
"ai_chat.inspection.mcp_tool_schema.warning.missing_schema": "Некоторые MCP-инструменты не объявляют inputSchema, поэтому описание параметров может быть неполным.",
"ai_chat.inspection.mcp_tool_schema.next_action.read_readme": "Для инструментов без schema вернитесь к README MCP-сервиса или используйте ошибки инструмента для уточнения параметров.",
"ai_chat.inspection.mcp_tool_schema.message.with_matches": "Найдено MCP-инструментов: {{matched}}; возвращено сводок parameter schema: {{returned}}",
"ai_chat.inspection.mcp_tool_schema.message.no_matches": "Подходящий MCP-инструмент не найден",
"ai_chat.inspection.mcp_tool_schema.message.empty": "Доступной schema MCP-инструментов пока нет",
"ai_chat.inspection.mcp_runtime.next_action.command_not_found": "Проверьте, что command содержит только имя исполняемого файла, и убедитесь, что команда есть в PATH или задана абсолютным путем.",
"ai_chat.inspection.mcp_runtime.next_action.timeout": "Увеличьте timeoutSeconds до 45 или 60 и убедитесь, что после запуска сервис сохраняет stdio-соединение.",
"ai_chat.inspection.mcp_runtime.next_action.permission": "Проверьте права исполняемого файла, блокировки антивируса/системы и доступ к рабочему каталогу.",
"ai_chat.inspection.mcp_runtime.next_action.auth": "Проверьте, что Token/API Key в переменных окружения задан, не истек и имеет достаточную область доступа.",
"ai_chat.inspection.mcp_runtime.next_action.network": "Проверьте доступность удаленного адреса, прокси, VPN или локального порта, от которых зависит MCP.",
"ai_chat.inspection.mcp_runtime.next_action.stdio_closed": "Убедитесь, что указаны требуемые README аргументы --stdio/stdin; для Docker проверьте, что args содержит -i.",
"ai_chat.inspection.mcp_runtime.next_action.process_exit": "Запустите команду запуска отдельно в терминале и проверьте, почему процесс завершается сразу после старта.",
"ai_chat.inspection.mcp_runtime.next_action.argument_error": "Сначала вызовите inspect_mcp_tool_schema, чтобы прочитать фактическую inputSchema, затем исправьте arguments JSON инструмента.",
"ai_chat.inspection.mcp_runtime.next_action.transport": "Новые MCP-серверы в GoNavi сейчас поддерживают только stdio; для HTTP MCP используйте HTTP-сервис GoNavi или соответствующую инструкцию удаленного подключения.",
"ai_chat.inspection.mcp_runtime.next_action.unknown": "Проверьте конфигурацию через inspect_mcp_setup, затем вызовите inspect_app_logs с большим окном логов, чтобы подтвердить исходную ошибку.",
"ai_chat.inspection.mcp_runtime.next_action.enabled_without_tools": "У некоторых включенных MCP-серверов нет обнаруженных инструментов; сначала нажмите \"Проверить обнаружение инструментов\" и убедитесь, что команда запуска выполняется отдельно.",
"ai_chat.inspection.mcp_runtime.next_action.fix_discovery_first": "Если список инструментов пуст, сначала исправьте сбой запуска/обнаружения, затем проверяйте arguments отдельного инструмента.",
"ai_chat.inspection.mcp_runtime.next_action.expand_logs": "В последних логах не найден сигнал сбоя MCP; если проблема только что воспроизводилась, увеличьте lineLimit или отфильтруйте точнее через serverName.",
"ai_chat.inspection.mcp_runtime.warning.failure_events": "В последних логах найдено сигналов runtime-сбоев MCP: {{count}}.",
"ai_chat.inspection.mcp_runtime.warning.enabled_without_tools": "У включенных MCP-серверов без обнаруженных инструментов: {{count}}.",
"ai_chat.inspection.mcp_runtime.message.failure_events": "В последних логах найдено сигналов runtime-сбоев MCP: {{count}}",
"ai_chat.inspection.mcp_runtime.message.no_failure_events": "В последних логах не найдено сигналов сбоя запуска MCP, обнаружения инструментов или вызова инструментов.",
"ai_chat.inspection.mcp_runtime.error.read_logs_failed": "Не удалось прочитать логи runtime-сбоев MCP: {{detail}}",
"ai_chat.inspection.mcp_runtime.error.read_logs_unsupported": "Текущая среда не поддерживает чтение логов приложения GoNavi",
"ai_chat.inspection.diagnostics.error.read_app_logs_failed": "Не удалось прочитать логи приложения GoNavi: {{detail}}",
"ai_chat.inspection.diagnostics.error.read_ai_upstream_logs_failed": "Не удалось прочитать логи запросов AI к внешнему сервису: {{detail}}",
"ai_chat.inspection.diagnostics.error.read_recent_connection_failures_failed": "Не удалось прочитать последние записи о сбоях подключения: {{detail}}",
"ai_chat.inspection.diagnostics.error.read_app_logs_unsupported": "Текущая среда не поддерживает чтение логов приложения GoNavi",
"ai_chat.inspection.diagnostics.error.unknown": "Неизвестная ошибка",
"ai_chat.inspection.snapshot.error.inspect_current_connection": "Не удалось прочитать текущее подключение: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_connection_capabilities": "Не удалось прочитать матрицу возможностей текущего подключения: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_saved_connections": "Не удалось прочитать список сохраненных подключений: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_redis_topology": "Не удалось прочитать конфигурацию топологии Redis: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_external_sql_directories": "Не удалось прочитать внешние каталоги SQL: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_external_sql_file": "Не удалось прочитать внешний SQL-файл: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_sessions": "Не удалось прочитать локальный список AI-сеансов: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_active_tab": "Не удалось прочитать текущую активную вкладку: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_workspace_tabs": "Не удалось прочитать текущие вкладки рабочей области: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_context": "Не удалось прочитать текущий AI-контекст: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_recent_sql_logs": "Не удалось получить последние SQL-логи: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_recent_sql_activity": "Не удалось свести недавнюю SQL-активность: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_sql_editor_transaction": "Не удалось прочитать состояние транзакции SQL-редактора: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_mcp_runtime_failures": "Не удалось прочитать диагностику runtime-сбоев MCP: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_last_render_error": "Не удалось прочитать последнюю ошибку рендеринга AI: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_message_flow": "Не удалось прочитать диагностику потока сообщений AI: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_context_budget": "Не удалось прочитать диагностику объема AI-контекста: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_codebase_hotspots": "Не удалось прочитать диагностику горячих участков кода: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_saved_queries": "Не удалось прочитать сохраненные запросы: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_sql_snippets": "Не удалось прочитать SQL-фрагменты: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_shortcuts": "Не удалось прочитать конфигурацию горячих клавиш: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_app_health": "Не удалось прочитать обзор состояния AI-приложения: {{detail}}",
"ai_chat.inspection.snapshot.error.default": "Не удалось прочитать локальный снимок проверки: {{detail}}",
"ai_chat.inspection.upstream_logs.warning.invalid_json": "request body не является полным JSON. Возможно, он был обрезан в логах, поэтому структурированную сводку сформировать нельзя.",
"ai_chat.inspection.upstream_logs.warning.not_json_object": "request body не является JSON object, поэтому поля модели, сообщений и инструментов нельзя определить.",
"ai_chat.inspection.upstream_logs.warning.missing_messages": "Поля messages, contents, system или prompt не найдены. Проверьте, соответствует ли upstream-протокол ожиданиям.",
"ai_chat.inspection.upstream_logs.warning.missing_tools": "payload не содержит tools/functions, поэтому модель не сможет инициировать вызов инструмента.",
"ai_chat.inspection.upstream_logs.warning.large_input": "Объем входного текста велик. При необходимости сузьте контекст или уменьшите объем логов/DDL.",
"ai_chat.inspection.upstream_logs.message.empty": "В последних логах не найдены записи AI upstream request. Сначала отправьте одно AI-сообщение или повторите с большим lineLimit.",
"ai_chat.inspection.upstream_logs.next_action.filter_request_body": "Чтобы проверить полные входные данные, сначала точно отфильтруйте по requestId, затем проверьте, не был ли bodyPreview обрезан.",
"ai_chat.inspection.upstream_logs.next_action.inspect_timeout": "Если есть только start без completion/failure, продолжите через inspect_app_logs или увеличьте lineLimit, чтобы проверить возможный timeout.",
"ai_chat.inspection.upstream_logs.next_action.confirm_logging": "Убедитесь, что текущая сборка содержит логирование AI upstream request.",
"ai_chat.inspection.upstream_logs.next_action.send_message": "Отправьте одно AI-сообщение в чат, затем вызовите этот инструмент снова.",
"ai_chat.inspection.upstream_logs.next_action.read_warn_error": "Если записей по-прежнему нет, вызовите inspect_app_logs, чтобы прочитать последние исходные WARN/ERROR логи.",
"ai_chat.inspection.sql_risk.warning.unrecognized_operation": "Не удалось распознать допустимое ключевое слово операции SQL.",
"ai_chat.inspection.sql_risk.warning.data_change": "Этот оператор изменяет данные. Перед выполнением проверьте целевую базу, условия и область воздействия.",
"ai_chat.inspection.sql_risk.warning.ddl_change": "Этот оператор изменяет структуры или объекты базы данных. Сначала сделайте резервную копию и подтвердите план отката.",
"ai_chat.inspection.sql_risk.warning.routine_side_effect": "Этот оператор вызывает routine или procedure и может иметь неявные записи или побочные эффекты.",
"ai_chat.inspection.sql_risk.warning.delete_missing_where": "В DELETE отсутствует условие WHERE, поэтому он может удалить всю таблицу.",
"ai_chat.inspection.sql_risk.warning.update_missing_where": "В UPDATE отсутствует условие WHERE, поэтому он может обновить всю таблицу.",
"ai_chat.inspection.sql_risk.warning.truncate": "TRUNCATE быстро очищает данные таблицы и обычно не откатывается построчно.",
"ai_chat.inspection.sql_risk.warning.drop_object": "DROP удаляет объекты базы данных. Перед выполнением подтвердите объект и резервную копию.",
"ai_chat.inspection.sql_risk.warning.permission_change": "GRANT / REVOKE изменяет границы прав доступа. Подтвердите получателя и область действия.",
"ai_chat.inspection.sql_risk.warning.multi_statement": "Обнаружено операторов SQL: {{count}}. Перед пакетным выполнением подтвердите область воздействия каждого оператора.",
"ai_chat.inspection.sql_risk.warning.safety_blocked": "Текущая политика безопасности AI не разрешает SQL типа {{operationType}}.",
"ai_chat.inspection.sql_risk.warning.safety_blocked_unknown": "Текущая политика безопасности AI не разрешает этот тип операции SQL.",
"ai_chat.inspection.sql_risk.error.inspect_failed": "Не удалось проверить риск SQL: {{detail}}",
"ai_chat.inspection.sql_risk.message.no_active_query_sql": "Текущая активная вкладка не является вкладкой SQL-запроса, либо в редакторе нет SQL-содержимого.",
"ai_chat.inspection.sql_risk.message.no_sql": "SQL не передан, и нет доступной для чтения активной вкладки SQL-запроса.",
"ai_chat.inspection.sql_risk.next_action.provide_sql": "Сначала передайте параметр sql или переключитесь на вкладку запроса с черновиком SQL.",
"ai_chat.inspection.sql_risk.next_action.explain_and_confirm": "Сначала объясните пользователю риски, затем попросите подтвердить продолжение.",
"ai_chat.inspection.sql_risk.next_action.confirm_write_scope": "Для операторов записи или DDL сначала подтвердите WHERE, резервные копии, целевую базу и область воздействия.",
"ai_chat.inspection.sql_risk.next_action.read_only_check_target": "Запросы только для чтения менее рискованны, но целевое подключение и имя базы всё равно следует проверить заранее.",
"ai_chat.inspection.database_bundle.error.db_name_required": "dbName не должен быть пустым",
"ai_chat.inspection.database_bundle.error.table_name_required": "tableName не должен быть пустым",
"ai_chat.inspection.database_bundle.error.database_overview_failed": "Не удалось получить обзор структуры базы данных: {{detail}}",
"ai_chat.inspection.database_bundle.error.table_snapshot_failed": "Не удалось получить снимок структуры таблицы: {{detail}}",
"ai_chat.inspection.database_bundle.error.unknown": "Неизвестная ошибка",
"ai_chat.inspection.database_bundle.warning.all_columns_failed": "Не удалось получить сводку столбцов: {{detail}}",
"ai_chat.inspection.database_bundle.warning.columns_failed": "Не удалось получить список столбцов: {{detail}}",
"ai_chat.inspection.database_bundle.warning.ddl_failed": "Не удалось получить DDL: {{detail}}",
"ai_chat.inspection.database_bundle.warning.foreign_keys_failed": "Не удалось получить связи внешних ключей: {{detail}}",
"ai_chat.inspection.database_bundle.warning.indexes_failed": "Не удалось получить определения индексов: {{detail}}",
"ai_chat.inspection.database_bundle.warning.sample_rows_failed": "Не удалось получить образцы данных: {{detail}}",
"ai_chat.inspection.database_bundle.warning.tables_failed": "Не удалось получить список таблиц: {{detail}}",
"ai_chat.inspection.database_bundle.warning.tables_failed_with_column_fallback": "Не удалось получить список таблиц, выполнен откат к выводу по сводке столбцов: {{detail}}",
"ai_chat.inspection.database_bundle.warning.triggers_failed": "Не удалось получить триггеры: {{detail}}",
"ai_chat.inspection.setup.blocker.no_active_provider": "Активный поставщик AI не выбран",
"ai_chat.inspection.setup.blocker.missing_secret": "У активного поставщика отсутствует API Key / Secret",
"ai_chat.inspection.setup.blocker.missing_base_url": "У активного поставщика отсутствует base URL",
"ai_chat.inspection.setup.blocker.missing_model": "У активного поставщика не выбрана модель",
"ai_chat.inspection.setup.next_action.select_provider": "Сначала добавьте и выберите активного поставщика в настройках AI",
"ai_chat.inspection.setup.next_action.fill_secret": "Заполните secret активного поставщика",
"ai_chat.inspection.setup.next_action.fill_base_url": "Заполните baseUrl активного поставщика",
"ai_chat.inspection.setup.next_action.select_model": "Выберите доступную модель для активного поставщика",
"ai_chat.inspection.setup.next_action.wait_models": "Дождитесь завершения загрузки списка моделей, затем снова подтвердите активную модель",
"ai_chat.inspection.setup.next_action.add_mcp_server": "Чтобы расширить возможности AI-инструментов, добавьте и протестируйте хотя бы один MCP-сервер",
"ai_chat.inspection.setup.next_action.connect_external_client": "Чтобы внешние Agents могли использовать GoNavi MCP, подключите локальные клиенты вроде Claude Code/Codex или настройте удаленный MCP-мост для облачных Agents",
"ai_chat.inspection.setup.next_action.test_mcp_servers": "Проверьте каждый включенный MCP-сервер и подтвердите, что команда, аргументы и переменные окружения корректно обнаруживают инструменты",
"ai_chat.inspection.setup.next_action.add_guidance": "Чтобы закрепить стиль ответа или workflow, добавьте пользовательские промпты или включите Skills",
"ai_chat.inspection.setup.next_action.attach_schema_context": "Для более точных SQL- или структурных рекомендаций сначала прикрепите schema целевой таблицы к контексту AI",
"ai_chat.inspection.setup.warning.loading_models": "Список моделей еще загружается, поэтому выбор модели пока не завершен",
"ai_chat.inspection.setup.warning.no_mcp_servers": "MCP-серверы еще не настроены",
"ai_chat.inspection.setup.warning.external_client_not_connected": "Claude Code / Codex еще не подключен к текущему GoNavi MCP как локальный клиент; OpenClaw/Hermans требуется удаленный мост",
"ai_chat.inspection.setup.warning.no_mcp_tools": "MCP-серверы включены, но доступные MCP-инструменты еще не обнаружены",
"ai_chat.inspection.setup.warning.no_guidance": "Пользовательские промпты или Skills не настроены",
"ai_chat.inspection.setup.warning.no_schema_context": "Чат готов, но контекст schema таблицы еще не прикреплен",
"ai_chat.inspection.setup.message.ready": "Проверка состояния AI-настройки пройдена; поставщик, предварительные условия чата и путь выполнения MCP доступны",
"ai_chat.inspection.setup.message.blocked": "В AI-настройке есть {{count}} блокирующих проблем; сначала исправьте активного поставщика и предварительные условия чата",
"ai_chat.inspection.setup.message.needs_attention": "AI-настройка в целом пригодна к работе, но еще можно оптимизировать {{count}} рекомендаций",
"ai_chat.inspection.ai_config.error.inspect_ai_setup_health": "Не удалось проверить текущую AI-настройку",
"ai_chat.inspection.ai_config.error.inspect_ai_runtime": "Не удалось прочитать текущее состояние выполнения AI",
"ai_chat.inspection.ai_config.error.inspect_ai_safety": "Не удалось прочитать текущую границу безопасности AI",
"ai_chat.inspection.ai_config.error.inspect_ai_providers": "Не удалось прочитать текущую конфигурацию поставщика AI",
"ai_chat.inspection.ai_config.error.inspect_ai_chat_readiness": "Не удалось прочитать предварительные условия AI-чата",
"ai_chat.inspection.ai_config.error.inspect_ai_tool_catalog": "Не удалось прочитать каталог AI-инструментов",
"ai_chat.inspection.ai_config.error.inspect_mcp_setup": "Не удалось прочитать состояние настройки MCP",
"ai_chat.inspection.ai_config.error.inspect_mcp_remote_access": "Не удалось прочитать руководство по удаленному доступу MCP",
"ai_chat.inspection.mcp_remote.strategy.reverse_proxy.title": "Внутренний reverse proxy",
"ai_chat.inspection.mcp_remote.strategy.reverse_proxy.detail": "Подходит, когда Windows GoNavi и облачный Agent уже находятся за доверенной внутренней сетью или шлюзом.",
"ai_chat.inspection.mcp_remote.strategy.reverse_proxy.risk": "Продолжайте ограничивать исходные IP, TLS и Bearer Token на уровне шлюза; не открывайте доступ напрямую в публичный интернет.",
"ai_chat.inspection.mcp_remote.strategy.ssh_reverse_tunnel.title": "Обратный SSH-туннель",
"ai_chat.inspection.mcp_remote.strategy.ssh_reverse_tunnel.detail": "Подходит, чтобы временно отобразить Windows 127.0.0.1:8765 на облачный Linux. Настройка проста, но SSH-аккаунт и порт должны быть под контролем.",
"ai_chat.inspection.mcp_remote.strategy.ssh_reverse_tunnel.risk": "После разрыва туннеля облачный Agent станет недоступен; подходит для PoC или контролируемой эксплуатации.",
"ai_chat.inspection.mcp_remote.strategy.cloudflare_tunnel.title": "Cloudflare Tunnel",
"ai_chat.inspection.mcp_remote.strategy.cloudflare_tunnel.detail": "Подходит для Windows-машин без постоянной публичной точки входа, с дополнительной проверкой личности через Cloudflare Access.",
"ai_chat.inspection.mcp_remote.strategy.cloudflare_tunnel.risk": "Правила Access / Zero Trust должны быть включены; нельзя полагаться только на случайный URL.",
"ai_chat.inspection.mcp_remote.strategy.tailscale.title": "Tailscale / WireGuard",
"ai_chat.inspection.mcp_remote.strategy.tailscale.detail": "Подходит, если Windows GoNavi и облачный Agent могут быть в одной приватной сети и использовать внутренний адрес.",
"ai_chat.inspection.mcp_remote.strategy.tailscale.risk": "Настройте ACL так, чтобы только целевой Agent мог обращаться к порту GoNavi MCP.",
"ai_chat.inspection.mcp_remote.strategy.custom.title": "Пользовательский мост",
"ai_chat.inspection.mcp_remote.strategy.custom.detail": "Подходит, если уже есть корпоративный шлюз, bastion host или выделенный MCP-шлюз.",
"ai_chat.inspection.mcp_remote.strategy.custom.risk": "TLS, аутентификация, аудит и ограничения источника должны быть явно определены, чтобы не раскрывать локальные возможности баз данных неизвестным Agents.",
"ai_chat.inspection.mcp_remote.next_action.start_local_http": "Запустите режим GoNavi MCP HTTP на Windows и проверьте доступность /healthz.",
"ai_chat.inspection.mcp_remote.next_action.expose_mcp_only": "Откройте только /mcp для целевого облачного Agent через туннель, reverse proxy или приватную сеть.",
"ai_chat.inspection.mcp_remote.next_action.configure_agent": "Настройте Streamable HTTP MCP URL и Authorization Bearer Token в OpenClaw/Hermans.",
"ai_chat.inspection.mcp_remote.next_action.inspect_connections": "Сначала вызовите get_connections, чтобы получить connectionId, затем читайте схемы; не копируйте пароли баз данных в облачный Agent.",
"ai_chat.inspection.mcp_remote.warning.missing_public_url": "Не указан MCP URL, доступный облачному Agent; удаленный Agent не может напрямую обращаться к Windows 127.0.0.1.",
"ai_chat.inspection.mcp_remote.warning.non_https_public_url": "Удаленный MCP URL не использует HTTPS; если это не адрес приватной сети, добавьте TLS или поместите его за контролируемым туннелем.",
"ai_chat.inspection.mcp_remote.warning.missing_token": "Готовность Bearer Token не подтверждена; HTTP MCP должен использовать случайный token и не должен быть открыт без аутентификации.",
"ai_chat.inspection.mcp_remote.message.with_public_url": "Удаленный Agent должен обращаться к GoNavi MCP через {{publicUrl}} и проходить аутентификацию Bearer Token",
"ai_chat.inspection.mcp_remote.message.no_public_url": "Удаленному Agent нужен доступ к Windows GoNavi MCP HTTP endpoint через контролируемый туннель или reverse proxy",
"ai_chat.inspection.mcp_remote.security.recommended_bind_address": "127.0.0.1, если перед ним нет контролируемого шлюза или приватной сети",
"ai_chat.inspection.ai_config.error.inspect_mcp_authoring_guide": "Не удалось прочитать руководство по созданию MCP",
"ai_chat.inspection.ai_config.error.inspect_mcp_draft": "Не удалось проверить черновик MCP",
"ai_chat.inspection.ai_config.error.inspect_mcp_docker_setup": "Не удалось проверить настройку Docker MCP",
"ai_chat.inspection.ai_config.error.inspect_mcp_tool_schema": "Не удалось прочитать schema параметров MCP-инструмента",
"ai_chat.inspection.ai_config.error.inspect_ai_guidance": "Не удалось прочитать текущую конфигурацию AI-промптов и Skills",
"ai_chat.inspection.current_connection.no_active": "Активное подключение сейчас не выбрано",
"ai_chat.inspection.current_connection.cache_missing": "Текущее активное подключение отсутствует в локальном кэше",
"ai_chat.inspection.ai_context.linked_summary": "Сейчас связано контекстов схем таблиц: {{count}}",
"ai_chat.inspection.ai_context.none_linked": "Сейчас нет связанных контекстов схем таблиц AI",
"ai_chat.inspection.connection_capabilities.no_connection": "Нет подключения, доступного для анализа возможностей",
"ai_chat.inspection.connection_capabilities.cache_missing": "Целевое подключение отсутствует в локальном кэше",
"ai_chat.inspection.connection_capabilities.hint.readonly_result": "Результаты запросов для этого источника данных по умолчанию показываются только для чтения и не редактируются напрямую.",
"ai_chat.inspection.connection_capabilities.hint.editable_result": "Результаты запросов для этого источника данных могут перейти к редактированию, если доступны условия определения строк.",
"ai_chat.inspection.connection_capabilities.hint.manual_total_count": "Для общего числа результатов предпочтительны ручной или отложенный подсчет вместо прямой опоры на быстрые итоги.",
"ai_chat.inspection.connection_capabilities.hint.regular_total_count": "Для общего числа результатов можно предпочесть обычный путь подсчета.",
"ai_chat.inspection.connection_capabilities.hint.approximate_table_count": "При просмотре таблиц можно показывать приблизительное число строк, чтобы снизить затраты подсчета для больших таблиц.",
"ai_chat.inspection.connection_capabilities.hint.exact_table_count": "При просмотре таблиц приблизительное число строк по умолчанию не используется.",
"ai_chat.inspection.connection_capabilities.hint.message_publish_supported": "Этот источник данных предоставляет вход для тестовой отправки сообщений и подходит для проверки интеграции Topic/Queue.",
"ai_chat.inspection.connection_capabilities.hint.message_publish_unsupported": "Этот источник данных не предоставляет вход для тестовой отправки сообщений.",
"ai_chat.inspection.connection_capabilities.summary": "Текущее подключение {{connectionName}} ({{type}}) предоставляет сигналов возможностей фронтенда: {{count}}",
"ai_chat.inspection.workspace.no_active_tab": "Активная вкладка сейчас не выбрана",
"ai_chat.inspection.redis_topology.label.single": "Standalone Redis",
"ai_chat.inspection.redis_topology.label.cluster": "Redis Cluster",
"ai_chat.inspection.redis_topology.label.sentinel": "Redis Sentinel",
"ai_chat.inspection.redis_topology.warning.missing_host": "host пуст; перед подключением укажите Redis node или Sentinel address",
"ai_chat.inspection.redis_topology.warning.ssh_unsupported": "{{topologyLabel}} не поддерживается текущим backend через SSH tunnel; используйте direct access, proxy или remote MCP HTTP",
"ai_chat.inspection.redis_topology.warning.missing_sentinel_master": "Sentinel master name пуст; go-redis FailoverClient не сможет обнаружить primary node",
"ai_chat.inspection.redis_topology.warning.single_sentinel_node": "Настроен только один Sentinel node; укажите минимум 2-3 Sentinel addresses, чтобы избежать single point of failure",
"ai_chat.inspection.redis_topology.warning.sentinel_default_redis_port": "Primary Sentinel address использует port 6379; подтвердите, что это Sentinel port, обычно 26379",
"ai_chat.inspection.redis_topology.warning.cluster_single_seed": "Настроен только один Cluster seed node; добавьте несколько master/replica nodes, чтобы повысить надежность discovery",
"ai_chat.inspection.redis_topology.warning.cluster_logical_db": "Redis Cluster физически поддерживает только db0; GoNavi эмулирует логическую изоляцию DB через prefix __gonavi_db_N__:",
"ai_chat.inspection.redis_topology.warning.cluster_sentinel_fields_ignored": "Поля Sentinel master и Sentinel user не действуют в Cluster mode",
"ai_chat.inspection.redis_topology.warning.single_multiple_nodes": "В Standalone mode указано несколько node addresses; backend будет использовать multi-node Cluster path, поэтому явно переключите Cluster mode",
"ai_chat.inspection.redis_topology.warning.single_sentinel_fields_ignored": "Поля Sentinel не действуют в Standalone mode; переключите Sentinel mode, если требуется Sentinel discovery",
"ai_chat.inspection.redis_topology.db_note.cluster_logical_namespace": "Redis Cluster физически поддерживает только db0; GoNavi эмулирует multi-DB view через prefix __gonavi_db_N__:",
"ai_chat.inspection.redis_topology.db_note.sentinel_selected_db": "После того как Sentinel обнаружит master, GoNavi подключится к выбранной DB и сохранит настройки Sentinel при повторном подключении.",
"ai_chat.inspection.redis_topology.db_note.single_selected_db": "Standalone mode напрямую использует Redis SELECT DB.",
"ai_chat.inspection.redis_topology.next_action.fill_host": "Сначала заполните host; для Sentinel mode используйте Sentinel addresses, для Cluster mode используйте Redis Cluster seed nodes.",
"ai_chat.inspection.redis_topology.next_action.fill_sentinel_master": "Заполните Sentinel master name, например mymaster.",
"ai_chat.inspection.redis_topology.next_action.disable_ssh": "Отключите SSH tunnel и используйте direct access, proxy/VPN или GoNavi MCP HTTP, чтобы remote Agent обращался к Redis через локальный GoNavi.",
"ai_chat.inspection.redis_topology.next_action.check_sentinel_port": "Измените port primary Sentinel address на 26379, если ваш Sentinel явно не слушает другой port.",
"ai_chat.inspection.redis_topology.next_action.review_cluster_logical_db": "Проверьте, действительно ли workload требует Redis Cluster multi-DB view; если это только группировка key, предпочитайте application namespace.",
"ai_chat.inspection.redis_topology.next_action.align_single_topology": "Явно переключите Cluster mode или удалите extra nodes и оставьте один Standalone address, чтобы избежать несоответствия configured topology и backend topology.",
"ai_chat.inspection.redis_topology.next_action.test_connection": "Конфигурация выглядит пригодной для {{topologyLabel}}; затем протестируйте подключение и проверьте Redis DB/key tree.",
"ai_chat.inspection.redis_topology.recommendation.sentinel_addresses": "Подтвердите, что host и extra nodes являются Sentinel addresses, а не Redis master addresses.",
"ai_chat.inspection.redis_topology.recommendation.separate_auth": "Заполняйте Redis data-node credentials и Sentinel credentials отдельно; не смешивайте их.",
"ai_chat.inspection.redis_topology.recommendation.cluster_multiple_seeds": "Предпочитайте минимум два seed nodes и подтвердите, что они относятся к одному Redis Cluster.",
"ai_chat.inspection.redis_topology.recommendation.cluster_namespace": "Если нужна multi-DB view, предпочитайте явные namespaces в business keys, чтобы не неверно понимать физическое ограничение Cluster на db0.",
"ai_chat.inspection.redis_topology.recommendation.single_one_address": "Standalone mode должен содержать один Redis address; если nodes несколько, используйте Cluster или Sentinel mode.",
"ai_chat.inspection.redis_topology.recommendation.network_for_cluster_sentinel": "Для доступа к Redis Cluster/Sentinel через сеть предпочитайте network proxy, VPN или GoNavi MCP HTTP вместо single-port SSH tunnel.",
"ai_chat.inspection.redis_topology.recommendation.check_tls": "TLS включен; если подключение не удается, сначала проверьте sslMode, CA/certificate paths и server SNI.",
"ai_chat.inspection.external_sql_file.error.read_failed": "Не удалось прочитать внешний SQL-файл: {{detail}}",
"ai_chat.inspection.external_sql_file.error.file_path_required": "filePath не должен быть пустым",
"ai_chat.inspection.external_sql_file.error.outside_configured_directory": "Целевой файл находится вне настроенных внешних SQL-каталогов",
"ai_chat.inspection.external_sql_file.error.unsupported_runtime": "Текущая среда выполнения пока не поддерживает чтение локальных SQL-файлов",
"ai_chat.inspection.external_sql_file.error.unknown": "Неизвестная ошибка",
"ai_chat.inspection.ai_sessions.untitled": "Безымянный сеанс",
"ai_chat.inspection.app_log.message.no_keyword_match": "В последних логах нет записей по ключевому слову \"{{keyword}}\".",
"ai_chat.inspection.app_log.message.no_readable_entries": "В последних логах нет доступных для чтения записей.",
"ai_chat.inspection.message_flow.warning.unresolved_tool_calls": "У {{count}} вызовов инструментов нет соответствующих сообщений результата tool.",
"ai_chat.inspection.message_flow.warning.consecutive_assistant": "Найдено {{count}} пар подряд идущих сообщений assistant; ответ мог быть разделен на несколько пузырей.",
"ai_chat.inspection.message_flow.warning.empty_assistant": "Найдено {{count}} пустых сообщений assistant.",
"ai_chat.inspection.message_flow.warning.loading_message": "В сеансе все еще есть сообщение loading; потоковая генерация может быть активна или прежнее прерывание не было очищено.",
"ai_chat.inspection.message_flow.next_action.check_tool_results": "Сначала проверьте, записывает ли useAIChatLocalTools сообщение tool для каждого tool_call_id.",
"ai_chat.inspection.message_flow.next_action.check_stream_append": "Проверьте, переиспользует ли логика потокового добавления тот же assistantMsgId, а не создает новое сообщение assistant для того же ответа.",
"ai_chat.inspection.message_flow.next_action.check_empty_assistant": "Проверьте, не оставили ли пути ошибки или отмены пустые сообщения-заполнители assistant.",
"ai_chat.inspection.message_flow.next_action.inspect_render_or_logs": "В структуре потока сообщений не найдено явных аномалий; продолжите диагностику рендеринга или выполнения через inspect_ai_last_render_error либо inspect_app_logs.",
"ai_chat.inspection.sql_editor_transaction.no_active_tab": "Активная вкладка сейчас не выбрана",
"ai_chat.inspection.sql_editor_transaction.not_sql_tab": "Текущая активная вкладка не является вкладкой SQL-редактора",
"ai_chat.inspection.sql_editor_transaction.semantics.managed_dml": "Когда SQL-редактор выполняет DML INSERT/UPDATE/DELETE/MERGE/REPLACE, он сначала входит в управляемую транзакцию. Настройка коммита определяет только момент COMMIT после успешного выполнения.",
"ai_chat.inspection.sql_editor_transaction.semantics.explicit_transaction": "Обнаружены явные операторы управления транзакцией, поэтому GoNavi не будет оборачивать их еще одной управляемой транзакцией SQL-редактора.",
"ai_chat.inspection.sql_editor_transaction.semantics.no_managed_transaction": "Текущий SQL не запускает управляемую транзакцию SQL-редактора. Запросы только для чтения по-прежнему используют обычный путь выполнения.",
"ai_chat.inspection.sql_editor_transaction.warning.pending_transactions": "Есть {{count}} управляемых транзакций SQL-редактора, ожидающих commit или rollback",
"ai_chat.inspection.sql_editor_transaction.warning.active_pending_transaction": "В активной SQL-вкладке уже есть ожидающая транзакция. Перед новым DML сначала выполните commit или rollback.",
"ai_chat.inspection.sql_editor_transaction.warning.auto_commit_managed_dml": "Автоматический commit включен, но DML все равно сначала входит в управляемую транзакцию и выполняет COMMIT только после задержки.",
"ai_chat.inspection.sql_editor_transaction.warning.explicit_transaction_control": "Текущий SQL уже содержит явное управление транзакцией, поэтому SQL-редактор не будет брать на себя commit или rollback.",
"ai_chat.inspection.sql_editor_transaction.next_action.resolve_active_pending": "Попросите пользователя нажать «Commit» или «Rollback» в панели транзакции области результатов либо дождаться окончания обратного отсчета auto-commit.",
"ai_chat.inspection.sql_editor_transaction.next_action.switch_to_pending_tab": "Перед продолжением DML вернитесь к соответствующей SQL-вкладке и завершите ожидающую транзакцию.",
"ai_chat.inspection.sql_editor_transaction.next_action.explain_auto_commit": "Объясните, что текущий DML сначала открывает управляемую транзакцию и автоматически выполняет commit примерно через {{seconds}} секунд после успешного выполнения.",
"ai_chat.inspection.sql_editor_transaction.next_action.explain_manual_commit": "Объясните, что текущий DML сначала открывает управляемую транзакцию, а после успешного выполнения требует ручного Commit или Rollback.",
"ai_chat.inspection.sql_editor_transaction.next_action.switch_to_sql_tab": "Сначала переключитесь на вкладку запроса с черновиком SQL или попросите пользователя вставить SQL, который нужно выполнить.",
"ai_chat.inspection.sql_editor_transaction.next_action.inspect_recent_activity": "Просмотрите recentRelevantLogs для последних результатов записи или транзакций и при необходимости вызовите inspect_recent_sql_activity для детализации.",
"ai_chat.inspection.sql_editor_transaction.commit_policy.semantics": "SQL-редактор выполняет DML INSERT/UPDATE/DELETE/MERGE/REPLACE внутри управляемой транзакции. Ручной или автоматический режим управляет только тем, когда после успешного выполнения произойдет COMMIT, а не тем, будет ли открыта транзакция.",
"ai_chat.inspection.sql_log.unspecified_database": "(База данных не указана)",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.desc": "Просмотреть недавние журналы выполнения SQL",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.detail": "Принимает необязательные фильтры limit и status, затем возвращает недавние записи выполнения SQL: базу данных, длительность, успех или сбой, ошибку, затронутые строки и текст SQL. Используйте для поиска сбойных операторов, медленных запросов и объяснения или оптимизации AI на основе реальной истории выполнения.",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.tool_description": "Получает сводку недавних журналов выполнения SQL с необязательной фильтрацией по успеху или сбою. Используйте для просмотра недавно выполненного SQL, диагностики сбоев, поиска медленных запросов и объяснения или оптимизации AI на основе реальной истории выполнения.",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.param.limit": "Необязательно. Количество возвращаемых записей журнала. По умолчанию 20, максимум 100.",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.param.status": "Необязательно. Фильтр по статусу выполнения: all, success или error. По умолчанию all.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.desc": "Суммировать распределение недавней активности SQL",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.detail": "Можно фильтровать по status, activityKind, dbName и keyword, затем возвращается структурированная сводка недавней активности SQL: доля чтения/записи/DDL, распределение типов операторов, распределение по базам данных, недавние ошибки, недавние записи и самые медленные операторы. Используйте, когда пользователь спрашивает, что выполнялось недавно, могли ли быть удалены данные, в какой базе больше всего сбоев или была ли активность в основном чтением или записью.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.tool_description": "Суммирует структурированный профиль недавней активности SQL с необязательной фильтрацией по статусу выполнения, типу активности, имени базы данных и ключевому слову. Используйте для проверки недавних операций чтения/записи, концентрации ошибок в базе данных, активности DELETE или DDL и предварительной оценки AI по реальной картине выполнения.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.limit": "Необязательно. Максимальное число возвращаемых недавних образцов активности. По умолчанию 30, максимум 100.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.status": "Необязательно. Фильтр по статусу выполнения: all, success или error. По умолчанию all.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.activityKind": "Необязательно. Фильтр по типу активности: all, read, write, ddl, transaction, session или other. По умолчанию all.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.dbName": "Необязательно. Включать только журналы, где имя базы данных содержит это ключевое слово.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.keyword": "Необязательно. Фильтровать по тексту SQL, сообщению ошибки, типу оператора или имени базы данных.",
"ai_chat.inspection.tool_info.inspect_sql_editor_transaction.desc": "Просмотреть состояние commit транзакций SQL-редактора",
"ai_chat.inspection.tool_info.inspect_sql_editor_transaction.detail": "Возвращает семантику управляемых DML-транзакций SQL-редактора, текущую настройку ручного или автоматического commit, войдет ли активная SQL-вкладка в управляемую транзакцию, ожидающие транзакции и недавние записи выполнения операций записи или транзакций. Используйте при вопросах о смысле ручного или автоматического commit, наличии uncommitted transactions или о том, будет ли update/insert/delete автоматически выполнен с commit.",
"ai_chat.inspection.tool_info.inspect_sql_editor_transaction.tool_description": "Читает снимок состояния транзакций SQL-редактора, включая реальную семантику, что DML всегда входит в управляемую транзакцию, текущий режим commit, задержку auto-commit, вызывает ли активная SQL-вкладка управляемую транзакцию, ожидающие транзакции и недавние журналы записи или транзакций. Используйте при вопросах о ручном commit, auto commit, uncommitted transactions или о том, выполняется ли commit после DML.",
"ai_chat.inspection.tool_info.inspect_sql_editor_transaction.param.includeSqlPreview": "Необязательно. Возвращать ли предварительный просмотр SQL из активной SQL-вкладки. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_sql_risk.desc": "Проверить риск выполнения текущего или указанного SQL",
"ai_chat.inspection.tool_info.inspect_sql_risk.detail": "Читает переданный SQL или содержимое текущей активной вкладки запроса, выявляет несколько операторов, записи, DDL, DELETE/UPDATE без WHERE, DROP/TRUNCATE и другие риски, затем объединяет результат с текущей политикой безопасности AI, чтобы определить, разрешено ли выполнение. Используйте перед тем, как AI выполнит SQL, объяснит риск или подтвердит, можно ли выполнить SQL-оператор.",
"ai_chat.inspection.tool_info.inspect_sql_risk.tool_description": "Проверяет риск выполнения переданного SQL или SQL текущей активной вкладки запроса и возвращает число операторов, тип активности, уровень риска, точки риска, необходимость подтверждения пользователем и результат текущей политики безопасности AI. Используйте перед ответом или продолжением, когда пользователь просит выполнить, удалить, обновить, выполнить DDL, выполнить пакетный SQL или спрашивает, можно ли выполнить SQL-оператор.",
"ai_chat.inspection.tool_info.inspect_sql_risk.param.sql": "Необязательно. SQL для проверки. Если не передан, по умолчанию читается SQL-черновик текущей активной вкладки запроса.",
"ai_chat.inspection.tool_info.inspect_sql_risk.param.previewCharLimit": "Необязательно. Максимальное число символов в предварительном просмотре SQL. По умолчанию 12000, максимум 40000.",
"ai_chat.message.tool_call.inspect_current_connection": "Прочитать сводку текущего подключения",
"ai_chat.message.tool_call.inspect_connection_capabilities": "Прочитать матрицу возможностей текущего подключения",
"ai_chat.message.tool_call.inspect_saved_connections": "Проверить локально сохраненные подключения",
"ai_chat.message.tool_call.inspect_redis_topology": "Диагностировать конфигурацию топологии Redis",
"ai_chat.message.tool_call.inspect_external_sql_directories": "Проверить внешние SQL-каталоги",
"ai_chat.message.tool_call.inspect_external_sql_file": "Прочитать внешний SQL-файл",
"ai_chat.message.tool_call.inspect_ai_sessions": "Проверить локальные сеансы истории AI",
"ai_chat.message.tool_call.inspect_active_tab": "Прочитать текущую активную вкладку",
"ai_chat.message.tool_call.inspect_workspace_tabs": "Проверить текущие вкладки рабочей области",
"ai_chat.message.tool_call.inspect_recent_sql_logs": "Просмотреть недавние журналы выполнения SQL",
"ai_chat.message.tool_call.inspect_recent_sql_activity": "Суммировать недавнюю активность SQL",
"ai_chat.message.tool_call.inspect_sql_editor_transaction": "Прочитать статус транзакции редактора SQL",
"ai_chat.message.tool_call.inspect_app_logs": "Просмотреть журналы приложения GoNavi",
"ai_chat.message.tool_call.inspect_recent_connection_failures": "Суммировать недавние сбои подключения",
"ai_chat.message.tool_call.inspect_ai_last_render_error": "Прочитать последнюю ошибку отрисовки AI",
"ai_chat.message.tool_call.inspect_ai_message_flow": "Диагностировать текущий поток сообщений AI",
"ai_chat.message.tool_call.inspect_ai_context_budget": "Диагностировать риск объема контекста AI",
"ai_chat.message.tool_call.inspect_codebase_hotspots": "Прочитать крупные файлы-точки риска в кодовой базе",
"ai_chat.message.tool_call.inspect_saved_queries": "Найти локально сохраненные запросы",
"ai_chat.message.tool_call.inspect_sql_snippets": "Прочитать шаблоны SQL-фрагментов",
"ai_chat.message.tool_call.inspect_shortcuts": "Прочитать текущие настройки сочетаний клавиш",
"ai_chat.message.tool_call.preview_table_rows": "Предпросмотр реальных примерных данных",
"ai_chat.message.tool_call.execute_sql": "Выполнить проверку SQL только для чтения",
"ai_chat.message.tool_call.running": "Выполняются проверки данных...",
"ai_chat.message.tool_call.done": "Проверки данных завершены ({{count}})",
"ai_chat.message.wait.connecting": "Подключение",
"ai_chat.message.jvm.apply_preview": "Применить к предпросмотру JVM",
"ai_chat.message.jvm.apply_diagnostic": "Применить к диагностической консоли",
"ai_chat.message.jvm.missing_plan_context": "В этом плане JVM отсутствует контекст исходной вкладки. Сгенерируйте его заново на целевой странице ресурса JVM.",
"ai_chat.message.jvm.plan_target_not_found": "Не найдена вкладка ресурса, соответствующая этому плану JVM. Откройте исходный целевой ресурс перед применением.",
"ai_chat.message.jvm.missing_diagnostic_context": "В этом диагностическом плане отсутствует контекст исходной вкладки. Сгенерируйте его заново в целевой диагностической консоли.",
"ai_chat.message.jvm.diagnostic_target_not_found": "Не найдена вкладка диагностической консоли, соответствующая этому плану. Откройте исходную целевую консоль перед применением.",
"ai_chat.message.mermaid.parse_failed": "Не удалось разобрать Mermaid: {{detail}}",
"ai_chat.message.mermaid.render_failed": "Ошибка отрисовки Mermaid: {{detail}}",
"ai_chat.panel.history.empty": "Истории чатов пока нет",
"ai_chat.panel.insight.context.linked_title": "Связано таблиц: {{count}}",
"ai_chat.panel.insight.context.empty_title": "Структура таблиц пока не связана",
"ai_chat.panel.insight.context.linked_body": "В этот диалог включен контекст структуры для {{tables}}.",
"ai_chat.panel.insight.context.empty_body": "При открытии AI со страницы таблицы текущая таблица связывается автоматически. Контекст также можно добавить вручную над полем ввода.",
"ai_chat.panel.insight.context.table_separator": ", ",
"ai_chat.panel.insight.context.more_tables_suffix": " и другие таблицы",
"ai_chat.panel.insight.query.slowest_title": "Самый медленный недавний запрос {{duration}}ms",
"ai_chat.panel.insight.query.empty_title": "Пока нет образцов длительности запросов",
"ai_chat.panel.insight.query.empty_body": "После выполнения запроса здесь появятся SQL-подсказки для анализа оптимизации.",
"ai_chat.panel.insight.status.failed_title": "Недавние сбои запросов: {{count}}",
"ai_chat.panel.insight.status.ok_title": "Недавние запросы в норме",
"ai_chat.panel.insight.status.recent_body": "Записано недавних SQL: {{count}}. Можно сразу попросить AI объяснить или оптимизировать их.",
"ai_chat.panel.insight.status.empty_body": "Журналов SQL пока нет.",
"ai_chat.panel.insight.write.detected_title": "Обнаружено операций записи: {{count}}",
"ai_chat.panel.insight.write.readonly_title": "Сейчас основной режим - анализ только для чтения",
"ai_chat.panel.insight.write.detected_body": "Для SQL с записью перед фиксацией лучше сгенерировать предпросмотр и операторы отката.",
"ai_chat.panel.insight.write.readonly_body": "По умолчанию AI сначала объясняет, генерирует SELECT, анализирует Schema и оптимизирует индексы.",
"ai_chat.panel.render_error.title": "Это сообщение AI не удалось отрисовать, поэтому оно изолировано",
"ai_chat.panel.render_error.description": "Остальная переписка остается доступной. Можно удалить это проблемное сообщение и продолжить.",
"ai_chat.panel.render_error.unknown": "Неизвестная ошибка отрисовки",
"ai_chat.panel.render_error.retry": "Повторить отрисовку",
"ai_chat.panel.render_error.delete": "Удалить это сообщение",
"ai_chat.panel.status.memory_compressing": "⚙️ Диалог перегружен. Запускается сжатие памяти...",
"ai_chat.panel.status.memory_compress_failed": "❌ Сжатие памяти не удалось. Продолжаем с исходным контекстом...",
"ai_chat.panel.status.memory_summary": "[Автоматическое перестроение памяти] Длинная история сжата в резюме:\n\n{{summary}}",
"ai_chat.panel.status.memory_probe_summary": "[Автоматическое перестроение памяти] Длинная история проверок и чат сжаты в резюме:\n\n{{summary}}",
"ai_chat.panel.prompt.memory_summary": "Это история слишком длинного диалога. Чтобы освободить место в контексте и сохранить ядро памяти, внимательно прочитай ее и подготовь сильно сжатое структурированное резюме на основе технических фактов, исследованного состояния структур данных, центрального запроса пользователя и текущего прогресса.\nПримечания:\n1. Будь объективным и точным; не пропускай важную бизнес-логику и найденные имена таблиц/полей.\n2. Убери незначимые шаги выполнения, вежливые фразы и сами JSON-возвраты.\n3. Удерживай объем примерно в 1000-2000 слов и выводи только сжатый Markdown.\n4. Начинай сразу с резюме; не добавляй приветствия.",
"ai_chat.panel.prompt.jvm_diagnostic": "Ты диагностический помощник JVM в GoNavi. Текущая вкладка — Arthas-совместимый диагностический рабочий стол, цель — вывести структурированный диагностический план, который можно вставить обратно в диагностическую консоль.\n\nТекущее подключение: {{connectionName}}\nЦелевой хост: {{host}}\nДиагностический transport: {{transport}}\nСреда: {{environment}}\nПолитика подключения: {{readOnlyPolicy}}\nРазрешения команд: observe={{observePolicy}}, trace={{tracePolicy}}, mutating={{mutatingPolicy}}\n\nПравила ответа:\n1. Можно начать с короткого анализа, но ответ должен содержать ровно один блок ```json.\n2. Поля JSON строго ограничены intent, transport, command, riskLevel, reason, expectedSignals.\n3. Поле transport должно совпадать с диагностическим transport выше; не выдумывай другой transport.\n4. command должен быть одной диагностической командой без shell-приглашения, склейки строк, нескольких команд или code fence.\n5. riskLevel может быть только low, medium или high.\n6. expectedSignals должен быть массивом строк с сигналами, за которыми нужно следить после выполнения.\n7. Если разрешения запрещают категорию операций, не выводи команды этой категории; если запрос нельзя выполнить, прямо объясни ограничение.",
"ai_chat.panel.jvm_diagnostic.policy.read_only": "По умолчанию отвечай в режиме диагностики только для чтения; генерируй только команды observe, trace и устранения неполадок и не предполагай, что что-либо уже выполнено.",
"ai_chat.panel.jvm_diagnostic.policy.plan_first": "Диагностические команды можно генерировать, но всегда сначала давай план и оставляй пользователю решение о выполнении.",
"ai_chat.panel.jvm_diagnostic.permission.allowed": "разрешено",
"ai_chat.panel.jvm_diagnostic.permission.forbidden": "запрещено",
"ai_chat.panel.prompt.jvm_runtime": "Ты помощник GoNavi для анализа JVM runtime. Текущий контекст — не SQL, а рабочий стол ресурсов JVM.\n\nТекущее подключение: {{connectionName}}\nЦелевой хост: {{host}}\nProvider mode: {{providerMode}}\nСреда: {{environment}}\nПолитика подключения: {{connectionPolicy}}\nСтатус resourcePath: {{resourcePathStatus}}\n\nПравила ответа:\n1. Можно объяснять структуру ресурсов, риски, рекомендации по изменениям и рекомендации по откату.\n2. Если пользователь просит создать план изменения JVM, выведи ровно один блок ```json и строго ограничь поля JSON списком targetType, selector, action, payload, reason.\n3. Для action предпочитай значения, уже объявленные в текущем снимке ресурса или метаданных как supportedActions; если текущий ресурс их не объявляет, выводи их осторожно по содержимому снимка.\n4. Для selector.resourcePath предпочитай текущий resourcePath; если текущий путь неизвестен, прямо скажи, что точное наведение невозможно, и не выдумывай путь.\n5. payload должен использовать только {\"format\":\"json\",\"value\":{...}} или {\"format\":\"text\",\"value\":\"...\"}; не выводи скрипты, команды или голые значения.\n6. Не выводи скрипты, команды или утверждения вроде уже успешно выполнено.",
"ai_chat.panel.jvm_runtime.policy.read_only": "Подключение только для чтения; только анализируй и генерируй планы изменений, и никогда не предполагай, что записи уже выполнены.",
"ai_chat.panel.jvm_runtime.policy.preview_required": "Подключение доступно для записи, но каждое изменение должно сначала создать предпросмотр и дождаться подтверждения человеком.",
"ai_chat.panel.jvm_runtime.resource_path.current": "Текущий resourcePath: {{resourcePath}}",
"ai_chat.panel.jvm_runtime.resource_path.missing": "Конкретный resourcePath сейчас не выбран.",
"ai_chat.panel.prompt.sql.context_tables": "Ты профессиональный помощник по базам данных. Текущий тип базы данных: {{dbDisplayType}}. Генерируй SQL в этом диалекте. Ниже приведен связанный DDL структуры таблиц, предоставленный пользователем; учитывай его в первую очередь при ответе:\n\n{{ddlChunks}}",
"ai_chat.panel.prompt.sql.current_database": "Ты профессиональный помощник по базам данных. Текущий тип базы данных: {{dbDisplayType}}, текущее имя базы данных: {{targetDbName}}. Если пользователю нужна информация о конкретной таблице или текущей базе, можно активно вызвать предоставленный инструмент get_tables, чтобы получить сведения о таблицах.",
"ai_chat.panel.prompt.sql.no_context": "Ты профессиональный помощник по базам данных. Пользователь сейчас не выбрал в интерфейсе конкретную базу данных или таблицу как контекст.\n\nВажные правила:\n1. Если нужно помочь пользователю найти целевую таблицу, никогда не угадывай имена таблиц. Обязательно вызывай инструменты, чтобы получить реальные данные.\n2. Полный процесс: get_connections → get_databases → get_tables → get_columns → сгенерировать SQL. Нельзя пропускать ни один шаг.\n3. [Приоритет подключений - критично] После получения списка подключений ищи в таком порядке:\n - Первый приоритет: подключения, у которых host равен localhost, 127.0.0.1 или означает локальную машину\n - Второй приоритет: подключения, у которых name или host содержит dev или local, либо host является внутренним IP, например 10.x, 192.168.x или 172.16-31.x\n - Третий приоритет: другие подключения, например test или production\n Если целевая таблица найдена в подключении с более высоким приоритетом, используй это подключение напрямую и не ищи дальше в подключениях с более низким приоритетом.\n4. Если целевая таблица не найдена в текущей базе данных, продолжай проверять другие базы; не сдавайся.\n5. Останавливайся только после проверки всех возможных баз данных или после того, как целевая таблица явно найдена.\n6. На общие вопросы, не связанные с запросами к базе данных, отвечай обычно.\n\nПравила генерации SQL (критично, строго соблюдать):\n7. [Точность полей - абсолютное правило] Перед генерацией SQL обязательно вызови get_columns, чтобы получить реальный список полей целевой таблицы. Каждое имя поля в SQL должно точно совпадать со значением field, возвращенным get_columns, включая регистр. Не выдумывай, не сокращай и не выводи имена полей по предположению. Например, если поле называется channel, пиши channel, а не pay_channel.\n8. При генерации SQL не используй квалифицированный префикс формата \"database.table\"; пиши только само имя таблицы.\n9. При отчете о результатах имя/ID подключения и имя базы данных должны строго происходить из фактических параметров одного и того же вызова get_tables. Не смешивай connectionId одного подключения с dbName другого.\n10. Если есть несколько баз с похожими именами, ясно сообщи пользователю, в какой именно базе находится целевая таблица.\n11. [Обязательно] Первая строка каждого SQL-блока должна содержать комментарий объявления контекста строго в таком формате: -- @context connectionId=<ID подключения> dbName=<имя базы данных>. connectionId и dbName должны происходить из одного успешного вызова get_tables, то есть из фактических значений параметров, переданных тобой в этот вызов. Пример:\n```sql\n-- @context connectionId=1770778676549 dbName=mkefu_test\nSELECT * FROM users WHERE status = 1;\n```\n\nТекущие доступные подключения: [{{connList}}]",
"ai_chat.panel.prompt.sql.no_connections": "Ты профессиональный помощник по базам данных. Сейчас в приложении нет доступных подключений к базам данных.\n\nЕсли вопрос пользователя требует структуры базы данных или SQL, сначала объясни, что get_connections, get_databases, get_tables и get_columns не могут получить реальные сведения о базе без существующего подключения, затем попроси пользователя создать подключение и повторить попытку. Не угадывай connectionId, dbName, имена таблиц или имена полей.\n\nНа общие вопросы, не связанные с запросами к базе данных, отвечай обычно.",
"ai_chat.panel.model_control.force_tool_call": "Используй function call напрямую, чтобы вызвать инструмент и выполнить операцию; не ограничивайся текстовым описанием плана.",
"ai_chat.panel.model_control.continue_after_summary": "На основе последнего состояния и результатов исследования выше продолжи незавершенный анализ или выполни следующий шаг.",
"ai_chat.panel.local_tool.get_connections.description": "Если нужно запросить или изменить данные в базе, но пользователь не выбрал контекст подключения, получает все подключения к базам данных, доступные в приложении. Возвращаемые данные включают ID подключения (id) и имя (name).",
"ai_chat.panel.local_tool.get_databases.description": "Получает имена всех баз данных (Database/Schema) в указанном подключении (connectionId).",
"ai_chat.panel.local_tool.get_tables.description": "После того как целевое подключение и dbName известны, если пользователь спрашивает о таблице или неявно упоминает ее, но точный tableName неизвестен, вызови этот инструмент, чтобы получить список всех имен таблиц в этой базе данных (только имена таблиц) и определить целевую таблицу.",
"ai_chat.panel.local_tool.get_columns.description": "Получает список field для указанной таблицы, включая имена field, типы, признак NULL, значения по умолчанию, комментарии и другие метаданные. Перед генерацией SQL обязательно вызови этот инструмент, чтобы подтвердить реальные имена field; не угадывай имена field.",
"ai_chat.panel.local_tool.get_table_ddl.description": "Получает полный CREATE TABLE DDL для указанной таблицы, включая fields, индексы, ограничения и полную информацию о структуре.",
"ai_chat.panel.local_tool.execute_sql.description": "Выполняет SQL-запрос в указанном подключении и базе данных, затем возвращает результат. Управляется уровнем безопасности: в режиме только для чтения разрешены только SELECT/SHOW/DESCRIBE и похожие операции запроса. Возвращает не более 50 строк.",
"ai_chat.panel.local_tool.param.connection_id": "connectionId (ID подключения)",
"ai_chat.panel.local_tool.param.connection_id_from_get_connections": "connectionId (из get_connections)",
"ai_chat.panel.local_tool.param.db_name": "dbName (имя базы данных)",
"ai_chat.panel.local_tool.param.table_name": "tableName (имя таблицы)",
"ai_chat.panel.local_tool.param.sql": "SQL-выражение для выполнения",
"ai_chat.panel.tool_error.connection_not_found": "Подключение не найдено",
"ai_chat.panel.tool_error.unknown_function": "Неизвестная функция: {{functionName}}",
"ai_chat.panel.tool_error.fetch_databases_failed": "Не удалось получить список баз данных: {{detail}}",
"ai_chat.panel.tool_error.fetch_tables_failed": "Не удалось получить список таблиц: {{detail}}",
"ai_chat.panel.tool_error.fetch_all_columns_failed": "Не удалось получить сводку столбцов по базе данных: {{detail}}",
"ai_chat.panel.tool_result.columns_exact_fields": "⚠️ Ниже приведен точный список полей таблицы {{tableName}}. При создании SQL используй только эти значения field как имена столбцов, строго без изменений. Не изменяй, не сокращай и не придумывай имена полей.\nДоступные поля: {{fieldNames}}\nПодробности: {{detailJson}}",
"ai_chat.panel.tool_error.fetch_columns_failed": "Не удалось получить список столбцов: {{detail}}",
"ai_chat.panel.tool_error.fetch_indexes_failed": "Не удалось получить определения индексов: {{detail}}",
"ai_chat.panel.tool_error.fetch_foreign_keys_failed": "Не удалось получить связи внешних ключей: {{detail}}",
"ai_chat.panel.tool_error.fetch_triggers_failed": "Не удалось получить определения триггеров: {{detail}}",
"ai_chat.panel.tool_error.fetch_table_ddl_failed": "Не удалось получить выражение CREATE TABLE: {{detail}}",
"ai_chat.panel.tool_error.table_name_required": "tableName не может быть пустым",
"ai_chat.panel.tool_error.preview_table_rows_failed": "Не удалось просмотреть пример данных таблицы: {{detail}}",
"ai_chat.panel.tool_error.sql_blocked": "Политика безопасности заблокировала этот запрос: текущий уровень безопасности не разрешает {{operationType}} SQL. Покажите SQL пользователю и попросите выполнить его вручную.",
"ai_chat.panel.tool_error.sql_execute_failed": "Не удалось выполнить SQL",
"ai_chat.panel.tool_error.sql_execute_exception": "Исключение при выполнении SQL: {{detail}}",
"ai_chat.panel.tool_error.mcp_failed": "Не удалось вызвать инструмент MCP",
"ai_chat.panel.tool_error.mcp_failed_with_detail": "Не удалось вызвать инструмент MCP: {{detail}}",
"ai_chat.panel.error.unknown": "Неизвестная ошибка",
"ai_chat.panel.error.http_server": "Ошибка сервера HTTP {{code}}",
"ai_chat.panel.error.html_response": "Сервер вернул необычный HTML-ответ; возможно, истекло время ожидания шлюза или служба недоступна",
"ai_chat.panel.error.truncated_suffix": "...(обрезано)",
"ai_chat.panel.notice.fetch_models_failed": "Не удалось получить список моделей: {{detail}}",
"ai_chat.panel.message.error": "❌ Ошибка: {{detail}}",
"ai_chat.panel.message.empty_response": "❌ Модель не вернула содержимое. Возможны ограничение частоты, перегрузка контекста или отказ.",
"ai_chat.panel.message.request_interrupted": "❌ Запрос прерван: конкретный ответ не получен.",
"ai_chat.panel.message.service_not_ready": "❌ AI Service не готов",
"ai_chat.panel.message.send_failed": "❌ Не удалось отправить: {{detail}}",
"ai_chat.panel.probe.max_rounds": "⚠️ Вызовы инструментов достигли лимита {{count}} раундов и были остановлены. Отправьте новое сообщение, чтобы продолжить исследование.",
"ai_chat.panel.probe.consecutive_failed": "⚠️ Проверки завершились ошибкой 3 раунда подряд и были остановлены. Проверьте состояние подключения и повторите попытку.",
"ai_chat.panel.status.summarizing_probe": "Сводка результатов проверок",
"ai_chat.panel.status.returning_runtime_data": "Передача данных выполнения модели",
"ai_chat.panel.status.deep_reasoning": "Модель выполняет глубокое рассуждение",
"ai_chat.panel.status.waiting_instruction": "Ожидание инструкции операции",
"ai_chat.panel.status.analyzing_chain": "Глубокий анализ цепочки и логики",
"ai_chat.panel.status.model_connecting": "Подключение к модели",
"ai_chat.panel.status.waking_engine": "Пробуждение механизма рассуждений",
"ai_chat.panel.status.waiting_response": "Ожидание ответа модели",
"ai_chat.panel.session.default_title": "Новый чат",
"ai_settings.title": "Настройки AI",
"ai_settings.subtitle": "Настройка моделей AI, уровня безопасности и контекста",
"ai_settings.nav.title": "Навигация настроек",
"ai_settings.nav.providers.title": "Поставщики моделей",
"ai_settings.nav.providers.description": "Настройка конечных точек моделей и секретов",
"ai_settings.nav.safety.title": "Контроль безопасности",
"ai_settings.nav.safety.description": "Ограничение уровня риска операций AI",
"ai_settings.nav.context.title": "Контекст",
"ai_settings.nav.context.description": "Настройка контекста схемы базы данных",
"ai_settings.nav.mcp.title": "Сервисы MCP",
"ai_settings.nav.mcp.description": "Подключение GoNavi к внешним клиентам и управление источниками инструментов",
"ai_settings.nav.skills.title": "Skills",
"ai_settings.nav.skills.description": "Настройка переиспользуемых модулей промптов",
"ai_settings.nav.tools.title": "Встроенные инструменты",
"ai_settings.nav.tools.description": "Просмотр доступных AI зондов данных",
"ai_settings.nav.prompts.title": "Встроенные промпты",
"ai_settings.nav.prompts.description": "Просмотр системных базовых требований",
"ai_settings.provider.empty.title": "Поставщик модели не настроен",
"ai_settings.provider.empty.description": "Добавьте поставщика, чтобы начать использовать AI-ассистента",
"ai_settings.provider.no_model": "Модель не выбрана",
"ai_settings.provider.next_provider": "следующий поставщик",
"ai_settings.provider.action.add": "Добавить поставщика модели",
"ai_settings.provider.action.edit": "Редактировать",
"ai_settings.provider.action.delete": "Удалить",
"ai_settings.provider.confirm_delete": "Удалить этого поставщика?",
"ai_settings.provider.editor.add_title": "Добавить поставщика модели",
"ai_settings.provider.editor.edit_title": "Редактировать поставщика модели",
"ai_settings.provider_preset.openai.label": "OpenAI",
"ai_settings.provider_preset.openai.desc": "Серия GPT-5.4 / 5.3",
"ai_settings.provider_preset.deepseek.label": "DeepSeek",
"ai_settings.provider_preset.deepseek.desc": "Модели DeepSeek-V4 / R1",
"ai_settings.provider_preset.qwen_bailian.label": "Qwen (Bailian общий)",
"ai_settings.provider_preset.qwen_bailian.desc": "Anthropic-совместимая конечная точка Bailian / удаленный список моделей",
"ai_settings.provider_preset.qwen_coding_plan.label": "Qwen (Coding Plan)",
"ai_settings.provider_preset.qwen_coding_plan.desc": "Прокси-цепочка Claude Code CLI / официальный список поддерживаемых моделей",
"ai_settings.provider_preset.zhipu.label": "Zhipu GLM",
"ai_settings.provider_preset.zhipu.desc": "Модели GLM-5 / GLM-5-Turbo",
"ai_settings.provider_preset.moonshot.label": "Kimi",
"ai_settings.provider_preset.moonshot.desc": "Kimi K2.5 (Anthropic-совместимый)",
"ai_settings.provider_preset.anthropic.label": "Claude",
"ai_settings.provider_preset.anthropic.desc": "Модели Claude Opus/Sonnet",
"ai_settings.provider_preset.gemini.label": "Gemini",
"ai_settings.provider_preset.gemini.desc": "Серия Gemini 3.1 / 2.5",
"ai_settings.provider_preset.volcengine_ark.label": "Volcengine Ark",
"ai_settings.provider_preset.volcengine_ark.desc": "Общий инференс Ark / модели Doubao",
"ai_settings.provider_preset.volcengine_coding.label": "Volcengine Coding Plan",
"ai_settings.provider_preset.volcengine_coding.desc": "Среда Ark Code / Coding Plan",
"ai_settings.provider_preset.minimax.label": "MiniMax",
"ai_settings.provider_preset.minimax.desc": "Серия M3 / M2.7 (Anthropic-совместимая)",
"ai_settings.provider_preset.ollama.label": "Ollama",
"ai_settings.provider_preset.ollama.desc": "Локально развернутые модели с открытым кодом",
"ai_settings.provider_preset.custom.label": "Пользовательский",
"ai_settings.provider_preset.custom.desc": "Пользовательская конечная точка API",
"ai_settings.form.section.service_type": "Тип сервиса",
"ai_settings.form.section.basic": "Основная информация",
"ai_settings.form.section.auth_connection": "Аутентификация и подключение",
"ai_settings.form.provider_name": "Имя поставщика",
"ai_settings.form.provider_name_required": "Введите имя",
"ai_settings.form.provider_name_placeholder": "Пример: собственная OpenAI-совместимая конечная точка / частная модель",
"ai_settings.form.api_format": "Формат API",
"ai_settings.form.model_list": "Список доступных моделей (необязательно)",
"ai_settings.form.model_list_placeholder": "Укажите ID моделей; оставьте пустым, чтобы получить их с сервера",
"ai_settings.form.api_key": "API Key",
"ai_settings.form.api_key_required": "Введите API Key",
"ai_settings.form.api_key_keep_placeholder": "Оставьте пустым, чтобы продолжить использовать сохраненный секрет",
"ai_settings.form.api_key_placeholder": "sk-... / ваш API Key",
"ai_settings.form.api_key_saved_hint": "API Key уже сохранен. Оставьте поле пустым, чтобы использовать его дальше, или введите новое значение для замены.",
"ai_settings.form.clear_saved_api_key": "Очистить сохраненный API Key",
"ai_settings.form.api_endpoint": "API Endpoint (URL)",
"ai_settings.form.api_endpoint_required": "Введите корректный URL конечной точки",
"ai_settings.action.back": "Назад",
"ai_settings.action.save": "Сохранить",
"ai_settings.action.test": "Проверить подключение",
"ai_settings.action.retest": "Проверить снова",
"ai_settings.action.connection_ok": "Подключение в порядке",
"ai_settings.message.deleted": "Удалено",
"ai_settings.message.deleted_and_switched": "Удалено, выполнено автоматическое переключение на «{{name}}»",
"ai_settings.message.delete_failed": "Не удалось удалить",
"ai_settings.message.delete_failed_detail": "Не удалось удалить: {{detail}}",
"ai_settings.message.saved": "Сохранено",
"ai_settings.message.save_failed": "Не удалось сохранить",
"ai_settings.message.save_failed_detail": "Не удалось сохранить: {{detail}}",
"ai_settings.message.switched": "Переключено",
"ai_settings.message.switch_failed": "Не удалось переключить",
"ai_settings.message.switch_failed_detail": "Не удалось переключить: {{detail}}",
"ai_settings.message.test_requires_new_api_key": "Перед проверкой подключения введите новый API Key или отмените очистку сохраненного секрета",
"ai_settings.message.test_success": "Подключение успешно",
"ai_settings.message.test_failed": "Проверка не удалась",
"ai_settings.message.test_failed_detail": "Проверка не удалась: {{detail}}",
"ai_settings.message.unknown_error": "Неизвестная ошибка",
"ai_settings.safety.description": "Управляет типами SQL-операций, которые AI может выполнять, чтобы защитить данные",
"ai_settings.safety.readonly.label": "Режим только чтения",
"ai_settings.safety.readonly.desc": "AI может выполнять только SELECT и похожие запросы. Это самый безопасный режим.",
"ai_settings.safety.readwrite.label": "Режим чтения и записи",
"ai_settings.safety.readwrite.desc": "AI может выполнять INSERT/UPDATE/DELETE. Для рискованных операций требуется подтверждение.",
"ai_settings.safety.full.label": "Полный режим",
"ai_settings.safety.full.desc": "AI может выполнять все операции, включая DDL. Для операций высокого риска предупреждения показываются автоматически.",
"ai_settings.context.description": "Управляет объемом контекста базы данных, отправляемым AI",
"ai_settings.context.schema_only.label": "Только схема",
"ai_settings.context.schema_only.desc": "AI получает только структуру таблиц и столбцов",
"ai_settings.context.with_samples.label": "С примерами данных",
"ai_settings.context.with_samples.desc": "Добавляет небольшой объем примеров данных, чтобы AI лучше понимал их особенности",
"ai_settings.context.with_results.label": "С результатами запросов",
"ai_settings.context.with_results.desc": "Передает последние результаты запросов как контекст",
"ai_settings.prompts.description": "Ниже показаны системные AI-промпты, встроенные в текущую версию GoNavi. Они доступны только для чтения и динамически добавляются в контекст запроса для соответствующих сценариев.",
"ai_settings.prompts.user.title": "Пользовательские промпты уровня пользователя",
"ai_settings.prompts.user.description": "Этот текст добавляется после встроенных системных промптов как system message. Используйте его для личного стиля ответа, ограничений вывода или правил команды. В вопросах безопасности системные правила по-прежнему имеют приоритет.",
"ai_settings.prompts.field.global.title": "Глобальный дополнительный промпт",
"ai_settings.prompts.field.global.description": "Применяется ко всем AI-сессиям, например «сначала дать вывод» или «отвечать кратко».",
"ai_settings.prompts.field.database.title": "Дополнительный промпт для сессий базы данных",
"ai_settings.prompts.field.database.description": "Применяется только к сценариям базы данных и SQL, например «перед генерацией SQL обязательно проверить имена полей».",
"ai_settings.prompts.field.jvm.title": "Дополнительный промпт для анализа ресурсов JVM",
"ai_settings.prompts.field.jvm.description": "Применяется только к просмотру и анализу ресурсов JVM.",
"ai_settings.prompts.field.jvm_diagnostic.title": "Дополнительный промпт для диагностики JVM",
"ai_settings.prompts.field.jvm_diagnostic.description": "Применяется только к рабочей области диагностики JVM, например «сначала дать план, затем команды».",
"ai_settings.prompts.placeholder.empty": "Оставьте пустым, чтобы ничего не добавлять",
"ai_settings.prompts.action.save": "Сохранить пользовательские промпты",
"ai_settings.prompts.builtin.description": "Ниже показаны низкоуровневые AI-промпты, встроенные в текущую версию GoNavi. Они доступны только для чтения и добавляются в подходящий контекст запроса перед пользовательскими промптами выше.",
"ai_settings.prompts.message.saved": "Пользовательские промпты сохранены",
"ai_settings.prompts.message.save_failed": "Не удалось сохранить пользовательские промпты",
"ai_settings.mcp_server.message.saved": "Служба MCP сохранена",
"ai_settings.mcp_server.message.save_failed": "Не удалось сохранить службу MCP",
"ai_settings.mcp_server.message.deleted": "Служба MCP удалена",
"ai_settings.mcp_server.message.delete_failed": "Не удалось удалить службу MCP",
"ai_settings.mcp_server.message.test_success": "Подключение к службе MCP успешно",
"ai_settings.mcp_server.message.test_failed": "Проверка службы MCP не удалась",
"ai_settings.mcp_server.message.test_request_failed": "Не удалось выполнить проверку службы MCP",
"ai_settings.mcp_server.draft.default_name": "Служба MCP",
"ai_settings.mcp_server.command_preview.title": "Предпросмотр автоматического разбиения",
"ai_settings.mcp_server.command_preview.description": "После нажатия «Автоматически разнести по полям ниже» этот результат разбора будет записан в область настройки запуска под именем службы.",
"ai_settings.mcp_server.command_preview.env_title": "Переменные окружения",
"ai_settings.mcp_server.command_preview.env_count": "Будет записано переменных окружения: {{count}}.",
"ai_settings.mcp_server.command_preview.env_empty": "В этой команде не обнаружены переменные окружения в префиксе.",
"ai_settings.mcp_server.command_preview.empty_value": "Нет",
"ai_settings.mcp_server.command_preview.command_title": "Команда запуска",
"ai_settings.mcp_server.command_preview.command_hint": "Здесь остается только сам исполняемый файл.",
"ai_settings.mcp_server.command_preview.args_title": "Аргументы команды",
"ai_settings.mcp_server.command_preview.args_count": "Будет создано отдельных тегов аргументов: {{count}}.",
"ai_settings.mcp_server.command_preview.args_empty": "В этой команде не обнаружены дополнительные аргументы.",
"ai_settings.mcp_server.validation.title": "Проверка конфигурации",
"ai_settings.mcp_server.validation.severity.error": "Нужно исправить",
"ai_settings.mcp_server.validation.severity.warning": "Рекомендуется проверить",
"ai_settings.mcp_server.validation.severity.info": "Подсказка",
"ai_settings.mcp_server.validation.summary.errors": "Найдено проблем для обязательного исправления: {{count}}. После исправления можно тестировать или сохранять.",
"ai_settings.mcp_server.validation.summary.warnings": "Найдено пунктов для проверки: {{count}}. Тестирование и сохранение доступны.",
"ai_settings.mcp_server.validation.summary.ready": "Текущую конфигурацию можно тестировать и сохранять.",
"ai_settings.mcp_server.validation.issue.name_missing.title": "Имя сервиса пустое",
"ai_settings.mcp_server.validation.issue.name_missing.detail": "Используйте имя по назначению, например Browser, GitHub или Filesystem; иначе после сохранения сервис можно будет распознать только по команде.",
"ai_settings.mcp_server.validation.issue.transport_unsupported.title": "Транспорт не поддерживается",
"ai_settings.mcp_server.validation.issue.transport_unsupported.detail": "Здесь GoNavi может добавлять только stdio MCP-сервисы. Оставьте транспорт stdio.",
"ai_settings.mcp_server.validation.issue.command_missing.title": "Команда запуска не указана",
"ai_settings.mcp_server.validation.issue.command_missing.detail": "Укажите как минимум node, uvx, python или путь к локальному исполняемому файлу. Имя скрипта и --stdio помещайте в аргументы команды.",
"ai_settings.mcp_server.validation.issue.command_whole_line.title": "Команда запуска может содержать всю командную строку",
"ai_settings.mcp_server.validation.issue.command_whole_line.detail": "В команду запуска вводите только сам исполняемый файл. Имя скрипта, имя модуля, --stdio и переменные окружения перенесите в аргументы или переменные окружения.",
"ai_settings.mcp_server.validation.issue.args_missing_for_launcher.title": "В аргументах команды может не хватать имени скрипта или модуля",
"ai_settings.mcp_server.validation.issue.args_missing_for_launcher.detail": "Для запускателей вроде node, python, uvx и npx обычно также нужен server.js, -m your_server или имя пакета в качестве аргумента.",
"ai_settings.mcp_server.validation.issue.docker_run_missing.title": "В аргументах Docker нет run",
"ai_settings.mcp_server.validation.issue.docker_run_missing.detail": "Docker MCP обычно использует command=docker, а run, --rm, -i, имя образа и аргументы сервиса вводятся отдельно в args.",
"ai_settings.mcp_server.validation.issue.docker_interactive_missing.title": "В аргументах Docker нет -i",
"ai_settings.mcp_server.validation.issue.docker_interactive_missing.detail": "MCP должен продолжать читать стандартный ввод. Для docker run добавьте -i или --interactive, иначе обнаружение инструментов может сразу отключиться.",
"ai_settings.mcp_server.validation.issue.docker_image_missing.title": "В аргументах Docker может не хватать имени образа",
"ai_settings.mcp_server.validation.issue.docker_image_missing.detail": "Введите имя образа из README после опций docker run, например mcp/server-fetch:latest.",
"ai_settings.mcp_server.validation.issue.args_contain_env_or_shell_glue.title": "Аргументы команды могут содержать переменные окружения или склейку Shell",
"ai_settings.mcp_server.validation.issue.args_contain_env_or_shell_glue.detail": "KEY=VALUE, $env:KEY=VALUE, set, env и && относятся к авторазбору полной команды или к полю переменных окружения.",
"ai_settings.mcp_server.validation.issue.timeout_out_of_range.title": "Таймаут вне рекомендуемого диапазона",
"ai_settings.mcp_server.validation.issue.timeout_out_of_range.detail": "GoNavi ограничит значение диапазоном от 3 до 120 секунд. Обычные локальные сервисы чаще используют 20 секунд; медленно запускающиеся сервисы — 45 или 60 секунд.",
"ai_settings.mcp_server.validation.issue.env_invalid_lines.title": "Переменные окружения содержат недопустимые строки",
"ai_settings.mcp_server.validation.issue.env_invalid_lines.detail": "Каждая строка должна быть KEY=VALUE. Не будет сохранено строк: {{count}}: {{lines}}",
"ai_settings.mcp_server.help.field_state.required": "Обязательно",
"ai_settings.mcp_server.help.field_state.fixed": "Фиксировано",
"ai_settings.mcp_server.help.field_state.optional": "Необязательно",
"ai_settings.mcp_server.help.example_prefix": "Пример: ",
"ai_settings.mcp_server.form.name.title": "Имя сервиса",
"ai_settings.mcp_server.form.name.description": "Задайте этому MCP понятное имя. Позже оно будет напрямую показано в списке AI-инструментов. Избегайте неясных имен вроде server или test.",
"ai_settings.mcp_server.form.name.placeholder": "Имя сервиса, например: Filesystem / Browser / GitHub",
"ai_settings.mcp_server.form.enabled.title": "Состояние включения",
"ai_settings.mcp_server.form.enabled.description": "Если временно не используется, его можно отключить; конфигурация сохранится, но не будет участвовать в обнаружении AI-инструментов.",
"ai_settings.mcp_server.form.enabled.option.enabled": "Включено",
"ai_settings.mcp_server.form.enabled.option.disabled": "Отключено",
"ai_settings.mcp_server.form.transport.title": "Транспорт",
"ai_settings.mcp_server.form.transport.description": "Сейчас поддерживается только stdio. GoNavi запускает этот процесс локально и обменивается данными через стандартный ввод и вывод.",
"ai_settings.mcp_server.form.command.title": "Команда запуска",
"ai_settings.mcp_server.form.command.description": "Укажите здесь только саму команду. Для запускателей вроде npx/node/uvx/python/docker поместите имя пакета, скрипта, модуля или аргументы docker run в поле аргументов ниже. Не вставляйте сюда всю строку npx -y package --stdio, node server.js --stdio или docker run -i image.",
"ai_settings.mcp_server.form.command.placeholder": "Команда запуска, например: npx / node / uvx / python / docker",
"ai_settings.mcp_server.form.timeout.title": "Тайм-аут (секунды)",
"ai_settings.mcp_server.form.timeout.description": "Максимальное ожидание одного обнаружения инструмента или вызова инструмента. Для большинства локальных инструментов достаточно 20 секунд по умолчанию; увеличьте значение для удаленных сервисов или медленно стартующих скриптов.",
"ai_settings.mcp_server.form.timeout.placeholder": "Тайм-аут (секунды)",
"ai_settings.mcp_server.form.timeout.preset.default": "По умолчанию 20 секунд",
"ai_settings.mcp_server.form.timeout.preset.relaxed": "Свободнее 45 секунд",
"ai_settings.mcp_server.form.timeout.preset.slow": "Медленный старт 60 секунд",
"ai_settings.mcp_server.form.args.title": "Аргументы команды",
"ai_settings.mcp_server.form.args.description": "Вводите каждый аргумент отдельным тегом; саму команду сюда не помещайте. Для npx -y package --stdio разделите -y, package и --stdio. Для node server.js --stdio разделите server.js и --stdio. Для docker run --rm -i image разделите run, --rm, -i и имя образа. Если не уверены, сначала используйте поле полной команды выше для автоматического разбиения.",
"ai_settings.mcp_server.form.args.placeholder": "Аргументы команды, Enter для добавления, например: -y / package / --stdio",
"ai_settings.mcp_server.form.launch_preview.title": "Предпросмотр фактической команды запуска",
"ai_settings.mcp_server.form.launch_preview.description": "GoNavi запустит процесс в форме ниже, чтобы вы могли проверить правильность разделения команды и аргументов.",
"ai_settings.mcp_server.form.env.title": "Переменные окружения",
"ai_settings.mcp_server.form.env.description": "Одна строка KEY=VALUE на переменную, обычно для API Key, рабочей директории, адреса сервиса и похожих настроек. Если не нужно, оставьте пустым. Эти значения сохраняются в локальной конфигурации и передаются как переменные окружения при запуске MCP-процесса; не пишите export и не помещайте секреты в чат.",
"ai_settings.mcp_server.form.env.placeholder": "Переменные окружения, одна строка KEY=VALUE на переменную, например:\nOPENAI_API_KEY=...\nGITHUB_TOKEN=...",
"ai_settings.mcp_server.form.env_status.invalid": "Обнаружено переменных окружения: {{validCount}}; также {{invalidCount}} недопустимых строк не будут сохранены сейчас: {{invalidLines}}",
"ai_settings.mcp_server.form.env_status.valid": "Обнаружено переменных окружения: {{count}}.",
"ai_settings.mcp_server.form.env_status.empty": "Каждая строка должна быть KEY=VALUE; строки без знака равенства или с пробелами в key не сохраняются.",
"ai_settings.mcp_server.form.instructions.title": "Подсказки действий",
"ai_settings.mcp_server.form.instructions.test_title": "Тест обнаружения инструментов",
"ai_settings.mcp_server.form.instructions.test_description": "один раз запускает сервис с текущими полями, проверяет обнаруженные инструменты и не сохраняет конфигурацию.",
"ai_settings.mcp_server.form.instructions.save_title": "Сохранить",
"ai_settings.mcp_server.form.instructions.save_description": "записывает этот MCP в локальную конфигурацию для долгосрочного использования.",
"ai_settings.mcp_server.form.instructions.tools_found": "Инструменты выше — это alias из последнего успешного теста.",
"ai_settings.mcp_server.form.instructions.test_first": "Сначала успешно протестируйте, затем сохраняйте; после успешного теста выше появятся фактически обнаруженные инструменты этого сервиса.",
"ai_settings.mcp_server.form.action.test": "Тест обнаружения инструментов",
"ai_settings.mcp_server.form.action.save": "Сохранить",
"ai_settings.mcp_server.form.action.delete": "Удалить",
"ai_settings.mcp_server.form.action.delete_confirm": "Удалить этот MCP-сервис?",
"ai_settings.mcp_server.form.action.delete_ok": "Удалить",
"ai_settings.mcp_server.form.action.delete_cancel": "Отмена",
"ai_settings.mcp_server.guide.examples.title": "Примеры заполнения",
"ai_settings.mcp_server.guide.examples.description": "В поле команды запуска указывайте только сам исполняемый файл. Не смешивайте аргументы с командой. Частые варианты:",
"ai_settings.mcp_server.guide.order.title": "Рекомендуемый порядок заполнения",
"ai_settings.mcp_server.guide.order.description": "Новым пользователям удобно идти в таком порядке: сначала выбрать шаблон выше или вставить полную команду, затем проверить обязательные поля и только при необходимости добавить аргументы, переменные окружения и таймаут.",
"ai_settings.mcp_server.guide.step.template.title": "Шаблон / полная команда",
"ai_settings.mcp_server.guide.step.template.detail": "Сначала выберите ближайший шаблон или вставьте целую командную строку, чтобы GoNavi автоматически разделил её.",
"ai_settings.mcp_server.guide.step.name.title": "Имя сервиса",
"ai_settings.mcp_server.guide.step.name.detail": "Назовите сервис понятным именем по назначению, например Browser, GitHub или Filesystem.",
"ai_settings.mcp_server.guide.step.command.title": "Команда запуска",
"ai_settings.mcp_server.guide.step.command.detail": "Здесь указывается только имя программы или сам launcher, а не вся командная строка.",
"ai_settings.mcp_server.guide.step.args.title": "Аргументы команды",
"ai_settings.mcp_server.guide.step.args.detail": "Разделите имя скрипта, имя модуля, аргументы Docker run и параметры вроде --stdio на отдельные элементы.",
"ai_settings.mcp_server.guide.step.env_timeout.title": "Переменные окружения / таймаут",
"ai_settings.mcp_server.guide.step.env_timeout.detail": "Добавляйте их только если сервису действительно нужна дополнительная конфигурация; иначе оставьте пустыми.",
"ai_settings.mcp_server.guide.field_lookup.title": "Краткая справка по полям",
"ai_settings.mcp_server.guide.field_lookup.description": "Если непонятно, что вводить в поле параметра, начните отсюда. Для каждого поля ниже есть конкретные примеры и предостережения.",
"ai_settings.mcp_server.guide.field.fill_label": "Заполнить: ",
"ai_settings.mcp_server.argument_hints.category.secret": "Секретное",
"ai_settings.mcp_server.argument_hints.category.path": "Путь",
"ai_settings.mcp_server.argument_hints.category.endpoint": "Адрес",
"ai_settings.mcp_server.argument_hints.category.network": "Сеть",
"ai_settings.mcp_server.argument_hints.category.mode": "Режим",
"ai_settings.mcp_server.argument_hints.category.runtime": "Среда выполнения",
"ai_settings.mcp_server.argument_hints.category.generic": "Бизнес",
"ai_settings.mcp_server.argument_hints.current_command": "Подсказки аргументов для текущей команды {{command}}",
"ai_settings.mcp_server.argument_hints.argument_details": "Пояснения по аргументам",
"ai_settings.mcp_server.argument_hints.masked_value": "Значение скрыто",
"ai_settings.mcp_server.argument_hints.value_hint_prefix": "Указать: ",
"ai_settings.mcp_server.argument_hints.business_arguments": "Обнаруженные бизнес-аргументы",
"ai_settings.mcp_server.argument_hints.dont_screenshot": "Не делайте скриншот реального значения",
"ai_settings.mcp_server.argument_hints.next_actions": "Далее: {{actions}}",
"ai_settings.mcp_server.argument_hints.action_separator": "; ",
"ai_settings.mcp_server.argument_hints.required_complete": "Похоже, обязательные аргументы заполнены. Если тест не пройдет, сверьте бизнес-аргументы и переменные окружения с README.",
"ai_settings.mcp_server.argument_hints.fill_missing_required": "Добавить недостающие обязательные аргументы: {{args}}",
"ai_settings.mcp_server.argument_hints.split_inline_args": "Разделить поле команды запуска: оставить {{command}}, перенести аргументов: {{count}}",
"ai_settings.mcp_server.env_hints.category.secret": "Секрет",
"ai_settings.mcp_server.env_hints.category.endpoint": "Адрес",
"ai_settings.mcp_server.env_hints.category.proxy": "Прокси",
"ai_settings.mcp_server.env_hints.category.path": "Путь",
"ai_settings.mcp_server.env_hints.category.runtime": "Среда выполнения",
"ai_settings.mcp_server.env_hints.category.generic": "Пользовательское",
"ai_settings.mcp_server.env_hints.title": "Подсказки по назначению переменных окружения",
"ai_settings.mcp_server.env_hints.summary": "Обнаружено переменных: {{envVarCount}}; {{secretLikeCount}} похожи на секреты. Здесь объясняются только назначение и риск key; value не показывается.",
"ai_settings.mcp_server.env_hints.recognized": "Распознано",
"ai_settings.mcp_server.env_hints.value_hint_prefix": "Указать: ",
"ai_settings.mcp_server.env_hints.empty_value": " Текущее значение пустое.",
"ai_settings.mcp_server.env_hints.placeholder_value": " Текущее значение похоже на пример-заполнитель.",
"ai_settings.mcp_server.env_hints.warning_prefix": "Внимание: {{warnings}}",
"ai_settings.mcp_server.env_hints.next_actions": "Далее: {{actions}}",
"ai_settings.mcp_server.env_hints.action_separator": "; ",
"ai_settings.mcp_server.env_hints.known.github_token.label": "GitHub Token",
"ai_settings.mcp_server.env_hints.known.github_token.detail": "Usually used by GitHub MCP services to read repositories, issues, pull requests, or Actions.",
"ai_settings.mcp_server.env_hints.known.github_token.value_hint": "Enter a GitHub Personal Access Token with the minimum permissions required by the MCP README.",
"ai_settings.mcp_server.env_hints.known.gitlab_token.label": "GitLab Token",
"ai_settings.mcp_server.env_hints.known.gitlab_token.detail": "Usually used by GitLab MCP services to access projects, merge requests, or CI.",
"ai_settings.mcp_server.env_hints.known.gitlab_token.value_hint": "Enter a GitLab Access Token and restrict it to the required project scope.",
"ai_settings.mcp_server.env_hints.known.openai_api_key.label": "OpenAI API Key",
"ai_settings.mcp_server.env_hints.known.openai_api_key.detail": "Used by MCP services that depend on OpenAI APIs for model or embedding calls.",
"ai_settings.mcp_server.env_hints.known.openai_api_key.value_hint": "Enter the real API Key; do not put it in command, args, or chat messages.",
"ai_settings.mcp_server.env_hints.known.anthropic_api_key.label": "Anthropic API Key",
"ai_settings.mcp_server.env_hints.known.anthropic_api_key.detail": "Used by MCP services that depend on the Anthropic Claude API.",
"ai_settings.mcp_server.env_hints.known.anthropic_api_key.value_hint": "Enter the real API Key only after confirming the service requires this variable.",
"ai_settings.mcp_server.env_hints.known.gemini_api_key.label": "Gemini API Key",
"ai_settings.mcp_server.env_hints.known.gemini_api_key.detail": "Used by MCP services that depend on the Google Gemini API.",
"ai_settings.mcp_server.env_hints.known.gemini_api_key.value_hint": "Enter the real API Key; some services may require GOOGLE_API_KEY instead.",
"ai_settings.mcp_server.env_hints.known.google_api_key.label": "Google API Key",
"ai_settings.mcp_server.env_hints.known.google_api_key.detail": "Used by Google, Gemini, Maps, or Search MCP services.",
"ai_settings.mcp_server.env_hints.known.google_api_key.value_hint": "Enter the real API Key and confirm whether the README requires GOOGLE_API_KEY or GEMINI_API_KEY.",
"ai_settings.mcp_server.env_hints.known.slack_bot_token.label": "Slack Bot Token",
"ai_settings.mcp_server.env_hints.known.slack_bot_token.detail": "Used by Slack MCP services to read channels, messages, or send notifications.",
"ai_settings.mcp_server.env_hints.known.slack_bot_token.value_hint": "Enter the Bot Token starting with xoxb- and restrict workspace permissions.",
"ai_settings.mcp_server.env_hints.known.notion_api_key.label": "Notion API Key",
"ai_settings.mcp_server.env_hints.known.notion_api_key.detail": "Used by Notion MCP services to access pages, databases, or workspace content.",
"ai_settings.mcp_server.env_hints.known.notion_api_key.value_hint": "Enter the Notion integration secret and authorize only the required pages.",
"ai_settings.mcp_server.env_hints.known.database_url.label": "Строка подключения к базе данных",
"ai_settings.mcp_server.env_hints.known.database_url.detail": "Lets the MCP service connect to a database itself; this gives database connection information to that MCP process.",
"ai_settings.mcp_server.env_hints.known.database_url.value_hint": "Fill this only when the MCP must connect to the database directly; prefer GoNavi MCP to avoid password exposure.",
"ai_settings.mcp_server.env_hints.known.http_proxy.label": "HTTP-прокси",
"ai_settings.mcp_server.env_hints.known.http_proxy.detail": "Routes HTTP resource access from the MCP process through the specified proxy.",
"ai_settings.mcp_server.env_hints.known.http_proxy.value_hint": "Enter http://host:port; treat it as sensitive if the proxy includes a username or password.",
"ai_settings.mcp_server.env_hints.known.https_proxy.label": "HTTPS-прокси",
"ai_settings.mcp_server.env_hints.known.https_proxy.detail": "Routes HTTPS resource access from the MCP process through the specified proxy.",
"ai_settings.mcp_server.env_hints.known.https_proxy.value_hint": "Enter http://host:port or https://host:port.",
"ai_settings.mcp_server.env_hints.known.no_proxy.label": "Список обхода прокси",
"ai_settings.mcp_server.env_hints.known.no_proxy.detail": "Specifies which domains or addresses should bypass the proxy.",
"ai_settings.mcp_server.env_hints.known.no_proxy.value_hint": "Use comma-separated entries, for example localhost,127.0.0.1,.corp.local.",
"ai_settings.mcp_server.env_hints.known.docker_host.label": "Адрес Docker Daemon",
"ai_settings.mcp_server.env_hints.known.docker_host.detail": "Tells the docker CLI which Docker Engine to connect to.",
"ai_settings.mcp_server.env_hints.known.docker_host.value_hint": "Common on Windows: npipe:////./pipe/docker_engine; confirm security boundaries for remote Docker.",
"ai_settings.mcp_server.env_hints.known.gonavi_mcp_http_token.label": "GoNavi MCP HTTP Token",
"ai_settings.mcp_server.env_hints.known.gonavi_mcp_http_token.detail": "Used when a remote MCP HTTP service enables Bearer Token authentication.",
"ai_settings.mcp_server.env_hints.known.gonavi_mcp_http_token.value_hint": "Enter a high-entropy random token; do not reuse database passwords or model API Keys.",
"ai_settings.mcp_server.env_hints.known.node_env.label": "Среда выполнения Node",
"ai_settings.mcp_server.env_hints.known.node_env.detail": "Affects logging, debugging, or production mode for some Node MCP services.",
"ai_settings.mcp_server.env_hints.known.node_env.value_hint": "Usually production, development, or a value specified by the README.",
"ai_settings.mcp_server.env_hints.known.log_level.label": "Уровень логирования",
"ai_settings.mcp_server.env_hints.known.log_level.detail": "Controls how much log output the MCP service emits.",
"ai_settings.mcp_server.env_hints.known.log_level.value_hint": "Common values are debug, info, warn, and error; temporarily raise it for troubleshooting.",
"ai_settings.mcp_server.env_hints.inferred.secret.label": "Секрет / Token",
"ai_settings.mcp_server.env_hints.inferred.secret.detail": "The variable name looks like a secret, token, password, or connection string.",
"ai_settings.mcp_server.env_hints.inferred.secret.value_hint": "Enter the real value, but keep it only in local MCP configuration; do not put it in command, args, or chat content.",
"ai_settings.mcp_server.env_hints.inferred.proxy.label": "Конфигурация прокси",
"ai_settings.mcp_server.env_hints.inferred.proxy.detail": "The variable name looks like a network proxy setting.",
"ai_settings.mcp_server.env_hints.inferred.proxy.value_hint": "Follow the README or enterprise proxy format, for example http://127.0.0.1:7890.",
"ai_settings.mcp_server.env_hints.inferred.endpoint.label": "Сервисный endpoint",
"ai_settings.mcp_server.env_hints.inferred.endpoint.detail": "The variable name looks like a service URL, API endpoint, or host configuration.",
"ai_settings.mcp_server.env_hints.inferred.endpoint.value_hint": "Enter the URL, host, or endpoint the MCP Server needs to access.",
"ai_settings.mcp_server.env_hints.inferred.path.label": "Путь / файл конфигурации",
"ai_settings.mcp_server.env_hints.inferred.path.detail": "The variable name looks like a local path, directory, or config file location.",
"ai_settings.mcp_server.env_hints.inferred.path.value_hint": "Enter an absolute path accessible to the local MCP process; keep the drive letter for Windows paths.",
"ai_settings.mcp_server.env_hints.inferred.runtime.label": "Переключатель среды выполнения",
"ai_settings.mcp_server.env_hints.inferred.runtime.detail": "The variable name looks like a runtime environment, logging, or debug switch.",
"ai_settings.mcp_server.env_hints.inferred.runtime.value_hint": "Use the enum value specified by the README.",
"ai_settings.mcp_server.env_hints.inferred.generic.label": "Пользовательская конфигурация",
"ai_settings.mcp_server.env_hints.inferred.generic.detail": "No built-in variable hint matched; follow the matching field description in the MCP README.",
"ai_settings.mcp_server.env_hints.inferred.generic.value_hint": "Confirm the variable name casing exactly matches the README.",
"ai_settings.mcp_server.env_hints.warning.empty": "{{count}} значений переменных окружения пустые; заполните или удалите их перед тестированием.",
"ai_settings.mcp_server.env_hints.warning.placeholder": "{{count}} переменных окружения всё ещё похожи на пример-заполнитель.",
"ai_settings.mcp_server.env_hints.warning.docker_env_not_forwarded": "При command=docker эти переменные окружения передаются только в docker CLI и не попадают в контейнер автоматически.",
"ai_settings.mcp_server.env_hints.next_action.empty": "Заполните значения для {{keys}} или удалите ненужные переменные.",
"ai_settings.mcp_server.env_hints.next_action.placeholder": "Замените {{keys}} реальными значениями перед тестированием обнаружения инструментов.",
"ai_settings.mcp_server.env_hints.next_action.docker_env": "Если MCP внутри контейнера нужны эти переменные, добавьте в args -e KEY=VALUE или --env KEY=VALUE согласно README.",
"ai_settings.mcp_server.env_hints.next_action.secrets_local": "Переменные, похожие на секреты, хранятся только в локальной конфигурации; не отправляйте реальные значения в чат, Issue или скриншоты.",
"ai_settings.mcp_server.env_hints.next_action.keys_recognized": "key переменных окружения распознаются; при сбое теста сначала проверьте регистр имён переменных из README.",
"ai_settings.mcp_server.guide.field.avoid_label": "Не указывать: ",
"ai_settings.mcp_server.guide.field.example_label": "Пример значения:",
"ai_settings.mcp_server.guide.field.name.title": "Имя сервиса",
"ai_settings.mcp_server.guide.field.name.summary": "Имя, которое после сохранения увидите вы и AI.",
"ai_settings.mcp_server.guide.field.name.detail": "Называйте по назначению. Лучше использовать легко узнаваемые имена вроде Browser, GitHub или Filesystem.",
"ai_settings.mcp_server.guide.field.name.fill": "Имя назначения этого MCP, например GitHub или Filesystem.",
"ai_settings.mcp_server.guide.field.name.avoid": "Избегайте расплывчатых имён вроде server, test или mcp1.",
"ai_settings.mcp_server.guide.field.enabled.title": "Состояние включения",
"ai_settings.mcp_server.guide.field.enabled.summary": "Определяет, участвует ли эта конфигурация сейчас в обнаружении и вызовах инструментов.",
"ai_settings.mcp_server.guide.field.enabled.detail": "Отключение только прекращает использование. Заполненная ниже конфигурация не удаляется.",
"ai_settings.mcp_server.guide.field.enabled.fill": "Выберите отключено, если сервис временно не нужен; выберите включено, когда AI должен его использовать.",
"ai_settings.mcp_server.guide.field.enabled.avoid": "Не удаляйте сервис только для временной паузы, иначе придётся заново настраивать command, args и env.",
"ai_settings.mcp_server.guide.field.enabled.example": "Включено / Отключено",
"ai_settings.mcp_server.guide.field.transport.title": "Транспорт",
"ai_settings.mcp_server.guide.field.transport.summary": "Как GoNavi связывается с этим MCP Server.",
"ai_settings.mcp_server.guide.field.transport.detail": "Сейчас фиксировано stdio: GoNavi запускает локальный процесс и обменивается данными через стандартный ввод и вывод.",
"ai_settings.mcp_server.guide.field.transport.fill": "Оставьте stdio.",
"ai_settings.mcp_server.guide.field.transport.avoid": "Не указывайте HTTP, SSE, URL или порт. Этот сценарий добавления не является настройкой удалённого MCP URL.",
"ai_settings.mcp_server.guide.field.command.title": "Команда запуска",
"ai_settings.mcp_server.guide.field.command.summary": "Указывайте только имя программы или сам launcher.",
"ai_settings.mcp_server.guide.field.command.detail": "Частые значения: npx, node, uvx, python и docker. Имена пакетов, имена скриптов, run, -i и --stdio должны быть в аргументах.",
"ai_settings.mcp_server.guide.field.command.fill": "Введите npx, node, uvx, python, docker или абсолютный путь к exe.",
"ai_settings.mcp_server.guide.field.command.avoid": "Не вводите всю командную строку, например npx -y pkg --stdio.",
"ai_settings.mcp_server.guide.field.args.title": "Аргументы команды",
"ai_settings.mcp_server.guide.field.args.summary": "Разделите имена скриптов, модулей и флаги на отдельные элементы.",
"ai_settings.mcp_server.guide.field.args.detail": "npx -y pkg --stdio разделяется на -y, pkg и --stdio. docker run --rm -i image разделяется на run, --rm, -i и image.",
"ai_settings.mcp_server.guide.field.args.fill": "Вводите -y, имя пакета, имя скрипта, -m, --stdio, run, --rm, -i, имя образа и похожие аргументы по одному.",
"ai_settings.mcp_server.guide.field.args.avoid": "Не вводите npx/node/uvx/python/docker повторно и не вставляйте несколько аргументов одной длинной строкой.",
"ai_settings.mcp_server.guide.field.env.title": "Переменные окружения",
"ai_settings.mcp_server.guide.field.env.summary": "Передают конфигурацию KEY=VALUE в MCP Server.",
"ai_settings.mcp_server.guide.field.env.detail": "Обычно используются для API Key, URL сервиса, рабочего каталога и похожих значений. Одна переменная на строку; не пишите export.",
"ai_settings.mcp_server.guide.field.env.fill": "Одна строка KEY=VALUE на переменную, например GITHUB_TOKEN=....",
"ai_settings.mcp_server.guide.field.env.avoid": "Не пишите export, set или префикс $env:, и не смешивайте переменные окружения с command или args.",
"ai_settings.mcp_server.guide.field.timeout.title": "Таймаут (секунды)",
"ai_settings.mcp_server.guide.field.timeout.summary": "Максимальное ожидание одного обнаружения инструмента или одного вызова.",
"ai_settings.mcp_server.guide.field.timeout.detail": "Обычным локальным инструментам обычно хватает 20 секунд. Увеличивайте значение для медленного запуска или удалённых цепочек.",
"ai_settings.mcp_server.guide.field.timeout.fill": "Обычно 20; при медленном запуске 45 или 60.",
"ai_settings.mcp_server.guide.field.timeout.avoid": "Не выбирайте произвольно слишком маленькое значение. Менее 3 секунд легко приводит к ложной ошибке обнаружения инструментов.",
"ai_settings.mcp_server.guide.troubleshooting.title": "Частые ошибки настройки",
"ai_settings.mcp_server.guide.troubleshooting.description": "Если тест не проходит, используйте этот раздел, чтобы понять, какое поле исправить. Чаще всего сломан не MCP, а неправильно разделены команда, аргументы или переменные окружения.",
"ai_settings.mcp_server.guide.troubleshooting.cause_label": "Частая причина: ",
"ai_settings.mcp_server.guide.troubleshooting.fix_label": "Исправление: ",
"ai_settings.mcp_server.guide.troubleshooting.example_label": "Пример:",
"ai_settings.mcp_server.guide.troubleshooting.command_not_found.symptom": "Тест сообщает, что команда не найдена",
"ai_settings.mcp_server.guide.troubleshooting.command_not_found.cause": "Команда запуска содержит всю командную строку, команда отсутствует в PATH, или путь Windows содержит пробелы, но не является реальным путём к exe.",
"ai_settings.mcp_server.guide.troubleshooting.command_not_found.fix": "В команде запуска указывайте только сам исполняемый файл. Имена скриптов и --stdio помещайте в аргументы команды. Если команды нет в PATH, укажите абсолютный путь.",
"ai_settings.mcp_server.guide.troubleshooting.timeout_or_no_tools.symptom": "Тест уходит в таймаут или обнаруживает 0 инструментов",
"ai_settings.mcp_server.guide.troubleshooting.timeout_or_no_tools.cause": "Сервис запускается медленно, отсутствует аргумент stdio, контейнеру Docker не хватает -i, или сервис поддерживает только HTTP/SSE.",
"ai_settings.mcp_server.guide.troubleshooting.timeout_or_no_tools.fix": "Сначала убедитесь, что сервис поддерживает stdio, затем добавьте --stdio или Docker -i. При медленном запуске увеличьте таймаут до 45 или 60 секунд.",
"ai_settings.mcp_server.guide.troubleshooting.auth_failed.symptom": "Ошибка аутентификации, 401 или 403",
"ai_settings.mcp_server.guide.troubleshooting.auth_failed.cause": "Отсутствуют API Key, Token, URL сервиса или другие переменные окружения, либо KEY=VALUE имеет неверный формат.",
"ai_settings.mcp_server.guide.troubleshooting.auth_failed.fix": "Пишите одну строку KEY=VALUE на каждую переменную окружения. Не пишите export и не смешивайте переменные окружения с командой запуска.",
"ai_settings.mcp_server.guide.troubleshooting.stdio_only.symptom": "README содержит только URL или SSE-конфигурацию",
"ai_settings.mcp_server.guide.troubleshooting.stdio_only.cause": "Обычно это не локальный stdio-процесс, и текущий поток добавления MCP в GoNavi напрямую его не поддерживает.",
"ai_settings.mcp_server.guide.troubleshooting.stdio_only.fix": "Предпочитайте stdio-способ запуска этого сервиса. Если доступны только HTTP/SSE, сначала используйте официальный gateway или локальный wrapper для преобразования в stdio.",
"ai_settings.mcp_server.guide.full_command.title": "Есть только полная команда?",
"ai_settings.mcp_server.guide.full_command.description": "Вставьте полную команду напрямую. GoNavi разделит её на команду запуска / аргументы команды / переменные окружения. Поддерживаются Unix KEY=VALUE, Windows PowerShell $env:KEY=VALUE; и префиксы cmd set KEY=VALUE &&.",
"ai_settings.mcp_server.guide.full_command.placeholder": "Вставьте полную команду, например:\n{{example}}",
"ai_settings.mcp_server.guide.full_command.parsed_summary": "Будет разобрано как: команда {{command}}, аргументов {{argsCount}}, переменных окружения {{envCount}}.",
"ai_settings.mcp_server.guide.full_command.support_hint": "Поддерживаются пути в кавычках, аргументы с пробелами и префиксы переменных окружения KEY=VALUE / $env:KEY=VALUE; / set KEY=VALUE &&.",
"ai_settings.mcp_server.guide.full_command.apply": "Автоматически разнести по полям ниже",
"ai_settings.mcp_server.quick_add.title": "Быстрое добавление из одной команды",
"ai_settings.mcp_server.quick_add.description": "Выберите ближайший шаблон или вставьте полную команду запуска из README. GoNavi разделит её на command, args и env, затем создаст редактируемый черновик MCP.",
"ai_settings.mcp_server.quick_add.templates_title": "Типовые шаблоны запуска",
"ai_settings.mcp_server.quick_add.templates_description": "Если вы не уверены, как разделить command и args, нажмите шаблон, чтобы создать черновик. На каждой карточке показана команда, которую GoNavi реально запустит.",
"ai_settings.mcp_server.quick_add.action.parse_and_add": "Разобрать и добавить черновик",
"ai_settings.mcp_server.command_parse.error.unclosed_quote": "В команде есть незакрытая кавычка. Проверьте её и повторите попытку.",
"ai_settings.mcp_server.command_parse.error.empty": "Сначала вставьте полную команду.",
"ai_settings.mcp_server.command_parse.error.missing_command": "Команда запуска не распознана. Укажите хотя бы имя исполняемого файла.",
"ai_settings.mcp_server.command_parse.error.failed": "Не удалось разобрать полную команду. Проверьте формат команды.",
"ai_settings.mcp_server.template.npx.title": "npx-пакет",
"ai_settings.mcp_server.template.npx.description": "Для npm MCP-пакетов, где в README указано `npx -y xxx --stdio`.",
"ai_settings.mcp_server.template.npx.detail": "В примере используется `npx -y @modelcontextprotocol/server-filesystem --stdio`; замените имя пакета и аргументы пути на реальные значения.",
"ai_settings.mcp_server.template.npx.seed_name": "npx-пакет",
"ai_settings.mcp_server.template.uvx.title": "uvx-инструмент",
"ai_settings.mcp_server.template.uvx.description": "Для опубликованных MCP-пакетов в экосистеме Python/uv.",
"ai_settings.mcp_server.template.uvx.detail": "В примере используется `uvx some-mcp-server`; замените имя пакета перед сохранением.",
"ai_settings.mcp_server.template.uvx.seed_name": "uvx-инструмент",
"ai_settings.mcp_server.template.node.title": "Node-скрипт",
"ai_settings.mcp_server.template.node.description": "Для локальных js/ts-скриптов или node-запускателей, установленных через npm.",
"ai_settings.mcp_server.template.node.detail": "В примере используется `node server.js --stdio`; имя скрипта и аргументы можно изменить.",
"ai_settings.mcp_server.template.node.seed_name": "Node-скрипт",
"ai_settings.mcp_server.template.python.title": "Python-модуль",
"ai_settings.mcp_server.template.python.description": "Для сервисов, запускаемых как модуль, например `python -m xxx`.",
"ai_settings.mcp_server.template.python.detail": "В примере используется `python -m your_mcp_server`; замените имя модуля на реальное.",
"ai_settings.mcp_server.template.python.seed_name": "Python-модуль",
"ai_settings.mcp_server.template.docker.title": "Docker-образ",
"ai_settings.mcp_server.template.docker.description": "Для контейнерных MCP-сервисов, где в README указано `docker run -i --rm image`. Docker должен быть установлен локально.",
"ai_settings.mcp_server.template.docker.detail": "В примере используется `docker run --rm -i mcp/server-fetch:latest`; token для контейнера обычно передают через -e KEY=VALUE в аргументах.",
"ai_settings.mcp_server.template.docker.seed_name": "Docker MCP",
"ai_settings.mcp_server.template.exe.title": "Локальный EXE",
"ai_settings.mcp_server.template.exe.description": "Для скомпилированных локальных бинарных файлов или внутренних инструментов компании.",
"ai_settings.mcp_server.template.exe.detail": "В примере используется `your-mcp-server.exe stdio`; замените путь к exe на реальный.",
"ai_settings.mcp_server.template.exe.seed_name": "Локальный EXE",
"ai_settings.mcp_server.guide.note.command_only": "Команда запуска должна содержать только саму программу. Не добавляйте в неё имена скриптов, модулей или --stdio.",
"ai_settings.mcp_server.guide.note.npx": "Если README показывает пример npx, укажите command как npx, а -y, имя пакета и --stdio внесите в args по отдельности. Не помещайте всю npx-команду в command.",
"ai_settings.mcp_server.guide.note.docker": "Если README показывает пример Docker, укажите command как docker, а run, --rm, -i, имя образа и аргументы контейнера внесите в args по отдельности. Токены контейнера обычно передаются через -e KEY=VALUE.",
"ai_settings.mcp_server.guide.note.full_command": "Если README даёт только одну полную командную строку, сначала вставьте её в поле полной команды для авторазделения. Поддерживаются KEY=VALUE, env KEY=VALUE, PowerShell $env:KEY=VALUE; и Windows set KEY=VALUE &&.",
"ai_settings.mcp_server.guide.note.env_lines": "Используйте одну строку KEY=VALUE на каждую переменную окружения. Не пишите export и не смешивайте это с командой запуска.",
"ai_settings.mcp_server.guide.note.secrets": "Секретные переменные окружения сохраняются в локальной конфигурации и передаются только как окружение процесса при запуске MCP. Не помещайте секреты в чат.",
"ai_settings.mcp_server.guide.note.test_discovery": "Тест обнаружения инструментов временно запускает сервис для проверки и не сохраняет конфигурацию автоматически.",
"ai_settings.mcp_server.section.quick_reference.title": "Краткая справка по новым параметрам MCP",
"ai_settings.mcp_server.section.quick_reference.description": "Перед добавлением сервиса проверьте эти поля: `command` содержит только исполняемый файл, `args` содержит имена скриптов и --stdio, `env` использует одну строку KEY=VALUE на запись, а `timeout` управляет ожиданием одного обнаружения инструмента или вызова.",
"ai_settings.mcp_server.section.quick_reference.footer": "Поддерживаются команда, аргументы, переменные окружения и таймаут. Если не уверены, сначала прочитайте карточки краткой справки по полям. После сохранения сервис автоматически появится в списке инструментов AI.",
"ai_settings.mcp_server.section.action.add_server": "Добавить MCP-сервис",
"ai_settings.mcp_server.section.empty": "MCP-сервисов пока нет. Частые формы: `npx -y package --stdio`, `node server.js`, `uvx some-mcp-server`, `python -m server` и `docker run --rm -i image`.",
"ai_settings.clipboard.error.unsupported": "Копирование в буфер обмена не поддерживается в текущей среде",
"ai_settings.mcp_http.error.control_unsupported_runtime": "Текущая среда выполнения не поддерживает управление службой MCP HTTP",
"ai_settings.mcp_http.error.start_unsupported_version": "Эта версия не поддерживает запуск службы MCP HTTP",
"ai_settings.mcp_http.error.stop_unsupported_version": "Эта версия не поддерживает остановку службы MCP HTTP",
"ai_settings.mcp_http.message.started": "Служба GoNavi MCP HTTP запущена",
"ai_settings.mcp_http.message.stopped": "Служба GoNavi MCP HTTP остановлена",
"ai_settings.mcp_http.message.toggle_failed": "Не удалось переключить службу GoNavi MCP HTTP",
"ai_settings.mcp_http.message.url_unavailable": "Нет MCP HTTP URL для копирования",
"ai_settings.mcp_http.message.url_copied": "MCP HTTP URL скопирован",
"ai_settings.mcp_http.message.authorization_header_required": "Сначала запустите службу MCP HTTP, чтобы создать Authorization Header",
"ai_settings.mcp_http.message.authorization_header_copied": "Authorization Header скопирован",
"ai_settings.mcp_http.status.not_running": "Служба GoNavi MCP HTTP не запущена",
"ai_settings.mcp_http.panel.title": "Служба GoNavi MCP HTTP",
"ai_settings.mcp_http.panel.status.running": "Запущена",
"ai_settings.mcp_http.panel.status.stopped": "Остановлена",
"ai_settings.mcp_http.panel.description": "Для удаленных Agent, таких как OpenClaw и Hermans. После включения служба слушает локальный адрес и открывает только инструменты чтения структуры для подключений, баз данных, таблиц, столбцов и DDL.",
"ai_settings.mcp_http.panel.switch.on": "Вкл.",
"ai_settings.mcp_http.panel.switch.off": "Выкл.",
"ai_settings.mcp_http.panel.addr_label": "Адрес прослушивания / порт",
"ai_settings.mcp_http.panel.authorization_placeholder": "Bearer gnv_xxx (оставьте пустым для автогенерации)",
"ai_settings.mcp_http.panel.running_hint": "Служба запущена. Укажите URL и Authorization Header в удаленном MCP-клиенте.",
"ai_settings.mcp_http.panel.stopped_hint": "Можно настроить локальный порт прослушивания и Bearer Token. Если Authorization пустой, при запуске будет создан случайный Token.",
"ai_settings.mcp_http.panel.copy_url": "Копировать URL",
"ai_settings.mcp_http.panel.copy_authorization": "Копировать Authorization",
"ai_settings.skill.description": "Skill - это не еще один большой промпт, а именованный модуль промпта + scope + зависимости от инструментов. На этом этапе храните его в основном репозитории. Отдельный репозиторий GitHub нужен только если позже будет распространяться общий skill pack.",
"ai_settings.skill.hint": "После включения он добавляется в сеанс по scope. Если нужного инструмента нет, этот Skill автоматически пропускается.",
"ai_settings.skill.action.add": "Добавить Skill",
"ai_settings.skill.empty": "Skills пока нет. Можно определить отдельные system prompts для сценариев базы данных, JVM и диагностики.",
"ai_settings.skill.name_placeholder": "Название Skill, например: SQL review / JVM diagnostic plan",
"ai_settings.skill.status.enabled": "Включен",
"ai_settings.skill.status.disabled": "Отключен",
"ai_settings.skill.description_placeholder": "Личная заметка, например: перед выводом SQL подтвердить имена полей и риски",
"ai_settings.skill.scope.global.label": "Глобально",
"ai_settings.skill.scope.global.desc": "Включено для всех AI-сеансов",
"ai_settings.skill.scope.database.label": "База данных",
"ai_settings.skill.scope.database.desc": "Только для сценариев SQL / базы данных",
"ai_settings.skill.scope.jvm.label": "Ресурсы JVM",
"ai_settings.skill.scope.jvm.desc": "Только для сценариев анализа ресурсов JVM",
"ai_settings.skill.scope.jvm_diagnostic.label": "Диагностика JVM",
"ai_settings.skill.scope.jvm_diagnostic.desc": "Только для рабочей области диагностики JVM",
"ai_settings.skill.scopes_placeholder": "Выберите, где должен применяться этот Skill",
"ai_settings.skill.required_tools_placeholder": "Необязательно: укажите, от каких инструментов зависит этот Skill",
"ai_settings.skill.system_prompt_placeholder": "Введите system prompt, который должен добавить этот Skill. Сфокусируйтесь на одной четкой возможности и не дублируйте глобальные промпты.",
"ai_settings.skill.confirm_delete": "Удалить этот Skill?",
"ai_settings.skill.message.saved": "Skill сохранен",
"ai_settings.skill.message.save_failed": "Не удалось сохранить Skill",
"ai_settings.skill.message.deleted": "Skill удален",
"ai_settings.skill.message.delete_failed": "Не удалось удалить Skill",
"ai_settings.tools.description": "При работе с вопросами по базам данных AI-ассистент может автоматически вызывать эти встроенные инструменты, чтобы получить реальные данные без ручного вмешательства.",
"ai_settings.tools.workflow": "💡 Процесс: get_connections → get_databases → get_tables → get_columns → сформировать SQL",
"ai_settings.tools.params_label": "Параметры:",
"ai_settings.tools.builtin_tool_label": "Встроенный инструмент",
"ai_settings.tools.search.aria_label": "Поиск встроенных инструментов",
"ai_settings.tools.search.placeholder": "Поиск инструментов, процессов или параметров, например mcp / lineLimit / allowMutating / transaction",
"ai_settings.tools.search.clear": "Очистить",
"ai_settings.tools.summary": "Показано {{flowVisible}}/{{flowTotal}} рекомендуемых процессов и {{toolVisible}}/{{toolTotal}} встроенных инструментов.",
"ai_settings.tools.empty.no_matches": "Подходящих встроенных инструментов нет. Попробуйте более общие ключевые слова, например mcp, logs, connection, transaction, shortcuts или schema.",
"ai_settings.tools.parameters.hint_title": "Подсказки по параметрам",
"ai_settings.tools.parameters.type_label": "Тип: {{type}}",
"ai_settings.tools.parameters.required": "Обязательный",
"ai_settings.tools.parameters.optional": "Необязательный",
"ai_settings.tools.parameters.enum_values": "Допустимые значения: {{values}}",
"ai_settings.tools.parameters.default_value": "По умолчанию: {{value}}",
"ai_settings.tools.parameters.example": "Пример:",
"ai_settings.tools.params.none": "Без параметров",
"ai_settings.tools.get_connections.desc": "Получить все доступные подключения к базам данных",
"ai_settings.tools.get_connections.detail": "Возвращает ID подключения, имя, тип (MySQL/PostgreSQL и т. д.) и адрес Host. AI использует эти сведения, чтобы выбрать подключение для первичного исследования.",
"ai_settings.tools.get_databases.desc": "Получить все базы данных в выбранном подключении",
"ai_settings.tools.get_databases.detail": "Передайте connectionId, чтобы получить список имен баз данных или схем в этом подключении.",
"ai_settings.tools.get_tables.desc": "Получить все имена таблиц в базе данных",
"ai_settings.tools.get_tables.detail": "Передайте connectionId и dbName, чтобы получить список таблиц. AI использует его для поиска целевой таблицы, о которой говорит пользователь.",
"ai_settings.tools.get_columns.desc": "Получить структуру столбцов таблицы",
"ai_settings.tools.get_columns.detail": "Передайте connectionId, dbName и tableName, чтобы получить имя, тип, признак NULL, значение по умолчанию и комментарий каждого столбца. Перед генерацией SQL AI должен вызвать этот инструмент, чтобы подтвердить реальные имена столбцов.",
"ai_settings.tools.get_table_ddl.desc": "Получить DDL таблицы",
"ai_settings.tools.get_table_ddl.detail": "Передайте connectionId, dbName и tableName, чтобы получить полный оператор CREATE TABLE, включая определения столбцов, индексы, ограничения и метаданные.",
"ai_settings.tools.execute_sql.desc": "Выполнить SQL-запрос и вернуть результат",
"ai_settings.tools.execute_sql.detail": "Передайте connectionId, dbName и sql, чтобы выполнить SQL в целевой базе данных и вернуть до 50 строк результата. Применяется уровень безопасности; в режиме только чтения разрешены только SELECT/SHOW/DESCRIBE.",
"driver_manager.title": "Управление драйверами",
"driver_manager.action.refresh": "Обновить",
"driver_manager.action.network_check": "Проверка сети",
"driver_manager.action.close": "Закрыть",
"driver_manager.action.open_global_proxy_settings": "Открыть настройки глобального прокси",
"driver_manager.action.open_directory": "Открыть каталог драйверов",
"driver_manager.action.import_directory": "Импортировать каталог драйверов",
"driver_manager.action.import_package": "Импортировать пакет драйвера",
"driver_manager.action.install_enable": "Установить и включить",
"driver_manager.action.remove": "Удалить",
"driver_manager.action.logs": "Журнал",
"driver_manager.action.switch_version": "Переключить версию",
"driver_manager.column.data_source": "Источник данных",
"driver_manager.column.package_size": "Размер пакета",
"driver_manager.column.status": "Состояние",
"driver_manager.column.progress": "Ход установки",
"driver_manager.column.version": "Версия драйвера",
"driver_manager.column.actions": "Действия",
"driver_manager.description.install_required": "Для источников данных, кроме MySQL / Redis / Oracle / PostgreSQL, перед подключением нужно установить и включить драйвер.",
"driver_manager.directory_info.title": "Каталог драйверов и повторное использование",
"driver_manager.directory_info.details_label": "Показать каталог драйверов и пояснение о повторном использовании",
"driver_manager.directory_info.reuse_help": "Автоматически скачанные и вручную импортированные драйверы сохраняются в этом каталоге. Их можно повторно использовать при последующих обновлениях версий.",
"driver_manager.directory_info.root_dir": "Корневой каталог драйверов: {{path}}",
"driver_manager.directory_info.log_file": "Файл журнала выполнения: {{path}}",
"driver_manager.empty.default": "Нет данных о драйверах",
"driver_manager.empty.search": "Нет драйверов, совпадающих с «{{keyword}}»",
"driver_manager.filter_summary.match": "Совпадений {{filtered}} / {{total}}",
"driver_manager.filter_summary.total": "Драйверов: {{total}}",
"driver_manager.import.directory_help": "Если загрузка из приложения не работает, сначала вручную скачайте пакет драйвера в этот каталог, затем используйте «Импортировать пакет драйвера» или «Импортировать каталог драйверов», чтобы завершить установку.",
"driver_manager.import.single_file_help": "Строчное действие «Импортировать пакет драйвера» предназначено только для отдельного файла драйвера или архива, например `mariadb-driver-agent`, `mariadb-driver-agent.exe` или `GoNavi-DriverAgents.zip`. Прямой импорт JDBC Jar не поддерживается; для пакетного импорта используйте «Импортировать каталог драйверов» выше.",
"driver.guidance.customConnectionDriverHelp": "Поддерживаются: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase; псевдонимы: postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. Укажите имя драйвера Go database/sql, уже зарегистрированного в GoNavi. Не вводите напрямую имя системного драйвера ODBC/JDBC и не импортируйте JDBC Jar.",
"driver_manager.local_source.file": "файл",
"driver_manager.local_source.directory": "каталог",
"driver_manager.log.start_auto_install": "Начата автоматическая установка",
"driver_manager.log.done_auto_install": "Автоматическая установка завершена{{version}}",
"driver_manager.log.start_local_import": "Начат локальный импорт{{version}} ({{source}}): {{path}}",
"driver_manager.log.done_local_import": "Установка через локальный импорт завершена{{version}}",
"driver_manager.log.skip_installed_dedupe": "Драйвер уже установлен; импорт каталога пропущен из-за устранения дублей",
"driver_manager.log.force_overwrite_reinstall": "Включен режим перезаписи установленных драйверов; будет выполнен повторный импорт",
"driver_manager.log.skip_slim_build": "Текущий пакет выпуска является slim-сборкой; импорт каталога пропущен",
"driver_manager.log.start_remove": "Начато удаление драйвера",
"driver_manager.log.done_remove": "Удаление драйвера завершено",
"driver_manager.log.progress_line": "{{status}}: {{message}} ({{percent}} %)",
"driver_manager.log_modal.title": "Журнал драйвера - {{name}}",
"driver_manager.log_modal.install_dir": "Каталог установки: {{path}}",
"driver_manager.log_modal.executable_path": "Исполняемый файл драйвера: {{path}}",
"driver_manager.log_modal.empty": "Для этого драйвера пока нет журналов операций.",
"driver_manager.message.load_status_failed": "Не удалось загрузить состояние драйверов",
"driver_manager.message.load_status_failed_detail": "Не удалось загрузить состояние драйверов: {{detail}}",
"driver_manager.message.network_check_failed": "Проверка сети для драйверов не удалась",
"driver_manager.message.network_check_failed_detail": "Проверка сети для драйверов не удалась: {{detail}}",
"driver_manager.message.network_check_completed": "Проверка сети для драйверов завершена",
"driver_manager.message.load_version_failed": "Не удалось загрузить список версий для {{name}}",
"driver_manager.message.load_version_failed_detail": "Не удалось загрузить список версий для {{name}}: {{detail}}",
"driver_manager.message.install_start": "Начата установка",
"driver_manager.message.install_watchdog_timeout": "Установка {{name}} не завершилась за {{minutes}} мин. Фоновая задача, возможно, всё еще загружает или собирает файлы. Обновите статус позже; если это повторяется, проверьте прокси или импортируйте локальный пакет драйвера.",
"driver_manager.message.install_failed_fallback": "Не удалось установить {{name}}",
"driver_manager.message.install_failed": "Не удалось установить {{name}}",
"driver_manager.message.install_failed_detail": "Не удалось установить {{name}}: {{detail}}",
"driver_manager.message.install_success": "{{name}}{{version}} установлен и включен",
"driver_manager.message.local_path_required": "Выберите допустимый локальный источник импорта: {{source}}",
"driver_manager.message.local_import_start": "Начат импорт локального пакета драйвера",
"driver_manager.message.local_import_failed": "Не удалось импортировать локальный пакет драйвера для {{name}}",
"driver_manager.message.local_import_failed_detail": "Не удалось импортировать локальный пакет драйвера для {{name}}: {{detail}}",
"driver_manager.message.local_import_success": "Локальный пакет драйвера для {{name}}{{version}} установлен и включен",
"driver_manager.message.select_local_file_failed": "Не удалось выбрать локальный файл пакета драйвера",
"driver_manager.message.select_local_file_failed_detail": "Не удалось выбрать локальный файл пакета драйвера: {{detail}}",
"driver_manager.message.local_file_required": "Выберите допустимый файл пакета драйвера",
"driver_manager.message.select_local_directory_failed": "Не удалось выбрать локальный каталог пакета драйвера",
"driver_manager.message.select_local_directory_failed_detail": "Не удалось выбрать локальный каталог пакета драйвера: {{detail}}",
"driver_manager.message.local_directory_required": "Выберите допустимый каталог пакета драйвера",
"driver_manager.message.no_external_drivers_to_import": "Нет внешних драйверов для импорта",
"driver_manager.message.skip.dedupe": "Пропущено дублей: {{count}}",
"driver_manager.message.skip.slim": "Пропущено slim-сборок: {{count}}",
"driver_manager.message.skip_suffix": ", {{items}}",
"driver_manager.message.overwrite_suffix": " (с перезаписью установленных)",
"driver_manager.message.directory_import_completed": "Импорт каталога завершен{{mode}}: успешно {{success}}{{skip}}",
"driver_manager.message.directory_import_completed_with_failure": "Импорт каталога завершен{{mode}}: успешно {{success}}, с ошибкой {{failed}}{{skip}}",
"driver_manager.message.directory_import_failed": "Импорт каталога не удался{{mode}}: с ошибкой {{failed}}{{skip}}",
"driver_manager.message.open_directory_failed": "Не удалось открыть каталог драйверов",
"driver_manager.message.open_directory_failed_detail": "Не удалось открыть каталог драйверов: {{detail}}",
"driver_manager.message.remove_failed": "Не удалось удалить {{name}}",
"driver_manager.message.remove_failed_detail": "Не удалось удалить {{name}}: {{detail}}",
"driver_manager.message.remove_success": "{{name}} удален",
"driver_manager.network.alert.download_chain_unreachable": "Важно: домены маршрута загрузки драйверов недоступны",
"driver_manager.network.alert.download_network_unreachable": "Важно: сеть загрузки драйверов недоступна",
"driver_manager.network.summary.download_chain_unreachable": "GitHub API доступен, но домены ресурсов для загрузки драйверов недоступны.",
"driver_manager.network.summary.unreachable_proxy_configured": "Некоторые точки загрузки драйверов недоступны. Проверьте, что настроенный прокси работает, и повторите попытку.",
"driver_manager.network.summary.proxy_recommended": "Некоторые точки загрузки драйверов недоступны. Перед установкой настройте прокси HTTP/HTTPS/SOCKS5.",
"driver_manager.network.summary.unreachable": "Некоторые точки загрузки драйверов недоступны. Проверьте сеть и повторите попытку.",
"driver_manager.network.summary.reachable_with_proxy": "Сеть загрузки драйверов доступна через настроенный прокси.",
"driver_manager.network.summary.reachable": "Сеть загрузки драйверов доступна. Драйверы можно устанавливать напрямую.",
"driver_manager.network.chain_alert.description": "Страницы GitHub могут открываться, но загрузка пакетов драйверов перенаправляется на домены ресурсов. Сначала включите глобальный прокси в верхнем пункте GoNavi «Прокси», указав локальный адрес и порт приложения прокси.",
"driver_manager.network.chain_alert.allow_hosts": "Если ошибка сохраняется, разрешите эти узлы в правилах прокси: {{hosts}}. Если правила изменить нельзя, рассмотрите включение режима TUN.",
"driver_manager.network.proxy_env_detected": "Обнаружены переменные окружения прокси: {{keys}}",
"driver_manager.network.details_label": "Показать детали проверки сети",
"driver_manager.network.github_latency": "Задержка подключения через прокси к GitHub: {{status}}{{latency}}{{detail}}",
"driver_manager.network.reachable": "доступно",
"driver_manager.network.unreachable": "недоступно",
"driver_manager.network.no_result": "нет результата",
"driver_manager.network.latency_value": ", {{latency}}ms",
"driver_manager.network.error_value": ", {{detail}}",
"driver_manager.network.no_proxy_env": "Системные переменные окружения прокси не обнаружены.",
"driver_manager.network.checking": "Проверяется сеть загрузки драйверов...",
"driver_manager.network.not_checked": "Проверка сети еще не завершена",
"driver_manager.progress.local_package_start": "Начата установка локального пакета драйвера",
"driver_manager.progress.metadata_write": "Запись метаданных драйвера",
"driver_manager.progress.local_package_done": "Импорт локального пакета драйвера завершен",
"driver_manager.progress.install_start": "Начата установка",
"driver_manager.progress.pure_go_enabled": "Установка завершена; чистый Go-драйвер включен",
"driver_manager.progress.agent_install_start": "Начата установка агента драйвера {{name}}",
"driver_manager.progress.agent_install_done": "Установка агента драйвера {{name}} завершена",
"driver_manager.progress.download_prebuilt_agent": "Загрузка предварительно собранного агента драйвера {{name}}",
"driver_manager.progress.download_prebuilt_package": "Загрузка предварительно собранного пакета драйвера {{name}}",
"driver_manager.progress.download_bundle": "Загрузка комплекта драйвера {{name}}",
"driver_manager.progress.wait_bundle": "Ожидание завершения загрузки комплекта драйвера {{name}}",
"driver_manager.progress.extract_agent_from_bundle": "Извлечение агента {{name}} из комплекта драйверов",
"driver_manager.progress.unzip_agent": "Распаковка агента драйвера {{name}}",
"driver_manager.progress.source_build_preferred": "Сначала используется локальная сборка из исходников для агента драйвера {{name}}",
"driver_manager.progress.dev_build_fallback": "Предварительно собранный пакет не найден; пробуем локальную сборку для разработки",
"driver_manager.progress.plan.source_only": "Подготовка установки агента драйвера {{name}} (версия {{version}}); эта версия разрешает только локальную сборку из исходников",
"driver_manager.progress.plan.require_source_first": "Подготовка установки агента драйвера {{name}} (версия {{version}}); dev-сборка использует только локальную сборку из исходников и не переходит к пакетам релиза",
"driver_manager.progress.plan.source_first": "Подготовка установки агента драйвера {{name}} (версия {{version}}); сначала локальная сборка из исходников, затем резервная загрузка",
"driver_manager.progress.plan.direct_then_bundle": "Подготовка установки агента драйвера {{name}} (версия {{version}}); сначала {{direct}} прямых ссылок на готовую сборку, затем {{bundle}} источников комплектов драйверов",
"driver_manager.progress.plan.explicit_direct": "Подготовка установки агента драйвера {{name}} (версия {{version}}); только явные ресурсы версии, пробуем {{direct}} прямых ссылок на готовую сборку",
"driver_manager.progress.plan.direct_only": "Подготовка установки агента драйвера {{name}} (версия {{version}}); пробуем {{direct}} прямых ссылок на готовую сборку",
"driver_manager.progress.plan.bundle_only": "Подготовка установки агента драйвера {{name}} (версия {{version}}); прямые ссылки на готовую сборку не указаны, пробуем {{bundle}} источников комплектов драйверов",
"driver_manager.progress.plan.source_fallback": "Подготовка установки агента драйвера {{name}} (версия {{version}}); если ресурсы выпуска не совпадут, будет локальная сборка из исходников",
"driver_manager.progress.fallback.direct_to_bundle": "Прямые ссылки на готовую сборку не подошли; переключаемся на комплект драйверов ({{name}}, осталось источников: {{bundle}})",
"driver_manager.progress.fallback.explicit_skip_bundle": "Прямые ссылки на готовую сборку не подошли; разрешены только явные ресурсы, комплект драйверов пропускается ({{name}})",
"driver_manager.progress.fallback.bundle_available": "Прямая ссылка недоступна; переключаемся на комплект драйверов ({{name}}, осталось источников: {{bundle}})",
"driver_manager.progress.fallback.source_build": "Ресурсы выпуска не подошли; готовится резервная локальная сборка из исходников ({{name}})",
"driver_manager.progress.backend_empty": "Backend не вернул деталей прогресса",
"driver_manager.progress.backend_detail": "Деталь backend: {{detail}}",
"driver_manager.progress.status.start": "СТАРТ",
"driver_manager.progress.status.downloading": "ЗАГРУЗКА",
"driver_manager.progress.status.done": "ГОТОВО",
"driver_manager.progress.status.error": "ОШИБКА",
"driver_manager.progress.status.unknown": "НЕИЗВЕСТНО",
"driver_manager.option.force_overwrite_installed": "Перезаписывать установленные",
"driver_manager.punctuation.list_separator": ", ",
"driver_manager.search.placeholder": "Поиск по имени или типу драйвера, например DuckDB или clickhouse",
"driver_manager.search.built_in": "встроенный",
"driver_manager.search.external": "внешний",
"driver_manager.status.calculating": "Вычисляется...",
"driver_manager.status.built_in_available": "Встроенный доступен",
"driver_manager.status.installing_percent": "Установка {{percent}}%",
"driver_manager.status.enabled": "Включен",
"driver_manager.status.installed": "Установлен",
"driver_manager.status.disabled": "Не включен",
"driver_manager.status.full_required": "Требуется Full-версия",
"driver_manager.version.default": "Версия по умолчанию",
"driver_manager.version.inline_suffix": " (версия {{version}})",
"driver_manager.version.group.year": "{{year}} год",
"driver_manager.version.group.other": "Другое",
"driver_manager.version.placeholder.select": "Выберите версию драйвера",
"driver_manager.version.placeholder.load_on_expand": "Разверните, чтобы загрузить версии",
"driver_manager.version.installed_locked_with_version": "{{version}} (установлена; удалите, чтобы изменить)",
"driver_manager.version.installed_locked": "Установлено (удалите, чтобы изменить)",
"driver_manager.version.switch_pending": "Сейчас установлена {{installedVersion}}; выбрана {{targetVersion}}. Нажмите «Переключить версию», чтобы применить.",
"driver_manager.version.current_fallback": "текущая версия",
"driver_manager.version.target_fallback": "целевая версия",
"driver_manager.version.installed_with_version": "{{version}} (установлена{{suffix}})",
"driver_manager.version.installed": "Установлено{{suffix}}",
"driver_manager.version.needs_reinstall_suffix": ", требуется переустановка",
"driver_manager.version.mongodb_hint": "Сейчас поддерживаются только MongoDB 1.17.x и 2.x. Более старые версии 1.x недоступны для установки.",
"driver_manager.version.unlabeled": "Версия не указана",
"driver_manager.version.latest_suffix": " (последняя)",
"driver_manager.version.recommended_suffix": " (рекомендуемая)",
"driver_manager.package_size.built_in": "Встроенный",
"driver_manager.package_size.pending_release": "Ожидает публикации",
"driver_manager.backend.dialog.select_download_directory": "Выберите каталог загрузки драйверов",
"driver_manager.backend.dialog.select_package_file": "Выберите файл пакета драйвера (не JDBC Jar)",
"driver_manager.backend.dialog.select_package_directory": "Выберите каталог пакета драйвера",
"driver_manager.backend.driver_fallback_name": "драйвер",
"driver_manager.backend.package_size.built_in": "Встроенный",
"driver_manager.backend.package_size.to_be_published": "Ожидает публикации",
"driver_manager.backend.version.unlabeled": "Версия без метки",
"driver_manager.backend.version.latest_suffix": " (последняя)",
"driver_manager.backend.version.recommended_suffix": " (рекомендуется)",
"driver_manager.backend.message.unsupported_builtin_manifest_url": "Неподдерживаемый URL встроенного манифеста драйверов: {{url}}",
"driver_manager.backend.message.jdbc_jar_unsupported": "Прямой импорт файлов JDBC Jar не поддерживается. GoNavi использует Go-драйверы и дополнительные пакеты driver-agent; используйте пакет драйвера или каталог драйвера. Для подключения к Kingbase предпочтительно выберите тип подключения Kingbase либо укажите kingbase / kingbase8 в пользовательском подключении.",
"driver_manager.backend.message.runtime_directory_configured": "Каталог среды выполнения драйверов настроен",
"driver_manager.backend.message.opened_directory": "Каталог драйверов открыт: {{path}}",
"driver_manager.backend.message.log_hint": " (подробный журнал: {{path}})",
"driver_manager.backend.message.local_import_failed_detail": "Не удалось импортировать локальный пакет драйвера: {{detail}}",
"driver_manager.backend.message.metadata_write_failed_detail": "Не удалось записать метаданные драйвера: {{detail}}",
"driver_manager.backend.message.driver_install_success": "Драйвер успешно установлен",
"driver_manager.backend.message.download_failed_detail": "Не удалось скачать и установить драйвер: {{detail}}",
"driver_manager.backend.message.package_removed": "Пакет драйвера удален",
"driver_manager.backend.error.unknown": "Неизвестная ошибка",
"driver_manager.backend.error.unsupported_driver_type": "Неподдерживаемый тип драйвера",
"driver_manager.backend.error.builtin_download_not_required": "Встроенным драйверам не требуется загрузка пакетов расширения",
"driver_manager.backend.error.builtin_install_not_required": "Встроенным драйверам не требуется установка пакетов расширения",
"driver_manager.backend.error.builtin_version_not_required": "Встроенным драйверам не требуется выбор версии",
"driver_manager.backend.error.builtin_package_not_required": "У встроенных драйверов нет установочных пакетов",
"driver_manager.backend.error.builtin_remove_not_allowed": "Встроенные драйверы нельзя удалить",
"driver_manager.backend.error.optional_go_only": "Здесь можно устанавливать и включать только дополнительные Go-драйверы",
"driver_manager.backend.error.package_size_unsupported": "Этот драйвер не поддерживает запрос размера установочного пакета",
"driver_manager.backend.error.version_empty": "Версия пустая",
"driver_manager.backend.error.asset_name_empty": "Имя ресурса драйвера пустое",
"driver_manager.backend.error.mongo_version_unsupported": "Версия MongoDB {{version}} не поддерживается; поддерживаются только 1.17.x и 2.x",
"driver_manager.backend.error.driver_version_unsupported": "Версия {{version}} для {{name}} не поддерживается",
"driver_manager.backend.error.open_directory_unsupported": "На этой платформе нельзя открывать каталоги: {{platform}}",
"driver_manager.backend.error.open_directory_failed": "Не удалось открыть каталог драйверов: {{detail}}",
"driver_manager.backend.error.create_directory_failed": "Не удалось создать каталог драйверов: {{detail}}",
"driver_manager.backend.error.create_named_directory_failed": "Не удалось создать каталог драйвера {{name}}: {{detail}}",
"driver_manager.backend.error.remove_installed_agent_failed": "Не удалось удалить установленный агент драйвера {{name}}: {{detail}}",
"driver_manager.backend.error.agent_path_occupied_by_directory": "Путь агента драйвера {{name}} занят каталогом: {{path}}",
"driver_manager.backend.error.copy_bundled_agent_failed": "Не удалось скопировать встроенный агент драйвера {{name}}: {{detail}}",
"driver_manager.backend.error.bundled_agent_hash_failed": "Не удалось вычислить checksum встроенного агента драйвера {{name}}: {{detail}}",
"driver_manager.backend.error.remove_package_failed": "Не удалось удалить пакет драйвера: {{detail}}",
"driver_manager.backend.error.manifest_scheme_unsupported": "Неподдерживаемая схема URL манифеста драйверов: {{scheme}}",
"driver_manager.backend.error.manifest_fetch_failed": "Не удалось получить манифест драйверов: {{detail}}",
"driver_manager.backend.error.manifest_parse_failed": "Не удалось разобрать манифест драйверов: {{detail}}",
"driver_manager.backend.error.manifest_url_empty": "URL манифеста драйверов пуст",
"driver_manager.backend.error.manifest_too_large": "Манифест драйверов превышает ограничение размера",
"driver_manager.backend.error.local_manifest_url_invalid": "Недопустимый локальный URL манифеста драйверов",
"driver_manager.backend.error.file_manifest_url_invalid": "Недопустимый файловый URL манифеста драйверов",
"driver_manager.backend.error.driver_type_empty": "Тип драйвера пуст",
"driver_manager.backend.error.no_driver_versions": "Доступные версии драйвера не найдены",
"driver_manager.backend.error.module_path_empty": "Путь модуля пуст",
"driver_manager.backend.error.module_version_list_empty": "Список версий модуля пуст",
"driver_manager.backend.error.module_version_list_fetch_failed": "Не удалось получить список версий модуля: {{detail}}",
"driver_manager.backend.error.module_version_list_read_failed": "Не удалось прочитать список версий модуля: {{detail}}",
"driver_manager.backend.error.driver_version_list_fetch_failed": "Не удалось получить список версий драйвера: {{detail}}",
"driver_manager.backend.error.driver_version_list_parse_failed": "Не удалось разобрать список версий драйвера: {{detail}}",
"driver_manager.backend.error.cache_key_empty": "Cache key пуст",
"driver_manager.backend.error.release_empty": "Release пуст",
"driver_manager.backend.error.bundle_index_asset_missing": "Ресурс индекса комплекта драйверов не найден",
"driver_manager.backend.error.bundle_index_empty": "Индекс комплекта драйверов пуст",
"driver_manager.backend.error.bundle_index_fetch_failed": "Не удалось получить индекс комплекта драйверов: {{detail}}",
"driver_manager.backend.error.bundle_index_parse_failed": "Не удалось разобрать индекс комплекта драйверов: {{detail}}",
"driver_manager.backend.error.tag_empty": "Tag пуст",
"driver_manager.backend.error.api_url_empty": "API URL пуст",
"driver_manager.backend.error.release_info_fetch_failed": "Не удалось получить сведения Release: {{detail}}",
"driver_manager.backend.error.local_package_path_empty": "Путь локального пакета драйвера пуст",
"driver_manager.backend.error.local_directory_path_empty": "Путь локального каталога драйверов пуст",
"driver_manager.backend.error.file_path_empty": "Путь файла пуст",
"driver_manager.backend.error.metadata_payload_encode_failed": "Не удалось сериализовать метаданные драйвера: {{detail}}",
"driver_manager.backend.error.metadata_file_write_failed": "Не удалось записать файл метаданных драйвера: {{detail}}",
"driver_manager.backend.error.zip_entry_empty": "Элемент zip пуст",
"driver_manager.backend.error.download_url_empty": "Download URL пуст",
"driver_manager.backend.error.bundle_url_empty": "URL загрузки комплекта драйверов пуст",
"driver_manager.backend.error.read_local_package_failed": "Не удалось прочитать локальный пакет драйвера: {{detail}}",
"driver_manager.backend.error.read_local_directory_failed": "Не удалось прочитать локальный каталог драйверов: {{detail}}",
"driver_manager.backend.error.local_directory_not_directory": "Путь локального каталога драйверов не является каталогом: {{path}}",
"driver_manager.backend.error.local_directory_scan_limit": "В локальном каталоге драйверов слишком много записей (более {{max}}). Сузьте каталог или выберите zip/отдельный файл напрямую.",
"driver_manager.backend.error.scan_local_directory_failed": "Не удалось просканировать локальный каталог драйверов: {{detail}}",
"driver_manager.backend.error.local_directory_entry_missing": "Файл агента {{name}} не найден в каталоге (предпочтительный путь: {{path}}, кандидаты имен файлов: {{assetCandidates}} / {{baseCandidates}})",
"driver_manager.backend.error.open_local_package_failed": "Не удалось открыть локальный пакет драйвера: {{detail}}",
"driver_manager.backend.error.local_package_entry_missing": "Файл агента {{name}} не найден в локальном пакете драйвера (ожидаемый путь: {{path}})",
"driver_manager.backend.error.read_local_package_entry_failed": "Не удалось прочитать запись локального пакета драйвера: {{detail}}",
"driver_manager.backend.error.import_local_agent_failed": "Не удалось импортировать локальный агент драйвера: {{detail}}",
"driver_manager.backend.error.import_local_agent_runtime_failed": "Не удалось импортировать runtime-зависимости локального агента драйвера: {{detail}}",
"driver_manager.backend.error.runtime_dependency_directory_empty": "Каталог зависимостей времени выполнения пуст",
"driver_manager.backend.error.copy_runtime_dependency_entry_failed": "Не удалось скопировать зависимость времени выполнения {{name}}: {{detail}}",
"driver_manager.backend.error.runtime_dependency_target_directory_empty": "Целевой каталог зависимостей времени выполнения пуст",
"driver_manager.backend.error.runtime_dependency_entry_missing": "В пакете драйвера отсутствует зависимость времени выполнения: {{name}}",
"driver_manager.backend.error.extract_runtime_dependency_failed": "Не удалось распаковать зависимость времени выполнения {{name}}: {{detail}}",
"driver_manager.backend.error.download_failed": "Загрузка не удалась: {{detail}}",
"driver_manager.backend.error.bundle_download_failed": "Не удалось скачать комплект драйверов: {{detail}}",
"driver_manager.backend.error.open_bundle_failed": "Не удалось открыть комплект драйверов: {{detail}}",
"driver_manager.backend.error.read_bundle_entry_failed": "Не удалось прочитать запись комплекта драйверов: {{detail}}",
"driver_manager.backend.error.source_build_failed": "Локальная сборка из исходников не удалась: {{detail}}",
"driver_manager.backend.error.source_build_tag_unconfigured": "Для типа драйвера не настроены теги сборки: {{driverType}}",
"driver_manager.backend.error.source_build_workdir_unavailable": "Не удалось определить текущий каталог: {{detail}}",
"driver_manager.backend.error.source_build_project_root_missing": "Исходники общего драйвер-агента не найдены в проекте; используйте опубликованную сборку",
"driver_manager.backend.error.source_build_go_mod_read_failed": "Не удалось прочитать go.mod: {{detail}}",
"driver_manager.backend.error.source_build_module_dependency_missing": "Зависимость драйвера не найдена в go.mod: {{modulePath}}",
"driver_manager.backend.error.source_build_temp_directory_create_failed": "Не удалось создать временный каталог для сборки драйвера: {{detail}}",
"driver_manager.backend.error.source_build_temp_go_mod_write_failed": "Не удалось записать временный go.mod: {{detail}}",
"driver_manager.backend.error.source_build_temp_go_sum_write_failed": "Не удалось записать временный go.sum: {{detail}}",
"driver_manager.backend.error.source_build_module_or_version_empty": "Путь модуля драйвера или версия пусты",
"driver_manager.backend.error.source_build_duckdb_windows_cgo_toolchain_prepare_failed": "Не удалось подготовить CGO toolchain DuckDB Windows: {{detail}}",
"driver_manager.backend.error.source_build_duckdb_windows_dynamic_library_prepare_failed": "Не удалось подготовить динамическую библиотеку DuckDB Windows: {{detail}}",
"driver_manager.backend.error.source_build_duckdb_windows_toolchain_install_hint": "Сначала установите toolchain MSYS2 UCRT64: winget install --id MSYS2.MSYS2 -e; затем выполните C:\\msys64\\usr\\bin\\bash.exe -lc \"pacman -S --needed --noconfirm mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-binutils\"",
"driver_manager.backend.error.source_build_duckdb_windows_gcc_not_found": "Не найден пригодный gcc.exe/g++.exe; {{hint}}",
"driver_manager.backend.error.source_build_duckdb_windows_gcc_not_found_with_checked": "Не найден пригодный gcc.exe/g++.exe. Проверено: {{checked}}; {{hint}}",
"driver_manager.backend.error.source_build_duckdb_windows_dynamic_library_missing_files": "В официальном пакете динамической библиотеки DuckDB отсутствуют файлы: {{files}}",
"driver_manager.backend.error.source_build_duckdb_windows_dlltool_resolve_failed": "Не удалось найти DuckDB Windows dlltool: {{detail}}",
"driver_manager.backend.error.prebuilt_downloads_failed": "Не удалось скачать готовый пакет: {{detail}}",
"driver_manager.backend.error.install_prebuilt_package_failed": "Не удалось установить готовый пакет драйвера: {{detail}}",
"driver_manager.backend.error.agent_hash_failed": "Не удалось вычислить checksum агента драйвера: {{detail}}",
"driver_manager.backend.error.agent_metadata_unavailable": "Метаданные версии driver-agent {{name}} недоступны. Установите driver-agent, соответствующий текущей версии: {{detail}}",
"driver_manager.backend.error.agent_revision_mismatch": "Revision driver-agent {{name}} не совпадает (установлено: {{actual}}, требуется: {{expected}}). Установите driver-agent, соответствующий текущей версии.",
"driver_manager.backend.error.agent_revision_mismatch_empty_actual": "Revision driver-agent {{name}} не совпадает (установлено: пусто, требуется: {{expected}}). Установите driver-agent, соответствующий текущей версии.",
"driver_manager.backend.error.runtime_dependency_required": "{{name}} требует поставляемые вместе runtime-зависимости на текущей платформе ({{files}}); установка агента одним файлом не поддерживается. Используйте комплект драйверов, отдельный driver zip или локальную сборку из исходников.",
"driver_manager.backend.error.chmod_agent_failed": "Не удалось настроить права агента драйвера: {{detail}}",
"driver_manager.backend.error.replace_agent_failed": "Не удалось заменить агент драйвера: {{detail}}",
"driver_manager.backend.error.bundle_entry_missing": "{{name}} не найден в комплекте драйверов (ожидаемый путь: {{path}})",
"driver_manager.backend.error.create_agent_temp_file_failed": "Не удалось создать временный файл агента драйвера: {{detail}}",
"driver_manager.backend.error.write_agent_failed": "Не удалось записать агент драйвера: {{detail}}",
"driver_manager.backend.error.sync_agent_failed": "Не удалось сбросить агент драйвера на диск: {{detail}}",
"driver_manager.backend.error.close_agent_file_failed": "Не удалось закрыть файл агента драйвера: {{detail}}",
"driver_manager.backend.error.go_not_found_prebuilt_missing": "Go не установлен в текущей среде, и доступный готовый пакет агента {{name}} не найден",
"driver_manager.backend.error.source_build_timeout": "Сборка агента драйвера {{name}} превысила лимит времени (более {{timeout}}). Рекомендуется использовать готовый пакет драйвера или импорт локального пакета драйвера.",
"driver_manager.backend.error.source_build_command_failed": "Не удалось собрать агент драйвера {{name}}: {{detail}}; вывод: {{output}}",
"driver_manager.backend.error.copy_runtime_dependency_failed": "Не удалось скопировать runtime-зависимости {{name}}: {{detail}}",
"driver_manager.backend.error.named_chmod_agent_failed": "Не удалось настроить права агента драйвера {{name}}: {{detail}}",
"driver_manager.backend.error.named_agent_hash_failed": "Не удалось вычислить checksum агента драйвера {{name}}: {{detail}}",
"driver_manager.backend.status.built_in_available": "Встроенный драйвер готов к подключению",
"driver_manager.backend.status.optional_enabled": "Go-драйвер включен и готов к подключению",
"driver_manager.backend.status.installed_pending_with_version": "Драйвер установлен (версия: {{version}}) и ожидает активации",
"driver_manager.backend.status.installed_pending": "Драйвер установлен и ожидает активации",
"driver_manager.backend.status.optional_disabled_with_version": "Не включен (версия: {{version}})",
"driver_manager.backend.status.optional_disabled_generic": "Не включен",
"driver_manager.backend.status.needs_update": "Требуется переустановка, чтобы применить обновления драйвера.",
"driver_manager.backend.status.installed_revision": "установленная revision {{revision}}.",
"driver_manager.backend.status.expected_revision": "требуемая revision {{revision}}.",
"driver_manager.backend.status.affected_connections": "Затрагивает {{count}} сохраненных подключений",
"driver_manager.backend.status.agent_revision_update_detail": "Причина: текущая версия GoNavi требует обновленный {{name}} driver-agent (revision: {{expected}}). Влияние: driver-agent является отдельным бинарным файлом и не обновляется автоматически вместе с основным приложением. Без переустановки продолжит работать старая логика agent, поэтому исправления или оптимизации на стороне драйвера не вступят в силу, и проблемы старой версии могут сохраняться. Настоятельно рекомендуется переустановить соответствующий driver-agent.",
"driver_manager.backend.status.agent_revision_update_detail_with_actual": "Причина: текущая версия GoNavi требует обновленный {{name}} driver-agent (revision: {{expected}}). Влияние: driver-agent является отдельным бинарным файлом и не обновляется автоматически вместе с основным приложением. Без переустановки продолжит работать старая логика agent, поэтому исправления или оптимизации на стороне драйвера не вступят в силу, и проблемы старой версии могут сохраняться. Настоятельно рекомендуется переустановить соответствующий driver-agent (установленная метка: {{actual}}, требуется: {{expected}}).",
"driver_manager.backend.status.mongodb_compatibility_update_detail": "Причина: рекомендуемая совместимая версия драйвера MongoDB — {{recommended}}, установленная версия — {{installed}}. Влияние: MongoDB 2.x driver-agent использует официальный драйвер v2 и требует MongoDB server 4.2+; при подключении к MongoDB 4.0 возможна несовместимость wire version 7. Настоятельно рекомендуется переустановить соответствующий driver-agent.",
"driver_manager.backend.status.unrecognized_driver_type": "Неизвестный тип источника данных",
"driver_manager.backend.status.slim_build_required": "{{name}} не входит в текущий slim build. Установите Full-версию, чтобы использовать этот драйвер.",
"driver_manager.backend.status.agent_path_failed": "Не удалось определить путь агента драйвера {{name}}. Переустановите и включите его в Driver Manager.",
"driver_manager.backend.status.agent_missing": "Агент драйвера {{name}} отсутствует. Переустановите и включите его в Driver Manager.",
"driver_manager.backend.status.optional_disabled": "Go-драйвер {{name}} не включен. Установите и включите его в Driver Manager.",
"driver_manager.backend.status.agent_unavailable_reinstall": "Агент драйвера {{name}} недоступен: {{detail}}. Переустановите и включите его в Driver Manager.",
"driver_manager.backend.status.agent_arch_incompatible_detail": "Архитектура агента драйвера {{name}} несовместима: файл={{file}}, текущий процесс={{process}}. Переустановите и включите его в Driver Manager.",
"driver_manager.backend.network.probe.github_driver_release": "Релизы драйверов GitHub",
"driver_manager.backend.network.probe.github_release_asset_domain": "Домен ресурсов GitHub Release",
"driver_manager.backend.network.probe.go_module_proxy": "Прокси модулей Go",
"driver_manager.backend.network.error.probe_url_empty": "URL проверки пуст",
"driver_manager.backend.network.error.probe_host_missing": "В URL проверки отсутствует хост",
"driver_manager.backend.network.error.timeout": "Время ожидания сетевого соединения истекло",
"driver_manager.backend.network.summary.download_chain_unreachable": "GitHub API доступен, но цепочка загрузки драйверов недоступна. Сначала включите глобальный прокси GoNavi, разрешите github.com, api.github.com, release-assets.githubusercontent.com, objects.githubusercontent.com и raw.githubusercontent.com в правилах прокси, а если ошибка останется, рассмотрите режим TUN.",
"driver_manager.backend.progress.plan.source_only": "Подготовка установки агента драйвера {{name}} (версия {{version}}); эта версия разрешает только локальную сборку из исходников",
"driver_manager.backend.progress.plan.source_first": "Подготовка установки агента драйвера {{name}} (версия {{version}}); сначала локальная сборка из исходников, затем резервная загрузка",
"driver_manager.backend.progress.plan.direct_then_bundle": "Подготовка установки агента драйвера {{name}} (версия {{version}}); сначала {{direct}} прямых ссылок на готовую сборку, затем {{bundle}} источников комплектов драйверов",
"driver_manager.backend.progress.plan.explicit_direct": "Подготовка установки агента драйвера {{name}} (версия {{version}}); только явные ресурсы версии, пробуем {{direct}} прямых ссылок на готовую сборку",
"driver_manager.backend.progress.plan.direct_only": "Подготовка установки агента драйвера {{name}} (версия {{version}}); пробуем {{direct}} прямых ссылок на готовую сборку",
"driver_manager.backend.progress.plan.bundle_only": "Подготовка установки агента драйвера {{name}} (версия {{version}}); прямые ссылки на готовую сборку не указаны, пробуем {{bundle}} источников комплектов драйверов",
"driver_manager.backend.progress.plan.source_fallback": "Подготовка установки агента драйвера {{name}} (версия {{version}}); если ресурсы выпуска не совпадут, будет локальная сборка из исходников",
"driver_manager.backend.progress.fallback.direct_to_bundle": "Прямые ссылки на готовую сборку не подошли; переключаемся на комплект драйверов ({{name}}, осталось источников: {{bundle}})",
"driver_manager.backend.progress.fallback.explicit_skip_bundle": "Прямые ссылки на готовую сборку не подошли; разрешены только явные ресурсы, комплект драйверов пропускается ({{name}})",
"driver_manager.backend.progress.fallback.bundle_available": "Прямая ссылка недоступна; переключаемся на комплект драйверов ({{name}}, осталось источников: {{bundle}})",
"driver_manager.backend.progress.fallback.source_build": "Ресурсы выпуска не подошли; готовится резервная локальная сборка из исходников ({{name}})",
"data_sync.action.analyze_diff": "Анализировать различия",
"data_sync.action.cancel": "Отмена",
"data_sync.action.close": "Закрыть",
"data_sync.action.continue_sync": "Продолжить синхронизацию",
"data_sync.action.next": "Далее",
"data_sync.action.previous": "Назад",
"data_sync.action.start_sync": "Начать синхронизацию",
"data_sync.action.view": "Просмотреть",
"data_sync.compare_entry.action.return_to_compare": "Вернуться к сравнению",
"data_sync.compare_entry.alert.data": "Это режим сравнения данных: он только анализирует различия строк по первичному ключу и не выполняет запись.",
"data_sync.compare_entry.alert.schema": "Это режим сравнения структуры: он только анализирует различия схемы и формирует SQL для проверки, не применяя изменения.",
"data_sync.compare_entry.option.auto_add_columns": "Сформировать совместимый SQL изменений для отсутствующих столбцов целевой таблицы (только предпросмотр, без выполнения)",
"data_sync.compare_entry.option.source_dataset.query": "Сравнить по результату SQL",
"data_sync.compare_entry.option.source_dataset.table": "Сравнить по таблице",
"data_sync.compare_entry.preview.selection_hint": "Выбор строк влияет только на область предпросмотра SQL и не выполняет запись данных.",
"data_sync.compare_entry.preview.sql.data_help": "Предпросмотр SQL формируется по выбранным вставкам, обновлениям, удалениям и диапазонам строк только для проверки различий.",
"data_sync.compare_entry.preview.sql.schema_help": "Предпросмотр SQL показывает предлагаемые операторы различий структуры только для проверки.",
"data_sync.compare_entry.result.completed": "Сравнение завершено",
"data_sync.compare_entry.result.failed": "Сравнение не удалось",
"data_sync.compare_entry.result.running": "Идет сравнение",
"data_sync.compare_entry.result.running_description": "Текущий этап: {{stage}}{{table}}",
"data_sync.compare_entry.result.stage_fallback": "Выполняется",
"data_sync.compare_entry.result.success_summary": "Успешно сравнено таблиц: {{tables}}.",
"data_sync.compare_entry.result.table_suffix": ", таблица: {{table}}",
"data_sync.compare_entry.title.analysis_log": "Журнал анализа",
"data_sync.compare_entry.workflow_help": "Этот вход только анализирует различия и показывает предпросмотр. Он не синхронизирует, не создает таблицы, не добавляет столбцы и не удаляет данные.",
"data_sync.entry_mode.compare.action.start": "Начать сравнение",
"data_sync.entry_mode.compare.option_title": "Параметры сравнения",
"data_sync.entry_mode.compare.result_title": "Результат сравнения",
"data_sync.entry_mode.data_compare.badge": "Сравнение данных",
"data_sync.entry_mode.data_compare.description": "Сравнивает данные исходной и целевой таблиц по первичному ключу и показывает вставки, обновления и удаления.",
"data_sync.entry_mode.data_compare.hero_description": "Подходит для проверки согласованности данных. Выполняет только анализ различий и построчный предпросмотр без записи.",
"data_sync.entry_mode.data_compare.table_select_label": "Выберите таблицы для сравнения данных:",
"data_sync.entry_mode.data_compare.title": "Сравнение данных",
"data_sync.entry_mode.schema_compare.badge": "Сравнение структуры",
"data_sync.entry_mode.schema_compare.description": "Формирует различия структуры, риски совместимости и SQL для проверки между исходной и целевой таблицами.",
"data_sync.entry_mode.schema_compare.hero_description": "Подходит для проверки различий структуры перед выпуском. Выполняет только анализ и предпросмотр без применения изменений структуры.",
"data_sync.entry_mode.schema_compare.table_select_label": "Выберите таблицы для сравнения структуры:",
"data_sync.entry_mode.schema_compare.title": "Сравнение структуры таблиц",
"data_sync.entry_mode.sync.hero_description": "Подходит, когда целевые таблицы уже существуют. Сначала анализируйте различия, затем выполняйте выбранные вставки, обновления или удаления.",
"data_sync.alert.auto_create_scope": "Автоматическое создание таблиц сейчас поддерживает только MySQL в Kingbase. Переносятся столбцы, первичные ключи, обычные индексы, уникальные индексы и составные индексы; полнотекстовые, пространственные, префиксные и функциональные индексы явно пропускаются.",
"data_sync.alert.auto_create_planner_scope": "Автоматическое создание таблиц сейчас поддерживает только MySQL в Kingbase. Переносятся столбцы, первичные ключи, обычные индексы, уникальные индексы и составные индексы; полнотекстовые, пространственные, префиксные и функциональные индексы явно пропускаются.",
"data_sync.alert.existing_target_only": "Синхронизация данных по умолчанию выполняется с существующими целевыми таблицами. Переключитесь на межбазовую миграцию, если нужны создание таблиц и импорт.",
"data_sync.alert.full_overwrite": "Полная перезапись очищает данные целевых таблиц. Используйте ее осторожно.",
"data_sync.alert.migration_mode": "Активна межбазовая миграция. Используйте ее для переноса таблиц в другой источник данных с автоматическим созданием и импортом.",
"data_sync.alert.query_mode": "Синхронизация результата SQL сейчас поддерживает пользовательский SQL источника в одну существующую целевую таблицу. Результат запроса должен содержать столбец первичного ключа целевой таблицы.",
"data_sync.alert.sync_mode": "Активна синхронизация данных. Используйте ее для инкрементальной синхронизации или импорта с перезаписью, когда целевые таблицы уже существуют.",
"data_sync.badge.migration_mode": "Режим миграции",
"data_sync.badge.source_pending": "Источник не выбран",
"data_sync.badge.source_selected": "Источник выбран",
"data_sync.badge.sync_mode": "Режим синхронизации",
"data_sync.badge.table_count": "{{count}} табл.",
"data_sync.backend.error.restore_source_secret_failed": "Не удалось восстановить секрет подключения к исходной базе данных: {{detail}}",
"data_sync.backend.error.restore_target_secret_failed": "Не удалось восстановить секрет подключения к целевой базе данных: {{detail}}",
"data_sync.backend.error.connect_source_failed": "Не удалось подключиться к исходной базе данных: {{detail}}",
"data_sync.backend.error.connect_target_failed": "Не удалось подключиться к целевой базе данных: {{detail}}",
"data_sync.backend.error.init_source_driver_failed": "Не удалось инициализировать драйвер исходной базы данных: {{detail}}",
"data_sync.backend.error.init_target_driver_failed": "Не удалось инициализировать драйвер целевой базы данных: {{detail}}",
"data_sync.backend.error.preview_composite_pk_unsupported": "Составной первичный ключ ({{columns}}) не поддерживается для предпросмотра данных",
"data_sync.backend.error.preview_pk_required": "Нет первичного ключа, предпросмотр данных не поддерживается",
"data_sync.backend.error.target_pk_required_for_query_diff": "В целевой таблице нет первичного ключа, поэтому анализ различий SQL-набора результатов не поддерживается",
"data_sync.backend.result.analyzed_tables": "Анализ различий завершен для {{count}} таблиц",
"data_sync.backend.result.analyzed_target_tables": "Анализ различий завершен для {{count}} целевых таблиц",
"data_sync.backend.summary.diff_completed": "Анализ различий завершен",
"data_sync.backend.summary.source_query_diff_completed": "Анализ различий SQL-набора результатов завершен",
"data_sync.backend.validation.query_mode_data_only": "Синхронизация SQL-набора результатов сейчас поддерживает только синхронизацию данных",
"data_sync.backend.validation.single_target_table_required": "Для синхронизации SQL-набора результатов требуется ровно одна целевая таблица",
"data_sync.backend.validation.source_query_required": "SQL исходного запроса обязателен",
"data_sync.backend.validation.target_table_required": "Целевая таблица обязательна",
"data_sync.backend.warning.index_columns_missing": "У индекса {{name}} нет определения столбцов, он пропущен",
"data_sync.backend.warning.index_prefix_length_unsupported": "Индекс {{name}} использует длину префикса и пока не может быть автоматически мигрирован",
"data_sync.backend.warning.index_type_unsupported": "Индекс {{name}}, тип={{type}}, пока не может быть автоматически мигрирован",
"data_sync.confirm.full_overwrite.content": "Полная перезапись сначала очищает целевую таблицу, а затем вставляет строки. Подтвердите, что целевая база данных сохранена в резервной копии.",
"data_sync.confirm.full_overwrite.ok": "Продолжить",
"data_sync.confirm.full_overwrite.title": "Подтвердите полную перезапись",
"data_sync.modal.full_overwrite_title": "Подтвердите полную перезапись",
"data_sync.modal.full_overwrite_content": "Полная перезапись сначала очищает целевую таблицу, а затем вставляет строки. Подтвердите, что целевая база данных сохранена в резервной копии.",
"data_sync.modal.full_overwrite_ok": "Продолжить",
"data_sync.diff.column.delete": "Удаление",
"data_sync.diff.column.insert": "Вставка",
"data_sync.diff.column.plan": "План",
"data_sync.diff.column.preview": "Предпросмотр",
"data_sync.diff.column.risk": "Риск",
"data_sync.diff.column.same": "Совпадает",
"data_sync.diff.column.table": "Таблица",
"data_sync.diff.column.target_table": "Целевая таблица",
"data_sync.diff.column.update": "Обновление",
"data_sync.diff.more_warnings": "Еще {{count}} не показано",
"data_sync.diff.target_exists": "Есть",
"data_sync.diff.target_missing": "Нет",
"data_sync.diff.title": "Результат сравнения",
"data_sync.diff.warning_title": "Предварительная проверка нашла риски или понижение возможностей. Проверьте их перед выполнением.",
"data_sync.message.precheck_warnings": "Предварительная проверка нашла риски или понижение возможностей. Проверьте их перед выполнением.",
"data_sync.message.more_items_collapsed": "Еще {{count}} не показано",
"data_sync.table.table_name": "Таблица",
"data_sync.table.target_table": "Целевая таблица",
"data_sync.table.target_exists": "Есть",
"data_sync.table.target_missing": "Нет",
"data_sync.table.plan": "План",
"data_sync.table.insert": "Вставка",
"data_sync.table.update": "Обновление",
"data_sync.table.delete": "Удаление",
"data_sync.table.same": "Совпадает",
"data_sync.table.risk": "Риск",
"data_sync.table.preview": "Предпросмотр",
"data_sync.title.compare_result": "Результат сравнения",
"data_sync.field.connection": "Подключение",
"data_sync.field.database": "База данных",
"data_sync.field.migration_content": "Содержимое миграции",
"data_sync.field.migration_mode": "Режим миграции",
"data_sync.field.mongo_collection_name": "Имя коллекции Mongo (необязательно)",
"data_sync.field.source_dataset_mode": "Способ данных источника",
"data_sync.field.source_query_sql": "SQL-запрос источника",
"data_sync.field.sync_content": "Содержимое синхронизации",
"data_sync.field.sync_mode": "Режим синхронизации",
"data_sync.field.target_table": "Целевая таблица",
"data_sync.field.target_table_requirement": "Требование к целевой таблице",
"data_sync.field.target_table_strategy": "Стратегия целевой таблицы",
"data_sync.field.workflow_type": "Тип операции",
"data_sync.help.mongo_collection_mongo_to_redis": "Для MongoDB в Redis обычно достаточно выбрать исходную коллекцию. Оставьте поле пустым, если явное резервное имя коллекции не требуется.",
"data_sync.help.mongo_collection_redis_to_mongo": "Оставьте пустым, чтобы использовать имя коллекции по умолчанию. Если поле заполнено, этот запуск запишет пространство ключей Redis в указанную коллекцию Mongo.",
"data_sync.help.workflow_type": "Выберите, синхронизирует ли этот запуск существующие целевые таблицы или выполняет межбазовую миграцию. Страница подстроит более безопасные значения по умолчанию под тип операции.",
"data_sync.help.select_tables": "Выберите таблицы для синхронизации:",
"data_sync.help.source_query_mode": "Введите SQL-запрос источника и выберите одну целевую таблицу. Анализ различий напрямую сравнит этот результат с целевой таблицей.",
"data_sync.hero.migration_description": "Перенос исходных таблиц в другую базу данных с созданием таблиц по стратегии, импортом данных и добавлением совместимых индексов.",
"data_sync.hero.migration_title": "Миграция между источниками данных",
"data_sync.hero.sync_description": "Используйте существующие целевые таблицы, сначала сравните различия, затем выполните выбранные вставки, обновления или удаления.",
"data_sync.hero.sync_title": "Синхронизация данных",
"data_sync.log.level.error": "Ошибка",
"data_sync.log.level.info": "Информация",
"data_sync.log.level.warn": "Предупреждение",
"data_sync.log.title": "Журнал выполнения",
"data_sync.message.analysis_complete": "Анализ различий завершен",
"data_sync.message.analysis_failed": "Анализ различий не выполнен",
"data_sync.message.analysis_failed_detail": "Анализ различий не выполнен: {{detail}}",
"data_sync.message.analyze_before_sync": "Перед запуском синхронизации проанализируйте различия",
"data_sync.message.close_blocked_running": "Синхронизация выполняется. Окно пока нельзя закрыть.",
"data_sync.message.fetch_source_databases_failed": "Не удалось получить базы данных источника",
"data_sync.message.fetch_source_databases_failed_detail": "Не удалось получить базы данных источника: {{detail}}",
"data_sync.message.fetch_tables_failed": "Не удалось получить таблицы",
"data_sync.message.fetch_tables_failed_detail": "Не удалось получить таблицы: {{detail}}",
"data_sync.message.fetch_target_databases_failed": "Не удалось получить целевые базы данных",
"data_sync.message.fetch_target_databases_failed_detail": "Не удалось получить целевые базы данных: {{detail}}",
"data_sync.message.preview_load_failed": "Не удалось загрузить предпросмотр различий",
"data_sync.message.preview_load_failed_detail": "Не удалось загрузить предпросмотр различий: {{detail}}",
"data_sync.message.select_connections_first": "Сначала выберите подключения",
"data_sync.message.select_databases_first": "Сначала выберите базы данных",
"data_sync.message.select_source_database": "Выберите базу данных источника",
"data_sync.message.select_target_database": "Выберите целевую базу данных",
"data_sync.message.sync_execution_failed": "Не удалось выполнить синхронизацию",
"data_sync.message.sync_execution_failed_detail": "Не удалось выполнить синхронизацию: {{detail}}",
"data_sync.option.auto_add_columns": "Автоматически добавить недостающие целевые столбцы (сейчас поддерживаются цели MySQL и MySQL в Kingbase; режим результата SQL не поддерживается)",
"data_sync.option.content.both": "Синхронизировать схему и данные",
"data_sync.option.content.data": "Только данные",
"data_sync.option.content.schema": "Только схема",
"data_sync.option.create_indexes": "Автоматически переносить совместимые обычные и уникальные индексы (только при автоматическом создании таблиц)",
"data_sync.option.source_dataset.query": "Синхронизация по результату SQL",
"data_sync.option.source_dataset.table": "Синхронизация по таблицам",
"data_sync.option.show_same_tables": "Показывать совпадающие таблицы",
"data_sync.option.sync_mode.full_overwrite": "Полная перезапись (очистить целевую таблицу перед вставкой)",
"data_sync.option.sync_mode.insert_only": "Только вставка (без сравнения с целью; таблицы без первичных ключей пропускаются)",
"data_sync.option.sync_mode.insert_update": "Инкрементальная синхронизация (сравнить различия, затем выбрать вставки, обновления и удаления)",
"data_sync.option.target_strategy.auto_create_if_missing": "Автоматически создать целевую таблицу, если она отсутствует",
"data_sync.option.target_strategy.existing_only": "Использовать только существующие целевые таблицы",
"data_sync.option.target_strategy.smart": "Умный режим (если есть, импортировать напрямую; если нет, создать автоматически)",
"data_sync.option.workflow.migration": "Межбазовая миграция (автоматическое создание и импорт)",
"data_sync.option.workflow.sync": "Синхронизация данных (сравнение и синхронизация с существующими целевыми таблицами)",
"data_sync.placeholder.mongo_collection_name": "Введите имя коллекции Mongo",
"data_sync.placeholder.source_query_sql": "Пример: SELECT id, name, email FROM users WHERE status = 'active'",
"data_sync.placeholder.target_table": "Выберите одну целевую таблицу",
"data_sync.preview.action.copy_sql": "Копировать SQL",
"data_sync.preview.column.changed_columns": "Измененные столбцы",
"data_sync.preview.column.data": "Данные",
"data_sync.preview.column.detail": "Подробности",
"data_sync.preview.column.primary_key": "Первичный ключ",
"data_sync.preview.data_summary": "Вставка {{inserts}}, обновление {{updates}}, удаление {{deletes}} (предпросмотр показывает до 200 строк на тип)",
"data_sync.preview.delete_warning": "Удаление по умолчанию не выбрано. Включайте его только после проверки влияния на бизнес.",
"data_sync.preview.loading": "Загрузка предпросмотра различий...",
"data_sync.preview.message.copy_failed": "Не удалось скопировать. Скопируйте вручную.",
"data_sync.preview.message.sql_copied": "SQL скопирован",
"data_sync.preview.schema_plan_help": "Ниже показаны операторы, запланированные для этого запуска синхронизации схемы.",
"data_sync.preview.schema_statement_count": "Обнаружено операторов изменения схемы: {{count}}",
"data_sync.preview.schema_warning_title": "Предпросмотр схемы содержит риски или понижение возможностей",
"data_sync.preview.selection_hint.delete": "Если строки не выбраны, будут синхронизированы все различия удаления. Снимите Удаление в результате сравнения, чтобы пропустить удаления.",
"data_sync.preview.selection_hint.insert": "Если строки не выбраны, будут синхронизированы все различия вставки. Снимите Вставку в результате сравнения, чтобы пропустить вставки.",
"data_sync.preview.selection_hint.update": "Если строки не выбраны, будут синхронизированы все различия обновления. Снимите Обновление в результате сравнения, чтобы пропустить обновления.",
"data_sync.preview.side.source": "Источник",
"data_sync.preview.side.target": "Цель",
"data_sync.preview.sql.data_help": "Предпросмотр SQL создается из выбранных вставок, обновлений, удалений и диапазона строк для проверки.",
"data_sync.preview.sql.no_data_sql": "-- Для текущего выбора нет SQL для предпросмотра",
"data_sync.preview.sql.no_schema_changes": "-- Для текущей таблицы нет исполняемых изменений схемы",
"data_sync.preview.sql.schema_help": "Предпросмотр SQL показывает операторы изменения схемы, которые будут выполнены, для проверки.",
"data_sync.preview.sql.schema_statement_count": "Операторов изменения схемы: {{count}}",
"data_sync.preview.sql.statement_count": "Операторов: {{count}} (предпросмотр данных показывает до 200 строк на тип)",
"data_sync.preview.tab.delete": "Удаление({{count}})",
"data_sync.preview.tab.insert": "Вставка({{count}})",
"data_sync.preview.tab.schema": "Схема({{count}})",
"data_sync.preview.tab.sql": "SQL({{count}})",
"data_sync.preview.tab.update": "Обновление({{count}})",
"data_sync.preview.title": "Предпросмотр различий: {{table}}",
"data_sync.preview.update_detail_title": "Подробности обновления: {{table}} / {{pk}}",
"data_sync.plan.use_existing_target": "Импорт в существующую целевую таблицу",
"data_sync.plan.target_missing_manual_create": "Целевая таблица отсутствует; сначала создайте ее вручную",
"data_sync.plan.target_missing_auto_create": "Целевая таблица отсутствует; она будет автоматически создана перед импортом",
"data_sync.plan.target_missing_cannot_sync": "Целевая таблица отсутствует; синхронизацию выполнить нельзя",
"data_sync.plan.target_missing_auto_create_all": "Целевая таблица отсутствует; при выполнении она будет автоматически создана, затем будут импортированы все исходные данные",
"data_sync.plan.schema_changes_detected": "Обнаружено структурных изменений: {{count}}",
"data_sync.plan.add_missing_columns_before_import": "Дополнить отсутствующие поля перед импортом: {{count}}",
"data_sync.plan.missing_columns_no_executable_sql": "В целевой таблице отсутствуют поля: {{count}}, но исполняемый SQL для дополнения не создан",
"data_sync.plan.missing_columns_auto_add_unsupported": "В целевой таблице отсутствуют поля: {{count}}, и автоматическое дополнение не поддерживается для этой пары баз данных",
"data_sync.plan.missing_columns_auto_add_disabled": "В целевой таблице отсутствуют поля: {{count}}, и автоматическое дополнение не включено",
"data_sync.plan.schema_only_no_data_diff": "Синхронизируется только структура; анализ различий данных не выполнялся",
"data_sync.plan.schema_only": "Синхронизация только структуры",
"data_sync.plan.schema_preview": "Предпросмотр структуры",
"data_sync.plan.schema_aligned": "Структура таблицы уже совпадает",
"data_sync.plan.auto_create_unsupported": "Автоматическое создание таблиц не поддерживается для этой пары баз данных",
"data_sync.plan.tdengine_time_column_missing": "В исходной таблице не найден столбец времени, который можно сопоставить с первым столбцом TDengine; автоматическое создание таблицы невозможно",
"data_sync.plan.use_existing_target_collection": "Импорт в существующую целевую коллекцию",
"data_sync.plan.target_collection_missing_manual_create": "Целевая коллекция отсутствует; сначала создайте ее вручную",
"data_sync.plan.target_collection_missing_auto_create": "Целевая коллекция отсутствует; она будет автоматически создана перед импортом",
"data_sync.plan.redis_key_to_mongodb_document": "Создать документы MongoDB из Redis Keys и импортировать их",
"data_sync.plan.migrate_to_collection": "Миграция в коллекцию {{collection}}",
"data_sync.plan.migrate_to_target": "Миграция в {{target}}",
"data_sync.plan.source_query_preview": "Предпросмотр синхронизации SQL-результата",
"data_sync.plan.migration_kernel_planning": "Эта пара баз данных перешла в этап планирования миграции и ожидает вывода структуры и генерации целевого диалекта",
"data_sync.plan.backend_summary": "Сводка плана",
"data_sync.progress.stage.analysis_started": "Начат анализ различий",
"data_sync.progress.stage.analysis_completed": "Анализ различий завершен",
"data_sync.progress.stage.sync_started": "Синхронизация начата",
"data_sync.progress.stage.connecting_source": "Подключение к исходной базе данных",
"data_sync.progress.stage.connecting_target": "Подключение к целевой базе данных",
"data_sync.progress.stage.analyzing_table": "Анализ таблицы ({{current}}/{{total}})",
"data_sync.progress.stage.syncing_table": "Синхронизация таблицы ({{current}}/{{total}})",
"data_sync.progress.stage.table_completed": "Обработка таблицы завершена",
"data_sync.progress.stage.creating_target_table": "Создание целевой таблицы",
"data_sync.progress.stage.syncing_schema": "Синхронизация структуры таблицы",
"data_sync.progress.stage.creating_indexes": "Создание индексов",
"data_sync.progress.stage.reading_source": "Чтение данных исходной таблицы",
"data_sync.progress.stage.reading_target": "Чтение данных целевой таблицы",
"data_sync.progress.stage.comparing_diff": "Сравнение различий",
"data_sync.progress.stage.clearing_target": "Очистка целевой таблицы",
"data_sync.progress.stage.checking_columns": "Проверка согласованности полей",
"data_sync.progress.stage.applying_changes": "Применение изменений",
"data_sync.progress.stage.completed": "Синхронизация завершена",
"data_sync.progress.stage.failed": "Синхронизация не удалась",
"data_sync.progress.stage.redis_keyspace_started": "Начата миграция пространства ключей Redis",
"data_sync.progress.stage.creating_target_collection": "Создание целевой коллекции",
"data_sync.progress.stage.migrating_key": "Миграция Key ({{current}}/{{total}})",
"data_sync.progress.stage.mongodb_keyspace_started": "Начата миграция пространства ключей MongoDB",
"data_sync.progress.stage.migrating_collection": "Миграция коллекции ({{current}}/{{total}})",
"data_sync.progress.stage.collection_completed": "Обработка коллекции завершена",
"data_sync.progress.stage.backend_update": "Обработка обновления прогресса",
"data_sync.progress.stage.analyzing_diff": "Анализ различий",
"data_sync.progress.stage.executing": "Выполнение",
"data_sync.progress.stage.preparing": "Подготовка",
"data_sync.query_mode.help": "Введите SQL-запрос источника и выберите одну целевую таблицу. Анализ различий напрямую сравнит этот результат с целевой таблицей.",
"data_sync.result.completed": "Синхронизация завершена",
"data_sync.result.failed": "Синхронизация не выполнена",
"data_sync.result.failed_description": "Синхронизация не завершилась.",
"data_sync.result.failed_detail": "Синхронизация не выполнена: {{detail}}",
"data_sync.result.running": "Синхронизация выполняется",
"data_sync.result.running_description": "Текущий этап: {{stage}}{{table}}",
"data_sync.result.success_summary": "Успешно синхронизировано таблиц: {{tables}}. Вставлено: {{inserted}}, обновлено: {{updated}}",
"data_sync.result.table_suffix": ", таблица: {{table}}",
"data_sync.section.migration_options": "Параметры миграции",
"data_sync.section.source_database": "База данных источника",
"data_sync.section.sync_options": "Параметры синхронизации",
"data_sync.section.target_database": "Целевая база данных",
"data_sync.title.source_database": "База данных источника",
"data_sync.title.target_database": "Целевая база данных",
"data_sync.title.migration_options": "Параметры миграции",
"data_sync.title.sync_options": "Параметры синхронизации",
"data_sync.title.execution_log": "Журнал выполнения",
"data_sync.step.configure": "Настроить источник и цель",
"data_sync.step.result": "Результат выполнения",
"data_sync.step.select_tables": "Выбрать таблицы",
"data_sync.table_picker.help": "Выберите таблицы для синхронизации:",
"data_sync.table_picker.item_unit": "элемент",
"data_sync.table_picker.items_unit": "элементы",
"data_sync.table_picker.not_found": "Нет данных",
"data_sync.table_picker.search_placeholder": "Поиск таблиц...",
"data_sync.table_picker.selected_title": "Выбранные таблицы",
"data_sync.table_picker.show_same": "Показывать совпадающие таблицы",
"data_sync.table_picker.source_title": "Таблицы источника",
"data_sync.transfer.source_tables": "???????? ???????",
"data_sync.transfer.selected_tables": "Выбранные таблицы",
"data_sync.transfer.item_unit": "элемент",
"data_sync.transfer.items_unit": "элементы",
"data_sync.transfer.search_placeholder": "Поиск таблиц...",
"data_sync.transfer.empty": "Нет данных",
"data_sync.title.migration_description": "Создание таблиц, импорт данных и предварительная проверка рисков от источника до цели.",
"data_sync.title.migration_workbench": "Рабочая область межбазовой миграции",
"data_sync.title.sync_description": "Сравнение различий, запуск синхронизации и подтверждение результатов с существующими целевыми таблицами.",
"data_sync.title.sync_workbench": "Рабочая область синхронизации данных",
"data_sync.title.migration": "Миграция между источниками данных",
"data_sync.title.sync": "Синхронизация данных",
"data_sync.validation.query_mode_data_only": "Синхронизация результата SQL поддерживает только синхронизацию данных",
"data_sync.validation.single_target_table_required": "Для синхронизации результата SQL нужна ровно одна целевая таблица",
"data_sync.validation.source_query_required": "Введите SQL-запрос источника",
"data_sync.validation.table_required": "Выберите хотя бы одну таблицу",
"data_sync.plan.use_existing_target_table": "Импорт в существующую целевую таблицу",
"data_sync.plan.missing_columns_auto_add": "Дополнить отсутствующие поля перед импортом: {{count}}",
"data_sync.plan.tdengine_target_missing_timestamp_auto_create_unavailable": "В исходной таблице не найден столбец времени, который можно сопоставить с первым столбцом TDengine; автоматическое создание таблицы невозможно",
"data_sync.plan.redis_mongo_keyspace_import": "Создать документы MongoDB из Redis Keys и импортировать их",
"data_sync.plan.redis_mongo_target_collection_missing_manual": "Целевая коллекция отсутствует; сначала создайте ее вручную",
"data_sync.plan.redis_mongo_target_collection_auto_create": "Целевая коллекция отсутствует; она будет автоматически создана перед импортом",
"data_sync.backend.summary.redis_mongo_planned_action": "Миграция в коллекцию {{collection}}",
"data_sync.backend.summary.mongo_redis_planned_action": "Миграция в {{target}}",
"data_sync.plan.mongo_relational_kernel_planned": "Эта пара баз данных перешла в этап планирования миграции и ожидает вывода структуры и генерации целевого диалекта",
"data_sync.progress.stage.redis_mongo_creating_collection": "Создание целевой коллекции",
"data_sync.progress.stage.redis_mongo_migrating_key": "Миграция Key ({{current}}/{{total}})",
"data_sync.progress.stage.mongo_redis_migrating_collection": "Миграция коллекции ({{current}}/{{total}})",
"data_sync.progress.stage.mongo_redis_collection_completed": "Обработка коллекции завершена",
"data_sync.backend.error.apply_changes_unsupported": "Целевой драйвер не поддерживает применение изменений данных",
"data_sync.backend.error.apply_source_query_changes_failed": "Не удалось применить изменения набора результатов SQL: {{detail}}",
"data_sync.backend.error.clear_target_failed": "Не удалось очистить целевую таблицу: {{detail}}",
"data_sync.backend.error.connect_source_mongodb_failed": "Не удалось подключиться к исходной MongoDB: {{detail}}",
"data_sync.backend.error.connect_source_redis_failed": "Не удалось подключиться к исходному Redis: {{detail}}",
"data_sync.backend.error.connect_target_mongodb_failed": "Не удалось подключиться к целевой MongoDB: {{detail}}",
"data_sync.backend.error.connect_target_redis_failed": "Не удалось подключиться к целевому Redis: {{detail}}",
"data_sync.backend.error.diff_composite_pk_unsupported": "Составной первичный ключ ({{columns}}) не поддерживается для синхронизации с сравнением различий",
"data_sync.backend.error.diff_pk_required": "Первичный ключ отсутствует. Синхронизация с сравнением различий не поддерживается; для прямого импорта используйте режим insert-only или full-overwrite.",
"data_sync.backend.error.execute_source_query_failed": "Не удалось выполнить исходный запрос: {{detail}}",
"data_sync.backend.error.init_source_mongodb_driver_failed": "Не удалось инициализировать драйвер исходной MongoDB: {{detail}}",
"data_sync.backend.error.init_target_mongodb_driver_failed": "Не удалось инициализировать драйвер целевой MongoDB: {{detail}}",
"data_sync.backend.error.inspect_mongodb_collection_failed": "Не удалось проверить целевую MongoDB collection: {{detail}}",
"data_sync.backend.error.list_mongodb_collections_failed": "Не удалось получить список MongoDB collection: {{detail}}",
"data_sync.backend.error.load_target_columns_failed": "Не удалось загрузить столбцы целевой таблицы: {{detail}}",
"data_sync.backend.error.mongo_document_write_unsupported": "Целевой драйвер не поддерживает запись MongoDB document",
"data_sync.backend.error.mongo_redis_analyze_collection_failed": "Не удалось проанализировать MongoDB collection {{collection}}: {{detail}}",
"data_sync.backend.error.mongo_redis_document_key_missing": "В MongoDB document отсутствует поле key",
"data_sync.backend.error.mongo_redis_document_type_missing": "В MongoDB document для Redis Key {{key}} отсутствует поле {{field}}",
"data_sync.backend.error.mongo_redis_empty_target_value": "Целевое значение Redis Key {{key}} пустое",
"data_sync.backend.error.mongo_redis_unsupported_type": "Redis Key {{key}} не поддерживает тип {{type}}",
"data_sync.backend.error.mongo_redis_value_invalid": "У Redis Key {{key}} недопустимый {{type}} payload; фактический тип={{actual}}",
"data_sync.backend.error.mongo_redis_write_key_failed": "Не удалось записать Redis Key {{key}}: {{detail}}",
"data_sync.backend.error.read_redis_key_failed": "Не удалось прочитать Redis Key {{key}}: {{detail}}",
"data_sync.backend.error.read_source_table_failed": "Не удалось прочитать исходную таблицу: {{detail}}",
"data_sync.backend.error.read_target_redis_key_failed": "Не удалось прочитать целевой Redis Key {{key}}: {{detail}}",
"data_sync.backend.error.read_target_table_failed": "Не удалось прочитать целевую таблицу: {{detail}}",
"data_sync.backend.error.redis_mongo_analyze_changes_failed": "Не удалось проанализировать изменения миграции Redis: {{detail}}",
"data_sync.backend.error.redis_mongo_apply_changes_failed": "Не удалось применить изменения миграции Redis: {{detail}}",
"data_sync.backend.error.redis_mongo_build_changes_failed": "Не удалось построить изменения миграции Redis: {{detail}}",
"data_sync.backend.error.redis_mongo_create_collection_failed": "Не удалось создать целевую MongoDB collection: {{detail}}",
"data_sync.backend.error.scan_redis_keys_failed": "Не удалось просканировать Redis Key: {{detail}}",
"data_sync.backend.error.target_composite_pk_query_diff_unsupported": "Целевая таблица имеет составной первичный ключ ({{columns}}), поэтому анализ различий набора результатов SQL не поддерживается",
"data_sync.backend.error.target_table_columns_missing": "Целевая таблица {{table}} отсутствует или ее определения столбцов не удалось прочитать",
"data_sync.backend.result.mongo_redis_analyzed_collections": "Проанализировано {{count}} MongoDB collection для миграции в Redis",
"data_sync.backend.result.mongo_redis_completed": "Миграция MongoDB keyspace завершена; обработано collection: {{collections}}, Redis Key: {{keys}}",
"data_sync.backend.result.mongo_redis_no_collections": "Нет MongoDB collection, доступных для миграции",
"data_sync.backend.result.mongo_redis_no_documents": "Нет MongoDB Redis document, доступных для миграции",
"data_sync.backend.result.redis_mongo_analyzed_keys": "Проанализировано {{count}} Redis Key для миграции в MongoDB",
"data_sync.backend.result.redis_mongo_completed": "Миграция Redis keyspace завершена; обработано Redis Key: {{count}}",
"data_sync.backend.result.redis_mongo_no_keys": "Нет Redis Key, доступных для миграции",
"data_sync.backend.summary.mongo_redis_diff": "При выполнении будет вставлено {{inserts}} Redis Key и обновлено {{updates}} Redis Key",
"data_sync.backend.summary.mongo_redis_empty_collection": "В collection не найдены document, пригодные для миграции",
"data_sync.backend.summary.mongo_redis_same_keys": "Соответствующие Redis Key уже актуальны",
"data_sync.backend.summary.mongo_redis_warning_document_format": "Поддерживаются только document с полями key/type/ttl/value",
"data_sync.backend.summary.mongo_redis_warning_full_overwrite_downgrade": "MongoDB -> Redis понижает полную перезапись до инкрементальной синхронизации, чтобы не удалять другие Redis Key в DB",
"data_sync.backend.summary.mongo_redis_warning_keyspace": "Document в MongoDB collection будут записаны в Redis по семантике keyspace",
"data_sync.backend.summary.redis_mongo_insert_document": "При выполнении будет вставлен новый MongoDB document",
"data_sync.backend.summary.redis_mongo_same_document": "Соответствующий MongoDB document уже актуален",
"data_sync.backend.summary.redis_mongo_update_document": "При выполнении будет обновлен существующий MongoDB document",
"data_sync.backend.summary.redis_mongo_warning_document_write": "Redis Key будет записан как MongoDB document",
"data_sync.plan.data_import_without_diff": "Текущий режим импортирует данные исходной таблицы без сравнения различий.",
"data_sync.plan.mongo_relational_entry_warning": "Для миграции {{objectKind}} из {{sourceType}} в {{targetType}} сейчас доступно только уведомление о планировании вывода структуры",
"data_sync.plan.redis_mongo_keyspace_warning_no_schema": "Redis -> MongoDB мигрирует по семантике keyspace и не выполняет проверку структуры таблиц",
"data_sync.plan.redis_mongo_keyspace_warning_semantics": "Семантика Redis TTL и порядка collection сохраняется как поля document, но может быть не полностью эквивалентной",
"data_sync.plan.redis_mongo_target_collection_existing_only_warning": "Текущая стратегия требует существующую целевую MongoDB collection; при выполнении она не будет создана автоматически",
"data_sync.plan.redis_mongo_unsupported_objects": "Redis Consumer Group / PubSub / Lua scripts / transaction state пока не мигрируются",
"data_sync.plan.target_missing_preview_unavailable": "Целевая таблица отсутствует. Предпросмотр различий недоступен.",
"data_sync.progress.stage.redis_mongo_started": "Миграция Redis -> MongoDB keyspace начата",
"data_sync.progress.stage.mongo_redis_started": "Миграция MongoDB -> Redis keyspace начата",
"data_sync.schema_inference.mongo_relational_issue": "Вывод структуры для {{sourceType}} -> {{targetType}} все еще в разработке; сейчас доступно только уведомление о планировании миграции.",
"data_sync.schema_inference.mongo_relational_resolution": "В следующих итерациях определения столбцов и политики деградации типов будут создаваться по выборочным данным.",
"data_sync.backend.unsupported.clickhouse_objects_to_pg_like": "Семантика ClickHouse ORDER BY/PARTITION/TTL/Projection/materialized-view пока не мигрируется автоматически в цели PG-like",
"data_sync.backend.warning.auto_create_pair_unsupported": "Автоматическое создание таблиц сейчас поддерживает только MySQL -> Kingbase; текущая пара={{sourceType}} -> {{targetType}}",
"data_sync.backend.warning.clickhouse_complex_type_degraded_mysql": "Столбец {{column}} типа {{type}} деградирован до json",
"data_sync.backend.warning.clickhouse_complex_type_degraded_pg_like": "Столбец {{column}} типа {{type}} деградирован до jsonb",
"data_sync.backend.warning.clickhouse_enum_degraded_pg_like": "Столбец {{column}} enum типа {{type}} деградирован до varchar(255)",
"data_sync.backend.warning.clickhouse_order_by_tuple_used": "Первичный ключ источника не обнаружен, поэтому ClickHouse будет использовать ORDER BY tuple(); производительность запросов может снизиться",
"data_sync.backend.warning.clickhouse_relational_constraints_not_preserved": "ClickHouse не сохраняет семантику реляционных внешних ключей или уникальных ограничений; мигрируются только столбцы и данные",
"data_sync.backend.warning.clickhouse_source_metadata_limited": "Метаданные индексов и ограничений источника ClickHouse ограничены; обратная миграция фокусируется на столбцах и данных",
"data_sync.backend.warning.clickhouse_source_primary_key_missing_mysql": "Источник ClickHouse не вернул сведения о первичном ключе, поэтому целевая таблица MySQL не создаст первичный ключ автоматически",
"data_sync.backend.warning.clickhouse_source_primary_key_missing_pg_like": "Источник ClickHouse не вернул сведения о первичном ключе, поэтому целевая таблица PG-like не создаст первичный ключ автоматически",
"data_sync.backend.warning.clickhouse_target_insert_only_recommended": "Для целей ClickHouse рекомендуется insert-only или полная перезапись; семантика update/delete отличается от традиционных реляционных баз данных",
"data_sync.backend.warning.clickhouse_type_degraded_mysql_text": "Для столбца {{column}} типа {{type}} нет отдельного сопоставления MySQL; он деградирован до text",
"data_sync.backend.warning.clickhouse_type_degraded_pg_like_text": "Для столбца {{column}} типа {{type}} нет отдельного сопоставления PG-like; он деградирован до text",
"data_sync.backend.warning.clickhouse_uint64_mapped_numeric_pg_like": "Столбец {{column}} типа {{type}} сопоставлен с numeric(20,0), чтобы избежать переполнения unsigned",
"data_sync.backend.warning.column_type_degraded_clickhouse_string": "Столбец {{column}} типа {{type}} деградирован до String",
"data_sync.backend.warning.column_type_empty_clickhouse_string": "Тип столбца {{column}} пуст и деградирован до String",
"data_sync.backend.warning.column_user_defined_degraded_clickhouse_string": "Столбец {{column}} является пользовательским типом и деградирован до String",
"data_sync.backend.warning.mysql_auto_increment_not_preserved_clickhouse": "AUTO_INCREMENT столбца {{column}} не сохраняется в ClickHouse как семантика автоинкремента",
"data_sync.backend.warning.mysql_binary_degraded_clickhouse_string": "Бинарный тип столбца {{column}} деградирован до String",
"data_sync.backend.warning.mysql_time_degraded_clickhouse_string": "Столбец {{column}} типа {{type}} деградирован до String",
"data_sync.backend.warning.mysql_type_degraded_clickhouse_string": "Для столбца {{column}} типа {{type}} нет отдельного сопоставления ClickHouse; он деградирован до String",
"data_sync.backend.warning.pg_like_identity_not_preserved_clickhouse": "Семантика identity/auto-increment столбца {{column}} не сохраняется в ClickHouse",
"data_sync.backend.warning.target_existing_only_required": "Текущая стратегия требует существующую целевую таблицу, поэтому при выполнении она не будет создана автоматически.",
"data_sync.backend.warning.target_exists_data_only_no_indexes": "Целевая таблица уже существует. Будет выполнен только импорт данных; существующие индексы и ограничения не будут автоматически перестроены.",
"data_sync.backend.warning.target_missing_columns": "В целевой таблице отсутствует {{count}} столбцов: {{columns}}",
"data_sync.backend.warning.target_table_existing_only_required": "Текущая стратегия требует существующую целевую таблицу, поэтому при выполнении она не будет создана автоматически.",
"data_sync.unsupported.clickhouse_to_tdengine_schema_semantics": "Семантика источника ORDER BY/PARTITION/TTL/Projection/materialized-view пока не мигрируется автоматически в TDengine",
"data_sync.unsupported.mysql_to_tdengine_schema_semantics": "Индексы источника, внешние ключи, триггеры, уникальные ограничения и семантика auto-increment пока не мигрируются автоматически в TDengine",
"data_sync.unsupported.pglike_to_tdengine_schema_semantics": "Индексы источника, внешние ключи, триггеры, уникальные ограничения, identity и sequence пока не мигрируются автоматически в TDengine",
"data_sync.unsupported.tdengine_source_relational_semantics": "Индексы TDengine, внешние ключи, триггеры, supertable, TTL и другая семантика временных рядов пока не мигрируются автоматически",
"data_sync.unsupported.tdengine_target_missing_timestamp": "Первый столбец TDengine regular table должен быть TIMESTAMP; в текущей исходной таблице нет напрямую сопоставимого столбца времени",
"data_sync.unsupported.tdengine_to_tdengine_regular_table_semantics": "Семантика исходных supertable, TAGS, TTL, retention policy и индексов пока не мигрируется автоматически в TDengine regular table",
"data_sync.warning.target_exists_strategy_no_auto_create": "Текущая стратегия требует существующую целевую таблицу, поэтому при выполнении она не будет создана автоматически.",
"data_sync.warning.target_missing_columns": "В целевой таблице отсутствует {{count}} столбцов: {{columns}}",
"data_sync.warning.tdengine_source_existing_target_no_auto_add_columns": "Источники TDengine пока не добавляют столбцы автоматически в существующую целевую таблицу; сначала проверьте целевую структуру",
"data_sync.warning.tdengine_source_mysql_type_fallback": "Для столбца {{column}} типа {{type}} нет отдельного сопоставления MySQL; он деградирован до {{targetType}}",
"data_sync.warning.tdengine_source_pg_unsigned_overflow_safeguard": "Столбец {{column}} типа {{type}} сопоставлен с {{targetType}}, чтобы избежать переполнения unsigned",
"data_sync.warning.tdengine_source_pglike_type_fallback": "Для столбца {{column}} типа {{type}} нет отдельного сопоставления PG-like; он деградирован до {{targetType}}",
"data_sync.warning.tdengine_source_semantics_degraded": "TDengine -> реляционные цели сейчас мигрирует только столбцы и данные; supertable, связь TAG, retention policy и другая семантика временных рядов могут быть деградированы или потеряны",
"data_sync.warning.tdengine_source_tag_column_degraded": "Столбец {{column}} является TDengine TAG и будет деградирован до обычного столбца в реляционной цели",
"data_sync.warning.tdengine_source_tag_column_mapped": "Столбец {{column}} является TDengine TAG и сопоставлен как обычный столбец",
"data_sync.warning.tdengine_target_auto_create_basic_table_only": "auto-create для цели TDengine сейчас создает только базовую таблицу; индексы, внешние ключи, триггеры, supertable/TAGS/TTL не мигрируются автоматически",
"data_sync.warning.tdengine_target_auto_increment_not_migrated": "Семантика auto-increment столбца {{column}} не мигрируется в TDengine",
"data_sync.warning.tdengine_target_binary_type_fallback": "Столбец {{column}} типа {{type}} деградирован до {{targetType}} по строковой семантике",
"data_sync.warning.tdengine_target_column_promoted_to_timestamp": "Столбец {{column}} типа {{type}} повышен до первого столбца TDengine TIMESTAMP",
"data_sync.warning.tdengine_target_empty_type_fallback": "Тип столбца {{column}} пуст и деградирован до {{targetType}}",
"data_sync.warning.tdengine_target_enum_type_fallback": "Столбец {{column}} enum типа {{type}} деградирован до {{targetType}}",
"data_sync.warning.tdengine_target_existing_table_no_auto_add_columns": "Цели TDengine пока не добавляют столбцы автоматически в существующую целевую таблицу; сначала проверьте целевую структуру",
"data_sync.warning.tdengine_target_fixedstring_length_parse_failed": "Не удалось разобрать длину FixedString столбца {{column}}; он деградирован до {{targetType}}",
"data_sync.warning.tdengine_target_identity_not_migrated": "Семантика auto-increment/identity столбца {{column}} не мигрируется в TDengine",
"data_sync.warning.tdengine_target_insert_only": "Цели TDengine сейчас поддерживают только записи INSERT; различия update/delete будут отклонены при выполнении",
"data_sync.warning.tdengine_target_json_regular_table_fallback": "Столбец {{column}} типа {{type}} не сохраняет семантику TAG в TDengine regular table и деградирован до {{targetType}}",
"data_sync.warning.tdengine_target_json_tag_only_fallback": "Столбец {{column}} типа {{type}} деградирован до {{targetType}}, потому что TDengine JSON применяется только к TAG",
"data_sync.warning.tdengine_target_missing_time_column": "В исходной таблице нет сопоставимого столбца времени, поэтому автоматическое создание таблицы недоступно. Перед продолжением вручную подготовьте целевую таблицу TDengine и столбец времени.",
"data_sync.warning.tdengine_target_pk_constraint_not_migrated": "Семантика первичного ключа столбца {{column}} не мигрируется в TDengine как реляционное ограничение",
"data_sync.warning.tdengine_target_same_db_type_no_mapping_fallback": "Для столбца {{column}} типа {{type}} нет отдельного сопоставления TDengine для того же типа базы данных; он деградирован до {{targetType}}",
"data_sync.warning.tdengine_target_tag_column_degraded_to_regular": "Столбец {{column}} является TDengine TAG и после миграции в regular table будет деградирован до обычного столбца",
"data_sync.warning.tdengine_target_time_only_type_fallback": "Для столбца {{column}} типа {{type}} нет стабильного сопоставления TDengine time-only; он деградирован до {{targetType}}",
"data_sync.warning.tdengine_target_timestamp_column_reordered": "Базовые таблицы TDengine требуют столбец времени первым; столбец {{column}} перемещен на первую позицию",
"data_sync.warning.tdengine_target_type_fallback": "Столбец {{column}} типа {{type}} деградирован до {{targetType}}",
"data_sync.warning.tdengine_target_type_no_mapping_fallback": "Для столбца {{column}} типа {{type}} нет отдельного сопоставления TDengine; он деградирован до {{targetType}}",
"data_sync.warning.tdengine_target_user_defined_type_fallback": "Столбец {{column}} является пользовательским типом и деградирован до {{targetType}}",
"data_sync.backend.error.analyze_prepare_secrets_failed": "Не удалось подготовить секреты анализа синхронизации данных: {{detail}}",
"data_sync.backend.error.apply_changes_failed": "Не удалось применить изменения: {{detail}}",
"data_sync.backend.error.auto_add_column_failed": "Не удалось автоматически добавить столбец: столбец={{column}}, ошибка={{detail}}",
"data_sync.backend.error.build_migration_plan_failed": "Не удалось построить план миграции: таблица={{table}}, ошибка={{detail}}",
"data_sync.backend.error.create_indexes_failed": "Не удалось создать индексы: таблица={{table}}, ошибка={{detail}}",
"data_sync.backend.error.create_table_sql_empty": "Не удалось автоматически создать таблицу {{table}}: create-table SQL пуст",
"data_sync.backend.error.create_target_table_failed": "Не удалось создать целевую таблицу: таблица={{table}}, ошибка={{detail}}",
"data_sync.backend.error.exec_ddl_statement_failed": "Сбой на этапе {{stage}}: SQL={{sql}}, ошибка={{detail}}",
"data_sync.backend.error.mongo_read_source_samples_failed": "Не удалось прочитать образцы исходной MongoDB collection: {{detail}}",
"data_sync.backend.error.pre_create_table_sql_failed": "Не удалось предварительно выполнить create-table SQL: таблица={{table}}, ошибка={{detail}}",
"data_sync.backend.error.prepare_secrets_failed": "Не удалось подготовить секреты синхронизации данных: {{detail}}",
"data_sync.backend.error.preview_failed": "Не удалось выполнить предпросмотр синхронизации данных: {{detail}}",
"data_sync.backend.error.preview_prepare_secrets_failed": "Не удалось подготовить секреты предпросмотра синхронизации данных: {{detail}}",
"data_sync.backend.error.read_source_table_failed_with_table": "Не удалось прочитать исходную таблицу {{table}}: {{detail}}",
"data_sync.backend.error.read_target_table_failed_with_table": "Не удалось прочитать целевую таблицу {{table}}: {{detail}}",
"data_sync.backend.error.refresh_columns_after_create_failed": "Не удалось загрузить столбцы после создания целевой таблицы: таблица={{table}}, ошибка={{detail}}",
"data_sync.backend.error.source_collection_no_migratable_fields": "Из исходной MongoDB collection не удалось вывести мигрируемые поля: {{collection}}",
"data_sync.backend.error.source_table_columns_failed": "Не удалось получить столбцы исходной таблицы: {{detail}}",
"data_sync.backend.error.source_table_missing_or_no_columns": "Исходная таблица отсутствует или не имеет определений столбцов: {{table}}",
"data_sync.backend.error.sync_table_schema_failed": "Не удалось синхронизировать структуру таблицы: таблица={{table}}, ошибка={{detail}}",
"data_sync.backend.error.target_collection_check_failed": "Не удалось проверить целевую MongoDB collection: {{detail}}",
"data_sync.backend.error.target_table_columns_failed": "Не удалось получить столбцы целевой таблицы: {{detail}}",
"data_sync.backend.label.content_data_only": "Только данные",
"data_sync.backend.label.content_schema_and_data": "Структура и данные",
"data_sync.backend.label.content_schema_only": "Только структура",
"data_sync.backend.label.mode_full_overwrite": "Полная перезапись",
"data_sync.backend.label.mode_insert_only": "Только вставка",
"data_sync.backend.label.mode_insert_update": "Инкрементальная синхронизация",
"data_sync.backend.label.target_strategy_auto_create_if_missing": "Автоматически создать цель при отсутствии",
"data_sync.backend.label.target_strategy_existing_only": "Использовать только существующую цель",
"data_sync.backend.label.target_strategy_smart": "Автоматическая обработка цели",
"data_sync.backend.log.auto_add_columns_completed": "Автоматическое добавление столбцов завершено: успешно={{succeeded}}, ошибок={{failed}}",
"data_sync.backend.log.change_counts": "Требуется вставить {{inserts}} строк, обновить {{updates}} строк, удалить {{deletes}} строк",
"data_sync.backend.log.connecting_source": "Подключение к исходной базе данных: {{host}}...",
"data_sync.backend.log.connecting_target": "Подключение к целевой базе данных: {{host}}...",
"data_sync.backend.log.data_already_consistent": "Данные уже согласованы; изменения не требуются.",
"data_sync.backend.log.ddl_statement_succeeded": "Таблица {{table}}, этап {{stage}} выполнен успешно: {{sql}}",
"data_sync.backend.log.fatal_error": "Критическая ошибка: {{message}}",
"data_sync.backend.log.missing_columns_auto_add_disabled": "В целевой таблице отсутствует {{count}} столбцов, но автоматическое добавление отключено; они будут проигнорированы: {{columns}}",
"data_sync.backend.log.missing_columns_auto_add_started": "В целевой таблице отсутствует {{count}} столбцов; запускается автоматическое добавление: {{columns}}",
"data_sync.backend.log.mongo_redis_keyspace_options": "Миграция keyspace MongoDB -> Redis; режим={{mode}}; цель={{target}}",
"data_sync.backend.log.mongo_redis_migrating_key": "Запись Redis Key {{key}}",
"data_sync.backend.log.mongo_redis_syncing_collection": "Синхронизация MongoDB collection {{collection}}",
"data_sync.backend.log.redis_mongo_keyspace_options": "Миграция keyspace Redis -> MongoDB; режим={{mode}}; стратегия цели={{strategy}}",
"data_sync.backend.log.redis_mongo_migrating_key": "Миграция Redis Key {{key}}",
"data_sync.backend.log.source_query_no_changes": "Набор результатов SQL и целевая таблица согласованы; применять изменения не требуется",
"data_sync.backend.log.source_query_sync_completed": "Синхронизация набора результатов SQL завершена: вставки={{inserts}}, обновления={{updates}}, удаления={{deletes}}",
"data_sync.backend.log.source_query_sync_source": "Источник синхронизации: набор результатов SQL -> целевая таблица {{table}}; режим: {{mode}}",
"data_sync.backend.log.sync_options": "Содержимое синхронизации: {{content}}; режим: {{mode}}; автодобавление столбцов: {{autoAddColumns}}; стратегия целевой таблицы: {{targetTableStrategy}}; создание индексов: {{createIndexes}}",
"data_sync.backend.log.syncing_table": "Синхронизация таблицы: {{table}}",
"data_sync.backend.log.table_no_operations_skipped": "Для таблицы {{table}} не выбраны операции, она пропущена",
"data_sync.backend.log.target_table_created": "Целевая таблица успешно создана: {{table}}",
"data_sync.backend.log.target_table_no_operations": "Для целевой таблицы {{table}} не выбраны операции, она пропущена",
"data_sync.backend.log.unknown_sync_content_data_only": "Неизвестное содержимое синхронизации {{content}}; автоматически выбран режим только данных",
"data_sync.backend.result.preview_ready": "Предпросмотр синхронизации данных готов",
"data_sync.backend.result.sync_completed": "Синхронизация завершена: таблиц={{tables}}, вставлено={{rowsInserted}}, обновлено={{rowsUpdated}}, удалено={{rowsDeleted}}",
"data_sync.plan.mongo_target_collection_missing_auto_create": "Целевая MongoDB collection {{collection}} отсутствует. Она будет автоматически создана перед импортом.",
"data_sync.plan.mongo_target_collection_missing_manual_create": "Целевая MongoDB collection {{collection}} отсутствует. Сначала создайте ее вручную.",
"data_sync.backend.warning.apply_changes_unsupported": "Целевой драйвер не поддерживает применение изменений данных.",
"data_sync.backend.warning.auto_add_column_sql_generation_failed": "Не удалось создать SQL для автоматического добавления столбца {{column}}: {{detail}}",
"data_sync.backend.warning.auto_increment_not_preserved_existing_target_add_column": "Столбец {{column}} является автоинкрементным; {{feature}} не будет автоматически создан заново при добавлении в существующую целевую таблицу",
"data_sync.backend.warning.column_default_expression_skipped": "Значение по умолчанию {{default}} столбца {{column}} содержит выражение и пока не мигрируется автоматически",
"data_sync.backend.warning.column_empty_string_default_not_preserved": "Пустая строка как значение по умолчанию столбца {{column}} не сохранена",
"data_sync.backend.warning.column_type_degraded": "Столбец {{column}} типа {{sourceType}} деградирован до {{targetType}}",
"data_sync.backend.warning.column_type_empty_degraded": "Тип столбца {{column}} пуст и деградирован до {{targetType}}",
"data_sync.backend.warning.column_type_mapped": "Столбец {{column}} типа {{sourceType}} сопоставлен с {{targetType}}",
"data_sync.backend.warning.column_type_no_mapping_degraded": "Для столбца {{column}} типа {{sourceType}} нет отдельного сопоставления; он деградирован до {{targetType}}",
"data_sync.backend.warning.column_user_defined_degraded": "Столбец {{column}} является пользовательским типом и деградирован до {{targetType}}",
"data_sync.backend.warning.composite_pk_skipped": "Таблица {{table}} имеет составной первичный ключ ({{columns}}); синхронизация различий пока не поддерживается и пропущена",
"data_sync.backend.warning.full_overwrite_clearing_target": "Режим полной перезаписи: целевая таблица {{table}} будет очищена",
"data_sync.backend.warning.load_target_columns_skip_check_failed": "Не удалось получить столбцы целевой таблицы; проверка согласованности столбцов пропущена: {{detail}}",
"data_sync.backend.warning.mongo_redis_document_format": "MongoDB -> Redis сейчас поддерживает только documents с полями key/type/ttl/value",
"data_sync.backend.warning.mongo_redis_full_overwrite_downgrade": "При миграции MongoDB -> Redis полная перезапись понижается до инкрементальной синхронизации",
"data_sync.backend.warning.mysql_unsigned_bigint_auto_increment_degraded": "Столбец {{column}} является unsigned bigint auto_increment; он деградирован до {{targetType}}, семантика автоинкремента не сохранена",
"data_sync.backend.warning.refresh_columns_after_add_failed": "Не удалось обновить целевые столбцы после добавления: таблица={{table}}, ошибка={{detail}}",
"data_sync.backend.warning.redis_mongo_full_overwrite_downgrade": "При миграции Redis -> MongoDB полная перезапись понижается до инкрементальной синхронизации",
"data_sync.backend.warning.source_indexes_read_failed": "Не удалось прочитать индексы исходной таблицы; миграция индексов пропущена: {{detail}}",
"data_sync.backend.warning.table_pk_required_skipped": "У таблицы {{table}} нет первичного ключа; текущий режим требует сравнения различий, таблица пропущена",
"data_sync.backend.warning.target_missing_skip_auto_create_disabled": "Целевая таблица для {{table}} отсутствует; текущая стратегия не разрешает автоматическое создание таблицы, поэтому она пропущена",
"data_sync.backend.warning.unknown_content_default_data": "Неизвестное содержимое синхронизации {{content}}; автоматически выбран режим только данных",
"data_sync.backend.warning.unknown_mode_default_insert_update": "Неизвестный режим синхронизации {{mode}}; автоматически выбрана инкрементальная синхронизация",
"data_sync.schema_sync.error.create_statement_empty": "Оператор create-table пуст",
"data_sync.schema_sync.error.create_target_table_failed": "Не удалось создать целевую таблицу {{table}}: {{detail}}",
"data_sync.schema_sync.error.get_columns_after_create_failed": "Не удалось получить столбцы после создания целевой таблицы {{table}}: {{detail}}",
"data_sync.schema_sync.error.get_create_statement_failed": "Не удалось получить оператор create-table для исходной таблицы {{table}}: {{detail}}",
"data_sync.schema_sync.error.get_source_columns_failed": "Не удалось получить столбцы исходной таблицы {{table}}: {{detail}}",
"data_sync.schema_sync.error.target_missing_auto_create_unsupported": "Целевая таблица {{table}} отсутствует, а тип источника {{sourceType}} пока не поддерживает автоматическое создание таблицы: {{detail}}",
"data_sync.schema_sync.log.add_column_failed": "Не удалось добавить столбец: таблица={{table}}, столбец={{column}}, ошибка={{detail}}",
"data_sync.schema_sync.log.column_added": "Столбец добавлен: таблица={{table}}, столбец={{column}}, тип={{type}}",
"data_sync.schema_sync.log.completed": "Синхронизация структуры завершена для {{table}}; добавлено столбцов: {{count}}",
"data_sync.schema_sync.log.schema_aligned": "Структура таблицы согласована: {{table}}",
"data_sync.schema_sync.log.target_created": "Целевая таблица успешно создана: {{table}}",
"data_sync.schema_sync.log.target_missing_create": "Целевая таблица {{table}} отсутствует; выполняется попытка создать структуру таблицы",
"data_sync.schema_sync.warning.target_unsupported": "Тип целевой базы данных={{targetType}} пока не поддерживает синхронизацию структуры; таблица {{table}} пропущена",
"data_sync.unsupported.mongo_index_columns_missing": "У индекса {{name}} нет определения столбцов, он пропущен",
"data_sync.unsupported.mongo_index_create_command_failed": "Не удалось создать команду MongoDB createIndexes для индекса {{name}}: {{detail}}",
"data_sync.unsupported.mongo_index_prefix_length": "Индекс {{name}} использует длину префикса; эквивалентная миграция в MongoDB пока не поддерживается",
"data_sync.warning.mongo_field_mixed_bson_types": "Поле {{field}} содержит несколько типов значений BSON и деградировано до совместимого типа",
"data_sync.warning.mongo_index_type_normalized": "Индекс {{name}}, тип={{type}}, будет мигрирован в MongoDB как обычный индекс",
"data_sync.warning.mongo_source_collection_index_read_failed": "Не удалось прочитать индексы исходной MongoDB collection; миграция индексов пропущена: {{detail}}",
"data_sync.warning.mongo_source_empty_sample_id_only": "В исходной MongoDB collection нет образцов данных; из `_id` будет создан только базовый столбец первичного ключа",
"data_sync.warning.mongo_source_primary_key_missing": "Из исходной MongoDB collection не удалось вывести стабильный первичный ключ; целевая таблица не создаст первичный ключ автоматически",
"data_sync.warning.mongo_source_table_index_read_failed": "Не удалось прочитать индексы исходной таблицы; миграция индексов пропущена: {{detail}}",
"data_sync.warning.mongo_target_collection_existing_only_required": "Текущая стратегия требует существующую целевую MongoDB collection, поэтому при выполнении она не будет создана автоматически",
"data_sync.warning.mongo_target_collection_weak_schema": "MongoDB является целью с гибкой структурой; структура полей следует записываемым document, проверки целевых столбцов не выполняются",
"file.backend.dialog.export_connections": "Экспорт подключений",
"file.backend.dialog.export_data": "Экспорт данных",
"file.backend.dialog.export_database_sql": "Экспорт {{database}} (SQL)",
"file.backend.dialog.export_query_result": "Экспорт результата запроса",
"file.backend.dialog.export_table": "Экспорт {{table}}",
"file.backend.dialog.export_tables_sql": "Экспорт таблиц (SQL)",
"file.backend.dialog.import_data": "Импорт в {{table}}",
"file.backend.dialog.select_ca_server_certificate_file": "Выберите файл сертификата CA/сервера",
"file.backend.dialog.select_client_certificate_file": "Выберите файл клиентского сертификата",
"file.backend.dialog.select_client_private_key_file": "Выберите файл клиентского приватного ключа",
"file.backend.dialog.select_config_file": "Выберите файл конфигурации",
"file.backend.dialog.select_database_file": "Выберите файл базы данных",
"file.backend.dialog.select_duckdb_file": "Выберите файл данных DuckDB",
"file.backend.dialog.select_sql_directory": "Выберите каталог SQL",
"file.backend.dialog.select_sql_file": "Выберите SQL-файл",
"file.backend.dialog.select_sqlite_file": "Выберите файл данных SQLite",
"file.backend.dialog.select_ssh_key_file": "Выберите файл приватного ключа SSH",
"file.backend.dialog.select_tls_certificate_file": "Выберите файл сертификата TLS",
"file.backend.html_export.document_title": "Экспорт данных GoNavi",
"file.backend.html_export.empty_rows": "(0 строк)",
"file.backend.html_export.heading": "Экспорт данных GoNavi",
"file.backend.html_export.meta": "Строк: {{rowCount}} · Столбцов: {{columnCount}} · Создано: {{generatedAt}}",
"file.backend.sql_dump.database": "База данных: {{database}}",
"file.backend.sql_dump.empty_rows": "(0 строк)",
"file.backend.sql_dump.generated_at": "Создано: {{generatedAt}}",
"file.backend.sql_dump.table": "Таблица: {{objectName}}",
"file.backend.sql_dump.title": "Экспорт GoNavi SQL",
"file.backend.sql_dump.view": "Представление: {{objectName}}",
"file.backend.sql_dump.view_data_skipped": "Экспорт данных представления пропущен (INSERT для представлений не выводится).",
"file.backend.error.batch_commit_unsupported": "Текущий тип базы данных не поддерживает пакетный commit",
"file.backend.error.connection_export_file_too_large": "Файл экспорта подключений слишком большой",
"file.backend.error.connection_import_file_too_large": "Файл импорта подключений слишком большой",
"file.backend.error.connection_package_decrypt_failed": "Пароль файла неверен или файл поврежден",
"file.backend.error.connection_package_password_required": "Пароль пакета восстановления не может быть пустым",
"file.backend.error.connection_package_payload_too_large": "Содержимое пакета подключений слишком большое",
"file.backend.error.connection_package_unsupported": "Неподдерживаемый формат пакета восстановления подключений",
"file.backend.error.create_directory_failed": "Не удалось создать каталог: {{detail}}",
"file.backend.error.create_sql_file_failed": "Не удалось создать SQL-файл: {{detail}}",
"file.backend.error.database_name_required": "Имя базы данных не может быть пустым",
"file.backend.error.delete_sql_directory_failed": "Не удалось удалить каталог: {{detail}} (можно удалять только пустые каталоги)",
"file.backend.error.delete_sql_file_failed": "Не удалось удалить SQL-файл: {{detail}}",
"file.backend.error.directory_exists": "Каталог уже существует",
"file.backend.error.directory_name_no_separator": "Имя каталога не может содержать разделители пути",
"file.backend.error.directory_name_required": "Имя каталога не может быть пустым",
"file.backend.error.directory_path_required": "Путь к каталогу не может быть пустым",
"file.backend.error.export_unsupported_format": "Неподдерживаемый формат экспорта: {{format}}",
"file.backend.error.app_log_file_not_found": "Файл журнала GoNavi не найден",
"file.backend.error.file_path_empty": "Путь к файлу пуст",
"file.backend.error.file_path_required": "Путь к файлу не может быть пустым",
"file.backend.error.import_file_empty": "Путь к файлу не может быть пустым",
"file.backend.error.import_csv_empty_or_missing_header": "CSV пуст или отсутствует строка заголовка",
"file.backend.error.import_csv_open_failed": "Не удалось открыть CSV: {{detail}}",
"file.backend.error.import_csv_read_failed": "Не удалось прочитать CSV: {{detail}}",
"file.backend.error.import_excel_empty_or_missing_header": "Excel пуст или отсутствует строка заголовка",
"file.backend.error.import_excel_no_sheets": "В файле Excel нет листов",
"file.backend.error.import_excel_parse_failed": "Не удалось разобрать Excel: {{detail}}",
"file.backend.error.import_excel_read_failed": "Не удалось прочитать Excel: {{detail}}",
"file.backend.error.import_json_parse_failed": "Не удалось разобрать JSON: {{detail}}",
"file.backend.error.import_json_root_not_array": "Корень JSON должен быть массивом",
"file.backend.error.import_unsupported_format": "Неподдерживаемый формат файла",
"file.backend.error.invalid_export_mode": "Недопустимый режим экспорта",
"file.backend.error.mysql_workbench_no_connections": "В XML не найдены допустимые конфигурации подключений",
"file.backend.error.mysql_workbench_parse_failed": "Не удалось разобрать XML MySQL Workbench: {{detail}}",
"file.backend.error.navicat_connection_password_parse_failed": "Не удалось разобрать пароль для подключения {{name}}",
"file.backend.error.navicat_connection_proxy_password_parse_failed": "Не удалось разобрать пароль прокси для подключения {{name}}",
"file.backend.error.navicat_connection_ssh_password_parse_failed": "Не удалось разобрать SSH-пароль для подключения {{name}}",
"file.backend.error.navicat_ncx_no_connections": "В Navicat NCX не найдены допустимые конфигурации подключений, поддерживаемые GoNavi",
"file.backend.error.navicat_ncx_parse_failed": "Не удалось разобрать Navicat NCX",
"file.backend.error.navicat_secret_decrypt_failed": "Не удалось расшифровать пароль Navicat",
"file.backend.error.open_file_failed": "Не удалось открыть файл: {{detail}}",
"file.backend.error.query_required": "Запрос не может быть пустым",
"file.backend.error.read_directory_info_failed": "Не удалось прочитать информацию о каталоге: {{detail}}",
"file.backend.error.read_file_error_summary": "Ошибка чтения файла: {{detail}}. Выполнено: {{count}}.",
"file.backend.error.read_file_info_failed": "Не удалось прочитать информацию о файле: {{detail}}",
"file.backend.error.read_target_directory_info_failed": "Не удалось прочитать информацию о целевом каталоге: {{detail}}",
"file.backend.error.read_target_file_info_failed": "Не удалось прочитать информацию о целевом файле: {{detail}}",
"file.backend.error.rename_directory_failed": "Не удалось переименовать каталог: {{detail}}",
"file.backend.error.rename_sql_file_failed": "Не удалось переименовать SQL-файл: {{detail}}",
"file.backend.error.selected_path_not_directory": "Выбранный путь не является каталогом",
"file.backend.error.selected_path_not_sql_file": "Выбранный путь не является SQL-файлом",
"file.backend.error.select_with_query_required": "Поддерживается экспорт только SELECT/WITH-запросов",
"file.backend.error.schema_export_no_objects": "В схеме {{schema}} не найдены таблицы или представления для экспорта",
"file.backend.error.schema_name_required": "Имя схемы не может быть пустым",
"file.backend.error.sql_file_batch_execution_failed": "Ошибка пакетного выполнения, начиная с инструкции {{index}}: {{detail}}",
"file.backend.error.sql_file_batch_rollback_failed": "Ошибка пакетного выполнения: {{detail}}; ошибка отката: {{rollbackDetail}}",
"file.backend.error.sql_file_exists": "SQL-файл уже существует",
"file.backend.error.sql_file_extension_required": "Поддерживаются только SQL-файлы",
"file.backend.error.sql_file_name_no_separator": "Имя SQL-файла не может содержать разделители пути",
"file.backend.error.sql_file_name_required": "Имя SQL-файла не может быть пустым",
"file.backend.error.sql_file_statement_execution_failed": "Ошибка выполнения инструкции {{index}}: {{detail}}",
"file.backend.error.task_not_found": "Задача не найдена",
"file.backend.error.table_data_batch_limit": "За один раз можно обработать не более {{max}} таблиц; сейчас выбрано {{count}}",
"file.backend.error.table_data_clear_failed": "Не удалось очистить {{table}}: {{detail}}",
"file.backend.error.table_data_clear_failed_partial": "Не удалось очистить {{table}}: {{detail}}. Предупреждение: первые {{count}} таблиц уже очищены, их нельзя восстановить",
"file.backend.error.table_data_mode_unsupported": "Неподдерживаемый режим очистки данных таблицы: {{mode}}",
"file.backend.error.table_data_no_tables": "Таблицы не выбраны",
"file.backend.error.table_data_truncate_failed": "Не удалось выполнить TRUNCATE для {{table}}: {{detail}}",
"file.backend.error.table_data_truncate_failed_partial": "Не удалось выполнить TRUNCATE для {{table}}: {{detail}}. Предупреждение: для первых {{count}} таблиц уже выполнен TRUNCATE, их нельзя восстановить",
"file.backend.error.table_data_truncate_unsupported": "Текущий тип базы данных {{type}} не поддерживает TRUNCATE для таблиц. Используйте очистку",
"file.backend.error.target_directory_exists": "Целевой каталог уже существует",
"file.backend.error.target_sql_file_exists": "Целевой SQL-файл уже существует",
"file.backend.error.write_failed": "Ошибка записи: {{detail}}",
"file.backend.message.cancel_requested": "Запрос на отмену отправлен",
"file.backend.message.execution_cancelled": "Выполнение отменено. Выполнено: {{executed}}, ошибок: {{failed}}, длительность: {{duration}}.",
"file.backend.message.execution_completed": "Выполнение завершено. Успешно: {{success}}, ошибок: {{failed}}, длительность: {{duration}}.",
"file.backend.message.execution_error_detail_header": "Сведения об ошибках (первые {{count}}):",
"file.backend.message.execution_more_errors": "...еще {{count}} ошибок не показано",
"file.backend.message.export_completed": "Экспорт завершен",
"file.backend.message.import_no_data": "Нет данных для импорта",
"file.backend.message.import_row_failed": "Ошибка импорта строки {{index}}: {{detail}}",
"file.backend.message.import_summary": "Импортировано: {{imported}}, ошибок: {{failed}}",
"file.backend.message.statement_failed": "Ошибка выполнения инструкции {{index}}: {{detail}}\n SQL: {{sql}}",
"file.backend.message.table_data_clear_succeeded": "Очистка выполнена успешно",
"file.backend.message.table_data_truncate_succeeded": "TRUNCATE выполнен успешно",
"file.backend.message.transaction_committed": "Транзакция успешно закоммичена",
"file.backend.message.user_cancelled": "Пользователь отменил выполнение",
"file.backend.filter.all_files": "Все файлы",
"file.backend.filter.all_files_pattern": "Все файлы (*.*)",
"file.backend.filter.certificate_files": "Файлы сертификатов",
"file.backend.filter.connection_package": "Пакет подключений GoNavi (*.gonavi-conn)",
"file.backend.filter.database_files": "Файлы баз данных",
"file.backend.filter.data_files": "Файлы данных",
"file.backend.filter.duckdb_files": "Файлы DuckDB",
"file.backend.filter.json_files": "Файлы JSON (*.json)",
"file.backend.filter.mysql_workbench_connections": "Подключения MySQL Workbench (*.xml)",
"file.backend.filter.private_key_files": "Файлы приватных ключей",
"file.backend.filter.sql_files": "Файлы SQL (*.sql)",
"file.backend.filter.sqlite_files": "Файлы SQLite",
"ai_service.backend.builtin_prompt.title.general_chat": "Универсальный чат-ассистент",
"ai_service.backend.builtin_prompt.body.general_chat": "Вы — AI-ассистент GoNavi, специализированная экспертная система, глубоко встроенная в клиент GoNavi для баз данных и кэшей.\nВаша цель — быть самым полезным вторым мозгом для разработчиков, DBA и специалистов по данным, предоставляя профессиональные, точные и перспективные решения для задач на стороне данных.\n\nКлючевой образ и тон взаимодействия:\n- Профессиональная основательность: уверенно оценивайте продукты баз данных, такие как MySQL, PostgreSQL, DuckDB и Redis, включая планы выполнения, индексацию и поведение хранения.\n- Прямота и практичность: избегайте пустых вступлений. Если намерение пользователя ясно, начинайте с элегантного кода или шагов, которые можно сразу применить.\n- Структурированность и читаемость: используйте заголовки Markdown, выделение и блоки кода с корректным идентификатором языка, например sql, json или bash.\n- Безопасность production прежде всего: если SQL может создать серьезный риск, например DELETE или UPDATE без WHERE либо запрос, способный заблокировать большую production-таблицу, сначала дайте четкое предупреждение.\n\nКарта возможностей:\n1. От естественного языка к операциям с данными: переводите человеческое намерение в точные запросы или команды.\n2. Объяснение выполнения: раскрывайте логику и последствия для производительности, стоящие за запросами.\n3. Экспертная оптимизация: находите узкие места и предлагайте стратегии индексации, переписывания или выполнения.\n4. Аналитика данных: извлекайте значимые закономерности из результатов, а не просто пересказывайте строки.\n5. Архитектурный обзор: оценивайте ограничения схемы и предлагайте пути развития, устойчивые к росту данных.\n\nПравила взаимодействия:\n- Используйте профессиональный, совместный стиль и адаптируйтесь к языку интерфейса, выбранному пользователем.\n- Когда пользователь просит код для базы данных, учитывайте лучшие практики соответствующего движка. Если точная версия неизвестна, берите за основу стандартный подход и отмечайте важные различия версий, например оконные функции MySQL 8.\n- Не отказывайте слишком быстро: если пользователь просит SQL, но подробная DDL не приложена, используйте контекст диалога и список простых имен таблиц, чтобы определить вероятную целевую таблицу. Если это невозможно, объясните, что известно, и уточните, какую таблицу нужно запросить.",
"ai_service.backend.builtin_prompt.title.sql_generate": "Генератор SQL",
"ai_service.backend.builtin_prompt.body.sql_generate": "Вы — AI-ассистент GoNavi, эксперт по разработке баз данных и построению SQL-запросов. На основе запроса пользователя на естественном языке создавайте точные, элегантные и производительные SQL-запросы или команды Redis.\n\nСтрогие правила вывода:\n1. В первую очередь выводите чистый код: всегда помещайте код в markdown-блок с корректным идентификатором языка, например sql или bash.\n2. Будьте лаконичны: избегайте длинных вступлений и сразу переходите к ответу.\n3. Защищайте production-безопасность: предпочитайте параметризованные запросы или защитные шаблоны, чтобы избежать SQL-инъекций. Для DELETE или UPDATE без явных условий обязательно выдавайте сильное предупреждение красной линии.\n4. Оптимизируйте производительность: для крупных запросов по умолчанию добавляйте разумные ограничения LIMIT, например LIMIT 100, и выбирайте эффективные шаблоны для JOIN и агрегации.\n5. Комментируйте только по делу: для сложной вложенной логики добавляйте внутри блока кода короткие однострочные комментарии, объясняющие идею.",
"ai_service.backend.builtin_prompt.body.sql_explain": "Вы — AI-ассистент GoNavi, опытный senior-инженер по базам данных с глубокой практической экспертизой. Объясняйте скрытый замысел и логику выполнения SQL-запроса пользователя профессиональным, структурированным и понятным для разработчика языком.\n\nПравила объяснения:\n1. Разбор общей логики: одним кратким предложением опишите, какую бизнес-задачу пытается решить этот SQL.\n2. Пошаговый разбор выполнения: разберите ключевые секции в реальном порядке работы executor, например FROM -> JOIN -> WHERE -> GROUP BY -> SELECT -> ORDER BY.\n3. Поиск рисков производительности: укажите вероятные ловушки, например неявные преобразования типов, вызовы функций без использования индексов, возможные Cartesian products или full table scans.\n4. Строгое оформление: представляйте ключевые пункты списком, выделяйте важные термины жирным и сохраняйте читаемость даже в длинном объяснении.",
"ai_service.backend.builtin_prompt.title.sql_explain": "Анализатор SQL",
"ai_service.backend.builtin_prompt.title.sql_optimize": "Оптимизатор SQL",
"ai_service.backend.builtin_prompt.body.sql_optimize": "Ты AI-ассистент GoNavi, full-stack инженер по производительности и старший DBA с опытом систем с высокой конкуррентной нагрузкой. Холодно и точно диагностируй исходный SQL пользователя и предложи рецепт рефакторинга для повышения производительности.\n\nТребования к диагностике и рецепту:\n1. Поиск узких мест: точно укажи слабые места запроса, например неудачно выбранную ведущую таблицу, невозможность использовать covering indexes или лишние подзапросы.\n2. Переписанный SQL: если есть потенциал ускорения, покажи пользователю тщательно оптимизированную высокопроизводительную версию, сохраняя логическую эквивалентность.\n3. Объяснение причин: не только скажи, что изменить, но и объясни, почему исполнитель после изменения будет работать быстрее.\n4. Рекомендации по индексам: если текущая структура не выдерживает нагрузку, предложи конкретные DDL-уровневые CREATE INDEX statements и укажи основание, например leftmost-prefix matching.\n5. Оценка приоритета: в конце ответа отметь срочность оптимизации: высокий при блокирующих проблемах или риске блокировок, средний при узком месте пропускной способности, низкий для долгосрочной тонкой настройки.",
"ai_service.backend.builtin_prompt.body.data_analyze": "Ты AI-ассистент GoNavi, опытный эксперт по анализу данных с острым деловым чутьем. Изучи образец данных, полученный запросом пользователя, и извлеки из него скрытую ценную информацию.\n\nЦели анализа:\n1. Жесткая статистика: суммируй общее число строк и ключевые числовые метрики, например экстремумы, средние значения и агрегированные медианы.\n2. Тренды и аномалии: если в данных есть временные метки, выяви рост или снижение; если есть выбросы, явно выдели их.\n3. Поиск бизнес-ценности: не просто пересказывай данные. Объедини видимые паттерны с AI-суждением и дай одну конструктивную рекомендацию к действию для бизнес-руководителей или разработчиков.\n4. Формат представления: оформи анализ как краткий мини-отчет с заголовком и сжатыми пунктами, избегая плоского механического пересказа.",
"ai_service.backend.builtin_prompt.title.data_analyze": "Аналитика данных",
"ai_service.backend.builtin_prompt.body.schema_insight": "Ты AI-ассистент GoNavi, главный архитектор баз данных, отвечающий за полный жизненный цикл базы. В этом режиме строго проверь предоставленные пользователем структуры таблиц с точки зрения нормализации и будущей эволюции.\n\nФокус проверки:\n1. Компромиссы нормализации: найди явные денормализованные решения и оцени, помогает ли избыточность производительности или является ошибкой проектирования.\n2. Надежность индексов: оцени выбор первичных ключей, например auto-increment против UUID, избыточные индексы, замедляющие запись, и пропущенные часто используемые составные индексы.\n3. Прогноз физического объема: проверь распределение типов данных, например слишком большие VARCHAR или ненужные BIGINT, которые могут расходовать хранилище впустую.\n4. Практические указания в коде: если есть структурные дефекты, не ограничивайся критикой. При необходимости предложи конкретные ALTER TABLE-скрипты для улучшения.",
"ai_service.backend.builtin_prompt.title.schema_insight": "Проверка схемы",
"ai_service.backend.database_context.title": "## Текущий контекст базы данных",
"ai_service.backend.database_context.database_type": "Тип базы данных: {{type}}",
"ai_service.backend.database_context.database_name": "Имя базы данных: {{name}}",
"ai_service.backend.database_context.table_schema": "### Структура таблиц",
"ai_service.backend.database_context.table_heading": "#### Таблица: {{table}}",
"ai_service.backend.database_context.row_count": "[примерно {{count}} строк]",
"ai_service.backend.database_context.column_name": "Столбец",
"ai_service.backend.database_context.column_type": "Тип",
"ai_service.backend.database_context.column_nullable": "Допускает NULL",
"ai_service.backend.database_context.column_primary_key": "Первичный ключ",
"ai_service.backend.database_context.column_comment": "Комментарий",
"ai_service.backend.database_context.value_yes": "Да",
"ai_service.backend.database_context.value_no": "Нет",
"ai_service.backend.database_context.indexes": "**Индексы:**",
"ai_service.backend.database_context.unique_index": " (уникальный)",
"ai_service.backend.database_context.sample_data": "**Примеры данных ({{count}} строк):**",
"ai_service.backend.provider.image_fallback_prompt": "Опишите и проанализируйте это изображение.",
"ai_service.backend.provider.image_omitted_notice": "[Изображение пропущено: текущая модель или вышестоящий API не поддерживает ввод изображений. Переключитесь на модель с поддержкой зрения и отправьте изображение повторно.]",
"ai_service.backend.message.provider_test_success": "Проверка подключения к эндпоинту выполнена успешно",
"ai_service.backend.message.mcp_test_success": "Подключение к службе MCP успешно, найдено {{count}} инструментов",
"ai_service.backend.message.skill_unnamed": "Skill без имени",
"ai_service.backend.error.mcp_command_required": "Команда MCP не может быть пустой",
"ai_service.backend.error.mcp_tool_alias_invalid": "Недопустимый псевдоним инструмента MCP: {{alias}}",
"ai_service.backend.error.mcp_transport_unsupported": "Неподдерживаемый transport MCP: {{transport}}",
"ai_service.backend.error.mcp_server_not_found": "Служба MCP не найдена: {{serverID}}",
"ai_service.backend.error.mcp_server_disabled": "Служба MCP отключена: {{name}}",
"ai_service.backend.error.mcp_tool_arguments_parse_failed": "Не удалось разобрать аргументы инструмента MCP: {{detail}}",
"ai_service.backend.error.mcp_http_start_failed": "Не удалось запустить службу GoNavi MCP HTTP: {{detail}}",
"ai_service.backend.error.mcp_http_stop_failed": "Не удалось остановить службу GoNavi MCP HTTP: {{detail}}",
"ai_service.backend.error.mcp_http_process_exited": "Служба GoNavi MCP HTTP завершилась аварийно: {{detail}}",
"ai_service.backend.error.mcp_http_executable_resolve_failed": "Не удалось определить текущий исполняемый файл GoNavi: {{detail}}",
"ai_service.backend.error.mcp_http_subprocess_exited": "Подпроцесс MCP HTTP завершился",
"ai_service.backend.error.mcp_http_health_status_failed": "healthz вернул HTTP {{statusCode}}",
"ai_service.backend.error.mcp_http_token_generate_failed": "Не удалось сгенерировать MCP HTTP Token: {{detail}}",
"ai_service.backend.error.provider_test_failed": "Проверка подключения не удалась: {{detail}}",
"ai_service.backend.error.provider_auth_failed": "API Key недействителен или запрос был отклонен (HTTP {{status}}){{body}}",
"ai_service.backend.error.provider_http_status_failed": "Эндпоинт вернул неожиданный статус (HTTP {{status}}){{body}}",
"ai_service.backend.error.provider_http_server_error": "Вышестоящий сервер вернул внутреннюю ошибку (HTTP {{status}}){{body}}",
"ai_service.backend.error.provider_request_create_failed": "Не удалось создать запрос: {{detail}}",
"ai_service.backend.error.provider_request_serialize_failed": "Не удалось сериализовать запрос: {{detail}}",
"ai_service.backend.error.provider_secret_read_failed": "Не удалось прочитать Provider secret: {{detail}}",
"ai_service.backend.error.provider_secret_save_failed": "Не удалось сохранить Provider secret: {{detail}}",
"ai_service.backend.error.provider_secret_saved_read_failed": "Не удалось прочитать сохраненный Provider secret: {{detail}}",
"ai_service.backend.error.provider_secret_delete_failed": "Не удалось удалить Provider secret: {{detail}}",
"ai_service.backend.error.provider_secret_load_failed": "Не удалось загрузить AI Provider secret (provider={{provider}}): {{detail}}",
"ai_service.backend.error.config_rewrite_failed": "Не удалось перезаписать конфигурацию AI: {{detail}}",
"ai_service.backend.error.config_read_failed": "Не удалось прочитать конфигурацию AI: {{detail}}",
"ai_service.backend.error.config_load_failed": "Не удалось загрузить конфигурацию AI: {{detail}}",
"ai_service.backend.error.config_serialize_failed": "Не удалось сериализовать конфигурацию AI: {{detail}}",
"ai_service.backend.error.config_dir_create_failed": "Не удалось создать каталог конфигурации: {{detail}}",
"ai_service.backend.error.config_write_failed": "Не удалось записать конфигурацию AI: {{detail}}",
"ai_service.backend.error.daily_secret_store_unavailable": "Daily secret store недоступен: {{detail}}",
"ai_service.backend.error.secret_store_unavailable": "Secret store недоступен: {{detail}}",
"ai_service.backend.error.provider_secret_bundle_parse_failed": "Не удалось разобрать provider secret bundle: {{detail}}",
"ai_service.backend.error.models_request_create_failed": "Не удалось создать запрос списка моделей: {{detail}}",
"ai_service.backend.error.models_request_failed": "Не удалось запросить список моделей: {{detail}}",
"ai_service.backend.error.models_http_status_failed": "Эндпоинт списка моделей вернул неожиданный статус (HTTP {{status}}){{body}}",
"ai_service.backend.error.models_parse_failed": "Не удалось разобрать список моделей: {{detail}}",
"ai_service.backend.error.active_provider_not_found": "Активный AI Provider не найден",
"ai_service.backend.error.editable_provider_not_found": "AI Provider для редактирования не найден: {{detail}}",
"ai_service.backend.error.provider_not_configured": "AI Provider не настроен. Сначала настройте его в параметрах.",
"ai_service.backend.error.volcengine_coding_models_empty": "Текущий эндпоинт не вернул доступные модели Volcengine Coding Plan. Проверьте права аккаунта или переключитесь на Provider \"Volcengine Ark\"",
"ai_service.backend.error.session_missing": "Сеанс не существует",
"ai_service.backend.error.session_corrupt": "Данные сеанса повреждены",
"ai_service.backend.error.sessions_dir_create_failed": "Не удалось создать каталог sessions: {{detail}}",
"ai_service.backend.error.session_serialize_failed": "Не удалось сериализовать данные сеанса: {{detail}}",
"ai_service.backend.error.session_write_failed": "Не удалось сохранить сеанс: {{detail}}",
"ai_service.backend.error.session_delete_failed": "Не удалось удалить сеанс: {{detail}}",
"ai_service.backend.warning.sql_drop": "SQL высокого риска: DROP безвозвратно удаляет объекты базы данных",
"ai_service.backend.warning.sql_truncate": "SQL высокого риска: TRUNCATE удаляет все строки из таблицы",
"ai_service.backend.warning.sql_delete_without_where": "SQL высокого риска: DELETE без WHERE удалит все строки",
"ai_service.backend.warning.sql_update_without_where": "SQL высокого риска: UPDATE без WHERE обновит все строки",
"jvm_monitoring_charts.title.heap": "Память кучи",
"jvm_monitoring_charts.title.gc": "Сборка мусора",
"jvm_monitoring_charts.title.threads": "Потоки",
"jvm_monitoring_charts.title.classes": "Загрузка классов",
"jvm_monitoring_charts.empty.heap.no_samples": "Пока нет выборок памяти кучи",
"jvm_monitoring_charts.empty.heap.metric_unavailable": "Текущий источник мониторинга не предоставляет метрики памяти кучи",
"jvm_monitoring_charts.empty.gc.no_samples": "Пока нет выборок сборки мусора",
"jvm_monitoring_charts.empty.gc.metric_unavailable": "Текущий источник мониторинга не предоставляет метрики сборки мусора",
"jvm_monitoring_charts.empty.threads.no_samples": "Пока нет выборок потоков",
"jvm_monitoring_charts.empty.threads.metric_unavailable": "Текущий источник мониторинга не предоставляет метрики потоков",
"jvm_monitoring_charts.empty.classes.no_samples": "Пока нет выборок загрузки классов",
"jvm_monitoring_charts.empty.classes.metric_unavailable": "Текущий источник мониторинга не предоставляет метрики загрузки классов",
"jvm_monitoring_charts.legend.heap_used": "Использовано кучи",
"jvm_monitoring_charts.legend.heap_committed": "Зарезервировано кучи",
"jvm_monitoring_charts.legend.gc_count": "Количество GC",
"jvm_monitoring_charts.legend.gc_time_ms": "Время GC (мс)",
"jvm_monitoring_charts.legend.thread_count": "Количество потоков",
"jvm_monitoring_charts.legend.daemon_thread_count": "Демон-потоки",
"jvm_monitoring_charts.legend.peak_thread_count": "Пиковое количество потоков",
"jvm_monitoring_charts.legend.loaded_classes": "Загруженные классы",
"jvm_monitoring_charts.legend.unloaded_classes": "Выгруженные классы",
"jvm_monitoring_status_cards.title.heap": "Память кучи",
"jvm_monitoring_status_cards.title.gc_pressure": "Нагрузка GC",
"jvm_monitoring_status_cards.title.threads": "Потоки",
"jvm_monitoring_status_cards.title.classes": "Загрузка классов",
"jvm_monitoring_status_cards.meta.heap_committed": "Зарезервировано {{value}}",
"jvm_monitoring_status_cards.meta.waiting_samples": "Ожидание выборок",
"jvm_monitoring_status_cards.meta.gc_total_time": "Всего {{value}}",
"jvm_monitoring_status_cards.meta.thread_peak": "Пик {{value}}",
"jvm_monitoring_status_cards.status.sampling": "Идет сбор",
"jvm_monitoring_status_cards.status.stopped": "Остановлено",
"jvm_monitoring_status_cards.thread_state.runnable_count": "Готово к выполнению {{count}}",
"jvm_monitoring_detail_panel.title.troubleshooting_metrics": "Метрики диагностики",
"jvm_monitoring_detail_panel.title.thread_state_distribution": "Распределение состояний потоков",
"jvm_monitoring_detail_panel.title.recent_gc_details": "Последние сведения о сборке мусора",
"jvm_monitoring_detail_panel.title.capabilities_and_degradation": "Возможности и деградация",
"jvm_monitoring_detail_panel.field.process_cpu": "CPU процесса",
"jvm_monitoring_detail_panel.field.system_cpu": "CPU системы",
"jvm_monitoring_detail_panel.field.process_physical_memory": "Физическая память процесса",
"jvm_monitoring_detail_panel.field.process_virtual_memory": "Виртуальная память процесса",
"jvm_monitoring_detail_panel.memory_missing.title": "Почему отсутствует физическая память процесса",
"jvm_monitoring_detail_panel.memory_missing.jmx": "Подключение JMX не предоставляет атрибут резидентной физической памяти процесса, поэтому сейчас можно читать только метрику виртуальной памяти процесса. Чтобы собирать физическую память процесса, переключитесь на HTTP endpoint или расширенный agent.",
"jvm_monitoring_detail_panel.memory_missing.default": "Текущий источник мониторинга не вернул метрику резидентной физической памяти процесса. Проверьте, что HTTP endpoint или расширенный agent собирает и передает физическую память процесса.",
"jvm_monitoring_detail_panel.empty.thread_states": "Пока нет выборок состояний потоков.",
"jvm_monitoring_detail_panel.empty.gc_events_unavailable": "Текущий источник мониторинга не предоставляет событийные данные сборки мусора.",
"jvm_monitoring_detail_panel.empty.recent_gc_events": "В последнем окне нет событий сборки мусора.",
"jvm_monitoring_detail_panel.gc.before": "До сборки",
"jvm_monitoring_detail_panel.gc.after": "После сборки",
"jvm_monitoring_presentation.metric.heap_used": "Память heap",
"jvm_monitoring_presentation.metric.heap_non_heap": "Память non-heap",
"jvm_monitoring_presentation.metric.gc_count": "Количество сборок мусора",
"jvm_monitoring_presentation.metric.gc_time": "Время сборки мусора",
"jvm_monitoring_presentation.metric.gc_events": "Последние события сборки мусора",
"jvm_monitoring_presentation.metric.thread_count": "Количество потоков",
"jvm_monitoring_presentation.metric.thread_states": "Состояния потоков",
"jvm_monitoring_presentation.metric.class_loading": "Загрузка классов",
"jvm_monitoring_presentation.metric.cpu_process": "CPU процесса",
"jvm_monitoring_presentation.metric.cpu_system": "CPU системы",
"jvm_monitoring_presentation.metric.memory_rss": "Физическая память процесса",
"jvm_monitoring_presentation.metric.memory_virtual": "Виртуальная память процесса",
"jvm_monitoring_presentation.thread_state.new": "Новый",
"jvm_monitoring_presentation.thread_state.runnable": "Готов к выполнению",
"jvm_monitoring_presentation.thread_state.blocked": "Заблокирован",
"jvm_monitoring_presentation.thread_state.waiting": "Ожидает",
"jvm_monitoring_presentation.thread_state.timed_waiting": "Ожидает с тайм-аутом",
"jvm_monitoring_presentation.thread_state.terminated": "Завершен",
"jvm_monitoring_presentation.availability.missing_metrics": "Отсутствующие метрики: {{metrics}}",
"jvm_monitoring_presentation.availability.provider_warnings": "Предупреждение источника мониторинга: {{warnings}}",
"jvm_monitoring_presentation.availability.no_obvious_degradation": "В текущем сеансе мониторинга явная деградация не обнаружена.",
"jvm_change_preview_modal.title": "Предпросмотр изменения JVM",
"jvm_change_preview_modal.status.no_preview": "Нет результата предпросмотра",
"jvm_change_preview_modal.status.generated": "Предпросмотр создан",
"jvm_change_preview_modal.action.confirm_execute": "Подтвердить выполнение",
"jvm_change_preview_modal.action.close": "Закрыть",
"jvm_change_preview_modal.section.summary": "Сводка изменения",
"jvm_change_preview_modal.section.before": "До изменения",
"jvm_change_preview_modal.section.after": "После изменения",
"jvm_change_preview_modal.field.resource_id": "ID ресурса",
"jvm_change_preview_modal.field.version": "Версия",
"jvm_change_preview_modal.field.format": "Формат",
"jvm_change_preview_modal.risk.label": "Риск: {{level}}",
"jvm_change_preview_modal.risk.low": "Низкий",
"jvm_change_preview_modal.risk.medium": "Средний",
"jvm_change_preview_modal.risk.high": "Высокий",
"jvm_change_preview_modal.risk.unknown": "Неизвестно",
"jvm_change_preview_modal.permission.requires_confirmation": "Требуется подтверждение",
"jvm_change_preview_modal.permission.allowed": "Выполнение разрешено",
"jvm_change_preview_modal.permission.forbidden": "Выполнение запрещено",
"jvm_change_preview_modal.blocking.label": "Причина блокировки",
"jvm_change_preview_modal.blocking.alert_message": "Текущее изменение нельзя выполнить",
"jvm_diagnostic.completion.category.observe": "команда наблюдения",
"jvm_diagnostic.completion.category.trace": "команда трассировки",
"jvm_diagnostic.completion.category.mutating": "команда высокого риска",
"jvm_diagnostic.completion.category.control": "команда управления",
"jvm_diagnostic.completion.preset.category.observe": "команда наблюдения",
"jvm_diagnostic.completion.preset.category.trace": "команда трассировки",
"jvm_diagnostic.completion.preset.category.mutating": "команда высокого риска",
"jvm_diagnostic.completion.preset.thread-top.documentation": "Показывает самые загруженные потоки, чтобы быстро найти заблокированные потоки или потоки с высокой нагрузкой CPU.",
"jvm_diagnostic.completion.preset.dashboard.documentation": "Показывает сводку времени выполнения JVM.",
"jvm_diagnostic.completion.preset.trace-slow-method.documentation": "Трассирует пути медленных вызовов методов.",
"jvm_diagnostic.completion.preset.watch-return.documentation": "Наблюдает параметры и возвращаемые значения.",
"jvm_diagnostic.completion.preset.ognl-sample.documentation": "Команда выражения высокого риска, по умолчанию показана только как пример.",
"jvm_diagnostic.completion.command.dashboard.documentation": "Показывает сводку времени выполнения JVM.",
"jvm_diagnostic.completion.command.jvm.documentation": "Показывает память JVM, потоки, загрузку классов, GC и аргументы запуска.",
"jvm_diagnostic.completion.command.thread.documentation": "Показывает горячие потоки, стеки потоков и заблокированные потоки.",
"jvm_diagnostic.completion.command.sc.documentation": "Ищет подходящую информацию о классах.",
"jvm_diagnostic.completion.command.sm.documentation": "Показывает сигнатуры методов класса.",
"jvm_diagnostic.completion.command.jad.documentation": "Декомпилирует указанный класс.",
"jvm_diagnostic.completion.command.sysprop.documentation": "Показывает системные свойства.",
"jvm_diagnostic.completion.command.sysenv.documentation": "Показывает переменные окружения.",
"jvm_diagnostic.completion.command.classloader.documentation": "Показывает информацию о загрузчиках классов.",
"jvm_diagnostic.completion.command.trace.documentation": "Трассирует временные пути вызовов методов.",
"jvm_diagnostic.completion.command.watch.documentation": "Наблюдает параметры, возвращаемые значения или исключения.",
"jvm_diagnostic.completion.command.stack.documentation": "Выводит стеки вызовов методов.",
"jvm_diagnostic.completion.command.monitor.documentation": "Периодически собирает статистику вызовов методов.",
"jvm_diagnostic.completion.command.tt.documentation": "Временной туннель методов для записи и повторного воспроизведения вызовов.",
"jvm_diagnostic.completion.command.ognl.documentation": "Выполняет выражение OGNL; по умолчанию требуется дополнительная авторизация.",
"jvm_diagnostic.completion.command.vmtool.documentation": "Напрямую работает с объектами JVM или выполняет действия VMTool.",
"jvm_diagnostic.completion.command.redefine.documentation": "Переопределяет байткод класса.",
"jvm_diagnostic.completion.command.retransform.documentation": "Повторно запускает преобразование класса.",
"jvm_diagnostic.completion.command.stop.documentation": "Останавливает текущую фоновую задачу.",
"jvm_diagnostic.completion.detail.execute_directly": "выполнить напрямую",
"jvm_diagnostic.completion.detail.thread_option": "параметр потока",
"jvm_diagnostic.completion.detail.class_search_template": "шаблон поиска класса",
"jvm_diagnostic.completion.detail.method_search_template": "шаблон поиска метода",
"jvm_diagnostic.completion.detail.decompile_template": "шаблон декомпиляции",
"jvm_diagnostic.completion.detail.system_property_template": "шаблон системного свойства",
"jvm_diagnostic.completion.detail.environment_variable_template": "шаблон переменной окружения",
"jvm_diagnostic.completion.detail.classloader_template": "шаблон загрузчика классов",
"jvm_diagnostic.completion.detail.trace_template": "шаблон trace",
"jvm_diagnostic.completion.detail.trace_option": "параметр trace",
"jvm_diagnostic.completion.detail.watch_template": "шаблон watch",
"jvm_diagnostic.completion.detail.watch_option": "параметр watch",
"jvm_diagnostic.completion.detail.stack_template": "шаблон stack",
"jvm_diagnostic.completion.detail.monitor_template": "шаблон monitor",
"jvm_diagnostic.completion.detail.time_tunnel_template": "шаблон временного туннеля",
"jvm_diagnostic.completion.detail.high_risk_template": "шаблон высокого риска",
"jvm_diagnostic.completion.argument.command_template.label": "шаблон {{command}}",
"jvm_diagnostic.completion.argument.detail_mode_d.label": "Подробный режим (-d)",
"jvm_diagnostic.completion.argument.dashboard.direct.label": "dashboard",
"jvm_diagnostic.completion.argument.dashboard.direct.documentation": "Показывает текущую сводку времени выполнения JVM.",
"jvm_diagnostic.completion.argument.jvm.direct.label": "jvm",
"jvm_diagnostic.completion.argument.jvm.direct.documentation": "Показывает память JVM, потоки, загрузку классов, GC и аргументы запуска.",
"jvm_diagnostic.completion.argument.thread.busy_top.label": "Загруженные потоки TOP N (-n)",
"jvm_diagnostic.completion.argument.thread.busy_top.documentation": "Показывает N потоков с наибольшей нагрузкой CPU.",
"jvm_diagnostic.completion.argument.thread.blocking.label": "Заблокированные потоки (-b)",
"jvm_diagnostic.completion.argument.thread.blocking.documentation": "Находит потоки, которые сейчас блокируют другие потоки.",
"jvm_diagnostic.completion.argument.thread.thread_id.label": "Указанный ID потока",
"jvm_diagnostic.completion.argument.thread.thread_id.documentation": "Показывает подробную информацию о стеке указанного потока.",
"jvm_diagnostic.completion.argument.sc.class_pattern.label": "Шаблон класса",
"jvm_diagnostic.completion.argument.sc.class_pattern.documentation": "Ищет по шаблону имени класса.",
"jvm_diagnostic.completion.argument.sc.detail.documentation": "Выводит подробную информацию о классе.",
"jvm_diagnostic.completion.argument.sm.method_signature.label": "Шаблон сигнатуры метода",
"jvm_diagnostic.completion.argument.sm.method_signature.documentation": "Показывает сигнатуры методов класса.",
"jvm_diagnostic.completion.argument.sm.detail.documentation": "Выводит подробные сигнатуры методов.",
"jvm_diagnostic.completion.argument.jad.template.label": "Шаблон декомпиляции",
"jvm_diagnostic.completion.argument.jad.template.documentation": "Декомпилирует указанный класс.",
"jvm_diagnostic.completion.argument.sysprop.property.label": "Показать свойство",
"jvm_diagnostic.completion.argument.sysprop.property.documentation": "Читает указанное системное свойство.",
"jvm_diagnostic.completion.argument.sysenv.variable.label": "Показать переменную окружения",
"jvm_diagnostic.completion.argument.sysenv.variable.documentation": "Читает указанную переменную окружения.",
"jvm_diagnostic.completion.argument.classloader.tree.label": "Древовидный вид (-t)",
"jvm_diagnostic.completion.argument.classloader.tree.documentation": "Выводит дерево загрузчиков классов.",
"jvm_diagnostic.completion.argument.classloader.url_stat.label": "Вся статистика URL (--url-stat)",
"jvm_diagnostic.completion.argument.classloader.url_stat.documentation": "Показывает статистику URL загрузчиков классов.",
"jvm_diagnostic.completion.argument.classloader.hash.label": "Указанный Hash загрузчика классов",
"jvm_diagnostic.completion.argument.classloader.hash.documentation": "Показывает детали указанного загрузчика классов.",
"jvm_diagnostic.completion.argument.trace.template.documentation": "Трассирует цепочки медленных вызовов методов.",
"jvm_diagnostic.completion.argument.trace.condition.label": "Фильтр условия '#cost > 100'",
"jvm_diagnostic.completion.argument.trace.condition.documentation": "Добавляет выражение условия trace.",
"jvm_diagnostic.completion.argument.watch.template.documentation": "Наблюдает параметры, возвращаемые значения или исключения.",
"jvm_diagnostic.completion.argument.watch.expand_depth.label": "Глубина раскрытия -x 2",
"jvm_diagnostic.completion.argument.watch.expand_depth.documentation": "Задает глубину раскрытия объекта.",
"jvm_diagnostic.completion.argument.stack.template.documentation": "Выводит стеки вызовов методов.",
"jvm_diagnostic.completion.argument.monitor.template.documentation": "Собирает статистику вызовов методов с интервалом.",
"jvm_diagnostic.completion.argument.tt.record.label": "шаблон записи tt",
"jvm_diagnostic.completion.argument.tt.record.documentation": "Записывает вызовы указанного метода.",
"jvm_diagnostic.completion.argument.tt.list.label": "Показать список записей (-l)",
"jvm_diagnostic.completion.argument.tt.list.documentation": "Показывает текущий список записей.",
"jvm_diagnostic.completion.argument.tt.replay.label": "Воспроизвести запись (-i)",
"jvm_diagnostic.completion.argument.tt.replay.documentation": "Показывает детали указанной записи.",
"jvm_diagnostic.completion.argument.ognl.template.documentation": "Выполняет выражение OGNL; команды высокого риска по умолчанию ограничены политикой.",
"jvm_diagnostic.completion.argument.vmtool.get_instances.label": "vmtool getInstances",
"jvm_diagnostic.completion.argument.vmtool.get_instances.documentation": "Получает экземпляры указанного класса; команды высокого риска по умолчанию ограничены политикой.",
"jvm_diagnostic.completion.argument.redefine.template.documentation": "Переопределяет путь к файлу байткода класса.",
"jvm_diagnostic.completion.argument.retransform.template.documentation": "Повторно преобразует указанный класс.",
"jvm_diagnostic.completion.argument.stop.direct.label": "stop",
"jvm_diagnostic.completion.argument.stop.direct.documentation": "Останавливает текущую фоновую задачу.",
"app.about.action.open_install_directory": "Открыть каталог установки",
"app.about.action.install_update": "Установить обновление",
"app.about.action.hide_to_background": "Скрыть в фон",
"app.about.download_progress.title": "Скачать обновление",
"app.about.download_progress.title_with_version": "Скачать обновление {{version}}",
"app.about.update_status.not_checked": "Не проверялось",
"app.about.update_status.checking": "Проверка обновлений...",
"app.about.update_status.check_failed": "Проверка обновлений не удалась: {{error}}",
"app.about.update_status.new_version_downloaded": "Найдена новая версия {{version}} (загружена; откройте ход загрузки для установки)",
"app.about.update_status.new_version_not_downloaded": "Найдена новая версия {{version}} (не загружена)",
"app.about.update_status.latest": "У вас установлена последняя версия ({{version}})",
"app.about.message.update_package_ready": "Пакет обновления готов ({{version}})",
"app.about.message.update_package_ready_with_path": "Пакет обновления готов ({{version}}), путь: {{path}}",
"app.about.message.download_completed": "Загрузка обновления завершена",
"app.about.message.download_completed_with_path": "Загрузка обновления завершена. Путь к пакету: {{path}}",
"app.about.message.download_failed_with_error": "Не удалось скачать обновление: {{error}}",
"app.about.message.install_directory_opened_manual_replace": "Каталог установки открыт. Завершите замену вручную.",
"app.about.message.open_install_directory_failed_with_error": "Не удалось открыть каталог установки: {{error}}",
"app.about.message.install_failed_with_error": "Не удалось установить обновление: {{error}}",
"app.about.message.check_failed_with_error": "Проверка обновлений не удалась: {{error}}",
"app.about.message.new_version_found": "Найдена новая версия {{version}}",
"app.theme.font_family.title": "Семейство шрифтов",
"app.theme.font_family.ui_title": "Семейство шрифтов UI",
"app.theme.font_family.mono_title": "Моноширинное семейство шрифтов",
"app.theme.font_family.default_ui_option": "Шрифт UI по умолчанию",
"app.theme.font_family.default_mono_option": "Шрифт кода по умолчанию",
"app.theme.font_family.load_failed": "Не удалось загрузить системные шрифты",
"app.theme.font_family.load_failed_fallback": "Не удалось загрузить системные шрифты. Используются стандартные наборы шрифтов: {{error}}",
"app.theme.font_family.loaded_ui_hint": "Считано {{count}} семейств шрифтов с этой системы. Введите текст для поиска. Очистите поле, чтобы вернуться к шрифту UI по умолчанию.",
"app.theme.font_family.loading_ui_hint": "Установленные шрифты текущей системы загружаются в реальном времени. Введите текст для поиска. Очистите поле, чтобы вернуться к шрифту UI по умолчанию.",
"app.theme.font_family.mono_fallback_hint": "Используются стандартные наборы шрифтов для кода. Применяется к моноширинному содержимому: SQL-редактору, блокам кода AI, журналам, DDL и таблицам данных.",
"app.theme.font_family.mono_hint": "Сначала показываются установленные системные шрифты; названия, близкие к Mono/Code/Console, выводятся выше. Применяется к моноширинному содержимому: SQL-редактору, блокам кода AI, журналам, DDL и таблицам данных.",
"app.theme.font_family.linux_cjk_install_prefix": "Ubuntu/Linux не обнаружил китайские CJK-шрифты, поэтому интерфейс может показывать квадраты вместо символов. Установите: ",
"app.theme.font_family.linux_cjk_install_suffix": ", затем перезапустите GoNavi.",
"app.linux_cjk_font_banner.title": "Отсутствуют Linux CJK-шрифты",
"app.linux_cjk_font_banner.description": "Китайский текст может отображаться квадратами вместо символов. Установите шрифты, затем перезапустите GoNavi: ",
"app.linux_cjk_font_banner.action.open_font_settings": "Настройки шрифтов",
"app.theme.data_table.density": "Плотность таблицы",
"app.theme.data_table.density.comfortable": "Комфортная",
"app.theme.data_table.density.standard": "Стандартная",
"app.theme.data_table.density.compact": "Компактная",
"app.theme.data_table.density_hint": "Управляет высотой строк, шириной столбцов и отступами. Комфортная плотность удобна для больших экранов; компактная увеличивает плотность информации. Ширина столбцов, измененная вручную, сохраняется в приоритете.",
"app.theme.data_table.font_size": "Размер шрифта таблицы данных",
"app.theme.data_table.sidebar_tree_font_size": "Размер шрифта левого дерева схем",
"app.theme.data_table.follow_global": "Следовать глобально",
"sidebar.message.operation_rename_failed": "Не удалось переименовать: {{error}}",
"sidebar.message.operation_drop_failed": "Не удалось удалить: {{error}}",
"sidebar.v2_database_menu.meta": "{{dialect}} · Действия с базой данных",
"sidebar.v2_database_menu.new_schema": "Новая schema",
"sidebar.v2_database_menu.new_materialized_view": "Новое материализованное представление",
"sidebar.v2_database_menu.new_external_catalog": "Новый внешний Catalog",
"sidebar.v2_database_menu.refresh_object_tree": "Обновить дерево объектов",
"sidebar.v2_database_menu.export_backup_section": "Экспорт и резервное копирование",
"sidebar.v2_database_menu.export_all_table_schema_sql": "Экспортировать схемы всех таблиц · SQL",
"sidebar.v2_database_menu.backup_all_tables_sql": "Резервная копия всех таблиц · схема + данные SQL",
"sidebar.v2_schema_menu.meta": "{{database}} · Действия со схемой",
"sidebar.v2_schema_menu.edit_schema": "Редактировать схему",
"sidebar.v2_schema_menu.export_current_schema_sql": "Экспортировать структуры таблиц текущей схемы · SQL",
"sidebar.v2_schema_menu.backup_current_schema_sql": "Резервная копия всех таблиц текущей схемы · схема + данные",
"sidebar.v2_schema_menu.delete_schema_cascade": "Удалить схему · DROP CASCADE",
"ai_settings.message.load_provider_failed": "Не удалось прочитать конфигурацию поставщика",
"ai_settings.mcp_server.tool_schema_summary.title": "Обнаруженные tools и подсказки по параметрам",
"ai_settings.mcp_server.tool_schema_summary.parameter_counts": "{{count}} параметров, обязательных {{requiredCount}}; звездочка отмечает обязательные поля.",
"ai_settings.mcp_server.tool_schema_summary.no_input_schema": "inputSchema не объявлена; перед вызовом проверьте документацию сервиса или используйте /mcptool.",
"ai_settings.mcp_server.tool_schema_summary.minimal_arguments_example": "Минимальный пример arguments:",
"ai_settings.mcp_server.tool_schema_summary.more_parameters": "Еще {{count}} параметров; используйте /mcptool, чтобы посмотреть полную schema",
"ai_settings.mcp_server.remote_quick_start.default_agent_name": "Удаленный Agent",
"ai_settings.mcp_server.remote_quick_start.title": "Быстрая настройка Remote MCP для {{displayName}}",
"ai_settings.mcp_server.remote_quick_start.description": "Эти фрагменты предназначены для облачных Agent, сценариев без GUI/CLI и Windows GoNavi. В облаке сохраняются только MCP URL и Bearer Token, а не учетные данные базы данных; schema-only по умолчанию открывает только структурные tools.",
"ai_settings.mcp_server.remote_quick_start.badge.required": "Обязательно",
"ai_settings.mcp_server.remote_quick_start.badge.optional": "Необязательно",
"ai_settings.mcp_server.remote_quick_start.fill_prefix": "Заполнить: ",
"ai_settings.mcp_server.remote_quick_start.example_prefix": "Пример: ",
"ai_settings.mcp_server.remote_quick_start.avoid_prefix": "Избегать: ",
"ai_settings.mcp_server.remote_quick_start.card.cloud_agent": "Настроить в облачном Agent",
"ai_settings.mcp_server.remote_quick_start.card.cli_config": "Создать конфигурацию без GUI / через CLI",
"ai_settings.mcp_server.remote_quick_start.card.cli_config_note": "Создает удаленную MCP-конфигурацию, которую можно вставить в {{displayName}}, не читая и не выводя пароли баз данных.",
"ai_settings.mcp_server.remote_quick_start.card.windows_launch": "Запустить GoNavi MCP HTTP в Windows",
"ai_settings.mcp_server.remote_quick_start.card.standalone_binary": "Отдельный бинарный файл: {{command}}",
"ai_settings.mcp_server.remote_quick_start.section.verification": "Порядок проверки",
"ai_settings.mcp_server.remote_quick_start.section.security": "Граница безопасности",
"ai_settings.mcp_server.remote_quick_start.parameter.public_url.title": "Публичный/туннельный URL",
"ai_settings.mcp_server.remote_quick_start.parameter.public_url.fill": "Укажите адрес Streamable HTTP MCP, доступный облачному Agent; обычно он заканчивается на /mcp.",
"ai_settings.mcp_server.remote_quick_start.parameter.public_url.avoid": "Не используйте локальный адрес Windows 127.0.0.1; облачный Linux не сможет к нему обратиться.",
"ai_settings.mcp_server.remote_quick_start.parameter.bearer_token.title": "Bearer Token",
"ai_settings.mcp_server.remote_quick_start.parameter.bearer_token.fill": "Укажите длинный случайный token; команда запуска Windows и конфигурация облачного Agent должны совпадать.",
"ai_settings.mcp_server.remote_quick_start.parameter.bearer_token.avoid": "Не используйте пустой или короткий token и не помещайте сюда пароль базы данных.",
"ai_settings.mcp_server.remote_quick_start.parameter.local_addr.title": "Локальный адрес прослушивания",
"ai_settings.mcp_server.remote_quick_start.parameter.local_addr.fill": "Windows GoNavi HTTP MCP по умолчанию слушает 127.0.0.1:8765, а затем передается через туннель или reverse proxy.",
"ai_settings.mcp_server.remote_quick_start.parameter.local_addr.avoid": "Без изоляции шлюзом не привязывайте напрямую к 0.0.0.0 и не открывайте в публичную сеть.",
"ai_settings.mcp_server.remote_quick_start.parameter.path.title": "Путь MCP",
"ai_settings.mcp_server.remote_quick_start.parameter.path.fill": "Сохраняйте одинаковый путь в локальной команде запуска, туннельном URL и конфигурации облачного Agent.",
"ai_settings.mcp_server.remote_quick_start.parameter.path.avoid": "Не используйте /mcp в одном месте и /api/mcp в другом; разные пути приведут к 404.",
"ai_settings.mcp_server.remote_quick_start.parameter.server_id.title": "ID сервиса",
"ai_settings.mcp_server.remote_quick_start.parameter.server_id.fill": "Имя этой MCP-службы для облачного Agent; значение gonavi подходит по умолчанию.",
"ai_settings.mcp_server.remote_quick_start.parameter.server_id.avoid": "Не переименовывайте часто, иначе существующие ссылки Agent на tools могут сломаться.",
"ai_settings.mcp_server.remote_quick_start.verification.healthz": "Сначала в Windows откройте http://127.0.0.1:8765/healthz, чтобы убедиться, что служба GoNavi MCP HTTP запущена.",
"ai_settings.mcp_server.remote_quick_start.verification.configure_agent": "Настройте Streamable HTTP MCP в {{displayName}} и укажите URL на /mcp адрес после туннеля или reverse proxy.",
"ai_settings.mcp_server.remote_quick_start.verification.inspect_schema": "Сначала вызовите get_connections, чтобы получить connectionId, затем читайте get_databases / get_tables / get_columns.",
"ai_settings.mcp_server.remote_quick_start.security.credentials_stay_local": "Учетные записи и пароли баз данных остаются в Windows GoNavi; не записывайте пароли баз данных в эту конфигурацию.",
"ai_settings.mcp_server.remote_quick_start.security.schema_only": "--schema-only по умолчанию не регистрирует execute_sql, поэтому удаленный Agent получает только tools для структуры.",
"ai_settings.mcp_server.remote_quick_start.security.token_required": "HTTP MCP должен использовать случайный Bearer Token и находиться за HTTPS, частной сетью или контролируемым туннелем.",
"ai_settings.mcp_server.remote_quick_start.security.execute_sql": "Если убрать --schema-only и открыть execute_sql, по-прежнему действуют ограничения безопасности GoNavi AI, а операции записи должны явно передавать allowMutating=true.",
"ai_settings.mcp_server.remote_quick_start.guide.title": "Руководство по удаленному доступу GoNavi MCP - {{displayName}}",
"ai_settings.mcp_server.remote_quick_start.guide.goal_heading": "Цель:",
"ai_settings.mcp_server.remote_quick_start.guide.goal.credentials_stay_local": "Подключения к базам данных, учетные записи и пароли остаются в Windows GoNavi. Облачному Agent не нужно хранить пароли баз данных.",
"ai_settings.mcp_server.remote_quick_start.guide.goal.tools_only": "Облачный Agent читает только результаты get_connections/get_databases/get_tables/get_columns/get_table_ddl через MCP tools.",
"ai_settings.mcp_server.remote_quick_start.guide.goal.schema_only": "Удаленный доступ по умолчанию использует режим schema-only и не регистрирует execute_sql, что подходит для выдачи OpenClaw/Hermans только доступа к структуре схемы.",
"ai_settings.mcp_server.remote_quick_start.guide.boundary_heading": "Текущая граница:",
"ai_settings.mcp_server.remote_quick_start.guide.boundary.local_stdio": "Локальная точка входа встроенного GoNavi MCP — stdio, она подходит для клиентов вроде Claude Code / Codex, работающих на одной машине с GoNavi.",
"ai_settings.mcp_server.remote_quick_start.guide.boundary.remote_cloud": "Если OpenClaw/Hermans работает в облачном Linux, он не может напрямую использовать локальную Windows stdio-команду; запустите GoNavi Streamable HTTP на Windows и дайте облачному Agent доступ через туннель или reverse proxy.",
"ai_settings.mcp_server.remote_quick_start.guide.access_heading": "Рекомендуемый способ доступа:",
"ai_settings.mcp_server.remote_quick_start.guide.step.keep_windows_accessible": "1. Держите GoNavi доступным на Windows, а чтение сохраненных подключений и системных учетных данных оставьте GoNavi.",
"ai_settings.mcp_server.remote_quick_start.guide.step.run_command": "2. Выполните на Windows или в доверенной внутренней сети: {{launchCommand}}.",
"ai_settings.mcp_server.remote_quick_start.guide.step.configure_remote_server": "3. Добавьте remote MCP Server в {{displayName}}, выберите transport Streamable HTTP, укажите URL на /mcp после туннеля или reverse proxy и задайте Authorization: Bearer <random-token>.",
"ai_settings.mcp_server.remote_quick_start.guide.step.inspect_schema": "4. Сначала вызовите get_connections, чтобы получить connectionId, затем вызывайте инструменты схемы; не записывайте database host/user/password в конфигурацию облачного Agent.",
"ai_settings.mcp_server.remote_quick_start.guide.config_heading": "Фрагмент конфигурации для копирования (для Agents с поддержкой mcpServers JSON):",
"ai_settings.mcp_server.remote_quick_start.guide.config_command_heading": "Команда генерации конфигурации без GUI / через CLI:",
"ai_settings.mcp_server.remote_quick_start.guide.launch_command_heading": "Команда запуска CLI / службы:",
"ai_settings.mcp_server.remote_quick_start.guide.env_fallback": "Или задайте переменную окружения GONAVI_MCP_HTTP_TOKEN=<random-token>, затем запустите {{standaloneCommand}}",
"ai_settings.mcp_server.remote_quick_start.guide.execute_sql_note": "Если явно требуется удаленное выполнение SQL, уберите --schema-only; execute_sql все равно остается под контролем безопасности GoNavi AI, а записи должны явно передавать allowMutating=true.",
"ai_settings.mcp_server.remote_quick_start.guide.current_hint": "Текущая подсказка: {{message}}",
"ai_chat.system.inspection_guidance.inspect_ai_runtime": "Если пользователь спрашивает про текущую модель, уровень безопасности, доступные tools или включенные Skills / MCP tools, сначала вызови inspect_ai_runtime и прочитай реальное состояние выполнения, не отвечай по памяти или предположениям.",
"ai_chat.system.inspection_guidance.inspect_ai_safety": "Если пользователь спрашивает, почему запись запрещена, включен ли read-only режим, можно ли выполнять DDL или нужно ли передавать allowMutating, сначала вызови inspect_ai_safety и прочитай реальные границы безопасности.",
"ai_chat.system.inspection_guidance.inspect_ai_context": "Если пользователь спрашивает про текущий AI context, связанные таблицы или схемы таблиц в сессии, сначала вызови inspect_ai_context и прочитай подключенный контекст схем.",
"ai_chat.system.inspection_guidance.inspect_app_health": "Если пользователь сообщает о нестабильном AI, просит общую проверку, спрашивает про явные проблемы GoNavi AI или хочет вместе проверить connection, MCP, logs и reply bubbles, сначала вызови inspect_app_health для общего обзора.",
"ai_chat.system.inspection_guidance.inspect_ai_support_bundle": "Если пользователь просит экспортировать материалы для диагностики или готовит AI, MCP, connection, logs и context проблему для разработки, сначала вызови inspect_ai_support_bundle, создай support bundle без секретов и паролей БД, затем углубляйся по warnings и nextActions.",
"ai_chat.system.inspection_guidance.inspect_ai_tool_catalog": "Если вопрос затрагивает несколько функций, непонятно какой встроенный tool вызвать первым, или пользователь спрашивает про список tools, параметры и выбор probe, сначала вызови inspect_ai_tool_catalog и прочитай реальный каталог, workflow и подсказки параметров.",
"ai_chat.system.inspection_guidance.inspect_ai_setup_health": "Если пользователь спрашивает, почему AI неудобен, просит health check текущей AI конфигурации или спрашивает про явные проблемы, сначала вызови inspect_ai_setup_health для общего состояния, затем при необходимости проверь providers, readiness, MCP или guidance.",
"ai_chat.system.inspection_guidance.inspect_ai_chat_readiness": "Если пользователь спрашивает, почему отправка недоступна, чего не хватает текущему AI chat или готова ли область ввода, сначала вызови inspect_ai_chat_readiness и прочитай реальное состояние перед отправкой.",
"ai_chat.system.inspection_guidance.inspect_ai_upstream_logs": "Если пользователь упоминает upstream AI requests, request body, requestId, model payload, не сработавшие tools или детали upstream error, сначала вызови inspect_ai_upstream_logs и прочитай очищенный request log и summary структуры payload.",
"ai_chat.system.inspection_guidance.inspect_ai_providers": "Если пользователь спрашивает, какие providers настроены, почему список моделей пуст, настроен ли API Key или почему отправка недоступна/модель не выбрана, сначала вызови inspect_ai_providers и прочитай реальную provider конфигурацию.",
"ai_chat.system.inspection_guidance.inspect_mcp_setup": "Если пользователь спрашивает про MCP configuration, подключены ли Claude/Codex к GoNavi MCP, почему внешний клиент не может использовать его или какие MCP services включены, сначала вызови inspect_mcp_setup и прочитай реальную настройку и состояние доступа внешних клиентов.",
"ai_chat.system.inspection_guidance.inspect_mcp_runtime_failures": "Если пользователь упоминает failed new MCP test, 0 discovered tools, MCP tool-call failures, stdio disconnects, Docker MCP exits или HTTP MCP startup failures, сначала вызови inspect_mcp_runtime_failures и прочитай реальные runtime failure logs и service discovery state.",
"ai_chat.system.inspection_guidance.inspect_mcp_authoring_guide": "Если пользователь не знает, как заполнить command/args/env/timeout для нового MCP server, просит node/uvx/python template или спрашивает, почему startup command нельзя ввести одной строкой, сначала вызови inspect_mcp_authoring_guide; если есть draft, вызови inspect_mcp_draft.",
"ai_chat.system.inspection_guidance.inspect_mcp_draft": "Если пользователь вставляет MCP README startup command, draft command/args/env/timeout или спрашивает, как заполнить MCP command в GoNavi, сначала вызови inspect_mcp_draft, чтобы получить split, launch preview, suggestedServerSeed, configuration errors/warnings и nextActions.",
"ai_chat.system.inspection_guidance.inspect_mcp_tool_schema": "Если пользователь спрашивает, как заполнить параметры MCP tool, сообщает об argument error или просит написать arguments JSON, сначала вызови inspect_mcp_tool_schema и прочитай реальный inputSchema; если alias неизвестен, сначала вызови inspect_mcp_setup.",
"ai_chat.system.inspection_guidance.inspect_ai_guidance": "Если пользователь спрашивает, какие prompts сейчас подключены, какие Skills активны, почему ты ответил именно так или какой текущий database/JVM prompt, сначала вызови inspect_ai_guidance и прочитай реальные prompt и Skill настройки.",
"ai_chat.system.inspection_guidance.inspect_shortcuts": "Если пользователь спрашивает про shortcuts, различия Win/Mac, комбинации result-area / AI panel / SQL execution или менялись ли defaults, сначала вызови inspect_shortcuts и прочитай реальную shortcut configuration и различия платформ.",
"ai_chat.system.inspection_guidance.inspect_recent_connection_failures": "Если пользователь спрашивает, почему connection fails, упоминает cooldown, validation failure, SSH tunnel issues или multiStatements / parameter compatibility exceptions, сначала вызови inspect_recent_connection_failures и прочитай реальное summary отказов подключения.",
"ai_chat.system.inspection_guidance.inspect_app_logs": "Если пользователь упоминает gonavi.log, recent logs, startup errors, MCP startup failures или database connection failures, сначала вызови inspect_app_logs и прочитай реальный tail application log; при необходимости фильтруй по ключевым словам.",
"ai_chat.system.inspection_guidance.inspect_ai_last_render_error": "Если пользователь сообщает, что AI message пустое, bubble не отрендерился или локальный message block error был изолирован без падения всей панели, сначала вызови inspect_ai_last_render_error и прочитай последнюю изолированную frontend render exception.",
"ai_chat.system.inspection_guidance.inspect_ai_message_flow": "Если пользователь сообщает, что AI reply split into multiple bubbles, модель не продолжила после tool calls, stream state неверный или один turn не добавился в тот же bubble, сначала вызови inspect_ai_message_flow и прочитай реальную message structure и unresolved tool calls.",
"ai_chat.system.inspection_guidance.inspect_ai_context_budget": "Если пользователь упоминает slow AI, oversized context, слишком много table schemas, длинные tool results, нестабильные ответы или нужен sizing context перед сложной задачей, сначала вызови inspect_ai_context_budget и прочитай size risks.",
"ai_chat.system.inspection_guidance.inspect_codebase_hotspots": "Если пользователь упоминает multi-thousand-line files, продолжение split large components, какой файл разделить дальше или риск AI/MCP/UI changes, сначала вызови inspect_codebase_hotspots и прочитай hotspots, suggested slices и test targets.",
"ai_chat.system.inspection_guidance.inspect_current_connection": "Если пользователь спрашивает про current connection, current data source, к какой DB/address подключено или используется ли SSH/proxy, сначала вызови inspect_current_connection и прочитай active connection summary.",
"ai_chat.system.inspection_guidance.inspect_connection_capabilities": "Если пользователь спрашивает, почему create/delete/rename database недоступны, почему result editing недоступен или какие frontend actions поддерживает источник данных, сначала вызови inspect_connection_capabilities и прочитай реальную capability matrix.",
"ai_chat.system.inspection_guidance.inspect_saved_connections": "Если пользователь спрашивает, какие connections сохранены локально, хочет найти MySQL/PostgreSQL/Redis connection или какой connection использует SSH/proxy, сначала вызови inspect_saved_connections и прочитай реальный local connection list.",
"ai_chat.system.inspection_guidance.inspect_redis_topology": "Если пользователь упоминает Redis Sentinel/Cluster, Sentinel master, поведение Redis Cluster multi-database, Redis DB switching failures или как заполнить multiple Redis nodes, сначала вызови inspect_redis_topology и прочитай реальную topology, nodes, authentication state и risk hints.",
"ai_chat.system.inspection_guidance.inspect_external_sql_directories": "Если пользователь упоминает external SQL directories, scripts in a directory, расположение SQL file или откуда открыт текущий SQL file, сначала вызови inspect_external_sql_directories и прочитай реальные external SQL directory assets.",
"ai_chat.system.inspection_guidance.inspect_external_sql_file": "Если пользователь передает external SQL file path или просит inspect report.sql/job.sql in a directory, сначала вызови inspect_external_sql_file и прочитай реальное содержимое файла; если файл открыт в editor, совмести с inspect_active_tab.",
"ai_chat.system.inspection_guidance.inspect_recent_sql_activity": "Если пользователь спрашивает, что недавно выполнялось, были ли данные удалены, было больше reads или writes, или в какой database было больше errors, сначала вызови inspect_recent_sql_activity и прочитай recent SQL activity summary.",
"ai_chat.system.inspection_guidance.inspect_sql_editor_transaction": "Если пользователь спрашивает про SQL editor manual commit/autocommit, uncommitted transactions, будет ли DML auto-commit или transaction semantics, сначала вызови inspect_sql_editor_transaction и прочитай реальные commit settings и pending transactions.",
"ai_chat.system.inspection_guidance.inspect_sql_risk": "Если пользователь просит execute, delete, update, run DDL, run bulk SQL или спрашивает, можно ли выполнить SQL / опасен ли он, сначала вызови inspect_sql_risk и проверь statement count, write/DDL risk, WHERE conditions и safety policy; при high risk сначала объясни и запроси confirmation.",
"ai_chat.system.inspection_guidance.inspect_saved_queries": "Если пользователь упоминает saved queries, SQL history, previous statement или хочет найти earlier script, сначала вызови inspect_saved_queries и прочитай локально сохраненные queries, затем реши, нужно ли verify fields или reuse SQL.",
"ai_chat.system.inspection_guidance.inspect_ai_sessions": "Если пользователь упоминает previous AI conversation, prior discussion или спрашивает, какая recent session касалась этой проблемы, сначала вызови inspect_ai_sessions и прочитай local AI session list и previews.",
"ai_chat.system.inspection_guidance.inspect_sql_snippets": "Если пользователь упоминает SQL snippets, snippet templates, template prefixes или common templates, сначала вызови inspect_sql_snippets и прочитай local SQL snippet library, не выдумывай существующие templates.",
"ai_chat.system.context.custom_prompt.global": "Пользователь добавил дополнительный пользовательский prompt для глобального контекста. Следуй ему, если он не противоречит правилам безопасности и фактам:\n{{content}}",
"ai_chat.system.context.custom_prompt.database": "Пользователь добавил дополнительный пользовательский prompt для сеанса базы данных. Следуй ему, если он не противоречит правилам безопасности и фактам:\n{{content}}",
"ai_chat.system.context.custom_prompt.jvm": "Пользователь добавил дополнительный пользовательский prompt для анализа JVM-ресурсов. Следуй ему, если он не противоречит правилам безопасности и фактам:\n{{content}}",
"ai_chat.system.context.custom_prompt.jvm_diagnostic": "Пользователь добавил дополнительный пользовательский prompt для JVM-диагностики. Следуй ему, если он не противоречит правилам безопасности и фактам:\n{{content}}",
"ai_chat.system.context.skill_prompt.required_tools": "\nЗависимые tools: {{requiredTools}}",
"ai_chat.system.context.skill_prompt": "В этом ответе активен Skill \"{{skillName}}\" ({{skillDescription}}). Соблюдай его ограничения и рабочий процесс:{{requiredTools}}\n{{content}}",
"ai_chat.system.context.skill_prompt_without_description": "В этом ответе активен Skill \"{{skillName}}\". Соблюдай его ограничения и рабочий процесс:{{requiredTools}}\n{{content}}",
"ai_chat.system.context.database_with_schema": "Ты профессиональный ассистент по базам данных. Тип базы данных текущего подключения: {{dbType}}. Генерируй SQL в диалекте {{dbType}}. Ниже приведена связанная пользователем структура таблиц; учитывай ее в первую очередь:\n\n{{ddlChunks}}",
"ai_chat.system.context.database_with_target": "Ты профессиональный ассистент по базам данных. Тип базы данных текущего подключения: {{dbType}}, имя текущей базы данных: {{dbName}}. Если пользователю нужна конкретная таблица или сведения о текущей базе, вызови предоставленный tool get_tables и получи информацию о таблицах.",
"ai_chat.system.context.no_connections": "нет подключений",
"ai_chat.system.context.database_without_context": "Ты профессиональный ассистент по базам данных. Сейчас пользователь не выбрал в интерфейсе конкретную базу данных или таблицу в качестве контекста.\n\nВажные правила:\n1. Если нужно помочь пользователю найти целевую таблицу, никогда не угадывай имя таблицы. Вызывай tools, чтобы получить реальные данные.\n2. Полный процесс: get_connections -> get_databases -> get_tables -> get_columns -> сгенерировать SQL. Нельзя пропускать шаги.\n3. Приоритет подключений важен. После получения списка подключений проверяй их в таком порядке:\n - Первый приоритет: host равен localhost или 127.0.0.1, либо имя подключения указывает на локальную среду.\n - Второй приоритет: name или host указывает на development/local среду, либо host является частным IP, например 10.x, 192.168.x или 172.16-31.x.\n - Третий приоритет: другие подключения, например test или production.\n Если целевая таблица найдена в более приоритетном подключении, используй это подключение и не ищи в менее приоритетных.\n4. Если целевая таблица не найдена в текущей базе, продолжай проверять другие базы, не сдавайся.\n5. Остановиться можно только когда проверены все возможные базы или целевая таблица явно найдена.\n6. На обычные вопросы, не связанные с запросами к базе данных, отвечай обычно.\n\nПравила генерации SQL:\n7. Если пользователь упоминает текущую вкладку, текущий SQL, текущий редактор или эту инструкцию, но не вставляет содержимое, сначала вызови inspect_active_tab и прочитай контекст активной вкладки, а не угадывай открытое содержимое.\n8. Если пользователь спрашивает, какие вкладки открыты или какие запросы есть в workspace, сначала вызови inspect_workspace_tabs, затем реши, какую вкладку изучать глубже.\n9. Точность полей является абсолютным правилом. Перед генерацией SQL вызови get_columns и получи реальный список полей целевой таблицы. Каждое имя поля в SQL должно точно совпадать со значением field из get_columns, включая регистр. Не составляй, не сокращай и не придумывай имена полей.\n10. Если пользователь спрашивает об оптимизации индексов, связях join, побочных эффектах triggers, constraints или деталях DDL, после get_columns при необходимости вызови get_indexes, get_foreign_keys, get_triggers и get_table_ddl, затем дай вывод.\n11. При генерации SQL не используй квалифицированный префикс формата \"database.table\"; пиши только имя таблицы.\n12. При отчете имя/ID подключения и имя базы данных должны происходить из одних и тех же фактических параметров вызова get_tables. Не смешивай connectionId из одного подключения с dbName из другого.\n13. Если несколько баз имеют похожие имена, ясно скажи пользователю, в какой базе находится целевая таблица.\n14. Первая строка каждого SQL code block должна содержать комментарий объявления контекста строго в таком формате: -- @context connectionId=<connectionId> dbName=<dbName>. connectionId и dbName должны быть взяты из одних и тех же параметров успешного вызова get_tables. Пример:\n```sql\n-- @context connectionId=1770778676549 dbName=mkefu_test\nSELECT * FROM users WHERE status = 1;\n```\n\nСуществующие подключения: [{{connList}}]",
"ai_chat.system.context.jvm_diagnostic_policy.read_only": "По умолчанию рассуждай как в read-only диагностике: генерируй только observe, trace и troubleshooting команды и никогда не предполагай, что что-то уже выполнено.",
"ai_chat.system.context.jvm_diagnostic_policy.writable": "Диагностические команды можно генерировать, но сначала дай план, а пользователь решит, выполнять ли его.",
"ai_chat.system.context.permission.allowed": "разрешено",
"ai_chat.system.context.permission.denied": "запрещено",
"ai_chat.system.context.jvm_diagnostic_prompt": "Ты JVM-диагностический ассистент GoNavi. Текущая вкладка — Arthas-совместимый диагностический workspace. Цель — вывести структурированный диагностический план, который можно вернуть в диагностическую консоль.\n\nТекущее подключение: {{connectionName}}\nЦелевой host: {{host}}\nДиагностический transport: {{transport}}\nСреда выполнения: {{environment}}\nПолитика подключения: {{connectionPolicy}}\nПрава команд: observe={{observeAllowed}}, trace={{traceAllowed}}, mutating={{mutatingAllowed}}\n\nПравила ответа:\n1. Можно сначала дать короткий анализ, но ответ должен содержать ровно один ```json code block.\n2. JSON fields строго ограничены intent, transport, command, riskLevel, reason и expectedSignals.\n3. transport должен быть текущим значением {{transport}}; не придумывай другой transport.\n4. command должна быть одной диагностической командой без shell prompt, склеенных строк, нескольких команд или code fence.\n5. riskLevel может быть только low, medium или high.\n6. expectedSignals должен быть массивом строк, описывающих сигналы для наблюдения после выполнения.\n7. Если права не разрешают класс операций, не выводи команды этого класса; если запрос нельзя выполнить, прямо укажи ограничение.",
"ai_chat.system.context.jvm_runtime_policy.read_only": "Это read-only подключение. Только анализируй и генерируй планы изменений; никогда не предполагай, что запись уже выполнена.",
"ai_chat.system.context.jvm_runtime_policy.writable": "Это writable подключение, но каждое изменение должно сначала создать preview и дождаться подтверждения человеком.",
"ai_chat.system.context.jvm_runtime_resource_path": "Текущий resource path: {{resourcePath}}",
"ai_chat.system.context.jvm_runtime_resource_path_unselected": "Конкретный resource path сейчас не выбран.",
"ai_chat.system.context.jvm_runtime_prompt": "Ты ассистент GoNavi для анализа JVM runtime. Текущий контекст — не SQL, а workspace JVM-ресурсов.\n\nТекущее подключение: {{connectionName}}\nЦелевой host: {{host}}\nProvider mode: {{providerMode}}\nСреда выполнения: {{environment}}\nПолитика подключения: {{connectionPolicy}}\n{{resourcePathLine}}\n\nПравила ответа:\n1. Можно объяснять структуру ресурсов, риски, предложения по изменениям и rollback-рекомендации.\n2. Если пользователь просит JVM change plan, выведи ровно один ```json code block и строго ограничь JSON fields: targetType, selector, action, payload, reason.\n3. Для action в первую очередь используй supportedActions, объявленные в текущем resource snapshot или metadata. Если они не объявлены, осторожно выводи action из snapshot.\n4. Для selector.resourcePath в первую очередь используй текущий resource path. Если path неизвестен, прямо скажи, что точное указание цели недоступно, и не придумывай path.\n5. payload может использовать только {\"format\":\"json\",\"value\":{...}} или {\"format\":\"text\",\"value\":\"...\"}; не выводи scripts, commands или bare values.\n6. Не выводи scripts, commands или формулировки вроде \"already executed successfully\".",
"ai_settings.mcp_server.argument_hints.command_field_warning": "В поле команды запуска все еще есть {{count}} аргументов: {{args}}. Оставьте в command только {{command}}, а остальные перенесите в аргументы команды.",
"ai_settings.mcp_server.argument_hints.hidden_value": "<скрыто>",
"ai_settings.mcp_server.argument_hints.possible_secret_hidden": "<возможный секрет скрыт>",
"ai_settings.mcp_server.argument_hints.next_action.add_step": "Добавьте {{label}}, пример: {{example}}",
"ai_settings.mcp_server.argument_hints.generic.label": "Нераспознанный аргумент",
"ai_settings.mcp_server.argument_hints.generic.detail": "GoNavi не может вывести бизнес-смысл --{{flag}} по имени аргумента, но передаст его процессу MCP в текущем порядке.",
"ai_settings.mcp_server.argument_hints.generic.value_hint": "Проверьте в MCP README, нужен ли этому аргументу параметр; если нужен, укажите значение следующим тегом аргумента или используйте --name=value.",
"ai_settings.mcp_server.argument_hints.detail.value_label": "Значение {{label}}",
"ai_settings.mcp_server.argument_hints.detail.sensitive_value_detail": "Это чувствительное значение предыдущего аргумента {{argument}}; в подсказке оно маскируется.",
"ai_settings.mcp_server.argument_hints.detail.value_detail": "Это значение предыдущего аргумента {{argument}}.",
"ai_settings.mcp_server.argument_hints.profile.npm.title": "Порядок аргументов npx / npm",
"ai_settings.mcp_server.argument_hints.profile.npm.summary": "MCP-серверам npm обычно нужны отдельные аргументы для подтверждения, имени пакета и --stdio.",
"ai_settings.mcp_server.argument_hints.profile.npm.order": "Рекомендуемый порядок: -y -> пакет -> --stdio -> аргументы сервиса",
"ai_settings.mcp_server.argument_hints.profile.node.title": "Порядок аргументов Node-скрипта",
"ai_settings.mcp_server.argument_hints.profile.node.summary": "Для Node-пускателей в command оставьте только node/bun/deno; путь скрипта и --stdio укажите в args.",
"ai_settings.mcp_server.argument_hints.profile.node.order": "Рекомендуемый порядок: путь скрипта -> --stdio -> аргументы сервиса",
"ai_settings.mcp_server.argument_hints.profile.python.title": "Порядок аргументов Python",
"ai_settings.mcp_server.argument_hints.profile.python.summary": "MCP-серверы Python часто используют python -m module_name; -m и имя модуля должны быть отдельными аргументами.",
"ai_settings.mcp_server.argument_hints.profile.python.order": "Рекомендуемый порядок: -m -> имя модуля -> --stdio",
"ai_settings.mcp_server.argument_hints.profile.uvx.title": "Порядок аргументов uvx",
"ai_settings.mcp_server.argument_hints.profile.uvx.summary": "MCP-серверы uvx обычно сначала указывают пакет, затем добавляют stdio или конфигурационные аргументы из README.",
"ai_settings.mcp_server.argument_hints.profile.uvx.order": "Рекомендуемый порядок: пакет -> --stdio -> аргументы сервиса",
"ai_settings.mcp_server.argument_hints.profile.docker.title": "Порядок аргументов Docker MCP",
"ai_settings.mcp_server.argument_hints.profile.docker.summary": "Для Docker в command оставьте только docker; run, -i, --rm, имя образа и аргументы контейнера укажите в args.",
"ai_settings.mcp_server.argument_hints.profile.docker.order": "Рекомендуемый порядок: run -> --rm -> -i -> -e KEY=VALUE -> имя образа -> аргументы сервиса",
"ai_settings.mcp_server.argument_hints.profile.executable.title": "Подсказки для локального исполняемого файла",
"ai_settings.mcp_server.argument_hints.profile.executable.summary": "Для собственных или скомпилированных MCP-серверов следуйте README; GoNavi передает аргументы без изменений в порядке тегов.",
"ai_settings.mcp_server.argument_hints.profile.executable.order": "Обычный порядок: stdio/--stdio -> файл конфигурации или аргумент сервиса",
"ai_settings.mcp_server.argument_hints.step.yes.label": "Пропустить подтверждение установки",
"ai_settings.mcp_server.argument_hints.step.yes.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.package.label": "Имя пакета MCP",
"ai_settings.mcp_server.argument_hints.step.package.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.stdio.label": "Аргумент stdio",
"ai_settings.mcp_server.argument_hints.step.stdio.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.scope.label": "Разрешенный каталог или аргумент сервиса",
"ai_settings.mcp_server.argument_hints.step.scope.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.script.label": "Путь скрипта",
"ai_settings.mcp_server.argument_hints.step.script.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.business.label": "Аргумент сервиса",
"ai_settings.mcp_server.argument_hints.step.business.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.module-flag.label": "Флаг модуля или скрипт",
"ai_settings.mcp_server.argument_hints.step.module-flag.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.module-name.label": "Имя модуля",
"ai_settings.mcp_server.argument_hints.step.module-name.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.run.label": "Подкоманда run",
"ai_settings.mcp_server.argument_hints.step.run.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.interactive.label": "Сохранить стандартный ввод",
"ai_settings.mcp_server.argument_hints.step.interactive.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.cleanup.label": "Удалить контейнер после завершения",
"ai_settings.mcp_server.argument_hints.step.cleanup.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.image.label": "Имя образа",
"ai_settings.mcp_server.argument_hints.step.image.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.step.container-env.label": "Переменная окружения контейнера",
"ai_settings.mcp_server.argument_hints.step.container-env.detail": "Следуйте примеру запуска из README и укажите этот аргумент отдельным тегом.",
"ai_settings.mcp_server.argument_hints.business.api_key.label": "API-ключ",
"ai_settings.mcp_server.argument_hints.business.api_key.detail": "Передавайте данные аутентификации только если README требует аргумент команды; предпочитайте переменные окружения.",
"ai_settings.mcp_server.argument_hints.business.api_key.value_hint": "Введите реальное значение локально; не вставляйте его в чат или скриншоты.",
"ai_settings.mcp_server.argument_hints.business.token.label": "Токен",
"ai_settings.mcp_server.argument_hints.business.token.detail": "Передавайте данные аутентификации только если README требует аргумент команды; предпочитайте переменные окружения.",
"ai_settings.mcp_server.argument_hints.business.token.value_hint": "Введите реальное значение локально; не вставляйте его в чат или скриншоты.",
"ai_settings.mcp_server.argument_hints.business.access_token.label": "Токен доступа",
"ai_settings.mcp_server.argument_hints.business.access_token.detail": "Передавайте данные аутентификации только если README требует аргумент команды; предпочитайте переменные окружения.",
"ai_settings.mcp_server.argument_hints.business.access_token.value_hint": "Введите реальное значение локально; не вставляйте его в чат или скриншоты.",
"ai_settings.mcp_server.argument_hints.business.password.label": "Пароль",
"ai_settings.mcp_server.argument_hints.business.password.detail": "Передавайте данные аутентификации только если README требует аргумент команды; предпочитайте переменные окружения.",
"ai_settings.mcp_server.argument_hints.business.password.value_hint": "Введите реальное значение локально; не вставляйте его в чат или скриншоты.",
"ai_settings.mcp_server.argument_hints.business.secret.label": "Секрет",
"ai_settings.mcp_server.argument_hints.business.secret.detail": "Передавайте данные аутентификации только если README требует аргумент команды; предпочитайте переменные окружения.",
"ai_settings.mcp_server.argument_hints.business.secret.value_hint": "Введите реальное значение локально; не вставляйте его в чат или скриншоты.",
"ai_settings.mcp_server.argument_hints.business.config.label": "Файл конфигурации",
"ai_settings.mcp_server.argument_hints.business.config.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.config.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.config_file.label": "Файл конфигурации",
"ai_settings.mcp_server.argument_hints.business.config_file.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.config_file.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.short_config.label": "Файл конфигурации",
"ai_settings.mcp_server.argument_hints.business.short_config.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.short_config.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.directory.label": "Разрешенный каталог",
"ai_settings.mcp_server.argument_hints.business.directory.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.directory.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.dir.label": "Каталог",
"ai_settings.mcp_server.argument_hints.business.dir.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.dir.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.root.label": "Корневой каталог",
"ai_settings.mcp_server.argument_hints.business.root.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.root.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.workspace.label": "Каталог рабочей области",
"ai_settings.mcp_server.argument_hints.business.workspace.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.workspace.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.path.label": "Путь",
"ai_settings.mcp_server.argument_hints.business.path.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.path.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.url.label": "URL сервиса",
"ai_settings.mcp_server.argument_hints.business.url.detail": "Задает адрес сервиса или точку входа API, нужную MCP-сервису.",
"ai_settings.mcp_server.argument_hints.business.url.value_hint": "Введите полный адрес и не встраивайте секреты в URL.",
"ai_settings.mcp_server.argument_hints.business.endpoint.label": "Конечная точка",
"ai_settings.mcp_server.argument_hints.business.endpoint.detail": "Задает адрес сервиса или точку входа API, нужную MCP-сервису.",
"ai_settings.mcp_server.argument_hints.business.endpoint.value_hint": "Введите полный адрес и не встраивайте секреты в URL.",
"ai_settings.mcp_server.argument_hints.business.base_url.label": "Базовый URL",
"ai_settings.mcp_server.argument_hints.business.base_url.detail": "Задает адрес сервиса или точку входа API, нужную MCP-сервису.",
"ai_settings.mcp_server.argument_hints.business.base_url.value_hint": "Введите полный адрес и не встраивайте секреты в URL.",
"ai_settings.mcp_server.argument_hints.business.host.label": "Адрес хоста",
"ai_settings.mcp_server.argument_hints.business.host.detail": "Настраивает хост, порт или сетевой параметр MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.host.value_hint": "Используйте хост или порт из README.",
"ai_settings.mcp_server.argument_hints.business.port.label": "Порт",
"ai_settings.mcp_server.argument_hints.business.port.detail": "Настраивает хост, порт или сетевой параметр MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.port.value_hint": "Используйте хост или порт из README.",
"ai_settings.mcp_server.argument_hints.business.transport.label": "Режим транспорта",
"ai_settings.mcp_server.argument_hints.business.transport.detail": "Управляет транспортом, профилем, правами или режимом запуска MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.transport.value_hint": "Используйте значение перечисления или смысл флага из README.",
"ai_settings.mcp_server.argument_hints.business.mode.label": "Режим запуска",
"ai_settings.mcp_server.argument_hints.business.mode.detail": "Управляет транспортом, профилем, правами или режимом запуска MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.mode.value_hint": "Используйте значение перечисления или смысл флага из README.",
"ai_settings.mcp_server.argument_hints.business.profile.label": "Профиль",
"ai_settings.mcp_server.argument_hints.business.profile.detail": "Управляет транспортом, профилем, правами или режимом запуска MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.profile.value_hint": "Используйте значение перечисления или смысл флага из README.",
"ai_settings.mcp_server.argument_hints.business.read_only.label": "Режим только чтение",
"ai_settings.mcp_server.argument_hints.business.read_only.detail": "Управляет транспортом, профилем, правами или режимом запуска MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.read_only.value_hint": "Используйте значение перечисления или смысл флага из README.",
"ai_settings.mcp_server.argument_hints.business.readonly.label": "Режим только чтение",
"ai_settings.mcp_server.argument_hints.business.readonly.detail": "Управляет транспортом, профилем, правами или режимом запуска MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.readonly.value_hint": "Используйте значение перечисления или смысл флага из README.",
"ai_settings.mcp_server.argument_hints.business.headless.label": "Безголовый режим",
"ai_settings.mcp_server.argument_hints.business.headless.detail": "Управляет поведением запущенного процесса MCP во время выполнения.",
"ai_settings.mcp_server.argument_hints.business.headless.value_hint": "Обычно это флаг; проверьте, нужно ли дополнительное значение.",
"ai_settings.mcp_server.argument_hints.business.executable_path.label": "Путь к браузеру или исполняемому файлу",
"ai_settings.mcp_server.argument_hints.business.executable_path.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.executable_path.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.repo.label": "Путь к репозиторию",
"ai_settings.mcp_server.argument_hints.business.repo.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.repo.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.inferred_path.label": "Путь / конфигурация",
"ai_settings.mcp_server.argument_hints.business.inferred_path.detail": "Указывает локальный файл, каталог, репозиторий или исполняемый файл для MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.inferred_path.value_hint": "Используйте абсолютный локальный путь и минимально необходимую область доступа.",
"ai_settings.mcp_server.argument_hints.business.inferred_endpoint.label": "Адрес / конечная точка",
"ai_settings.mcp_server.argument_hints.business.inferred_endpoint.detail": "Задает адрес сервиса или точку входа API, нужную MCP-сервису.",
"ai_settings.mcp_server.argument_hints.business.inferred_endpoint.value_hint": "Введите полный адрес и не встраивайте секреты в URL.",
"ai_settings.mcp_server.argument_hints.business.inferred_mode.label": "Аргумент режима",
"ai_settings.mcp_server.argument_hints.business.inferred_mode.detail": "Управляет транспортом, профилем, правами или режимом запуска MCP-сервиса.",
"ai_settings.mcp_server.argument_hints.business.inferred_mode.value_hint": "Используйте значение перечисления или смысл флага из README.",
"ai_settings.mcp_server.argument_hints.detail.stdio.label": "Режим связи stdio",
"ai_settings.mcp_server.argument_hints.detail.stdio.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.stdio.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.skip_install_confirm.label": "Пропустить подтверждение установки",
"ai_settings.mcp_server.argument_hints.detail.skip_install_confirm.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.skip_install_confirm.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.python_module_flag.label": "Запуск модуля Python",
"ai_settings.mcp_server.argument_hints.detail.python_module_flag.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.python_module_flag.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.docker_run.label": "Подкоманда Docker run",
"ai_settings.mcp_server.argument_hints.detail.docker_run.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.docker_run.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.docker_interactive.label": "Сохранить стандартный ввод",
"ai_settings.mcp_server.argument_hints.detail.docker_interactive.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.docker_interactive.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.docker_cleanup.label": "Удалить контейнер после завершения",
"ai_settings.mcp_server.argument_hints.detail.docker_cleanup.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.docker_cleanup.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.docker_image_or_arg.label": "Образ Docker или аргумент контейнера",
"ai_settings.mcp_server.argument_hints.detail.docker_image_or_arg.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.docker_image_or_arg.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.npm_package_or_arg.label": "Пакет MCP или позиционный аргумент",
"ai_settings.mcp_server.argument_hints.detail.npm_package_or_arg.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.npm_package_or_arg.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.uvx_package_or_arg.label": "Пакет Python MCP или позиционный аргумент",
"ai_settings.mcp_server.argument_hints.detail.uvx_package_or_arg.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.uvx_package_or_arg.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.script_or_arg.label": "Скрипт или позиционный аргумент",
"ai_settings.mcp_server.argument_hints.detail.script_or_arg.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.script_or_arg.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.python_module_name.label": "Имя модуля Python",
"ai_settings.mcp_server.argument_hints.detail.python_module_name.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.python_module_name.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.python_script_or_arg.label": "Скрипт Python или позиционный аргумент",
"ai_settings.mcp_server.argument_hints.detail.python_script_or_arg.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.python_script_or_arg.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_settings.mcp_server.argument_hints.detail.positional.label": "Позиционный аргумент",
"ai_settings.mcp_server.argument_hints.detail.positional.detail": "Это значение передается процессу MCP как аргумент запуска. Проверьте README и текущий порядок.",
"ai_settings.mcp_server.argument_hints.detail.positional.value_hint": "Введите значение, соответствующее примеру из README.",
"ai_chat.builtin_tools.database.execute_sql.desc": "Execute a SQL query and return results",
"ai_chat.builtin_tools.database.execute_sql.detail": "Pass connectionId, dbName, and sql, then execute SQL on the target database and return results (up to 50 rows). Controlled by safety level; read-only mode only allows SELECT/SHOW/DESCRIBE.",
"ai_chat.builtin_tools.database.execute_sql.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.execute_sql.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.execute_sql.parameters.sql.description": "SQL statement to execute",
"ai_chat.builtin_tools.database.execute_sql.params": "connectionId, dbName, sql",
"ai_chat.builtin_tools.database.execute_sql.tool_description": "Execute SQL on the specified connection and database and return results. Controlled by safety level; read-only mode only allows query operations such as SELECT/SHOW/DESCRIBE. Results return at most 50 rows.",
"ai_chat.builtin_tools.database.get_all_columns.desc": "Get field summaries for all tables in a database",
"ai_chat.builtin_tools.database.get_all_columns.detail": "Pass connectionId and dbName, then return a cross-table field list including table name, field name, type, and comment. Useful when the user knows a business field but not which table contains it.",
"ai_chat.builtin_tools.database.get_all_columns.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_all_columns.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_all_columns.params": "connectionId, dbName",
"ai_chat.builtin_tools.database.get_all_columns.tool_description": "Get field summaries for all tables in the specified database, returning table names, field names, types, and comments. Use it for field-to-table lookup, cross-table field comparison, and data map exploration.",
"ai_chat.builtin_tools.database.get_columns.desc": "Get the field structure of a specified table",
"ai_chat.builtin_tools.database.get_columns.detail": "Pass connectionId, dbName, and tableName, then return each field's name, type, nullability, default value, and comment. AI must call this before generating SQL to confirm real field names.",
"ai_chat.builtin_tools.database.get_columns.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_columns.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_columns.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_columns.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_columns.tool_description": "Get the field list of the specified table, including field name, type, nullability, default value, comment, and related metadata. Before generating SQL, call this tool to confirm real field names and do not guess field names.",
"ai_chat.builtin_tools.database.get_connections.desc": "Get all available database connections",
"ai_chat.builtin_tools.database.get_connections.detail": "Returns connection ID, name, type (such as MySQL or PostgreSQL), and Host address. AI uses the returned data to decide which connection to explore first.",
"ai_chat.builtin_tools.database.get_connections.params": "No parameters",
"ai_chat.builtin_tools.database.get_connections.tool_description": "When database querying or operations are needed but the user has not selected any connection context, get all database connections available in the current app. Returned data includes connection ID (id) and name (name).",
"ai_chat.builtin_tools.database.get_databases.desc": "Get all databases under a specified connection",
"ai_chat.builtin_tools.database.get_databases.detail": "Pass connectionId and return the database or Schema name list under that connection.",
"ai_chat.builtin_tools.database.get_databases.parameters.connectionId.description": "Connection ID (from get_connections)",
"ai_chat.builtin_tools.database.get_databases.params": "connectionId: connection ID",
"ai_chat.builtin_tools.database.get_databases.tool_description": "Get all database (Database/Schema) names under the specified connectionId.",
"ai_chat.builtin_tools.database.get_foreign_keys.desc": "Get foreign-key relationships for a specified table",
"ai_chat.builtin_tools.database.get_foreign_keys.detail": "Pass connectionId, dbName, and tableName, then return foreign-key mappings from the current table to other tables. AI can use it directly for relationship inference, join SQL generation, and data consistency review.",
"ai_chat.builtin_tools.database.get_foreign_keys.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_foreign_keys.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_foreign_keys.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_foreign_keys.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_foreign_keys.tool_description": "Get foreign-key relationships for the specified table, including local fields, referenced table, referenced fields, and constraint names. Use it for join-path analysis, ER relationship mapping, and constraint checks.",
"ai_chat.builtin_tools.database.get_indexes.desc": "Get index definitions for a specified table",
"ai_chat.builtin_tools.database.get_indexes.detail": "Pass connectionId, dbName, and tableName, then return index name, index columns, uniqueness, and index type. AI should prefer this for slow SQL analysis, index optimization, and execution-plan inference.",
"ai_chat.builtin_tools.database.get_indexes.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_indexes.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_indexes.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_indexes.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_indexes.tool_description": "Get index definitions for the specified table, including index name, column order, uniqueness, and index type. Use it for slow SQL analysis, index optimization suggestions, and confirming existing index coverage.",
"ai_chat.builtin_tools.database.get_table_ddl.desc": "Get the table creation statement (DDL)",
"ai_chat.builtin_tools.database.get_table_ddl.detail": "Pass connectionId, dbName, and tableName, then return the complete CREATE TABLE statement, including field definitions, indexes, constraints, and related structure details.",
"ai_chat.builtin_tools.database.get_table_ddl.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_table_ddl.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_table_ddl.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_table_ddl.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_table_ddl.tool_description": "Get the complete table creation statement (CREATE TABLE DDL) for the specified table, including fields, indexes, constraints, and complete structure information.",
"ai_chat.builtin_tools.database.get_tables.desc": "Get all table names under a specified database",
"ai_chat.builtin_tools.database.get_tables.detail": "Pass connectionId and dbName, then return a table name list. AI uses it to locate the target table mentioned by the user.",
"ai_chat.builtin_tools.database.get_tables.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_tables.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_tables.params": "connectionId, dbName",
"ai_chat.builtin_tools.database.get_tables.tool_description": "After the target connection and database name are known, if the user asks about a table or implicitly mentions one but the exact table name is unknown, call this tool to get all table names in that database (table names only) and infer the target table.",
"ai_chat.builtin_tools.database.get_triggers.desc": "Get trigger definitions for a specified table",
"ai_chat.builtin_tools.database.get_triggers.detail": "Pass connectionId, dbName, and tableName, then return trigger name, timing, event type, and statement body. AI can inspect it directly when analyzing implicit writes, side effects, and audit logic.",
"ai_chat.builtin_tools.database.get_triggers.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_triggers.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_triggers.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_triggers.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_triggers.tool_description": "Get trigger definitions for the specified table, including timing, event, and trigger statement. Use it to investigate implicit data changes, audit logic, and table-level side effects.",
"ai_chat.builtin_tools.database.inspect_database_bundle.desc": "Capture a structure overview for a specified database",
"ai_chat.builtin_tools.database.inspect_database_bundle.detail": "Pass connectionId and dbName, then return table list, table count, total field count, and per-table field summary preview. Useful for first-pass exploration of an unfamiliar database before drilling into target tables.",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.includeColumns.description": "Optional. Whether to include per-table field summaries. Default true.",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.perTableColumnLimit.description": "Optional. Maximum field summaries per table. Default 8, maximum 30.",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.tableLimit.description": "Optional. Maximum tables to return. Default 80, maximum 200.",
"ai_chat.builtin_tools.database.inspect_database_bundle.params": "connectionId, dbName, includeColumns?, tableLimit?, perTableColumnLimit?",
"ai_chat.builtin_tools.database.inspect_database_bundle.tool_description": "Get a structure overview for the specified database, returning table name list, total field count, and per-table field summary preview. Use it for unfamiliar database exploration, data mapping, and quickly choosing the next table to analyze deeply.",
"ai_chat.builtin_tools.database.inspect_table_bundle.desc": "Capture a structure snapshot for a specified table",
"ai_chat.builtin_tools.database.inspect_table_bundle.detail": "Pass connectionId, dbName, and tableName, then return columns, indexes, foreign keys, triggers, and DDL; sample rows can also be included. Useful before writing SQL, reviewing table design, or investigating side effects.",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.includeSampleRows.description": "Optional. Whether to include sample rows.",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.sampleLimit.description": "Optional. Sample row count. Default 10, maximum 100.",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.inspect_table_bundle.params": "connectionId, dbName, tableName, includeSampleRows?, sampleLimit?",
"ai_chat.builtin_tools.database.inspect_table_bundle.tool_description": "Get a complete structure snapshot for the specified table, returning columns, indexes, foreign keys, triggers, DDL, and optional sample rows. Use it for full table-design exploration, quickly understanding table relationships, and reducing repeated round trips.",
"ai_chat.builtin_tools.database.preview_table_rows.desc": "Preview the first rows of a specified table",
"ai_chat.builtin_tools.database.preview_table_rows.detail": "Pass connectionId, dbName, tableName, and optional limit, then return real sample rows from the table. Use it to inspect data shape, null distribution, and enum values before deciding how to write SQL.",
"ai_chat.builtin_tools.database.preview_table_rows.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.preview_table_rows.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.preview_table_rows.parameters.limit.description": "Optional. Preview row count. Default 20, maximum 100.",
"ai_chat.builtin_tools.database.preview_table_rows.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.preview_table_rows.params": "connectionId, dbName, tableName, limit?",
"ai_chat.builtin_tools.database.preview_table_rows.tool_description": "Preview sample rows from the specified table. Use it to quickly understand field value shapes, nulls, time formats, and status enums, reducing blind SQL generation by the model.",
"ai_chat.builtin_tools.flows.active_tab.description": "Read the current editor SQL draft or table tab before field checks, index analysis, and read-only verification.",
"ai_chat.builtin_tools.flows.active_tab.title": "Read the current tab",
"ai_chat.builtin_tools.flows.ai_context.description": "Confirm which table structures are attached to the current conversation before field checks, table design review, or SQL generation.",
"ai_chat.builtin_tools.flows.ai_context.title": "Inspect current AI context",
"ai_chat.builtin_tools.flows.ai_runtime.description": "Confirm the current model, safety level, context level, Skills, and MCP tools before choosing a probe chain.",
"ai_chat.builtin_tools.flows.ai_runtime.title": "Inspect current AI capabilities",
"ai_chat.builtin_tools.flows.ai_sessions.description": "Locate previous AI sessions, first user questions, and recent replies before reusing the current tab or historical SQL context.",
"ai_chat.builtin_tools.flows.ai_sessions.title": "Review AI chat history",
"ai_chat.builtin_tools.flows.ai_setup_health.description": "Get an AI configuration health snapshot first, then decide whether to drill into providers, chat readiness, MCP, prompts, Skills, or context.",
"ai_chat.builtin_tools.flows.ai_setup_health.title": "One-shot AI setup health check",
"ai_chat.builtin_tools.flows.app_health_overview.description": "Use when AI instability, connection issues, MCP issues, or message rendering problems overlap and an overall health snapshot is needed first.",
"ai_chat.builtin_tools.flows.app_health_overview.title": "AI app health overview",
"ai_chat.builtin_tools.flows.app_logs.description": "Review ERROR/WARN lines from the gonavi.log tail, then combine MCP, connection, and current data source state for diagnosis.",
"ai_chat.builtin_tools.flows.app_logs.title": "Troubleshoot application logs",
"ai_chat.builtin_tools.flows.chat_readiness.description": "Check which chat input prerequisites are missing, such as active provider, key, endpoint, or selected model, instead of guessing from UI symptoms.",
"ai_chat.builtin_tools.flows.chat_readiness.title": "Troubleshoot chat send readiness",
"ai_chat.builtin_tools.flows.choose_tool_route.description": "Use keywords to decide which built-in probes to call, how to fill tool arguments, and whether external MCP tools are available.",
"ai_chat.builtin_tools.flows.choose_tool_route.title": "Choose an AI tool route",
"ai_chat.builtin_tools.flows.codebase_hotspots.description": "Use before splitting thousand-line components, choosing the next refactor slice, or changing UI/AI/MCP code to inspect split hotspots, risk, and validation scope.",
"ai_chat.builtin_tools.flows.codebase_hotspots.title": "Govern large frontend files",
"ai_chat.builtin_tools.flows.connection_capabilities.description": "Check whether the current connection supports database creation/deletion, result editing, SQL export, or approximate counts.",
"ai_chat.builtin_tools.flows.connection_capabilities.title": "Check data-source capability boundaries",
"ai_chat.builtin_tools.flows.connection_failures.description": "When connection failures, cooldown, or validation failures appear, get structured root cause, latest address, and next actions first.",
"ai_chat.builtin_tools.flows.connection_failures.title": "Troubleshoot connection failures and cooldown",
"ai_chat.builtin_tools.flows.context_budget.description": "When AI slows down, answers poorly, or context is too large, inspect messages, DDL, MCP schema, prompts, and Skills before narrowing context.",
"ai_chat.builtin_tools.flows.context_budget.title": "Diagnose AI context size",
"ai_chat.builtin_tools.flows.current_connection.description": "Confirm the active data source type, address, current database, and SSH/proxy status before database exploration or connection troubleshooting.",
"ai_chat.builtin_tools.flows.current_connection.title": "Inspect current connection",
"ai_chat.builtin_tools.flows.database_overview.description": "Start by seeing which tables exist and what fields they roughly contain, then drill into target tables with snapshots.",
"ai_chat.builtin_tools.flows.database_overview.title": "Quick database overview",
"ai_chat.builtin_tools.flows.deep_structure.description": "Use for index optimization, relationship mapping, implicit side-effect investigation, and DDL review.",
"ai_chat.builtin_tools.flows.deep_structure.title": "Deep-dive structure",
"ai_chat.builtin_tools.flows.docker_mcp.description": "Use when Docker README setup discovers 0 tools, containers exit immediately, or docker run arguments may be split incorrectly.",
"ai_chat.builtin_tools.flows.docker_mcp.title": "Troubleshoot Docker MCP startup",
"ai_chat.builtin_tools.flows.external_sql_dirs.description": "Confirm configured external SQL directories, their connection/database bindings, and where an opened SQL file comes from before analyzing scripts.",
"ai_chat.builtin_tools.flows.external_sql_dirs.title": "Inventory external SQL directories",
"ai_chat.builtin_tools.flows.external_sql_file.description": "Locate a script path, read SQL file content from the directory, and combine it with the active tab draft if already opened.",
"ai_chat.builtin_tools.flows.external_sql_file.title": "Read external SQL files",
"ai_chat.builtin_tools.flows.field_lookup_table.description": "Use when only a field name, business meaning, or comment keyword is known, but the exact table is still unclear.",
"ai_chat.builtin_tools.flows.field_lookup_table.title": "Find tables by field",
"ai_chat.builtin_tools.flows.locate_table_fields.description": "Find the connection, database, and table first, then confirm real field names before generating SQL.",
"ai_chat.builtin_tools.flows.locate_table_fields.title": "Locate tables and fields",
"ai_chat.builtin_tools.flows.mcp_authoring.description": "Read real field descriptions, templates, and full-command splitting rules before validating pasted commands or drafts.",
"ai_chat.builtin_tools.flows.mcp_authoring.title": "New MCP authoring guide",
"ai_chat.builtin_tools.flows.mcp_setup.description": "Confirm configured and enabled MCP services and external client write status, then use MCP runtime failure logs to explain missing tools.",
"ai_chat.builtin_tools.flows.mcp_setup.title": "Troubleshoot MCP access status",
"ai_chat.builtin_tools.flows.mcp_tool_parameters.description": "Find the real discovered MCP tool alias first, then read inputSchema, required fields, enums, and nested parameter paths.",
"ai_chat.builtin_tools.flows.mcp_tool_parameters.title": "Inspect MCP tool parameters",
"ai_chat.builtin_tools.flows.message_flow.description": "Read the real current-session message structure and anomaly signals when replies split into bubbles, tool calls do not close, or flow state looks wrong.",
"ai_chat.builtin_tools.flows.message_flow.title": "Diagnose AI message flow",
"ai_chat.builtin_tools.flows.prompts_skills.description": "Confirm current custom prompts, enabled Skills, dependency tools, and effective scope before explaining current AI behavior.",
"ai_chat.builtin_tools.flows.prompts_skills.title": "Inspect current prompts and Skills",
"ai_chat.builtin_tools.flows.providers_models.description": "Confirm which providers are configured and active, whether keys or models are missing, and why chat cannot send or model lists are empty.",
"ai_chat.builtin_tools.flows.providers_models.title": "Troubleshoot providers and models",
"ai_chat.builtin_tools.flows.readonly_validation.description": "After generating SQL, validate results on a small scope while still respecting the AI safety level.",
"ai_chat.builtin_tools.flows.readonly_validation.title": "Read-only validation",
"ai_chat.builtin_tools.flows.recent_sql_activity.description": "Check whether recent activity is mostly read or write, whether DDL or deletes occurred, and which database has the most recent errors.",
"ai_chat.builtin_tools.flows.recent_sql_activity.title": "Summarize recent SQL activity",
"ai_chat.builtin_tools.flows.recent_sql_logs.description": "Trace recently failed SQL, slow query duration, or let AI explain and optimize based on real execution history.",
"ai_chat.builtin_tools.flows.recent_sql_logs.title": "Review recent execution records",
"ai_chat.builtin_tools.flows.redis_topology.description": "Use for Redis Sentinel, Cluster, multi-node, DB switch failures, or SSH tunnel issues to get status, redacted URI, adapter, DB semantics, and next actions.",
"ai_chat.builtin_tools.flows.redis_topology.title": "Diagnose Redis topology",
"ai_chat.builtin_tools.flows.remote_agent_mcp.description": "Use when OpenClaw/Hermans run on cloud Linux while database connections and passwords stay on the Windows GoNavi machine.",
"ai_chat.builtin_tools.flows.remote_agent_mcp.title": "Connect remote Agents to GoNavi MCP",
"ai_chat.builtin_tools.flows.render_error.description": "Use when an AI message is blank or a bubble fails locally while the panel stays alive; read the isolated render-error snapshot first.",
"ai_chat.builtin_tools.flows.render_error.title": "Troubleshoot AI bubble render errors",
"ai_chat.builtin_tools.flows.safety_boundary.description": "Check whether the current state is read-only, whether DDL/DML is allowed, and whether MCP writes require allowMutating.",
"ai_chat.builtin_tools.flows.safety_boundary.title": "Check write safety boundaries",
"ai_chat.builtin_tools.flows.sample_data.description": "Confirm fields first, then inspect the first real sample rows and null patterns.",
"ai_chat.builtin_tools.flows.sample_data.title": "Understand sample data",
"ai_chat.builtin_tools.flows.saved_connections.description": "Filter locally saved data sources by keyword or type, then inspect the chosen connection state or database structure.",
"ai_chat.builtin_tools.flows.saved_connections.title": "Inventory local connection assets",
"ai_chat.builtin_tools.flows.saved_queries.description": "Find locally saved query scripts first, then check fields and run read-only validation instead of rewriting old SQL manually.",
"ai_chat.builtin_tools.flows.saved_queries.title": "Reuse saved SQL",
"ai_chat.builtin_tools.flows.shortcuts.description": "Confirm current Win/Mac shortcuts, customizations, and how to trigger result panel, AI panel, query execution, and related actions.",
"ai_chat.builtin_tools.flows.shortcuts.title": "Inspect current shortcut configuration",
"ai_chat.builtin_tools.flows.sql_editor_transaction.description": "Confirm whether SQL editor DML enters a managed transaction, current commit mode, pending transactions, and commit semantics after update/insert/delete.",
"ai_chat.builtin_tools.flows.sql_editor_transaction.title": "Check SQL editor transactions",
"ai_chat.builtin_tools.flows.sql_risk.description": "Before execution, deletion, update, DDL, or batch SQL, check statement count, write/DDL risk, WHERE clauses, and current safety policy.",
"ai_chat.builtin_tools.flows.sql_risk.title": "Pre-check SQL risk",
"ai_chat.builtin_tools.flows.sql_snippets.description": "Find team SQL snippet templates, completion prefixes, and common skeletons before deciding whether to rewrite.",
"ai_chat.builtin_tools.flows.sql_snippets.title": "Find SQL snippet templates",
"ai_chat.builtin_tools.flows.support_bundle.description": "Use when troubleshooting evidence needs to be collected at once, without secrets or database passwords.",
"ai_chat.builtin_tools.flows.support_bundle.title": "Export AI troubleshooting support bundle",
"ai_chat.builtin_tools.flows.table_snapshot.description": "Return columns, indexes, foreign keys, triggers, and DDL in one call; sample rows can be included when needed to reduce round trips.",
"ai_chat.builtin_tools.flows.table_snapshot.title": "One-shot table snapshot",
"ai_chat.builtin_tools.flows.upstream_request.description": "Read redacted gonavi.log request records when the user needs upstream payloads, requestId, status codes, latency, or request body previews.",
"ai_chat.builtin_tools.flows.upstream_request.title": "Trace AI upstream requests",
"ai_chat.builtin_tools.flows.workspace_tabs.description": "See which SQL, table, or command tabs are open, then inspect the target tab for field checks, comparisons, and read-only validation.",
"ai_chat.builtin_tools.flows.workspace_tabs.title": "Inventory the current workspace",
"ai_chat.inspection.tool_info.inspect_mcp_setup.desc": "Проверить текущую конфигурацию MCP и внешний доступ",
"ai_chat.inspection.tool_info.inspect_mcp_setup.detail": "Возвращает локальные MCP-сервисы, состояние включения, команды запуска, состояние записи Claude Code / Codex, границы удаленных Agent OpenClaw / Hermans и результаты обнаружения команд. Используйте для проверки настроенных MCP-сервисов, сбоев внешних клиентов или записи в конфигурацию клиента.",
"ai_chat.inspection.tool_info.inspect_mcp_setup.params": "Без параметров",
"ai_chat.inspection.tool_info.inspect_mcp_setup.tool_description": "Читает снимок локальной конфигурации MCP: список сервисов, состояние включения, команды запуска, ключи переменных окружения, обнаруженные инструменты, состояние записи клиента GoNavi MCP, локальное обнаружение CLI и границы доступа удаленного Agent.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.desc": "Проверить удаленный доступ MCP для OpenClaw/Hermans",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.detail": "Возвращает команды запуска GoNavi Streamable HTTP MCP, удаленный URL, рекомендации по аутентификации, границы облачных Agent OpenClaw/Hermans, варианты мостов и напоминания о безопасности. Используйте для доступа облачного OpenClaw к Windows GoNavi, хранения паролей баз данных локально или публикации HTTP MCP.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.params": "publicUrl?, localAddr?, path?, exposeStrategy?, tokenConfigured?",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.tool_description": "Читает снимок удаленного доступа Agent к GoNavi MCP: команды запуска Streamable HTTP, URL /mcp, требования Bearer Token, шаги облачного доступа OpenClaw/Hermans, границу паролей на Windows-хосте и риски tunnel, reverse proxy, Tailscale и похожих стратегий.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.publicUrl": "Необязательно. HTTPS или URL частной сети, доступный удаленному Agent. Если /mcp отсутствует, инструмент добавит настроенный path.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.localAddr": "Необязательно. Локальный адрес прослушивания HTTP MCP в Windows. По умолчанию 127.0.0.1:8765. Прямая привязка к 0.0.0.0 не рекомендуется.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.path": "Необязательно. path для Streamable HTTP MCP. По умолчанию /mcp.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.exposeStrategy": "Необязательно. Планируемая стратегия удаленной публикации для подбора соответствующих предупреждений о рисках.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.tokenConfigured": "Необязательно. Настроен ли уже случайный Bearer Token. При false возвращается warning аутентификации.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.desc": "Диагностировать сбои запуска MCP и вызовов инструментов",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.detail": "Читает последние сбои запуска MCP, обнаружения инструментов, вызовов инструментов и подпроцессов HTTP MCP из gonavi.log, затем сопоставляет сохраненные сервисы и обнаруженные инструменты, чтобы вернуть типы сбоев, вероятные причины, затронутые сервисы и дальнейшие действия.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.params": "serverName?, keyword?, lineLimit?(по умолчанию 160), includeLines?(по умолчанию false)",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.tool_description": "Читает сигналы runtime-сбоев MCP из журналов GoNavi, классифицирует запуск сервисов, обнаружение инструментов, вызовы инструментов и завершения подпроцессов HTTP MCP, затем объединяет текущую конфигурацию и число инструментов, чтобы вернуть вероятные причины и nextActions.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.param.serverName": "Необязательно. Проверить только одно имя MCP-сервиса или имя server= из логов, например GitHub, Browser или DockerFetch.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.param.keyword": "Необязательно. Фильтровать связанные с MCP логи по keyword, например timeout, stdio, permission, 401 или docker.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.param.lineLimit": "Необязательно. Максимальное число последних строк лога для чтения. По умолчанию 160, максимум 200.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.param.includeLines": "Необязательно. Включать ли отредактированные raw-строки логов MCP. По умолчанию false; включайте только когда нужно цитировать исходные строки.",
"ai_chat.inspection.tool_info.inspect_mcp_authoring_guide.desc": "Проверить руководство по созданию add-MCP",
"ai_chat.inspection.tool_info.inspect_mcp_authoring_guide.detail": "Возвращает назначение полей add-MCP, рекомендуемый порядок заполнения, правила авторазделения полной команды и шаблоны npx / Node / uvx / Python / Docker / EXE. Используйте перед ответами о command, args, env, шаблонах или вставке полной команды запуска.",
"ai_chat.inspection.tool_info.inspect_mcp_authoring_guide.params": "Без параметров",
"ai_chat.inspection.tool_info.inspect_mcp_authoring_guide.tool_description": "Читает встроенное руководство GoNavi по созданию MCP: рекомендуемый порядок полей, назначение полей, примеры частых команд, правила авторазделения полной команды и примеры шаблонов npx / Node / uvx / Python / Docker / EXE.",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.desc": "Проверить конфигурацию запуска Docker MCP",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.detail": "Читает сохраненные Docker MCP-сервисы, проверяет, правильно ли command и args разделены на docker, run, --rm, -i, имя образа и аргументы контейнера, затем возвращает отсутствующие аргументы, число инструментов, рекомендации по timeout и следующие действия.",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.params": "serverId?, includeDisabled?(по умолчанию true)",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.tool_description": "Проверяет аргументы запуска сохраненных Docker MCP-сервисов и возвращает состояние docker run/-i/image/--rm/env/timeout, число обнаруженных инструментов, предупреждения конфигурации и nextActions.",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.param.serverId": "Необязательно. Проверить только один MCP serverId. Если не указано, проверяются все Docker MCP-сервисы.",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.param.includeDisabled": "Необязательно. Включать ли отключенные Docker MCP-сервисы. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.desc": "Проверить черновик add-MCP",
"ai_chat.inspection.tool_info.inspect_mcp_draft.detail": "Моделирует конфигурацию GoNavi add-MCP из полной команды запуска или черновика по полям и возвращает авторазделение, предпросмотр запуска, применимый черновик, подсказки по аргументам и окружению, проблемы проверки, рекомендуемые шаблоны и следующие предложения. Секретные аргументы редактируются.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.params": "fullCommand?, command?, args?, envText?, timeoutSeconds?, templateKey?, name?",
"ai_chat.inspection.tool_info.inspect_mcp_draft.tool_description": "Проверяет ожидающий черновик MCP-сервиса. Поддерживает авторазделение fullCommand/rawCommand/commandLine или проверку по полям command, args, envText, timeoutSeconds и templateKey. Возвращает разобранные поля, отредактированный предпросмотр запуска, suggestedServerSeed, подсказки по аргументам, риски окружения, errors, warnings, рекомендуемые шаблоны и nextActions без вывода значений api-key/token/password.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.fullCommand": "Необязательно. Полная команда запуска MCP из README или от пользователя, например $env:GITHUB_TOKEN=...; uvx mcp-server-github --stdio.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.command": "Необязательно. Команда запуска command в черновике по полям. Должна быть только npx, node, uvx, python или exe path.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.args": "Необязательно. Аргументы команды в черновике по полям. Массивы точнее, но строки с разделением запятыми или переводами строк тоже принимаются.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.envText": "Необязательно. Черновик переменных окружения, по одному KEY=VALUE в строке. Не передавайте префиксы export, set или $env:.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.timeoutSeconds": "Необязательно. timeout в секундах для одного обнаружения или вызова инструмента. Рекомендуется 20; медленно запускающиеся сервисы могут использовать 45 или 60.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.templateKey": "Необязательно. Сначала применить встроенный шаблон, затем переопределить его пользовательскими полями.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.name": "Необязательно. Имя MCP-сервиса, например GitHub, Filesystem или Browser.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.desc": "Проверить schema аргументов MCP-инструмента",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.detail": "Читает inputSchema обнаруженных MCP-инструментов по alias, serverId или keyword и возвращает обязательные параметры, типы полей, значения enum, вложенные path объектов и подсказки перед вызовом. Используйте после успешного обнаружения MCP, чтобы проверить принимаемые аргументы.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.params": "alias?, serverId?, keyword?, includeSchema?(по умолчанию false), limit?(по умолчанию 8)",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.tool_description": "Читает сводки parameter schema обнаруженных MCP-инструментов, фильтруемых по alias, serverId или keyword, и возвращает обязательные поля, типы, значения enum, вложенные path параметров и подсказки перед вызовом. Используйте перед написанием arguments JSON для внешних вызовов MCP-инструментов или после ошибок параметров.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.alias": "Необязательно. Запрос по точному MCP tool alias, например github_create_issue. Лучше сначала прочитать реальный alias через inspect_mcp_setup.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.serverId": "Необязательно. Проверять только инструменты, обнаруженные в одном MCP serverId.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.keyword": "Необязательно. Фильтровать по alias инструмента, исходному имени, title, description или имени сервиса.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.includeSchema": "Необязательно. Включать ли полный raw inputSchema. По умолчанию false; включайте только для проверки сложной вложенной schema.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.limit": "Необязательно. Максимальное число подходящих инструментов для возврата. По умолчанию 8, максимум 30.",
"ai_chat.inspection.tool_info.inspect_app_logs.desc": "Проверить хвост журнала приложения GoNavi",
"ai_chat.inspection.tool_info.inspect_app_logs.detail": "Фильтрует последние строки INFO/WARN/ERROR журнала приложения GoNavi по optional keyword и возвращает распределение уровней, путь к файлу журнала и состояние усечения. Используйте сначала при упоминании gonavi.log, ошибок запуска, сбоев запуска MCP или ошибок подключения к базе данных.",
"ai_chat.inspection.tool_info.inspect_app_logs.params": "keyword?, lineLimit?(по умолчанию 80)",
"ai_chat.inspection.tool_info.inspect_app_logs.tool_description": "Читает хвост журнала приложения GoNavi, optional фильтрует по keyword и возвращает последние строки, распределение уровней, путь журнала и состояние усечения.",
"ai_chat.inspection.tool_info.inspect_app_logs.param.keyword": "Необязательно. Фильтровать содержимое журнала по keyword, например mcp, mysql, timeout или error.",
"ai_chat.inspection.tool_info.inspect_app_logs.param.lineLimit": "Необязательно. Максимальное число строк журнала для возврата. По умолчанию 80, максимум 200.",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.desc": "Сводка последних сбоев подключения к базе данных и cooldown",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.detail": "Извлекает из последних строк gonavi.log сбои подключения к базе данных, ошибки проверки, ошибки SSH tunnel и срабатывания cooldown, затем классифицирует основной тип проблемы, последний адрес, последнюю причину и следующие действия.",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.params": "keyword?, lineLimit?(по умолчанию 120)",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.tool_description": "Суммирует последние сбои подключения к базе данных, ошибки проверки, сбои SSH tunnel и срабатывания cooldown из журналов приложения GoNavi.",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.param.keyword": "Необязательно. Фильтровать по типу подключения, адресу или keyword сбоя, например mysql, ssh, timeout или 127.0.0.1.",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.param.lineLimit": "Необязательно. Максимальное число строк журнала для анализа. По умолчанию 120, максимум 240.",
"ai_chat.inspection.tool_info.inspect_ai_last_render_error.desc": "Проверить последнюю ошибку рендеринга AI-сообщения",
"ai_chat.inspection.tool_info.inspect_ai_last_render_error.detail": "Возвращает последнюю изолированную ошибку рендеринга AI-сообщения, включая идентификатор сообщения, предпросмотр содержимого, сводку ошибки и сводку стека компонентов.",
"ai_chat.inspection.tool_info.inspect_ai_last_render_error.params": "Без параметров",
"ai_chat.inspection.tool_info.inspect_ai_last_render_error.tool_description": "Читает последний локальный снимок ошибки рендеринга AI-сообщения, включая message ID, роль, предпросмотр содержимого, сводку ошибки, стек компонентов и следующие диагностические подсказки.",
"ai_chat.inspection.tool_info.inspect_saved_queries.desc": "Проверить локально сохраненные SQL-запросы",
"ai_chat.inspection.tool_info.inspect_saved_queries.detail": "Фильтрует локально сохраненные запросы по keyword, подключению или базе данных и возвращает имя запроса, подключение, базу данных и предпросмотр SQL.",
"ai_chat.inspection.tool_info.inspect_saved_queries.params": "keyword?, connectionId?, dbName?, limit?, includeSql?(по умолчанию true)",
"ai_chat.inspection.tool_info.inspect_saved_queries.tool_description": "Читает локально сохраненные SQL-запросы, optional фильтрует по keyword, подключению и базе данных, возвращает имя, подключение, базу данных и предпросмотр SQL.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.keyword": "Необязательно. Фильтровать по имени запроса, SQL-тексту, имени подключения или имени базы данных.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.connectionId": "Необязательно. Проверять только сохраненные запросы одного подключения.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.dbName": "Необязательно. Проверять только сохраненные запросы одной базы данных.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.limit": "Необязательно. Максимальное число запросов для возврата. По умолчанию 12, максимум 50.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.includeSql": "Необязательно. Включать ли предпросмотр SQL. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.desc": "Проверить локальную историю AI-диалогов",
"ai_chat.inspection.tool_info.inspect_ai_sessions.detail": "Фильтрует локальные AI-сессии по keyword и возвращает заголовок сессии, время обновления, число сообщений, признак текущей сессии, первый вопрос пользователя и предпросмотр последнего сообщения.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.params": "keyword?, limit?, includePreview?(по умолчанию true)",
"ai_chat.inspection.tool_info.inspect_ai_sessions.tool_description": "Читает локальную историю AI-диалогов, optional фильтрует по keyword и возвращает заголовок, время обновления, число сообщений, current-session flag, первый вопрос пользователя и предпросмотр последнего сообщения.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.param.keyword": "Необязательно. Фильтровать по заголовку сессии, session ID, первому вопросу пользователя или содержимому последнего сообщения.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.param.limit": "Необязательно. Максимальное число сессий для возврата. По умолчанию 10, максимум 50.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.param.includePreview": "Необязательно. Включать ли первый вопрос пользователя и предпросмотр последнего сообщения. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.desc": "Диагностировать текущий поток сообщений AI-диалога",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.detail": "Читает последние сообщения текущей или указанной AI-сессии, считает user/assistant/tool сообщения, проверяет наличие результатов tool calls и выявляет последовательные assistant bubbles, пустые assistant placeholders или неочищенное loading.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.params": "sessionId?(по умолчанию текущая сессия), limit?(по умолчанию 24), includeContent?(по умолчанию true), previewLimit?(по умолчанию 180)",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.tool_description": "Читает диагностику потока сообщений для текущей или указанной AI-сессии, включая role sequence, числа assistant/tool, соответствие tool-call и tool-result, последовательные assistant messages, пустые assistant messages и остатки loading.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.param.sessionId": "Необязательно. AI session ID для диагностики. Если не указан, используется текущая активная сессия.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.param.limit": "Необязательно. Максимальное число последних сообщений для возврата. По умолчанию 24, максимум 80.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.param.includeContent": "Необязательно. Включать ли предпросмотры содержимого сообщений. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.param.previewLimit": "Необязательно. Лимит символов для предпросмотра каждого сообщения. По умолчанию 180, максимум 1000.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.desc": "Диагностировать размер AI-контекста и риск стабильности",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.detail": "Оценивает последние сообщения, результаты инструментов, прикрепленные table DDL, MCP tool schemas, пользовательские prompts и Skills в текущей или указанной AI-сессии, затем возвращает риск low/medium/high/critical, главные источники роста и предложения по сужению.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.params": "sessionId?(по умолчанию текущая сессия), messageLimit?(по умолчанию 40), includeDetails?(по умолчанию true)",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.tool_description": "Читает снимок размера AI-контекста и риска стабильности, включая окно последних сообщений, длину результатов инструментов, прикрепленный table DDL, MCP tool schemas, пользовательские prompts и включенные Skills.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.param.sessionId": "Необязательно. AI session ID для диагностики. Если не указан, используется текущая активная сессия.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.param.messageLimit": "Необязательно. Максимальное число последних сообщений для подсчета. По умолчанию 40, максимум 120.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.param.includeDetails": "Необязательно. Возвращать ли детали largest message, largest DDL table и largest MCP schema. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.desc": "Проверить крупные frontend-файлы и точки разбиения",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.detail": "Возвращает hotspots крупных frontend-файлов GoNavi, включая число строк, уровень риска, зрелость разбиения, границы безопасности, предлагаемые split slices и регрессионные тесты для запуска.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.params": "keyword?, minLines?(по умолчанию 1000), limit?(по умолчанию 8), includeRecommendations?(по умолчанию true)",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.tool_description": "Читает снимок крупных frontend-файлов и split-hotspots GoNavi, возвращая путь файла, число строк, уровень риска, зрелость разбиения, preferred slice, safe split boundary, suggested slices, test targets и verification plan.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.param.keyword": "Необязательно. Фильтровать по path, module, risk, split slice или test target, например Sidebar, DataGrid, Redis, transaction или connection.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.param.minLines": "Необязательно. Возвращать только hotspot-файлы минимум с таким числом строк. По умолчанию 1000, максимум 20000.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.param.limit": "Необязательно. Максимальное число hotspots для возврата. По умолчанию 8, максимум 30.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.param.includeRecommendations": "Необязательно. Включать ли suggestedSlices, testTargets и nextActions. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.desc": "Проверить шаблоны SQL snippets",
"ai_chat.inspection.tool_info.inspect_sql_snippets.detail": "Возвращает prefix, имя, описание и предпросмотр шаблона локального SQL snippet, optional фильтрует по keyword.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.params": "keyword?, limit?, includeBody?(по умолчанию true)",
"ai_chat.inspection.tool_info.inspect_sql_snippets.tool_description": "Читает локальные шаблоны SQL snippets, optional фильтрует по keyword и возвращает prefix, имя, описание и предпросмотр шаблона.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.param.keyword": "Необязательно. Фильтровать по prefix, имени, описанию или содержимому шаблона.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.param.limit": "Необязательно. Максимальное число snippets для возврата. По умолчанию 20, максимум 80.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.param.includeBody": "Необязательно. Включать ли предпросмотр тела шаблона. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_shortcuts.desc": "Проверить текущие shortcuts и различия платформ",
"ai_chat.inspection.tool_info.inspect_shortcuts.detail": "Возвращает shortcut actions, текущее platform binding, комбинации Windows/macOS, сведения о пользовательских изменениях и сравнение с defaults.",
"ai_chat.inspection.tool_info.inspect_shortcuts.params": "action?, keyword?, includeDisabled?(по умолчанию true), includeAllPlatforms?(по умолчанию true)",
"ai_chat.inspection.tool_info.inspect_shortcuts.tool_description": "Читает текущий snapshot конфигурации shortcuts GoNavi, optional фильтрует по имени action или keyword, возвращает current platform binding, Windows/macOS bindings, defaults и статус настройки.",
"ai_chat.inspection.tool_info.inspect_shortcuts.param.action": "Необязательно. Фильтровать по точному action key, например toggleQueryResultsPanel, sendAIChatMessage или toggleAIPanel.",
"ai_chat.inspection.tool_info.inspect_shortcuts.param.keyword": "Необязательно. Фильтровать по имени action, описанию, scope, сочетанию клавиш или default value.",
"ai_chat.inspection.tool_info.inspect_shortcuts.param.includeDisabled": "Необязательно. Включать ли сейчас отключенные shortcuts. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_shortcuts.param.includeAllPlatforms": "Необязательно. Включать ли bindings обеих платформ Windows и macOS. По умолчанию true.",
"ai_chat.inspection.tool_info.inspect_app_health.desc": "Inspect the overall AI application health",
"ai_chat.inspection.tool_info.inspect_app_health.detail": "Summarizes AI configuration, provider send prerequisites, MCP access, application log ERROR/WARN signals, recent connection failures and cooldowns, AI reply bubble render errors, and current workspace tabs. Use it first when users report AI instability, ask for an overall check, or need connection and MCP issues diagnosed together.",
"ai_chat.inspection.tool_info.inspect_app_health.params": "keyword?, connectionKeyword?, lineLimit?(default 120), includeLogLines?(default false)",
"ai_chat.inspection.tool_info.inspect_app_health.tool_description": "Read the GoNavi AI application health overview, including AI provider and send prerequisites, MCP access, application log ERROR/WARN signals, recent connection failures and cooldowns, AI reply bubble render errors, and current workspace tabs, then return blockers, runtime anomaly signals, and suggested next probes.",
"ai_chat.inspection.tool_info.inspect_app_health.param.keyword": "Optional. Filter application logs by keyword, such as ai, mcp, mysql, or error. If omitted, the recent log window is read.",
"ai_chat.inspection.tool_info.inspect_app_health.param.connectionKeyword": "Optional. Keyword used when analyzing connection failure logs by type, address, or error. If omitted, keyword is reused.",
"ai_chat.inspection.tool_info.inspect_app_health.param.lineLimit": "Optional. Maximum number of log lines to analyze per probe. Default 120, maximum 240.",
"ai_chat.inspection.tool_info.inspect_app_health.param.includeLogLines": "Optional. Whether to include original log lines in the result. Default false; enable only when lines need to be quoted.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.desc": "Export an AI troubleshooting support bundle",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.detail": "Aggregates AI application health, provider and MCP status, application log summary, connection failure summary, message flow structure, context size, remote MCP access, and tool catalog index. Use it when users report AI instability, need MCP, connection, and logs reviewed together, or need development troubleshooting material without secrets or database passwords.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.params": "keyword?, sessionId?, lineLimit?(default 120), includeLogLines?(default false), includeMessageContent?(default false), publicUrl?, tokenConfigured?",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.tool_description": "Generate a GoNavi AI troubleshooting support bundle that summarizes AI application health, provider and send prerequisites, MCP configuration and remote access, application log summary, database connection failure summary, current AI message flow, context-size risk, and tool catalog index. By default it does not include database passwords, provider keys, MCP environment variable values, original log lines, or full message content.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.keyword": "Optional. Filter logs and tool catalog entries by keyword, such as ai, mcp, mysql, error, or openclaw.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.connectionKeyword": "Optional. Keyword used to analyze connection failure logs. If omitted, keyword is reused.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.sessionId": "Optional. AI session ID to diagnose. If omitted, the current active session is used.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.lineLimit": "Optional. Maximum number of application log lines to analyze. Default 120, maximum 240.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.includeLogLines": "Optional. Whether to include original log lines. Default false; enable only when lines need to be quoted.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.includeMessageContent": "Optional. Whether to include message content previews. Default false; enable only when troubleshooting bubble content.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.includeDetails": "Optional. Whether to include context-size details. Default false.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.publicUrl": "Optional. Public or tunnel URL used by a cloud Agent to access GoNavi MCP for the remote MCP support bundle.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.localAddr": "Optional. Windows local HTTP MCP listen address. Default 127.0.0.1:8765.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.path": "Optional. Streamable HTTP MCP path. Default /mcp.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.exposeStrategy": "Optional. Remote exposure strategy used to generate matching safety reminders.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.tokenConfigured": "Optional. Whether a random Bearer Token is already prepared. Passing false returns an authentication warning.",
"ai_chat.inspection.tool_info.inspect_ai_setup_health.desc": "Run a one-shot health check for the current AI setup",
"ai_chat.inspection.tool_info.inspect_ai_setup_health.detail": "Summarizes the current AI provider, chat send prerequisites, MCP services and external client access, prompts and Skills, and attached context, then returns blockers, warnings, and next actions. Use it when users ask why AI is hard to use, whether the current AI setup has problems, or what is still missing.",
"ai_chat.inspection.tool_info.inspect_ai_setup_health.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_setup_health.tool_description": "Inspect current AI setup health, returning provider, model, chat send prerequisites, MCP access, prompts and Skills, attached table context, blockers, suggestions, and next actions.",
"ai_chat.inspection.tool_info.inspect_ai_runtime.desc": "Inspect current AI runtime status",
"ai_chat.inspection.tool_info.inspect_ai_runtime.detail": "Returns the active model provider, model name, safety level, context level, enabled Skills, and currently exposed built-in and MCP tools. Use it before answering questions about available tools, the active model, or why write operations are unavailable.",
"ai_chat.inspection.tool_info.inspect_ai_runtime.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_runtime.tool_description": "Read the current AI runtime snapshot, including provider, model, safety level, context level, enabled Skills, available built-in tools, and MCP tools. Use it before answering AI capability-boundary questions.",
"ai_chat.inspection.tool_info.inspect_ai_safety.desc": "Inspect current AI write safety boundaries",
"ai_chat.inspection.tool_info.inspect_ai_safety.detail": "Returns the SQL scope allowed by the current AI safety level, whether non-read-only statements still require confirmation or allowMutating, and whether the active connection, tab, or JVM diagnostic permission adds read-only restrictions. Use it when users ask why writes are blocked, whether DDL can run, or whether allowMutating is required.",
"ai_chat.inspection.tool_info.inspect_ai_safety.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_safety.tool_description": "Read the current AI safety-boundary snapshot, including SQL scope allowed by the active safety level, confirmation requirements for non-query statements, MCP execute_sql allowMutating requirements, and any additional read-only restrictions from the active connection, result tab, or JVM diagnostic permissions.",
"ai_chat.inspection.tool_info.inspect_ai_providers.desc": "Inspect current AI providers and model configuration",
"ai_chat.inspection.tool_info.inspect_ai_providers.detail": "Returns configured AI providers, the active provider, baseUrl values, selected models, declared model lists, whether keys exist, custom request header keys, and missing key, model, or endpoint checks. Use it when users ask why there are no models, whether an API Key is configured, or which providers are currently configured.",
"ai_chat.inspection.tool_info.inspect_ai_providers.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_providers.tool_description": "Read the current AI provider configuration snapshot, including provider list, active provider, endpoint, selected model, declared model list, key presence, custom request header keys, and missing key, model, or endpoint checks.",
"ai_chat.inspection.tool_info.inspect_ai_chat_readiness.desc": "Inspect whether current AI chat can send",
"ai_chat.inspection.tool_info.inspect_ai_chat_readiness.detail": "Returns whether the current chat input has all prerequisites to send, including active provider, missing key or endpoint on the current provider, selected model, current connection context, attached table context, and next actions. Use it when users ask why sending is disabled or what the chat input is missing.",
"ai_chat.inspection.tool_info.inspect_ai_chat_readiness.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_chat_readiness.tool_description": "Read the send-prerequisite state of the current AI chat input, including active provider, key and endpoint completeness, selected model, current connection context, attached table schema count, and suggested next actions.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.desc": "Inspect AI upstream request payloads and status",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.detail": "Reads recent AI upstream request start, completion, and failure records from gonavi.log, filtered by provider, requestId, or keyword, then returns request body preview, payload structure summary, endpoint, status code, latency, and error summary. Use it when users need to verify the real payload sent upstream, diagnose request parameter compatibility, confirm whether tools were sent, or inspect redacted request logs.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.params": "provider?, requestId?, keyword?, lineLimit?(default 160), requestLimit?(default 12), includeBody?(default true), includePayloadSummary?(default true), includeLines?(default false)",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.tool_description": "Read AI upstream request records from GoNavi application logs and return requestId, provider, method, endpoint, request body preview, redacted payload structure summary, status code, latency, and error summary. Use it when users mention upstream request payloads, requestId, provider parameters, missing tool calls, model API errors, or need to verify the real payload just sent upstream.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.provider": "Optional. Inspect only one provider, such as openai, anthropic, or gemini. Case-insensitive.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.requestId": "Optional. Filter by the exact requestId in logs, useful when continuing from an error log.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.keyword": "Optional. Further filter by requestId, provider, endpoint, bodyPreview, or error, such as model name, API path, or parameter name.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.lineLimit": "Optional. Maximum number of tail log lines to read. Default 160, maximum 300.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.requestLimit": "Optional. Maximum number of request summaries to return. Default 12, maximum 40.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.includeBody": "Optional. Whether to return the redacted request body preview. Default true; set false when only status is needed.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.includePayloadSummary": "Optional. Whether to parse the request body and return model, message role distribution, tool count/name list, stream, and tool_choice summary. Default true; message bodies and keys are not returned.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.includeLines": "Optional. Whether to include redacted raw log lines. Default false; enable only when original lines need to be quoted.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.bodyPreviewLimit": "Optional. Maximum characters for one body preview. Default 6000, maximum 12000.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.desc": "Inspect AI built-in tool catalog and argument hints",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.detail": "Returns GoNavi AI built-in tools, recommended probe flows, argument descriptions, and current MCP tool summaries by keyword or tool name. Use it when users ask which tool should be used, how to fill arguments, which built-in tools exist, or when AI needs to choose a probe route first.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.params": "keyword?, toolName?, includeMCPTools?(default true), limit?(default 12)",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.tool_description": "Read the GoNavi AI tool catalog snapshot, filterable by keyword or tool name, and return recommended tool-call flows, built-in tool descriptions, argument hints, and currently discovered MCP tool summaries.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.param.keyword": "Optional. Filter tools and flows by problem keyword, such as mcp, connection failure, transaction, shortcut, schema, or log.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.param.toolName": "Optional. Query by exact built-in tool name, such as inspect_mcp_draft or inspect_sql_risk.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.param.includeMCPTools": "Optional. Whether to include currently discovered MCP tool summaries. Default true.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.param.limit": "Optional. Maximum number of flows, built-in tools, and MCP tools to return. Default 12, maximum 40.",
"ai_chat.inspection.tool_info.inspect_ai_guidance.desc": "Inspect current AI prompts and Skills configuration",
"ai_chat.inspection.tool_info.inspect_ai_guidance.detail": "Returns current user-defined global, database, and JVM prompts, plus enabled Skills, scopes, dependency tools, and skill prompt content. Use it when users ask which prompts are currently attached, why AI answers this way, or which Skills are active.",
"ai_chat.inspection.tool_info.inspect_ai_guidance.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_guidance.tool_description": "Read the current AI prompt and skill configuration snapshot, including user-defined prompts, enabled Skills, scopes, dependency tools, and each system prompt.",
"ai_chat.inspection.tool_info.inspect_ai_context.desc": "Inspect currently attached AI table-schema context",
"ai_chat.inspection.tool_info.inspect_ai_context.detail": "Returns the tables currently attached to the AI conversation context, their connection and database, and optional DDL previews. Use it when users ask which table structures are attached or what the current AI context contains.",
"ai_chat.inspection.tool_info.inspect_ai_context.params": "includeDDL?(default false), ddlLimit?(default 4000)",
"ai_chat.inspection.tool_info.inspect_ai_context.tool_description": "Read the table-schema snapshot currently attached to the AI conversation context, including connection, database, table name, and optional DDL content.",
"ai_chat.inspection.tool_info.inspect_ai_context.param.includeDDL": "Optional. Whether to include each table's DDL content. Default false.",
"ai_chat.inspection.tool_info.inspect_ai_context.param.ddlLimit": "Optional. DDL truncation length. Default 4000, maximum 12000.",
"ai_chat.inspection.tool_info.inspect_current_connection.desc": "Inspect the current active connection or data source summary",
"ai_chat.inspection.tool_info.inspect_current_connection.detail": "Returns current active connection type, address, port, current database, SSH/proxy/HTTP tunnel state, and table information bound to the active tab. Use it when users ask which database is connected, whether SSH is used, or what type the current data source is.",
"ai_chat.inspection.tool_info.inspect_current_connection.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_current_connection.tool_description": "Read the real summary of the current active connection or active-tab data source, including connection type, address, port, current database, SSH/proxy/HTTP tunnel state, and table context bound to the active tab.",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.desc": "Inspect frontend capabilities supported by the current connection",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.detail": "Returns the data-source capability matrix for the current or specified connection, including query editor support, SQL export, copy INSERT, create/rename/delete database support, forced read-only result state, and whether manual or approximate counts are preferred. Use it when users ask why database creation, deletion, result editing, or other actions are unavailable.",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.params": "connectionId?(default current active connection)",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.tool_description": "Read the frontend capability matrix for the current active connection or specified saved connection, including query editor support, SQL export, copy INSERT, create/rename/delete database support, forced read-only result state, and count strategy preferences.",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.param.connectionId": "Optional. Connection ID to inspect. If omitted, the current active connection is used.",
"ai_chat.inspection.tool_info.inspect_saved_connections.desc": "Inspect locally saved connections",
"ai_chat.inspection.tool_info.inspect_saved_connections.detail": "Filters local saved data sources by keyword or database type and returns the data-source list, type distribution, address, current database, and SSH/proxy/HTTP tunnel state. Use it when users ask which connections are saved locally, want to find mysql or postgres connections, or need to know which connection has SSH configured.",
"ai_chat.inspection.tool_info.inspect_saved_connections.params": "keyword?, type?, limit?",
"ai_chat.inspection.tool_info.inspect_saved_connections.tool_description": "Read locally saved connections, optionally filtered by keyword and database type, and return each connection's type, address, current database, SSH/proxy/HTTP tunnel summary, and related metadata.",
"ai_chat.inspection.tool_info.inspect_saved_connections.param.keyword": "Optional. Filter by connection name, ID, type, host, database name, SSH address, or proxy address.",
"ai_chat.inspection.tool_info.inspect_saved_connections.param.type": "Optional. Only inspect one database type, such as mysql, postgres, redis, or mongodb.",
"ai_chat.inspection.tool_info.inspect_saved_connections.param.limit": "Optional. Maximum number of connections to return. Default 20, maximum 100.",
"ai_chat.inspection.tool_info.inspect_redis_topology.desc": "Diagnose Redis standalone, Sentinel, and Cluster configuration",
"ai_chat.inspection.tool_info.inspect_redis_topology.detail": "Reads local Redis connection topology summaries and returns standalone, Sentinel, and Cluster nodes, master, authentication state, DB range, redacted URI examples, status level, and next actions. Use it when users ask how to configure Redis Sentinel or Cluster, why DB switching fails, or how Cluster multi-DB behavior works.",
"ai_chat.inspection.tool_info.inspect_redis_topology.params": "connectionId?, keyword?, limit?, includeRecommendations?(default true)",
"ai_chat.inspection.tool_info.inspect_redis_topology.tool_description": "Read local Redis standalone, Sentinel, and Cluster topology summaries, returning nodes, Sentinel master, authentication state, DB selection, TLS/SSH/proxy state, backend adapter, redacted URI examples, status level, blockers, potential configuration risks, and recommendations. Results do not echo Redis or Sentinel passwords.",
"ai_chat.inspection.tool_info.inspect_redis_topology.param.connectionId": "Optional. Diagnose only one Redis connection ID.",
"ai_chat.inspection.tool_info.inspect_redis_topology.param.keyword": "Optional. Filter by connection name, address, topology, Sentinel master, or node address.",
"ai_chat.inspection.tool_info.inspect_redis_topology.param.limit": "Optional. Maximum number of Redis connections to return. Default 20, maximum 100.",
"ai_chat.inspection.tool_info.inspect_redis_topology.param.includeRecommendations": "Optional. Whether to return repair recommendations. Default true.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.desc": "Inspect local external SQL directory assets",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.detail": "Filters local external SQL directories by keyword, connection, or database, and returns directory path, bound connection/database, and whether SQL files from those directories are currently open. Use it when users mention external SQL directories, ask which directory contains a script, or need to identify the external directory for an open SQL file.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.params": "keyword?, connectionId?, dbName?, limit?",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.tool_description": "Read locally configured external SQL directories, optionally filtered by keyword, connection, and database, and return directory path, bound connection/database, and summaries of currently open external SQL file tabs.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.param.keyword": "Optional. Filter by directory name, path, connection name, or database name.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.param.connectionId": "Optional. Only inspect external SQL directories bound to one connection.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.param.dbName": "Optional. Only inspect external SQL directories bound to one database.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.param.limit": "Optional. Maximum number of directories to return. Default 20, maximum 100.",
"ai_chat.inspection.tool_info.inspect_external_sql_file.desc": "Read external SQL file content",
"ai_chat.inspection.tool_info.inspect_external_sql_file.detail": "Reads a specific SQL file inside a configured external SQL directory and returns its directory, bound connection/database, whether it already has an open tab, and a truncated content preview. Use it when users ask to inspect a script in a directory or explain what report.sql does.",
"ai_chat.inspection.tool_info.inspect_external_sql_file.params": "filePath, previewCharLimit?",
"ai_chat.inspection.tool_info.inspect_external_sql_file.tool_description": "Read the content preview of a specified external SQL file, only for SQL files inside configured external SQL directories. Return file path, owning directory, bound connection/database, whether it is already open in the workspace, and truncated body content.",
"ai_chat.inspection.tool_info.inspect_external_sql_file.param.filePath": "Required. Absolute path of the SQL file to read, usually found with inspect_external_sql_directories first.",
"ai_chat.inspection.tool_info.inspect_external_sql_file.param.previewCharLimit": "Optional. Maximum characters returned in the content preview. Default 12000, maximum 40000.",
"ai_chat.inspection.tool_info.inspect_active_tab.desc": "Inspect the current active tab context",
"ai_chat.inspection.tool_info.inspect_active_tab.detail": "Returns the current active tab type, connection, database, table name, and draft content in the current SQL or command tab, truncated when long. Use it when users mention the current SQL, ask to optimize the editor statement, or refer to the current tab.",
"ai_chat.inspection.tool_info.inspect_active_tab.params": "includeContent?(default true)",
"ai_chat.inspection.tool_info.inspect_active_tab.tool_description": "Get the current active tab context snapshot, including tab type, connection, database, table name, and draft content from the current SQL or command tab.",
"ai_chat.inspection.tool_info.inspect_active_tab.param.includeContent": "Optional. Whether to include SQL or command draft content from the tab. Default true.",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.desc": "Inspect currently open workspace tabs",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.detail": "Returns the list of tabs open in the current workspace, which one is active, and each tab's connection, database, table name, and related context. Use it when users ask which SQL tabs are open, what exists in the workspace, or want to compare several query tabs.",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.params": "limit?(default 12), includeContent?(default false)",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.tool_description": "Get an overview of currently open workspace tabs, including active tab, tab type, connection, database, table name, and optional SQL or command draft content.",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.param.limit": "Optional. Maximum number of tabs to return. Default 12, maximum 30.",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.param.includeContent": "Optional. Whether to include SQL or command draft content from tabs. Default false."
}