feat(i18n): 完善多模块多语言适配与发版验证

扩展前后端多语言文案与共享词典。增加多模块 i18n 回归测试与 guard。收口外部 SQL 菜单和弹窗多语言文案。
This commit is contained in:
tianqijiuyun-latiao
2026-06-17 13:17:33 +08:00
parent 76b0163bd3
commit 9364c48ef0
135 changed files with 8401 additions and 1325 deletions

View File

@@ -470,6 +470,35 @@
"app.theme.ui_version.legacy.description": "Текущий стабильный интерфейс, в котором полностью доступны все функции.",
"app.theme.ui_version.legacy.label": "Старый UI",
"app.theme.ui_version.platform_hint": "Windows, macOS и Linux поддерживают переключение. Изменения применяются сразу, а некоторые модальные окна используют новый стиль при следующем открытии.",
"app.theme.ui_version.sidebar_search.command": "Новый командный поиск",
"app.theme.ui_version.sidebar_search.filter": "Старый фильтр боковой панели",
"app.theme.ui_version.sidebar_search.hint": "Новый командный поиск удобен для перехода к подключениям, таблицам и действиям. Включите синхронизацию на панели, чтобы постоянно фильтровать левое дерево; старый фильтр боковой панели показывает поле ввода напрямую и сохраняет текст фильтра.",
"app.theme.ui_version.sidebar_search.title": "Новый режим поиска в левой боковой панели",
"app.theme.tab_display.title": "Отображение меток вкладок",
"app.theme.tab_display.description": "Настройте порядок отображения имени подключения, типа объекта, имени объекта, базы данных, Schema и Host/IP. В двухстрочном режиме контекст можно вынести во вторую строку.",
"app.theme.tab_display.layout.single": "Одна строка",
"app.theme.tab_display.layout.double": "Две строки",
"app.theme.tab_display.badge.current": "Текущий",
"app.theme.tab_display.row.primary": "Основная строка",
"app.theme.tab_display.row.secondary": "Вторая строка",
"app.theme.tab_display.action.move_up": "Вверх",
"app.theme.tab_display.action.move_down": "Вниз",
"app.theme.tab_display.preview.prefix": "Текущий предпросмотр: ",
"app.theme.tab_display.preview.default_label": "Метка по умолчанию",
"app.theme.tab_display.preview.secondary": ", вторая строка {{labels}}",
"app.theme.tab_display.preview.focused": "; выбрано {{label}}",
"app.theme.tab_display.element.connection.label": "Подключение",
"app.theme.tab_display.element.connection.description": "Псевдоним подключения или имя среды, например DEV",
"app.theme.tab_display.element.kind.label": "Тип объекта",
"app.theme.tab_display.element.kind.description": "Метки типов, например SQL / TABLE / VIEW",
"app.theme.tab_display.element.object.label": "Имя объекта",
"app.theme.tab_display.element.object.description": "Основные имена, например таблицы, запроса или ресурса",
"app.theme.tab_display.element.database.label": "База данных",
"app.theme.tab_display.element.database.description": "Текущее имя DB / catalog",
"app.theme.tab_display.element.schema.label": "Schema",
"app.theme.tab_display.element.schema.description": "Префикс schema / owner",
"app.theme.tab_display.element.host.label": "Host/IP",
"app.theme.tab_display.element.host.description": "Краткий адрес целевого подключения",
"app.theme.ui_version.title": "Версия интерфейса",
"app.theme.ui_version.v2.badge": "Beta",
"app.theme.ui_version.v2.description": "Переработанный компактный интерфейс с усиленным входом AI и обзором таблиц.",
@@ -493,6 +522,10 @@
"app.window_zoom.message.windows_only": "Эта функция доступна только в Windows",
"app.tools.entry.shortcuts.description": "Просмотр и настройка глобальных горячих клавиш.",
"app.tools.entry.shortcuts.title": "Управление горячими клавишами",
"app.tools.entry.schema_compare.description": "Сравнивает различия структуры исходной и целевой таблиц, только предварительный просмотр без выполнения.",
"app.tools.entry.schema_compare.title": "Сравнение схем",
"app.tools.entry.data_compare.description": "Анализирует добавленные, обновленные, удаленные и неизмененные строки по первичному ключу.",
"app.tools.entry.data_compare.title": "Сравнение данных",
"app.tools.entry.sync.description": "Открыть рабочий процесс синхронизации между источниками.",
"app.tools.entry.sync.title": "Синхронизация данных",
"app.tools.title": "Центр инструментов",
@@ -527,6 +560,18 @@
"app.browser_mock.export_sql_unsupported": "Браузерный mock не поддерживает экспорт SQL-файлов",
"app.browser_mock.import_connection_package_unsupported": "Браузерный mock не поддерживает импорт пакетов восстановления; поддерживаются только старые массивы подключений JSON",
"app.browser_mock.export_connection_package_unsupported": "Браузерный mock не поддерживает экспорт пакетов восстановления",
"app.browser_mock.mcp_http.not_running": "Служба GoNavi MCP HTTP не запущена",
"app.browser_mock.mcp_http.started": "Служба GoNavi MCP HTTP запущена",
"app.browser_mock.mcp_http.stopped": "Служба GoNavi MCP HTTP остановлена",
"app.browser_mock.mcp_server.command_required": "Команда MCP не может быть пустой",
"app.browser_mock.mcp_server.test_success": "Проверка MCP mock выполнена успешно",
"app.browser_mock.mcp_tool.unavailable": "Браузерный mock не подключен к реальной службе MCP",
"app.browser_mock.mcp_client.claude_code.installed": "Пользовательская конфигурация MCP для Claude Code записана. Перезапустите Claude CLI, после чего GoNavi появится в User MCPs в /mcp.",
"app.browser_mock.mcp_client.claude_code.not_detected": "Пользовательская конфигурация GoNavi MCP для Claude Code не обнаружена",
"app.browser_mock.mcp_client.codex.installed": "Пользовательская конфигурация MCP для Codex записана. Перезапустите Codex CLI или настольное приложение, чтобы увидеть GoNavi.",
"app.browser_mock.mcp_client.codex.path_mismatch": "В Codex обнаружена запись GoNavi MCP, но она не совпадает с текущим путем установки GoNavi. Рекомендуется обновить.",
"app.browser_mock.provider.test_failed_detail": "Проверка подключения не удалась: {{detail}}",
"app.browser_mock.provider.test_success": "Проверка подключения к конечной точке выполнена успешно",
"app.update.action.hide_to_background": "Скрыть в фон",
"app.update.action.install_update": "Установить обновление",
"app.update.action.open_install_directory": "Открыть каталог установки",
@@ -596,7 +641,66 @@
"query.new": "Новый запрос",
"query.run": "Выполнить",
"query.save": "Сохранить запрос",
"saved_query.default_name": "Запрос {{index}}",
"query.stop": "Остановить",
"message_publish_modal.title": "Тестовая отправка сообщения",
"message_publish_modal.title_with_connection": "Тестовая отправка сообщения · {{connectionName}}",
"message_publish_modal.action.send": "Отправить",
"message_publish_modal.error.build_command_failed": "Не удалось создать команду отправки",
"message_publish_modal.error.send_failed_detail": "Отправка не удалась: {{detail}}",
"message_publish_modal.error.unknown_error": "Неизвестная ошибка",
"message_publish_modal.field.exchange.label": "Exchange (необязательно)",
"message_publish_modal.field.exchange.extra": "Оставьте пустым, чтобы использовать exchange по умолчанию. Если указан пользовательский exchange, убедитесь, что для целевой Queue создан binding.",
"message_publish_modal.field.exchange.placeholder": "Пример: events.topic",
"message_publish_modal.field.routing_key.label": "Routing Key (необязательно)",
"message_publish_modal.field.routing_key.extra": "Оставьте пустым, чтобы по умолчанию использовать имя текущей Queue.",
"message_publish_modal.field.routing_key.placeholder": "Пример: orders.queue",
"message_publish_modal.field.qos.extra": "0 означает at most once, 1 означает at least once, 2 означает exactly once.",
"message_publish_modal.field.retain.label": "Retain-сообщение",
"message_publish_modal.field.tag.label": "Tag (необязательно)",
"message_publish_modal.field.tag.extra": "Оставьте пустым, чтобы не фильтровать и не записывать Tag.",
"message_publish_modal.field.delay_level.label": "Delay Level (необязательно)",
"message_publish_modal.field.delay_level.extra": "RocketMQ использует фиксированные уровни задержки. 0 означает немедленную отправку.",
"message_publish_modal.field.body_mode.label": "Тип тела сообщения",
"message_publish_modal.field.body.label": "Тело сообщения",
"message_publish_modal.field.body.required": "Введите тело сообщения",
"message_publish_modal.field.body.extra": "В режиме JSON требуется корректный JSON. В текстовом режиме содержимое отправляется как есть.",
"message_publish_modal.field.body.placeholder": "Введите тело сообщения",
"message_publish_modal.field.headers.label": "Headers (необязательно)",
"message_publish_modal.field.headers.extra": "Должно быть JSON-объектом, например {{example}}.",
"message_publish_modal.field.properties.label": "Properties (необязательно)",
"message_publish_modal.field.properties.extra": "Должно быть JSON-объектом, например {{example}}.",
"message_publish_modal.option.no_delay": "Без задержки",
"message_publish_modal.option.text": "Текст",
"message_publish_modal.footer.success_prefix": "При успешной отправке возвращается",
"message_publish_modal.footer.success_suffix": ", чтобы подтвердить, было ли отправлено это тестовое сообщение.",
"message_publish.field.body": "Тело сообщения",
"message_publish.field.message_key": "Ключ сообщения",
"message_publish.error.destination_required": "Введите целевой Topic / Queue",
"message_publish.error.required_field": "Введите {{field}}",
"message_publish.error.invalid_json_detail": "{{field}} не является корректным JSON: {{detail}}",
"message_publish.error.json_object_required": "{{field}} должен быть JSON-объектом",
"message_publish.error.mqtt_wildcard_topic": "Topic для отправки MQTT не может содержать подстановочные символы + или #",
"message_publish.error.unsupported_type": "Текущий источник данных не поддерживает тестовую отправку сообщений: {{type}}",
"message_publish.presentation.rabbitmq.destination_placeholder": "Пример: orders.queue",
"message_publish.presentation.rabbitmq.destination_required": "Введите Queue",
"message_publish.presentation.rabbitmq.alert": "Эта форма автоматически собирает RabbitMQ publish JSON-команду и отправляет тестовое сообщение через Management API.",
"message_publish.presentation.rabbitmq.success_hint": "Если Exchange пустой, используется exchange по умолчанию, а имя Queue применяется как routing key.",
"message_publish.presentation.rocketmq.destination_placeholder": "Пример: orders.events",
"message_publish.presentation.topic_required": "Введите Topic",
"message_publish.presentation.rocketmq.alert": "Эта форма автоматически собирает RocketMQ publish JSON-команду и отправляет тестовое сообщение через NameServer/Broker.",
"message_publish.presentation.rocketmq.success_hint": "Tag, Keys, Delay Level и Properties записываются в атрибуты сообщения RocketMQ.",
"message_publish.presentation.keys_label": "Ключи сообщения Keys (необязательно)",
"message_publish.presentation.rocketmq.key_placeholder": "Можно ввести несколько значений Key через запятую",
"message_publish.presentation.rocketmq.tag_placeholder": "Пример: TagA",
"message_publish.presentation.mqtt.destination_placeholder": "Пример: devices/device-001/telemetry",
"message_publish.presentation.mqtt.alert": "Эта форма автоматически собирает MQTT publish JSON-команду и отправляет тестовое сообщение напрямую через broker.",
"message_publish.presentation.mqtt.success_hint": "QoS и retain можно задать отдельно. Пустые поля используют значения по умолчанию из текущего подключения.",
"message_publish.presentation.kafka.destination_placeholder": "Пример: orders.events",
"message_publish.presentation.kafka.alert": "Эта форма автоматически собирает Kafka publish JSON-команду и вызывает backend для тестовой отправки.",
"message_publish.presentation.kafka.success_hint": "Headers отправляются как Kafka Record Headers.",
"message_publish.presentation.key_label": "Ключ сообщения Key (необязательно)",
"message_publish.presentation.kafka.key_placeholder": "Необязательно. В режиме JSON введите одну корректную строку JSON.",
"connection_modal.action.browse": "Выбрать...",
"connection_modal.action.disable": "Отключить",
"connection_modal.action.discover_members": "Обнаружить участников",
@@ -644,6 +748,7 @@
"connection_modal.field.tunnel_password_optional": "Пароль HTTP Tunnel (необязательно)",
"connection_modal.field.tunnel_username_optional": "Имя пользователя HTTP Tunnel (необязательно)",
"connection_modal.field.username": "Имя пользователя",
"connection_modal.field.username.optional_placeholder": "Оставьте пустым, если аутентификация отключена",
"connection_modal.help.additional_hosts": "Необязательные участники MongoDB, разделенные запятой, точкой с запятой или пробелом.",
"connection_modal.help.additional_srv_hosts": "Необязательные дополнительные SRV-хосты для обнаружения MongoDB.",
"connection_modal.help.connection_timeout": "Применяется к тестам подключения и загрузке метаданных. Диапазон: 1-300 секунд.",
@@ -707,6 +812,66 @@
"connection_modal.jvm.read_only_first": "Предпочитать операции только для чтения",
"connection_modal.jvm.security_policy": "Политика безопасности",
"connection_modal.message.srv_with_ssh_dns_warning": "SRV вместе с SSH Tunnel может зависеть от локального DNS. Если разрешение не удается, используйте стандартные хосты.",
"connection_modal.messageQueue.kafka.defaultTopic.label": "Topic по умолчанию (необязательно)",
"connection_modal.messageQueue.kafka.defaultTopic.help": "Если поле пустое, Topic нужно явно указать в SQL. После заполнения SHOW, CONSUME или SELECT могут сразу выполнять предварительный просмотр.",
"connection_modal.messageQueue.kafka.defaultTopic.placeholder": "Например: orders.events",
"connection_modal.messageQueue.rocketmq.defaultTopic.label": "Topic по умолчанию (необязательно)",
"connection_modal.messageQueue.rocketmq.defaultTopic.help": "Если поле пустое, Topic нужно явно указать в SQL. В параметрах подключения можно дополнительно задать groupId, namespace, tag, pullBatchSize и startOffset.",
"connection_modal.messageQueue.rocketmq.defaultTopic.placeholder": "Например: orders.events",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.label": "Topic / Filter по умолчанию (необязательно)",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.help": "Если поле пустое, Topic нужно явно указать в SQL. После заполнения SHOW, CONSUME или SELECT могут сразу выполнять предварительный просмотр. Поддерживаются /, + и #.",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.placeholder": "Например: devices/+/telemetry",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.label": "Virtual Host по умолчанию (необязательно)",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.help": "Если поле пустое, по умолчанию используется /. После заполнения редактор запросов использует текущий vhost как контекст просмотра Queue и тестовой отправки.",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.placeholder": "Например: / или orders-vhost",
"connection_modal.messageQueue.topology.cluster.label": "Режим кластера",
"connection_modal.messageQueue.kafka.topology.single.label": "Один Broker",
"connection_modal.messageQueue.kafka.topology.single.description": "Настраивает один bootstrap broker для локальной или простой среды.",
"connection_modal.messageQueue.kafka.topology.cluster.description": "Настраивает несколько bootstrap broker, чтобы повысить успешность обнаружения и failover.",
"connection_modal.messageQueue.rocketmq.topology.single.label": "Один NameServer",
"connection_modal.messageQueue.rocketmq.topology.single.description": "Настраивает один NameServer для локальной или простой среды.",
"connection_modal.messageQueue.rocketmq.topology.cluster.description": "Настраивает несколько NameServer, чтобы повысить успешность обнаружения маршрутов и failover.",
"connection_modal.messageQueue.mqtt.topology.single.label": "Один Broker",
"connection_modal.messageQueue.mqtt.topology.single.description": "Настраивает один broker для локальной или простой среды.",
"connection_modal.messageQueue.mqtt.topology.cluster.description": "Настраивает несколько broker, чтобы повысить успешность обнаружения подключения и failover.",
"connection_modal.messageQueue.kafka.extraBrokers.label": "Дополнительные адреса Broker",
"connection_modal.messageQueue.kafka.extraBrokers.help": "Введите несколько адресов broker в формате host:port и нажмите Enter для подтверждения.",
"connection_modal.messageQueue.kafka.extraBrokers.placeholder": "Например: 10.10.0.12:9092, 10.10.0.13:9092",
"connection_modal.messageQueue.rocketmq.extraNameServers.label": "Дополнительные адреса NameServer",
"connection_modal.messageQueue.rocketmq.extraNameServers.help": "Введите несколько адресов NameServer в формате host:port и нажмите Enter для подтверждения.",
"connection_modal.messageQueue.rocketmq.extraNameServers.placeholder": "Например: 10.10.0.12:9876, 10.10.0.13:9876",
"connection_modal.messageQueue.mqtt.extraBrokers.label": "Дополнительные адреса Broker",
"connection_modal.messageQueue.mqtt.extraBrokers.help": "Введите несколько адресов broker в формате host:port и нажмите Enter для подтверждения.",
"connection_modal.messageQueue.mqtt.extraBrokers.placeholder": "Например: 10.10.0.12:1883, 10.10.0.13:1883",
"connection_modal.redis.topology.single.label": "Одиночный режим",
"connection_modal.redis.topology.single.description": "Подключение к одному узлу Redis.",
"connection_modal.redis.topology.cluster.label": "Режим кластера",
"connection_modal.redis.topology.cluster.description": "Redis Cluster с несколькими seed-узлами.",
"connection_modal.redis.topology.sentinel.label": "Режим Sentinel",
"connection_modal.redis.topology.sentinel.description": "Обнаруживает primary-узел через Sentinel для высокой доступности primary-replica.",
"connection_modal.redis.hosts.sentinel.label": "Дополнительные адреса узлов Sentinel",
"connection_modal.redis.hosts.sentinel.help": "Указанный выше host используется как первый Sentinel. Введите здесь другие узлы Sentinel в формате host:port.",
"connection_modal.redis.hosts.sentinel.placeholder": "Например: 10.10.0.12:26379, 10.10.0.13:26379",
"connection_modal.redis.hosts.cluster.label": "Дополнительные адреса узлов кластера",
"connection_modal.redis.hosts.cluster.help": "Указанный выше host используется как primary-узел. Введите здесь другие seed-узлы в формате host:port.",
"connection_modal.redis.hosts.cluster.placeholder": "Например: 10.10.0.12:6379, 10.10.0.13:6379",
"connection_modal.redis.sentinel.master.label": "Имя Sentinel master",
"connection_modal.redis.sentinel.master.help": "Введите имя monitor из конфигурации Sentinel, например mymaster.",
"connection_modal.redis.sentinel.master.required": "Введите имя Sentinel master",
"connection_modal.redis.sentinel.master.placeholder": "Например: mymaster",
"connection_modal.redis.credentials.primary.label": "Пароль (необязательно)",
"connection_modal.redis.credentials.primary.placeholder.empty": "Пароль Redis, если задан requirepass",
"connection_modal.redis.credentials.primary.placeholder.retained": "Сохраненный пароль Redis",
"connection_modal.redis.credentials.sentinelUser.label": "Имя пользователя Sentinel (необязательно)",
"connection_modal.redis.credentials.sentinelUser.placeholder": "Оставьте пустым, если Sentinel не использует имя пользователя ACL",
"connection_modal.redis.credentials.sentinelPassword.label": "Пароль Sentinel (необязательно)",
"connection_modal.redis.credentials.sentinelPassword.placeholder.empty": "Пароль аутентификации самого Sentinel. Оставьте пустым, чтобы ничего не отправлять.",
"connection_modal.redis.credentials.sentinelPassword.placeholder.retained": "Сохраненный пароль Sentinel",
"connection_modal.redis.credentials.sentinelPassword.clear": "Очистить сохраненный пароль Sentinel",
"connection_modal.redis.credentials.sentinelPassword.description": "Пароль Sentinel уже сохранен. Оставьте поле пустым, чтобы продолжить использовать его, или введите новое значение для замены.",
"connection_modal.redis.databaseScope.label": "Показываемые базы данных (пусто значит все)",
"connection_modal.redis.databaseScope.help": "Можно выбрать после успешной проверки подключения",
"connection_modal.redis.databaseScope.placeholder": "Выберите базы данных для показа",
"connection_modal.mongodb.auth.auto": "Авто",
"connection_modal.mongodb.auth.auto_description": "Позволить драйверу выбрать механизм аутентификации.",
"connection_modal.mongodb.auth.aws_iam_description": "Использовать аутентификацию AWS IAM. Учетные данные AWS IAM должны быть в среде выполнения.",
@@ -715,6 +880,35 @@
"connection_modal.mongodb.auth.scram_sha1_description": "Использовать аутентификацию SCRAM-SHA-1.",
"connection_modal.mongodb.auth.scram_sha256_description": "Использовать аутентификацию SCRAM-SHA-256.",
"connection_modal.mongodb.auth_mechanism": "Механизм аутентификации",
"connection_modal.mongodb.topology.single.label": "Одиночный режим",
"connection_modal.mongodb.topology.replica.label": "Replica Set / несколько узлов",
"connection_modal.mongodb.discovery.standard.label": "Стандартный адрес",
"connection_modal.mongodb.discovery.standard.description": "Подключение напрямую через host:port или список узлов Replica Set.",
"connection_modal.mongodb.discovery.srv.label": "SRV-адрес",
"connection_modal.mongodb.discovery.srv.description": "Использовать mongodb+srv, чтобы DNS обнаружил целевые узлы.",
"connection_modal.mongodb.discovery.current": "Текущий",
"connection_modal.mongodb.discovery.srv_ssh_warning": "Если SRV и SSH Tunnel включены одновременно, может потребоваться локальное DNS-разрешение.",
"connection_modal.mongodb.replica.hosts.srv.label": "Дополнительные SRV-хосты (необязательно)",
"connection_modal.mongodb.replica.hosts.srv.help": "Введите несколько имен кандидатов host в формате host. Если оставить пустым, используется только host выше.",
"connection_modal.mongodb.replica.hosts.srv.placeholder": "Например: cluster-a.example.com, cluster-b.example.com",
"connection_modal.mongodb.replica.hosts.standard.label": "Дополнительные адреса узлов",
"connection_modal.mongodb.replica.hosts.standard.help": "Введите несколько адресов узлов в формате host:port и нажмите Enter для подтверждения.",
"connection_modal.mongodb.replica.hosts.standard.placeholder": "Например: 10.10.0.12:27017, 10.10.0.13:27017",
"connection_modal.mongodb.replica.set.label": "Имя Replica Set (необязательно)",
"connection_modal.mongodb.replica.set.placeholder": "Например: rs0",
"connection_modal.mongodb.replica.user.label": "Имя пользователя Replica Set (необязательно)",
"connection_modal.mongodb.replica.user.placeholder": "Оставьте пустым, чтобы использовать основное имя пользователя",
"connection_modal.mongodb.replica.password.label": "Пароль Replica Set (необязательно)",
"connection_modal.mongodb.replica.password.placeholder.empty": "Оставьте пустым, чтобы использовать основной пароль",
"connection_modal.mongodb.replica.password.placeholder.retained": "Сохраненный пароль Replica Set",
"connection_modal.mongodb.replica.password.clear": "Очистить сохраненный пароль Replica Set",
"connection_modal.mongodb.replica.password.description": "Пароль Replica Set уже сохранен. Оставьте поле пустым, чтобы продолжить использовать его, или введите новое значение для замены.",
"connection_modal.mongodb.members.role": "Роль",
"connection_modal.mongodb.members.health": "Состояние",
"connection_modal.mongodb.members.health.ok": "Норма",
"connection_modal.mongodb.members.health.error": "Ошибка",
"connection_modal.mongodb.policy.auth_source.label": "База аутентификации (authSource)",
"connection_modal.mongodb.policy.auth_source.placeholder": "По умолчанию используется database или admin",
"connection_modal.mongodb.read_preference": "readPreference",
"connection_modal.mongodb.read_preference.nearest": "Направлять чтение к ближайшему участнику.",
"connection_modal.mongodb.read_preference.primary": "Читать только с primary.",
@@ -878,6 +1072,9 @@
"connection_modal.message.save_security_refresh_failed": "Операция не удалась",
"connection_modal.message.save_failed": "Операция не удалась",
"connection_modal.message.test_requires_new_password": "Перед проверкой введите новый пароль подключения.",
"connection_modal.secret.blocking.redis_sentinel": "Перед проверкой введите новый пароль Sentinel или отмените очистку сохраненного пароля Sentinel",
"connection_modal.test.redis_database_list_timeout": "Подключение успешно, но загрузка списка баз данных Redis превысила время ожидания (>{{seconds}} сек.)",
"connection_modal.test.redis_database_list_failure": "Подключение успешно, но не удалось загрузить список баз данных Redis: {{detail}}",
"connection_modal.message.test_requires_new_ssh_password": "Перед проверкой введите новый SSH-пароль.",
"connection_modal.message.test_requires_new_proxy_password": "Перед проверкой введите новый пароль прокси.",
"connection_modal.message.test_requires_new_tunnel_password": "Перед проверкой введите новый пароль HTTP Tunnel.",
@@ -1018,20 +1215,32 @@
"sidebar.message.export_failed": "Ошибка экспорта: {{error}}",
"sidebar.message.backing_up_database": "Создается резервная копия базы данных {{database}}...",
"sidebar.message.exporting_database_schema": "Экспортируется структура базы данных {{database}}...",
"sidebar.message.exporting_database_backup": "Создается резервная копия {{database}} (структура и данные)...",
"sidebar.message.schema_export_target_missing": "Целевая схема не найдена, экспорт невозможен.",
"sidebar.message.exporting_schema_structure": "Экспортируется структура схемы {{schema}}...",
"sidebar.message.exporting_schema_backup": "Создается резервная копия схемы {{schema}} (структура и данные)...",
"sidebar.message.export_tables_same_database_required": "Выберите таблицы из одной базы данных.",
"sidebar.message.backing_up_selected_tables": "Создается резервная копия выбранных таблиц: {{count}}...",
"sidebar.message.exporting_selected_table_schema": "Экспортируется структура выбранных таблиц: {{count}}...",
"sidebar.message.load_database_list_failed": "Не удалось загрузить базы данных: {{error}}",
"sidebar.message.load_table_list_failed": "Не удалось загрузить таблицы: {{error}}",
"sidebar.message.locate_external_sql_file_not_found": "SQL-файл не найден во внешних SQL-каталогах: {{path}}",
"sidebar.message.locate_connection_not_found_for_object": "Подключение для текущего объекта не найдено",
"sidebar.message.locate_connection_not_in_tree": "Текущее подключение не найдено в левом дереве",
"sidebar.message.locate_database_loading": "Узел базы данных ещё загружается: {{database}}. Повторите попытку позже",
"sidebar.message.locate_database_not_found": "База данных не найдена в левом дереве: {{database}}",
"sidebar.message.locate_object_loading": "Объекты базы данных для {{object}} в {{database}} ещё загружаются. Повторите попытку позже",
"sidebar.message.locate_object_not_found": "{{object}} не найден в левом дереве: {{name}}. Обновите узел базы данных и повторите попытку",
"sidebar.message.select_object_required": "Выберите хотя бы один объект.",
"sidebar.message.backing_up_selected_objects": "Создается резервная копия выбранных объектов: {{count}}...",
"sidebar.message.exporting_selected_object_data": "Экспортируются данные выбранных объектов: {{count}}...",
"sidebar.message.exporting_selected_object_data": "Экспортируются данные {{format}} для выбранных объектов: {{count}}...",
"sidebar.message.exporting_selected_object_schema": "Экспортируется структура выбранных объектов: {{count}}...",
"sidebar.message.export_success_skipped_views": "Экспорт завершен. Представления пропущены при экспорте данных: {{count}}.",
"sidebar.modal.confirm_clear_selected_tables.title": "Подтвердите очистку выбранных таблиц",
"sidebar.modal.confirm_clear_selected_tables.content": "Очистить данные выбранных объектов в {{connection}} / {{database}}? Это действие нельзя отменить.",
"sidebar.action.continue": "Продолжить",
"sidebar.action.cancel": "Отмена",
"sidebar.action.delete": "Удалить",
"sidebar.message.clearing_selected_tables": "Очищаются выбранные таблицы: {{count}}...",
"sidebar.message.clear_success": "Очистка завершена.",
"sidebar.message.clear_failed": "Ошибка очистки: {{error}}",
@@ -1048,7 +1257,30 @@
"sidebar.message.operation_create_failed": "Не удалось создать: {{error}}",
"sidebar.sql_file.default_name": "SQL-файл",
"sidebar.message.sql_file_context_incomplete": "Контекст SQL-файла неполный.",
"sidebar.message.sql_file_path_incomplete": "Путь к SQL-файлу неполный, открыть файл невозможно.",
"sidebar.message.select_host_before_large_sql_file": "Выберите Host перед запуском большого SQL-файла.",
"sidebar.message.read_sql_file_failed": "Не удалось прочитать SQL-файл: {{error}}",
"sidebar.message.external_sql_file_parent_missing": "Не найден каталог для создания SQL-файла.",
"sidebar.message.external_sql_file_rename_target_missing": "Не найден SQL-файл для переименования.",
"sidebar.message.external_sql_file_delete_target_missing": "SQL-файл для удаления не найден.",
"sidebar.message.external_sql_directory_parent_missing": "Не найдено место для создания каталога.",
"sidebar.message.external_sql_directory_rename_target_missing": "Не найден каталог для переименования.",
"sidebar.message.external_sql_directory_delete_target_missing": "SQL-каталог для удаления не найден.",
"sidebar.message.sql_file_name_required": "Имя SQL-файла обязательно.",
"sidebar.message.sql_directory_name_required": "Имя каталога обязательно.",
"sidebar.message.create_sql_file_failed": "Не удалось создать SQL-файл: {{error}}",
"sidebar.message.sql_file_created": "SQL-файл создан.",
"sidebar.message.rename_sql_file_failed": "Не удалось переименовать SQL-файл: {{error}}",
"sidebar.message.sql_file_renamed": "SQL-файл переименован.",
"sidebar.message.delete_sql_file_failed": "Не удалось удалить SQL-файл: {{error}}",
"sidebar.message.sql_file_deleted": "SQL-файл удален.",
"sidebar.message.create_sql_directory_failed": "Не удалось создать каталог: {{error}}",
"sidebar.message.sql_directory_created": "Каталог создан.",
"sidebar.message.rename_sql_directory_failed": "Не удалось переименовать каталог: {{error}}",
"sidebar.message.external_sql_directory_rename_sync_failed": "Каталог переименован, но список внешних SQL-каталогов не удалось синхронизировать. Добавьте каталог заново.",
"sidebar.message.sql_directory_renamed": "Каталог переименован.",
"sidebar.message.delete_sql_directory_failed": "Не удалось удалить SQL-каталог: {{error}}",
"sidebar.message.sql_directory_deleted": "SQL-каталог удален.",
"sidebar.message.add_sql_directory_database_required": "Выберите базу данных перед добавлением SQL-каталога.",
"sidebar.message.select_sql_directory_failed": "Не удалось выбрать SQL-каталог: {{error}}",
"sidebar.message.sql_directory_path_invalid": "Путь к SQL-каталогу недействителен.",
@@ -1062,6 +1294,10 @@
"sidebar.message.create_failed": "Не удалось создать: {{error}}",
"sidebar.modal.confirm_delete_database.title": "Удалить базу данных",
"sidebar.modal.confirm_delete_database.content": "Удалить {{name}}? Это действие нельзя отменить.",
"sidebar.modal.confirm_delete_sql_file.title": "Удалить SQL-файл",
"sidebar.modal.confirm_delete_sql_file.content": "Удалить \"{{name}}\"? Это удалит локальный файл с диска без возможности восстановления.",
"sidebar.modal.confirm_delete_sql_directory.title": "Удалить SQL-каталог",
"sidebar.modal.confirm_delete_sql_directory.content": "Удалить \"{{name}}\"? Это удалит локальный каталог с диска; удалить можно только пустой каталог.",
"sidebar.modal.confirm_delete_table.title": "Удалить таблицу",
"sidebar.modal.confirm_delete_table.content": "Удалить {{name}}? Это действие нельзя отменить.",
"sidebar.modal.confirm_table_data_action.title": "Подтвердите {{action}}",
@@ -1088,8 +1324,14 @@
"sidebar.message.delete_connection_failed": "Не удалось удалить подключение.",
"sidebar.modal.confirm_delete_saved_query.content": "Удалить сохраненный запрос \"{{name}}\"? Это действие нельзя отменить.",
"sidebar.search.placeholder": "Поиск...",
"sidebar.punctuation.list_separator": ", ",
"sidebar.command_search.label": "Искать таблицы, подключения, действия",
"sidebar.command_search.placeholder": "Искать таблицы, подключения, действия... или спросить AI",
"sidebar.command_search.sync_to_filter_tooltip": "Синхронизировать ввод с левым фильтром",
"sidebar.command_search.sync_to_filter_aria": "Синхронизировать с левым фильтром",
"sidebar.command_search.reset_filter": "Сбросить фильтр боковой панели",
"sidebar.command_search.no_synced_filter": "Нет синхронизированного фильтра боковой панели",
"sidebar.command_search.no_filter_content": "Нет текста фильтра",
"sidebar.command_search.object_kind.all": "Все",
"sidebar.command_search.object_kind.tables": "Таблицы",
"sidebar.command_search.object_kind.views": "Представления",
@@ -1135,6 +1377,13 @@
"sidebar.v2_table_menu.view_in_er": "Показать в ER-диаграмме",
"sidebar.v2_table_menu.copy_section": "Копировать",
"sidebar.v2_table_menu.copy_table_name": "Копировать имя таблицы",
"sidebar.copy_object_name.label.table": "Имя таблицы",
"sidebar.copy_object_name.label.view": "Имя представления",
"sidebar.copy_object_name.label.materialized_view": "Имя материализованного представления",
"sidebar.copy_object_name.label.event": "Имя события",
"sidebar.copy_object_name.empty": "{{label}} пусто, копирование невозможно",
"sidebar.copy_object_name.copied": "{{label}} скопировано в буфер обмена",
"sidebar.copy_object_name.failed": "Не удалось скопировать {{label}}: {{error}}",
"sidebar.v2_table_menu.copy_table_as_insert": "Копировать всю таблицу как {{keyword}}",
"sidebar.v2_table_menu.maintenance_section": "Обслуживание",
"sidebar.v2_table_menu.rename_compact": "Переименовать...",
@@ -1151,6 +1400,11 @@
"sidebar.v2_table_group_menu.sort_frequency": "частоте использования",
"sidebar.v2_table_group_menu.meta": "{{database}} · {{count}} таблиц · сортировка по {{sort}}",
"sidebar.message.locate_current_table_unavailable": "В текущей вкладке нет таблицы, которую можно найти",
"sidebar.locate.object.table": "Таблица",
"sidebar.locate.object.view": "Представление",
"sidebar.locate.object.materialized_view": "Материализованное представление",
"sidebar.locate.object.routine": "Функция/процедура",
"sidebar.locate.object.trigger": "Триггер",
"sidebar.active_connection.current_host_database": "Текущий Host и база данных",
"sidebar.active_connection.no_database_selected": "База данных не выбрана",
"sidebar.active_connection.no_host_selected": "Host не выбран",
@@ -1251,6 +1505,11 @@
"sidebar.search.scope.host": "Хост",
"sidebar.search.scope.tag": "Тег",
"sidebar.tree.saved_queries": "Сохраненные запросы",
"sidebar.tree.untitled_query": "Запрос без имени",
"sidebar.tree.default_database": "База данных по умолчанию",
"sidebar.tree.unknown_connection": "Неизвестное подключение",
"sidebar.tree.unmatched_saved_queries": "Несопоставленные",
"sidebar.tree.all_saved_queries": "Все сохраненные запросы",
"sidebar.tree.default_schema": "Схема по умолчанию",
"sidebar.object_group.tables": "Таблицы",
"sidebar.object_group.views": "Представления",
@@ -1274,6 +1533,8 @@
"sidebar.tab.new_table": "Новая таблица - {{database}}",
"sidebar.tab.table_overview": "Обзор таблицы - {{database}}{{schema}}",
"sidebar.tab.trigger": "Триггер: {{name}}",
"sidebar.tab.event": "Событие: {{name}}",
"sidebar.tab.edit_event": "Изменить событие: {{name}}",
"sidebar.tab.materialized_view_definition": "Материализованное представление: {{name}}",
"sidebar.tab.view_definition": "Представление: {{name}}",
"sidebar.tab.edit_view": "Изменить представление: {{name}}",
@@ -1343,9 +1604,13 @@
"tab_manager.hover.label.object": "Объект",
"tab_manager.hover.label.type": "Тип",
"sidebar.message.no_visible_databases": "Видимые базы данных или схемы не возвращены. Проверьте права учетной записи или обновите через контекстное меню.",
"sidebar.message.visual_new_table_unsupported": "Этот источник данных пока не поддерживает визуальное создание таблиц.",
"sidebar.message.jvm_resources_backend_unavailable": "Просмотр ресурсов JVM недоступен в этой сборке.",
"sidebar.message.external_sql_directory_read_failed": "Не удалось прочитать SQL-каталог {{name}}: {{error}}",
"sidebar.message.sphinx_unsupported_objects": "Этот экземпляр Sphinx не предоставляет следующие возможности объектов: {{objects}}. Применен режим совместимости.",
"sidebar.message.sidebar_filter_sync_enabled": "Синхронизация левого фильтра включена.",
"sidebar.message.sidebar_filter_sync_disabled": "Синхронизация левого фильтра отключена.",
"sidebar.message.sidebar_filter_reset": "Фильтр боковой панели сброшен.",
"sidebar.message.database_name_required": "Введите имя базы данных.",
"sidebar.message.database_name_unchanged": "Имя базы данных не изменилось.",
"sidebar.message.database_renamed": "База данных переименована.",
@@ -1394,6 +1659,9 @@
"sidebar.menu.close_database": "Закрыть базу данных",
"sidebar.menu.browse_view_data": "Просмотреть данные представления",
"sidebar.menu.view_definition": "Определение представления",
"sidebar.menu.browse_materialized_view_data": "Просмотреть данные материализованного представления",
"sidebar.menu.materialized_view_definition": "Определение материализованного представления",
"sidebar.menu.view_object_definition": "Показать определение",
"sidebar.menu.edit_view": "Редактировать представление",
"sidebar.menu.rename_view": "Переименовать представление",
"sidebar.menu.delete_view": "Удалить представление",
@@ -1420,6 +1688,15 @@
"sidebar.menu.refresh_directory": "Обновить каталог",
"sidebar.menu.remove_directory": "Удалить каталог",
"sidebar.menu.open_sql_file": "Открыть SQL-файл",
"sidebar.menu.new_sql_file": "Создать SQL-файл",
"sidebar.menu.new_sql_directory": "Создать каталог",
"sidebar.menu.rename_sql_directory": "Переименовать каталог",
"sidebar.menu.delete_local_directory": "Удалить локальный каталог",
"sidebar.menu.delete_sql_directory": "Удалить каталог",
"sidebar.menu.rename_sql_file": "Переименовать SQL-файл",
"sidebar.menu.new_sql_file_in_directory": "Создать SQL-файл в этом каталоге",
"sidebar.menu.new_sql_directory_in_directory": "Создать каталог в этом каталоге",
"sidebar.menu.delete_sql_file": "Удалить SQL-файл",
"sidebar.batch.group.tables": "Таблицы",
"sidebar.batch.group.views": "Представления",
"sidebar.batch.no_matching_objects": "Нет подходящих объектов",
@@ -1433,6 +1710,22 @@
"connection_modal.network.ssl_mode.skip_verify": "Без проверки",
"sidebar.external_sql.root": "Внешние SQL-файлы",
"sidebar.external_sql.directory_fallback": "SQL-каталог",
"sidebar.external_sql_modal.title.create_file": "Создать SQL-файл",
"sidebar.external_sql_modal.title.rename_file": "Переименовать SQL-файл",
"sidebar.external_sql_modal.title.create_directory": "Создать каталог",
"sidebar.external_sql_modal.title.rename_directory": "Переименовать каталог",
"sidebar.external_sql_modal.action.create": "Создать",
"sidebar.external_sql_modal.action.rename": "Переименовать",
"sidebar.external_sql_modal.field.directory_name": "Имя каталога",
"sidebar.external_sql_modal.field.sql_file_name": "Имя SQL-файла",
"sidebar.external_sql_modal.validation.directory_name_required": "Введите имя каталога",
"sidebar.external_sql_modal.validation.sql_file_name_required": "Введите имя SQL-файла",
"sidebar.external_sql_modal.validation.directory_name_no_separator": "Имя каталога не должно содержать разделители пути",
"sidebar.external_sql_modal.validation.sql_file_name_no_separator": "Имя файла не должно содержать разделители пути",
"sidebar.external_sql_modal.help.directory": "Каталог отображается только в дереве внешних SQL-каталогов; файлы не SQL по-прежнему скрыты",
"sidebar.external_sql_modal.help.sql_file": "Если суффикс .sql не указан, он будет добавлен автоматически",
"sidebar.external_sql_modal.placeholder.directory_name": "Например: reports",
"sidebar.external_sql_modal.placeholder.sql_file_name": "Например: report.sql",
"sidebar.jvm.action.monitoring": "Непрерывный мониторинг",
"sidebar.jvm.action.diagnostic": "Расширенная диагностика",
"sidebar.jvm.tab.overview": "Обзор JVM",
@@ -1871,14 +2164,34 @@
"query_editor.action.ai_explain_sql_menu": "Объяснить SQL",
"query_editor.action.ai_optimize_sql_menu": "Оптимизировать SQL",
"query_editor.action.ai_schema_analysis": "Анализ схемы",
"query_editor.action.show_results_panel": "Показать область результатов",
"query_editor.action.hide_results_panel": "Скрыть область результатов",
"query_editor.action.show_results_panel_with_shortcut": "Показать область результатов ({{shortcut}})",
"query_editor.action.hide_results_panel_with_shortcut": "Скрыть область результатов ({{shortcut}})",
"query_editor.action.results": "Результаты",
"query_editor.transaction.delay.immediate": "Сразу",
"query_editor.transaction.mode.tooltip": "Как в DBeaver: когда SQL-редактор выполняет DML, например INSERT/UPDATE/DELETE/MERGE/REPLACE, GoNavi сначала открывает управляемую транзакцию. В ручном режиме нужно выполнить commit/rollback; в автоматическом режиме после успешного выполнения автоматически запускается COMMIT.",
"query_editor.transaction.mode.manual": "Вручную",
"query_editor.transaction.mode.auto": "Авто",
"query_editor.transaction.status.auto_commit_countdown": "Автоматический commit через {{seconds}}s",
"query_editor.transaction.status.auto_committing": "Выполняется автоматический commit",
"query_editor.transaction.action.commit": "Commit",
"query_editor.transaction.action.commit_with_count": "Commit ({{count}})",
"query_editor.transaction.action.rollback": "Rollback",
"query_editor.transaction.message.pending_managed_transaction": "В SQL-редакторе уже есть незавершённая транзакция. Перед выполнением нового DML-оператора выполните commit или rollback.",
"query_editor.action.show_object_info": "Показать сведения об объекте",
"query_editor.action.rename_query": "Переименовать запрос",
"query_editor.action.export_sql_file": "Экспортировать SQL-файл",
"query_editor.format.keyword_upper": "Ключевые слова в верхнем регистре",
"query_editor.format.keyword_lower": "Ключевые слова в нижнем регистре",
"query_editor.format.restore_last_format": "Вернуть состояние до последнего форматирования",
"query_editor.format.snippet_settings": "Настройки сниппетов...",
"query_editor.format.shortcut_settings": "Настройки сочетаний клавиш...",
"query_editor.message.format_failed": "Ошибка форматирования: возможно, синтаксис SQL неверен.",
"query_editor.message.no_format_restore_snapshot": "Нет сохранённого состояния SQL до форматирования для восстановления.",
"query_editor.message.format_restore_success": "Восстановлено состояние SQL до форматирования.",
"query_editor.message.page_query_failed": "Ошибка запроса страницы: {{error}}",
"query_editor.message.page_query_empty": "Запрос страницы не вернул набор результатов.",
"query_editor.message.refresh_failed": "Не удалось обновить: {{error}}",
"query_editor.message.select_database_first": "Сначала выберите базу данных.",
"query_editor.message.connection_not_found": "Подключение не найдено.",
@@ -1896,6 +2209,7 @@
"query_editor.message.read_only_no_safe_locator": "Первичный ключ или подходящий уникальный индекс не обнаружен, поэтому изменения нельзя безопасно зафиксировать.",
"query_editor.message.read_only_index_metadata_unavailable": "Не удалось загрузить метаданные уникального индекса, поэтому изменения нельзя безопасно зафиксировать.",
"query_editor.message.read_only_table_locator_metadata_unavailable": "Не удалось загрузить метаданные первичного ключа/уникального индекса для {{table}}, поэтому изменения нельзя безопасно зафиксировать.",
"query_editor.message.read_only_system_metadata": "Результаты запросов к системным метаданным остаются доступными только для чтения.",
"query_editor.message.read_only_oracle_rowid_injection_unavailable": "В Oracle-запросе используется *, поэтому столбец-локатор ROWID не удалось автоматически внедрить. Результат остается только для чтения.",
"query_editor.message.read_only_warning_with_detail": "Результаты запроса остаются доступными только для чтения: {{detail}}",
"query_editor.message.object_info_target_not_found": "Текущий курсор не указывает на распознанную таблицу или колонку.",
@@ -1904,6 +2218,7 @@
"query_editor.message.saved": "Запрос сохранен.",
"query_editor.message.sql_file_saved": "SQL-файл сохранен.",
"query_editor.message.save_sql_file_failed": "Не удалось сохранить SQL-файл: {{error}}",
"query_editor.message.save_query_failed": "Не удалось сохранить запрос: {{error}}",
"query_editor.message.export_sql_file_success": "Файл SQL экспортирован.",
"query_editor.message.export_sql_file_failed": "Не удалось экспортировать файл SQL: {{error}}",
"query_editor.message.save_first_before_rename": "Сначала сохраните запрос, а затем переименуйте его.",
@@ -1917,6 +2232,18 @@
"query_editor.result.affected_rows": "Затронуто строк: {{count}}",
"query_editor.result.execution_failed": "Ошибка выполнения",
"query_editor.result.ai_diagnose": "AI-диагностика",
"query_editor.results_panel.tooltip.hide": "Скрыть область результатов",
"query_editor.results_panel.tooltip.hide_with_shortcut": "Скрыть область результатов ({{shortcut}})",
"query_editor.results_panel.menu.close_other": "Закрыть другие вкладки",
"query_editor.results_panel.menu.close_left": "Закрыть вкладки слева",
"query_editor.results_panel.menu.close_right": "Закрыть вкладки справа",
"query_editor.results_panel.menu.close_all": "Закрыть все вкладки",
"query_editor.results_panel.action.hide": "Скрыть",
"query_editor.results_panel.aria.hide": "Скрыть область результатов",
"query_editor.results_panel.tab.message": "Сообщение {{index}}",
"query_editor.results_panel.tab.result": "Результат {{index}}",
"query_editor.results_panel.message.title": "Сообщения выполнения",
"query_editor.results_panel.panel.title": "Область результатов",
"query_editor.save_modal.title": "Сохранить запрос",
"query_editor.save_modal.rename_title": "Переименовать запрос",
"query_editor.save_modal.rename_ok": "Переименовать",
@@ -2165,6 +2492,7 @@
"data_grid.context_menu.edit_section": "Редактировать",
"data_grid.context_menu.edit_row": "Редактировать эту строку",
"data_grid.context_menu.copy_row_as_new": "Копировать эту строку как новую",
"data_grid.context_menu.undo_cell_change": "Отменить изменение этой ячейки",
"data_grid.context_menu.export_as_csv": "Экспортировать как CSV",
"data_grid.context_menu.export_as_excel": "Экспортировать как Excel",
"data_grid.context_menu.export_as_html": "Экспортировать как HTML",
@@ -2200,6 +2528,7 @@
"data_grid.error_boundary.title": "Ошибка отображения",
"data_grid.export.all_data": "Экспортировать все данные",
"data_grid.export.all_rows": "Экспорт всех строк ({{count}})",
"data_grid.export.all_rows_requery": "Экспортировать всё (повторный запрос)",
"data_grid.export.current_page": "Экспортировать текущую страницу ({{count}} строк)",
"data_grid.export.current_page_rows": "Экспорт текущей страницы ({{count}} строк)",
"data_grid.export.group_filtered_results": "Отфильтрованные результаты",
@@ -2274,7 +2603,12 @@
"data_grid.message.column_quick_find_not_found": "Столбец поля не найден: {{query}}",
"data_grid.message.column_quick_find_not_rendered": "Столбец поля \"{{column}}\" сейчас не отрисован, поэтому его нельзя найти.",
"data_grid.message.column_visibility_reset": "Все столбцы восстановлены",
"data_grid.message.auto_commit_failed": "Автофиксация не удалась: {{detail}}",
"data_grid.message.auto_commit_success": "Автофиксация выполнена",
"data_grid.message.commit_failed": "Не удалось зафиксировать изменения: {{detail}}",
"data_grid.message.undo_added_row_hint": "Для новых строк используйте удаление выбранных строк или откат всей таблицы.",
"data_grid.message.undo_cell_original_missing": "Исходные данные этой ячейки не найдены, поэтому отменить изменение нельзя.",
"data_grid.message.undo_cell_success": "Изменение ячейки отменено",
"data_grid.message.copied_columns": "Скопировано столбцов: {{count}}. Их можно вставить в целевые строки.",
"data_grid.message.copied_rows": "Скопировано строк: {{count}}. Их можно вставить как новые строки.",
"data_grid.message.copied_to_clipboard": "Скопировано в буфер обмена",
@@ -2463,6 +2797,8 @@
"data_grid.secondary.er_diagram": "ER-диаграмма",
"data_grid.secondary.jump_column": "Перейти к столбцу",
"data_grid.secondary.live": "активно",
"data_grid.secondary.object_design": "Дизайн объекта",
"data_grid.embedded_designer.title": "Проектирование таблицы ({{tableName}})",
"data_grid.secondary.pending_changes": "Не отправлено {{count}}",
"data_grid.secondary.row_count": "{{count}} строк",
"data_grid.secondary.view_ddl": "Показать DDL",
@@ -2478,6 +2814,11 @@
"data_grid.toolbar.cell_editor": "Редактор ячеек",
"data_grid.toolbar.commit": "Зафиксировать транзакцию ({{count}})",
"data_grid.toolbar.commit_label": "Зафиксировать транзакцию",
"data_grid.toolbar.commit_delay.seconds": "{{seconds}} с",
"data_grid.toolbar.commit_mode.auto": "Автофиксация",
"data_grid.toolbar.commit_mode.auto_countdown": "Фиксация через {{seconds}}s",
"data_grid.toolbar.commit_mode.manual": "Ручная фиксация",
"data_grid.toolbar.commit_mode.tooltip": "Управляет фиксацией изменений данных таблицы. Ручная фиксация безопаснее; автофиксация выполняется через выбранную задержку после последнего изменения.",
"data_grid.toolbar.copied_columns_count": "Скопировано столбцов: {{count}}",
"data_grid.toolbar.copy": "Копировать",
"data_grid.toolbar.copy_row": "Копировать строку",
@@ -2794,6 +3135,7 @@
"redis_viewer.hint.switch_auto_to_edit": "Переключитесь в режим Auto для редактирования",
"redis_viewer.label.encoding": "Кодировка: {{encoding}}",
"redis_viewer.label.keys_count": "Keys: {{count}}",
"redis_viewer.label.node_count": "Узлов: {{count}}",
"redis_viewer.label.length": "Длина: {{count}}",
"redis_viewer.label.original_key": "Исходный Key: {{key}}",
"redis_viewer.message.add_failed": "Не удалось добавить: {{detail}}",
@@ -2850,6 +3192,9 @@
"redis_viewer.placeholder.value": "Значение",
"redis_viewer.search.exact": "Точно",
"redis_viewer.search.fuzzy": "Нечетко",
"redis_viewer.topology.cluster": "Cluster",
"redis_viewer.topology.sentinel": "Sentinel",
"redis_viewer.topology.single": "Одиночный",
"redis_viewer.state.connection_not_found": "Подключение не найдено",
"redis_viewer.state.empty_selection": "Выберите Key, чтобы просмотреть детали",
"redis_viewer.table.action": "Действия",
@@ -2988,6 +3333,7 @@
"ai_chat.input.slash.sql.prompt": "Создайте SQL по следующим требованиям:",
"ai_chat.input.tooltip.attach_table_context": "Добавить контекст таблиц базы данных",
"ai_chat.input.tooltip.upload_image": "Загрузить изображение или скриншот",
"ai_chat.tools.mcp_fallback_description": "MCP-инструмент {{toolName}} от {{serverName}}",
"ai_chat.composer_notice.missing_model.description": "Откройте список моделей ниже и выберите модель. Если список пуст, проверьте конечную точку поставщика и API Key.",
"ai_chat.composer_notice.missing_model.title": "Сначала выберите модель",
"ai_chat.composer_notice.missing_provider.description": "Сначала добавьте и включите поставщика моделей в настройках AI.",
@@ -3234,9 +3580,47 @@
"ai_settings.context.with_results.label": "С результатами запросов",
"ai_settings.context.with_results.desc": "Передает последние результаты запросов как контекст",
"ai_settings.prompts.description": "Ниже показаны системные AI-промпты, встроенные в текущую версию GoNavi. Они доступны только для чтения и динамически добавляются в контекст запроса для соответствующих сценариев.",
"ai_settings.prompts.message.saved": "Пользовательские промпты сохранены",
"ai_settings.prompts.message.save_failed": "Не удалось сохранить пользовательские промпты",
"ai_settings.mcp_server.message.saved": "Служба MCP сохранена",
"ai_settings.mcp_server.message.save_failed": "Не удалось сохранить службу MCP",
"ai_settings.mcp_server.message.deleted": "Служба MCP удалена",
"ai_settings.mcp_server.message.delete_failed": "Не удалось удалить службу MCP",
"ai_settings.mcp_server.message.test_success": "Подключение к службе MCP успешно",
"ai_settings.mcp_server.message.test_failed": "Проверка службы MCP не удалась",
"ai_settings.mcp_server.message.test_request_failed": "Не удалось выполнить проверку службы MCP",
"ai_settings.clipboard.error.unsupported": "Копирование в буфер обмена не поддерживается в текущей среде",
"ai_settings.mcp_http.error.control_unsupported_runtime": "Текущая среда выполнения не поддерживает управление службой MCP HTTP",
"ai_settings.mcp_http.error.start_unsupported_version": "Эта версия не поддерживает запуск службы MCP HTTP",
"ai_settings.mcp_http.error.stop_unsupported_version": "Эта версия не поддерживает остановку службы MCP HTTP",
"ai_settings.mcp_http.message.started": "Служба GoNavi MCP HTTP запущена",
"ai_settings.mcp_http.message.stopped": "Служба GoNavi MCP HTTP остановлена",
"ai_settings.mcp_http.message.toggle_failed": "Не удалось переключить службу GoNavi MCP HTTP",
"ai_settings.mcp_http.message.url_unavailable": "Нет MCP HTTP URL для копирования",
"ai_settings.mcp_http.message.url_copied": "MCP HTTP URL скопирован",
"ai_settings.mcp_http.message.authorization_header_required": "Сначала запустите службу MCP HTTP, чтобы создать Authorization Header",
"ai_settings.mcp_http.message.authorization_header_copied": "Authorization Header скопирован",
"ai_settings.mcp_http.status.not_running": "Служба GoNavi MCP HTTP не запущена",
"ai_settings.skill.message.saved": "Skill сохранен",
"ai_settings.skill.message.save_failed": "Не удалось сохранить Skill",
"ai_settings.skill.message.deleted": "Skill удален",
"ai_settings.skill.message.delete_failed": "Не удалось удалить Skill",
"ai_settings.tools.description": "При работе с вопросами по базам данных AI-ассистент может автоматически вызывать эти встроенные инструменты, чтобы получить реальные данные без ручного вмешательства.",
"ai_settings.tools.workflow": "💡 Процесс: get_connections → get_databases → get_tables → get_columns → сформировать SQL",
"ai_settings.tools.params_label": "Параметры:",
"ai_settings.tools.builtin_tool_label": "Встроенный инструмент",
"ai_settings.tools.search.aria_label": "Поиск встроенных инструментов",
"ai_settings.tools.search.placeholder": "Поиск инструментов, процессов или параметров, например mcp / lineLimit / allowMutating / transaction",
"ai_settings.tools.search.clear": "Очистить",
"ai_settings.tools.summary": "Показано {{flowVisible}}/{{flowTotal}} рекомендуемых процессов и {{toolVisible}}/{{toolTotal}} встроенных инструментов.",
"ai_settings.tools.empty.no_matches": "Подходящих встроенных инструментов нет. Попробуйте более общие ключевые слова, например mcp, logs, connection, transaction, shortcuts или schema.",
"ai_settings.tools.parameters.hint_title": "Подсказки по параметрам",
"ai_settings.tools.parameters.type_label": "Тип: {{type}}",
"ai_settings.tools.parameters.required": "Обязательный",
"ai_settings.tools.parameters.optional": "Необязательный",
"ai_settings.tools.parameters.enum_values": "Допустимые значения: {{values}}",
"ai_settings.tools.parameters.default_value": "По умолчанию: {{value}}",
"ai_settings.tools.parameters.example": "Пример:",
"ai_settings.tools.params.none": "Без параметров",
"ai_settings.tools.get_connections.desc": "Получить все доступные подключения к базам данных",
"ai_settings.tools.get_connections.detail": "Возвращает ID подключения, имя, тип (MySQL/PostgreSQL и т. д.) и адрес Host. AI использует эти сведения, чтобы выбрать подключение для первичного исследования.",
@@ -3521,6 +3905,38 @@
"data_sync.action.previous": "Назад",
"data_sync.action.start_sync": "Начать синхронизацию",
"data_sync.action.view": "Просмотреть",
"data_sync.compare_entry.action.return_to_compare": "Вернуться к сравнению",
"data_sync.compare_entry.alert.data": "Это режим сравнения данных: он только анализирует различия строк по первичному ключу и не выполняет запись.",
"data_sync.compare_entry.alert.schema": "Это режим сравнения структуры: он только анализирует различия схемы и формирует SQL для проверки, не применяя изменения.",
"data_sync.compare_entry.option.auto_add_columns": "Сформировать совместимый SQL изменений для отсутствующих столбцов целевой таблицы (только предпросмотр, без выполнения)",
"data_sync.compare_entry.option.source_dataset.query": "Сравнить по результату SQL",
"data_sync.compare_entry.option.source_dataset.table": "Сравнить по таблице",
"data_sync.compare_entry.preview.selection_hint": "Выбор строк влияет только на область предпросмотра SQL и не выполняет запись данных.",
"data_sync.compare_entry.preview.sql.data_help": "Предпросмотр SQL формируется по выбранным вставкам, обновлениям, удалениям и диапазонам строк только для проверки различий.",
"data_sync.compare_entry.preview.sql.schema_help": "Предпросмотр SQL показывает предлагаемые операторы различий структуры только для проверки.",
"data_sync.compare_entry.result.completed": "Сравнение завершено",
"data_sync.compare_entry.result.failed": "Сравнение не удалось",
"data_sync.compare_entry.result.running": "Идет сравнение",
"data_sync.compare_entry.result.running_description": "Текущий этап: {{stage}}{{table}}",
"data_sync.compare_entry.result.stage_fallback": "Выполняется",
"data_sync.compare_entry.result.success_summary": "Успешно сравнено таблиц: {{tables}}.",
"data_sync.compare_entry.result.table_suffix": ", таблица: {{table}}",
"data_sync.compare_entry.title.analysis_log": "Журнал анализа",
"data_sync.compare_entry.workflow_help": "Этот вход только анализирует различия и показывает предпросмотр. Он не синхронизирует, не создает таблицы, не добавляет столбцы и не удаляет данные.",
"data_sync.entry_mode.compare.action.start": "Начать сравнение",
"data_sync.entry_mode.compare.option_title": "Параметры сравнения",
"data_sync.entry_mode.compare.result_title": "Результат сравнения",
"data_sync.entry_mode.data_compare.badge": "Сравнение данных",
"data_sync.entry_mode.data_compare.description": "Сравнивает данные исходной и целевой таблиц по первичному ключу и показывает вставки, обновления и удаления.",
"data_sync.entry_mode.data_compare.hero_description": "Подходит для проверки согласованности данных. Выполняет только анализ различий и построчный предпросмотр без записи.",
"data_sync.entry_mode.data_compare.table_select_label": "Выберите таблицы для сравнения данных:",
"data_sync.entry_mode.data_compare.title": "Сравнение данных",
"data_sync.entry_mode.schema_compare.badge": "Сравнение структуры",
"data_sync.entry_mode.schema_compare.description": "Формирует различия структуры, риски совместимости и SQL для проверки между исходной и целевой таблицами.",
"data_sync.entry_mode.schema_compare.hero_description": "Подходит для проверки различий структуры перед выпуском. Выполняет только анализ и предпросмотр без применения изменений структуры.",
"data_sync.entry_mode.schema_compare.table_select_label": "Выберите таблицы для сравнения структуры:",
"data_sync.entry_mode.schema_compare.title": "Сравнение структуры таблиц",
"data_sync.entry_mode.sync.hero_description": "Подходит, когда целевые таблицы уже существуют. Сначала анализируйте различия, затем выполняйте выбранные вставки, обновления или удаления.",
"data_sync.alert.auto_create_scope": "Автоматическое создание таблиц сейчас поддерживает только MySQL в Kingbase. Переносятся столбцы, первичные ключи, обычные индексы, уникальные индексы и составные индексы; полнотекстовые, пространственные, префиксные и функциональные индексы явно пропускаются.",
"data_sync.alert.auto_create_planner_scope": "Автоматическое создание таблиц сейчас поддерживает только MySQL в Kingbase. Переносятся столбцы, первичные ключи, обычные индексы, уникальные индексы и составные индексы; полнотекстовые, пространственные, префиксные и функциональные индексы явно пропускаются.",
"data_sync.alert.existing_target_only": "Синхронизация данных по умолчанию выполняется с существующими целевыми таблицами. Переключитесь на межбазовую миграцию, если нужны создание таблиц и импорт.",
@@ -4373,6 +4789,11 @@
"app.theme.font_family.loading_ui_hint": "Установленные шрифты текущей системы загружаются в реальном времени. Введите текст для поиска. Очистите поле, чтобы вернуться к шрифту UI по умолчанию.",
"app.theme.font_family.mono_fallback_hint": "Используются стандартные наборы шрифтов для кода. Применяется к моноширинному содержимому: SQL-редактору, блокам кода AI, журналам, DDL и таблицам данных.",
"app.theme.font_family.mono_hint": "Сначала показываются установленные системные шрифты; названия, близкие к Mono/Code/Console, выводятся выше. Применяется к моноширинному содержимому: SQL-редактору, блокам кода AI, журналам, DDL и таблицам данных.",
"app.theme.font_family.linux_cjk_install_prefix": "Ubuntu/Linux не обнаружил китайские CJK-шрифты, поэтому интерфейс может показывать квадраты вместо символов. Установите: ",
"app.theme.font_family.linux_cjk_install_suffix": ", затем перезапустите GoNavi.",
"app.linux_cjk_font_banner.title": "Отсутствуют Linux CJK-шрифты",
"app.linux_cjk_font_banner.description": "Китайский текст может отображаться квадратами вместо символов. Установите шрифты, затем перезапустите GoNavi: ",
"app.linux_cjk_font_banner.action.open_font_settings": "Настройки шрифтов",
"app.theme.data_table.density": "Плотность таблицы",
"app.theme.data_table.density.comfortable": "Комфортная",
"app.theme.data_table.density.standard": "Стандартная",