mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-18 20:49:45 +08:00
- 补齐 DataGrid、DataViewer、DefinitionViewer、JVM 等模块多语言文案与回归测试 - 收口 JVM 前后端展示、诊断、监控和资源呈现相关多语言路径 - 更新六语言共享词典并保留 raw 边界
4396 lines
520 KiB
JSON
4396 lines
520 KiB
JSON
{
|
||
"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": "Предупреждение",
|
||
"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.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.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.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.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.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.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.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.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.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": "Сохранить запрос",
|
||
"query.stop": "Остановить",
|
||
"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_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.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.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.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_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.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.timeseries": "Базы данных временных рядов",
|
||
"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.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.oceanBase": "MySQL / Oracle арендатор",
|
||
"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.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.select_object_required": "Выберите хотя бы один объект.",
|
||
"sidebar.message.backing_up_selected_objects": "Создается резервная копия выбранных объектов: {{count}}...",
|
||
"sidebar.message.exporting_selected_object_data": "Экспортируются данные выбранных объектов: {{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.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.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.operation_create_failed": "Не удалось создать: {{error}}",
|
||
"sidebar.sql_file.default_name": "SQL-файл",
|
||
"sidebar.message.sql_file_context_incomplete": "Контекст SQL-файла неполный.",
|
||
"sidebar.message.read_sql_file_failed": "Не удалось прочитать SQL-файл: {{error}}",
|
||
"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_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.command_search.label": "Искать таблицы, подключения, действия",
|
||
"sidebar.command_search.placeholder": "Искать таблицы, подключения, действия... или спросить AI",
|
||
"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.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.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.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.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.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.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}})",
|
||
"sidebar.tab.redis_command": "Команда - {{database}}",
|
||
"sidebar.tab.redis_monitor": "Мониторинг - {{database}}",
|
||
"tab_manager.menu.close_all": "Закрыть все вкладки",
|
||
"tab_manager.menu.close_left": "Закрыть вкладки слева",
|
||
"tab_manager.menu.close_other": "Закрыть остальные вкладки",
|
||
"tab_manager.menu.close_right": "Закрыть вкладки справа",
|
||
"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": "Тип",
|
||
"sidebar.message.no_visible_databases": "Видимые базы данных или схемы не возвращены. Проверьте права учетной записи или обновите через контекстное меню.",
|
||
"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.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.menu.sort_by_name": "Сортировать по имени",
|
||
"sidebar.menu.sort_by_frequency": "Сортировать по частоте использования",
|
||
"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.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.design_table": "Проектировать таблицу",
|
||
"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.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.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.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.canceling": "Отмена",
|
||
"jvm_diagnostic.presentation.phase.diagnostic": "Диагностическое событие",
|
||
"jvm_diagnostic.presentation.event.diagnostic": "Диагностический вывод",
|
||
"jvm_diagnostic.presentation.event.chunk": "Фрагмент вывода",
|
||
"jvm_diagnostic.presentation.event.done": "Выполнение завершено",
|
||
"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_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.snippet_settings": "Настройки сниппетов...",
|
||
"query_editor.format.shortcut_settings": "Настройки сочетаний клавиш...",
|
||
"query_editor.message.format_failed": "Ошибка форматирования: возможно, синтаксис SQL неверен.",
|
||
"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.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_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.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.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.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.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.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.commit_failed": "Не удалось зафиксировать изменения: {{detail}}",
|
||
"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_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.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.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": "Возвращенное сообщение об ошибке: неизвестная ошибка",
|
||
"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.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.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.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.duckdb.comment_hint": "-- DuckDB не может сохранять комментарии столбцов через COMMENT ON COLUMN. Комментарий для столбца {{column}} останется только в предпросмотре дизайнера.",
|
||
"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.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.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",
|
||
"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_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.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.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_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.connection_tooltip": "Текущий контекст запроса данных",
|
||
"ai_chat.input.context.memory_tooltip": "Использование памяти текущего сеанса. При достижении лимита {{limit}} начнется автоматическое сжатие.",
|
||
"ai_chat.input.context.tag_label": "Связанный контекст ({{count}})",
|
||
"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.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": "Введите сообщение... (Enter — отправить, Shift+Enter — новая строка, / — команды)",
|
||
"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.tooltip.attach_table_context": "Добавить контекст таблиц базы данных",
|
||
"ai_chat.input.tooltip.upload_image": "Загрузить изображение или скриншот",
|
||
"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.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.get_connections": "Загрузить доступные подключения",
|
||
"ai_chat.message.tool_call.get_databases": "Сканировать список баз данных",
|
||
"ai_chat.message.tool_call.get_tables": "Анализировать сведения о структуре таблиц",
|
||
"ai_chat.message.tool_call.get_columns": "Прочитать список столбцов",
|
||
"ai_chat.message.tool_call.get_table_ddl": "Прочитать выражение CREATE TABLE",
|
||
"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_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_table_ddl_failed": "Не удалось получить выражение CREATE TABLE: {{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.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.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": "Серия M2.7 / M2.5 (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.tools.description": "При работе с вопросами по базам данных AI-ассистент может автоматически вызывать эти встроенные инструменты, чтобы получить реальные данные без ручного вмешательства.",
|
||
"ai_settings.tools.workflow": "💡 Процесс: get_connections → get_databases → get_tables → get_columns → сформировать SQL",
|
||
"ai_settings.tools.params_label": "Параметры:",
|
||
"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.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_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_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.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.mongodb_hint": "Сейчас поддерживаются только MongoDB 1.17.x и 2.x. Более старые версии 1.x недоступны для установки.",
|
||
"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.open_directory_unsupported": "На этой платформе нельзя открывать каталоги: {{platform}}",
|
||
"driver_manager.backend.error.open_directory_failed": "Не удалось открыть каталог драйверов: {{detail}}",
|
||
"driver_manager.backend.error.create_directory_failed": "Не удалось создать каталог драйверов: {{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.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.scan_local_directory_failed": "Не удалось просканировать локальный каталог драйверов: {{detail}}",
|
||
"driver_manager.backend.error.open_local_package_failed": "Не удалось открыть локальный пакет драйвера: {{detail}}",
|
||
"driver_manager.backend.error.read_local_package_entry_failed": "Не удалось прочитать запись локального пакета драйвера: {{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.prebuilt_downloads_failed": "Не удалось скачать готовый пакет: {{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.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.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.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_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.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.database_name_required": "Имя базы данных не может быть пустым",
|
||
"file.backend.error.directory_path_required": "Путь к каталогу не может быть пустым",
|
||
"file.backend.error.export_unsupported_format": "Неподдерживаемый формат экспорта: {{format}}",
|
||
"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.open_file_failed": "Не удалось открыть файл: {{detail}}",
|
||
"file.backend.error.query_required": "Запрос не может быть пустым",
|
||
"file.backend.error.read_file_error_summary": "Ошибка чтения файла: {{detail}}. Выполнено: {{count}}.",
|
||
"file.backend.error.read_file_info_failed": "Не удалось прочитать информацию о файле: {{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.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.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.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.message.provider_test_success": "Проверка подключения к эндпоинту выполнена успешно",
|
||
"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.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.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",
|
||
"ai_settings.message.load_provider_failed": "Не удалось прочитать конфигурацию поставщика"
|
||
}
|