Files
MyGoNavi/shared/i18n/en-US.json
Syngnat b1bd4bb5ec feat(datagrid): 数据预览与 SQL 结果支持行号显示及设置开关
- 新增 appearance.showDataTableRowNumber,默认开启,主题设置可切换
- 数据预览与查询结果表统一跟随该偏好显示行号列
- 行号列收窄为固定窄宽,少列时多余宽度只加到数据列避免撑宽
- 补充 i18n 与相关单测
2026-07-09 14:23:09 +08:00

8048 lines
805 KiB
JSON

{
"ai.service.mcp_client.claude_code.config_dir_create_failed": "Failed to create Claude Code configuration directory: {{detail}}",
"ai.service.mcp_client.claude_code.config_format_invalid": "Claude Code configuration format is invalid: {{path}} should be {{expected}}",
"ai.service.mcp_client.claude_code.config_parse_failed": "Failed to parse Claude Code configuration: {{detail}}",
"ai.service.mcp_client.claude_code.config_path_failed": "Failed to locate Claude Code configuration: {{detail}}",
"ai.service.mcp_client.claude_code.config_read_failed": "Failed to read Claude Code configuration: {{detail}}",
"ai.service.mcp_client.claude_code.config_serialize_failed": "Failed to serialize Claude Code configuration: {{detail}}",
"ai.service.mcp_client.claude_code.config_write_failed": "Failed to write Claude Code configuration: {{detail}}",
"ai.service.mcp_client.claude_code.install_success": "Claude Code user-level MCP configuration has been written. Restart Claude CLI, then GoNavi will appear under User MCPs in /mcp.",
"ai.service.mcp_client.claude_code.status.connected": "Claude Code user-level GoNavi MCP configuration was detected and matches the current GoNavi installation path",
"ai.service.mcp_client.claude_code.status.missing": "No Claude Code user-level GoNavi MCP configuration was detected",
"ai.service.mcp_client.claude_code.status.path_check_failed": "A GoNavi MCP record was detected in Claude Code, but the current GoNavi installation path check failed: {{detail}}",
"ai.service.mcp_client.claude_code.status.path_mismatch": "A GoNavi MCP record was detected in Claude Code, but it does not match the current GoNavi installation path. Updating is recommended.",
"ai.service.mcp_client.codex.config_dir_create_failed": "Failed to create Codex configuration directory: {{detail}}",
"ai.service.mcp_client.codex.config_format_invalid": "Codex configuration format is invalid: {{path}} could not be parsed as {{expected}}",
"ai.service.mcp_client.codex.config_path_failed": "Failed to locate Codex configuration: {{detail}}",
"ai.service.mcp_client.codex.config_read_failed": "Failed to read Codex configuration: {{detail}}",
"ai.service.mcp_client.codex.config_write_failed": "Failed to write Codex configuration: {{detail}}",
"ai.service.mcp_client.codex.install_success": "Codex user-level MCP configuration has been written. Restart Codex CLI or the desktop app to see GoNavi.",
"ai.service.mcp_client.codex.status.connected": "Codex user-level GoNavi MCP configuration was detected and matches the current GoNavi installation path",
"ai.service.mcp_client.codex.status.missing": "No Codex user-level GoNavi MCP configuration was detected",
"ai.service.mcp_client.codex.status.path_check_failed": "A GoNavi MCP record was detected in Codex, but the current GoNavi installation path check failed: {{detail}}",
"ai.service.mcp_client.codex.status.path_mismatch": "A GoNavi MCP record was detected in Codex, but it does not match the current GoNavi installation path. Updating is recommended.",
"ai.service.mcp_client.executable_path_empty": "Current GoNavi executable path is empty",
"ai.service.mcp_client.executable_path_failed": "Failed to locate the current GoNavi executable: {{detail}}",
"ai.service.mcp_client.remote.status.message": "{{label}} usually runs in the cloud or a remote environment. Connect it to Windows GoNavi through a remote MCP bridge; database passwords remain on this GoNavi machine.",
"ai.service.mcp_client.user_home_dir_unavailable": "Unable to determine the current user home directory",
"ai_chat.builtin_tools.database.execute_sql.desc": "Execute a SQL query and return results",
"ai_chat.builtin_tools.database.execute_sql.detail": "Pass connectionId, dbName, and sql, then execute SQL on the target database and return results (up to 50 rows). Controlled by safety level; read-only mode only allows SELECT/SHOW/DESCRIBE.",
"ai_chat.builtin_tools.database.execute_sql.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.execute_sql.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.execute_sql.parameters.sql.description": "SQL statement to execute",
"ai_chat.builtin_tools.database.execute_sql.params": "connectionId, dbName, sql",
"ai_chat.builtin_tools.database.execute_sql.tool_description": "Execute SQL on the specified connection and database and return results. Controlled by safety level; read-only mode only allows query operations such as SELECT/SHOW/DESCRIBE. Results return at most 50 rows.",
"ai_chat.builtin_tools.database.get_all_columns.desc": "Get field summaries for all tables in a database",
"ai_chat.builtin_tools.database.get_all_columns.detail": "Pass connectionId and dbName, then return a cross-table field list including table name, field name, type, and comment. Useful when the user knows a business field but not which table contains it.",
"ai_chat.builtin_tools.database.get_all_columns.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_all_columns.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_all_columns.params": "connectionId, dbName",
"ai_chat.builtin_tools.database.get_all_columns.tool_description": "Get field summaries for all tables in the specified database, returning table names, field names, types, and comments. Use it for field-to-table lookup, cross-table field comparison, and data map exploration.",
"ai_chat.builtin_tools.database.get_columns.desc": "Get the field structure of a specified table",
"ai_chat.builtin_tools.database.get_columns.detail": "Pass connectionId, dbName, and tableName, then return each field's name, type, nullability, default value, and comment. AI must call this before generating SQL to confirm real field names.",
"ai_chat.builtin_tools.database.get_columns.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_columns.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_columns.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_columns.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_columns.tool_description": "Get the field list of the specified table, including field name, type, nullability, default value, comment, and related metadata. Before generating SQL, call this tool to confirm real field names and do not guess field names.",
"ai_chat.builtin_tools.database.get_connections.desc": "Get all available database connections",
"ai_chat.builtin_tools.database.get_connections.detail": "Returns connection ID, name, type (such as MySQL or PostgreSQL), and Host address. AI uses the returned data to decide which connection to explore first.",
"ai_chat.builtin_tools.database.get_connections.params": "No parameters",
"ai_chat.builtin_tools.database.get_connections.tool_description": "When database querying or operations are needed but the user has not selected any connection context, get all database connections available in the current app. Returned data includes connection ID (id) and name (name).",
"ai_chat.builtin_tools.database.get_databases.desc": "Get all databases under a specified connection",
"ai_chat.builtin_tools.database.get_databases.detail": "Pass connectionId and return the database or Schema name list under that connection.",
"ai_chat.builtin_tools.database.get_databases.parameters.connectionId.description": "Connection ID (from get_connections)",
"ai_chat.builtin_tools.database.get_databases.params": "connectionId: connection ID",
"ai_chat.builtin_tools.database.get_databases.tool_description": "Get all database (Database/Schema) names under the specified connectionId.",
"ai_chat.builtin_tools.database.get_foreign_keys.desc": "Get foreign-key relationships for a specified table",
"ai_chat.builtin_tools.database.get_foreign_keys.detail": "Pass connectionId, dbName, and tableName, then return foreign-key mappings from the current table to other tables. AI can use it directly for relationship inference, join SQL generation, and data consistency review.",
"ai_chat.builtin_tools.database.get_foreign_keys.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_foreign_keys.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_foreign_keys.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_foreign_keys.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_foreign_keys.tool_description": "Get foreign-key relationships for the specified table, including local fields, referenced table, referenced fields, and constraint names. Use it for join-path analysis, ER relationship mapping, and constraint checks.",
"ai_chat.builtin_tools.database.get_indexes.desc": "Get index definitions for a specified table",
"ai_chat.builtin_tools.database.get_indexes.detail": "Pass connectionId, dbName, and tableName, then return index name, index columns, uniqueness, and index type. AI should prefer this for slow SQL analysis, index optimization, and execution-plan inference.",
"ai_chat.builtin_tools.database.get_indexes.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_indexes.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_indexes.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_indexes.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_indexes.tool_description": "Get index definitions for the specified table, including index name, column order, uniqueness, and index type. Use it for slow SQL analysis, index optimization suggestions, and confirming existing index coverage.",
"ai_chat.builtin_tools.database.get_table_ddl.desc": "Get the table creation statement (DDL)",
"ai_chat.builtin_tools.database.get_table_ddl.detail": "Pass connectionId, dbName, and tableName, then return the complete CREATE TABLE statement, including field definitions, indexes, constraints, and related structure details.",
"ai_chat.builtin_tools.database.get_table_ddl.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_table_ddl.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_table_ddl.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_table_ddl.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_table_ddl.tool_description": "Get the complete table creation statement (CREATE TABLE DDL) for the specified table, including fields, indexes, constraints, and complete structure information.",
"ai_chat.builtin_tools.database.get_tables.desc": "Get all table names under a specified database",
"ai_chat.builtin_tools.database.get_tables.detail": "Pass connectionId and dbName, then return a table name list. AI uses it to locate the target table mentioned by the user.",
"ai_chat.builtin_tools.database.get_tables.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_tables.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_tables.params": "connectionId, dbName",
"ai_chat.builtin_tools.database.get_tables.tool_description": "After the target connection and database name are known, if the user asks about a table or implicitly mentions one but the exact table name is unknown, call this tool to get all table names in that database (table names only) and infer the target table.",
"ai_chat.builtin_tools.database.get_triggers.desc": "Get trigger definitions for a specified table",
"ai_chat.builtin_tools.database.get_triggers.detail": "Pass connectionId, dbName, and tableName, then return trigger name, timing, event type, and statement body. AI can inspect it directly when analyzing implicit writes, side effects, and audit logic.",
"ai_chat.builtin_tools.database.get_triggers.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.get_triggers.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.get_triggers.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.get_triggers.params": "connectionId, dbName, tableName",
"ai_chat.builtin_tools.database.get_triggers.tool_description": "Get trigger definitions for the specified table, including timing, event, and trigger statement. Use it to investigate implicit data changes, audit logic, and table-level side effects.",
"ai_chat.builtin_tools.database.inspect_database_bundle.desc": "Capture a structure overview for a specified database",
"ai_chat.builtin_tools.database.inspect_database_bundle.detail": "Pass connectionId and dbName, then return table list, table count, total field count, and per-table field summary preview. Useful for first-pass exploration of an unfamiliar database before drilling into target tables.",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.includeColumns.description": "Optional. Whether to include per-table field summaries. Default true.",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.perTableColumnLimit.description": "Optional. Maximum field summaries per table. Default 8, maximum 30.",
"ai_chat.builtin_tools.database.inspect_database_bundle.parameters.tableLimit.description": "Optional. Maximum tables to return. Default 80, maximum 200.",
"ai_chat.builtin_tools.database.inspect_database_bundle.params": "connectionId, dbName, includeColumns?, tableLimit?, perTableColumnLimit?",
"ai_chat.builtin_tools.database.inspect_database_bundle.tool_description": "Get a structure overview for the specified database, returning table name list, total field count, and per-table field summary preview. Use it for unfamiliar database exploration, data mapping, and quickly choosing the next table to analyze deeply.",
"ai_chat.builtin_tools.database.inspect_table_bundle.desc": "Capture a structure snapshot for a specified table",
"ai_chat.builtin_tools.database.inspect_table_bundle.detail": "Pass connectionId, dbName, and tableName, then return columns, indexes, foreign keys, triggers, and DDL; sample rows can also be included. Useful before writing SQL, reviewing table design, or investigating side effects.",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.includeSampleRows.description": "Optional. Whether to include sample rows.",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.sampleLimit.description": "Optional. Sample row count. Default 10, maximum 100.",
"ai_chat.builtin_tools.database.inspect_table_bundle.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.inspect_table_bundle.params": "connectionId, dbName, tableName, includeSampleRows?, sampleLimit?",
"ai_chat.builtin_tools.database.inspect_table_bundle.tool_description": "Get a complete structure snapshot for the specified table, returning columns, indexes, foreign keys, triggers, DDL, and optional sample rows. Use it for full table-design exploration, quickly understanding table relationships, and reducing repeated round trips.",
"ai_chat.builtin_tools.database.preview_table_rows.desc": "Preview the first rows of a specified table",
"ai_chat.builtin_tools.database.preview_table_rows.detail": "Pass connectionId, dbName, tableName, and optional limit, then return real sample rows from the table. Use it to inspect data shape, null distribution, and enum values before deciding how to write SQL.",
"ai_chat.builtin_tools.database.preview_table_rows.parameters.connectionId.description": "Connection ID",
"ai_chat.builtin_tools.database.preview_table_rows.parameters.dbName.description": "Database name",
"ai_chat.builtin_tools.database.preview_table_rows.parameters.limit.description": "Optional. Preview row count. Default 20, maximum 100.",
"ai_chat.builtin_tools.database.preview_table_rows.parameters.tableName.description": "Table name",
"ai_chat.builtin_tools.database.preview_table_rows.params": "connectionId, dbName, tableName, limit?",
"ai_chat.builtin_tools.database.preview_table_rows.tool_description": "Preview sample rows from the specified table. Use it to quickly understand field value shapes, nulls, time formats, and status enums, reducing blind SQL generation by the model.",
"ai_chat.builtin_tools.flows.active_tab.description": "Read the current editor SQL draft or table tab before field checks, index analysis, and read-only verification.",
"ai_chat.builtin_tools.flows.active_tab.title": "Read the current tab",
"ai_chat.builtin_tools.flows.ai_context.description": "Confirm which table structures are attached to the current conversation before field checks, table design review, or SQL generation.",
"ai_chat.builtin_tools.flows.ai_context.title": "Inspect current AI context",
"ai_chat.builtin_tools.flows.ai_runtime.description": "Confirm the current model, safety level, context level, Skills, and MCP tools before choosing a probe chain.",
"ai_chat.builtin_tools.flows.ai_runtime.title": "Inspect current AI capabilities",
"ai_chat.builtin_tools.flows.ai_sessions.description": "Locate previous AI sessions, first user questions, and recent replies before reusing the current tab or historical SQL context.",
"ai_chat.builtin_tools.flows.ai_sessions.title": "Review AI chat history",
"ai_chat.builtin_tools.flows.ai_setup_health.description": "Get an AI configuration health snapshot first, then decide whether to drill into providers, chat readiness, MCP, prompts, Skills, or context.",
"ai_chat.builtin_tools.flows.ai_setup_health.title": "One-shot AI setup health check",
"ai_chat.builtin_tools.flows.app_health_overview.description": "Use when AI instability, connection issues, MCP issues, or message rendering problems overlap and an overall health snapshot is needed first.",
"ai_chat.builtin_tools.flows.app_health_overview.title": "AI app health overview",
"ai_chat.builtin_tools.flows.app_logs.description": "Review ERROR/WARN lines from the gonavi.log tail, then combine MCP, connection, and current data source state for diagnosis.",
"ai_chat.builtin_tools.flows.app_logs.title": "Troubleshoot application logs",
"ai_chat.builtin_tools.flows.chat_readiness.description": "Check which chat input prerequisites are missing, such as active provider, key, endpoint, or selected model, instead of guessing from UI symptoms.",
"ai_chat.builtin_tools.flows.chat_readiness.title": "Troubleshoot chat send readiness",
"ai_chat.builtin_tools.flows.choose_tool_route.description": "Use keywords to decide which built-in probes to call, how to fill tool arguments, and whether external MCP tools are available.",
"ai_chat.builtin_tools.flows.choose_tool_route.title": "Choose an AI tool route",
"ai_chat.builtin_tools.flows.codebase_hotspots.description": "Use before splitting thousand-line components, choosing the next refactor slice, or changing UI/AI/MCP code to inspect split hotspots, risk, and validation scope.",
"ai_chat.builtin_tools.flows.codebase_hotspots.title": "Govern large frontend files",
"ai_chat.builtin_tools.flows.connection_capabilities.description": "Check whether the current connection supports database creation/deletion, result editing, SQL export, or approximate counts.",
"ai_chat.builtin_tools.flows.connection_capabilities.title": "Check data-source capability boundaries",
"ai_chat.builtin_tools.flows.connection_failures.description": "When connection failures, cooldown, or validation failures appear, get structured root cause, latest address, and next actions first.",
"ai_chat.builtin_tools.flows.connection_failures.title": "Troubleshoot connection failures and cooldown",
"ai_chat.builtin_tools.flows.context_budget.description": "When AI slows down, answers poorly, or context is too large, inspect messages, DDL, MCP schema, prompts, and Skills before narrowing context.",
"ai_chat.builtin_tools.flows.context_budget.title": "Diagnose AI context size",
"ai_chat.builtin_tools.flows.current_connection.description": "Confirm the active data source type, address, current database, and SSH/proxy status before database exploration or connection troubleshooting.",
"ai_chat.builtin_tools.flows.current_connection.title": "Inspect current connection",
"ai_chat.builtin_tools.flows.database_overview.description": "Start by seeing which tables exist and what fields they roughly contain, then drill into target tables with snapshots.",
"ai_chat.builtin_tools.flows.database_overview.title": "Quick database overview",
"ai_chat.builtin_tools.flows.deep_structure.description": "Use for index optimization, relationship mapping, implicit side-effect investigation, and DDL review.",
"ai_chat.builtin_tools.flows.deep_structure.title": "Deep-dive structure",
"ai_chat.builtin_tools.flows.docker_mcp.description": "Use when Docker README setup discovers 0 tools, containers exit immediately, or docker run arguments may be split incorrectly.",
"ai_chat.builtin_tools.flows.docker_mcp.title": "Troubleshoot Docker MCP startup",
"ai_chat.builtin_tools.flows.external_sql_dirs.description": "Confirm configured external SQL directories, their connection/database bindings, and where an opened SQL file comes from before analyzing scripts.",
"ai_chat.builtin_tools.flows.external_sql_dirs.title": "Inventory external SQL directories",
"ai_chat.builtin_tools.flows.external_sql_file.description": "Locate a script path, read SQL file content from the directory, and combine it with the active tab draft if already opened.",
"ai_chat.builtin_tools.flows.external_sql_file.title": "Read external SQL files",
"ai_chat.builtin_tools.flows.field_lookup_table.description": "Use when only a field name, business meaning, or comment keyword is known, but the exact table is still unclear.",
"ai_chat.builtin_tools.flows.field_lookup_table.title": "Find tables by field",
"ai_chat.builtin_tools.flows.locate_table_fields.description": "Find the connection, database, and table first, then confirm real field names before generating SQL.",
"ai_chat.builtin_tools.flows.locate_table_fields.title": "Locate tables and fields",
"ai_chat.builtin_tools.flows.mcp_authoring.description": "Read real field descriptions, templates, and full-command splitting rules before validating pasted commands or drafts.",
"ai_chat.builtin_tools.flows.mcp_authoring.title": "New MCP authoring guide",
"ai_chat.builtin_tools.flows.mcp_setup.description": "Confirm configured and enabled MCP services and external client write status, then use MCP runtime failure logs to explain missing tools.",
"ai_chat.builtin_tools.flows.mcp_setup.title": "Troubleshoot MCP access status",
"ai_chat.builtin_tools.flows.mcp_tool_parameters.description": "Find the real discovered MCP tool alias first, then read inputSchema, required fields, enums, and nested parameter paths.",
"ai_chat.builtin_tools.flows.mcp_tool_parameters.title": "Inspect MCP tool parameters",
"ai_chat.builtin_tools.flows.message_flow.description": "Read the real current-session message structure and anomaly signals when replies split into bubbles, tool calls do not close, or flow state looks wrong.",
"ai_chat.builtin_tools.flows.message_flow.title": "Diagnose AI message flow",
"ai_chat.builtin_tools.flows.prompts_skills.description": "Confirm current custom prompts, enabled Skills, dependency tools, and effective scope before explaining current AI behavior.",
"ai_chat.builtin_tools.flows.prompts_skills.title": "Inspect current prompts and Skills",
"ai_chat.builtin_tools.flows.providers_models.description": "Confirm which providers are configured and active, whether keys or models are missing, and why chat cannot send or model lists are empty.",
"ai_chat.builtin_tools.flows.providers_models.title": "Troubleshoot providers and models",
"ai_chat.builtin_tools.flows.readonly_validation.description": "After generating SQL, validate results on a small scope while still respecting the AI safety level.",
"ai_chat.builtin_tools.flows.readonly_validation.title": "Read-only validation",
"ai_chat.builtin_tools.flows.recent_sql_activity.description": "Check whether recent activity is mostly read or write, whether DDL or deletes occurred, and which database has the most recent errors.",
"ai_chat.builtin_tools.flows.recent_sql_activity.title": "Summarize recent SQL activity",
"ai_chat.builtin_tools.flows.recent_sql_logs.description": "Trace recently failed SQL, slow query duration, or let AI explain and optimize based on real execution history.",
"ai_chat.builtin_tools.flows.recent_sql_logs.title": "Review recent execution records",
"ai_chat.builtin_tools.flows.redis_topology.description": "Use for Redis Sentinel, Cluster, multi-node, DB switch failures, or SSH tunnel issues to get status, redacted URI, adapter, DB semantics, and next actions.",
"ai_chat.builtin_tools.flows.redis_topology.title": "Diagnose Redis topology",
"ai_chat.builtin_tools.flows.remote_agent_mcp.description": "Use when OpenClaw/Hermans run on cloud Linux while database connections and passwords stay on the Windows GoNavi machine.",
"ai_chat.builtin_tools.flows.remote_agent_mcp.title": "Connect remote Agents to GoNavi MCP",
"ai_chat.builtin_tools.flows.render_error.description": "Use when an AI message is blank or a bubble fails locally while the panel stays alive; read the isolated render-error snapshot first.",
"ai_chat.builtin_tools.flows.render_error.title": "Troubleshoot AI bubble render errors",
"ai_chat.builtin_tools.flows.safety_boundary.description": "Check whether the current state is read-only, whether DDL/DML is allowed, and whether MCP writes require allowMutating.",
"ai_chat.builtin_tools.flows.safety_boundary.title": "Check write safety boundaries",
"ai_chat.builtin_tools.flows.sample_data.description": "Confirm fields first, then inspect the first real sample rows and null patterns.",
"ai_chat.builtin_tools.flows.sample_data.title": "Understand sample data",
"ai_chat.builtin_tools.flows.saved_connections.description": "Filter locally saved data sources by keyword or type, then inspect the chosen connection state or database structure.",
"ai_chat.builtin_tools.flows.saved_connections.title": "Inventory local connection assets",
"ai_chat.builtin_tools.flows.saved_queries.description": "Find locally saved query scripts first, then check fields and run read-only validation instead of rewriting old SQL manually.",
"ai_chat.builtin_tools.flows.saved_queries.title": "Reuse saved SQL",
"ai_chat.builtin_tools.flows.shortcuts.description": "Confirm current Win/Mac shortcuts, customizations, and how to trigger result panel, AI panel, query execution, and related actions.",
"ai_chat.builtin_tools.flows.shortcuts.title": "Inspect current shortcut configuration",
"ai_chat.builtin_tools.flows.sql_editor_transaction.description": "Confirm whether SQL editor DML enters a managed transaction, current commit mode, pending transactions, and commit semantics after update/insert/delete.",
"ai_chat.builtin_tools.flows.sql_editor_transaction.title": "Check SQL editor transactions",
"ai_chat.builtin_tools.flows.sql_risk.description": "Before execution, deletion, update, DDL, or batch SQL, check statement count, write/DDL risk, WHERE clauses, and current safety policy.",
"ai_chat.builtin_tools.flows.sql_risk.title": "Pre-check SQL risk",
"ai_chat.builtin_tools.flows.sql_snippets.description": "Find team SQL snippet templates, completion prefixes, and common skeletons before deciding whether to rewrite.",
"ai_chat.builtin_tools.flows.sql_snippets.title": "Find SQL snippet templates",
"ai_chat.builtin_tools.flows.support_bundle.description": "Use when troubleshooting evidence needs to be collected at once, without secrets or database passwords.",
"ai_chat.builtin_tools.flows.support_bundle.title": "Export AI troubleshooting support bundle",
"ai_chat.builtin_tools.flows.table_snapshot.description": "Return columns, indexes, foreign keys, triggers, and DDL in one call; sample rows can be included when needed to reduce round trips.",
"ai_chat.builtin_tools.flows.table_snapshot.title": "One-shot table snapshot",
"ai_chat.builtin_tools.flows.upstream_request.description": "Read redacted gonavi.log request records when the user needs upstream payloads, requestId, status codes, latency, or request body previews.",
"ai_chat.builtin_tools.flows.upstream_request.title": "Trace AI upstream requests",
"ai_chat.builtin_tools.flows.workspace_tabs.description": "See which SQL, table, or command tabs are open, then inspect the target tab for field checks, comparisons, and read-only validation.",
"ai_chat.builtin_tools.flows.workspace_tabs.title": "Inventory the current workspace",
"ai_chat.composer_notice.missing_model.description": "Open the model dropdown below and select a model. If the list is empty, check the provider endpoint and API Key.",
"ai_chat.composer_notice.missing_model.title": "Select a model first",
"ai_chat.composer_notice.missing_provider.description": "Add and enable a model provider in AI settings first.",
"ai_chat.composer_notice.missing_provider.title": "No provider available",
"ai_chat.composer_notice.model_fetch_failed.default_description": "Check the provider endpoint, API Key, or account permissions, then reopen the model dropdown.",
"ai_chat.composer_notice.model_fetch_failed.detail_description": "Provider detail: {{detail}}",
"ai_chat.composer_notice.model_fetch_failed.title": "Model list failed to load",
"ai_chat.header.action.export": "Export",
"ai_chat.header.default_session_title": "New chat",
"ai_chat.header.export_time": "Exported at:",
"ai_chat.header.export_user": "You",
"ai_chat.header.mode.chat": "Chat",
"ai_chat.header.mode.history": "History",
"ai_chat.header.mode.insights": "Auto insights",
"ai_chat.header.mode_tabs.aria_label": "AI work mode",
"ai_chat.header.session.connected": "{{title}} · Connected",
"ai_chat.header.tooltip.close": "Close panel",
"ai_chat.header.tooltip.export_markdown": "Export as Markdown",
"ai_chat.header.tooltip.history": "Chat history",
"ai_chat.header.tooltip.new_chat": "New chat",
"ai_chat.header.tooltip.new_chat_clear": "New chat (clear current)",
"ai_chat.header.tooltip.settings": "AI settings",
"ai_chat.history.action.new_chat": "Start new chat",
"ai_chat.history.default_session_title": "New chat",
"ai_chat.history.empty.no_history": "No history yet",
"ai_chat.history.empty.no_matches": "No matching chats",
"ai_chat.history.search.placeholder": "Search history...",
"ai_chat.history.title": "Chat history",
"ai_chat.history.tooltip.collapse": "Collapse",
"ai_chat.history.tooltip.delete": "Delete",
"ai_chat.input.action.send": "Send",
"ai_chat.input.action.stop": "Stop generating",
"ai_chat.input.attachment.excel.worksheet_header": "[Worksheet: {{sheetName}}]",
"ai_chat.input.attachment.kind.document": "File",
"ai_chat.input.attachment.kind.excel": "Excel",
"ai_chat.input.attachment.kind.file": "File",
"ai_chat.input.attachment.kind.image": "Image",
"ai_chat.input.attachment.kind.markdown": "Markdown",
"ai_chat.input.attachment.kind.pdf": "PDF",
"ai_chat.input.attachment.kind.text": "Text",
"ai_chat.input.attachment.kind.word": "Word",
"ai_chat.input.attachment.message.read_failed": "Failed to read attachment {{name}}: {{detail}}",
"ai_chat.input.attachment.message.warning": "{{name}}: {{message}}",
"ai_chat.input.attachment.prompt.content_truncated": "[Attachment body truncated]",
"ai_chat.input.attachment.prompt.default_user_content": "Continue based on the following attachment content.",
"ai_chat.input.attachment.prompt.extract_warning": "- Extraction note: {{message}}",
"ai_chat.input.attachment.prompt.heading": "### Attachment {{index}}: {{name}}",
"ai_chat.input.attachment.prompt.kind": "- Type: {{kind}}",
"ai_chat.input.attachment.prompt.mime": "- MIME: {{mimeType}}",
"ai_chat.input.attachment.prompt.no_text": "No readable attachment body was extracted.",
"ai_chat.input.attachment.prompt.size": "- Size: {{size}}",
"ai_chat.input.attachment.prompt.text_truncated": "- Extraction note: Body text was truncated before sending.",
"ai_chat.input.attachment.prompt.wrapper_end": "</User Uploaded Attachments>",
"ai_chat.input.attachment.prompt.wrapper_start": "<User Uploaded Attachments>",
"ai_chat.input.attachment.remove_file": "Remove attachment",
"ai_chat.input.attachment.remove_image": "Remove image",
"ai_chat.input.attachment.warning.extract_failed": "Attachment body extraction failed: {{detail}}",
"ai_chat.input.attachment.warning.legacy_office_partial_text": "Legacy Office binary files only use lightweight text snippet extraction; convert to docx/xlsx before uploading for more complete content.",
"ai_chat.input.attachment.warning.pdf_no_text": "No readable text was extracted from the PDF; if it is scanned or uses complex encoding, copy the body before sending.",
"ai_chat.input.attachment.warning.pdf_partial_text": "PDF used lightweight text extraction; scanned or compressed-font content may not be fully readable.",
"ai_chat.input.attachment.warning.too_large": "File exceeds {{size}}; file metadata was attached but the body was not read.",
"ai_chat.input.attachment.warning.unsupported_type": "This file type was attached, but body text was not extracted yet; use markdown, txt, docx, xlsx, or pdf if the model needs the content.",
"ai_chat.input.context.add": "Add",
"ai_chat.input.context.connection_tooltip": "Current data query context",
"ai_chat.input.context.current_count": "Current context · {{count}}",
"ai_chat.input.context.label": "Attached context",
"ai_chat.input.context.memory_tooltip": "Current session memory usage. Auto-compression starts when it reaches the {{limit}} limit.",
"ai_chat.input.context.selector.cancel": "Cancel",
"ai_chat.input.context.selector.confirm": "Sync selected tables to context",
"ai_chat.input.context.selector.database_placeholder": "Switch database",
"ai_chat.input.context.selector.empty_no_match": "No tables matching '{{searchText}}' were found",
"ai_chat.input.context.selector.empty_no_tables": "No tables available to attach in the current database",
"ai_chat.input.context.selector.invert_selection": "Invert matching selection",
"ai_chat.input.context.selector.search_placeholder": "Search table names in the current database...",
"ai_chat.input.context.selector.select_all": "Select all matching tables ({{count}})",
"ai_chat.input.context.selector.title": "Attach table schemas as context",
"ai_chat.input.context.tag_label": "Linked context ({{count}})",
"ai_chat.input.message.context_added": "Added {{count}} table structures to the context",
"ai_chat.input.message.context_load_failed": "Failed to load table context: {{detail}}",
"ai_chat.input.message.context_removed": "Removed {{count}} table structures from the context",
"ai_chat.input.message.context_sync_failed": "Failed to sync AI context: {{detail}}",
"ai_chat.input.message.context_synced": "Context synced: added {{added}}, removed {{removed}}",
"ai_chat.input.message.fetch_table_schema_failed": "Failed to load structure for {{table}}: {{detail}}",
"ai_chat.input.message.fetch_tables_failed": "Failed to load tables: {{detail}}",
"ai_chat.input.message.select_database_context_first": "Select a database on the left before attaching chat context",
"ai_chat.input.message.selection_unchanged": "Selected tables did not change",
"ai_chat.input.modal.empty_tables": "No tables match '{{query}}'",
"ai_chat.input.modal.invert_matching": "Invert matching results",
"ai_chat.input.modal.ok": "Sync selected tables to context",
"ai_chat.input.modal.search_table.placeholder": "Search tables in the current database...",
"ai_chat.input.modal.select_all_matching": "Select all matching tables ({{count}})",
"ai_chat.input.modal.switch_database.placeholder": "Switch database",
"ai_chat.input.modal.title": "Attach database table schema context",
"ai_chat.input.model.placeholder": "Select model",
"ai_chat.input.placeholder": "Type a message... ({{shortcut}}, Shift+Enter for newline, / for commands)",
"ai_chat.input.placeholder_compact": "Type a message... {{shortcut}} · / commands",
"ai_chat.input.shortcut.disabled": "Shortcut sending disabled",
"ai_chat.input.shortcut.send_with_combo": "{{shortcut}} to send",
"ai_chat.input.slash.activity.desc": "Summarize recent executions, errors, and hotspots",
"ai_chat.input.slash.activity.keywords": "activity|sql logs|recent executions|error",
"ai_chat.input.slash.activity.label": "🕘 Recent SQL activity",
"ai_chat.input.slash.activity.prompt": "Call inspect_recent_sql_activity first. Summarize the recent SQL activity, error hotspots, and the main read/write patterns.",
"ai_chat.input.slash.airender.desc": "Read the most recent AI message render failure record",
"ai_chat.input.slash.airender.keywords": "render failure|blank bubble|ai message|render|white block",
"ai_chat.input.slash.airender.label": "🧯 AI render failure",
"ai_chat.input.slash.airender.prompt": "Call inspect_ai_last_render_error first. Tell me which message failed in the most recent AI render failure record, what the error summary says, and what I should check next.",
"ai_chat.input.slash.applog.desc": "Review recent GoNavi application logs",
"ai_chat.input.slash.applog.keywords": "logs|gonavi.log|mcp error|connection failure|startup exception",
"ai_chat.input.slash.applog.label": "🪵 App logs",
"ai_chat.input.slash.applog.prompt": "Call inspect_app_logs first. Check the recent errors and warnings in the GoNavi application logs; if I mention connection failures, MCP startup failures, startup exceptions, or gonavi.log, prioritize filtering with those keywords.",
"ai_chat.input.slash.budget.desc": "Inspect message, DDL, MCP schema, and Skills size",
"ai_chat.input.slash.budget.keywords": "context|budget|large context|slow response|schema too large|tool results",
"ai_chat.input.slash.budget.label": "🧠 Context budget",
"ai_chat.input.slash.budget.prompt": "Call inspect_ai_context_budget first. Inspect the size risks of the current conversation messages, tool results, DDL, MCP schema, prompts, and Skills, then tell me which context I should narrow down.",
"ai_chat.input.slash.category.diagnose.description": "Run built-in probes first to inspect the real state of AI, MCP, and recent SQL activity.",
"ai_chat.input.slash.category.diagnose.title": "Diagnostic probes",
"ai_chat.input.slash.category.generate.description": "Generate SQL, test data, or migration drafts directly.",
"ai_chat.input.slash.category.generate.title": "SQL generation",
"ai_chat.input.slash.category.review.description": "Explain SQL and review table design and index strategies.",
"ai_chat.input.slash.category.review.title": "Structure review",
"ai_chat.input.slash.connfail.desc": "Summarize recent connection failures, cooldowns, and validation errors",
"ai_chat.input.slash.connfail.keywords": "connection failure|cooldown|validation failure|ssh|mysql",
"ai_chat.input.slash.connfail.label": "🧯 Connection failure probe",
"ai_chat.input.slash.connfail.prompt": "Call inspect_recent_connection_failures first. Summarize the real log conclusions for recent database connection failures, connection cooldowns, validation failures, and SSH tunnel exceptions; if there is already a clear address or type, then use inspect_current_connection or inspect_saved_connections to narrow it further.",
"ai_chat.input.slash.diff.desc": "Compare two tables and generate changes",
"ai_chat.input.slash.diff.keywords": "diff|migration|alter",
"ai_chat.input.slash.diff.label": "🔄 Table diff",
"ai_chat.input.slash.diff.prompt": "Compare the structure differences between these two tables and generate ALTER statements to migrate from the old version to the new version:",
"ai_chat.input.slash.empty.description": "Try these common entries first to jump into SQL generation, AI health checks, or MCP diagnostics.",
"ai_chat.input.slash.empty.summary": "There are {{count}} slash commands available. Search by command name, description, or keyword.",
"ai_chat.input.slash.empty.title": "No matching slash commands",
"ai_chat.input.slash.explain.desc": "Explain the selected SQL logic",
"ai_chat.input.slash.explain.keywords": "explain|sql|logic",
"ai_chat.input.slash.explain.label": "💡 Explain SQL",
"ai_chat.input.slash.explain.prompt": "Explain the execution logic of this SQL and what each step does:\n```sql\n\n```",
"ai_chat.input.slash.health.desc": "Run health probes for the current AI setup",
"ai_chat.input.slash.health.keywords": "health|ai config|probe",
"ai_chat.input.slash.health.label": "🩺 AI health check",
"ai_chat.input.slash.health.prompt": "Call inspect_ai_setup_health first. Run a full health check of the current GoNavi AI setup, then summarize blockers, warnings, and nextActions.",
"ai_chat.input.slash.hotspots.desc": "Review large-file split candidates and test scope",
"ai_chat.input.slash.hotspots.keywords": "large file|bloated|split|refactor|hotspots|code hotspots|thousands of lines",
"ai_chat.input.slash.hotspots.label": "🧱 Code hotspots",
"ai_chat.input.slash.hotspots.prompt": "Call inspect_codebase_hotspots first. Read the current GoNavi frontend large-file hotspots, suggested split slices, and testing targets, then tell me which file is the best next split candidate, what boundary to use, and which verification to run. Keywords:",
"ai_chat.input.slash.index.desc": "Recommend the best index plan",
"ai_chat.input.slash.index.keywords": "index|slow query|performance",
"ai_chat.input.slash.index.label": "📊 Index suggestions",
"ai_chat.input.slash.index.prompt": "Recommend the best index plan based on the current table structure and common query scenarios, and provide the table DDL:",
"ai_chat.input.slash.mcp.desc": "Check MCP services and external client status",
"ai_chat.input.slash.mcp.keywords": "mcp|codex|claude|openclaw|hermans|external client",
"ai_chat.input.slash.mcp.label": "🪛 Troubleshoot MCP setup",
"ai_chat.input.slash.mcp.prompt": "Call inspect_mcp_setup first. Audit the current MCP services, tool discovery results, and the connection status of local Claude Code / Codex clients plus remote OpenClaw / Hermans agents.",
"ai_chat.input.slash.mcpadd.desc": "See how command, args, env, and templates should be filled",
"ai_chat.input.slash.mcpadd.keywords": "add mcp|command|args|env|template",
"ai_chat.input.slash.mcpadd.label": "🧭 Add MCP guidance",
"ai_chat.input.slash.mcpadd.prompt": "Call inspect_mcp_authoring_guide first; if I pasted a full startup command or draft, also call inspect_mcp_draft to simulate the fields and validation issues. Then combine inspect_mcp_setup and tell me how command, args, env, and timeout should be filled when adding a GoNavi MCP service, plus which template is the closest fit.",
"ai_chat.input.slash.mcpdraft.desc": "Validate how to split one MCP startup command",
"ai_chat.input.slash.mcpdraft.keywords": "mcp draft|mcp validation|fullcommand|startup command|argument splitting|command|args|env",
"ai_chat.input.slash.mcpdraft.label": "🧪 MCP draft validation",
"ai_chat.input.slash.mcpdraft.prompt": "Call inspect_mcp_draft first to validate the MCP fullCommand or command/args/env/timeout draft I provide. Return the auto-split result, startup preview, suggestedServerSeed, errors, warnings, and nextActions; if field guidance is still missing, then also call inspect_mcp_authoring_guide.",
"ai_chat.input.slash.mcpfail.desc": "Read recent MCP startup, discovery, and call failure logs",
"ai_chat.input.slash.mcpfail.keywords": "mcpfail|mcp failure|runtime failure|zero tools discovered|stdio|docker mcp|http mcp|startup failure|call failure",
"ai_chat.input.slash.mcpfail.label": "🧯 MCP runtime failures",
"ai_chat.input.slash.mcpfail.prompt": "Call inspect_mcp_runtime_failures first. Read the recent MCP startup, tool discovery, tool call, stdio, Docker, or HTTP MCP failure logs, then combine them with the current MCP service configuration to judge the cause and nextActions. Keywords or service name:",
"ai_chat.input.slash.mcptool.desc": "Review MCP tool schema and arguments format",
"ai_chat.input.slash.mcptool.keywords": "mcp tool|mcp tool arguments|schema|arguments|parameters|tool call|inputschema",
"ai_chat.input.slash.mcptool.label": "🧩 MCP tool arguments",
"ai_chat.input.slash.mcptool.prompt": "Call inspect_mcp_setup first to find the currently discovered MCP tool alias. If I already gave a tool name or keyword, also call inspect_mcp_tool_schema to read the matching inputSchema, then tell me the required parameters, field types, enum values, nested paths, and how the arguments JSON should be written.",
"ai_chat.input.slash.mock.desc": "Generate INSERT test data",
"ai_chat.input.slash.mock.keywords": "mock|test data|insert",
"ai_chat.input.slash.mock.label": "🎲 Mock test data",
"ai_chat.input.slash.mock.prompt": "Generate 10 business-realistic INSERT test data statements for the current linked tables:",
"ai_chat.input.slash.optimize.desc": "Analyze SQL performance bottlenecks",
"ai_chat.input.slash.optimize.keywords": "optimize|index|performance",
"ai_chat.input.slash.optimize.label": "⚡ Optimization analysis",
"ai_chat.input.slash.optimize.prompt": "Analyze this SQL for performance issues and provide an optimized version:\n```sql\n\n```",
"ai_chat.input.slash.query.desc": "Describe what you want to query",
"ai_chat.input.slash.query.keywords": "query|natural language|data lookup",
"ai_chat.input.slash.query.label": "🔍 Natural language query",
"ai_chat.input.slash.query.prompt": "Write a SQL query for me:",
"ai_chat.input.slash.safety.desc": "Confirm read-only vs write boundaries and allowMutating",
"ai_chat.input.slash.safety.keywords": "safety|read-only|allowmutating|ddl|dml",
"ai_chat.input.slash.safety.label": "🛡️ Write safety",
"ai_chat.input.slash.safety.prompt": "Call inspect_ai_safety first. Tell me the current write boundaries for AI and GoNavi MCP, whether they are read-only, and whether execute_sql requires allowMutating.",
"ai_chat.input.slash.schema.desc": "Review table design quality",
"ai_chat.input.slash.schema.keywords": "schema|table structure|design",
"ai_chat.input.slash.schema.label": "🏗️ Table design review",
"ai_chat.input.slash.schema.prompt": "Review the current linked table design, including field types, normalization, index strategy, and improvement suggestions:",
"ai_chat.input.slash.shortcuts.desc": "Read the current Win/Mac shortcut configuration",
"ai_chat.input.slash.shortcuts.keywords": "shortcuts|result area|mac|windows",
"ai_chat.input.slash.shortcuts.label": "⌨️ Shortcut probe",
"ai_chat.input.slash.shortcuts.prompt": "Call inspect_shortcuts first. Tell me the current GoNavi shortcut configuration, especially how to execute SQL, switch the results area, open the AI panel, and send AI messages on the current platform and the other platform, and whether any defaults were changed.",
"ai_chat.input.slash.sql.desc": "Describe requirements and generate statements",
"ai_chat.input.slash.sql.keywords": "sql|generate|query statement",
"ai_chat.input.slash.sql.label": "📝 Generate SQL",
"ai_chat.input.slash.sql.prompt": "Generate SQL from the following requirements:",
"ai_chat.input.slash.tools.desc": "Pick the right built-in probe by keyword",
"ai_chat.input.slash.tools.keywords": "tool catalog|built-in tools|toolcatalog|parameter hints|arguments|probe route",
"ai_chat.input.slash.tools.label": "🧰 Tool catalog",
"ai_chat.input.slash.tools.prompt": "Call inspect_ai_tool_catalog first. Filter recommended flows, built-in tool parameter hints, and the current MCP tool summary by my question keywords, then tell me which tool I should call next. Keywords:",
"ai_chat.input.slash.tx.desc": "Review SQL editor commit mode and pending transactions",
"ai_chat.input.slash.tx.keywords": "transaction|commit|auto commit|manual commit|pending transaction|dml",
"ai_chat.input.slash.tx.label": "🔁 SQL transaction status",
"ai_chat.input.slash.tx.prompt": "Call inspect_sql_editor_transaction first. Tell me the current SQL editor DML-managed transaction semantics, manual vs automatic commit settings, whether the active SQL tabs enter a transaction, whether there are pending transactions, and whether I should commit, roll back, or keep executing next.",
"ai_chat.input.status.action.fix_provider": "Fix provider configuration",
"ai_chat.input.status.action.open_settings": "Open AI settings",
"ai_chat.input.status.action.reload_models": "Reload models",
"ai_chat.input.status.dismiss_aria_label": "Dismiss AI status notice",
"ai_chat.input.status.issue.missing_base_url": "endpoint URL",
"ai_chat.input.status.issue.missing_secret": "API key",
"ai_chat.input.status.issue.missing_selected_model": "model",
"ai_chat.input.status.issue.separator": ", ",
"ai_chat.input.status.label.loading": "Loading",
"ai_chat.input.status.label.model_required": "Model required",
"ai_chat.input.status.label.needs_fix": "Needs fix",
"ai_chat.input.status.label.not_ready": "Not ready",
"ai_chat.input.status.label.ready": "Ready",
"ai_chat.input.status.missing_model.description.available": "{{count}} models are available right now. Select one before sending.",
"ai_chat.input.status.missing_model.description.empty": "If the list is empty, check the provider endpoint, API key, and model access.",
"ai_chat.input.status.missing_model.title.loading": "Loading models for {{provider}}",
"ai_chat.input.status.missing_model.title.select": "Select a model for {{provider}}",
"ai_chat.input.status.missing_provider.description.none": "Add and enable a model provider in AI settings first.",
"ai_chat.input.status.missing_provider.description.unselected": "Select an active provider in AI settings before sending.",
"ai_chat.input.status.missing_provider.title.none": "No provider available",
"ai_chat.input.status.missing_provider.title.unselected": "Providers are configured, but none is currently active",
"ai_chat.input.status.provider_fallback_name": "Current provider",
"ai_chat.input.status.provider_incomplete.description": "Complete the provider configuration before sending to avoid immediate request failures.",
"ai_chat.input.status.provider_incomplete.title": "{{provider}} is missing {{issues}}",
"ai_chat.input.status.ready.auto_model": "Auto-selected",
"ai_chat.input.status.ready.description.no_context": "You can send now. Select a connection or attach table schema context for more precise database guidance.",
"ai_chat.input.status.ready.description.with_connection": "The current connection is selected. Attach table schema context for more precise database guidance.",
"ai_chat.input.status.ready.description.with_context": "{{count}} table schema contexts are attached. You can send now.",
"ai_chat.input.status.ready.title": "AI is ready: {{provider}} / {{model}}",
"ai_chat.input.tooltip.attach_table_context": "Attach database table context",
"ai_chat.input.tooltip.slash_command": "Slash commands",
"ai_chat.input.tooltip.upload_attachment": "Upload attachment (images, Markdown, Word, Excel, PDF, text)",
"ai_chat.input.tooltip.upload_image": "Upload image or screenshot",
"ai_chat.inspection.ai_config.error.inspect_ai_chat_readiness": "Failed to read AI chat prerequisites",
"ai_chat.inspection.ai_config.error.inspect_ai_guidance": "Failed to read current AI prompts and Skills configuration",
"ai_chat.inspection.ai_config.error.inspect_ai_providers": "Failed to read current AI provider configuration",
"ai_chat.inspection.ai_config.error.inspect_ai_runtime": "Failed to read current AI runtime state",
"ai_chat.inspection.ai_config.error.inspect_ai_safety": "Failed to read current AI safety boundary",
"ai_chat.inspection.ai_config.error.inspect_ai_setup_health": "Failed to inspect current AI setup",
"ai_chat.inspection.ai_config.error.inspect_ai_tool_catalog": "Failed to read AI tool catalog",
"ai_chat.inspection.ai_config.error.inspect_mcp_authoring_guide": "Failed to read MCP authoring guide",
"ai_chat.inspection.ai_config.error.inspect_mcp_docker_setup": "Failed to inspect Docker MCP setup",
"ai_chat.inspection.ai_config.error.inspect_mcp_draft": "Failed to validate MCP draft",
"ai_chat.inspection.ai_config.error.inspect_mcp_remote_access": "Failed to read MCP remote access guidance",
"ai_chat.inspection.ai_config.error.inspect_mcp_setup": "Failed to read MCP setup state",
"ai_chat.inspection.ai_config.error.inspect_mcp_tool_schema": "Failed to read MCP tool parameter schema",
"ai_chat.inspection.ai_context.linked_summary": "Currently linked table schema contexts: {{count}}",
"ai_chat.inspection.ai_context.none_linked": "No AI table schema context is currently linked",
"ai_chat.inspection.ai_sessions.untitled": "Untitled session",
"ai_chat.inspection.app_health.app_log.unread": "GoNavi application logs are not readable: {{detail}}",
"ai_chat.inspection.app_health.connection_failures.unread": "Connection failure logs are not readable: {{detail}}",
"ai_chat.inspection.app_health.error.app_health_failed": "Failed to read AI application health overview",
"ai_chat.inspection.app_health.error.support_bundle_failed": "Failed to generate AI support bundle",
"ai_chat.inspection.app_health.last_render_error.empty_summary": "No AI message render errors have been recorded yet.",
"ai_chat.inspection.app_health.log_reading_unavailable": "The current runtime does not provide log reading capability",
"ai_chat.inspection.app_health.message.blocked": "AI application health has {{count}} blockers; fix provider and send prerequisites first",
"ai_chat.inspection.app_health.message.degraded": "AI application health has runtime anomaly signals; drill into logs or connection failure records first",
"ai_chat.inspection.app_health.message.needs_attention": "AI application health is usable overall, but still has {{count}} recommendations",
"ai_chat.inspection.app_health.message.ready": "The AI application health overview passed; AI configuration, logs, connection failures, and workspace context show no obvious issues",
"ai_chat.inspection.app_health.next_action.enable_app_log_reading": "Confirm the current runtime can read gonavi.log, then call inspect_app_logs for log details",
"ai_chat.inspection.app_health.next_action.inspect_app_log_errors": "Call inspect_app_logs to review recent raw ERROR/WARN lines and confirm whether they affect AI, MCP, or database connections",
"ai_chat.inspection.app_health.next_action.inspect_app_log_warnings": "If the user reports instability, call inspect_app_logs first to see whether WARN lines cluster around AI/MCP/connection paths",
"ai_chat.inspection.app_health.next_action.inspect_last_render_error": "Call inspect_ai_last_render_error to review the latest bubble render error messageId, content preview, and component stack",
"ai_chat.inspection.app_health.next_action.inspect_recent_connection_failures": "Call inspect_recent_connection_failures to review the latest connection failure cause, then decide whether to inspect the current connection or saved connection config",
"ai_chat.inspection.app_health.next_action.open_sql_tab": "To analyze the current SQL, open or select the target SQL tab first, then call inspect_active_tab",
"ai_chat.inspection.app_health.warning.app_log_errors": "Recent application logs contain {{count}} ERROR entries; inspect_app_logs should be checked first",
"ai_chat.inspection.app_health.warning.app_log_unread": "GoNavi application logs cannot be read, so startup exceptions and MCP/connection errors lack log evidence",
"ai_chat.inspection.app_health.warning.app_log_warnings": "Recent application logs contain {{count}} WARN entries; confirm whether they are known ignorable warnings",
"ai_chat.inspection.app_health.warning.connection_failures_recent": "Recently detected {{count}} connection failure/cooldown records",
"ai_chat.inspection.app_health.warning.connection_failures_unread": "Connection failure logs cannot be read, so database connection cooldown and validation failures lack structured evidence",
"ai_chat.inspection.app_health.warning.last_render_error": "A recent AI message render error was recorded and may affect reply bubble display or Markdown rendering",
"ai_chat.inspection.app_health.warning.no_workspace_tabs": "No tabs are open in the current workspace, so AI has no active editor context to read directly",
"ai_chat.inspection.app_log.message.no_keyword_match": "No recent log entries matched keyword \"{{keyword}}\".",
"ai_chat.inspection.app_log.message.no_readable_entries": "No readable recent log entries are available.",
"ai_chat.inspection.codebase_hotspots.connection_modal.preferred_next_slice": "TLS configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.safe_seam": "The connection form already has presentation utilities; first extract configuration sections shown per data source.",
"ai_chat.inspection.codebase_hotspots.connection_modal.suggested_slice.jvm_section": "JVM configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.suggested_slice.mongodb_section": "MongoDB configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.suggested_slice.ssh_proxy_section": "SSH/proxy configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.suggested_slice.tls_section": "TLS configuration section",
"ai_chat.inspection.codebase_hotspots.connection_modal.verification.browser_smoke": "Open the add/edit connection dialog in a browser and switch MySQL, Oracle, MongoDB, and Redis forms.",
"ai_chat.inspection.codebase_hotspots.connection_modal.why": "Multi-source connection forms are still concentrated in one component, so adding data sources or secret rules can affect each other.",
"ai_chat.inspection.codebase_hotspots.data_grid.preferred_next_slice": "Result export toolbar",
"ai_chat.inspection.codebase_hotspots.data_grid.safe_seam": "Extract the pure display toolbar and menu item generation first; do not move data-editing transaction state yet.",
"ai_chat.inspection.codebase_hotspots.data_grid.suggested_slice.cell_edit_transaction_hint": "Cell edit transaction hint",
"ai_chat.inspection.codebase_hotspots.data_grid.suggested_slice.column_header_menu": "Column header menu",
"ai_chat.inspection.codebase_hotspots.data_grid.suggested_slice.ddl_view": "DDL view",
"ai_chat.inspection.codebase_hotspots.data_grid.suggested_slice.result_export_toolbar": "Result export toolbar",
"ai_chat.inspection.codebase_hotspots.data_grid.verification.browser_smoke": "Run a query in the browser and verify the result table, export, column menu, and table editing entry.",
"ai_chat.inspection.codebase_hotspots.data_grid.why": "Result display, editing, DDL, export, and column operations are coupled, so a focused fix can affect the query result area.",
"ai_chat.inspection.codebase_hotspots.data_sync.preferred_next_slice": "Sync precheck results",
"ai_chat.inspection.codebase_hotspots.data_sync.safe_seam": "Make precheck results a pure display component first, keeping connection selection and execution actions in the parent component.",
"ai_chat.inspection.codebase_hotspots.data_sync.suggested_slice.connection_selection": "Connection selection area",
"ai_chat.inspection.codebase_hotspots.data_sync.suggested_slice.execution_logs": "Execution log area",
"ai_chat.inspection.codebase_hotspots.data_sync.suggested_slice.precheck_results": "Sync precheck results",
"ai_chat.inspection.codebase_hotspots.data_sync.suggested_slice.table_mapping": "Table mapping area",
"ai_chat.inspection.codebase_hotspots.data_sync.verification.browser_smoke": "Open data sync in a browser and verify connection selection, table mapping, precheck, and execution logs.",
"ai_chat.inspection.codebase_hotspots.data_sync.why": "Data sync connections, table mapping, prechecks, and execution results are concentrated, so database dialect issues can be hidden.",
"ai_chat.inspection.codebase_hotspots.driver_manager.preferred_next_slice": "Driver status list",
"ai_chat.inspection.codebase_hotspots.driver_manager.safe_seam": "The status list is presentational; extract it first while keeping install and download actions in the parent component.",
"ai_chat.inspection.codebase_hotspots.driver_manager.suggested_slice.download_logs": "Download log area",
"ai_chat.inspection.codebase_hotspots.driver_manager.suggested_slice.driver_status_list": "Driver status list",
"ai_chat.inspection.codebase_hotspots.driver_manager.suggested_slice.install_actions": "Install action area",
"ai_chat.inspection.codebase_hotspots.driver_manager.verification.browser_smoke": "Open driver management in a browser and verify status display, install buttons, and the log area.",
"ai_chat.inspection.codebase_hotspots.driver_manager.why": "Driver installation, status display, downloads, and optional proxy logic are substantial, so status cards and action areas are good next extraction targets.",
"ai_chat.inspection.codebase_hotspots.evidence.note": "Based on the current repository frontend file-line hotspot snapshot; before extraction, prefer slices that are readyToExtract and already covered by tests.",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.preferred_next_slice": "Diagnostic output area",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.safe_seam": "The output area mainly depends on the command result array, so it can be extracted as a display component first.",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.suggested_slice.command_input": "Command input area",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.suggested_slice.diagnostic_output": "Diagnostic output area",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.suggested_slice.permission_hint": "Permission hint area",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.verification.browser_smoke": "Open the JVM diagnostics panel in a browser and verify command input, output, and permission hints.",
"ai_chat.inspection.codebase_hotspots.jvm_diagnostic.why": "Diagnostic commands, output blocks, permission hints, and session state can continue to be split to lower JVM diagnostics regression risk.",
"ai_chat.inspection.codebase_hotspots.next_action.browser_smoke": "For visible UI extraction, open the real page in a browser for one smoke verification.",
"ai_chat.inspection.codebase_hotspots.next_action.confirm_safe_seam": "Confirm the safeSeam before every extraction, and do not cross SQL execution, transaction, connection secret, or database dialect boundaries.",
"ai_chat.inspection.codebase_hotspots.next_action.pick_ready_slice": "Prefer a slice with readiness=readyToExtract and existing test coverage for small-step extraction; avoid rewriting an entire large component directly.",
"ai_chat.inspection.codebase_hotspots.next_action.run_targeted_tests": "After extraction, run the corresponding component tests, related utils tests, and npm --prefix frontend run build at minimum.",
"ai_chat.inspection.codebase_hotspots.query_editor.preferred_next_slice": "Editor toolbar",
"ai_chat.inspection.codebase_hotspots.query_editor.safe_seam": "The toolbar JSX can pass state and callbacks through props, avoiding SQL execution, transaction, and result pagination logic.",
"ai_chat.inspection.codebase_hotspots.query_editor.suggested_slice.editor_shortcut_binding": "Editor shortcut binding",
"ai_chat.inspection.codebase_hotspots.query_editor.suggested_slice.execution_log_hint": "Execution log hint",
"ai_chat.inspection.codebase_hotspots.query_editor.suggested_slice.result_toolbar": "Result area toolbar",
"ai_chat.inspection.codebase_hotspots.query_editor.suggested_slice.transaction_status_bar": "Transaction status bar",
"ai_chat.inspection.codebase_hotspots.query_editor.verification.browser_smoke": "Open the SQL editor in a browser and verify connection/database selection, run, save, format, result visibility, and the AI menu.",
"ai_chat.inspection.codebase_hotspots.query_editor.why": "SQL editing, execution, transactions, result layout, and shortcut state are concentrated, so transaction and result-panel regressions are likely.",
"ai_chat.inspection.codebase_hotspots.redis_viewer.preferred_next_slice": "Key search bar",
"ai_chat.inspection.codebase_hotspots.redis_viewer.safe_seam": "Extract the search bar and topology hint first, avoiding early changes to each data-structure editor.",
"ai_chat.inspection.codebase_hotspots.redis_viewer.suggested_slice.add_key_dialog": "Add key dialog",
"ai_chat.inspection.codebase_hotspots.redis_viewer.suggested_slice.key_search_bar": "Key search bar",
"ai_chat.inspection.codebase_hotspots.redis_viewer.suggested_slice.structure_editors": "String/List/Set/ZSet/Hash/Stream editors",
"ai_chat.inspection.codebase_hotspots.redis_viewer.verification.browser_smoke": "Open a Redis connection in a browser and verify key search, refresh, TTL, and the add entry.",
"ai_chat.inspection.codebase_hotspots.redis_viewer.why": "Key browsing, data-structure editing, TTL, encoding display, and the add dialog are concentrated, so Redis Cluster/Sentinel follow-up validation is broad.",
"ai_chat.inspection.codebase_hotspots.sidebar.preferred_next_slice": "External SQL directory dialog",
"ai_chat.inspection.codebase_hotspots.sidebar.safe_seam": "Extract stateless dialog and menu configuration first, then handle action dispatch that depends on connection tree state.",
"ai_chat.inspection.codebase_hotspots.sidebar.suggested_slice.batch_operation_dialogs": "Batch operation dialogs",
"ai_chat.inspection.codebase_hotspots.sidebar.suggested_slice.connection_tree_actions": "Connection tree actions",
"ai_chat.inspection.codebase_hotspots.sidebar.suggested_slice.external_sql_directory_dialog": "External SQL directory dialog",
"ai_chat.inspection.codebase_hotspots.sidebar.suggested_slice.v2_command_palette": "V2 command palette",
"ai_chat.inspection.codebase_hotspots.sidebar.verification.browser_smoke": "Open the sidebar in a browser and verify the connection tree, context menus, and external SQL directory entry.",
"ai_chat.inspection.codebase_hotspots.sidebar.why": "The left tree, command palette, context menus, and connection actions are concentrated in one file, so change entry points are numerous and regression risk is high.",
"ai_chat.inspection.codebase_hotspots.table_designer.preferred_next_slice": "Field editing table",
"ai_chat.inspection.codebase_hotspots.table_designer.safe_seam": "Add field type, length, NULL, and default value snapshot tests first, then extract the field editing table.",
"ai_chat.inspection.codebase_hotspots.table_designer.suggested_slice.dialect_ddl_preview": "Dialect DDL preview",
"ai_chat.inspection.codebase_hotspots.table_designer.suggested_slice.field_editing_table": "Field editing table",
"ai_chat.inspection.codebase_hotspots.table_designer.suggested_slice.foreign_key_panel": "Foreign key configuration panel",
"ai_chat.inspection.codebase_hotspots.table_designer.suggested_slice.index_panel": "Index configuration panel",
"ai_chat.inspection.codebase_hotspots.table_designer.verification.browser_smoke": "Open object design in a browser and verify fields, indexes, foreign keys, and DDL preview.",
"ai_chat.inspection.codebase_hotspots.table_designer.why": "Field editing, indexes, foreign keys, partitions, and DDL generation are concentrated, so database dialect differences can spread easily.",
"ai_chat.inspection.connection_capabilities.cache_missing": "The target connection does not exist in the local cache",
"ai_chat.inspection.connection_capabilities.hint.approximate_table_count": "Table browsing can show approximate row counts to reduce large-table counting overhead.",
"ai_chat.inspection.connection_capabilities.hint.editable_result": "Query results for this data source can enter the edit path when row locating conditions are available.",
"ai_chat.inspection.connection_capabilities.hint.exact_table_count": "Table browsing does not use approximate row counts by default.",
"ai_chat.inspection.connection_capabilities.hint.manual_total_count": "Total result counts should prefer manual or deferred counting instead of relying directly on fast totals.",
"ai_chat.inspection.connection_capabilities.hint.message_publish_supported": "This data source provides a test message publishing entry, suitable for Topic/Queue integration checks.",
"ai_chat.inspection.connection_capabilities.hint.message_publish_unsupported": "This data source does not expose a test message publishing entry.",
"ai_chat.inspection.connection_capabilities.hint.readonly_result": "Query results for this data source are shown as read-only by default and cannot be edited directly.",
"ai_chat.inspection.connection_capabilities.hint.regular_total_count": "Total result counts can prefer the regular counting path.",
"ai_chat.inspection.connection_capabilities.no_connection": "No connection is available for capability analysis",
"ai_chat.inspection.connection_capabilities.summary": "Current connection {{connectionName}} ({{type}}) exposes {{count}} frontend capability signals",
"ai_chat.inspection.connection_failures.category.authentication": "Authentication failed",
"ai_chat.inspection.connection_failures.category.cooldown": "Connection cooldown",
"ai_chat.inspection.connection_failures.category.network": "Network unreachable",
"ai_chat.inspection.connection_failures.category.other": "Other connection anomaly",
"ai_chat.inspection.connection_failures.category.parameter_compatibility": "Connection parameter/compatibility issue",
"ai_chat.inspection.connection_failures.category.ssh": "SSH tunnel failed",
"ai_chat.inspection.connection_failures.category.startup": "Driver/process startup failed",
"ai_chat.inspection.connection_failures.category.timeout": "Connection timeout",
"ai_chat.inspection.connection_failures.category.validation": "Connection validation failed",
"ai_chat.inspection.connection_failures.message.detected": "Recent logs identified {{count}} connection-related anomalies; latest category is {{categoryLabel}}",
"ai_chat.inspection.connection_failures.message.no_keyword_match": "No recent connection failure records matched keyword \"{{keyword}}\"",
"ai_chat.inspection.connection_failures.message.none": "No connection failures, validation failures, or connection cooldown records were identified in recent logs",
"ai_chat.inspection.connection_failures.next_action.authentication": "Verify the username, password, authentication database, tenant, or Service Name, and confirm the server allows this account to log in.",
"ai_chat.inspection.connection_failures.next_action.check_current_connection": "If you need to confirm the connection currently shown in the UI still targets the same endpoint, call inspect_current_connection to check whether it still points to {{address}}.",
"ai_chat.inspection.connection_failures.next_action.cooldown": "Fix the previous real connection error before retrying; repeated refreshes will keep hitting the connection cooldown.",
"ai_chat.inspection.connection_failures.next_action.inspect_config": "First use inspect_current_connection and inspect_saved_connections to verify the current connection configuration, then widen the log window if more evidence is needed.",
"ai_chat.inspection.connection_failures.next_action.network": "Check whether the target address, port, firewall, proxy, and tunnel path are reachable, and confirm the server is actually listening.",
"ai_chat.inspection.connection_failures.next_action.parameter_compatibility": "Check connection parameters, DSN, and protocol compatibility first, especially multiStatements, charset, extra query parameters, and URL encoding.",
"ai_chat.inspection.connection_failures.next_action.ssh": "Check the SSH jump host address, port, account, and tunnel target address; if needed, verify connectivity from the jump host to the database first.",
"ai_chat.inspection.connection_failures.next_action.startup": "Check whether the driver process or external dependency can start normally; if needed, validate the startup command locally or on the target host first.",
"ai_chat.inspection.connection_failures.next_action.validation": "Inspect the server validation failure details and confirm that database type, driver protocol, database name, or Service Name matches the target service.",
"ai_chat.inspection.context_budget.next_action.continue_narrow_probe": "The current context volume is manageable; continue by calling narrower schema, log, or SQL risk probes for the specific question",
"ai_chat.inspection.context_budget.next_action.inspect_message_flow": "Call inspect_ai_message_flow first to confirm whether tool calls are missing tool result messages",
"ai_chat.inspection.context_budget.next_action.narrow_tables": "Keep only tables relevant to this turn; if needed, use inspect_table_bundle to read target tables on demand",
"ai_chat.inspection.context_budget.next_action.narrow_tools": "Temporarily disable unrelated MCP services, or call inspect_ai_tool_catalog by keyword first to narrow the tool route",
"ai_chat.inspection.context_budget.next_action.open_session": "Open or select the target AI session first, then call inspect_ai_context_budget again",
"ai_chat.inspection.context_budget.next_action.reduce_skills": "Keep only Skills relevant to this turn, then restore other Skills after finishing",
"ai_chat.inspection.context_budget.next_action.reduce_tool_results": "Reduce the returned volume from inspect_app_logs / inspect_recent_sql_logs / includeDDL / includeLogLines",
"ai_chat.inspection.context_budget.next_action.summarize_or_new_session": "Start a new session or ask AI to summarize the current conclusion before continuing the next complex task",
"ai_chat.inspection.context_budget.warning.critical_risk": "The current AI input context has reached critical volume and may cause slow replies, truncation, or ignored constraints",
"ai_chat.inspection.context_budget.warning.high_risk": "The current AI input context is large; narrow the context before complex questions",
"ai_chat.inspection.context_budget.warning.large_mcp_catalog": "Many MCP tools or schemas are exposed, which may make the model more likely to choose the wrong tool",
"ai_chat.inspection.context_budget.warning.large_messages": "Recent messages in this session are long and may affect the stability of later replies",
"ai_chat.inspection.context_budget.warning.large_schema_context": "Many table schemas or long DDL are mounted and may crowd out the user question and tool results",
"ai_chat.inspection.context_budget.warning.large_skills": "Many Skills are enabled or prompts are long, which may stack conflicting constraints",
"ai_chat.inspection.context_budget.warning.large_tool_results": "Recent tool results are long and may dilute later answers with logs or large result sets",
"ai_chat.inspection.context_budget.warning.missing_session": "The target AI session was not found, so message volume statistics only cover an empty window",
"ai_chat.inspection.context_budget.warning.unresolved_tool_calls": "The recent message window contains {{count}} unclosed tool calls",
"ai_chat.inspection.current_connection.cache_missing": "The current active connection does not exist in the local cache",
"ai_chat.inspection.current_connection.no_active": "No active connection is currently selected",
"ai_chat.inspection.database_bundle.error.database_overview_failed": "Failed to build database structure overview: {{detail}}",
"ai_chat.inspection.database_bundle.error.db_name_required": "dbName is required",
"ai_chat.inspection.database_bundle.error.table_name_required": "tableName is required",
"ai_chat.inspection.database_bundle.error.table_snapshot_failed": "Failed to build table structure snapshot: {{detail}}",
"ai_chat.inspection.database_bundle.error.unknown": "Unknown error",
"ai_chat.inspection.database_bundle.warning.all_columns_failed": "Failed to fetch column summary: {{detail}}",
"ai_chat.inspection.database_bundle.warning.columns_failed": "Failed to fetch column list: {{detail}}",
"ai_chat.inspection.database_bundle.warning.ddl_failed": "Failed to fetch DDL: {{detail}}",
"ai_chat.inspection.database_bundle.warning.foreign_keys_failed": "Failed to fetch foreign key relationships: {{detail}}",
"ai_chat.inspection.database_bundle.warning.indexes_failed": "Failed to fetch index definitions: {{detail}}",
"ai_chat.inspection.database_bundle.warning.sample_rows_failed": "Failed to fetch sample rows: {{detail}}",
"ai_chat.inspection.database_bundle.warning.tables_failed": "Failed to fetch table list: {{detail}}",
"ai_chat.inspection.database_bundle.warning.tables_failed_with_column_fallback": "Failed to fetch table list, fell back to column summary inference: {{detail}}",
"ai_chat.inspection.database_bundle.warning.triggers_failed": "Failed to fetch triggers: {{detail}}",
"ai_chat.inspection.diagnostics.error.read_ai_upstream_logs_failed": "Failed to read AI upstream request logs: {{detail}}",
"ai_chat.inspection.diagnostics.error.read_app_logs_failed": "Failed to read GoNavi app logs: {{detail}}",
"ai_chat.inspection.diagnostics.error.read_app_logs_unsupported": "The current environment does not support reading GoNavi app logs",
"ai_chat.inspection.diagnostics.error.read_recent_connection_failures_failed": "Failed to read recent connection failure records: {{detail}}",
"ai_chat.inspection.diagnostics.error.unknown": "unknown error",
"ai_chat.inspection.external_sql_file.error.file_path_required": "filePath is required",
"ai_chat.inspection.external_sql_file.error.outside_configured_directory": "The target file is outside configured external SQL directories",
"ai_chat.inspection.external_sql_file.error.read_failed": "Failed to read external SQL file: {{detail}}",
"ai_chat.inspection.external_sql_file.error.unknown": "Unknown error",
"ai_chat.inspection.external_sql_file.error.unsupported_runtime": "The current runtime does not support reading local SQL files yet",
"ai_chat.inspection.guidance.message.configured": "{{promptCount}} custom prompts and {{skillCount}} Skills are enabled",
"ai_chat.inspection.guidance.message.empty": "No custom prompts or Skills are enabled",
"ai_chat.inspection.guidance.scope.database": "Database session",
"ai_chat.inspection.guidance.scope.global": "Global",
"ai_chat.inspection.guidance.scope.jvm": "JVM resource analysis",
"ai_chat.inspection.guidance.scope.jvmDiagnostic": "JVM diagnostics",
"ai_chat.inspection.last_render_error.empty_next_action.inspect_health": "If the entire AI panel is failing, combine this with inspect_ai_setup_health and inspect_app_logs.",
"ai_chat.inspection.last_render_error.empty_next_action.reproduce": "If the user reports a blank AI message, white block, or localized render error, reproduce it and read this snapshot again.",
"ai_chat.inspection.last_render_error.empty_summary": "No AI message render errors have been recorded yet.",
"ai_chat.inspection.last_render_error.next_action.match_message": "Match messageId and contentPreview against the current conversation to identify which bubble triggered the render error.",
"ai_chat.inspection.last_render_error.next_action.narrow_scope": "If more narrowing is needed, compare the latest user input, tool results, and related component code.",
"ai_chat.inspection.last_render_error.recorded_summary": "A recent AI message render error was recorded, including the message, render path, and stack summary needed for diagnosis.",
"ai_chat.inspection.mcp.message.configured": "{{serverCount}} MCP server is configured; {{enabledCount}} enabled",
"ai_chat.inspection.mcp.message.empty": "No MCP servers are configured yet",
"ai_chat.inspection.mcp.message.with_issues": "{{serverCount}} MCP server is configured; {{enabledCount}} enabled; {{issueCount}} configuration checks need attention",
"ai_chat.inspection.mcp.next_action.fix_config_errors": "Fix the MCP server configuration errors first, then test the server again",
"ai_chat.inspection.mcp.next_action.fix_config_warnings": "Open the affected MCP server and split launch command, arguments, and timeout according to the configuration check hints",
"ai_chat.inspection.mcp.warning.config_errors": "{{count}} MCP server has launch configuration errors; testing and tool discovery may fail",
"ai_chat.inspection.mcp.warning.config_warnings": "{{count}} MCP server has launch configuration warnings; confirm them before diagnosing tool discovery failures",
"ai_chat.inspection.mcp_docker.message.empty": "No Docker MCP servers are configured",
"ai_chat.inspection.mcp_docker.message.with_enabled": "There are {{total}} Docker MCP servers; {{enabled}} are enabled",
"ai_chat.inspection.mcp_docker.message.with_incomplete": "There are {{total}} Docker MCP servers; {{count}} have incomplete key arguments",
"ai_chat.inspection.mcp_docker.next_action.add_image": "Add the image name from README after docker run options",
"ai_chat.inspection.mcp_docker.next_action.add_interactive": "Add -i or --interactive to args so MCP stdio does not close immediately",
"ai_chat.inspection.mcp_docker.next_action.add_run": "Add run to args, for example docker run --rm -i <image>",
"ai_chat.inspection.mcp_docker.next_action.create_from_readme": "If README provides docker run -i --rm <image>, create a server from the \"Docker image\" template in MCP settings",
"ai_chat.inspection.mcp_docker.next_action.disabled": "This Docker MCP is disabled; enable it and test tool discovery after confirming the configuration",
"ai_chat.inspection.mcp_docker.next_action.fix_key_args": "Fix key Docker MCP arguments first, then test tool discovery again",
"ai_chat.inspection.mcp_docker.next_action.no_tools": "The configuration structure looks complete but no tools were discovered; click \"Test tool discovery\" to confirm Docker, the image, and in-container dependencies are available",
"ai_chat.inspection.mcp_docker.next_action.open_services": "Open the affected Docker MCP services and confirm arguments and timeout from the configuration hints",
"ai_chat.inspection.mcp_docker.next_action.refresh_tools": "Confirm local Docker is available, the image is pulled, and click \"Test tool discovery\" to refresh the tool list",
"ai_chat.inspection.mcp_docker.next_action.timeout": "Docker may be slow on first startup; use timeoutSeconds 45 or 60",
"ai_chat.inspection.mcp_docker.warning.config_warnings": "{{count}} Docker MCP server still has configuration warnings",
"ai_chat.inspection.mcp_docker.warning.incomplete": "{{count}} Docker MCP server is missing key arguments such as run, -i, or image name",
"ai_chat.inspection.mcp_docker.warning.no_tools": "{{count}} enabled Docker MCP server has not discovered tools yet",
"ai_chat.inspection.mcp_draft.default_name": "MCP draft",
"ai_chat.inspection.mcp_draft.next_action.args_missing_for_launcher": "Complete launcher arguments: npx usually needs -y and a package name, node needs server.js, python needs -m and a module name, uvx needs a package name, and docker needs run, -i, and an image name.",
"ai_chat.inspection.mcp_draft.next_action.can_test_with_warnings": "The current draft can be tested, but handle warnings first to avoid tool discovery timeouts or discovering 0 tools.",
"ai_chat.inspection.mcp_draft.next_action.command_missing": "Paste the full startup command from README first, or at least fill node, npx, uvx, python, or exe as command.",
"ai_chat.inspection.mcp_draft.next_action.command_whole_line": "Put the whole command into the full command field for auto-splitting; keep only the executable in command, and put scripts, packages, and --stdio into args.",
"ai_chat.inspection.mcp_draft.next_action.docker_image": "Add the image name from README to Docker MCP args, for example mcp/server-fetch:latest.",
"ai_chat.inspection.mcp_draft.next_action.docker_interactive": "Add -i or --interactive to Docker MCP args so the stdio connection does not close immediately.",
"ai_chat.inspection.mcp_draft.next_action.docker_run": "For Docker MCP, set command to docker and add run separately in args.",
"ai_chat.inspection.mcp_draft.next_action.env_lines": "Write environment variables as one KEY=VALUE per line; do not put export, set, env, &&, or $env:KEY=VALUE; into args.",
"ai_chat.inspection.mcp_draft.next_action.ready_to_save": "The current draft can be saved and tested for tool discovery; if it discovers 0 tools, check whether the service supports stdio.",
"ai_chat.inspection.mcp_draft.next_action.send_full_command": "If you are still unsure how to split it, pass the original full command to fullCommand and let GoNavi calculate it.",
"ai_chat.inspection.mcp_draft.next_action.timeout": "Set timeout to 20 seconds; slow-starting services can use 45 or 60 seconds.",
"ai_chat.inspection.mcp_draft.parse.no_full_command": "No fullCommand was provided; validated the split-field draft instead.",
"ai_chat.inspection.mcp_draft.redacted_parse_failed": "[Parse failed, original command hidden]",
"ai_chat.inspection.mcp_remote.message.no_public_url": "The remote Agent needs to access the Windows GoNavi MCP HTTP endpoint through a controlled tunnel or reverse proxy",
"ai_chat.inspection.mcp_remote.message.with_public_url": "The remote Agent should access GoNavi MCP through {{publicUrl}} and authenticate with Bearer Token",
"ai_chat.inspection.mcp_remote.next_action.configure_agent": "Configure Streamable HTTP MCP URL and Authorization Bearer Token in OpenClaw/Hermans.",
"ai_chat.inspection.mcp_remote.next_action.expose_mcp_only": "Expose only /mcp to the target cloud Agent through a tunnel, reverse proxy, or private network.",
"ai_chat.inspection.mcp_remote.next_action.inspect_connections": "Call get_connections first to obtain connectionId, then read schemas; do not copy database passwords to the cloud Agent.",
"ai_chat.inspection.mcp_remote.next_action.start_local_http": "Start GoNavi MCP HTTP mode on Windows and confirm /healthz is reachable.",
"ai_chat.inspection.mcp_remote.security.recommended_bind_address": "127.0.0.1 unless a controlled gateway or private network is in front",
"ai_chat.inspection.mcp_remote.strategy.cloudflare_tunnel.detail": "Use this for Windows machines without a fixed public entry point, with Cloudflare Access layered for identity checks.",
"ai_chat.inspection.mcp_remote.strategy.cloudflare_tunnel.risk": "Access / Zero Trust rules must be enabled; do not rely only on a random URL.",
"ai_chat.inspection.mcp_remote.strategy.cloudflare_tunnel.title": "Cloudflare Tunnel",
"ai_chat.inspection.mcp_remote.strategy.custom.detail": "Use this when an enterprise gateway, bastion host, or dedicated MCP gateway already exists.",
"ai_chat.inspection.mcp_remote.strategy.custom.risk": "Define TLS, authentication, audit, and source restrictions clearly to avoid exposing local database capabilities to unknown Agents.",
"ai_chat.inspection.mcp_remote.strategy.custom.title": "Custom bridge",
"ai_chat.inspection.mcp_remote.strategy.reverse_proxy.detail": "Use this when Windows GoNavi and the cloud Agent already share a trusted intranet or gateway.",
"ai_chat.inspection.mcp_remote.strategy.reverse_proxy.risk": "Keep source IP, TLS, and Bearer Token restrictions at the gateway; do not expose it directly to the public internet.",
"ai_chat.inspection.mcp_remote.strategy.reverse_proxy.title": "Internal reverse proxy",
"ai_chat.inspection.mcp_remote.strategy.ssh_reverse_tunnel.detail": "Use this to temporarily map Windows 127.0.0.1:8765 to cloud Linux. It is simple, but the SSH account and port must be controlled.",
"ai_chat.inspection.mcp_remote.strategy.ssh_reverse_tunnel.risk": "The cloud Agent becomes unavailable if the tunnel disconnects, so this fits PoC or controlled operations environments.",
"ai_chat.inspection.mcp_remote.strategy.ssh_reverse_tunnel.title": "SSH reverse tunnel",
"ai_chat.inspection.mcp_remote.strategy.tailscale.detail": "Use this when Windows GoNavi and the cloud Agent can join the same private network and prefer an intranet address.",
"ai_chat.inspection.mcp_remote.strategy.tailscale.risk": "Control ACLs so only the target Agent can reach the GoNavi MCP port.",
"ai_chat.inspection.mcp_remote.strategy.tailscale.title": "Tailscale / WireGuard",
"ai_chat.inspection.mcp_remote.warning.missing_public_url": "No MCP URL reachable by the cloud Agent was provided; a remote Agent cannot directly access Windows local 127.0.0.1.",
"ai_chat.inspection.mcp_remote.warning.missing_token": "Bearer Token readiness is not confirmed; HTTP MCP must use a random token and must not be exposed without authentication.",
"ai_chat.inspection.mcp_remote.warning.non_https_public_url": "The remote MCP URL is not HTTPS; if it is not a private network address, add TLS or place it behind a controlled tunnel.",
"ai_chat.inspection.mcp_runtime.error.read_logs_failed": "Failed to read MCP runtime failure logs: {{detail}}",
"ai_chat.inspection.mcp_runtime.error.read_logs_unsupported": "The current environment does not support reading GoNavi app logs",
"ai_chat.inspection.mcp_runtime.message.failure_events": "{{count}} MCP runtime failure signal was found in recent logs",
"ai_chat.inspection.mcp_runtime.message.no_failure_events": "No MCP startup, tool discovery, or tool call failure signal was found in recent logs.",
"ai_chat.inspection.mcp_runtime.next_action.argument_error": "Call inspect_mcp_tool_schema first to read the real inputSchema, then fix the tool arguments JSON.",
"ai_chat.inspection.mcp_runtime.next_action.auth": "Check whether the Token/API Key in environment variables is configured, unexpired, and has enough scope.",
"ai_chat.inspection.mcp_runtime.next_action.command_not_found": "Check that command contains only the executable name, and confirm it is on PATH or uses an absolute path.",
"ai_chat.inspection.mcp_runtime.next_action.enabled_without_tools": "Some enabled MCP servers have no discovered tools; click \"Test tool discovery\" first and confirm the launch command runs independently.",
"ai_chat.inspection.mcp_runtime.next_action.expand_logs": "No MCP failure signal was found in recent logs; if you just reproduced the issue, increase lineLimit or filter precisely with serverName.",
"ai_chat.inspection.mcp_runtime.next_action.fix_discovery_first": "When the tool list is empty, fix startup/discovery failure before diagnosing individual tool arguments.",
"ai_chat.inspection.mcp_runtime.next_action.network": "Check whether the remote endpoint, proxy, VPN, or local port required by MCP is reachable.",
"ai_chat.inspection.mcp_runtime.next_action.permission": "Check executable permissions, antivirus/system blocking, and working directory access.",
"ai_chat.inspection.mcp_runtime.next_action.process_exit": "Run the launch command in a terminal separately and inspect why the process exits immediately after startup.",
"ai_chat.inspection.mcp_runtime.next_action.stdio_closed": "Confirm the --stdio/stdin argument required by README is set; for Docker, confirm args includes -i.",
"ai_chat.inspection.mcp_runtime.next_action.timeout": "Raise timeoutSeconds to 45 or 60, and confirm the service keeps the stdio connection open after startup.",
"ai_chat.inspection.mcp_runtime.next_action.transport": "New MCP servers in GoNavi currently support stdio only; for HTTP MCP, use the GoNavi HTTP service or the matching remote access guide.",
"ai_chat.inspection.mcp_runtime.next_action.unknown": "Inspect the configuration with inspect_mcp_setup, then call inspect_app_logs with a larger log window to confirm the raw error.",
"ai_chat.inspection.mcp_runtime.warning.enabled_without_tools": "{{count}} enabled MCP server currently has no discovered tools.",
"ai_chat.inspection.mcp_runtime.warning.failure_events": "{{count}} MCP runtime failure signal was found in recent logs.",
"ai_chat.inspection.mcp_tool_schema.message.empty": "No MCP tool schema is available yet",
"ai_chat.inspection.mcp_tool_schema.message.no_matches": "No matching MCP tool was found",
"ai_chat.inspection.mcp_tool_schema.message.with_matches": "Found {{matched}} MCP tools and returned {{returned}} parameter schema summaries",
"ai_chat.inspection.mcp_tool_schema.next_action.inspect_setup": "Call inspect_mcp_setup first to check whether MCP services are enabled and tools have been discovered.",
"ai_chat.inspection.mcp_tool_schema.next_action.lookup_alias": "Call inspect_mcp_setup first to check the MCP tool aliases actually discovered, then query by exact alias.",
"ai_chat.inspection.mcp_tool_schema.next_action.read_readme": "For tools without schema, go back to the MCP service README or use tool errors to confirm parameters.",
"ai_chat.inspection.mcp_tool_schema.usage.enum_values": "{{path}} must be one of: {{values}}",
"ai_chat.inspection.mcp_tool_schema.usage.nested_json": "Nested object and array parameters must follow the JSON structure; do not pass the whole object as a string.",
"ai_chat.inspection.mcp_tool_schema.usage.no_input_schema": "This MCP tool does not declare inputSchema; check the service README first or probe with an empty object.",
"ai_chat.inspection.mcp_tool_schema.usage.required_params": "Before calling {{alias}}, provide: {{parameters}}",
"ai_chat.inspection.mcp_tool_schema.usage.schema_fields_only": "Only pass fields declared in the schema; if a field meaning is unclear, ask the user instead of guessing.",
"ai_chat.inspection.mcp_tool_schema.warning.missing_schema": "Some MCP tools do not declare inputSchema, so parameter documentation may be incomplete.",
"ai_chat.inspection.mcp_tool_schema.warning.no_matches": "No matching MCP tool was found.",
"ai_chat.inspection.mcp_tool_schema.warning.no_tools": "No MCP tools were discovered; MCP services may not be configured, or service testing/discovery may have failed.",
"ai_chat.inspection.message_flow.next_action.check_empty_assistant": "Check whether exception or cancellation paths left empty assistant placeholder messages.",
"ai_chat.inspection.message_flow.next_action.check_stream_append": "Check whether streaming append logic reuses the same assistantMsgId instead of creating a new assistant message for the same reply.",
"ai_chat.inspection.message_flow.next_action.check_tool_results": "Check whether useAIChatLocalTools writes a tool message for every tool_call_id.",
"ai_chat.inspection.message_flow.next_action.inspect_render_or_logs": "No obvious message-flow structure issue was found; continue with inspect_ai_last_render_error or inspect_app_logs for rendering/runtime diagnostics.",
"ai_chat.inspection.message_flow.warning.consecutive_assistant": "{{count}} consecutive assistant message pairs were found; one reply may have been split into multiple bubbles.",
"ai_chat.inspection.message_flow.warning.empty_assistant": "{{count}} empty assistant messages were found.",
"ai_chat.inspection.message_flow.warning.loading_message": "The session still contains a loading message; streaming may still be active or a previous interruption was not cleaned up.",
"ai_chat.inspection.message_flow.warning.unresolved_tool_calls": "{{count}} tool calls have no matching tool result messages.",
"ai_chat.inspection.provider.message.active_needs_attention": "Using {{provider}}, but {{issueCount}} items still need checking",
"ai_chat.inspection.provider.message.active_ready": "{{count}} providers are configured; using {{provider}}",
"ai_chat.inspection.provider.message.empty": "No AI providers are configured",
"ai_chat.inspection.provider.message.unselected": "{{count}} providers are configured, but no active provider is selected",
"ai_chat.inspection.redis_topology.db_note.cluster_logical_namespace": "Redis Cluster physically supports only db0; GoNavi uses the __gonavi_db_N__: prefix to emulate a multi-DB view.",
"ai_chat.inspection.redis_topology.db_note.sentinel_selected_db": "After Sentinel discovers the master, GoNavi connects to the selected DB and keeps the Sentinel settings when reconnecting.",
"ai_chat.inspection.redis_topology.db_note.single_selected_db": "Standalone mode uses Redis SELECT DB directly.",
"ai_chat.inspection.redis_topology.label.cluster": "Redis Cluster",
"ai_chat.inspection.redis_topology.label.sentinel": "Redis Sentinel",
"ai_chat.inspection.redis_topology.label.single": "Standalone Redis",
"ai_chat.inspection.redis_topology.next_action.align_single_topology": "Explicitly switch to Cluster mode, or remove extra nodes and keep one Standalone address to avoid mismatch between configured and backend topology.",
"ai_chat.inspection.redis_topology.next_action.check_sentinel_port": "Change the primary Sentinel address port to 26379 unless your Sentinel explicitly listens on another port.",
"ai_chat.inspection.redis_topology.next_action.disable_ssh": "Disable the SSH tunnel and use direct access, proxy/VPN, or GoNavi MCP HTTP so the remote Agent can access Redis through local GoNavi.",
"ai_chat.inspection.redis_topology.next_action.fill_host": "Fill in the host first; use Sentinel addresses for Sentinel mode and Redis Cluster seed nodes for Cluster mode.",
"ai_chat.inspection.redis_topology.next_action.fill_sentinel_master": "Fill in the Sentinel master name, for example mymaster.",
"ai_chat.inspection.redis_topology.next_action.review_cluster_logical_db": "Confirm whether the workload really needs a Redis Cluster multi-DB view; if this is only key grouping, prefer an application namespace.",
"ai_chat.inspection.redis_topology.next_action.test_connection": "The configuration looks usable for {{topologyLabel}}; next, test the connection and inspect the Redis DB/key tree.",
"ai_chat.inspection.redis_topology.recommendation.check_tls": "TLS is enabled; if connection fails, first check sslMode, CA/certificate paths, and server SNI.",
"ai_chat.inspection.redis_topology.recommendation.cluster_multiple_seeds": "Prefer at least two seed nodes, and confirm these nodes belong to the same Redis Cluster.",
"ai_chat.inspection.redis_topology.recommendation.cluster_namespace": "If a multi-DB view is needed, prefer explicit namespaces in business keys to avoid misunderstanding the physical db0 limit of Cluster.",
"ai_chat.inspection.redis_topology.recommendation.network_for_cluster_sentinel": "For cross-network Redis Cluster/Sentinel access, prefer a network proxy, VPN, or GoNavi MCP HTTP instead of a single-port SSH tunnel.",
"ai_chat.inspection.redis_topology.recommendation.sentinel_addresses": "Confirm that host and extra nodes are Sentinel addresses, not Redis master addresses.",
"ai_chat.inspection.redis_topology.recommendation.separate_auth": "Fill Redis data-node credentials and Sentinel credentials separately; do not mix them.",
"ai_chat.inspection.redis_topology.recommendation.single_one_address": "Standalone mode should contain one Redis address; if there are multiple nodes, use Cluster or Sentinel mode instead.",
"ai_chat.inspection.redis_topology.warning.cluster_logical_db": "Redis Cluster physically supports only db0; GoNavi uses the __gonavi_db_N__: prefix to emulate logical DB isolation",
"ai_chat.inspection.redis_topology.warning.cluster_sentinel_fields_ignored": "Sentinel master and Sentinel user fields do not take effect in Cluster mode",
"ai_chat.inspection.redis_topology.warning.cluster_single_seed": "Only one Cluster seed node is configured; add multiple master/replica nodes to improve discovery reliability",
"ai_chat.inspection.redis_topology.warning.missing_host": "Host is empty; fill in a Redis node or Sentinel address before connecting",
"ai_chat.inspection.redis_topology.warning.missing_sentinel_master": "Sentinel master name is empty; go-redis FailoverClient cannot discover the primary node",
"ai_chat.inspection.redis_topology.warning.sentinel_default_redis_port": "The primary Sentinel address uses port 6379; confirm this is a Sentinel port, commonly 26379 by default",
"ai_chat.inspection.redis_topology.warning.single_multiple_nodes": "Standalone mode has multiple node addresses; the backend will use the multi-node Cluster path, so explicitly switch to Cluster mode",
"ai_chat.inspection.redis_topology.warning.single_sentinel_fields_ignored": "Sentinel fields do not take effect in Standalone mode; switch to Sentinel mode if Sentinel discovery is required",
"ai_chat.inspection.redis_topology.warning.single_sentinel_node": "Only one Sentinel node is configured; provide at least 2-3 Sentinel addresses to avoid a single point of failure",
"ai_chat.inspection.redis_topology.warning.ssh_unsupported": "{{topologyLabel}} is not supported with SSH tunnels by the current backend; use direct access, a proxy, or remote MCP HTTP instead",
"ai_chat.inspection.runtime.context.schema_only": "Schema only",
"ai_chat.inspection.runtime.context.with_results": "Schema + results",
"ai_chat.inspection.runtime.context.with_samples": "Schema + samples",
"ai_chat.inspection.runtime.message.active": "AI is using {{provider}} with {{toolCount}} tools available",
"ai_chat.inspection.runtime.message.no_provider": "No AI provider is currently active",
"ai_chat.inspection.runtime.safety.full": "Full access",
"ai_chat.inspection.runtime.safety.readonly": "Read-only",
"ai_chat.inspection.runtime.safety.readwrite": "Read/write",
"ai_chat.inspection.safety.message.active": "AI safety level is {{safety}}; active connection is {{connection}}",
"ai_chat.inspection.safety.message.no_connection": "AI safety level is {{safety}}; no active connection is selected",
"ai_chat.inspection.safety.recommendation.confirm_jvm_policy": "The current JVM connection should be treated as read-only; confirm whether its policy should change before mutating diagnostics.",
"ai_chat.inspection.safety.recommendation.enable_full_for_ddl": "Switch to full access mode before executing CREATE/ALTER/DROP/TRUNCATE schema changes.",
"ai_chat.inspection.safety.recommendation.enable_jvm_mutating": "JVM diagnostics currently disallow mutating commands; adjust diagnostic permissions before high-risk commands.",
"ai_chat.inspection.safety.recommendation.enable_readwrite_for_dml": "Switch AI safety level to read/write mode before executing INSERT/UPDATE/DELETE.",
"ai_chat.inspection.safety.recommendation.full_required_for_schema": "DML is already allowed; schema changes still require full access mode.",
"ai_chat.inspection.safety.recommendation.open_editable_grid": "If the goal is editing a result grid, reopen an editable table or query result instead of the current read-only tab.",
"ai_chat.inspection.safety.restriction.active_result_readonly": "The current active tab result set is read-only and cannot be treated as a directly writable data grid.",
"ai_chat.inspection.safety.restriction.jvm_mutating_disabled": "Current JVM diagnostics explicitly disallow mutating commands, even if the AI safety level allows writes.",
"ai_chat.inspection.safety.restriction.jvm_readonly": "The current JVM connection is read-only, so diagnostic plans should default to observation and troubleshooting.",
"ai_chat.inspection.safety.restriction.mcp_allow_mutating": "When executing non-query statements through GoNavi MCP execute_sql, allowMutating=true must also be passed explicitly.",
"ai_chat.inspection.safety.restriction.non_query_confirmation": "Any allowed non-query statement still requires human confirmation.",
"ai_chat.inspection.safety.restriction.readonly_blocks_mutating": "At the current safety level, all DML/DDL is blocked directly.",
"ai_chat.inspection.safety.rule.full": "Full access mode allows all SQL operations; high-risk or unrecognized statements still require confirmation.",
"ai_chat.inspection.safety.rule.readonly": "Read-only mode only allows query statements.",
"ai_chat.inspection.safety.rule.readwrite": "Read/write mode allows queries and DML; DDL is still blocked.",
"ai_chat.inspection.setup.blocker.missing_base_url": "The active provider is missing a base URL",
"ai_chat.inspection.setup.blocker.missing_model": "The active provider has no selected model",
"ai_chat.inspection.setup.blocker.missing_secret": "The active provider is missing an API Key / Secret",
"ai_chat.inspection.setup.blocker.no_active_provider": "No active AI provider is selected",
"ai_chat.inspection.setup.message.blocked": "AI setup has {{count}} blockers; fix the active provider and chat prerequisites first",
"ai_chat.inspection.setup.message.needs_attention": "AI setup is usable overall, but {{count}} recommendations can still be optimized",
"ai_chat.inspection.setup.message.ready": "AI setup health passed; provider, chat prerequisites, and MCP runtime path are available",
"ai_chat.inspection.setup.next_action.add_guidance": "To pin response style or workflow, add custom prompts or enable Skills",
"ai_chat.inspection.setup.next_action.add_mcp_server": "To extend AI tool capabilities, add and test at least one MCP server",
"ai_chat.inspection.setup.next_action.attach_schema_context": "For more accurate SQL or schema suggestions, attach the target table schema to AI context first",
"ai_chat.inspection.setup.next_action.connect_external_client": "To let external Agents use GoNavi MCP, connect local clients such as Claude Code/Codex or configure a remote MCP bridge for cloud Agents",
"ai_chat.inspection.setup.next_action.fill_base_url": "Fill in the active provider baseUrl",
"ai_chat.inspection.setup.next_action.fill_secret": "Fill in the active provider secret",
"ai_chat.inspection.setup.next_action.select_model": "Select an available model for the active provider",
"ai_chat.inspection.setup.next_action.select_provider": "Add and select an active provider in AI settings first",
"ai_chat.inspection.setup.next_action.test_mcp_servers": "Test each enabled MCP server and confirm its command, arguments, and environment variables can discover tools correctly",
"ai_chat.inspection.setup.next_action.wait_models": "Wait for the model list to finish loading, then confirm the active model again",
"ai_chat.inspection.setup.warning.external_client_not_connected": "Claude Code / Codex is not connected to the current GoNavi MCP as a local client yet; OpenClaw/Hermans need a remote bridge",
"ai_chat.inspection.setup.warning.loading_models": "The model list is still loading, so model selection is not complete yet",
"ai_chat.inspection.setup.warning.no_guidance": "No custom prompts or Skills are configured",
"ai_chat.inspection.setup.warning.no_mcp_servers": "No MCP servers are configured yet",
"ai_chat.inspection.setup.warning.no_mcp_tools": "MCP servers are enabled, but no available MCP tools have been discovered yet",
"ai_chat.inspection.setup.warning.no_schema_context": "Chat is ready, but no table schema context is attached yet",
"ai_chat.inspection.snapshot.error.default": "Failed to read local inspection snapshot: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_active_tab": "Failed to read current active tab: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_context": "Failed to read current AI context: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_context_budget": "Failed to read AI context budget diagnostics: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_last_render_error": "Failed to read the latest AI render error: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_message_flow": "Failed to read AI message flow diagnostics: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_ai_sessions": "Failed to read local AI session list: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_app_health": "Failed to read AI app health overview: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_codebase_hotspots": "Failed to read code hotspot diagnostics: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_connection_capabilities": "Failed to read current connection capability matrix: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_current_connection": "Failed to read current connection: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_external_sql_directories": "Failed to read external SQL directories: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_external_sql_file": "Failed to read external SQL file: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_mcp_runtime_failures": "Failed to read MCP runtime failure diagnostics: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_recent_sql_activity": "Failed to summarize recent SQL activity: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_recent_sql_logs": "Failed to fetch recent SQL logs: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_redis_topology": "Failed to read Redis topology configuration: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_saved_connections": "Failed to read saved connection list: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_saved_queries": "Failed to read saved queries: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_shortcuts": "Failed to read shortcut configuration: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_sql_editor_transaction": "Failed to read SQL editor transaction state: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_sql_snippets": "Failed to read SQL snippets: {{detail}}",
"ai_chat.inspection.snapshot.error.inspect_workspace_tabs": "Failed to read current workspace tabs: {{detail}}",
"ai_chat.inspection.sql_editor_transaction.commit_policy.semantics": "SQL editor runs INSERT/UPDATE/DELETE/MERGE/REPLACE DML inside a managed transaction. Manual or auto mode only controls when COMMIT happens after successful execution, not whether a transaction is opened.",
"ai_chat.inspection.sql_editor_transaction.next_action.explain_auto_commit": "Explain that the current DML opens a managed transaction first and auto-commits about {{seconds}} seconds after successful execution.",
"ai_chat.inspection.sql_editor_transaction.next_action.explain_manual_commit": "Explain that the current DML opens a managed transaction first and requires a manual Commit or Rollback after successful execution.",
"ai_chat.inspection.sql_editor_transaction.next_action.inspect_recent_activity": "Review recent write or transaction execution results in recentRelevantLogs, and call inspect_recent_sql_activity for deeper inspection if needed.",
"ai_chat.inspection.sql_editor_transaction.next_action.resolve_active_pending": "Ask the user to click \"Commit\" or \"Rollback\" in the result transaction bar, or wait for the auto-commit countdown to finish.",
"ai_chat.inspection.sql_editor_transaction.next_action.switch_to_pending_tab": "Before continuing with DML, switch back to the matching SQL tab and resolve the pending transaction.",
"ai_chat.inspection.sql_editor_transaction.next_action.switch_to_sql_tab": "Switch to a query tab with a SQL draft first, or ask the user to paste the SQL they want to run.",
"ai_chat.inspection.sql_editor_transaction.no_active_tab": "No active tab is currently selected",
"ai_chat.inspection.sql_editor_transaction.not_sql_tab": "The current active tab is not a SQL editor tab",
"ai_chat.inspection.sql_editor_transaction.semantics.explicit_transaction": "Explicit transaction control statements were detected, so GoNavi will not wrap another SQL editor managed transaction around them.",
"ai_chat.inspection.sql_editor_transaction.semantics.managed_dml": "When the SQL editor runs INSERT/UPDATE/DELETE/MERGE/REPLACE DML, it first enters a managed transaction. The commit setting only decides when COMMIT happens after successful execution.",
"ai_chat.inspection.sql_editor_transaction.semantics.no_managed_transaction": "The current SQL does not trigger a SQL editor managed transaction. Read-only queries still use the normal query path.",
"ai_chat.inspection.sql_editor_transaction.warning.active_pending_transaction": "The active SQL tab already has a pending transaction. Commit or roll it back before running another DML statement.",
"ai_chat.inspection.sql_editor_transaction.warning.auto_commit_managed_dml": "Auto commit is enabled, but DML still enters a managed transaction and only runs COMMIT after the delay expires.",
"ai_chat.inspection.sql_editor_transaction.warning.explicit_transaction_control": "The current SQL already contains explicit transaction control, so the SQL editor will not take over commit or rollback.",
"ai_chat.inspection.sql_editor_transaction.warning.pending_transactions": "There are {{count}} SQL editor managed transactions pending commit or rollback",
"ai_chat.inspection.sql_log.unspecified_database": "(Unspecified database)",
"ai_chat.inspection.sql_risk.error.inspect_failed": "Failed to inspect SQL risk: {{detail}}",
"ai_chat.inspection.sql_risk.message.no_active_query_sql": "The current active tab is not a SQL query tab, or the editor has no SQL content.",
"ai_chat.inspection.sql_risk.message.no_sql": "No SQL was provided, and there is no readable active SQL query tab.",
"ai_chat.inspection.sql_risk.next_action.confirm_write_scope": "For write or DDL statements, confirm WHERE clauses, backups, target database, and impact scope first.",
"ai_chat.inspection.sql_risk.next_action.explain_and_confirm": "Explain the risk points to the user first, then ask the user to confirm whether to continue.",
"ai_chat.inspection.sql_risk.next_action.provide_sql": "Pass the sql argument first, or switch to a query tab that contains a SQL draft.",
"ai_chat.inspection.sql_risk.next_action.read_only_check_target": "Read-only queries are lower risk, but still confirm the target connection and database name first.",
"ai_chat.inspection.sql_risk.warning.data_change": "This statement modifies data. Confirm the target database, conditions, and impact scope before execution.",
"ai_chat.inspection.sql_risk.warning.ddl_change": "This statement modifies database structures or objects. Back up first and confirm the rollback plan.",
"ai_chat.inspection.sql_risk.warning.delete_missing_where": "DELETE is missing a WHERE clause and may delete the entire table.",
"ai_chat.inspection.sql_risk.warning.drop_object": "DROP deletes database objects. Confirm the object and backup before execution.",
"ai_chat.inspection.sql_risk.warning.multi_statement": "{{count}} SQL statements were detected. Confirm the impact scope of each statement before batch execution.",
"ai_chat.inspection.sql_risk.warning.permission_change": "GRANT / REVOKE changes permission boundaries. Confirm the grantee and scope.",
"ai_chat.inspection.sql_risk.warning.routine_side_effect": "This statement calls a routine or procedure and may have implicit writes or side effects.",
"ai_chat.inspection.sql_risk.warning.safety_blocked": "The current AI safety policy does not allow {{operationType}} SQL.",
"ai_chat.inspection.sql_risk.warning.safety_blocked_unknown": "The current AI safety policy does not allow this SQL operation type.",
"ai_chat.inspection.sql_risk.warning.truncate": "TRUNCATE quickly clears table data and usually cannot be rolled back row by row.",
"ai_chat.inspection.sql_risk.warning.unrecognized_operation": "No valid SQL operation keyword was recognized.",
"ai_chat.inspection.sql_risk.warning.update_missing_where": "UPDATE is missing a WHERE clause and may update the entire table.",
"ai_chat.inspection.support_bundle.message.ready": "Generated a GoNavi AI support bundle snapshot for diagnosing AI, MCP, logs, connections, and context size issues",
"ai_chat.inspection.support_bundle.privacy.note": "By default, only summaries and structured counts are returned; log lines or message previews are included only when includeLogLines/includeMessageContent is explicitly enabled.",
"ai_chat.inspection.table_schema.error.ddl_and_columns_failed": "Failed to fetch table DDL: {{ddlDetail}}; fallback column metadata also failed: {{columnDetail}}",
"ai_chat.inspection.table_schema.error.ddl_failed": "Failed to fetch table DDL: {{detail}}",
"ai_chat.inspection.table_schema.error.unknown": "Unknown error",
"ai_chat.inspection.table_schema.value.none": "none",
"ai_chat.inspection.table_schema.warning.available_fields": "Available fields: {{fields}}",
"ai_chat.inspection.table_schema.warning.columns_contract": "⚠️ The following is the real field list for table {{tableName}}. When generating SQL, use only these field values as column names exactly as shown; do not modify, abbreviate, or invent column names.",
"ai_chat.inspection.table_schema.warning.ddl_error": "DDL error: {{detail}}",
"ai_chat.inspection.table_schema.warning.ddl_fallback": "Failed to fetch DDL for table {{tableName}}; fell back to a column metadata summary.",
"ai_chat.inspection.table_schema.warning.detail": "Details: {{detail}}",
"ai_chat.inspection.table_schema.warning.fallback_limitation": "This result does not include complete index, constraint, trigger, or other DDL information; continue analysis from the column list and do not stop solely because DDL permissions failed.",
"ai_chat.inspection.tool_catalog.message.by_keyword": "Returned tool catalog suggestions for keyword {{keyword}}",
"ai_chat.inspection.tool_catalog.message.by_tool_name": "Returned catalog information for tool {{toolName}}",
"ai_chat.inspection.tool_catalog.message.summary": "Returned the GoNavi AI tool catalog summary",
"ai_chat.inspection.tool_catalog.next_action.broaden_keyword": "Use broader keywords, or call inspect_ai_runtime first to view the complete current tool list",
"ai_chat.inspection.tool_catalog.next_action.filter_by_keyword": "Filter by user-question keywords first, such as mcp, connection failure, transaction, shortcut, schema, or logs",
"ai_chat.inspection.tool_catalog.next_action.inspect_mcp_setup": "Call inspect_mcp_setup to inspect MCP services and external client access status",
"ai_chat.inspection.tool_catalog.next_action.use_parameter_descriptions": "Before calling tools with parameters, build arguments from parameters.description first; confirm with the user when context is missing",
"ai_chat.inspection.tool_catalog.warning.no_matches": "No matching tools or recommended flows were found",
"ai_chat.inspection.tool_catalog.warning.no_mcp_tools": "No external MCP tools were discovered; if the user needs external capabilities, check MCP service configuration and tool discovery status first",
"ai_chat.inspection.tool_info.inspect_active_tab.desc": "Inspect the current active tab context",
"ai_chat.inspection.tool_info.inspect_active_tab.detail": "Returns the current active tab type, connection, database, table name, and draft content in the current SQL or command tab, truncated when long. Use it when users mention the current SQL, ask to optimize the editor statement, or refer to the current tab.",
"ai_chat.inspection.tool_info.inspect_active_tab.param.includeContent": "Optional. Whether to include SQL or command draft content from the tab. Default true.",
"ai_chat.inspection.tool_info.inspect_active_tab.params": "includeContent?(default true)",
"ai_chat.inspection.tool_info.inspect_active_tab.tool_description": "Get the current active tab context snapshot, including tab type, connection, database, table name, and draft content from the current SQL or command tab.",
"ai_chat.inspection.tool_info.inspect_ai_chat_readiness.desc": "Inspect whether current AI chat can send",
"ai_chat.inspection.tool_info.inspect_ai_chat_readiness.detail": "Returns whether the current chat input has all prerequisites to send, including active provider, missing key or endpoint on the current provider, selected model, current connection context, attached table context, and next actions. Use it when users ask why sending is disabled or what the chat input is missing.",
"ai_chat.inspection.tool_info.inspect_ai_chat_readiness.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_chat_readiness.tool_description": "Read the send-prerequisite state of the current AI chat input, including active provider, key and endpoint completeness, selected model, current connection context, attached table schema count, and suggested next actions.",
"ai_chat.inspection.tool_info.inspect_ai_context.desc": "Inspect currently attached AI table-schema context",
"ai_chat.inspection.tool_info.inspect_ai_context.detail": "Returns the tables currently attached to the AI conversation context, their connection and database, and optional DDL previews. Use it when users ask which table structures are attached or what the current AI context contains.",
"ai_chat.inspection.tool_info.inspect_ai_context.param.ddlLimit": "Optional. DDL truncation length. Default 4000, maximum 12000.",
"ai_chat.inspection.tool_info.inspect_ai_context.param.includeDDL": "Optional. Whether to include each table's DDL content. Default false.",
"ai_chat.inspection.tool_info.inspect_ai_context.params": "includeDDL?(default false), ddlLimit?(default 4000)",
"ai_chat.inspection.tool_info.inspect_ai_context.tool_description": "Read the table-schema snapshot currently attached to the AI conversation context, including connection, database, table name, and optional DDL content.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.desc": "Diagnose AI context size and stability risk",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.detail": "Estimates recent messages, tool results, attached table DDL, MCP tool schemas, user prompts, and Skills in the current or specified AI session, then returns low/medium/high/critical risk, main expansion sources, and narrowing suggestions. Use it when AI slows down, answers erratically, context is too large, tool results are long, or too many table schemas are attached.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.param.includeDetails": "Optional. Whether to return largest message, largest DDL table, and largest MCP schema details. Default true.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.param.messageLimit": "Optional. Maximum number of recent messages to count. Default 40, maximum 120.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.param.sessionId": "Optional. AI session ID to diagnose. If omitted, the current active session is used.",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.params": "sessionId?(default current session), messageLimit?(default 40), includeDetails?(default true)",
"ai_chat.inspection.tool_info.inspect_ai_context_budget.tool_description": "Read an AI context-size and stability-risk snapshot, including recent message window, tool result length, attached table DDL, MCP tool schemas, user prompts, and enabled Skills, then return risk level, warnings, and narrowing suggestions.",
"ai_chat.inspection.tool_info.inspect_ai_guidance.desc": "Inspect current AI prompts and Skills configuration",
"ai_chat.inspection.tool_info.inspect_ai_guidance.detail": "Returns current user-defined global, database, and JVM prompts, plus enabled Skills, scopes, dependency tools, and skill prompt content. Use it when users ask which prompts are currently attached, why AI answers this way, or which Skills are active.",
"ai_chat.inspection.tool_info.inspect_ai_guidance.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_guidance.tool_description": "Read the current AI prompt and skill configuration snapshot, including user-defined prompts, enabled Skills, scopes, dependency tools, and each system prompt.",
"ai_chat.inspection.tool_info.inspect_ai_last_render_error.desc": "Inspect the latest AI message render error",
"ai_chat.inspection.tool_info.inspect_ai_last_render_error.detail": "Returns the latest isolated AI message render error, including message identity, content preview, error summary, and component stack summary. Use it when users report that one AI reply is blank, a message bubble failed to render, or a message block errored without crashing the whole panel.",
"ai_chat.inspection.tool_info.inspect_ai_last_render_error.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_last_render_error.tool_description": "Read the latest local AI message render error snapshot, including message ID, role, content preview, error summary, component stack summary, and next diagnostic suggestions.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.desc": "Diagnose the current AI conversation message flow",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.detail": "Reads recent messages from the current or specified AI session, counts user/assistant/tool messages, checks whether tool calls have results, and detects consecutive assistant bubbles, empty assistant placeholders, or uncleared loading state. Use it when users report split replies, missing follow-up after tool calls, or abnormal message flow.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.param.includeContent": "Optional. Whether to include message content previews. Default true.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.param.limit": "Optional. Maximum number of recent messages to return. Default 24, maximum 80.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.param.previewLimit": "Optional. Character limit for each message preview. Default 180, maximum 1000.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.param.sessionId": "Optional. AI session ID to diagnose. If omitted, the current active session is used.",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.params": "sessionId?(default current session), limit?(default 24), includeContent?(default true), previewLimit?(default 180)",
"ai_chat.inspection.tool_info.inspect_ai_message_flow.tool_description": "Read recent message-flow diagnostics for the current or specified AI session, including role sequence, assistant/tool counts, tool-call to tool-result matching, consecutive assistant messages, empty assistant messages, and loading leftovers.",
"ai_chat.inspection.tool_info.inspect_ai_providers.desc": "Inspect current AI providers and model configuration",
"ai_chat.inspection.tool_info.inspect_ai_providers.detail": "Returns configured AI providers, the active provider, baseUrl values, selected models, declared model lists, whether keys exist, custom request header keys, and missing key, model, or endpoint checks. Use it when users ask why there are no models, whether an API Key is configured, or which providers are currently configured.",
"ai_chat.inspection.tool_info.inspect_ai_providers.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_providers.tool_description": "Read the current AI provider configuration snapshot, including provider list, active provider, endpoint, selected model, declared model list, key presence, custom request header keys, and missing key, model, or endpoint checks.",
"ai_chat.inspection.tool_info.inspect_ai_runtime.desc": "Inspect current AI runtime status",
"ai_chat.inspection.tool_info.inspect_ai_runtime.detail": "Returns the active model provider, model name, safety level, context level, enabled Skills, and currently exposed built-in and MCP tools. Use it before answering questions about available tools, the active model, or why write operations are unavailable.",
"ai_chat.inspection.tool_info.inspect_ai_runtime.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_runtime.tool_description": "Read the current AI runtime snapshot, including provider, model, safety level, context level, enabled Skills, available built-in tools, and MCP tools. Use it before answering AI capability-boundary questions.",
"ai_chat.inspection.tool_info.inspect_ai_safety.desc": "Inspect current AI write safety boundaries",
"ai_chat.inspection.tool_info.inspect_ai_safety.detail": "Returns the SQL scope allowed by the current AI safety level, whether non-read-only statements still require confirmation or allowMutating, and whether the active connection, tab, or JVM diagnostic permission adds read-only restrictions. Use it when users ask why writes are blocked, whether DDL can run, or whether allowMutating is required.",
"ai_chat.inspection.tool_info.inspect_ai_safety.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_safety.tool_description": "Read the current AI safety-boundary snapshot, including SQL scope allowed by the active safety level, confirmation requirements for non-query statements, MCP execute_sql allowMutating requirements, and any additional read-only restrictions from the active connection, result tab, or JVM diagnostic permissions.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.desc": "Inspect local AI conversation history",
"ai_chat.inspection.tool_info.inspect_ai_sessions.detail": "Filters local AI sessions by keyword and returns session title, update time, message count, whether it is current, first user question, and latest message preview. Use it when users want to find a previous AI conversation or recent session that discussed a topic.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.param.includePreview": "Optional. Whether to include first user question and latest message preview. Default true.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.param.keyword": "Optional. Filter by session title, session ID, first user question, or latest message content.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.param.limit": "Optional. Maximum number of sessions to return. Default 10, maximum 50.",
"ai_chat.inspection.tool_info.inspect_ai_sessions.params": "keyword?, limit?, includePreview?(default true)",
"ai_chat.inspection.tool_info.inspect_ai_sessions.tool_description": "Read local AI conversation history, optionally filtered by keyword, and return session title, update time, message count, current-session flag, first user question, and latest message preview.",
"ai_chat.inspection.tool_info.inspect_ai_setup_health.desc": "Run a one-shot health check for the current AI setup",
"ai_chat.inspection.tool_info.inspect_ai_setup_health.detail": "Summarizes the current AI provider, chat send prerequisites, MCP services and external client access, prompts and Skills, and attached context, then returns blockers, warnings, and next actions. Use it when users ask why AI is hard to use, whether the current AI setup has problems, or what is still missing.",
"ai_chat.inspection.tool_info.inspect_ai_setup_health.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_ai_setup_health.tool_description": "Inspect current AI setup health, returning provider, model, chat send prerequisites, MCP access, prompts and Skills, attached table context, blockers, suggestions, and next actions.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.desc": "Export an AI troubleshooting support bundle",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.detail": "Aggregates AI application health, provider and MCP status, application log summary, connection failure summary, message flow structure, context size, remote MCP access, and tool catalog index. Use it when users report AI instability, need MCP, connection, and logs reviewed together, or need development troubleshooting material without secrets or database passwords.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.connectionKeyword": "Optional. Keyword used to analyze connection failure logs. If omitted, keyword is reused.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.exposeStrategy": "Optional. Remote exposure strategy used to generate matching safety reminders.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.includeDetails": "Optional. Whether to include context-size details. Default false.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.includeLogLines": "Optional. Whether to include original log lines. Default false; enable only when lines need to be quoted.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.includeMessageContent": "Optional. Whether to include message content previews. Default false; enable only when troubleshooting bubble content.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.keyword": "Optional. Filter logs and tool catalog entries by keyword, such as ai, mcp, mysql, error, or openclaw.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.lineLimit": "Optional. Maximum number of application log lines to analyze. Default 120, maximum 240.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.localAddr": "Optional. Windows local HTTP MCP listen address. Default 127.0.0.1:8765.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.path": "Optional. Streamable HTTP MCP path. Default /mcp.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.publicUrl": "Optional. Public or tunnel URL used by a cloud Agent to access GoNavi MCP for the remote MCP support bundle.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.sessionId": "Optional. AI session ID to diagnose. If omitted, the current active session is used.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.param.tokenConfigured": "Optional. Whether a random Bearer Token is already prepared. Passing false returns an authentication warning.",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.params": "keyword?, sessionId?, lineLimit?(default 120), includeLogLines?(default false), includeMessageContent?(default false), publicUrl?, tokenConfigured?",
"ai_chat.inspection.tool_info.inspect_ai_support_bundle.tool_description": "Generate a GoNavi AI troubleshooting support bundle that summarizes AI application health, provider and send prerequisites, MCP configuration and remote access, application log summary, database connection failure summary, current AI message flow, context-size risk, and tool catalog index. By default it does not include database passwords, provider keys, MCP environment variable values, original log lines, or full message content.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.desc": "Inspect AI built-in tool catalog and argument hints",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.detail": "Returns GoNavi AI built-in tools, recommended probe flows, argument descriptions, and current MCP tool summaries by keyword or tool name. Use it when users ask which tool should be used, how to fill arguments, which built-in tools exist, or when AI needs to choose a probe route first.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.param.includeMCPTools": "Optional. Whether to include currently discovered MCP tool summaries. Default true.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.param.keyword": "Optional. Filter tools and flows by problem keyword, such as mcp, connection failure, transaction, shortcut, schema, or log.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.param.limit": "Optional. Maximum number of flows, built-in tools, and MCP tools to return. Default 12, maximum 40.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.param.toolName": "Optional. Query by exact built-in tool name, such as inspect_mcp_draft or inspect_sql_risk.",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.params": "keyword?, toolName?, includeMCPTools?(default true), limit?(default 12)",
"ai_chat.inspection.tool_info.inspect_ai_tool_catalog.tool_description": "Read the GoNavi AI tool catalog snapshot, filterable by keyword or tool name, and return recommended tool-call flows, built-in tool descriptions, argument hints, and currently discovered MCP tool summaries.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.desc": "Inspect AI upstream request payloads and status",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.detail": "Reads recent AI upstream request start, completion, and failure records from gonavi.log, filtered by provider, requestId, or keyword, then returns request body preview, payload structure summary, endpoint, status code, latency, and error summary. Use it when users need to verify the real payload sent upstream, diagnose request parameter compatibility, confirm whether tools were sent, or inspect redacted request logs.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.bodyPreviewLimit": "Optional. Maximum characters for one body preview. Default 6000, maximum 12000.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.includeBody": "Optional. Whether to return the redacted request body preview. Default true; set false when only status is needed.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.includeLines": "Optional. Whether to include redacted raw log lines. Default false; enable only when original lines need to be quoted.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.includePayloadSummary": "Optional. Whether to parse the request body and return model, message role distribution, tool count/name list, stream, and tool_choice summary. Default true; message bodies and keys are not returned.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.keyword": "Optional. Further filter by requestId, provider, endpoint, bodyPreview, or error, such as model name, API path, or parameter name.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.lineLimit": "Optional. Maximum number of tail log lines to read. Default 160, maximum 300.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.provider": "Optional. Inspect only one provider, such as openai, anthropic, or gemini. Case-insensitive.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.requestId": "Optional. Filter by the exact requestId in logs, useful when continuing from an error log.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.param.requestLimit": "Optional. Maximum number of request summaries to return. Default 12, maximum 40.",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.params": "provider?, requestId?, keyword?, lineLimit?(default 160), requestLimit?(default 12), includeBody?(default true), includePayloadSummary?(default true), includeLines?(default false)",
"ai_chat.inspection.tool_info.inspect_ai_upstream_logs.tool_description": "Read AI upstream request records from GoNavi application logs and return requestId, provider, method, endpoint, request body preview, redacted payload structure summary, status code, latency, and error summary. Use it when users mention upstream request payloads, requestId, provider parameters, missing tool calls, model API errors, or need to verify the real payload just sent upstream.",
"ai_chat.inspection.tool_info.inspect_app_health.desc": "Inspect the overall AI application health",
"ai_chat.inspection.tool_info.inspect_app_health.detail": "Summarizes AI configuration, provider send prerequisites, MCP access, application log ERROR/WARN signals, recent connection failures and cooldowns, AI reply bubble render errors, and current workspace tabs. Use it first when users report AI instability, ask for an overall check, or need connection and MCP issues diagnosed together.",
"ai_chat.inspection.tool_info.inspect_app_health.param.connectionKeyword": "Optional. Keyword used when analyzing connection failure logs by type, address, or error. If omitted, keyword is reused.",
"ai_chat.inspection.tool_info.inspect_app_health.param.includeLogLines": "Optional. Whether to include original log lines in the result. Default false; enable only when lines need to be quoted.",
"ai_chat.inspection.tool_info.inspect_app_health.param.keyword": "Optional. Filter application logs by keyword, such as ai, mcp, mysql, or error. If omitted, the recent log window is read.",
"ai_chat.inspection.tool_info.inspect_app_health.param.lineLimit": "Optional. Maximum number of log lines to analyze per probe. Default 120, maximum 240.",
"ai_chat.inspection.tool_info.inspect_app_health.params": "keyword?, connectionKeyword?, lineLimit?(default 120), includeLogLines?(default false)",
"ai_chat.inspection.tool_info.inspect_app_health.tool_description": "Read the GoNavi AI application health overview, including AI provider and send prerequisites, MCP access, application log ERROR/WARN signals, recent connection failures and cooldowns, AI reply bubble render errors, and current workspace tabs, then return blockers, runtime anomaly signals, and suggested next probes.",
"ai_chat.inspection.tool_info.inspect_app_logs.desc": "Inspect GoNavi application log tail",
"ai_chat.inspection.tool_info.inspect_app_logs.detail": "Filters recent GoNavi application log INFO/WARN/ERROR lines by optional keyword and returns level distribution, log file path, and truncation status. Use it first when users mention gonavi.log, startup errors, MCP startup failures, or database connection failures.",
"ai_chat.inspection.tool_info.inspect_app_logs.param.keyword": "Optional. Filter log content by keyword, such as mcp, mysql, timeout, or error.",
"ai_chat.inspection.tool_info.inspect_app_logs.param.lineLimit": "Optional. Maximum number of log lines to return. Default 80, maximum 200.",
"ai_chat.inspection.tool_info.inspect_app_logs.params": "keyword?, lineLimit?(default 80)",
"ai_chat.inspection.tool_info.inspect_app_logs.tool_description": "Read the GoNavi application log tail, optionally filtered by keyword, and return recent log lines, level distribution, log path, and truncation status. Use it when users mention gonavi.log, application startup errors, MCP startup failures, database connection errors, or ask to inspect recent logs.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.desc": "Inspect large frontend files and split hotspots",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.detail": "Returns large frontend file hotspots in GoNavi, including line counts, risk level, split maturity, safety boundaries, suggested split slices, and regression tests to run. Use it when users ask to continue large-file governance, choose the next component to split, or assess modification risk before changing UI, AI, or MCP code.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.param.includeRecommendations": "Optional. Whether to include suggestedSlices, testTargets, and nextActions. Default true.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.param.keyword": "Optional. Filter by path, module, risk, split slice, or test target, such as Sidebar, DataGrid, Redis, transaction, or connection.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.param.limit": "Optional. Maximum number of hotspots to return. Default 8, maximum 30.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.param.minLines": "Optional. Only return hotspot files with at least this many lines. Default 1000, maximum 20000.",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.params": "keyword?, minLines?(default 1000), limit?(default 8), includeRecommendations?(default true)",
"ai_chat.inspection.tool_info.inspect_codebase_hotspots.tool_description": "Read the GoNavi frontend large-file and split-hotspot snapshot, returning file path, line count, risk level, split maturity, preferred slice, safe split boundary, suggested slices, test targets, and verification plan.",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.desc": "Inspect frontend capabilities supported by the current connection",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.detail": "Returns the data-source capability matrix for the current or specified connection, including query editor support, SQL export, copy INSERT, create/rename/delete database support, forced read-only result state, and whether manual or approximate counts are preferred. Use it when users ask why database creation, deletion, result editing, or other actions are unavailable.",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.param.connectionId": "Optional. Connection ID to inspect. If omitted, the current active connection is used.",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.params": "connectionId?(default current active connection)",
"ai_chat.inspection.tool_info.inspect_connection_capabilities.tool_description": "Read the frontend capability matrix for the current active connection or specified saved connection, including query editor support, SQL export, copy INSERT, create/rename/delete database support, forced read-only result state, and count strategy preferences.",
"ai_chat.inspection.tool_info.inspect_current_connection.desc": "Inspect the current active connection or data source summary",
"ai_chat.inspection.tool_info.inspect_current_connection.detail": "Returns current active connection type, address, port, current database, SSH/proxy/HTTP tunnel state, and table information bound to the active tab. Use it when users ask which database is connected, whether SSH is used, or what type the current data source is.",
"ai_chat.inspection.tool_info.inspect_current_connection.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_current_connection.tool_description": "Read the real summary of the current active connection or active-tab data source, including connection type, address, port, current database, SSH/proxy/HTTP tunnel state, and table context bound to the active tab.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.desc": "Inspect local external SQL directory assets",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.detail": "Filters local external SQL directories by keyword, connection, or database, and returns directory path, bound connection/database, and whether SQL files from those directories are currently open. Use it when users mention external SQL directories, ask which directory contains a script, or need to identify the external directory for an open SQL file.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.param.connectionId": "Optional. Only inspect external SQL directories bound to one connection.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.param.dbName": "Optional. Only inspect external SQL directories bound to one database.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.param.keyword": "Optional. Filter by directory name, path, connection name, or database name.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.param.limit": "Optional. Maximum number of directories to return. Default 20, maximum 100.",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.params": "keyword?, connectionId?, dbName?, limit?",
"ai_chat.inspection.tool_info.inspect_external_sql_directories.tool_description": "Read locally configured external SQL directories, optionally filtered by keyword, connection, and database, and return directory path, bound connection/database, and summaries of currently open external SQL file tabs.",
"ai_chat.inspection.tool_info.inspect_external_sql_file.desc": "Read external SQL file content",
"ai_chat.inspection.tool_info.inspect_external_sql_file.detail": "Reads a specific SQL file inside a configured external SQL directory and returns its directory, bound connection/database, whether it already has an open tab, and a truncated content preview. Use it when users ask to inspect a script in a directory or explain what report.sql does.",
"ai_chat.inspection.tool_info.inspect_external_sql_file.param.filePath": "Required. Absolute path of the SQL file to read, usually found with inspect_external_sql_directories first.",
"ai_chat.inspection.tool_info.inspect_external_sql_file.param.previewCharLimit": "Optional. Maximum characters returned in the content preview. Default 12000, maximum 40000.",
"ai_chat.inspection.tool_info.inspect_external_sql_file.params": "filePath, previewCharLimit?",
"ai_chat.inspection.tool_info.inspect_external_sql_file.tool_description": "Read the content preview of a specified external SQL file, only for SQL files inside configured external SQL directories. Return file path, owning directory, bound connection/database, whether it is already open in the workspace, and truncated body content.",
"ai_chat.inspection.tool_info.inspect_mcp_authoring_guide.desc": "Inspect the add-MCP authoring guide",
"ai_chat.inspection.tool_info.inspect_mcp_authoring_guide.detail": "Returns add-MCP field purpose, recommended fill order, full-command auto-splitting rules, and npx / Node / uvx / Python / Docker / EXE templates. Use it before answering about command, args, env, templates, or pasting a full startup command.",
"ai_chat.inspection.tool_info.inspect_mcp_authoring_guide.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_mcp_authoring_guide.tool_description": "Read GoNavi built-in MCP authoring guidance, including recommended field order, field purpose, common command examples, full-command auto-splitting rules, and npx / Node / uvx / Python / Docker / EXE template examples.",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.desc": "Inspect Docker MCP startup configuration",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.detail": "Reads saved Docker MCP services, checks whether command and args split into docker, run, --rm, -i, image name, and container arguments correctly, then returns missing arguments, tool count, timeout advice, and next repair actions.",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.param.includeDisabled": "Optional. Whether to include disabled Docker MCP services. Default true.",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.param.serverId": "Optional. Inspect only one MCP serverId. If omitted, all Docker MCP services are inspected.",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.params": "serverId?, includeDisabled?(default true)",
"ai_chat.inspection.tool_info.inspect_mcp_docker_setup.tool_description": "Inspect startup arguments for saved Docker MCP services and return docker run/-i/image/--rm/env/timeout status, discovered tool counts, configuration warnings, and nextActions.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.desc": "Validate an add-MCP draft",
"ai_chat.inspection.tool_info.inspect_mcp_draft.detail": "Simulates GoNavi add-MCP configuration from a full startup command or per-field draft, returning auto-split results, startup preview, applicable draft, argument and environment hints, validation issues, recommended templates, and next repair suggestions. Sensitive arguments are redacted.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.args": "Optional. Command arguments in a per-field draft. Arrays are more accurate, but comma-separated or newline-separated strings are also accepted.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.command": "Optional. Startup command in a per-field draft. It should be only npx, node, uvx, python, or an exe path.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.envText": "Optional. Environment variable draft, one KEY=VALUE per line. Do not pass export, set, or $env: prefixes.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.fullCommand": "Optional. A full MCP startup command from README or the user, such as $env:GITHUB_TOKEN=...; uvx mcp-server-github --stdio.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.name": "Optional. MCP service name, such as GitHub, Filesystem, or Browser.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.templateKey": "Optional. Apply a built-in template first, then override it with user-supplied fields.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.param.timeoutSeconds": "Optional. Timeout seconds for one tool discovery or call. Recommended 20; slow-start services can use 45 or 60.",
"ai_chat.inspection.tool_info.inspect_mcp_draft.params": "fullCommand?, command?, args?, envText?, timeoutSeconds?, templateKey?, name?",
"ai_chat.inspection.tool_info.inspect_mcp_draft.tool_description": "Validate a pending MCP service draft. Supports fullCommand/rawCommand/commandLine automatic splitting, or per-field validation for command, args, envText, timeoutSeconds, and templateKey. Returns parsed fields, redacted startup preview, suggestedServerSeed, argument hints, environment risk hints, errors, warnings, recommended templates, and nextActions without echoing api-key/token/password values.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.desc": "Inspect OpenClaw/Hermans remote MCP access",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.detail": "Returns GoNavi Streamable HTTP MCP startup commands, remote URL, authentication guidance, OpenClaw/Hermans cloud Agent boundaries, bridging options, and safety reminders. Use it for cloud OpenClaw access to Windows GoNavi, keeping database passwords local, or exposing HTTP MCP.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.exposeStrategy": "Optional. Planned remote exposure strategy used to return matching risk reminders.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.localAddr": "Optional. Windows local HTTP MCP listen address. Default 127.0.0.1:8765. Binding directly to 0.0.0.0 is not recommended.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.path": "Optional. Streamable HTTP MCP path. Default /mcp.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.publicUrl": "Optional. HTTPS or private-network URL reachable by the remote Agent. If /mcp is missing, the tool appends the configured path.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.param.tokenConfigured": "Optional. Whether a random Bearer Token is already configured. Passing false returns an authentication warning.",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.params": "publicUrl?, localAddr?, path?, exposeStrategy?, tokenConfigured?",
"ai_chat.inspection.tool_info.inspect_mcp_remote_access.tool_description": "Read the GoNavi MCP remote Agent access snapshot, including Streamable HTTP startup commands, /mcp URL, Bearer Token requirements, OpenClaw/Hermans cloud access steps, Windows-host password boundary, and exposure risks for tunnel, reverse proxy, Tailscale, and similar strategies.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.desc": "Diagnose MCP startup and tool-call failures",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.detail": "Reads recent MCP startup, tool discovery, tool-call, and HTTP MCP subprocess failures from gonavi.log, then combines saved services and discovered tools to return failure types, likely causes, involved services, and next repair actions.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.param.includeLines": "Optional. Whether to include redacted raw MCP log lines. Default false; enable only when original lines need to be quoted.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.param.keyword": "Optional. Filter MCP-related logs by keyword, such as timeout, stdio, permission, 401, or docker.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.param.lineLimit": "Optional. Maximum number of tail log lines to read. Default 160, maximum 200.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.param.serverName": "Optional. Inspect only one MCP service name or server= name from logs, such as GitHub, Browser, or DockerFetch.",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.params": "serverName?, keyword?, lineLimit?(default 160), includeLines?(default false)",
"ai_chat.inspection.tool_info.inspect_mcp_runtime_failures.tool_description": "Read MCP runtime failure signals from GoNavi application logs, classify service startup, tool discovery, tool-call, and HTTP MCP subprocess exits, then combine current configuration and tool counts to return likely causes and nextActions.",
"ai_chat.inspection.tool_info.inspect_mcp_setup.desc": "Inspect current MCP configuration and external access",
"ai_chat.inspection.tool_info.inspect_mcp_setup.detail": "Returns local MCP services, enabled state, startup commands, Claude Code / Codex write status, OpenClaw / Hermans remote Agent boundaries, and command detection results. Use it to inspect configured MCP services, external client failures, or client config write status.",
"ai_chat.inspection.tool_info.inspect_mcp_setup.params": "No parameters",
"ai_chat.inspection.tool_info.inspect_mcp_setup.tool_description": "Read the local MCP configuration snapshot, including service list, enabled state, startup commands, environment variable keys, discovered tools, GoNavi MCP client write status, local CLI detection, and remote Agent access boundaries.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.desc": "Inspect MCP tool argument schema",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.detail": "Reads inputSchema for discovered MCP tools by alias, serverId, or keyword, returning required parameters, field types, enum values, nested object paths, and pre-call hints. Use it after MCP discovery succeeds to confirm accepted arguments.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.alias": "Optional. Query by exact MCP tool alias, such as github_create_issue. Prefer reading the real alias from inspect_mcp_setup first.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.includeSchema": "Optional. Whether to include the full raw inputSchema. Default false; enable only for complex nested schema inspection.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.keyword": "Optional. Filter by tool alias, original name, title, description, or service name.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.limit": "Optional. Maximum number of matching tools to return. Default 8, maximum 30.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.param.serverId": "Optional. Only inspect tools discovered under one MCP serverId.",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.params": "alias?, serverId?, keyword?, includeSchema?(default false), limit?(default 8)",
"ai_chat.inspection.tool_info.inspect_mcp_tool_schema.tool_description": "Read parameter schema summaries for discovered MCP tools, filterable by alias, serverId, or keyword, and return required fields, types, enum values, nested parameter paths, and pre-call hints. Use it before writing arguments JSON for external MCP tool calls or after parameter errors.",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.desc": "Summarize recent database connection failures and cooldowns",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.detail": "Extracts database connection failures, validation failures, SSH tunnel errors, and connection cooldown hits from recent gonavi.log lines, then classifies main issue type, latest address, latest root cause, and next actions. Use it before manually reading long logs when users ask why a connection fails or whether SSH tunneling is involved.",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.param.keyword": "Optional. Filter by connection type, address, or failure keyword, such as mysql, ssh, timeout, or 127.0.0.1.",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.param.lineLimit": "Optional. Maximum number of log lines to analyze. Default 120, maximum 240.",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.params": "keyword?, lineLimit?(default 120)",
"ai_chat.inspection.tool_info.inspect_recent_connection_failures.tool_description": "Summarize recent database connection failures, validation failures, SSH tunnel failures, and cooldown hits from GoNavi application logs, returning main failure category, latest address, latest root cause, and recommended actions.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.desc": "Summarize recent SQL activity distribution",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.detail": "Can filter by status, activityKind, dbName, and keyword, then returns a structured summary of recent SQL activity including read/write/DDL ratio, statement type distribution, database distribution, recent errors, recent writes, and slowest statements. Use it when the user asks what ran recently, whether data may have been deleted, which database is failing most, or whether recent activity is mostly reads or writes.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.activityKind": "Optional. Filter by activity type: all, read, write, ddl, transaction, session, or other. Default all.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.dbName": "Optional. Only include logs whose database name contains this keyword.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.keyword": "Optional. Filter by SQL text, error message, statement type, or database name.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.limit": "Optional. Maximum number of recent activity samples to return. Default 30, maximum 100.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.param.status": "Optional. Filter by execution status: all, success, or error. Default all.",
"ai_chat.inspection.tool_info.inspect_recent_sql_activity.tool_description": "Summarize the structured profile of recent SQL activity, optionally filtered by execution status, activity type, database name, and keyword. Use it to inspect recent read/write operations, concentrated errors in a database, DELETE or DDL activity, and let AI judge from the real execution scene first.",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.desc": "View recent SQL execution logs",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.detail": "Accepts optional limit and status filters, then returns recent SQL execution records including database, duration, success or failure, error, affected rows, and SQL text. Use it to trace failed statements, locate slow queries, and let AI explain or optimize based on real execution history.",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.param.limit": "Optional. Number of log entries to return. Default 20, maximum 100.",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.param.status": "Optional. Filter by execution status: all, success, or error. Default all.",
"ai_chat.inspection.tool_info.inspect_recent_sql_logs.tool_description": "Get a summary of recent SQL execution logs, optionally filtered by success or failure. Use it to review recently executed SQL, diagnose failures, locate slow queries, and let AI explain or optimize from real execution history.",
"ai_chat.inspection.tool_info.inspect_redis_topology.desc": "Diagnose Redis standalone, Sentinel, and Cluster configuration",
"ai_chat.inspection.tool_info.inspect_redis_topology.detail": "Reads local Redis connection topology summaries and returns standalone, Sentinel, and Cluster nodes, master, authentication state, DB range, redacted URI examples, status level, and next actions. Use it when users ask how to configure Redis Sentinel or Cluster, why DB switching fails, or how Cluster multi-DB behavior works.",
"ai_chat.inspection.tool_info.inspect_redis_topology.param.connectionId": "Optional. Diagnose only one Redis connection ID.",
"ai_chat.inspection.tool_info.inspect_redis_topology.param.includeRecommendations": "Optional. Whether to return repair recommendations. Default true.",
"ai_chat.inspection.tool_info.inspect_redis_topology.param.keyword": "Optional. Filter by connection name, address, topology, Sentinel master, or node address.",
"ai_chat.inspection.tool_info.inspect_redis_topology.param.limit": "Optional. Maximum number of Redis connections to return. Default 20, maximum 100.",
"ai_chat.inspection.tool_info.inspect_redis_topology.params": "connectionId?, keyword?, limit?, includeRecommendations?(default true)",
"ai_chat.inspection.tool_info.inspect_redis_topology.tool_description": "Read local Redis standalone, Sentinel, and Cluster topology summaries, returning nodes, Sentinel master, authentication state, DB selection, TLS/SSH/proxy state, backend adapter, redacted URI examples, status level, blockers, potential configuration risks, and recommendations. Results do not echo Redis or Sentinel passwords.",
"ai_chat.inspection.tool_info.inspect_saved_connections.desc": "Inspect locally saved connections",
"ai_chat.inspection.tool_info.inspect_saved_connections.detail": "Filters local saved data sources by keyword or database type and returns the data-source list, type distribution, address, current database, and SSH/proxy/HTTP tunnel state. Use it when users ask which connections are saved locally, want to find mysql or postgres connections, or need to know which connection has SSH configured.",
"ai_chat.inspection.tool_info.inspect_saved_connections.param.keyword": "Optional. Filter by connection name, ID, type, host, database name, SSH address, or proxy address.",
"ai_chat.inspection.tool_info.inspect_saved_connections.param.limit": "Optional. Maximum number of connections to return. Default 20, maximum 100.",
"ai_chat.inspection.tool_info.inspect_saved_connections.param.type": "Optional. Only inspect one database type, such as mysql, postgres, redis, or mongodb.",
"ai_chat.inspection.tool_info.inspect_saved_connections.params": "keyword?, type?, limit?",
"ai_chat.inspection.tool_info.inspect_saved_connections.tool_description": "Read locally saved connections, optionally filtered by keyword and database type, and return each connection's type, address, current database, SSH/proxy/HTTP tunnel summary, and related metadata.",
"ai_chat.inspection.tool_info.inspect_saved_queries.desc": "Inspect locally saved SQL queries",
"ai_chat.inspection.tool_info.inspect_saved_queries.detail": "Filters locally saved queries by keyword, connection, or database and returns query name, connection, database, and SQL preview. Use it when users mention a previously saved query, want to find an old SQL script, or want to reuse a saved statement.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.connectionId": "Optional. Only inspect saved queries under one connection.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.dbName": "Optional. Only inspect saved queries under one database.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.includeSql": "Optional. Whether to include SQL preview. Default true.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.keyword": "Optional. Filter by query name, SQL text, connection name, or database name.",
"ai_chat.inspection.tool_info.inspect_saved_queries.param.limit": "Optional. Maximum number of queries to return. Default 12, maximum 50.",
"ai_chat.inspection.tool_info.inspect_saved_queries.params": "keyword?, connectionId?, dbName?, limit?, includeSql?(default true)",
"ai_chat.inspection.tool_info.inspect_saved_queries.tool_description": "Read locally saved SQL queries, optionally filtered by keyword, connection, and database, and return each query name, connection, database, and SQL preview.",
"ai_chat.inspection.tool_info.inspect_shortcuts.desc": "Inspect current shortcut configuration and platform differences",
"ai_chat.inspection.tool_info.inspect_shortcuts.detail": "Returns shortcut actions, current platform binding, Windows/macOS combinations, whether the user changed a shortcut, and default-value comparison. Use it when users ask what a shortcut is, how to press it on Windows or Mac, or whether defaults were changed.",
"ai_chat.inspection.tool_info.inspect_shortcuts.param.action": "Optional. Filter by exact action key, such as toggleQueryResultsPanel, sendAIChatMessage, or toggleAIPanel.",
"ai_chat.inspection.tool_info.inspect_shortcuts.param.includeAllPlatforms": "Optional. Whether to include both Windows and macOS platform bindings. Default true.",
"ai_chat.inspection.tool_info.inspect_shortcuts.param.includeDisabled": "Optional. Whether to include currently disabled shortcuts. Default true.",
"ai_chat.inspection.tool_info.inspect_shortcuts.param.keyword": "Optional. Filter by action name, description, scope, key combination, or default value.",
"ai_chat.inspection.tool_info.inspect_shortcuts.params": "action?, keyword?, includeDisabled?(default true), includeAllPlatforms?(default true)",
"ai_chat.inspection.tool_info.inspect_shortcuts.tool_description": "Read the current GoNavi shortcut configuration snapshot, optionally filtered by action name or keyword, and return current platform binding, Windows/macOS bindings, defaults, and whether shortcuts were customized.",
"ai_chat.inspection.tool_info.inspect_sql_editor_transaction.desc": "View SQL editor transaction commit state",
"ai_chat.inspection.tool_info.inspect_sql_editor_transaction.detail": "Returns SQL editor managed-DML transaction semantics, current manual or auto commit setting, whether the active SQL tab will enter a managed transaction, pending transactions, and recent write or transaction execution records. Use it when the user asks what manual or auto commit means, whether there are uncommitted transactions, or whether update/insert/delete will commit automatically.",
"ai_chat.inspection.tool_info.inspect_sql_editor_transaction.param.includeSqlPreview": "Optional. Whether to return a SQL preview from the active SQL tab. Default true.",
"ai_chat.inspection.tool_info.inspect_sql_editor_transaction.tool_description": "Read a SQL editor transaction state snapshot, including the real semantics that DML always enters a managed transaction, current commit mode, auto-commit delay, whether the active SQL tab triggers a managed transaction, pending transactions, and recent write or transaction logs. Use it when the user asks about SQL editor manual commit, auto commit, uncommitted transactions, or whether DML commits after execution.",
"ai_chat.inspection.tool_info.inspect_sql_risk.desc": "Check execution risk for current or specified SQL",
"ai_chat.inspection.tool_info.inspect_sql_risk.detail": "Reads supplied SQL or the current active query tab content, detects multiple statements, writes, DDL, DELETE/UPDATE without WHERE, DROP/TRUNCATE, and other risks, then combines the result with current AI safety policy to say whether execution is allowed. Use it before AI executes SQL, explains risk, or confirms whether a SQL statement can run.",
"ai_chat.inspection.tool_info.inspect_sql_risk.param.previewCharLimit": "Optional. Maximum number of characters to return in the SQL preview. Default 12000, maximum 40000.",
"ai_chat.inspection.tool_info.inspect_sql_risk.param.sql": "Optional. SQL to inspect. If omitted, the current active query tab SQL draft is read by default.",
"ai_chat.inspection.tool_info.inspect_sql_risk.tool_description": "Check execution risk for supplied SQL or the current active query tab SQL, returning statement count, activity type, risk level, risk points, whether user confirmation is required, and the current AI safety policy result. Use it before answering or continuing when the user asks to execute, delete, update, run DDL, run batch SQL, or asks whether a SQL statement can run.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.desc": "Inspect SQL snippet templates",
"ai_chat.inspection.tool_info.inspect_sql_snippets.detail": "Returns local SQL snippet prefix, name, description, and template preview, optionally filtered by keyword. Use it when users want to find existing templates, completion snippets, or team SQL conventions.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.param.includeBody": "Optional. Whether to include template body preview. Default true.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.param.keyword": "Optional. Filter by prefix, name, description, or template content.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.param.limit": "Optional. Maximum number of snippets to return. Default 20, maximum 80.",
"ai_chat.inspection.tool_info.inspect_sql_snippets.params": "keyword?, limit?, includeBody?(default true)",
"ai_chat.inspection.tool_info.inspect_sql_snippets.tool_description": "Read local SQL snippet templates, optionally filtered by keyword, and return prefix, name, description, and template preview.",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.desc": "Inspect currently open workspace tabs",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.detail": "Returns the list of tabs open in the current workspace, which one is active, and each tab's connection, database, table name, and related context. Use it when users ask which SQL tabs are open, what exists in the workspace, or want to compare several query tabs.",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.param.includeContent": "Optional. Whether to include SQL or command draft content from tabs. Default false.",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.param.limit": "Optional. Maximum number of tabs to return. Default 12, maximum 30.",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.params": "limit?(default 12), includeContent?(default false)",
"ai_chat.inspection.tool_info.inspect_workspace_tabs.tool_description": "Get an overview of currently open workspace tabs, including active tab, tab type, connection, database, table name, and optional SQL or command draft content.",
"ai_chat.inspection.upstream_logs.message.empty": "No AI upstream request records were found in recent logs. Send one AI message first, or retry with a larger lineLimit.",
"ai_chat.inspection.upstream_logs.next_action.confirm_logging": "Confirm that the current build includes AI upstream request logging.",
"ai_chat.inspection.upstream_logs.next_action.filter_request_body": "To verify full request inputs, filter precisely by requestId first, then check whether bodyPreview was truncated.",
"ai_chat.inspection.upstream_logs.next_action.inspect_timeout": "If there is only a start event with no completion or failure, continue with inspect_app_logs or increase lineLimit to check for request timeout.",
"ai_chat.inspection.upstream_logs.next_action.read_warn_error": "If there are still no records, call inspect_app_logs to read recent WARN/ERROR raw logs.",
"ai_chat.inspection.upstream_logs.next_action.send_message": "Send one AI chat message, then call this tool again.",
"ai_chat.inspection.upstream_logs.warning.invalid_json": "The request body is not complete JSON. It may have been truncated by logs, so a structured summary cannot be generated.",
"ai_chat.inspection.upstream_logs.warning.large_input": "The input text is large. Narrow the context or reduce log/DDL content if needed.",
"ai_chat.inspection.upstream_logs.warning.missing_messages": "No messages, contents, system, or prompt field was found. Confirm whether the upstream protocol matches expectations.",
"ai_chat.inspection.upstream_logs.warning.missing_tools": "The payload does not include tools/functions, so the model cannot initiate tool calls.",
"ai_chat.inspection.upstream_logs.warning.not_json_object": "The request body is not a JSON object, so model, message, and tool fields cannot be identified.",
"ai_chat.inspection.workspace.no_active_tab": "No active tab is currently selected",
"ai_chat.mcp_client.install.action.connected": "{{label}} is connected; no reinstall needed",
"ai_chat.mcp_client.install.action.copy_remote": "Copy {{label}} remote connection guide",
"ai_chat.mcp_client.install.action.install": "Install to {{label}} (external tool)",
"ai_chat.mcp_client.install.action.update": "Update {{label}} connection config",
"ai_chat.mcp_client.install.detection.detected": "Detected local {{command}} command. After connecting or updating, restart {{label}} to verify.",
"ai_chat.mcp_client.install.detection.not_detected": "Local {{command}} command was not detected. If the CLI is not in PATH yet, you can still write {{label}} config first and restart later.",
"ai_chat.mcp_client.install.detection.remote": "{{label}} usually does not run on this Windows machine. No local {{command}} command detection is needed; configure a remote MCP bridge URL in the cloud.",
"ai_chat.mcp_client.install.intro.description": "Claude Code and Codex write local user-level MCP config. Cloud Agents such as OpenClaw and Hermans use remote connection guidance so database passwords are not copied to the cloud.",
"ai_chat.mcp_client.install.intro.title": "This connects GoNavi MCP to Claude Code / Codex / OpenClaw / Hermans for external tool calls. It is not installing a plugin into GoNavi itself.",
"ai_chat.mcp_client.install.message.already_connected": "{{label}} is already connected to current GoNavi MCP. No repeated write is needed.",
"ai_chat.mcp_client.install.message.claude_not_supported": "This version does not support automatic Claude Code MCP installation yet",
"ai_chat.mcp_client.install.message.codex_not_supported": "This version does not support automatic Codex MCP installation yet",
"ai_chat.mcp_client.install.message.config_path_copied": "Config file path copied",
"ai_chat.mcp_client.install.message.config_path_copy_failed": "Failed to copy config file path",
"ai_chat.mcp_client.install.message.config_path_missing": "No config file path is available to copy",
"ai_chat.mcp_client.install.message.install_failed": "Failed to install {{label}} MCP",
"ai_chat.mcp_client.install.message.install_success": "Wrote {{label}} user-level MCP config",
"ai_chat.mcp_client.install.message.launch_command_copied": "Launch command copied",
"ai_chat.mcp_client.install.message.launch_command_copy_failed": "Failed to copy launch command",
"ai_chat.mcp_client.install.message.launch_command_missing": "No launch command is available to copy",
"ai_chat.mcp_client.install.message.refresh_failed": "Failed to refresh client installation status",
"ai_chat.mcp_client.install.message.remote_guide_copied": "{{label}} remote connection guide copied",
"ai_chat.mcp_client.install.message.remote_guide_copy_failed": "Failed to copy {{label}} remote connection guide",
"ai_chat.mcp_client.install.option.connected": "This GoNavi MCP is already connected to this client.",
"ai_chat.mcp_client.install.option.error": "Connection status looks abnormal. Refresh before changing it.",
"ai_chat.mcp_client.install.option.missing": "Current GoNavi MCP is not connected here yet.",
"ai_chat.mcp_client.install.option.remote": "For cloud Agents: schema-only reads GoNavi structure by default, without copying database passwords or exposing execute_sql.",
"ai_chat.mcp_client.install.option.stale": "An old GoNavi entry was detected. Update it to the current install path.",
"ai_chat.mcp_client.install.repeat_avoidance": "When already connected to this GoNavi, the main button is disabled to avoid repeated writes.",
"ai_chat.mcp_client.install.selected.connected": "Connected to current GoNavi; no repeated action needed",
"ai_chat.mcp_client.install.selected.error": "Status read is abnormal; refresh detection first",
"ai_chat.mcp_client.install.selected.missing": "GoNavi MCP is not connected yet",
"ai_chat.mcp_client.install.selected.remote": "Configure a remote MCP bridge; database passwords stay on the GoNavi machine",
"ai_chat.mcp_client.install.selected.stale": "Old connection record exists; update it to the current GoNavi path",
"ai_chat.mcp_client.install.selector.aria_label": "Select the external client for GoNavi MCP",
"ai_chat.mcp_client.install.selector.choice_title": "Select external client",
"ai_chat.mcp_client.install.selector.description": "Choose one target client first. Local CLIs can write or update config automatically; remote Agents must access current GoNavi through an MCP bridge or tunnel and should not store database passwords.",
"ai_chat.mcp_client.install.selector.hint.active_local": "Selected. Only this client will be written or updated.",
"ai_chat.mcp_client.install.selector.hint.active_remote": "Selected. The remote connection guide will be copied.",
"ai_chat.mcp_client.install.selector.hint.inactive_local": "Click to switch to this client.",
"ai_chat.mcp_client.install.selector.hint.inactive_remote": "Click to view the remote connection method.",
"ai_chat.mcp_client.install.selector.step.restart.detail": "Restart the local CLI to verify. Cloud Agents verify after configuring the remote MCP URL.",
"ai_chat.mcp_client.install.selector.step.restart.title": "Restart or configure target",
"ai_chat.mcp_client.install.selector.step.target.detail": "Local Claude/Codex can be installed automatically. OpenClaw/Hermans use remote connection guidance.",
"ai_chat.mcp_client.install.selector.step.target.title": "Choose target client",
"ai_chat.mcp_client.install.selector.step.write.detail": "Automatic install only changes user-level MCP config. Remote Agents copy bridge guidance.",
"ai_chat.mcp_client.install.selector.step.write.title": "Write or copy config",
"ai_chat.mcp_client.install.selector.title": "Connect external client",
"ai_chat.mcp_client.install.state.connected": "External tool connection status: connected to this GoNavi",
"ai_chat.mcp_client.install.state.error": "External tool connection status: failed to read",
"ai_chat.mcp_client.install.state.missing": "External tool connection status: not connected",
"ai_chat.mcp_client.install.state.remote": "External tool connection status: remote MCP bridge required",
"ai_chat.mcp_client.install.state.stale": "External tool connection status: old config found, update needed",
"ai_chat.mcp_client.install.status.cli.detected": "Detected {{command}}",
"ai_chat.mcp_client.install.status.cli.not_detected": "{{command}} was not detected; config can still be written first",
"ai_chat.mcp_client.install.status.cli.remote": "Remote Agent does not need local {{command}} command detection",
"ai_chat.mcp_client.install.status.cli_prefix": "CLI detection: {{status}}",
"ai_chat.mcp_client.install.status.command_path": "Command path: {{path}}",
"ai_chat.mcp_client.install.status.config_file": "Config file: {{path}}",
"ai_chat.mcp_client.install.status.copy_command": "Copy launch command",
"ai_chat.mcp_client.install.status.copy_config": "Copy config path",
"ai_chat.mcp_client.install.status.current_state": "Current status: {{status}}",
"ai_chat.mcp_client.install.status.current_target": "Current target client: {{label}}",
"ai_chat.mcp_client.install.status.detection_missing": "No connection status detected",
"ai_chat.mcp_client.install.status.detection_result": "Detection result: {{message}}",
"ai_chat.mcp_client.install.status.launch_command": "Launch command: {{command}}",
"ai_chat.mcp_client.install.status.no_client": "No client selected",
"ai_chat.mcp_client.install.status.refresh": "Refresh status",
"ai_chat.mcp_client.install.status.remote_boundary": "Remote connection boundary: database connection info and passwords stay in Windows GoNavi. Cloud Agents read connection summaries, object lists, tables, views, and DDL through schema-only MCP tools by default, and execute_sql is not registered. For cross-machine access, use GoNavi Streamable HTTP mode with a token, tunnel, or reverse proxy.",
"ai_chat.mcp_client.install.status.title": "Selected client status",
"ai_chat.mcp_client.install.status_tone.connected": "Connected",
"ai_chat.mcp_client.install.status_tone.not_connected": "Not connected",
"ai_chat.mcp_client.install.status_tone.remote_bridge": "Remote bridge",
"ai_chat.mcp_client.install.status_tone.status_error": "Status error",
"ai_chat.mcp_client.install.status_tone.update_required": "Update needed",
"ai_chat.mcp_client.install.summary.connected": "{{label}} is connected to this GoNavi MCP and can call it directly.",
"ai_chat.mcp_client.install.summary.error": "Failed to read the connection status for {{label}}. Refresh detection first.",
"ai_chat.mcp_client.install.summary.missing": "This GoNavi MCP is not connected to {{label}} yet.",
"ai_chat.mcp_client.install.summary.remote": "{{label}} usually runs in the cloud or on another machine and needs a remote MCP bridge to call this GoNavi.",
"ai_chat.mcp_client.install.summary.stale": "{{label}} already has an old GoNavi entry. Updating will point it to this GoNavi.",
"ai_chat.message.action.copied": "Copied",
"ai_chat.message.action.copied_error_raw": "Raw error copied",
"ai_chat.message.action.copy_error_raw": "Copy raw error",
"ai_chat.message.action.copy_full": "Copy full text",
"ai_chat.message.action.delete": "Delete message",
"ai_chat.message.action.edit": "Edit this message, remove later records, and resend",
"ai_chat.message.action.retry": "Regenerate from the previous user message",
"ai_chat.message.code.collapse": "Collapse code",
"ai_chat.message.code.copied": "Copied",
"ai_chat.message.code.copy": "Copy code",
"ai_chat.message.code.execute": "Execute",
"ai_chat.message.code.execute_failed": "Execution failed",
"ai_chat.message.code.execute_tooltip": "Execute now, subject to the AI safety policy",
"ai_chat.message.code.executing": "Executing...",
"ai_chat.message.code.expand_all": "Expand all code",
"ai_chat.message.code.insert": "Insert",
"ai_chat.message.code.insert_tooltip": "Insert this SQL into the query workspace for quick edits or execution",
"ai_chat.message.code.preview": "Preview",
"ai_chat.message.code.preview_collapse": "Collapse",
"ai_chat.message.code.preview_result": "Preview result ({{rows}} rows x {{columns}} columns)",
"ai_chat.message.code.preview_tooltip": "Preview query results in chat, up to 20 rows",
"ai_chat.message.code.query_no_result": "Query returned no results",
"ai_chat.message.code.view_result": "View result ({{rows}} rows)",
"ai_chat.message.image_alt": "Attached image {{index}}",
"ai_chat.message.jvm.apply_diagnostic": "Apply to diagnostic console",
"ai_chat.message.jvm.apply_preview": "Apply to JVM preview",
"ai_chat.message.jvm.diagnostic_target_not_found": "No diagnostic console tab matches this plan. Open the original target console before applying it.",
"ai_chat.message.jvm.missing_diagnostic_context": "This diagnostic plan is missing source tab context. Regenerate it from the target diagnostic console.",
"ai_chat.message.jvm.missing_plan_context": "This JVM plan is missing source tab context. Regenerate it from the target JVM resource page.",
"ai_chat.message.jvm.plan_target_not_found": "No resource tab matches this JVM plan. Open the original target resource before applying it.",
"ai_chat.message.mermaid.parse_failed": "Mermaid parse failed: {{detail}}",
"ai_chat.message.mermaid.render_failed": "Mermaid render failed: {{detail}}",
"ai_chat.message.render_error.body": "The rest of the conversation is still available. You can delete this broken message before continuing.",
"ai_chat.message.render_error.delete": "Delete this message",
"ai_chat.message.render_error.retry": "Retry render",
"ai_chat.message.render_error.title": "This AI message failed to render and has been isolated",
"ai_chat.message.render_error.unknown": "Unknown render error",
"ai_chat.message.role.user": "You",
"ai_chat.message.security.blocked": "🔒 Safety policy blocked this SQL: the current safety level does not allow {{operationType}} operations. Adjust the safety level in AI settings.",
"ai_chat.message.security.confirm_execute": "Execute",
"ai_chat.message.security.confirm_title": "⚠️ Safety confirmation",
"ai_chat.message.security.default_warning": "This SQL is a {{operationType}} operation. Execute it?",
"ai_chat.message.thinking.active": "Thinking...",
"ai_chat.message.thinking.count": "({{count}} chars)",
"ai_chat.message.thinking.title": "Thinking process",
"ai_chat.message.tool_call.done": "Data probes completed ({{count}} items)",
"ai_chat.message.tool_call.execute_sql": "Execute SQL query",
"ai_chat.message.tool_call.get_all_columns": "Summarize columns across tables",
"ai_chat.message.tool_call.get_columns": "Read column list",
"ai_chat.message.tool_call.get_connections": "Load available connection info",
"ai_chat.message.tool_call.get_databases": "Scan database list",
"ai_chat.message.tool_call.get_foreign_keys": "Map foreign key relationships",
"ai_chat.message.tool_call.get_indexes": "Inspect index definitions",
"ai_chat.message.tool_call.get_objects": "Read database object list",
"ai_chat.message.tool_call.get_table_ddl": "Read CREATE TABLE statement",
"ai_chat.message.tool_call.get_tables": "Analyze table structure info",
"ai_chat.message.tool_call.get_triggers": "Inspect trigger logic",
"ai_chat.message.tool_call.get_views": "Analyze view structure info",
"ai_chat.message.tool_call.inspect_active_tab": "Read current active tab",
"ai_chat.message.tool_call.inspect_ai_chat_readiness": "Read current AI chat preflight status",
"ai_chat.message.tool_call.inspect_ai_context_budget": "Diagnose AI context budget risk",
"ai_chat.message.tool_call.inspect_ai_guidance": "Read current AI prompt and skill configuration",
"ai_chat.message.tool_call.inspect_ai_last_render_error": "Read latest AI rendering error",
"ai_chat.message.tool_call.inspect_ai_message_flow": "Diagnose current AI message flow",
"ai_chat.message.tool_call.inspect_ai_providers": "Read current AI provider and model configuration",
"ai_chat.message.tool_call.inspect_ai_runtime": "Read current AI runtime status",
"ai_chat.message.tool_call.inspect_ai_safety": "Read current AI safety boundary",
"ai_chat.message.tool_call.inspect_ai_sessions": "Review local AI chat sessions",
"ai_chat.message.tool_call.inspect_ai_support_bundle": "Generate AI troubleshooting support bundle",
"ai_chat.message.tool_call.inspect_ai_tool_catalog": "Read AI tool catalog and parameter hints",
"ai_chat.message.tool_call.inspect_app_logs": "Review GoNavi application logs",
"ai_chat.message.tool_call.inspect_codebase_hotspots": "Read codebase hotspot files",
"ai_chat.message.tool_call.inspect_connection_capabilities": "Read current connection capability matrix",
"ai_chat.message.tool_call.inspect_current_connection": "Read current connection summary",
"ai_chat.message.tool_call.inspect_database_bundle": "Fetch database structure overview",
"ai_chat.message.tool_call.inspect_external_sql_directories": "Review external SQL directories",
"ai_chat.message.tool_call.inspect_external_sql_file": "Read external SQL file",
"ai_chat.message.tool_call.inspect_mcp_authoring_guide": "Read MCP authoring guide",
"ai_chat.message.tool_call.inspect_mcp_draft": "Validate MCP draft",
"ai_chat.message.tool_call.inspect_mcp_runtime_failures": "Diagnose MCP runtime failures",
"ai_chat.message.tool_call.inspect_mcp_setup": "Read current MCP configuration status",
"ai_chat.message.tool_call.inspect_mcp_tool_schema": "Read MCP tool parameter schema",
"ai_chat.message.tool_call.inspect_recent_connection_failures": "Summarize recent connection failures",
"ai_chat.message.tool_call.inspect_recent_sql_activity": "Summarize recent SQL activity",
"ai_chat.message.tool_call.inspect_recent_sql_logs": "Review recent SQL execution logs",
"ai_chat.message.tool_call.inspect_redis_topology": "Diagnose Redis topology configuration",
"ai_chat.message.tool_call.inspect_saved_connections": "Review locally saved connections",
"ai_chat.message.tool_call.inspect_saved_queries": "Search locally saved queries",
"ai_chat.message.tool_call.inspect_shortcuts": "Read current shortcut settings",
"ai_chat.message.tool_call.inspect_sql_editor_transaction": "Read SQL editor transaction status",
"ai_chat.message.tool_call.inspect_sql_snippets": "Read SQL snippet templates",
"ai_chat.message.tool_call.inspect_table_bundle": "Fetch full table structure snapshot",
"ai_chat.message.tool_call.inspect_workspace_tabs": "Review current workspace tabs",
"ai_chat.message.tool_call.preview_table_rows": "Preview real sample rows",
"ai_chat.message.tool_call.running": "Running data probes...",
"ai_chat.message.tool_result.char_count": "{{count}} chars",
"ai_chat.message.tool_result.no_data": "No data",
"ai_chat.message.tool_result.title": "Probe result ({{name}})",
"ai_chat.message.wait.connecting": "Connecting",
"ai_chat.panel.error.html_response": "The server returned an abnormal HTML response, possibly a gateway timeout or unavailable service",
"ai_chat.panel.error.http_server": "HTTP {{code}} server error",
"ai_chat.panel.error.truncated_suffix": "...(truncated)",
"ai_chat.panel.error.unknown": "Unknown error",
"ai_chat.panel.history.empty": "No chat history yet",
"ai_chat.panel.insight.context.empty_body": "Opening AI from a table page links the current table automatically. You can also add context manually above the input.",
"ai_chat.panel.insight.context.empty_title": "No table structure linked yet",
"ai_chat.panel.insight.context.linked_body": "This conversation includes structure context for {{tables}}.",
"ai_chat.panel.insight.context.linked_title": "{{count}} linked tables",
"ai_chat.panel.insight.context.more_tables_suffix": " and more tables",
"ai_chat.panel.insight.context.table_separator": ", ",
"ai_chat.panel.insight.query.empty_body": "After a query runs, SQL clues for optimization analysis appear here.",
"ai_chat.panel.insight.query.empty_title": "No query duration samples yet",
"ai_chat.panel.insight.query.slowest_title": "Slowest recent query {{duration}}ms",
"ai_chat.panel.insight.status.empty_body": "No SQL logs yet.",
"ai_chat.panel.insight.status.failed_title": "{{count}} recent query failures",
"ai_chat.panel.insight.status.ok_title": "Recent query status normal",
"ai_chat.panel.insight.status.recent_body": "Recorded {{count}} recent SQL entries. You can ask AI to explain or optimize them.",
"ai_chat.panel.insight.write.detected_body": "For SQL involving writes, generate a preview and rollback statements before committing.",
"ai_chat.panel.insight.write.detected_title": "Detected {{count}} write operations",
"ai_chat.panel.insight.write.readonly_body": "AI defaults to explaining, generating SELECT, analyzing Schema, and optimizing indexes.",
"ai_chat.panel.insight.write.readonly_title": "Currently focused on read-only analysis",
"ai_chat.panel.jvm_diagnostic.permission.allowed": "allowed",
"ai_chat.panel.jvm_diagnostic.permission.forbidden": "forbidden",
"ai_chat.panel.jvm_diagnostic.policy.plan_first": "Diagnostic commands may be generated, but always provide the plan first and let the user decide whether to execute.",
"ai_chat.panel.jvm_diagnostic.policy.read_only": "Answer with read-only diagnostics by default; generate only observe, trace, and troubleshooting commands, and do not assume anything has already executed.",
"ai_chat.panel.jvm_runtime.policy.preview_required": "Writable connection, but every modification must generate a preview first and wait for human confirmation.",
"ai_chat.panel.jvm_runtime.policy.read_only": "Read-only connection; only analyze and generate change plans, and never assume writes have already executed.",
"ai_chat.panel.jvm_runtime.resource_path.current": "Current resourcePath: {{resourcePath}}",
"ai_chat.panel.jvm_runtime.resource_path.missing": "No specific resourcePath is currently selected.",
"ai_chat.panel.local_tool.execute_sql.description": "Execute a SQL query on the specified connection and database, then return the result. Controlled by the safety level: in read-only mode, only SELECT/SHOW/DESCRIBE and similar query operations are allowed. Returns at most 50 rows.",
"ai_chat.panel.local_tool.get_columns.description": "Get the field list for the specified table, including field names, types, nullable status, default values, comments, and related metadata. Before generating SQL, call this tool to confirm real field names and do not guess field names.",
"ai_chat.panel.local_tool.get_connections.description": "When the user needs to query or operate on a database but no connection context is selected, get all database connections available in the app. The returned data includes connection ID (id) and name (name).",
"ai_chat.panel.local_tool.get_databases.description": "Get all database (Database/Schema) names under the specified connection (connectionId).",
"ai_chat.panel.local_tool.get_table_ddl.description": "Get the complete CREATE TABLE DDL for the specified table, including fields, indexes, constraints, and the full structure.",
"ai_chat.panel.local_tool.get_tables.description": "After the target connection and dbName are known, if the user asks about or implicitly mentions a table and you do not know the exact tableName, call this tool to get all table names in that database (table names only) to infer the target table.",
"ai_chat.panel.local_tool.param.connection_id": "connectionId",
"ai_chat.panel.local_tool.param.connection_id_from_get_connections": "connectionId (from get_connections)",
"ai_chat.panel.local_tool.param.db_name": "dbName",
"ai_chat.panel.local_tool.param.sql": "SQL statement to execute",
"ai_chat.panel.local_tool.param.table_name": "tableName",
"ai_chat.panel.message.empty_response": "❌ The model did not return any content. It may have hit rate limits, context overload, or a refusal.",
"ai_chat.panel.message.error": "❌ Error: {{detail}}",
"ai_chat.panel.message.request_interrupted": "❌ Request interrupted: no concrete reply was received.",
"ai_chat.panel.message.send_failed": "❌ Send failed: {{detail}}",
"ai_chat.panel.message.service_not_ready": "❌ AI Service is not ready",
"ai_chat.panel.model_control.continue_after_summary": "Based on the latest status and exploration results above, continue the analysis you had not finished or perform the next step.",
"ai_chat.panel.model_control.force_tool_call": "Use a function call directly to invoke the tool and perform the operation; do not only describe the plan in text.",
"ai_chat.panel.notice.fetch_models_failed": "Failed to fetch model list: {{detail}}",
"ai_chat.panel.probe.consecutive_failed": "⚠️ Probes failed for 3 consecutive rounds and were stopped. Check the connection status and retry.",
"ai_chat.panel.probe.max_rounds": "⚠️ Tool calls reached the {{count}} round limit and were stopped. Send a new message to continue exploring.",
"ai_chat.panel.prompt.jvm_diagnostic": "You are GoNavi's JVM diagnostic assistant. The current tab is an Arthas-compatible diagnostic workbench, and the goal is to produce a structured diagnostic plan that can be pasted back into the diagnostic console.\n\nCurrent connection: {{connectionName}}\nTarget host: {{host}}\nDiagnostic transport: {{transport}}\nEnvironment: {{environment}}\nConnection policy: {{readOnlyPolicy}}\nCommand permissions: observe={{observePolicy}}, trace={{tracePolicy}}, mutating={{mutatingPolicy}}\n\nResponse rules:\n1. You may start with a short analysis, but the response must contain exactly one ```json code block.\n2. JSON fields are strictly limited to intent, transport, command, riskLevel, reason, expectedSignals.\n3. The transport field must match the diagnostic transport shown above; do not invent another transport.\n4. command must be a single diagnostic command, with no shell prompt, newline concatenation, multiple commands, or code fence.\n5. riskLevel must be one of low, medium, high.\n6. expectedSignals must be a string array describing signals to watch after execution.\n7. If permissions disallow an operation category, do not output that command category; explain the limitation directly if the request cannot be satisfied.",
"ai_chat.panel.prompt.jvm_runtime": "You are GoNavi's JVM runtime analysis assistant. The current context is not SQL; it is the JVM resource workbench.\n\nCurrent connection: {{connectionName}}\nTarget host: {{host}}\nProvider mode: {{providerMode}}\nEnvironment: {{environment}}\nConnection policy: {{connectionPolicy}}\nResource path status: {{resourcePathStatus}}\n\nResponse rules:\n1. You may explain resource structure, risks, modification advice, and rollback advice.\n2. If the user asks for a JVM modification plan, output exactly one ```json code block, and strictly limit JSON fields to targetType, selector, action, payload, reason.\n3. Prefer action values already declared in the current resource snapshot or metadata as supportedActions; if the current resource does not declare them, infer cautiously from the snapshot content.\n4. Prefer the current resourcePath for selector.resourcePath; if the current path is unknown, clearly say precise targeting is not possible and do not invent a path.\n5. payload must use only {\"format\":\"json\",\"value\":{...}} or {\"format\":\"text\",\"value\":\"...\"}; do not output scripts, commands, or bare values.\n6. Do not output scripts, commands, or claims such as already executed successfully.",
"ai_chat.panel.prompt.memory_summary": "This is the history of an overlong conversation. To free context space while preserving the core memory, read it carefully and produce a highly condensed structured summary based on technical facts, explored data-structure state, the user's central request, and current progress.\nNotes:\n1. Be objective and accurate; do not omit key business logic or discovered table names/fields.\n2. Remove ineffective execution process, pleasantries, and the JSON return values themselves.\n3. Keep it around 1000-2000 words and output concise Markdown only.\n4. Start directly with the summary; do not include greetings.",
"ai_chat.panel.prompt.sql.context_tables": "You are a professional database assistant. The current database type is {{dbDisplayType}}. Generate SQL using that dialect. The following linked table DDL is provided by the user; prioritize it when answering:\n\n{{ddlChunks}}",
"ai_chat.panel.prompt.sql.current_database": "You are a professional database assistant. The current database type is {{dbDisplayType}}, and the current database name is {{targetDbName}}. If the user needs information about a specific table or the current database, you can proactively call the provided get_tables tool to fetch table information.",
"ai_chat.panel.prompt.sql.no_connections": "You are a professional database assistant. There are currently no available database connections in the app.\n\nIf the user's question needs database structure or SQL, first explain that get_connections, get_databases, get_tables, and get_columns cannot fetch real database information until a connection exists, then ask the user to create a connection and retry. Do not guess connectionId, dbName, table names, or field names.\n\nFor general questions that do not involve database querying, answer normally.",
"ai_chat.panel.prompt.sql.no_context": "You are a professional database assistant. The user has not selected any specific database or table in the UI as context.\n\nImportant rules:\n1. If you need to help the user find a target table, never guess table names. You must call tools to fetch real data.\n2. Complete workflow: get_connections → get_databases → get_tables → get_columns → generate SQL. Do not skip any step.\n3. [Connection priority - critical] After getting the connection list, search in this order:\n - First priority: connections whose host is localhost, 127.0.0.1, or contains local-machine wording\n - Second priority: connections whose name or host contains dev or local, or whose host is an internal IP such as 10.x, 192.168.x, or 172.16-31.x\n - Third priority: other connections such as test or production\n If you find the target table in a higher-priority connection, use that connection directly and do not continue to lower-priority connections.\n4. If the target table is not found in the current database, continue checking other databases; do not give up.\n5. Stop only after every possible database has been checked, or after the target table has clearly been found.\n6. For general questions that do not involve database querying, answer normally.\n\nSQL generation rules (critical, follow strictly):\n7. [Field accuracy - absolute rule] Before generating SQL, you must call get_columns to fetch the real field list for the target table. Every field name in SQL must exactly match the field value returned by get_columns, including case. Do not invent, abbreviate, or infer field names. For example, if the field is channel, write channel, not pay_channel.\n8. Do not use a \"database.table\" qualified prefix when generating SQL; write only the table name itself.\n9. When reporting results, the connection name/ID and database name must strictly come from the actual parameters of the same get_tables call. Do not mix connectionId from one connection with dbName from another.\n10. If multiple databases have similar names, clearly tell the user which database contains the target table.\n11. [Required] The first line of every SQL code block must add a context declaration comment in exactly this format: -- @context connectionId=<connection ID> dbName=<database name>. connectionId and dbName must come from the same successful get_tables call, namely the actual parameter values you passed in that call. Example:\n```sql\n-- @context connectionId=1770778676549 dbName=mkefu_test\nSELECT * FROM users WHERE status = 1;\n```\n\nCurrent available connections: [{{connList}}]",
"ai_chat.panel.render_error.delete": "Delete this message",
"ai_chat.panel.render_error.description": "The rest of the conversation remains usable. You can delete this broken message before continuing.",
"ai_chat.panel.render_error.retry": "Retry render",
"ai_chat.panel.render_error.title": "This AI message failed to render and was isolated",
"ai_chat.panel.render_error.unknown": "Unknown render error",
"ai_chat.panel.session.default_title": "New chat",
"ai_chat.panel.status.analyzing_chain": "Analyzing chain and logic deeply",
"ai_chat.panel.status.deep_reasoning": "Model is reasoning deeply",
"ai_chat.panel.status.memory_compress_failed": "❌ Memory compression failed. Continuing with the original context...",
"ai_chat.panel.status.memory_compressing": "⚙️ Conversation is overloaded. Starting memory compression...",
"ai_chat.panel.status.memory_probe_summary": "[Automatic memory reshape] Long probe history and chat have been compressed into a summary:\n\n{{summary}}",
"ai_chat.panel.status.memory_summary": "[Automatic memory reshape] Long history has been compressed into a summary:\n\n{{summary}}",
"ai_chat.panel.status.model_connecting": "Connecting to model",
"ai_chat.panel.status.returning_runtime_data": "Returning runtime data to the model",
"ai_chat.panel.status.summarizing_probe": "Summarizing probe results",
"ai_chat.panel.status.waiting_instruction": "Waiting for operation instructions",
"ai_chat.panel.status.waiting_response": "Waiting for model response",
"ai_chat.panel.status.waking_engine": "Waking reasoning engine",
"ai_chat.panel.tool_error.connection_not_found": "Connection not found",
"ai_chat.panel.tool_error.fetch_all_columns_failed": "Failed to fetch database column summary: {{detail}}",
"ai_chat.panel.tool_error.fetch_columns_failed": "Failed to fetch column list: {{detail}}",
"ai_chat.panel.tool_error.fetch_databases_failed": "Failed to fetch database list: {{detail}}",
"ai_chat.panel.tool_error.fetch_foreign_keys_failed": "Failed to fetch foreign key relationships: {{detail}}",
"ai_chat.panel.tool_error.fetch_indexes_failed": "Failed to fetch index definitions: {{detail}}",
"ai_chat.panel.tool_error.fetch_table_ddl_failed": "Failed to fetch CREATE TABLE statement: {{detail}}",
"ai_chat.panel.tool_error.fetch_tables_failed": "Failed to fetch table list: {{detail}}",
"ai_chat.panel.tool_error.fetch_triggers_failed": "Failed to fetch trigger definitions: {{detail}}",
"ai_chat.panel.tool_error.mcp_failed": "MCP tool call failed",
"ai_chat.panel.tool_error.mcp_failed_with_detail": "MCP tool call failed: {{detail}}",
"ai_chat.panel.tool_error.preview_table_rows_failed": "Failed to preview table rows: {{detail}}",
"ai_chat.panel.tool_error.sql_blocked": "Security policy blocked this request: the current safety level does not allow {{operationType}} SQL. Show the SQL to the user and ask them to run it manually.",
"ai_chat.panel.tool_error.sql_execute_exception": "SQL execution exception: {{detail}}",
"ai_chat.panel.tool_error.sql_execute_failed": "SQL execution failed",
"ai_chat.panel.tool_error.table_name_required": "tableName cannot be empty",
"ai_chat.panel.tool_error.unknown_function": "Unknown function: {{functionName}}",
"ai_chat.panel.tool_result.columns_exact_fields": "⚠️ The following is the exact field list for table {{tableName}}. When generating SQL, use only these field values as column names, exactly as shown. Do not change, abbreviate, or invent field names.\nAvailable fields: {{fieldNames}}\nDetails: {{detailJson}}",
"ai_chat.quick_action.explain_schema": "🔍 Explain schema",
"ai_chat.quick_action.explain_schema.hint.with_context": "Explain fields and constraints",
"ai_chat.quick_action.explain_schema.prompt.with_context": "Explain the design intent and field meanings of these tables in detail: {{tables}}",
"ai_chat.quick_action.explain_schema.title": "Explain schema",
"ai_chat.quick_action.explain_sql": "🔍 Explain SQL",
"ai_chat.quick_action.explain_sql.hint.default": "Explain execution logic",
"ai_chat.quick_action.explain_sql.prompt.default": "Explain how this SQL statement runs:\n```sql\n\n```",
"ai_chat.quick_action.explain_sql.title": "Explain SQL",
"ai_chat.quick_action.generate_sql": "📝 Generate SQL",
"ai_chat.quick_action.generate_sql.hint.default": "Generate a query from natural language",
"ai_chat.quick_action.generate_sql.hint.with_context": "Generate a query from natural language",
"ai_chat.quick_action.generate_sql.prompt.default": "Generate a query from the current database table structure:",
"ai_chat.quick_action.generate_sql.prompt.with_context": "Generate a commonly used query for these table structures: {{tables}}",
"ai_chat.quick_action.generate_sql.title": "Generate SQL",
"ai_chat.quick_action.optimize": "⚡ Optimization tips",
"ai_chat.quick_action.optimize.hint.default": "Performance and index suggestions",
"ai_chat.quick_action.optimize.hint.with_context": "Indexes, normalization, and risk checks",
"ai_chat.quick_action.optimize.prompt.default": "Analyze the performance of this SQL statement and suggest optimizations:\n```sql\n\n```",
"ai_chat.quick_action.optimize.prompt.with_context": "Analyze the structure design of these tables and suggest index and query performance optimizations: {{tables}}",
"ai_chat.quick_action.optimize.title": "Optimization tips",
"ai_chat.quick_action.schema_analysis": "🏗️ Schema analysis",
"ai_chat.quick_action.schema_analysis.hint.default": "Analyze structural quality",
"ai_chat.quick_action.schema_analysis.hint.with_context": "Table relationships and dependency graph",
"ai_chat.quick_action.schema_analysis.prompt.default": "Analyze the current database table structure and suggest optimizations.",
"ai_chat.quick_action.schema_analysis.prompt.with_context": "Run a full Schema analysis for these tables, including data type choices, normalization review, and improvement suggestions: {{tables}}",
"ai_chat.quick_action.schema_analysis.title": "Schema analysis",
"ai_chat.quick_action.table_separator": ", ",
"ai_chat.system.context.custom_prompt.database": "The user has provided an additional database-session prompt. Follow it when it does not conflict with safety rules or factual constraints:\n{{content}}",
"ai_chat.system.context.custom_prompt.global": "The user has provided an additional global prompt. Follow it when it does not conflict with safety rules or factual constraints:\n{{content}}",
"ai_chat.system.context.custom_prompt.jvm": "The user has provided an additional JVM resource-analysis prompt. Follow it when it does not conflict with safety rules or factual constraints:\n{{content}}",
"ai_chat.system.context.custom_prompt.jvm_diagnostic": "The user has provided an additional JVM diagnostic prompt. Follow it when it does not conflict with safety rules or factual constraints:\n{{content}}",
"ai_chat.system.context.database_with_schema": "You are a professional database assistant. The current connection database type is {{dbType}}. Generate SQL using the {{dbType}} dialect. The user has attached table schema information; prioritize it when answering:\n\n{{ddlChunks}}",
"ai_chat.system.context.database_with_target": "You are a professional database assistant. The current connection database type is {{dbType}}, and the current database name is {{dbName}}. If the user needs a specific table or information about the current database, call the provided get_tables tool to actively fetch table information.",
"ai_chat.system.context.database_without_context": "You are a professional database assistant. The user has not selected any specific database or table in the interface as context.\n\nImportant rules:\n1. If you need to help the user find a target table, never guess the table name. Call tools to fetch real data.\n2. Complete workflow: get_connections -> get_databases -> get_tables -> get_columns -> generate SQL. Do not skip any step.\n3. Connection priority is critical. After retrieving connections, check them in this order:\n - First priority: host is localhost or 127.0.0.1, or the connection name indicates a local environment.\n - Second priority: name or host indicates a development/local environment, or host is a private-network IP such as 10.x, 192.168.x, or 172.16-31.x.\n - Third priority: other connections such as testing or production.\n If the target table is found in a higher-priority connection, use that connection directly and do not search lower-priority connections.\n4. If the target table is not found in the current database, continue querying other databases instead of giving up.\n5. Stop only when every possible database has been checked or the target table has clearly been found.\n6. For ordinary questions that do not involve database queries, answer normally.\n\nSQL generation rules:\n7. If the user mentions the current tab, current SQL, current editor, or this statement without pasting the content, call inspect_active_tab first to read the active tab context instead of guessing what is open.\n8. If the user asks which tabs are open or what queries are currently in the workspace, call inspect_workspace_tabs first, then decide which tab to inspect further.\n9. Field accuracy is an absolute rule. Before generating SQL, call get_columns to get the real target-table field list. Every field name in SQL must exactly match the field value returned by get_columns, including case. Do not compose, abbreviate, or infer field names.\n10. If the user asks about index optimization, join relationships, trigger side effects, constraints, or DDL details, call get_indexes, get_foreign_keys, get_triggers, and get_table_ddl as needed after get_columns, then provide the conclusion.\n11. When generating SQL, do not use a \"database.table\" qualified prefix; write only the table name.\n12. When reporting results, the connection name/ID and database name must come from the same actual get_tables call parameters. Do not mix connectionId from one connection with dbName from another.\n13. If multiple databases have similar names, clearly tell the user which database contains the target table.\n14. The first line of each SQL code block must be a context declaration comment in this exact format: -- @context connectionId=<connectionId> dbName=<dbName>. connectionId and dbName must come from the same successful get_tables call parameters. Example:\n```sql\n-- @context connectionId=1770778676549 dbName=mkefu_test\nSELECT * FROM users WHERE status = 1;\n```\n\nExisting connections: [{{connList}}]",
"ai_chat.system.context.jvm_diagnostic_policy.read_only": "Default to read-only diagnostic reasoning: only generate observe, trace, and troubleshooting commands, and never assume anything has already executed.",
"ai_chat.system.context.jvm_diagnostic_policy.writable": "Diagnostic commands may be generated, but provide a plan first and let the user decide whether to run it.",
"ai_chat.system.context.jvm_diagnostic_prompt": "You are GoNavi's JVM diagnostic assistant. The active tab is an Arthas-compatible diagnostic workspace. Produce a structured diagnostic plan that can be filled back into the diagnostic console.\n\nCurrent connection: {{connectionName}}\nTarget host: {{host}}\nDiagnostic transport: {{transport}}\nRuntime environment: {{environment}}\nConnection policy: {{connectionPolicy}}\nCommand permissions: observe={{observeAllowed}}, trace={{traceAllowed}}, mutating={{mutatingAllowed}}\n\nResponse rules:\n1. You may include a short analysis first, but the response must contain exactly one ```json code block.\n2. JSON fields are strictly limited to intent, transport, command, riskLevel, reason, and expectedSignals.\n3. transport must be the current value {{transport}}; do not invent another transport.\n4. command must be a single diagnostic command without a shell prompt, line-joined commands, multiple commands, or a code fence.\n5. riskLevel must be low, medium, or high.\n6. expectedSignals must be an array of strings describing the signals to observe after execution.\n7. If permissions do not allow a class of operation, do not output that class of command; if the request cannot be satisfied, state the limitation directly.",
"ai_chat.system.context.jvm_runtime_policy.read_only": "This is a read-only connection. Only analyze and generate change plans; never assume writes have already executed.",
"ai_chat.system.context.jvm_runtime_policy.writable": "This is a writable connection, but every modification must first produce a preview and wait for human confirmation.",
"ai_chat.system.context.jvm_runtime_prompt": "You are GoNavi's JVM runtime analysis assistant. The current context is not SQL; it is the JVM resource workspace.\n\nCurrent connection: {{connectionName}}\nTarget host: {{host}}\nProvider mode: {{providerMode}}\nRuntime environment: {{environment}}\nConnection policy: {{connectionPolicy}}\n{{resourcePathLine}}\n\nResponse rules:\n1. You may explain resource structure, risk, modification suggestions, and rollback suggestions.\n2. If the user asks for a JVM change plan, output exactly one ```json code block, and limit JSON fields to targetType, selector, action, payload, and reason.\n3. Prefer actions declared by the current resource snapshot or metadata in supportedActions. If none are declared, infer cautiously from the snapshot.\n4. Prefer the current resource path for selector.resourcePath. If the path is unknown, state that exact targeting is unavailable instead of inventing a path.\n5. payload may only use {\"format\":\"json\",\"value\":{...}} or {\"format\":\"text\",\"value\":\"...\"}; do not output scripts, commands, or bare values.\n6. Do not output scripts, commands, or statements such as \"already executed successfully\".",
"ai_chat.system.context.jvm_runtime_resource_path": "Current resource path: {{resourcePath}}",
"ai_chat.system.context.jvm_runtime_resource_path_unselected": "No specific resource path is currently selected.",
"ai_chat.system.context.no_connections": "no connections",
"ai_chat.system.context.permission.allowed": "allowed",
"ai_chat.system.context.permission.denied": "denied",
"ai_chat.system.context.skill_prompt": "The active Skill \"{{skillName}}\" ({{skillDescription}}) applies to this response. Follow its constraints and workflow:{{requiredTools}}\n{{content}}",
"ai_chat.system.context.skill_prompt.required_tools": "\nRequired tools: {{requiredTools}}",
"ai_chat.system.context.skill_prompt_without_description": "The active Skill \"{{skillName}}\" applies to this response. Follow its constraints and workflow:{{requiredTools}}\n{{content}}",
"ai_chat.system.inspection_guidance.inspect_ai_chat_readiness": "When the user asks why sending is unavailable, what configuration AI chat is missing, or whether the input area is ready, call inspect_ai_chat_readiness first to read the real pre-send state instead of judging from UI state alone.",
"ai_chat.system.inspection_guidance.inspect_ai_context": "When the user asks about the current AI context, associated tables, or attached table schemas, call inspect_ai_context first to read the mounted table-schema context instead of repeating from memory.",
"ai_chat.system.inspection_guidance.inspect_ai_context_budget": "When the user mentions slow AI, oversized context, too many table schemas, long tool results, unreliable answers, or needs context sizing before a complex task, call inspect_ai_context_budget first to read the size risks.",
"ai_chat.system.inspection_guidance.inspect_ai_guidance": "When the user asks which prompts are attached, which Skills are active, why you answered that way, or what the current database/JVM prompt is, call inspect_ai_guidance first to read the real prompt and Skill configuration.",
"ai_chat.system.inspection_guidance.inspect_ai_last_render_error": "When the user reports a blank AI message, failed bubble rendering, or a local message-block error without a full panel crash, call inspect_ai_last_render_error first to read the most recent isolated frontend render exception.",
"ai_chat.system.inspection_guidance.inspect_ai_message_flow": "When the user reports replies split into multiple bubbles, no continuation after tool calls, wrong stream state, or one turn not appended to the same bubble, call inspect_ai_message_flow first to read the real message structure and unresolved tool calls.",
"ai_chat.system.inspection_guidance.inspect_ai_providers": "When the user asks which providers are configured, why the model list is empty, whether an API Key is configured, or why sending is unavailable / no model is selected, call inspect_ai_providers first to read the real provider configuration.",
"ai_chat.system.inspection_guidance.inspect_ai_runtime": "When the user asks about the active model, safety level, available tools, or enabled Skills / MCP tools, call inspect_ai_runtime first to read the real runtime state instead of answering from memory or assumptions.",
"ai_chat.system.inspection_guidance.inspect_ai_safety": "When the user asks why writing is blocked, whether the current mode is read-only, whether DDL can run, or whether allowMutating should be passed, call inspect_ai_safety first to read the real safety boundary.",
"ai_chat.system.inspection_guidance.inspect_ai_sessions": "When the user mentions a previous AI conversation, a prior discussion, or which recent session covered this problem, call inspect_ai_sessions first to read the local AI session list and previews.",
"ai_chat.system.inspection_guidance.inspect_ai_setup_health": "When the user asks why AI is hard to use, requests a health check of the current AI configuration, or asks about obvious issues, call inspect_ai_setup_health first to get the overall state, then drill into providers, readiness, MCP, or guidance as needed.",
"ai_chat.system.inspection_guidance.inspect_ai_support_bundle": "When the user asks to export troubleshooting material or prepare an AI, MCP, connection, log, and context issue for development, call inspect_ai_support_bundle first to create a bundle without secrets or database passwords, then drill down from warnings and nextActions.",
"ai_chat.system.inspection_guidance.inspect_ai_tool_catalog": "When a question spans multiple features, you are unsure which built-in tool to call first, or the user asks about tool lists, parameter filling, or probe choice, call inspect_ai_tool_catalog first to read the real catalog, workflow, and parameter hints.",
"ai_chat.system.inspection_guidance.inspect_ai_upstream_logs": "When the user mentions upstream AI requests, request body, requestId, model payloads, tools not triggering, or upstream error details, call inspect_ai_upstream_logs first to read the redacted request log and payload-structure summary.",
"ai_chat.system.inspection_guidance.inspect_app_health": "When the user reports unstable AI behavior, requests an overall check, asks about obvious GoNavi AI issues, or wants connection, MCP, log, and reply-bubble diagnostics together, call inspect_app_health first to get the global health overview.",
"ai_chat.system.inspection_guidance.inspect_app_logs": "When the user mentions gonavi.log, recent logs, startup errors, MCP startup failures, or database connection failures, call inspect_app_logs first to read the real application log tail and filter by keyword if needed.",
"ai_chat.system.inspection_guidance.inspect_codebase_hotspots": "When the user mentions bloated multi-thousand-line files, splitting large components, which file to split next, or AI/MCP/UI change risk, call inspect_codebase_hotspots first to read hotspots, suggested slices, and test targets.",
"ai_chat.system.inspection_guidance.inspect_connection_capabilities": "When the user asks why database create/delete/rename is unavailable, why result editing is unavailable, or which frontend actions this data source supports, call inspect_connection_capabilities first to read the real capability matrix.",
"ai_chat.system.inspection_guidance.inspect_current_connection": "When the user asks about the current connection, current data source, connected database/address, or whether SSH/proxy is used, call inspect_current_connection first to read the active connection summary.",
"ai_chat.system.inspection_guidance.inspect_external_sql_directories": "When the user mentions external SQL directories, scripts in a directory, a SQL file location, or where the current SQL file came from, call inspect_external_sql_directories first to read the real external SQL directory assets.",
"ai_chat.system.inspection_guidance.inspect_external_sql_file": "When the user provides an external SQL file path or asks to inspect report.sql/job.sql in a directory, call inspect_external_sql_file first to read the real file content; if it is open in the editor, combine it with inspect_active_tab.",
"ai_chat.system.inspection_guidance.inspect_mcp_authoring_guide": "When the user does not know how to fill command/args/env/timeout for a new MCP server, needs a node/uvx/python template, or asks why a startup command cannot be entered as one full line, call inspect_mcp_authoring_guide first; if a draft exists, call inspect_mcp_draft.",
"ai_chat.system.inspection_guidance.inspect_mcp_draft": "When the user pastes an MCP README startup command or command/args/env/timeout draft, or asks how to fill an MCP command in GoNavi, call inspect_mcp_draft first to return splitting, launch preview, suggestedServerSeed, configuration errors/warnings, and nextActions.",
"ai_chat.system.inspection_guidance.inspect_mcp_runtime_failures": "When the user mentions a failed new MCP test, zero discovered tools, MCP tool-call failures, stdio disconnects, Docker MCP exits, or HTTP MCP startup failures, call inspect_mcp_runtime_failures first to read real runtime failure logs and service discovery state.",
"ai_chat.system.inspection_guidance.inspect_mcp_setup": "When the user asks about MCP configuration, whether Claude/Codex is connected to the GoNavi MCP, why an external client cannot use it, or which MCP services are enabled, call inspect_mcp_setup first to read the real configuration and external-client access state.",
"ai_chat.system.inspection_guidance.inspect_mcp_tool_schema": "When the user asks how to fill MCP tool parameters, reports an argument error, or needs to write arguments JSON, call inspect_mcp_tool_schema first to read the real inputSchema; if the alias is unknown, call inspect_mcp_setup first.",
"ai_chat.system.inspection_guidance.inspect_recent_connection_failures": "When the user asks why a connection fails, mentions cooldown, validation failure, SSH tunnel issues, or multiStatements / parameter compatibility exceptions, call inspect_recent_connection_failures first to read the real connection failure summary.",
"ai_chat.system.inspection_guidance.inspect_recent_sql_activity": "When the user asks what ran recently, whether data was just deleted, whether recent work was mostly reads or writes, or which database had the most errors, call inspect_recent_sql_activity first to read the recent SQL activity summary.",
"ai_chat.system.inspection_guidance.inspect_redis_topology": "When the user mentions Redis Sentinel/Cluster, Sentinel master, Redis Cluster multi-database behavior, Redis DB switching failure, or how to fill multiple Redis nodes, call inspect_redis_topology first to read the real topology, nodes, authentication state, and risk hints.",
"ai_chat.system.inspection_guidance.inspect_saved_connections": "When the user asks which connections are stored locally, wants to find a MySQL/PostgreSQL/Redis connection, or asks which connection uses SSH/proxy, call inspect_saved_connections first to read the real local connection list.",
"ai_chat.system.inspection_guidance.inspect_saved_queries": "When the user mentions saved queries, SQL history, a previous statement, or finding an earlier script, call inspect_saved_queries first to read locally saved queries, then decide whether to verify fields or reuse SQL.",
"ai_chat.system.inspection_guidance.inspect_shortcuts": "When the user asks about shortcuts, Win/Mac key differences, result-area / AI panel / SQL execution combinations, or whether defaults were changed, call inspect_shortcuts first to read the real shortcut configuration and platform differences.",
"ai_chat.system.inspection_guidance.inspect_sql_editor_transaction": "When the user asks about SQL editor manual commit/autocommit, uncommitted transactions, whether DML auto-commits, or transaction semantics, call inspect_sql_editor_transaction first to read the real commit settings and pending transactions.",
"ai_chat.system.inspection_guidance.inspect_sql_risk": "When the user asks you to execute, delete, update, run DDL, run bulk SQL, or asks whether a SQL statement can run / is dangerous, call inspect_sql_risk first to check statement count, write/DDL risk, WHERE conditions, and safety policy; explain and confirm high risk first.",
"ai_chat.system.inspection_guidance.inspect_sql_snippets": "When the user mentions SQL snippets, snippet templates, template prefixes, or common templates, call inspect_sql_snippets first to read the local SQL snippet library instead of inventing existing templates from memory.",
"ai_chat.tools.mcp_fallback_description": "MCP tool {{toolName}} provided by {{serverName}}",
"ai_chat.welcome.description.default": "I am your database assistant. I can help generate SQL queries, analyze schemas, explain execution logic, and optimize database performance.",
"ai_chat.welcome.description.with_context": "{{count}} table structures are linked. Use the quick actions below to start analysis.",
"ai_chat.welcome.suggestion.channel_distribution.default": "Order channel distribution for the past 7 days",
"ai_chat.welcome.suggestion.channel_distribution.with_context": "Key channel distribution for the past 7 days",
"ai_chat.welcome.suggestion.cleanup.default": "Help me write SQL to clean abnormal data",
"ai_chat.welcome.suggestion.cleanup.with_context": "Help me write SQL to disable abnormal channels",
"ai_chat.welcome.suggestion.divider": "Or ask directly",
"ai_chat.welcome.suggestion.low_rows.default": "Why does the current result have so few rows?",
"ai_chat.welcome.suggestion.low_rows.with_context": "Why does {{table}} have only a few rows?",
"ai_chat.welcome.title": "Hi, I am GoNavi AI",
"ai_service.backend.builtin_prompt.body.data_analyze": "You are the GoNavi AI assistant, a senior data analysis expert with sharp business instincts. Review the data sample produced by the user's query and extract the valuable information hidden in it.\n\nInsight goals:\n1. Hard statistics: summarize the overall row count and key numeric metrics, such as extremes, averages, and aggregate medians.\n2. Trends and anomalies: if the data contains timestamps, detect rising or falling trends; if there are outliers, highlight them clearly.\n3. Business value mining: do not merely translate the data. Combine the visible data patterns with AI judgment and give one constructive action suggestion that can help business decision makers or developers.\n4. Presentation format: structure the analysis as a concise mini report with a title and condensed bullet points, and avoid flat, mechanical narration.",
"ai_service.backend.builtin_prompt.body.general_chat": "You are the GoNavi AI assistant, a dedicated expert system deeply integrated into the GoNavi database and cache client.\nYour goal is to be the most useful second brain for developers, DBAs, and data scientists by providing professional, precise, and forward-looking data-side solutions.\n\nCore persona and interaction tone:\n- Professionally grounded: make sound judgments about database products such as MySQL, PostgreSQL, DuckDB, and Redis, including execution plans, indexing, and storage behavior.\n- Direct and practical: avoid empty chatter. When the user's intent is clear, lead with elegant code or steps they can use directly.\n- Structured and readable: use Markdown headings, emphasis, and fenced code blocks with the correct language identifier, such as sql, json, or bash.\n- Production safety first: if a SQL statement may create serious risk, such as DELETE or UPDATE without a WHERE clause or a query that can lock a large production table, raise a clear warning before proceeding.\n\nCapability map:\n1. Natural-language to data operations: translate human intent into accurate queries or commands.\n2. Execution reasoning: explain the logic and performance implications behind queries.\n3. Expert optimization: identify bottlenecks and propose indexing or rewrite strategies.\n4. Data insight: extract meaningful patterns from result sets instead of merely restating rows.\n5. Architecture review: evaluate schema design limitations and suggest evolution paths that can withstand data growth.\n\nInteraction rules:\n- Use professional, collaborative language and adapt to the user's selected interface language.\n- When asked for database code, combine the answer with the relevant engine's best practices. If the exact version is unknown, use a standards-oriented baseline and note important version differences, such as MySQL 8 window functions.\n- Do not refuse too quickly: if the user asks for SQL but no detailed DDL is attached, use the conversation context and any plain table-name list to infer the likely target table. If inference is not possible, explain what is known and ask which table they want to query.",
"ai_service.backend.builtin_prompt.body.schema_insight": "You are the GoNavi AI assistant, a chief database architect responsible for the full database lifecycle. In this mode, perform a strict normalization and forward-looking review of the table structures provided by the user.\n\nReview lens:\n1. Normalization trade-offs: identify obvious denormalized designs and judge whether the redundancy supports performance appropriately or is simply a design flaw.\n2. Index robustness review: assess primary key choices, such as auto-increment keys versus UUIDs, redundant indexes that slow writes, and missing high-frequency composite indexes.\n3. Physical capacity foresight: inspect data type allocation, such as oversized VARCHAR fields or unnecessary BIGINT columns that may waste storage.\n4. Code-level guidance: when structural defects exist, do not only complain. Provide concrete ALTER TABLE improvement scripts where appropriate.",
"ai_service.backend.builtin_prompt.body.sql_explain": "You are the GoNavi AI assistant, a senior database engineer with deep practical experience. Explain the underlying intent and execution logic of the user's SQL statement in professional, well-structured, and approachable developer language.\n\nExplanation guidelines:\n1. Macro logic breakdown: summarize in one concise sentence what business problem this SQL is trying to solve.\n2. Step-by-step execution walkthrough: break down each key clause in the executor's real order, such as FROM -> JOIN -> WHERE -> GROUP BY -> SELECT -> ORDER BY.\n3. Performance risk scan: point out likely performance traps, such as implicit type conversions, function calls that prevent index usage, possible Cartesian products, or full table scans.\n4. Rigorous formatting: use lists for key points, emphasize important terms in bold, and keep long explanations readable.",
"ai_service.backend.builtin_prompt.body.sql_generate": "You are the GoNavi AI assistant, an expert database developer and SQL query builder. Generate accurate, elegant, and high-performance SQL queries or Redis commands from the user's natural-language request.\n\nStrict output rules:\n1. Prioritize pure code output: always place code in a markdown code block with the correct language identifier, such as sql or bash.\n2. Stay concise: avoid excessive preamble and get straight to the answer.\n3. Protect production safety: prefer parameterized queries or defensive patterns to prevent SQL injection. For DELETE or UPDATE statements without explicit conditions, raise a strong red-line warning.\n4. Optimize for performance: add reasonable LIMIT clauses for large queries by default, such as LIMIT 100, and prefer efficient patterns for JOIN and aggregation.\n5. Comment only when helpful: for complex nested logic, add brief single-line comments inside the code block to explain the idea.",
"ai_service.backend.builtin_prompt.body.sql_optimize": "You are the GoNavi AI assistant, a full-stack performance engineer and senior DBA with experience leading high-concurrency systems at large scale. Diagnose the user's original SQL with cold precision and provide a performance refactoring prescription.\n\nDiagnosis and prescription requirements:\n1. Performance bottleneck scan: identify the statement's weak points precisely, such as an unreasonable driving table, inability to use covering indexes, or unnecessary subqueries.\n2. Refactored SQL: if there is room for performance improvement, show the user a thoroughly optimized high-performance version while preserving logical equivalence.\n3. Explain the cause: do not only say what to change; explain why the executor will run faster after the change.\n4. Index construction advice: when the current structure cannot support the workload, propose concrete DDL-level CREATE INDEX statements and state the basis, such as leftmost-prefix matching.\n5. Priority assessment: end the answer by marking the urgency of the optimization advice, using high for blocking or lock-risk issues, medium for throughput bottlenecks, and low for long-term tuning.",
"ai_service.backend.builtin_prompt.title.data_analyze": "Data insight analyst",
"ai_service.backend.builtin_prompt.title.general_chat": "General chat assistant",
"ai_service.backend.builtin_prompt.title.schema_insight": "Schema reviewer",
"ai_service.backend.builtin_prompt.title.sql_explain": "SQL explainer",
"ai_service.backend.builtin_prompt.title.sql_generate": "SQL generator",
"ai_service.backend.builtin_prompt.title.sql_optimize": "SQL optimizer",
"ai_service.backend.database_context.column_comment": "Comment",
"ai_service.backend.database_context.column_name": "Column",
"ai_service.backend.database_context.column_nullable": "Nullable",
"ai_service.backend.database_context.column_primary_key": "Primary key",
"ai_service.backend.database_context.column_type": "Type",
"ai_service.backend.database_context.database_name": "Database name: {{name}}",
"ai_service.backend.database_context.database_type": "Database type: {{type}}",
"ai_service.backend.database_context.indexes": "**Indexes:**",
"ai_service.backend.database_context.row_count": "[about {{count}} rows]",
"ai_service.backend.database_context.sample_data": "**Sample data ({{count}} rows):**",
"ai_service.backend.database_context.table_heading": "#### Table: {{table}}",
"ai_service.backend.database_context.table_schema": "### Table structure",
"ai_service.backend.database_context.title": "## Current database context",
"ai_service.backend.database_context.unique_index": " (unique)",
"ai_service.backend.database_context.value_no": "No",
"ai_service.backend.database_context.value_yes": "Yes",
"ai_service.backend.error.active_provider_not_found": "Active AI Provider was not found",
"ai_service.backend.error.config_dir_create_failed": "Failed to create configuration directory: {{detail}}",
"ai_service.backend.error.config_load_failed": "Failed to load AI configuration: {{detail}}",
"ai_service.backend.error.config_read_failed": "Failed to read AI configuration: {{detail}}",
"ai_service.backend.error.config_rewrite_failed": "Failed to rewrite AI configuration: {{detail}}",
"ai_service.backend.error.config_serialize_failed": "Failed to serialize AI configuration: {{detail}}",
"ai_service.backend.error.config_write_failed": "Failed to write AI configuration: {{detail}}",
"ai_service.backend.error.daily_secret_store_unavailable": "Daily secret store is unavailable: {{detail}}",
"ai_service.backend.error.editable_provider_not_found": "AI Provider to edit was not found: {{detail}}",
"ai_service.backend.error.mcp_command_required": "MCP command cannot be empty",
"ai_service.backend.error.mcp_http_executable_resolve_failed": "Failed to resolve the GoNavi executable: {{detail}}",
"ai_service.backend.error.mcp_http_health_status_failed": "Healthz returned HTTP {{statusCode}}",
"ai_service.backend.error.mcp_http_process_exited": "GoNavi MCP HTTP service stopped unexpectedly: {{detail}}",
"ai_service.backend.error.mcp_http_start_failed": "Failed to start GoNavi MCP HTTP service: {{detail}}",
"ai_service.backend.error.mcp_http_stop_failed": "Failed to stop GoNavi MCP HTTP service: {{detail}}",
"ai_service.backend.error.mcp_http_subprocess_exited": "MCP HTTP subprocess exited",
"ai_service.backend.error.mcp_http_token_generate_failed": "Failed to generate MCP HTTP Token: {{detail}}",
"ai_service.backend.error.mcp_server_disabled": "MCP server is disabled: {{name}}",
"ai_service.backend.error.mcp_server_not_found": "MCP server was not found: {{serverID}}",
"ai_service.backend.error.mcp_tool_alias_invalid": "Invalid MCP tool alias: {{alias}}",
"ai_service.backend.error.mcp_tool_arguments_parse_failed": "Failed to parse MCP tool arguments: {{detail}}",
"ai_service.backend.error.mcp_transport_unsupported": "Unsupported MCP transport: {{transport}}",
"ai_service.backend.error.models_http_status_failed": "Model list endpoint returned an unexpected status (HTTP {{status}}){{body}}",
"ai_service.backend.error.models_parse_failed": "Failed to parse model list: {{detail}}",
"ai_service.backend.error.models_remote_unsupported": "Remote model listing is not supported for the current provider",
"ai_service.backend.error.models_request_create_failed": "Failed to create model list request: {{detail}}",
"ai_service.backend.error.models_request_failed": "Failed to request model list: {{detail}}",
"ai_service.backend.error.provider_auth_failed": "API key is invalid or the request was rejected (HTTP {{status}}){{body}}",
"ai_service.backend.error.provider_http_server_error": "Upstream server returned an internal error (HTTP {{status}}){{body}}",
"ai_service.backend.error.provider_http_status_failed": "Endpoint returned an unexpected status (HTTP {{status}}){{body}}",
"ai_service.backend.error.provider_not_configured": "AI Provider is not configured. Configure one in Settings first.",
"ai_service.backend.error.provider_request_create_failed": "Failed to create request: {{detail}}",
"ai_service.backend.error.provider_request_serialize_failed": "Failed to serialize request: {{detail}}",
"ai_service.backend.error.provider_secret_bundle_parse_failed": "Failed to parse provider secret bundle: {{detail}}",
"ai_service.backend.error.provider_secret_delete_failed": "Failed to delete Provider secret: {{detail}}",
"ai_service.backend.error.provider_secret_load_failed": "Failed to load AI Provider secret (provider={{provider}}): {{detail}}",
"ai_service.backend.error.provider_secret_read_failed": "Failed to read Provider secret: {{detail}}",
"ai_service.backend.error.provider_secret_save_failed": "Failed to save Provider secret: {{detail}}",
"ai_service.backend.error.provider_secret_saved_read_failed": "Failed to read saved Provider secret: {{detail}}",
"ai_service.backend.error.provider_test_failed": "Connection test failed: {{detail}}",
"ai_service.backend.error.secret_store_unavailable": "Secret store is unavailable: {{detail}}",
"ai_service.backend.error.session_corrupt": "Session data is corrupted",
"ai_service.backend.error.session_delete_failed": "Failed to delete session: {{detail}}",
"ai_service.backend.error.session_missing": "Session does not exist",
"ai_service.backend.error.session_provider_messages_serialize_failed": "Failed to serialize session provider messages: {{detail}}",
"ai_service.backend.error.session_serialize_failed": "Failed to serialize session data: {{detail}}",
"ai_service.backend.error.session_write_failed": "Failed to save session: {{detail}}",
"ai_service.backend.error.sessions_dir_create_failed": "Failed to create sessions directory: {{detail}}",
"ai_service.backend.error.volcengine_coding_models_empty": "The current endpoint did not return any available Volcengine Coding Plan models. Check account access or switch to the \"Volcengine Ark\" provider",
"ai_service.backend.message.mcp_test_success": "MCP server connection succeeded; discovered {{count}} tools",
"ai_service.backend.message.provider_test_success": "Endpoint connectivity test succeeded",
"ai_service.backend.message.skill_unnamed": "Unnamed Skill",
"ai_service.backend.provider.image_fallback_prompt": "Please describe and analyze this image.",
"ai_service.backend.provider.image_omitted_notice": "[Image omitted: the current model or upstream API does not support image input. Switch to a vision-capable model and resend the image.]",
"ai_service.backend.warning.sql_delete_without_where": "High-risk SQL: DELETE without WHERE will delete all rows",
"ai_service.backend.warning.sql_drop": "High-risk SQL: DROP permanently deletes database objects",
"ai_service.backend.warning.sql_truncate": "High-risk SQL: TRUNCATE removes all rows from the table",
"ai_service.backend.warning.sql_update_without_where": "High-risk SQL: UPDATE without WHERE will update all rows",
"ai_settings.action.back": "Back",
"ai_settings.action.connection_ok": "Connection OK",
"ai_settings.action.retest": "Test again",
"ai_settings.action.save": "Save",
"ai_settings.action.test": "Test connection",
"ai_settings.clipboard.error.unsupported": "Copying to the clipboard is not supported in this environment",
"ai_settings.context.description": "Control how much database context is sent to AI",
"ai_settings.context.schema_only.desc": "Only table and column structure is sent to AI",
"ai_settings.context.schema_only.label": "Schema only",
"ai_settings.context.with_results.desc": "Send recent query results as context",
"ai_settings.context.with_results.label": "With query results",
"ai_settings.context.with_samples.desc": "Include a small amount of sample data to help AI understand data patterns",
"ai_settings.context.with_samples.label": "With samples",
"ai_settings.form.api_endpoint": "API Endpoint (URL)",
"ai_settings.form.api_endpoint_placeholder.codebuddy": "Leave blank to use the default CodeBuddy CLI gateway",
"ai_settings.form.api_endpoint_required": "Enter a valid endpoint URL",
"ai_settings.form.api_format": "API format",
"ai_settings.form.api_key": "API Key",
"ai_settings.form.api_key.codebuddy_hint": "Leave blank to use the signed-in CodeBuddy CLI account on this machine; if filled, the current credential overrides it.",
"ai_settings.form.api_key.codebuddy_optional": "API Key / Auth Token (optional)",
"ai_settings.form.api_key_keep_placeholder": "Leave blank to keep using the saved secret",
"ai_settings.form.api_key_placeholder": "sk-... / your API Key",
"ai_settings.form.api_key_placeholder.codebuddy": "Leave blank to use the local sign-in, or enter API Key / Token to override",
"ai_settings.form.api_key_required": "Enter an API Key",
"ai_settings.form.api_key_saved_hint": "An API Key is already saved. Leave blank to keep it, or enter a new value to replace it.",
"ai_settings.form.clear_saved_api_key": "Clear saved API Key",
"ai_settings.form.inline_completion_model": "Auto-completion model",
"ai_settings.form.inline_completion_model_hint": "Choose a smaller, faster model for SQL editor ghost completions. Leave blank to follow the chat model.",
"ai_settings.form.inline_completion_model_placeholder": "Follow chat model",
"ai_settings.form.model_list": "Available model list (optional)",
"ai_settings.form.model_list_placeholder": "Configure model IDs; leave blank to fetch them from the server",
"ai_settings.form.model_list_placeholder.codebuddy": "Optional: prefill common models; leave blank to let CodeBuddy CLI or the service choose automatically",
"ai_settings.form.model_list_placeholder.cursor": "Optional: prefill common Cursor model IDs; leave blank to use Cursor's default model automatically",
"ai_settings.form.provider_name": "Provider name",
"ai_settings.form.provider_name_placeholder": "Example: My OpenAI-compatible endpoint / private model",
"ai_settings.form.provider_name_required": "Enter a name",
"ai_settings.form.section.auth_connection": "Authentication & connection",
"ai_settings.form.section.basic": "Basic information",
"ai_settings.form.section.inline_completion": "SQL auto-completion",
"ai_settings.form.section.service_type": "Service type",
"ai_settings.mcp_http.error.control_unsupported_runtime": "The current runtime does not support MCP HTTP server control",
"ai_settings.mcp_http.error.start_unsupported_version": "This version does not support starting the MCP HTTP server",
"ai_settings.mcp_http.error.stop_unsupported_version": "This version does not support stopping the MCP HTTP server",
"ai_settings.mcp_http.message.authorization_header_copied": "Authorization Header copied",
"ai_settings.mcp_http.message.authorization_header_required": "Start the MCP HTTP server first to generate the Authorization Header",
"ai_settings.mcp_http.message.started": "GoNavi MCP HTTP server started",
"ai_settings.mcp_http.message.stopped": "GoNavi MCP HTTP server stopped",
"ai_settings.mcp_http.message.toggle_failed": "Failed to switch GoNavi MCP HTTP server",
"ai_settings.mcp_http.message.url_copied": "MCP HTTP URL copied",
"ai_settings.mcp_http.message.url_unavailable": "No MCP HTTP URL is available to copy",
"ai_settings.mcp_http.panel.addr_label": "Listen address / port",
"ai_settings.mcp_http.panel.authorization_placeholder": "Bearer gnv_xxx (leave empty to generate automatically)",
"ai_settings.mcp_http.panel.copy_authorization": "Copy Authorization",
"ai_settings.mcp_http.panel.copy_url": "Copy URL",
"ai_settings.mcp_http.panel.description": "For remote agents like OpenClaw/Hermans. By default exposes schema tools and limited execute_sql sample queries, still under AI safety controls.",
"ai_settings.mcp_http.panel.running_hint": "The service is running. Configure the URL and Authorization Header in the remote MCP client.",
"ai_settings.mcp_http.panel.status.running": "Running",
"ai_settings.mcp_http.panel.status.stopped": "Stopped",
"ai_settings.mcp_http.panel.stopped_hint": "You can customize the local listen port and Bearer Token. If Authorization is empty, a random Token is generated on startup.",
"ai_settings.mcp_http.panel.switch.off": "Off",
"ai_settings.mcp_http.panel.switch.on": "On",
"ai_settings.mcp_http.panel.title": "GoNavi MCP HTTP service",
"ai_settings.mcp_http.status.not_running": "GoNavi MCP HTTP server is not running",
"ai_settings.mcp_server.argument_hints.action_separator": "; ",
"ai_settings.mcp_server.argument_hints.argument_details": "Argument details",
"ai_settings.mcp_server.argument_hints.business.access_token.detail": "Pass authentication data only when the README requires a command argument; prefer environment variables.",
"ai_settings.mcp_server.argument_hints.business.access_token.label": "Access Token",
"ai_settings.mcp_server.argument_hints.business.access_token.value_hint": "Use the real value locally; do not paste it into chat or screenshots.",
"ai_settings.mcp_server.argument_hints.business.api_key.detail": "Pass authentication data only when the README requires a command argument; prefer environment variables.",
"ai_settings.mcp_server.argument_hints.business.api_key.label": "API Key",
"ai_settings.mcp_server.argument_hints.business.api_key.value_hint": "Use the real value locally; do not paste it into chat or screenshots.",
"ai_settings.mcp_server.argument_hints.business.base_url.detail": "Specifies a service address or API entry point needed by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.base_url.label": "Base URL",
"ai_settings.mcp_server.argument_hints.business.base_url.value_hint": "Enter the full address without embedding secrets in the URL.",
"ai_settings.mcp_server.argument_hints.business.config.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.config.label": "Config file",
"ai_settings.mcp_server.argument_hints.business.config.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.config_file.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.config_file.label": "Config file",
"ai_settings.mcp_server.argument_hints.business.config_file.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.dir.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.dir.label": "Directory",
"ai_settings.mcp_server.argument_hints.business.dir.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.directory.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.directory.label": "Allowed directory",
"ai_settings.mcp_server.argument_hints.business.directory.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.endpoint.detail": "Specifies a service address or API entry point needed by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.endpoint.label": "Endpoint",
"ai_settings.mcp_server.argument_hints.business.endpoint.value_hint": "Enter the full address without embedding secrets in the URL.",
"ai_settings.mcp_server.argument_hints.business.executable_path.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.executable_path.label": "Browser or executable path",
"ai_settings.mcp_server.argument_hints.business.executable_path.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.headless.detail": "Controls runtime behavior for the launched MCP process.",
"ai_settings.mcp_server.argument_hints.business.headless.label": "Headless mode",
"ai_settings.mcp_server.argument_hints.business.headless.value_hint": "Usually a switch argument; confirm whether an extra value is required.",
"ai_settings.mcp_server.argument_hints.business.host.detail": "Configures a host, port, or network option used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.host.label": "Host address",
"ai_settings.mcp_server.argument_hints.business.host.value_hint": "Use the host or port documented by the README.",
"ai_settings.mcp_server.argument_hints.business.inferred_endpoint.detail": "Specifies a service address or API entry point needed by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.inferred_endpoint.label": "Address / endpoint",
"ai_settings.mcp_server.argument_hints.business.inferred_endpoint.value_hint": "Enter the full address without embedding secrets in the URL.",
"ai_settings.mcp_server.argument_hints.business.inferred_mode.detail": "Controls the transport, profile, permission, or runtime mode for the MCP service.",
"ai_settings.mcp_server.argument_hints.business.inferred_mode.label": "Mode argument",
"ai_settings.mcp_server.argument_hints.business.inferred_mode.value_hint": "Use the enum value or switch semantics documented by the README.",
"ai_settings.mcp_server.argument_hints.business.inferred_path.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.inferred_path.label": "Path / config",
"ai_settings.mcp_server.argument_hints.business.inferred_path.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.mode.detail": "Controls the transport, profile, permission, or runtime mode for the MCP service.",
"ai_settings.mcp_server.argument_hints.business.mode.label": "Run mode",
"ai_settings.mcp_server.argument_hints.business.mode.value_hint": "Use the enum value or switch semantics documented by the README.",
"ai_settings.mcp_server.argument_hints.business.password.detail": "Pass authentication data only when the README requires a command argument; prefer environment variables.",
"ai_settings.mcp_server.argument_hints.business.password.label": "Password",
"ai_settings.mcp_server.argument_hints.business.password.value_hint": "Use the real value locally; do not paste it into chat or screenshots.",
"ai_settings.mcp_server.argument_hints.business.path.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.path.label": "Path",
"ai_settings.mcp_server.argument_hints.business.path.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.port.detail": "Configures a host, port, or network option used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.port.label": "Port",
"ai_settings.mcp_server.argument_hints.business.port.value_hint": "Use the host or port documented by the README.",
"ai_settings.mcp_server.argument_hints.business.profile.detail": "Controls the transport, profile, permission, or runtime mode for the MCP service.",
"ai_settings.mcp_server.argument_hints.business.profile.label": "Profile",
"ai_settings.mcp_server.argument_hints.business.profile.value_hint": "Use the enum value or switch semantics documented by the README.",
"ai_settings.mcp_server.argument_hints.business.read_only.detail": "Controls the transport, profile, permission, or runtime mode for the MCP service.",
"ai_settings.mcp_server.argument_hints.business.read_only.label": "Read-only mode",
"ai_settings.mcp_server.argument_hints.business.read_only.value_hint": "Use the enum value or switch semantics documented by the README.",
"ai_settings.mcp_server.argument_hints.business.readonly.detail": "Controls the transport, profile, permission, or runtime mode for the MCP service.",
"ai_settings.mcp_server.argument_hints.business.readonly.label": "Read-only mode",
"ai_settings.mcp_server.argument_hints.business.readonly.value_hint": "Use the enum value or switch semantics documented by the README.",
"ai_settings.mcp_server.argument_hints.business.repo.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.repo.label": "Repository path",
"ai_settings.mcp_server.argument_hints.business.repo.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.root.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.root.label": "Root directory",
"ai_settings.mcp_server.argument_hints.business.root.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.secret.detail": "Pass authentication data only when the README requires a command argument; prefer environment variables.",
"ai_settings.mcp_server.argument_hints.business.secret.label": "Secret",
"ai_settings.mcp_server.argument_hints.business.secret.value_hint": "Use the real value locally; do not paste it into chat or screenshots.",
"ai_settings.mcp_server.argument_hints.business.short_config.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.short_config.label": "Config file",
"ai_settings.mcp_server.argument_hints.business.short_config.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business.token.detail": "Pass authentication data only when the README requires a command argument; prefer environment variables.",
"ai_settings.mcp_server.argument_hints.business.token.label": "Token",
"ai_settings.mcp_server.argument_hints.business.token.value_hint": "Use the real value locally; do not paste it into chat or screenshots.",
"ai_settings.mcp_server.argument_hints.business.transport.detail": "Controls the transport, profile, permission, or runtime mode for the MCP service.",
"ai_settings.mcp_server.argument_hints.business.transport.label": "Transport mode",
"ai_settings.mcp_server.argument_hints.business.transport.value_hint": "Use the enum value or switch semantics documented by the README.",
"ai_settings.mcp_server.argument_hints.business.url.detail": "Specifies a service address or API entry point needed by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.url.label": "Service URL",
"ai_settings.mcp_server.argument_hints.business.url.value_hint": "Enter the full address without embedding secrets in the URL.",
"ai_settings.mcp_server.argument_hints.business.workspace.detail": "Points to a local file, directory, repository, or executable used by the MCP service.",
"ai_settings.mcp_server.argument_hints.business.workspace.label": "Workspace directory",
"ai_settings.mcp_server.argument_hints.business.workspace.value_hint": "Use an absolute local path and grant the smallest necessary scope.",
"ai_settings.mcp_server.argument_hints.business_arguments": "Detected business arguments",
"ai_settings.mcp_server.argument_hints.category.endpoint": "Endpoint",
"ai_settings.mcp_server.argument_hints.category.generic": "Business",
"ai_settings.mcp_server.argument_hints.category.mode": "Mode",
"ai_settings.mcp_server.argument_hints.category.network": "Network",
"ai_settings.mcp_server.argument_hints.category.path": "Path",
"ai_settings.mcp_server.argument_hints.category.runtime": "Runtime",
"ai_settings.mcp_server.argument_hints.category.secret": "Sensitive",
"ai_settings.mcp_server.argument_hints.command_field_warning": "The startup command field still contains {{count}} arguments: {{args}}. Keep only {{command}} in command and move the rest to command arguments.",
"ai_settings.mcp_server.argument_hints.current_command": "Current command {{command}} argument hints",
"ai_settings.mcp_server.argument_hints.detail.docker_cleanup.detail": "Automatically remove temporary containers after testing and daily use to avoid leftovers.",
"ai_settings.mcp_server.argument_hints.detail.docker_cleanup.label": "Clean up container after exit",
"ai_settings.mcp_server.argument_hints.detail.docker_cleanup.value_hint": "This is a switch argument and does not need an extra value.",
"ai_settings.mcp_server.argument_hints.detail.docker_image_or_arg.detail": "This is the image name in docker run or a positional argument passed to the MCP service inside the container.",
"ai_settings.mcp_server.argument_hints.detail.docker_image_or_arg.label": "Docker image or container argument",
"ai_settings.mcp_server.argument_hints.detail.docker_image_or_arg.value_hint": "The image name should come from the MCP README; arguments after the image are passed to the container entrypoint.",
"ai_settings.mcp_server.argument_hints.detail.docker_interactive.detail": "MCP stdio needs container stdin to stay open; otherwise tool discovery may disconnect right after startup.",
"ai_settings.mcp_server.argument_hints.detail.docker_interactive.label": "Keep standard input",
"ai_settings.mcp_server.argument_hints.detail.docker_interactive.value_hint": "This is a key Docker MCP argument.",
"ai_settings.mcp_server.argument_hints.detail.docker_run.detail": "Starts a container to run the MCP Server.",
"ai_settings.mcp_server.argument_hints.detail.docker_run.label": "Docker run subcommand",
"ai_settings.mcp_server.argument_hints.detail.docker_run.value_hint": "Usually the first argument after docker.",
"ai_settings.mcp_server.argument_hints.detail.npm_package_or_arg.detail": "Usually the npm package name from the README, but it may also be a package-specific business argument.",
"ai_settings.mcp_server.argument_hints.detail.npm_package_or_arg.label": "MCP package or positional argument",
"ai_settings.mcp_server.argument_hints.detail.npm_package_or_arg.value_hint": "The package name usually goes after -y and before --stdio; business arguments follow the README.",
"ai_settings.mcp_server.argument_hints.detail.positional.detail": "This argument has no flag name; GoNavi passes it to the MCP process unchanged in the current order.",
"ai_settings.mcp_server.argument_hints.detail.positional.label": "Positional argument",
"ai_settings.mcp_server.argument_hints.detail.positional.value_hint": "Check the README to decide whether it is a package name, path, image name, or business argument.",
"ai_settings.mcp_server.argument_hints.detail.python_module_flag.detail": "Indicates that the next argument is a Python module name, not a script path.",
"ai_settings.mcp_server.argument_hints.detail.python_module_flag.label": "Python module launch",
"ai_settings.mcp_server.argument_hints.detail.python_module_flag.value_hint": "Add the module name next, for example your_mcp_server.",
"ai_settings.mcp_server.argument_hints.detail.python_module_name.detail": "This is the module name after -m; do not include a .py suffix.",
"ai_settings.mcp_server.argument_hints.detail.python_module_name.label": "Python module name",
"ai_settings.mcp_server.argument_hints.detail.python_module_name.value_hint": "Follow the startup example in the README.",
"ai_settings.mcp_server.argument_hints.detail.python_script_or_arg.detail": "Usually a local Python MCP script path, or a positional argument passed to the script.",
"ai_settings.mcp_server.argument_hints.detail.python_script_or_arg.label": "Python script or positional argument",
"ai_settings.mcp_server.argument_hints.detail.python_script_or_arg.value_hint": "Follow the startup example in the README.",
"ai_settings.mcp_server.argument_hints.detail.script_or_arg.detail": "Usually the entry script for a local MCP Server; values after the script are passed as business arguments.",
"ai_settings.mcp_server.argument_hints.detail.script_or_arg.label": "Script or positional argument",
"ai_settings.mcp_server.argument_hints.detail.script_or_arg.value_hint": "Use a relative or absolute path accessible on this machine for the entry script.",
"ai_settings.mcp_server.argument_hints.detail.sensitive_value_detail": "This is the sensitive value for the previous {{argument}} argument; it is masked in the hint.",
"ai_settings.mcp_server.argument_hints.detail.skip_install_confirm.detail": "Avoid waiting for interactive confirmation when npx starts a package for the first time; useful for background tool discovery.",
"ai_settings.mcp_server.argument_hints.detail.skip_install_confirm.label": "Skip install confirmation",
"ai_settings.mcp_server.argument_hints.detail.skip_install_confirm.value_hint": "This is a switch argument and does not need an extra value.",
"ai_settings.mcp_server.argument_hints.detail.stdio.detail": "Let the MCP Server communicate with GoNavi through standard input and output.",
"ai_settings.mcp_server.argument_hints.detail.stdio.label": "stdio communication mode",
"ai_settings.mcp_server.argument_hints.detail.stdio.value_hint": "This is a switch argument and usually does not need an extra value.",
"ai_settings.mcp_server.argument_hints.detail.uvx_package_or_arg.detail": "uvx is usually followed by the MCP package name; later positional arguments are passed to that MCP service.",
"ai_settings.mcp_server.argument_hints.detail.uvx_package_or_arg.label": "Python MCP package or positional argument",
"ai_settings.mcp_server.argument_hints.detail.uvx_package_or_arg.value_hint": "The first positional argument should be the package name from the README.",
"ai_settings.mcp_server.argument_hints.detail.value_detail": "This is the value for the previous {{argument}} argument.",
"ai_settings.mcp_server.argument_hints.detail.value_label": "{{label}} value",
"ai_settings.mcp_server.argument_hints.dont_screenshot": "Do not screenshot the real value",
"ai_settings.mcp_server.argument_hints.fill_missing_required": "Fill missing required arguments: {{args}}",
"ai_settings.mcp_server.argument_hints.generic.detail": "GoNavi cannot infer the business meaning of --{{flag}} from the argument name, but it will pass it to the MCP process in the current order.",
"ai_settings.mcp_server.argument_hints.generic.label": "Unrecognized argument",
"ai_settings.mcp_server.argument_hints.generic.value_hint": "Check the MCP README to confirm whether this argument needs a value; if it does, put the value as the next argument tag or use --name=value.",
"ai_settings.mcp_server.argument_hints.hidden_value": "<hidden>",
"ai_settings.mcp_server.argument_hints.masked_value": "Value is masked",
"ai_settings.mcp_server.argument_hints.next_action.add_step": "Add {{label}}, example: {{example}}",
"ai_settings.mcp_server.argument_hints.next_actions": "Next: {{actions}}",
"ai_settings.mcp_server.argument_hints.possible_secret_hidden": "<possible secret hidden>",
"ai_settings.mcp_server.argument_hints.profile.docker.order": "Recommended order: run -> --rm -> -i -> -e KEY=VALUE -> image name -> service business arguments",
"ai_settings.mcp_server.argument_hints.profile.docker.summary": "For Docker, command should only be docker; put run, -i, --rm, image name, and container arguments into args.",
"ai_settings.mcp_server.argument_hints.profile.docker.title": "Docker MCP argument order",
"ai_settings.mcp_server.argument_hints.profile.executable.order": "Common order: stdio/--stdio -> config file or business argument",
"ai_settings.mcp_server.argument_hints.profile.executable.summary": "For custom or compiled MCP servers, follow the README; GoNavi passes arguments in tag order unchanged.",
"ai_settings.mcp_server.argument_hints.profile.executable.title": "Local executable argument guidance",
"ai_settings.mcp_server.argument_hints.profile.node.order": "Recommended order: script path -> --stdio -> service business arguments",
"ai_settings.mcp_server.argument_hints.profile.node.summary": "For Node-style launchers, command should only be node/bun/deno; put script path and --stdio into args.",
"ai_settings.mcp_server.argument_hints.profile.node.title": "Node script argument order",
"ai_settings.mcp_server.argument_hints.profile.npm.order": "Recommended order: -y -> package -> --stdio -> service business arguments",
"ai_settings.mcp_server.argument_hints.profile.npm.summary": "npm MCP servers usually need install confirmation, package name, and --stdio split into separate argument tags.",
"ai_settings.mcp_server.argument_hints.profile.npm.title": "npx / npm argument order",
"ai_settings.mcp_server.argument_hints.profile.python.order": "Recommended order: -m -> module name -> --stdio",
"ai_settings.mcp_server.argument_hints.profile.python.summary": "Python MCP servers often use python -m module_name; -m and the module name must be separate arguments.",
"ai_settings.mcp_server.argument_hints.profile.python.title": "Python argument order",
"ai_settings.mcp_server.argument_hints.profile.uvx.order": "Recommended order: package -> --stdio -> service business arguments",
"ai_settings.mcp_server.argument_hints.profile.uvx.summary": "uvx MCP servers usually put the package name first, then add stdio or config arguments from the README.",
"ai_settings.mcp_server.argument_hints.profile.uvx.title": "uvx argument order",
"ai_settings.mcp_server.argument_hints.required_complete": "Required arguments look complete. If the test fails, compare the README again for business arguments and environment variables.",
"ai_settings.mcp_server.argument_hints.split_inline_args": "Split startup command field: keep {{command}}, move {{count}} arguments",
"ai_settings.mcp_server.argument_hints.step.business.detail": "Add only when the README explicitly requires it, such as workspace path, port, or mode.",
"ai_settings.mcp_server.argument_hints.step.business.label": "Business argument",
"ai_settings.mcp_server.argument_hints.step.cleanup.detail": "Automatically remove the temporary container after testing and daily use to avoid leftovers.",
"ai_settings.mcp_server.argument_hints.step.cleanup.label": "Clean up container after exit",
"ai_settings.mcp_server.argument_hints.step.container-env.detail": "Tokens needed inside the container usually need -e/--env so they are passed into the container.",
"ai_settings.mcp_server.argument_hints.step.container-env.label": "Container environment variable",
"ai_settings.mcp_server.argument_hints.step.image.detail": "The Docker image name from the README, placed after docker run options.",
"ai_settings.mcp_server.argument_hints.step.image.label": "Image name",
"ai_settings.mcp_server.argument_hints.step.interactive.detail": "MCP needs a continuous stdio connection, so the Docker container must keep stdin open.",
"ai_settings.mcp_server.argument_hints.step.interactive.label": "Keep standard input",
"ai_settings.mcp_server.argument_hints.step.module-flag.detail": "Use -m for module launch; for script launch, enter server.py directly. Choose one.",
"ai_settings.mcp_server.argument_hints.step.module-flag.label": "Module flag or script",
"ai_settings.mcp_server.argument_hints.step.module-name.detail": "When using -m, enter the module name here without a .py suffix.",
"ai_settings.mcp_server.argument_hints.step.module-name.label": "Module name",
"ai_settings.mcp_server.argument_hints.step.package.detail": "The npm package name or local package entry from the README.",
"ai_settings.mcp_server.argument_hints.step.package.label": "MCP package name",
"ai_settings.mcp_server.argument_hints.step.run.detail": "Docker MCP usually starts a container with docker run.",
"ai_settings.mcp_server.argument_hints.step.run.label": "Run subcommand",
"ai_settings.mcp_server.argument_hints.step.scope.detail": "Filesystem, browser, database proxy, and similar services may also need a directory, port, or mode argument.",
"ai_settings.mcp_server.argument_hints.step.scope.label": "Allowed directory or business argument",
"ai_settings.mcp_server.argument_hints.step.script.detail": "The js/mjs/ts entry file or package startup script for a local MCP server.",
"ai_settings.mcp_server.argument_hints.step.script.label": "Script path",
"ai_settings.mcp_server.argument_hints.step.stdio.detail": "Let the service communicate with GoNavi through standard input and output.",
"ai_settings.mcp_server.argument_hints.step.stdio.label": "stdio argument",
"ai_settings.mcp_server.argument_hints.step.yes.detail": "Avoid waiting for interactive confirmation when npx starts a package for the first time. Adjust pnpm/yarn according to the README.",
"ai_settings.mcp_server.argument_hints.step.yes.label": "Skip install confirmation",
"ai_settings.mcp_server.argument_hints.value_hint_prefix": "Expected: ",
"ai_settings.mcp_server.command_parse.error.empty": "Paste the full command first.",
"ai_settings.mcp_server.command_parse.error.failed": "Failed to parse the full command. Check the command format.",
"ai_settings.mcp_server.command_parse.error.missing_command": "No startup command was parsed. Provide at least an executable name.",
"ai_settings.mcp_server.command_parse.error.unclosed_quote": "The command contains an unclosed quote. Check it and try again.",
"ai_settings.mcp_server.command_preview.args_count": "Will split into {{count}} separate argument tags.",
"ai_settings.mcp_server.command_preview.args_empty": "No extra arguments were detected in this command.",
"ai_settings.mcp_server.command_preview.args_title": "Command arguments",
"ai_settings.mcp_server.command_preview.command_hint": "Only the executable program itself is kept here.",
"ai_settings.mcp_server.command_preview.command_title": "Startup command",
"ai_settings.mcp_server.command_preview.description": "After clicking \"Auto split into fields below\", this parsed result will be written into the startup configuration area below the service name.",
"ai_settings.mcp_server.command_preview.empty_value": "None",
"ai_settings.mcp_server.command_preview.env_count": "Will write {{count}} environment variables.",
"ai_settings.mcp_server.command_preview.env_empty": "No prefixed environment variables were detected in this command.",
"ai_settings.mcp_server.command_preview.env_title": "Environment variables",
"ai_settings.mcp_server.command_preview.title": "Auto split preview",
"ai_settings.mcp_server.draft.default_name": "MCP service",
"ai_settings.mcp_server.env_hints.action_separator": "; ",
"ai_settings.mcp_server.env_hints.category.endpoint": "Endpoint",
"ai_settings.mcp_server.env_hints.category.generic": "Custom",
"ai_settings.mcp_server.env_hints.category.path": "Path",
"ai_settings.mcp_server.env_hints.category.proxy": "Proxy",
"ai_settings.mcp_server.env_hints.category.runtime": "Runtime",
"ai_settings.mcp_server.env_hints.category.secret": "Secret",
"ai_settings.mcp_server.env_hints.empty_value": " Current value is empty.",
"ai_settings.mcp_server.env_hints.inferred.endpoint.detail": "The variable name looks like a service URL, API endpoint, or host configuration.",
"ai_settings.mcp_server.env_hints.inferred.endpoint.label": "Service endpoint",
"ai_settings.mcp_server.env_hints.inferred.endpoint.value_hint": "Enter the URL, host, or endpoint the MCP Server needs to access.",
"ai_settings.mcp_server.env_hints.inferred.generic.detail": "No built-in variable hint matched; follow the matching field description in the MCP README.",
"ai_settings.mcp_server.env_hints.inferred.generic.label": "Custom configuration",
"ai_settings.mcp_server.env_hints.inferred.generic.value_hint": "Confirm the variable name casing exactly matches the README.",
"ai_settings.mcp_server.env_hints.inferred.path.detail": "The variable name looks like a local path, directory, or config file location.",
"ai_settings.mcp_server.env_hints.inferred.path.label": "Path / config file",
"ai_settings.mcp_server.env_hints.inferred.path.value_hint": "Enter an absolute path accessible to the local MCP process; keep the drive letter for Windows paths.",
"ai_settings.mcp_server.env_hints.inferred.proxy.detail": "The variable name looks like a network proxy setting.",
"ai_settings.mcp_server.env_hints.inferred.proxy.label": "Proxy configuration",
"ai_settings.mcp_server.env_hints.inferred.proxy.value_hint": "Follow the README or enterprise proxy format, for example http://127.0.0.1:7890.",
"ai_settings.mcp_server.env_hints.inferred.runtime.detail": "The variable name looks like a runtime environment, logging, or debug switch.",
"ai_settings.mcp_server.env_hints.inferred.runtime.label": "Runtime switch",
"ai_settings.mcp_server.env_hints.inferred.runtime.value_hint": "Use the enum value specified by the README.",
"ai_settings.mcp_server.env_hints.inferred.secret.detail": "The variable name looks like a secret, token, password, or connection string.",
"ai_settings.mcp_server.env_hints.inferred.secret.label": "Secret / Token",
"ai_settings.mcp_server.env_hints.inferred.secret.value_hint": "Enter the real value, but keep it only in local MCP configuration; do not put it in command, args, or chat content.",
"ai_settings.mcp_server.env_hints.known.anthropic_api_key.detail": "Used by MCP services that depend on the Anthropic Claude API.",
"ai_settings.mcp_server.env_hints.known.anthropic_api_key.label": "Anthropic API Key",
"ai_settings.mcp_server.env_hints.known.anthropic_api_key.value_hint": "Enter the real API Key only after confirming the service requires this variable.",
"ai_settings.mcp_server.env_hints.known.database_url.detail": "Lets the MCP service connect to a database itself; this gives database connection information to that MCP process.",
"ai_settings.mcp_server.env_hints.known.database_url.label": "Database connection string",
"ai_settings.mcp_server.env_hints.known.database_url.value_hint": "Fill this only when the MCP must connect to the database directly; prefer GoNavi MCP to avoid password exposure.",
"ai_settings.mcp_server.env_hints.known.docker_host.detail": "Tells the docker CLI which Docker Engine to connect to.",
"ai_settings.mcp_server.env_hints.known.docker_host.label": "Docker Daemon address",
"ai_settings.mcp_server.env_hints.known.docker_host.value_hint": "Common on Windows: npipe:////./pipe/docker_engine; confirm security boundaries for remote Docker.",
"ai_settings.mcp_server.env_hints.known.gemini_api_key.detail": "Used by MCP services that depend on the Google Gemini API.",
"ai_settings.mcp_server.env_hints.known.gemini_api_key.label": "Gemini API Key",
"ai_settings.mcp_server.env_hints.known.gemini_api_key.value_hint": "Enter the real API Key; some services may require GOOGLE_API_KEY instead.",
"ai_settings.mcp_server.env_hints.known.github_token.detail": "Usually used by GitHub MCP services to read repositories, issues, pull requests, or Actions.",
"ai_settings.mcp_server.env_hints.known.github_token.label": "GitHub Token",
"ai_settings.mcp_server.env_hints.known.github_token.value_hint": "Enter a GitHub Personal Access Token with the minimum permissions required by the MCP README.",
"ai_settings.mcp_server.env_hints.known.gitlab_token.detail": "Usually used by GitLab MCP services to access projects, merge requests, or CI.",
"ai_settings.mcp_server.env_hints.known.gitlab_token.label": "GitLab Token",
"ai_settings.mcp_server.env_hints.known.gitlab_token.value_hint": "Enter a GitLab Access Token and restrict it to the required project scope.",
"ai_settings.mcp_server.env_hints.known.gonavi_mcp_http_token.detail": "Used when a remote MCP HTTP service enables Bearer Token authentication.",
"ai_settings.mcp_server.env_hints.known.gonavi_mcp_http_token.label": "GoNavi MCP HTTP Token",
"ai_settings.mcp_server.env_hints.known.gonavi_mcp_http_token.value_hint": "Enter a high-entropy random token; do not reuse database passwords or model API Keys.",
"ai_settings.mcp_server.env_hints.known.google_api_key.detail": "Used by Google, Gemini, Maps, or Search MCP services.",
"ai_settings.mcp_server.env_hints.known.google_api_key.label": "Google API Key",
"ai_settings.mcp_server.env_hints.known.google_api_key.value_hint": "Enter the real API Key and confirm whether the README requires GOOGLE_API_KEY or GEMINI_API_KEY.",
"ai_settings.mcp_server.env_hints.known.http_proxy.detail": "Routes HTTP resource access from the MCP process through the specified proxy.",
"ai_settings.mcp_server.env_hints.known.http_proxy.label": "HTTP proxy",
"ai_settings.mcp_server.env_hints.known.http_proxy.value_hint": "Enter http://host:port; treat it as sensitive if the proxy includes a username or password.",
"ai_settings.mcp_server.env_hints.known.https_proxy.detail": "Routes HTTPS resource access from the MCP process through the specified proxy.",
"ai_settings.mcp_server.env_hints.known.https_proxy.label": "HTTPS proxy",
"ai_settings.mcp_server.env_hints.known.https_proxy.value_hint": "Enter http://host:port or https://host:port.",
"ai_settings.mcp_server.env_hints.known.log_level.detail": "Controls how much log output the MCP service emits.",
"ai_settings.mcp_server.env_hints.known.log_level.label": "Log level",
"ai_settings.mcp_server.env_hints.known.log_level.value_hint": "Common values are debug, info, warn, and error; temporarily raise it for troubleshooting.",
"ai_settings.mcp_server.env_hints.known.no_proxy.detail": "Specifies which domains or addresses should bypass the proxy.",
"ai_settings.mcp_server.env_hints.known.no_proxy.label": "Proxy bypass list",
"ai_settings.mcp_server.env_hints.known.no_proxy.value_hint": "Use comma-separated entries, for example localhost,127.0.0.1,.corp.local.",
"ai_settings.mcp_server.env_hints.known.node_env.detail": "Affects logging, debugging, or production mode for some Node MCP services.",
"ai_settings.mcp_server.env_hints.known.node_env.label": "Node runtime environment",
"ai_settings.mcp_server.env_hints.known.node_env.value_hint": "Usually production, development, or a value specified by the README.",
"ai_settings.mcp_server.env_hints.known.notion_api_key.detail": "Used by Notion MCP services to access pages, databases, or workspace content.",
"ai_settings.mcp_server.env_hints.known.notion_api_key.label": "Notion API Key",
"ai_settings.mcp_server.env_hints.known.notion_api_key.value_hint": "Enter the Notion integration secret and authorize only the required pages.",
"ai_settings.mcp_server.env_hints.known.openai_api_key.detail": "Used by MCP services that depend on OpenAI APIs for model or embedding calls.",
"ai_settings.mcp_server.env_hints.known.openai_api_key.label": "OpenAI API Key",
"ai_settings.mcp_server.env_hints.known.openai_api_key.value_hint": "Enter the real API Key; do not put it in command, args, or chat messages.",
"ai_settings.mcp_server.env_hints.known.slack_bot_token.detail": "Used by Slack MCP services to read channels, messages, or send notifications.",
"ai_settings.mcp_server.env_hints.known.slack_bot_token.label": "Slack Bot Token",
"ai_settings.mcp_server.env_hints.known.slack_bot_token.value_hint": "Enter the Bot Token starting with xoxb- and restrict workspace permissions.",
"ai_settings.mcp_server.env_hints.next_action.docker_env": "If the MCP inside the container needs these variables, add -e KEY=VALUE or --env KEY=VALUE to args according to the README.",
"ai_settings.mcp_server.env_hints.next_action.empty": "Fill values for {{keys}}, or remove variables you do not need.",
"ai_settings.mcp_server.env_hints.next_action.keys_recognized": "Environment variable keys are recognizable; if testing fails, first check the variable name casing required by the README.",
"ai_settings.mcp_server.env_hints.next_action.placeholder": "Replace {{keys}} with real values before testing tool discovery.",
"ai_settings.mcp_server.env_hints.next_action.secrets_local": "Secret-like variables are stored only in local configuration; do not send real values to chat, issues, or screenshots.",
"ai_settings.mcp_server.env_hints.next_actions": "Next: {{actions}}",
"ai_settings.mcp_server.env_hints.placeholder_value": " Current value looks like an example placeholder.",
"ai_settings.mcp_server.env_hints.recognized": "Recognized",
"ai_settings.mcp_server.env_hints.summary": "Detected {{envVarCount}} variables; {{secretLikeCount}} look like secrets. Only the key purpose and risk are explained here; values are not shown.",
"ai_settings.mcp_server.env_hints.title": "Environment variable usage hints",
"ai_settings.mcp_server.env_hints.value_hint_prefix": "Expected: ",
"ai_settings.mcp_server.env_hints.warning.docker_env_not_forwarded": "When command=docker, these environment variables are passed only to the docker CLI and do not automatically enter the container.",
"ai_settings.mcp_server.env_hints.warning.empty": "{{count}} environment variable values are empty and must be filled or removed before testing.",
"ai_settings.mcp_server.env_hints.warning.placeholder": "{{count}} environment variables still look like example placeholder values.",
"ai_settings.mcp_server.env_hints.warning_prefix": "Warning: {{warnings}}",
"ai_settings.mcp_server.form.action.delete": "Delete",
"ai_settings.mcp_server.form.action.delete_cancel": "Cancel",
"ai_settings.mcp_server.form.action.delete_confirm": "Delete this MCP service?",
"ai_settings.mcp_server.form.action.delete_ok": "Delete",
"ai_settings.mcp_server.form.action.save": "Save",
"ai_settings.mcp_server.form.action.test": "Test tool discovery",
"ai_settings.mcp_server.form.args.description": "Enter each argument as a separate tag; do not put the command itself here. For npx -y package --stdio, split -y, package, and --stdio. For node server.js --stdio, split server.js and --stdio. For docker run --rm -i image, split run, --rm, -i, and the image name. If unsure, use the full command box above to auto-split it first.",
"ai_settings.mcp_server.form.args.placeholder": "Command arguments, press Enter to add, for example: -y / package / --stdio",
"ai_settings.mcp_server.form.args.title": "Command arguments",
"ai_settings.mcp_server.form.command.description": "Enter only the command itself here. For launchers such as npx/node/uvx/python/docker, put the package name, script name, module name, or docker run arguments in the arguments field below. Do not paste the whole npx -y package --stdio, node server.js --stdio, or docker run -i image command here.",
"ai_settings.mcp_server.form.command.placeholder": "Startup command, for example: npx / node / uvx / python / docker",
"ai_settings.mcp_server.form.command.title": "Startup command",
"ai_settings.mcp_server.form.enabled.description": "Disable it temporarily when not in use; the configuration stays saved but will not join AI tool discovery.",
"ai_settings.mcp_server.form.enabled.option.disabled": "Disabled",
"ai_settings.mcp_server.form.enabled.option.enabled": "Enabled",
"ai_settings.mcp_server.form.enabled.title": "Enabled",
"ai_settings.mcp_server.form.env.description": "Use one KEY=VALUE per line, usually for API Key, working directory, service URL, and similar configuration. Leave it empty if not needed. These values are saved to local configuration and passed as environment variables when starting the MCP process; do not write export, and do not put secrets into chat content.",
"ai_settings.mcp_server.form.env.placeholder": "Environment variables, one KEY=VALUE per line, for example:\nOPENAI_API_KEY=...\nGITHUB_TOKEN=...",
"ai_settings.mcp_server.form.env.title": "Environment variables",
"ai_settings.mcp_server.form.env_status.empty": "Each line must be KEY=VALUE; lines without an equals sign or with spaces in the key will not be saved.",
"ai_settings.mcp_server.form.env_status.invalid": "Detected {{validCount}} environment variable(s), plus {{invalidCount}} invalid line(s) that will not be saved this time: {{invalidLines}}",
"ai_settings.mcp_server.form.env_status.valid": "Detected {{count}} environment variable(s).",
"ai_settings.mcp_server.form.instructions.save_description": "writes this MCP into local configuration for long-term use.",
"ai_settings.mcp_server.form.instructions.save_title": "Save",
"ai_settings.mcp_server.form.instructions.test_description": "starts once with the current fields, checks which tools can be discovered, and does not save the configuration.",
"ai_settings.mcp_server.form.instructions.test_first": "Test successfully before saving; after the test passes, the tools discovered from this service will appear above.",
"ai_settings.mcp_server.form.instructions.test_title": "Test tool discovery",
"ai_settings.mcp_server.form.instructions.title": "Action guide",
"ai_settings.mcp_server.form.instructions.tools_found": "The tools listed above are the aliases found by the most recent successful test.",
"ai_settings.mcp_server.form.launch_preview.description": "GoNavi will start the process in the form below so you can confirm the command and arguments were split correctly.",
"ai_settings.mcp_server.form.launch_preview.title": "Actual launch command preview",
"ai_settings.mcp_server.form.name.description": "Give this MCP a name you can recognize; it will appear directly in the AI tool list later. Avoid vague names like server or test.",
"ai_settings.mcp_server.form.name.placeholder": "Service name, for example: Filesystem / Browser / GitHub",
"ai_settings.mcp_server.form.name.title": "Service name",
"ai_settings.mcp_server.form.timeout.description": "Maximum wait time for one tool discovery or tool call. Most local tools can keep the default 20 seconds; increase it for remote services or slow-starting scripts.",
"ai_settings.mcp_server.form.timeout.placeholder": "Timeout (seconds)",
"ai_settings.mcp_server.form.timeout.preset.default": "Default 20 seconds",
"ai_settings.mcp_server.form.timeout.preset.relaxed": "Relaxed 45 seconds",
"ai_settings.mcp_server.form.timeout.preset.slow": "Slow start 60 seconds",
"ai_settings.mcp_server.form.timeout.title": "Timeout (seconds)",
"ai_settings.mcp_server.form.transport.description": "Only stdio is supported for now. GoNavi starts this process locally and communicates over standard input and output.",
"ai_settings.mcp_server.form.transport.title": "Transport",
"ai_settings.mcp_server.guide.examples.description": "Put only the executable itself in the startup command. Do not mix arguments into it. Common forms:",
"ai_settings.mcp_server.guide.examples.title": "Examples",
"ai_settings.mcp_server.guide.field.args.avoid": "Do not enter npx/node/uvx/python/docker again, and do not paste multiple arguments into one long string.",
"ai_settings.mcp_server.guide.field.args.detail": "For npx -y pkg --stdio, split it into -y, pkg, and --stdio. For docker run --rm -i image, split it into run, --rm, -i, and image.",
"ai_settings.mcp_server.guide.field.args.fill": "Enter -y, package name, script name, -m, --stdio, run, --rm, -i, image name, and similar arguments one by one.",
"ai_settings.mcp_server.guide.field.args.summary": "Split script names, module names, and flags into separate entries.",
"ai_settings.mcp_server.guide.field.args.title": "Command arguments",
"ai_settings.mcp_server.guide.field.avoid_label": "Avoid: ",
"ai_settings.mcp_server.guide.field.command.avoid": "Do not enter the whole command line, such as npx -y pkg --stdio.",
"ai_settings.mcp_server.guide.field.command.detail": "Common values are npx, node, uvx, python, and docker. Put package names, script names, run, -i, and --stdio into arguments.",
"ai_settings.mcp_server.guide.field.command.fill": "Enter npx, node, uvx, python, docker, or an absolute path to an exe.",
"ai_settings.mcp_server.guide.field.command.summary": "Enter only the program name or launcher itself.",
"ai_settings.mcp_server.guide.field.command.title": "Startup command",
"ai_settings.mcp_server.guide.field.enabled.avoid": "Do not delete it just to pause it temporarily, or you will need to configure command, args, and env again.",
"ai_settings.mcp_server.guide.field.enabled.detail": "Disabling only stops using it. It does not delete the configuration below.",
"ai_settings.mcp_server.guide.field.enabled.example": "Enabled / Disabled",
"ai_settings.mcp_server.guide.field.enabled.fill": "Choose disabled when it is temporarily unused; choose enabled when the AI should use it.",
"ai_settings.mcp_server.guide.field.enabled.summary": "Controls whether this configuration currently participates in tool discovery and calls.",
"ai_settings.mcp_server.guide.field.enabled.title": "Enabled",
"ai_settings.mcp_server.guide.field.env.avoid": "Do not write export, set, or a $env: prefix, and do not mix environment variables into command or args.",
"ai_settings.mcp_server.guide.field.env.detail": "Usually used for API Key, service URL, working directory, and similar values. Use one line per variable and do not write export.",
"ai_settings.mcp_server.guide.field.env.fill": "Use one KEY=VALUE line, such as GITHUB_TOKEN=....",
"ai_settings.mcp_server.guide.field.env.summary": "Pass KEY=VALUE configuration to the MCP Server.",
"ai_settings.mcp_server.guide.field.env.title": "Environment variables",
"ai_settings.mcp_server.guide.field.example_label": "Example:",
"ai_settings.mcp_server.guide.field.fill_label": "Fill: ",
"ai_settings.mcp_server.guide.field.name.avoid": "Avoid vague names such as server, test, or mcp1.",
"ai_settings.mcp_server.guide.field.name.detail": "Name it by purpose. Prefer recognizable names such as Browser, GitHub, or Filesystem.",
"ai_settings.mcp_server.guide.field.name.fill": "The purpose name of this MCP, such as GitHub or Filesystem.",
"ai_settings.mcp_server.guide.field.name.summary": "The name shown to you and the AI after saving.",
"ai_settings.mcp_server.guide.field.name.title": "Service name",
"ai_settings.mcp_server.guide.field.timeout.avoid": "Do not choose an arbitrarily tiny value. Below 3 seconds can easily make tool discovery look failed.",
"ai_settings.mcp_server.guide.field.timeout.detail": "Regular local tools usually work with 20 seconds. Increase it for slow startup or remote links.",
"ai_settings.mcp_server.guide.field.timeout.fill": "Use 20 normally; use 45 or 60 for slow startup.",
"ai_settings.mcp_server.guide.field.timeout.summary": "Maximum wait time for one tool discovery or call.",
"ai_settings.mcp_server.guide.field.timeout.title": "Timeout (seconds)",
"ai_settings.mcp_server.guide.field.transport.avoid": "Do not enter HTTP, SSE, a URL, or a port. This add flow is not remote MCP URL configuration.",
"ai_settings.mcp_server.guide.field.transport.detail": "Currently fixed to stdio, meaning GoNavi starts a local process and exchanges data through standard input and output.",
"ai_settings.mcp_server.guide.field.transport.fill": "Keep stdio.",
"ai_settings.mcp_server.guide.field.transport.summary": "How GoNavi communicates with this MCP Server.",
"ai_settings.mcp_server.guide.field.transport.title": "Transport",
"ai_settings.mcp_server.guide.field_lookup.description": "If you do not know what to put in a parameter field, start here. Each field below also has more specific examples and cautions.",
"ai_settings.mcp_server.guide.field_lookup.title": "Field quick reference",
"ai_settings.mcp_server.guide.full_command.apply": "Auto-split into the fields below",
"ai_settings.mcp_server.guide.full_command.description": "Paste the full command directly. GoNavi will split it into startup command / command arguments / environment variables. It supports Unix KEY=VALUE, Windows PowerShell $env:KEY=VALUE;, and cmd set KEY=VALUE && prefixes.",
"ai_settings.mcp_server.guide.full_command.parsed_summary": "Will parse as: command {{command}}, {{argsCount}} argument(s), {{envCount}} environment variable(s).",
"ai_settings.mcp_server.guide.full_command.placeholder": "Paste the full command, for example:\n{{example}}",
"ai_settings.mcp_server.guide.full_command.support_hint": "Supports quoted paths, arguments with spaces, and KEY=VALUE / $env:KEY=VALUE; / set KEY=VALUE && environment variable prefixes.",
"ai_settings.mcp_server.guide.full_command.title": "Only have one full command?",
"ai_settings.mcp_server.guide.note.command_only": "Startup command should contain only the program itself. Do not mix script names, module names, or --stdio into it.",
"ai_settings.mcp_server.guide.note.docker": "When README shows a Docker example, set command to docker and put run, --rm, -i, image name, and container arguments into args one by one. Container tokens are usually passed with -e KEY=VALUE.",
"ai_settings.mcp_server.guide.note.env_lines": "Use one KEY=VALUE line per environment variable. Do not write export, and do not mix it into the startup command.",
"ai_settings.mcp_server.guide.note.full_command": "If README only gives one full command line, paste it into the full command box first for auto-splitting. It supports KEY=VALUE, env KEY=VALUE, PowerShell $env:KEY=VALUE;, and Windows set KEY=VALUE && prefixes.",
"ai_settings.mcp_server.guide.note.npx": "When README shows an npx example, set command to npx and put -y, package name, and --stdio into args one by one. Do not put the whole npx command in command.",
"ai_settings.mcp_server.guide.note.secrets": "Secret environment variables are saved in local configuration and passed only as process environment when starting the MCP process. Do not put secrets into chat content.",
"ai_settings.mcp_server.guide.note.test_discovery": "Test tool discovery starts the service temporarily for probing and does not save the configuration automatically.",
"ai_settings.mcp_server.guide.order.description": "New users can follow this order: choose a template above or paste the full command, confirm the required fields below, then add arguments, environment variables, and timeout only when needed.",
"ai_settings.mcp_server.guide.order.title": "Recommended fill order",
"ai_settings.mcp_server.guide.step.args.detail": "Split script names, module names, Docker run arguments, and flags such as --stdio into separate entries.",
"ai_settings.mcp_server.guide.step.args.title": "Command arguments",
"ai_settings.mcp_server.guide.step.command.detail": "Enter only the program name or launcher here. Do not paste the whole command line into it.",
"ai_settings.mcp_server.guide.step.command.title": "Startup command",
"ai_settings.mcp_server.guide.step.env_timeout.detail": "Add them only when the service really needs extra configuration. Leave them empty when not needed.",
"ai_settings.mcp_server.guide.step.env_timeout.title": "Environment variables / timeout",
"ai_settings.mcp_server.guide.step.name.detail": "Name it by purpose, such as Browser, GitHub, or Filesystem, so it is recognizable at a glance.",
"ai_settings.mcp_server.guide.step.name.title": "Service name",
"ai_settings.mcp_server.guide.step.template.detail": "Prefer the closest template, or paste one full command first and let GoNavi split it automatically.",
"ai_settings.mcp_server.guide.step.template.title": "Template / full command",
"ai_settings.mcp_server.guide.troubleshooting.auth_failed.cause": "API Key, Token, service URL, or other environment variables are missing, or KEY=VALUE is invalid.",
"ai_settings.mcp_server.guide.troubleshooting.auth_failed.fix": "Write one KEY=VALUE line per environment variable. Do not write export, and do not mix environment variables into the startup command.",
"ai_settings.mcp_server.guide.troubleshooting.auth_failed.symptom": "Authentication failed, 401, or 403",
"ai_settings.mcp_server.guide.troubleshooting.cause_label": "Common cause: ",
"ai_settings.mcp_server.guide.troubleshooting.command_not_found.cause": "The startup command contains the whole command line, the command is not on PATH, or a Windows path contains spaces but is not a real exe path.",
"ai_settings.mcp_server.guide.troubleshooting.command_not_found.fix": "Put only the executable itself in startup command. Put script names and --stdio in command arguments. If the command is not on PATH, enter the absolute path.",
"ai_settings.mcp_server.guide.troubleshooting.command_not_found.symptom": "Test says the command cannot be found",
"ai_settings.mcp_server.guide.troubleshooting.description": "If a test fails, use this section to find which field to fix. Most issues are not a broken MCP, but a split command, argument, or environment variable problem.",
"ai_settings.mcp_server.guide.troubleshooting.example_label": "Example:",
"ai_settings.mcp_server.guide.troubleshooting.fix_label": "Fix: ",
"ai_settings.mcp_server.guide.troubleshooting.stdio_only.cause": "This usually is not a local stdio process, and the current GoNavi add flow does not directly support it.",
"ai_settings.mcp_server.guide.troubleshooting.stdio_only.fix": "Prefer the service's stdio startup method. If it only has HTTP/SSE, use an official gateway or local wrapper to convert it to stdio first.",
"ai_settings.mcp_server.guide.troubleshooting.stdio_only.symptom": "README only provides URL or SSE configuration",
"ai_settings.mcp_server.guide.troubleshooting.timeout_or_no_tools.cause": "The service starts slowly, lacks a stdio argument, the Docker container lacks -i, or the service only supports HTTP/SSE.",
"ai_settings.mcp_server.guide.troubleshooting.timeout_or_no_tools.fix": "Confirm the service supports stdio, then add --stdio or Docker -i. Increase timeout to 45 or 60 seconds when startup is slow.",
"ai_settings.mcp_server.guide.troubleshooting.timeout_or_no_tools.symptom": "Test times out or discovers 0 tools",
"ai_settings.mcp_server.guide.troubleshooting.title": "Common setup mistakes",
"ai_settings.mcp_server.help.example_prefix": "Example: ",
"ai_settings.mcp_server.help.field_state.fixed": "Fixed",
"ai_settings.mcp_server.help.field_state.optional": "Optional",
"ai_settings.mcp_server.help.field_state.required": "Required",
"ai_settings.mcp_server.message.delete_failed": "Failed to delete MCP server",
"ai_settings.mcp_server.message.deleted": "MCP server deleted",
"ai_settings.mcp_server.message.save_failed": "Failed to save MCP server",
"ai_settings.mcp_server.message.saved": "MCP server saved",
"ai_settings.mcp_server.message.test_failed": "MCP server test failed",
"ai_settings.mcp_server.message.test_request_failed": "Failed to test MCP server",
"ai_settings.mcp_server.message.test_success": "MCP server connection succeeded",
"ai_settings.mcp_server.quick_add.action.parse_and_add": "Parse and add draft",
"ai_settings.mcp_server.quick_add.description": "Choose the closest template, or paste a full startup command from the README. GoNavi will split it into command, args, and env, then create an editable MCP draft.",
"ai_settings.mcp_server.quick_add.templates_description": "If you are not sure how to split command and args, click a template to create a draft. Each card shows the command GoNavi will actually launch.",
"ai_settings.mcp_server.quick_add.templates_title": "Common startup templates",
"ai_settings.mcp_server.quick_add.title": "Quick add from one command",
"ai_settings.mcp_server.remote_quick_start.avoid_prefix": "Avoid: ",
"ai_settings.mcp_server.remote_quick_start.badge.optional": "Optional",
"ai_settings.mcp_server.remote_quick_start.badge.required": "Required",
"ai_settings.mcp_server.remote_quick_start.card.cli_config": "Generate config without GUI / CLI",
"ai_settings.mcp_server.remote_quick_start.card.cli_config_note": "Generates remote MCP config that can be pasted into {{displayName}} without reading or outputting database passwords.",
"ai_settings.mcp_server.remote_quick_start.card.cloud_agent": "Configure in cloud Agent",
"ai_settings.mcp_server.remote_quick_start.card.standalone_binary": "Standalone binary: {{command}}",
"ai_settings.mcp_server.remote_quick_start.card.windows_launch": "Start GoNavi MCP HTTP on Windows",
"ai_settings.mcp_server.remote_quick_start.default_agent_name": "Remote Agent",
"ai_settings.mcp_server.remote_quick_start.description": "Use these snippets for cloud Agents, no-GUI/CLI setups, and Windows GoNavi. The cloud side only stores the MCP URL and Bearer Token, not database credentials; schema-only exposes structure tools by default.",
"ai_settings.mcp_server.remote_quick_start.example_prefix": "Example: ",
"ai_settings.mcp_server.remote_quick_start.fill_prefix": "Fill: ",
"ai_settings.mcp_server.remote_quick_start.guide.access_heading": "Recommended access method:",
"ai_settings.mcp_server.remote_quick_start.guide.boundary.local_stdio": "The built-in local GoNavi MCP entry is stdio, suitable for clients such as Claude Code / Codex running on the same machine as GoNavi.",
"ai_settings.mcp_server.remote_quick_start.guide.boundary.remote_cloud": "If OpenClaw/Hermans runs on cloud Linux, it cannot use the Windows local stdio command directly; start GoNavi Streamable HTTP mode on Windows, then let the cloud Agent call it through a tunnel or reverse proxy.",
"ai_settings.mcp_server.remote_quick_start.guide.boundary_heading": "Current boundary:",
"ai_settings.mcp_server.remote_quick_start.guide.config_command_heading": "No GUI / CLI config generation command:",
"ai_settings.mcp_server.remote_quick_start.guide.config_heading": "Copyable config snippet (for Agents that support mcpServers JSON):",
"ai_settings.mcp_server.remote_quick_start.guide.current_hint": "Current hint: {{message}}",
"ai_settings.mcp_server.remote_quick_start.guide.env_fallback": "Or set environment variable GONAVI_MCP_HTTP_TOKEN=<random-token>, then run {{standaloneCommand}}",
"ai_settings.mcp_server.remote_quick_start.guide.execute_sql_note": "If remote SQL execution is explicitly required, remove --schema-only; execute_sql remains constrained by GoNavi AI safety controls, and writes must explicitly pass allowMutating=true.",
"ai_settings.mcp_server.remote_quick_start.guide.goal.credentials_stay_local": "Database connections, accounts, and passwords stay in Windows GoNavi. The cloud Agent does not need to store database passwords.",
"ai_settings.mcp_server.remote_quick_start.guide.goal.schema_only": "Remote access uses schema-only mode by default and does not register execute_sql, suitable for giving OpenClaw/Hermans schema-structure access only.",
"ai_settings.mcp_server.remote_quick_start.guide.goal.tools_only": "The cloud Agent only reads get_connections/get_databases/get_objects/get_tables/get_views/get_columns/get_table_ddl results through MCP tools.",
"ai_settings.mcp_server.remote_quick_start.guide.goal_heading": "Goal:",
"ai_settings.mcp_server.remote_quick_start.guide.launch_command_heading": "CLI / service launch command:",
"ai_settings.mcp_server.remote_quick_start.guide.step.configure_remote_server": "3. Add a remote MCP Server in {{displayName}}, choose Streamable HTTP transport, set the URL to the tunneled/reverse-proxied /mcp address, and set Authorization: Bearer <random-token>.",
"ai_settings.mcp_server.remote_quick_start.guide.step.inspect_schema": "4. Call get_connections first to obtain connectionId, then call schema tools; do not write database host/user/password into the cloud Agent config.",
"ai_settings.mcp_server.remote_quick_start.guide.step.keep_windows_accessible": "1. Keep GoNavi reachable on Windows, and let GoNavi read saved connections and system credentials.",
"ai_settings.mcp_server.remote_quick_start.guide.step.run_command": "2. Run this on Windows or the trusted intranet side: {{launchCommand}}.",
"ai_settings.mcp_server.remote_quick_start.guide.title": "GoNavi MCP remote access guide - {{displayName}}",
"ai_settings.mcp_server.remote_quick_start.parameter.bearer_token.avoid": "Do not use an empty or short token, and do not put a database password here.",
"ai_settings.mcp_server.remote_quick_start.parameter.bearer_token.fill": "Enter a long random token; the Windows launch command and cloud Agent config must match.",
"ai_settings.mcp_server.remote_quick_start.parameter.bearer_token.title": "Bearer Token",
"ai_settings.mcp_server.remote_quick_start.parameter.local_addr.avoid": "Do not bind directly to 0.0.0.0 and expose it publicly without gateway isolation.",
"ai_settings.mcp_server.remote_quick_start.parameter.local_addr.fill": "Windows GoNavi HTTP MCP listens on 127.0.0.1:8765 by default, then a tunnel or reverse proxy forwards it.",
"ai_settings.mcp_server.remote_quick_start.parameter.local_addr.title": "Local listen address",
"ai_settings.mcp_server.remote_quick_start.parameter.path.avoid": "Do not use /mcp in one place and /api/mcp in another; mismatched paths return 404.",
"ai_settings.mcp_server.remote_quick_start.parameter.path.fill": "Keep the path consistent in the local launch command, tunnel URL, and cloud Agent config.",
"ai_settings.mcp_server.remote_quick_start.parameter.path.title": "MCP path",
"ai_settings.mcp_server.remote_quick_start.parameter.public_url.avoid": "Do not use the Windows local 127.0.0.1 address; cloud Linux cannot reach it.",
"ai_settings.mcp_server.remote_quick_start.parameter.public_url.fill": "Enter the Streamable HTTP MCP address reachable by the cloud Agent, usually ending with /mcp.",
"ai_settings.mcp_server.remote_quick_start.parameter.public_url.title": "Public/tunnel URL",
"ai_settings.mcp_server.remote_quick_start.parameter.server_id.avoid": "Do not rename it frequently, or existing Agent tool references may break.",
"ai_settings.mcp_server.remote_quick_start.parameter.server_id.fill": "Name this MCP service for the cloud Agent; gonavi is fine by default.",
"ai_settings.mcp_server.remote_quick_start.parameter.server_id.title": "Server ID",
"ai_settings.mcp_server.remote_quick_start.section.security": "Security boundary",
"ai_settings.mcp_server.remote_quick_start.section.verification": "Verification order",
"ai_settings.mcp_server.remote_quick_start.security.credentials_stay_local": "Database accounts and passwords stay in Windows GoNavi; do not write database passwords in this config.",
"ai_settings.mcp_server.remote_quick_start.security.execute_sql": "If you remove --schema-only to expose execute_sql, GoNavi AI safety controls still apply, and writes must explicitly pass allowMutating=true.",
"ai_settings.mcp_server.remote_quick_start.security.schema_only": "--schema-only does not register execute_sql by default, so the remote Agent only gets schema-structure tools.",
"ai_settings.mcp_server.remote_quick_start.security.token_required": "HTTP MCP must use a random Bearer Token and stay behind HTTPS, a private network, or a controlled tunnel.",
"ai_settings.mcp_server.remote_quick_start.title": "{{displayName}} Remote MCP quick setup",
"ai_settings.mcp_server.remote_quick_start.verification.configure_agent": "Configure Streamable HTTP MCP in {{displayName}} and point the URL to the tunneled or reverse-proxied /mcp address.",
"ai_settings.mcp_server.remote_quick_start.verification.healthz": "On Windows, open http://127.0.0.1:8765/healthz first to confirm the GoNavi MCP HTTP service is running.",
"ai_settings.mcp_server.remote_quick_start.verification.inspect_schema": "Call get_connections first to obtain connectionId, then read get_databases / get_tables / get_columns.",
"ai_settings.mcp_server.section.action.add_server": "Add MCP service",
"ai_settings.mcp_server.section.empty": "No MCP service yet. Common forms include `npx -y package --stdio`, `node server.js`, `uvx some-mcp-server`, `python -m server`, and `docker run --rm -i image`.",
"ai_settings.mcp_server.section.quick_reference.description": "Check these fields before adding a service: `command` is only the executable, `args` holds script names and --stdio, `env` uses one KEY=VALUE per line, and `timeout` controls one tool discovery or call wait.",
"ai_settings.mcp_server.section.quick_reference.footer": "Supports command, arguments, environment variables, and timeout. If unsure, read the Field quick reference cards first. After saving, the service enters the AI tool list automatically.",
"ai_settings.mcp_server.section.quick_reference.title": "New MCP parameter quick reference",
"ai_settings.mcp_server.template.docker.description": "For containerized MCP services whose README uses `docker run -i --rm image`. Docker must be installed locally.",
"ai_settings.mcp_server.template.docker.detail": "The example uses `docker run --rm -i mcp/server-fetch:latest`; container tokens are usually passed with -e KEY=VALUE in arguments.",
"ai_settings.mcp_server.template.docker.seed_name": "Docker MCP",
"ai_settings.mcp_server.template.docker.title": "Docker image",
"ai_settings.mcp_server.template.exe.description": "For compiled local binaries or internal company tools.",
"ai_settings.mcp_server.template.exe.detail": "The example uses `your-mcp-server.exe stdio`; replace the exe path with the real value.",
"ai_settings.mcp_server.template.exe.seed_name": "Local EXE",
"ai_settings.mcp_server.template.exe.title": "Local EXE",
"ai_settings.mcp_server.template.node.description": "For local js/ts scripts or node launchers installed from npm.",
"ai_settings.mcp_server.template.node.detail": "The example uses `node server.js --stdio`; you can adjust the script name and arguments.",
"ai_settings.mcp_server.template.node.seed_name": "Node script",
"ai_settings.mcp_server.template.node.title": "Node script",
"ai_settings.mcp_server.template.npx.description": "For npm MCP packages whose README uses `npx -y xxx --stdio`.",
"ai_settings.mcp_server.template.npx.detail": "The example uses `npx -y @modelcontextprotocol/server-filesystem --stdio`; replace the package name and path arguments with the real values.",
"ai_settings.mcp_server.template.npx.seed_name": "npx package",
"ai_settings.mcp_server.template.npx.title": "npx package",
"ai_settings.mcp_server.template.python.description": "For services launched as modules, such as `python -m xxx`.",
"ai_settings.mcp_server.template.python.detail": "The example uses `python -m your_mcp_server`; replace the module name with the real one.",
"ai_settings.mcp_server.template.python.seed_name": "Python module",
"ai_settings.mcp_server.template.python.title": "Python module",
"ai_settings.mcp_server.template.uvx.description": "For published MCP packages in the Python/uv ecosystem.",
"ai_settings.mcp_server.template.uvx.detail": "The example uses `uvx some-mcp-server`; replace the package name before saving.",
"ai_settings.mcp_server.template.uvx.seed_name": "uvx tool",
"ai_settings.mcp_server.template.uvx.title": "uvx tool",
"ai_settings.mcp_server.tool_schema_summary.minimal_arguments_example": "Minimum arguments example:",
"ai_settings.mcp_server.tool_schema_summary.more_parameters": "{{count}} more parameters; use /mcptool to view the full schema",
"ai_settings.mcp_server.tool_schema_summary.no_input_schema": "No inputSchema declared; check the service docs or use /mcptool before calling.",
"ai_settings.mcp_server.tool_schema_summary.parameter_counts": "{{count}} parameters, {{requiredCount}} required; an asterisk marks required fields.",
"ai_settings.mcp_server.tool_schema_summary.title": "Discovered tools and parameter hints",
"ai_settings.mcp_server.validation.issue.args_contain_env_or_shell_glue.detail": "KEY=VALUE, $env:KEY=VALUE, set, env, and && belong in full-command auto split or in the environment variables field.",
"ai_settings.mcp_server.validation.issue.args_contain_env_or_shell_glue.title": "Command arguments may include environment variables or shell glue",
"ai_settings.mcp_server.validation.issue.args_missing_for_launcher.detail": "Launchers such as node, python, uvx, and npx usually also need server.js, -m your_server, or a package name as an argument.",
"ai_settings.mcp_server.validation.issue.args_missing_for_launcher.title": "Command arguments may be missing the script or module name",
"ai_settings.mcp_server.validation.issue.command_missing.detail": "Enter at least node, uvx, python, or a local executable path. Put the script name and --stdio in command arguments.",
"ai_settings.mcp_server.validation.issue.command_missing.title": "Startup command is missing",
"ai_settings.mcp_server.validation.issue.command_whole_line.detail": "Put only the executable itself in startup command. Move the script name, module name, --stdio, and environment variables into arguments or environment variables.",
"ai_settings.mcp_server.validation.issue.command_whole_line.title": "Startup command may contain the whole command line",
"ai_settings.mcp_server.validation.issue.docker_image_missing.detail": "Enter the image name from the README after docker run options, for example mcp/server-fetch:latest.",
"ai_settings.mcp_server.validation.issue.docker_image_missing.title": "Docker arguments may be missing the image name",
"ai_settings.mcp_server.validation.issue.docker_interactive_missing.detail": "MCP needs to keep reading standard input. Add -i or --interactive for docker run, otherwise tool discovery may disconnect immediately.",
"ai_settings.mcp_server.validation.issue.docker_interactive_missing.title": "Docker arguments are missing -i",
"ai_settings.mcp_server.validation.issue.docker_run_missing.detail": "Docker MCP usually uses command=docker, with run, --rm, -i, the image name, and service arguments entered separately in args.",
"ai_settings.mcp_server.validation.issue.docker_run_missing.title": "Docker arguments are missing run",
"ai_settings.mcp_server.validation.issue.env_invalid_lines.detail": "Each line must be KEY=VALUE. {{count}} line(s) will not be saved: {{lines}}",
"ai_settings.mcp_server.validation.issue.env_invalid_lines.title": "Environment variables contain invalid lines",
"ai_settings.mcp_server.validation.issue.name_missing.detail": "Use a purpose name such as Browser, GitHub, or Filesystem; otherwise it can only be identified by command after saving.",
"ai_settings.mcp_server.validation.issue.name_missing.title": "Service name is empty",
"ai_settings.mcp_server.validation.issue.timeout_out_of_range.detail": "GoNavi will clamp it between 3 and 120 seconds. Regular local services usually use 20 seconds; slow-starting services can use 45 or 60 seconds.",
"ai_settings.mcp_server.validation.issue.timeout_out_of_range.title": "Timeout is outside the recommended range",
"ai_settings.mcp_server.validation.issue.transport_unsupported.detail": "GoNavi can only add stdio MCP services here. Keep the transport set to stdio.",
"ai_settings.mcp_server.validation.issue.transport_unsupported.title": "Transport is not supported",
"ai_settings.mcp_server.validation.severity.error": "Needs fix",
"ai_settings.mcp_server.validation.severity.info": "Tip",
"ai_settings.mcp_server.validation.severity.warning": "Check recommended",
"ai_settings.mcp_server.validation.summary.errors": "Found {{count}} issue that must be fixed before testing or saving.",
"ai_settings.mcp_server.validation.summary.ready": "The current configuration can be tested and saved.",
"ai_settings.mcp_server.validation.summary.warnings": "Found {{count}} item to check. You can still test and save.",
"ai_settings.mcp_server.validation.title": "Configuration check",
"ai_settings.message.delete_failed": "Delete failed",
"ai_settings.message.delete_failed_detail": "Delete failed: {{detail}}",
"ai_settings.message.deleted": "Deleted",
"ai_settings.message.deleted_and_switched": "Deleted and automatically switched to \"{{name}}\"",
"ai_settings.message.load_provider_failed": "Failed to read provider configuration",
"ai_settings.message.save_failed": "Save failed",
"ai_settings.message.save_failed_detail": "Save failed: {{detail}}",
"ai_settings.message.saved": "Saved",
"ai_settings.message.switch_failed": "Switch failed",
"ai_settings.message.switch_failed_detail": "Switch failed: {{detail}}",
"ai_settings.message.switched": "Switched",
"ai_settings.message.test_failed": "Test failed",
"ai_settings.message.test_failed_detail": "Test failed: {{detail}}",
"ai_settings.message.test_requires_new_api_key": "Enter a new API Key before testing, or cancel clearing the saved secret",
"ai_settings.message.test_success": "Connection succeeded",
"ai_settings.message.unknown_error": "Unknown error",
"ai_settings.nav.context.description": "Configure database schema context",
"ai_settings.nav.context.title": "Context",
"ai_settings.nav.mcp.description": "Connect GoNavi to external clients and manage tool sources",
"ai_settings.nav.mcp.title": "MCP services",
"ai_settings.nav.prompts.description": "View system-level preset requirements",
"ai_settings.nav.prompts.title": "Built-in prompts",
"ai_settings.nav.providers.description": "Configure model endpoints and secrets",
"ai_settings.nav.providers.title": "Model providers",
"ai_settings.nav.safety.description": "Limit AI operation risk level",
"ai_settings.nav.safety.title": "Safety control",
"ai_settings.nav.skills.description": "Configure reusable prompt modules",
"ai_settings.nav.skills.title": "Skills",
"ai_settings.nav.title": "Settings navigation",
"ai_settings.nav.tools.description": "View data probes available to AI",
"ai_settings.nav.tools.title": "Built-in tools",
"ai_settings.prompts.action.save": "Save custom prompts",
"ai_settings.prompts.builtin.description": "These are the read-only low-level AI prompts preset by the current GoNavi version. They are injected before the user-level prompts above in the matching request context.",
"ai_settings.prompts.description": "These are the read-only system prompts preset by the current GoNavi version. They are injected dynamically into request context for matching scenarios.",
"ai_settings.prompts.field.database.description": "Applies only to database and SQL scenarios, such as \"confirm field names before generating SQL\".",
"ai_settings.prompts.field.database.title": "Database session extra prompt",
"ai_settings.prompts.field.global.description": "Applies to all AI sessions, such as \"state the conclusion first\" or \"keep answers concise\".",
"ai_settings.prompts.field.global.title": "Global extra prompt",
"ai_settings.prompts.field.jvm.description": "Applies only to JVM resource browsing and analysis scenarios.",
"ai_settings.prompts.field.jvm.title": "JVM resource analysis extra prompt",
"ai_settings.prompts.field.jvm_diagnostic.description": "Applies only to the JVM diagnostics workspace, such as \"give the plan before commands\".",
"ai_settings.prompts.field.jvm_diagnostic.title": "JVM diagnostics extra prompt",
"ai_settings.prompts.message.save_failed": "Failed to save custom prompts",
"ai_settings.prompts.message.saved": "Custom prompts saved",
"ai_settings.prompts.placeholder.empty": "Leave empty to add nothing extra",
"ai_settings.prompts.user.description": "This content is appended as a system message after the built-in system prompts. Use it for personal style preferences, output constraints, or team rules. System rules still take precedence for safety boundaries.",
"ai_settings.prompts.user.title": "User-level custom prompts",
"ai_settings.provider.action.add": "Add model provider",
"ai_settings.provider.action.delete": "Delete",
"ai_settings.provider.action.edit": "Edit",
"ai_settings.provider.auto_model": "Auto-selected",
"ai_settings.provider.confirm_delete": "Delete this provider?",
"ai_settings.provider.editor.add_title": "Add model provider",
"ai_settings.provider.editor.edit_title": "Edit model provider",
"ai_settings.provider.empty.description": "Add one to start using the AI assistant",
"ai_settings.provider.empty.title": "No model provider configured",
"ai_settings.provider.next_provider": "next provider",
"ai_settings.provider.no_model": "No model selected",
"ai_settings.provider_preset.anthropic.desc": "Claude Opus/Sonnet",
"ai_settings.provider_preset.anthropic.label": "Claude",
"ai_settings.provider_preset.custom.desc": "Custom API endpoint",
"ai_settings.provider_preset.custom.label": "Custom",
"ai_settings.provider_preset.deepseek.desc": "DeepSeek-V4 / R1",
"ai_settings.provider_preset.deepseek.label": "DeepSeek",
"ai_settings.provider_preset.gemini.desc": "Gemini 3.1 / 2.5 series",
"ai_settings.provider_preset.gemini.label": "Gemini",
"ai_settings.provider_preset.minimax.desc": "M3 / M2.7 series (Anthropic-compatible)",
"ai_settings.provider_preset.minimax.label": "MiniMax",
"ai_settings.provider_preset.moonshot.desc": "Kimi K2.5 (Anthropic-compatible)",
"ai_settings.provider_preset.moonshot.label": "Kimi",
"ai_settings.provider_preset.ollama.desc": "Locally deployed open-source models",
"ai_settings.provider_preset.ollama.label": "Ollama",
"ai_settings.provider_preset.openai.desc": "GPT-5.4 / 5.3 series",
"ai_settings.provider_preset.openai.label": "OpenAI",
"ai_settings.provider_preset.qwen_bailian.desc": "Bailian Anthropic-compatible endpoint / remote model list",
"ai_settings.provider_preset.qwen_bailian.label": "Qwen (Bailian General)",
"ai_settings.provider_preset.qwen_coding_plan.desc": "Claude Code CLI proxy chain / official supported model list",
"ai_settings.provider_preset.qwen_coding_plan.label": "Qwen (Coding Plan)",
"ai_settings.provider_preset.volcengine_ark.desc": "Ark general inference / Doubao models",
"ai_settings.provider_preset.volcengine_ark.label": "Volcengine Ark",
"ai_settings.provider_preset.volcengine_coding.desc": "Ark Code / Coding Plan",
"ai_settings.provider_preset.volcengine_coding.label": "Volcengine Coding Plan",
"ai_settings.provider_preset.zhipu.desc": "GLM-5 / GLM-5-Turbo",
"ai_settings.provider_preset.zhipu.label": "Zhipu GLM",
"ai_settings.safety.description": "Control which SQL operation types AI may execute to protect data safety",
"ai_settings.safety.full.desc": "AI may run all operations, including DDL. High-risk operations show warnings automatically.",
"ai_settings.safety.full.label": "Full mode",
"ai_settings.safety.readonly.desc": "AI may only run SELECT and similar query operations. This is the safest mode.",
"ai_settings.safety.readonly.label": "Read-only mode",
"ai_settings.safety.readwrite.desc": "AI may run INSERT/UPDATE/DELETE. Risky operations require confirmation.",
"ai_settings.safety.readwrite.label": "Read/write mode",
"ai_settings.skill.action.add": "Add Skill",
"ai_settings.skill.confirm_delete": "Delete this Skill?",
"ai_settings.skill.description": "A Skill is not another large prompt. It is a named prompt module + scope + tool dependencies. At this stage, keep it in the main repository. You do not need a separate GitHub repository unless you later distribute a shared skill pack.",
"ai_settings.skill.description_placeholder": "Private note, for example: confirm field names and risks before outputting SQL",
"ai_settings.skill.empty": "No Skills yet. You can define dedicated system prompts for database, JVM, and diagnostic scenarios.",
"ai_settings.skill.hint": "When enabled, it is injected by scope. If a required tool is missing, this Skill is skipped automatically.",
"ai_settings.skill.message.delete_failed": "Failed to delete Skill",
"ai_settings.skill.message.deleted": "Skill deleted",
"ai_settings.skill.message.save_failed": "Failed to save Skill",
"ai_settings.skill.message.saved": "Skill saved",
"ai_settings.skill.name_placeholder": "Skill name, for example: SQL review / JVM diagnostic plan",
"ai_settings.skill.required_tools_placeholder": "Optional: declare which tools this Skill depends on",
"ai_settings.skill.scope.database.desc": "Only enabled for SQL / database scenarios",
"ai_settings.skill.scope.database.label": "Database",
"ai_settings.skill.scope.global.desc": "Enabled for all AI sessions",
"ai_settings.skill.scope.global.label": "Global",
"ai_settings.skill.scope.jvm.desc": "Only enabled for JVM resource analysis scenarios",
"ai_settings.skill.scope.jvm.label": "JVM resources",
"ai_settings.skill.scope.jvm_diagnostic.desc": "Only enabled for the JVM diagnostic workbench",
"ai_settings.skill.scope.jvm_diagnostic.label": "JVM diagnostics",
"ai_settings.skill.scopes_placeholder": "Select where this Skill should apply",
"ai_settings.skill.status.disabled": "Disabled",
"ai_settings.skill.status.enabled": "Enabled",
"ai_settings.skill.system_prompt_placeholder": "Enter the system prompt this Skill should append. Keep it focused on one clear capability and avoid duplicating global prompts.",
"ai_settings.subtitle": "Configure AI models, safety level, and context options",
"ai_settings.title": "AI settings",
"ai_settings.tools.builtin_tool_label": "Built-in tool",
"ai_settings.tools.description": "When handling database questions, the AI assistant can call these built-in tools automatically to fetch real data without manual intervention.",
"ai_settings.tools.empty.no_matches": "No matching built-in tools. Try broader keywords such as mcp, logs, connection, transaction, shortcuts, or schema.",
"ai_settings.tools.execute_sql.desc": "Execute SQL query and return results",
"ai_settings.tools.execute_sql.detail": "Pass connectionId, dbName, and sql to execute SQL on the target database and return results, up to 50 rows. Safety level applies; read-only mode only allows SELECT/SHOW/DESCRIBE.",
"ai_settings.tools.get_columns.desc": "Get table column structure",
"ai_settings.tools.get_columns.detail": "Pass connectionId, dbName, and tableName to return each column's name, type, nullability, default value, and comment. AI must call this tool before generating SQL to confirm real column names.",
"ai_settings.tools.get_connections.desc": "Get all available database connections",
"ai_settings.tools.get_connections.detail": "Returns connection ID, name, type (MySQL/PostgreSQL, etc.), and Host address. AI uses the returned information to decide which connection to explore first.",
"ai_settings.tools.get_databases.desc": "Get all databases under a connection",
"ai_settings.tools.get_databases.detail": "Pass connectionId to return database or Schema names under that connection.",
"ai_settings.tools.get_table_ddl.desc": "Get table DDL",
"ai_settings.tools.get_table_ddl.detail": "Pass connectionId, dbName, and tableName to return the full CREATE TABLE statement, including column definitions, indexes, constraints, and related metadata.",
"ai_settings.tools.get_tables.desc": "Get all table names under a database",
"ai_settings.tools.get_tables.detail": "Pass connectionId and dbName to return table names. AI uses this to locate the target table mentioned by the user.",
"ai_settings.tools.parameters.default_value": "Default: {{value}}",
"ai_settings.tools.parameters.enum_values": "Allowed values: {{values}}",
"ai_settings.tools.parameters.example": "Example:",
"ai_settings.tools.parameters.hint_title": "Parameter hints",
"ai_settings.tools.parameters.optional": "Optional",
"ai_settings.tools.parameters.required": "Required",
"ai_settings.tools.parameters.type_label": "Type: {{type}}",
"ai_settings.tools.params.none": "None",
"ai_settings.tools.params_label": "Parameters:",
"ai_settings.tools.search.aria_label": "Search built-in tools",
"ai_settings.tools.search.clear": "Clear",
"ai_settings.tools.search.placeholder": "Search tools, flows, or parameters, for example mcp / lineLimit / allowMutating / transaction",
"ai_settings.tools.summary": "Showing {{flowVisible}}/{{flowTotal}} recommended flows and {{toolVisible}}/{{toolTotal}} built-in tools.",
"ai_settings.tools.workflow": "💡 Workflow: get_connections -> get_databases -> get_tables -> get_columns -> generate SQL",
"app.about.action.check_updates": "Check for Updates",
"app.about.action.download_progress": "Download Progress",
"app.about.action.download_update": "Download Update",
"app.about.action.hide_to_background": "Hide to Background",
"app.about.action.install_update": "Restart to update",
"app.about.action.mute_this_version": "Do Not Remind This Time",
"app.about.action.open_install_directory": "Open Install Directory",
"app.about.community.ai_book": "AI全书",
"app.about.description": "View version information, repository links, update status, and downloads.",
"app.about.download_progress.title": "Download Update",
"app.about.download_progress.title_with_version": "Download Update {{version}}",
"app.about.field.author": "Author",
"app.about.field.community": "Community",
"app.about.field.update_channel": "Update Channel",
"app.about.field.update_status": "Update Status",
"app.about.field.version": "Version",
"app.about.hero.no_update": "You are on the latest version",
"app.about.hero.update_available_version": "New version {{version}} found",
"app.about.last_checked_at": "Last checked: {{time}}",
"app.about.last_checked_never": "No update check yet",
"app.about.message.channel_switch_failed_with_error": "Failed to switch update channel: {{error}}",
"app.about.message.check_failed_with_error": "Update check failed: {{error}}",
"app.about.message.download_completed": "Update download completed",
"app.about.message.download_completed_with_path": "Update download completed. Package path: {{path}}",
"app.about.message.download_failed_with_error": "Update download failed: {{error}}",
"app.about.message.install_directory_opened_manual_replace": "Install directory opened. Complete the replacement manually.",
"app.about.message.install_failed_with_error": "Update installation failed: {{error}}",
"app.about.message.load_failed": "Failed to get app info: {{error}}",
"app.about.message.new_version_found": "New version {{version}} found",
"app.about.message.open_install_directory_failed_with_error": "Failed to open install directory: {{error}}",
"app.about.message.update_package_ready": "Update package is ready ({{version}})",
"app.about.message.update_package_ready_with_path": "Update package is ready ({{version}}), path: {{path}}",
"app.about.project.github.description": "View project source code",
"app.about.project.github.title": "GitHub Repository",
"app.about.project.issues.description": "Submit issues or suggestions",
"app.about.project.issues.title": "Issue Feedback",
"app.about.project.releases.description": "View release history",
"app.about.project.releases.title": "Release Notes",
"app.about.project_links": "Project Links",
"app.about.release_notes.fallback": "Fixes and user experience improvements.",
"app.about.title": "About GoNavi",
"app.about.update_channel.dev": "Dev Channel",
"app.about.update_channel.latest": "Latest Channel",
"app.about.update_status.check_failed": "Update check failed: {{error}}",
"app.about.update_status.checking": "Checking for updates...",
"app.about.update_status.latest": "You are on the latest version ({{version}})",
"app.about.update_status.new_version_downloaded": "New version {{version}} is downloaded. Restart to update.",
"app.about.update_status.new_version_not_downloaded": "New version {{version}} found (not downloaded)",
"app.about.update_status.not_checked": "Not checked",
"app.about.version.current": "Current Version",
"app.about.version.latest": "Latest Version",
"app.about.version.release_notes": "Update Notes",
"app.about.version.release_time": "Release Time",
"app.about.version_update.available": "Update available",
"app.about.version_update.channel_hint": "Receive the latest development build",
"app.about.version_update.title": "Version and Updates",
"app.about.version_update.up_to_date": "Up to date",
"app.ai_panel.action.close": "Close Panel",
"app.ai_panel.action.reload": "Reload",
"app.ai_panel.aria.close": "Close AI Panel",
"app.ai_panel.error.description": "This usually happens after hot reload invalidates lazy-loaded assets in development. The full-page white screen was prevented, and you can retry immediately.",
"app.ai_panel.error.title": "AI Panel Failed to Load",
"app.backend.error.reset_webview_zoom_failed": "Failed to reset WebView2 zoom: {{detail}}",
"app.browser_mock.export_connection_package_unsupported": "Browser mock does not support recovery package export",
"app.browser_mock.export_sql_unsupported": "Browser mock does not support SQL file export",
"app.browser_mock.import_connection_package_unsupported": "Browser mock does not support recovery package import; only legacy JSON connection arrays are supported",
"app.browser_mock.mcp_client.claude_code.installed": "Claude Code user-level MCP configuration has been written. Restart Claude CLI, then GoNavi will appear under User MCPs in /mcp.",
"app.browser_mock.mcp_client.claude_code.not_detected": "No Claude Code user-level GoNavi MCP configuration was detected",
"app.browser_mock.mcp_client.codex.installed": "Codex user-level MCP configuration has been written. Restart Codex CLI or the desktop app to see GoNavi.",
"app.browser_mock.mcp_client.codex.path_mismatch": "A GoNavi MCP record was detected in Codex, but it does not match the current GoNavi installation path. Updating is recommended.",
"app.browser_mock.mcp_http.not_running": "GoNavi MCP HTTP service is not running",
"app.browser_mock.mcp_http.started": "GoNavi MCP HTTP service has started",
"app.browser_mock.mcp_http.stopped": "GoNavi MCP HTTP service has stopped",
"app.browser_mock.mcp_server.command_required": "MCP command cannot be empty",
"app.browser_mock.mcp_server.test_success": "MCP mock test succeeded",
"app.browser_mock.mcp_tool.unavailable": "Browser mock is not connected to a real MCP service",
"app.browser_mock.provider.test_failed_detail": "Connection test failed: {{detail}}",
"app.browser_mock.provider.test_success": "Endpoint connectivity test succeeded",
"app.connection.message.editable_load_failed": "Failed to load the saved connection details. The masked configuration will be opened instead.",
"app.connection.message.editable_load_failed_with_detail": "Failed to load the saved connection details: {{detail}}. The masked configuration will be opened instead.",
"app.connection_package.action.start_export": "Start Export",
"app.connection_package.action.start_import": "Start Import",
"app.connection_package.dialog.export_title": "Export Connections",
"app.connection_package.dialog.file_password_placeholder": "Enter file protection password (optional)",
"app.connection_package.dialog.help.encrypted_passwords_recommend_file_password": "Passwords are encrypted. For public transfer, set a file protection password.",
"app.connection_package.dialog.help.exclude_passwords": "Only connection settings will be exported. Passwords are not included.",
"app.connection_package.dialog.help.share_file_password_separately": "Share the password through a separate channel. Do not send it with the file.",
"app.connection_package.dialog.import_password_title": "Enter Import Password",
"app.connection_package.dialog.option.include_passwords": "Export connection passwords",
"app.connection_package.dialog.option.use_file_password": "Set file protection password",
"app.connection_package.dialog.restore_password_placeholder": "Enter recovery package password",
"app.connection_package.error.export_capability_unavailable": "Export failed: the current backend does not provide the new export capability",
"app.connection_package.error.file_password_required": "File protection password cannot be empty",
"app.connection_package.error.import_capability_unavailable": "Import failed: the current backend does not provide the new import capability",
"app.connection_package.error.import_no_connections": "Import failed: the backend did not return a connection list",
"app.connection_package.error.missing_import_payload": "Import failed: recovery package content to import was not found",
"app.connection_package.error.refresh_failed_no_connections": "Import succeeded, but refreshing the connection list failed: the backend did not return a connection list",
"app.connection_package.error.restore_password_required": "Recovery package password cannot be empty",
"app.connection_package.message.export_failed": "Export failed",
"app.connection_package.message.export_succeeded": "Export succeeded",
"app.connection_package.message.import_failed": "Import failed",
"app.connection_package.message.import_failed_with_error": "Import failed: {{error}}",
"app.connection_package.message.imported_connections": "Imported {{count}} connections",
"app.connection_package.message.imported_with_missing_passwords": "Imported {{count}} connections. Some connections do not include passwords; edit those connections and enter passwords before saving.",
"app.connection_package.message.no_connections_to_export": "No connections to export",
"app.connection_package.message.unsupported_file_format": "File format error: only GoNavi recovery packages, legacy JSON connection arrays, MySQL Workbench XML, or Navicat NCX are supported",
"app.data_root.action.migrate_and_switch": "Migrate Existing Data and Switch",
"app.data_root.action.open_current": "Open Current Directory",
"app.data_root.action.restore_default_directory": "Restore Default Directory",
"app.data_root.action.select": "Select Directory",
"app.data_root.action.switch_only": "Switch to Selected Directory Only",
"app.data_root.apply_method": "Apply Method",
"app.data_root.backend.dialog.select_directory": "Select GoNavi Data Directory",
"app.data_root.backend.error.create_bootstrap_directory_failed": "Failed to create default bootstrap directory: {{detail}}",
"app.data_root.backend.error.create_data_directory_failed": "Failed to create data directory: {{detail}}",
"app.data_root.backend.error.create_target_failed": "Unable to create target data directory: {{detail}}",
"app.data_root.backend.error.directory_empty": "Data directory cannot be empty",
"app.data_root.backend.error.directory_unavailable": "Data directory does not exist or is not accessible",
"app.data_root.backend.error.migrate_directory_failed": "Unable to migrate directory ({{entry}}): {{detail}}",
"app.data_root.backend.error.migrate_file_failed": "Unable to migrate file ({{entry}}): {{detail}}",
"app.data_root.backend.error.open_directory_failed": "Failed to open data directory: {{detail}}",
"app.data_root.backend.error.open_directory_unsupported": "Opening directories is not supported on this platform: {{platform}}",
"app.data_root.backend.error.parse_migrated_security_update_manifest_failed": "Failed to parse migrated security update manifest: {{detail}}",
"app.data_root.backend.error.parse_migrated_security_update_result_failed": "Failed to parse migrated security update result: {{detail}}",
"app.data_root.backend.error.read_migrated_security_update_manifest_failed": "Failed to read migrated security update manifest: {{detail}}",
"app.data_root.backend.error.read_migrated_security_update_result_failed": "Failed to read migrated security update result: {{detail}}",
"app.data_root.backend.error.read_migrated_security_update_state_failed": "Failed to read migrated security update state: {{detail}}",
"app.data_root.backend.error.read_source_failed": "Unable to read source data ({{entry}}): {{detail}}",
"app.data_root.backend.error.read_source_root_failed": "Failed to read source data directory: {{detail}}",
"app.data_root.backend.error.resolve_source_failed": "Failed to resolve source data directory: {{detail}}",
"app.data_root.backend.error.resolve_target_failed": "Failed to resolve target data directory: {{detail}}",
"app.data_root.backend.error.target_inside_source": "Target data directory cannot be inside the source directory",
"app.data_root.backend.error.write_migrated_security_update_manifest_failed": "Failed to write migrated security update manifest: {{detail}}",
"app.data_root.backend.error.write_migrated_security_update_result_failed": "Failed to write migrated security update result: {{detail}}",
"app.data_root.backend.error.write_migrated_security_update_state_failed": "Failed to write migrated security update state: {{detail}}",
"app.data_root.backend.message.migrated_restart": "Data migrated and switched to the new directory. Restart the app to finish switching all modules.",
"app.data_root.backend.message.opened": "Data directory opened",
"app.data_root.backend.message.unchanged": "Data directory is unchanged",
"app.data_root.backend.message.updated_restart": "Data directory updated. Restart the app so AI and other runtime modules fully switch to the new directory.",
"app.data_root.current_directory": "Current Directory",
"app.data_root.default_directory": "Default Directory",
"app.data_root.description": "Manage the root directory for file-based data such as connections, proxy, AI settings, and drivers.",
"app.data_root.driver_directory": "Driver Directory",
"app.data_root.message.apply_failed": "Failed to apply data directory",
"app.data_root.message.apply_failed_with_error": "Failed to apply data directory: {{error}}",
"app.data_root.message.load_failed": "Failed to load data directory info",
"app.data_root.message.load_failed_with_error": "Failed to load data directory info: {{error}}",
"app.data_root.message.open_failed": "Failed to open data directory",
"app.data_root.message.open_failed_with_error": "Failed to open data directory: {{error}}",
"app.data_root.message.select_failed": "Failed to select data directory",
"app.data_root.message.select_failed_with_error": "Failed to select data directory: {{error}}",
"app.data_root.message.select_valid_first": "Select a valid data directory first",
"app.data_root.message.updated": "Data directory updated",
"app.data_root.placeholder.select_new_directory": "Select a new data directory",
"app.data_root.restart_hint": "Restarting the app after switching is recommended so AI and other long-lived modules fully move to the new directory. Sensitive passwords remain in the system secret store and are not migrated with file directories.",
"app.data_root.switch_target": "Switch Target",
"app.data_root.title": "Data Storage Location",
"app.linux_cjk_font_banner.action.open_font_settings": "Font Settings",
"app.linux_cjk_font_banner.description": "Chinese text may render as missing glyph boxes. Install fonts, then restart GoNavi: ",
"app.linux_cjk_font_banner.title": "Linux CJK fonts missing",
"app.proxy.apply": "Apply Configuration",
"app.proxy.auth_title": "Authentication",
"app.proxy.backend.error.test_host_missing": "Probe URL is missing a host",
"app.proxy.backend.error.test_scheme_unsupported": "Probe URL scheme is not supported: {{scheme}}",
"app.proxy.backend.error.test_url_empty": "Probe URL is empty",
"app.proxy.backend.error.test_url_invalid": "Probe URL is invalid: {{detail}}",
"app.proxy.backend.message.test_failed": "Connection test failed: {{url}} ({{detail}})",
"app.proxy.backend.message.test_http_status": "Reached the target, but it returned HTTP {{status}} in {{duration}}ms",
"app.proxy.backend.message.test_success": "Connection test succeeded: HTTP {{status}} in {{duration}}ms",
"app.proxy.clear_saved_password": "Clear saved password",
"app.proxy.clear_saved_password_pending": "The saved proxy password will be cleared after you click Apply Configuration.",
"app.proxy.connection_title": "Proxy Endpoint",
"app.proxy.description": "Configure update checks, driver management, and connection network access that has no separate proxy.",
"app.proxy.disabled_hint": "You can fill the fields while disabled. Applying will save the draft and keep the global proxy disabled.",
"app.proxy.enable": "Enable Global Proxy",
"app.proxy.enabled_edit_hint": "Changes take effect only after Apply Configuration, not while you are typing.",
"app.proxy.host": "Proxy Host",
"app.proxy.host_placeholder": "Example: 127.0.0.1",
"app.proxy.message.config_applied": "Global proxy configuration has been applied",
"app.proxy.message.invalid_enabled": "Global proxy is enabled, but the host or port is invalid. It is currently treated as disabled.",
"app.proxy.message.save_failed": "Global proxy configuration failed: {{error}}",
"app.proxy.no_auth_hint": "Leave username and password empty when the proxy does not require authentication.",
"app.proxy.password_optional": "Password (optional)",
"app.proxy.password_saved_hint": "A proxy password is saved. Leave blank to keep it, or enter a new password to replace it.",
"app.proxy.port": "Port",
"app.proxy.preset.clash_mixed": "Clash/V2Ray 7890",
"app.proxy.preset.http_local": "HTTP 8080",
"app.proxy.preset.socks5_local": "SOCKS5 1080",
"app.proxy.reset": "Reset",
"app.proxy.scope_hint": "* Applies to update checks, driver management network requests, GitHub asset downloads, and database connections without a separate proxy",
"app.proxy.section_title": "Global Proxy",
"app.proxy.status.disabled": "Disabled",
"app.proxy.status.disabled_description": "Public network requests such as update checks and driver downloads will connect directly or use the system proxy.",
"app.proxy.status.enabled": "Enabled",
"app.proxy.status.enabled_description": "Applicable network requests will be routed through {{type}} {{endpoint}}.",
"app.proxy.status.incomplete": "Configuration incomplete",
"app.proxy.status.incomplete_description": "Enter a valid proxy host and port before enabling the global proxy.",
"app.proxy.switch.disabled": "Off",
"app.proxy.switch.enabled": "On",
"app.proxy.test.action": "Test Connection",
"app.proxy.test.description": "Request the target URL with the current proxy draft before applying it.",
"app.proxy.test.disabled_hint": "Enable the global proxy draft first, or click a common preset above to enable it automatically.",
"app.proxy.test.message.enable_first": "Enable the global proxy draft first",
"app.proxy.test.message.unavailable": "Global proxy testing is not supported by the current backend",
"app.proxy.test.message.url_required": "Enter a probe URL",
"app.proxy.test.preset.baidu": "Baidu",
"app.proxy.test.preset.github_api": "GitHub API",
"app.proxy.test.preset.github_release": "GoNavi Release",
"app.proxy.test.preset.go_module_proxy": "Go module proxy",
"app.proxy.test.result.duration": "{{duration}}ms",
"app.proxy.test.result.final_url": "Final URL: {{url}}",
"app.proxy.test.result.status": "HTTP {{status}}",
"app.proxy.test.target_label": "Probe Target",
"app.proxy.test.target_placeholder": "Enter a URL, for example https://api.github.com/",
"app.proxy.test.title": "Test Connection",
"app.proxy.title": "Global Proxy Settings",
"app.proxy.type": "Proxy Type",
"app.proxy.type_http": "HTTP CONNECT",
"app.proxy.type_socks5": "SOCKS5",
"app.proxy.unsaved_hint": "There are unapplied changes. They take effect only after you click Apply Configuration.",
"app.proxy.username_optional": "Username (optional)",
"app.quit.message.quit_failed": "Failed to quit application: {{detail}}",
"app.quit.unsaved_sql.cancel": "Cancel",
"app.quit.unsaved_sql.confirm_exit": "Quit anyway",
"app.quit.unsaved_sql.content_multiple": "{{label}} SQL editors have unsaved changes. Save before quitting, or quit and discard the unsaved changes.",
"app.quit.unsaved_sql.content_single": "{{label}} has unsaved SQL. Save before quitting, or quit and discard the unsaved changes.",
"app.quit.unsaved_sql.inspect_failed": "Failed to inspect unsaved SQL. Quit was cancelled: {{detail}}",
"app.quit.unsaved_sql.save_exit": "Save and quit",
"app.quit.unsaved_sql.save_failed_cancel_exit": "Save failed. Quit was cancelled: {{detail}}",
"app.quit.unsaved_sql.saved": "SQL changes saved, quitting",
"app.quit.unsaved_sql.title": "Unsaved SQL",
"app.security_update.error.capability_unavailable": "Security update capability is unavailable",
"app.security_update.message.completed": "Saved configurations have completed the security update",
"app.security_update.message.needs_attention": "The update is not complete yet. A few configurations need your attention.",
"app.security_update.message.not_finished_retry_later": "Security update is not complete. Try again later.",
"app.security_update.message.postpone_failed": "Unable to postpone this security update right now",
"app.security_update.message.rolled_back": "This update did not complete. The system kept the currently usable configuration.",
"app.security_update.stage.checking_saved_config": "Checking saved configurations",
"app.security_update.stage.updating_secure_storage": "Updating secure storage",
"app.security_update.stage.verifying_result": "Verifying update result",
"app.settings.description": "Manage general settings such as language, proxy, theme, AI, and about.",
"app.settings.entry.about.description": "View version information, repository links, and update status.",
"app.settings.entry.about.title": "About GoNavi",
"app.settings.entry.ai.description": "Manage model providers, keys, and default behavior.",
"app.settings.entry.ai.title": "AI Settings",
"app.settings.entry.proxy.description": "Configure update checks, driver management, and public network access.",
"app.settings.entry.proxy.title": "Global Proxy",
"app.settings.entry.theme.description": "Switch light or dark theme and adjust interface appearance.",
"app.settings.entry.theme.title": "Theme and Appearance",
"app.settings.entry.web_auth.description": "View browser access authentication status and change the admin password.",
"app.settings.entry.web_auth.title": "Browser Access Authentication",
"app.settings.group.about.description": "Version details, repository links, and other product information.",
"app.settings.group.about.title": "About",
"app.settings.group.preferences.description": "Language, appearance, and sidebar display preferences.",
"app.settings.group.preferences.title": "Preferences",
"app.settings.group.services.description": "Network access and AI-related service configuration.",
"app.settings.group.services.title": "Services",
"app.settings.sidebar_metadata.description": "Choose which table metadata appears beside table names in the left sidebar.",
"app.settings.sidebar_metadata.title": "Sidebar Table Metadata",
"app.settings.title": "Settings Center",
"app.settings.web_auth.description": "View the current browser access authentication status, session policy, and 2FA state. You can also change the admin password after signing in.",
"app.settings.web_auth.load_failed": "Failed to load browser access authentication settings",
"app.settings.web_auth.password.code_label": "Current code / recovery code",
"app.settings.web_auth.password.code_placeholder": "Enter the current Google Authenticator code or a recovery code",
"app.settings.web_auth.password.confirm_label": "Confirm new password",
"app.settings.web_auth.password.confirm_placeholder": "Enter the new password again",
"app.settings.web_auth.password.current_label": "Current admin password",
"app.settings.web_auth.password.current_placeholder": "Enter the current admin password",
"app.settings.web_auth.password.description": "Changing the password rotates the current web session and signs out other active sessions.",
"app.settings.web_auth.password.description_with_code": "Changing the password rotates the current web session and signs out other active sessions. When 2FA is enabled, enter the current verification code or a recovery code too.",
"app.settings.web_auth.password.new_label": "New admin password",
"app.settings.web_auth.password.new_placeholder": "At least 10 characters",
"app.settings.web_auth.password.save_failed": "Failed to update the admin password",
"app.settings.web_auth.password.save_success": "Admin password updated",
"app.settings.web_auth.password.submit": "Save New Password",
"app.settings.web_auth.password.title": "Change Admin Password",
"app.settings.web_auth.state.disabled": "Disabled",
"app.settings.web_auth.state.enabled": "Enabled",
"app.settings.web_auth.status.absolute_timeout": "Absolute timeout",
"app.settings.web_auth.status.auth_required": "Password sign-in",
"app.settings.web_auth.status.idle_timeout": "Idle timeout",
"app.settings.web_auth.status.recovery_codes": "Recovery codes",
"app.settings.web_auth.status.remember_days": "Remember sign-in",
"app.settings.web_auth.status.two_factor": "Google Authenticator 2FA",
"app.settings.web_auth.status.updated_at": "Last updated",
"app.settings.web_auth.title": "Browser Access Authentication",
"app.settings.web_auth.value.days": "{{count}} days",
"app.settings.web_auth.value.hours": "{{count}} hours",
"app.settings.web_auth.value.minutes": "{{count}} minutes",
"app.settings.web_auth.value.recovery_codes": "{{count}} remaining",
"app.shortcuts.action.diagnoseQuery.description": "Run EXPLAIN on the current SQL and visualize the execution plan with index suggestions",
"app.shortcuts.action.diagnoseQuery.label": "SQL Diagnose",
"app.shortcuts.action.duplicateCurrentLine.description": "Duplicate the line at the cursor in the query editor and insert it below",
"app.shortcuts.action.duplicateCurrentLine.label": "Duplicate Current Line Below",
"app.shortcuts.action.focusSidebarSearch.description": "Focus the left connection tree search box",
"app.shortcuts.action.focusSidebarSearch.label": "Focus Sidebar Search",
"app.shortcuts.action.formatSql.description": "Format SQL in the current query editor",
"app.shortcuts.action.formatSql.label": "Format SQL",
"app.shortcuts.action.newConnection.description": "Create a new database, runtime, or other data source connection",
"app.shortcuts.action.newConnection.label": "New Data Source",
"app.shortcuts.action.newQueryTab.description": "Create a new SQL query tab",
"app.shortcuts.action.newQueryTab.label": "New Query Tab",
"app.shortcuts.action.openShortcutManager.description": "Open the shortcut settings panel",
"app.shortcuts.action.openShortcutManager.label": "Open Shortcut Manager",
"app.shortcuts.action.record": "Record",
"app.shortcuts.action.resetWindowZoom.description": "Manually trigger when the font becomes abnormally large after restoring from the Windows taskbar; toggles maximized state once so WebView2 recalculates font metrics",
"app.shortcuts.action.resetWindowZoom.label": "Reset Window Zoom",
"app.shortcuts.action.restore_defaults": "Restore Defaults",
"app.shortcuts.action.runQuery.description": "Run SQL in the current query page",
"app.shortcuts.action.runQuery.label": "Run SQL",
"app.shortcuts.action.saveQuery.description": "Save the current query tab; unnamed queries open the save dialog",
"app.shortcuts.action.saveQuery.label": "Save Query",
"app.shortcuts.action.selectCurrentStatement.description": "Select the line at the cursor in the query editor and copy it to the clipboard",
"app.shortcuts.action.selectCurrentStatement.label": "Select Current Line and Copy",
"app.shortcuts.action.sendAIChatMessage.description": "Send the current message from the AI input; Shift+Enter always inserts a new line",
"app.shortcuts.action.sendAIChatMessage.label": "Send AI Chat",
"app.shortcuts.action.showSlowQueries.description": "View slow SQL history for the current connection (default threshold 500ms)",
"app.shortcuts.action.showSlowQueries.label": "Slow SQL History",
"app.shortcuts.action.switchToNextTab.description": "Move right among open tabs",
"app.shortcuts.action.switchToNextTab.label": "Switch to Next Tab",
"app.shortcuts.action.switchToPreviousTab.description": "Move left among open tabs",
"app.shortcuts.action.switchToPreviousTab.label": "Switch to Previous Tab",
"app.shortcuts.action.toggleAIPanel.description": "Open the right AI data insights panel",
"app.shortcuts.action.toggleAIPanel.label": "Open AI Data Insights",
"app.shortcuts.action.toggleLogPanel.description": "Open or close the SQL execution log panel",
"app.shortcuts.action.toggleLogPanel.label": "Toggle Log Panel",
"app.shortcuts.action.toggleMacFullscreen.description": "Native fullscreen toggle in macOS native window control mode",
"app.shortcuts.action.toggleMacFullscreen.label": "Toggle Native Fullscreen",
"app.shortcuts.action.toggleQueryResultsPanel.description": "Show or hide the results area below the query editor",
"app.shortcuts.action.toggleQueryResultsPanel.label": "Toggle Results Panel",
"app.shortcuts.action.toggleTheme.description": "Switch between light and dark themes",
"app.shortcuts.action.toggleTheme.label": "Toggle Theme",
"app.shortcuts.action.triggerSqlAiCompletion.description": "Manually request AI inline completion in the current SQL editor",
"app.shortcuts.action.triggerSqlAiCompletion.label": "Trigger SQL AI Completion",
"app.shortcuts.capture_hint": "Press the shortcut after clicking \"Record\". Press Esc to cancel recording. Global shortcuts should include a modifier; AI chat send only supports Enter-related combinations, and Shift+Enter keeps inserting a new line.",
"app.shortcuts.capture_waiting": "Press a shortcut...",
"app.shortcuts.context.datagrid": "Data Grid",
"app.shortcuts.context.global": "Browser",
"app.shortcuts.context.monaco": "Editor",
"app.shortcuts.description": "View, record, and enable common global shortcuts in one place.",
"app.shortcuts.message.ai_send_limit": "AI chat send shortcut only supports Enter / Ctrl+Enter / Cmd+Enter / Alt+Enter; Shift+Enter keeps inserting a new line",
"app.shortcuts.message.conflict": "Conflicts with \"{{action}}\". Choose another shortcut.",
"app.shortcuts.message.modifier_required": "Shortcut must include at least one of Ctrl / Alt / Shift / Meta",
"app.shortcuts.message.reserved_conflict_info": "Overrides the editor default shortcut \"{{labels}}\"",
"app.shortcuts.message.reserved_conflict_warning": "Conflicts with {{contexts}} \"{{labels}}\" and may not work",
"app.shortcuts.message.restored_defaults": "Default shortcuts restored",
"app.shortcuts.reserved.browser_close_tab": "Browser Close Tab",
"app.shortcuts.reserved.browser_new_incognito_window": "Browser New Incognito Window",
"app.shortcuts.reserved.browser_new_tab": "Browser New Tab",
"app.shortcuts.reserved.browser_new_window": "Browser New Window",
"app.shortcuts.reserved.browser_print": "Browser Print",
"app.shortcuts.reserved.browser_save": "Browser Save",
"app.shortcuts.reserved.datagrid_copy": "Data Grid Copy",
"app.shortcuts.reserved.editor_add_selection": "Editor Add Selection",
"app.shortcuts.reserved.editor_delete_line": "Editor Delete Line",
"app.shortcuts.reserved.editor_find": "Editor Find",
"app.shortcuts.reserved.editor_find_global": "Editor Global Find",
"app.shortcuts.reserved.editor_goto_line": "Editor Go to Line",
"app.shortcuts.reserved.editor_insert_line_after": "Editor Insert Line Below",
"app.shortcuts.reserved.editor_insert_line_before": "Editor Insert Line Above",
"app.shortcuts.reserved.editor_quick_open": "Editor Quick Open",
"app.shortcuts.reserved.editor_rename_symbol": "Editor Rename Symbol",
"app.shortcuts.reserved.editor_replace": "Editor Replace",
"app.shortcuts.title": "Shortcut Manager",
"app.sidebar.ai_assistant": "AI Assistant",
"app.sidebar.resize_width": "Drag to resize width",
"app.sidebar.settings": "Settings",
"app.sidebar.sql_execution_log": "SQL Execution Log",
"app.sidebar.tools": "Tools",
"app.startup_readiness.loading_local_config": "Loading local configuration...",
"app.startup_readiness.loading_security_config": "Loading security configuration...",
"app.theme.action.restore_defaults": "Restore Defaults",
"app.theme.appearance.blur_hint": "* Only controls blur for in-app overlay layers",
"app.theme.appearance.blur_title": "Gaussian Blur (Blur)",
"app.theme.appearance.enable_transparency_blur": "Enable Transparency and Blur",
"app.theme.appearance.enable_transparency_blur_hint": "When disabled, the current thresholds are retained and restored directly when re-enabled.",
"app.theme.appearance.font_size_title": "Base Font Size (Font Size)",
"app.theme.appearance.opacity_title": "Background Opacity (Opacity)",
"app.theme.appearance.sidebar_rail_scale_hint": "Only affects the V2 left navigation rail. Use it to enlarge buttons and connection icons on large displays.",
"app.theme.appearance.sidebar_rail_scale_title": "Left Navigation Button Size",
"app.theme.appearance.transparency_blur_title": "Transparency and Blur Effects",
"app.theme.appearance.ui_scale_hint": "* Recommended for small screens: 85%-95%",
"app.theme.appearance.ui_scale_title": "UI Scale (UI Scale)",
"app.theme.appearance.windows_acrylic_hint": "Windows uses the system Acrylic effect. Blur intensity is controlled by the system.",
"app.theme.appearance_settings_description": "Adjust scale, font size, transparency, and blur effects in one place.",
"app.theme.appearance_settings_title": "Appearance Settings",
"app.theme.data_table.column_width_hint": "Standard mode defaults to 200px; compact mode defaults to 140px. Manually adjusted column widths are preserved first.",
"app.theme.data_table.column_width_mode": "Data Table Column Width Mode",
"app.theme.data_table.column_width_mode.compact": "Compact 140px",
"app.theme.data_table.column_width_mode.standard": "Standard 200px",
"app.theme.data_table.density": "Table Density",
"app.theme.data_table.density.comfortable": "Comfortable",
"app.theme.data_table.density.compact": "Compact",
"app.theme.data_table.density.standard": "Standard",
"app.theme.data_table.density_hint": "Controls row height, column width, and padding. Comfortable is better for large-screen review; compact maximizes information density. Manually dragged column widths are preserved first.",
"app.theme.data_table.follow_global": "Follow Global",
"app.theme.data_table.font_size": "Data Table Font Size",
"app.theme.data_table.sidebar_tree_font_size": "Sidebar Schema Tree Font Size",
"app.theme.data_table.table_double_click_action": "Table Double-click Action",
"app.theme.data_table.table_double_click_action.open_data": "Open data",
"app.theme.data_table.table_double_click_action.open_design": "Open object design",
"app.theme.data_table.table_double_click_action_hint": "Controls the default action when double-clicking table nodes in the left schema tree. The default opens table data; switch it to open object design directly.",
"app.theme.data_table.title": "Data Table Display",
"app.theme.data_table.vertical_borders": "Show Data Table Vertical Separators",
"app.theme.data_table.vertical_borders_hint": "Only affects DataGrid on data table pages, not other table components.",
"app.theme.data_table.row_number": "Show Data Table Row Numbers",
"app.theme.data_table.row_number_hint": "Applies to table data preview and SQL result grids. Turn off to hide the left row-number column. Enabled by default.",
"app.theme.font_family.default_mono_option": "Default code font",
"app.theme.font_family.default_ui_option": "Default UI font",
"app.theme.font_family.linux_cjk_install_prefix": "Ubuntu/Linux did not detect Chinese CJK fonts, so the interface may show missing glyph boxes. Install: ",
"app.theme.font_family.linux_cjk_install_suffix": ", then restart GoNavi.",
"app.theme.font_family.load_failed": "Failed to load system fonts",
"app.theme.font_family.load_failed_fallback": "Failed to load system fonts. Common font presets are being used: {{error}}",
"app.theme.font_family.loaded_ui_hint": "Read {{count}} font families from this system. Type to search and match. Clear the field to fall back to the default UI font.",
"app.theme.font_family.loading_ui_hint": "Loads installed fonts from the current system in real time. Type to search and match. Clear the field to fall back to the default UI font.",
"app.theme.font_family.mono_fallback_hint": "Common code font presets are being used. Applies to monospace content such as the SQL editor, AI code blocks, logs, DDL, and data tables.",
"app.theme.font_family.mono_hint": "Installed system fonts are shown first, with names close to Mono/Code/Console ranked earlier. Applies to monospace content such as the SQL editor, AI code blocks, logs, DDL, and data tables.",
"app.theme.font_family.mono_title": "Mono Font Family",
"app.theme.font_family.title": "Font Family",
"app.theme.font_family.ui_title": "UI Font Family",
"app.theme.mac_window.restart_hint": "* Custom top-right buttons are hidden; restart the app if the system window style does not refresh immediately",
"app.theme.mac_window.title": "macOS Window Controls",
"app.theme.mac_window.use_native_controls": "Use macOS Native Window Controls",
"app.theme.mac_window.use_native_controls_hint": "Shows the red/yellow/green buttons in the top-left and prioritizes native macOS fullscreen behavior.",
"app.theme.instant_apply_hint": "Changes apply immediately. No save required.",
"app.theme.mode.dark.description": "Better for low-light environments with a calmer visual weight.",
"app.theme.mode.dark.label": "Dark Theme",
"app.theme.mode.light.description": "Better for bright environments with lighter visual hierarchy.",
"app.theme.mode.light.label": "Light Theme",
"app.theme.mode.system.description": "Follow the operating system appearance and switch automatically.",
"app.theme.mode.system.label": "Follow System",
"app.theme.mode_title": "Light & Dark",
"app.theme.nav.appearance.description": "Scale, fonts, transparency, and sidebar scale",
"app.theme.nav.appearance.title": "Display & Fonts",
"app.theme.nav.theme.description": "Light/dark mode, UI version, and search style",
"app.theme.nav.theme.title": "Theme & Interface",
"app.theme.nav.workspace.title": "Workspace",
"app.theme.nav.workspace.description": "Query template, tab layout, data grid, and startup",
"app.theme.navigation_title": "Sections",
"app.theme.query_template.description": "Configure the SQL that is prefilled when you open a fresh query tab.",
"app.theme.query_template.hint": "Clear the text to keep new query tabs blank. Use Restore default to go back to SELECT * FROM .",
"app.theme.query_template.reset_default": "Restore default",
"app.theme.query_template.title": "New Query Default SQL",
"app.theme.startup_window.fullscreen": "Fullscreen on startup",
"app.theme.startup_window.fullscreen_windows": "Fullscreen on startup (Windows treats this as maximize)",
"app.theme.startup_window.hint": "* Takes effect on next startup",
"app.theme.startup_window.title": "Startup Window",
"app.theme.startup_window.windows_hint": "* On Windows this option is treated as \"maximize on startup\" and takes effect on next startup",
"app.theme.tab_display.action.move_down": "Move down",
"app.theme.tab_display.action.move_up": "Move up",
"app.theme.tab_display.badge.current": "Current",
"app.theme.tab_display.description": "Customize the display order for connection name, object type, object name, database, Schema, and Host/IP. In double-line mode, context can be placed on the secondary row.",
"app.theme.tab_display.element.connection.description": "Connection alias or environment name, for example DEV",
"app.theme.tab_display.element.connection.label": "Connection",
"app.theme.tab_display.element.database.description": "Current DB / catalog name",
"app.theme.tab_display.element.database.label": "Database",
"app.theme.tab_display.element.host.description": "Connection target address summary",
"app.theme.tab_display.element.host.label": "Host/IP",
"app.theme.tab_display.element.kind.description": "Type labels such as SQL / TABLE / VIEW",
"app.theme.tab_display.element.kind.label": "Object type",
"app.theme.tab_display.element.object.description": "Core names such as table, query, or resource names",
"app.theme.tab_display.element.object.label": "Object name",
"app.theme.tab_display.element.schema.description": "schema / owner prefix",
"app.theme.tab_display.element.schema.label": "Schema",
"app.theme.tab_display.layout.double": "Double line",
"app.theme.tab_display.layout.single": "Single line",
"app.theme.tab_display.preview.default_label": "Default label",
"app.theme.tab_display.preview.focused": "; selected {{label}}",
"app.theme.tab_display.preview.prefix": "Current preview: ",
"app.theme.tab_display.preview.secondary": ", secondary row {{labels}}",
"app.theme.tab_display.row.primary": "Primary row",
"app.theme.tab_display.row.secondary": "Secondary row",
"app.theme.tab_display.title": "Tab Label Display",
"app.theme.theme_settings_description": "Switch light and dark themes while keeping the overall visual style consistent.",
"app.theme.theme_settings_title": "Theme Settings",
"app.theme.workspace_settings_title": "Workspace Settings",
"app.theme.workspace_settings_description": "Adjust query templates, tab layout, and data grid behavior.",
"app.theme.ui_version.badge.new": "NEW",
"app.theme.ui_version.beta_warning": "The new UI is still in Beta, so some screens may look different from the old UI. You can switch back at any time if needed.",
"app.theme.ui_version.description": "Switch the overall appearance while keeping all features available. The new version uses a more compact information hierarchy and a more modern visual language.",
"app.theme.ui_version.legacy.badge": "Default",
"app.theme.ui_version.legacy.description": "The current stable interface with all features fully available.",
"app.theme.ui_version.legacy.label": "Old UI",
"app.theme.ui_version.platform_hint": "Windows, macOS, and Linux can all switch versions. Changes take effect immediately, and some modals use the new style the next time they open.",
"app.theme.ui_version.sidebar_search.command": "New Command Search",
"app.theme.ui_version.sidebar_search.filter": "Legacy Sidebar Filter",
"app.theme.ui_version.sidebar_search.hint": "New Command Search is better for jumping to connections, tables, and actions. Enable sync in the panel to keep filtering the left tree; Legacy Sidebar Filter shows the input directly and keeps the filter text.",
"app.theme.ui_version.sidebar_search.title": "New Left Sidebar Search Mode",
"app.theme.ui_version.title": "Interface Version",
"app.theme.ui_version.v2.badge": "Beta",
"app.theme.ui_version.v2.description": "A redesigned compact interface with stronger AI entry points and table overview.",
"app.theme.ui_version.v2.label": "New UI",
"app.tools.description": "Manage connection configuration, sync, drivers, and shortcuts.",
"app.tools.entry.data_compare.description": "Analyze inserted, updated, deleted, and unchanged rows by primary key.",
"app.tools.entry.data_compare.title": "Data Compare",
"app.tools.entry.data_root.description": "View, switch, or migrate the local data storage location.",
"app.tools.entry.data_root.title": "Data Directory",
"app.tools.entry.drivers.description": "Install, update, or remove database drivers.",
"app.tools.entry.drivers.title": "Driver Manager",
"app.tools.entry.export.description": "Export current connections and visible configuration fields.",
"app.tools.entry.export.title": "Export Connection Configuration",
"app.tools.entry.import.description": "Restore the connection list from a local file.",
"app.tools.entry.import.title": "Import Connection Configuration",
"app.tools.entry.schema_compare.description": "Compare structural differences between source and target tables, preview only without execution.",
"app.tools.entry.schema_compare.title": "Schema Compare",
"app.tools.entry.security_update.description": "View the security update status of saved configurations.",
"app.tools.entry.security_update.status_description": "Current status: {{status}}",
"app.tools.entry.security_update.title": "Security Update",
"app.tools.entry.shortcuts.description": "View and adjust global shortcut bindings.",
"app.tools.entry.shortcuts.title": "Shortcut Manager",
"app.tools.entry.snippets.description": "Manage SQL snippets and prefix completion.",
"app.tools.entry.snippets.title": "Snippet Management",
"app.tools.entry.sync.description": "Open the cross-source sync workflow.",
"app.tools.entry.sync.title": "Data Sync",
"app.tools.group.config.description": "Import/export, data root, and saved configuration maintenance.",
"app.tools.group.config.title": "Connections and Config",
"app.tools.group.workflow.description": "Compare structure, inspect differences, and start sync tasks.",
"app.tools.group.workflow.title": "Data Workflows",
"app.tools.group.workspace.description": "Drivers, code snippets, and global shortcuts.",
"app.tools.group.workspace.title": "Editor and Drivers",
"app.tools.title": "Tools Center",
"app.update.action.hide_to_background": "Hide to Background",
"app.update.action.install_update": "Install Update",
"app.update.action.open_install_directory": "Open Install Directory",
"app.update.backend.error.channel_invalid": "Invalid update channel: {{channel}}",
"app.update.backend.error.check_failed": "Check for updates failed: {{detail}}",
"app.update.backend.error.check_http_forbidden": "Update check failed: GitHub returned 403 Forbidden. Ensure api.github.com is reachable via your network/proxy, or set GONAVI_GITHUB_TOKEN. {{detail}}",
"app.update.backend.error.check_http_rate_limited": "Update check failed: the update service is busy or your network egress is rate-limited. Please try again later. End users do not need to configure any token. {{detail}}",
"app.update.backend.error.check_http_status": "Check for updates failed: HTTP {{status}}",
"app.update.backend.error.download_failed": "Update download failed: {{detail}}",
"app.update.backend.error.install_target_not_writable": "The current install directory is not writable: {{path}} ({{detail}})",
"app.update.backend.error.install_target_unresolved": "Unable to determine the current install directory",
"app.update.backend.error.install_unsupported": "Update installation is not supported on this platform: {{platform}}",
"app.update.backend.error.latest_version_unparseable": "Unable to parse the latest version",
"app.update.backend.error.network_dns": "Failed to reach GitHub: unable to resolve {{host}}. Confirm the global proxy has been applied, or test it in Global Proxy settings first.",
"app.update.backend.error.network_eof": "The GitHub connection was interrupted (EOF). Retry, or test the global proxy route.",
"app.update.backend.error.network_failed": "Failed to reach GitHub: {{detail}}",
"app.update.backend.error.online_update_unsupported": "Online update is not supported on this platform: {{platform}}",
"app.update.backend.error.package_download_forbidden": "Failed to download the update package: HTTP 403 Forbidden. Check proxy access to github.com / release-assets.githubusercontent.com, or set GONAVI_GITHUB_TOKEN and retry. {{detail}}",
"app.update.backend.error.package_download_http_failed": "Failed to download update package: HTTP {{status}}",
"app.update.backend.error.package_file_busy": "Update download failed because the file is busy: {{detail}}",
"app.update.backend.error.release_version_unparseable": "Unable to parse release version",
"app.update.backend.error.sha256_missing_current_package": "SHA256SUMS does not include the current platform update package",
"app.update.backend.error.sha256sums_download_failed": "Failed to download SHA256SUMS: HTTP {{status}}",
"app.update.backend.error.sha256sums_missing": "Release did not provide SHA256SUMS",
"app.update.backend.error.update_package_not_found": "Update package not found: {{name}}",
"app.update.backend.message.app_directory_unavailable": "Cannot access app directory: {{path}}",
"app.update.backend.message.app_directory_unresolved_download": "Cannot determine the current app directory, so the update cannot be downloaded",
"app.update.backend.message.channel_change_blocked_downloading": "An update package is downloading, so the update channel cannot be changed right now",
"app.update.backend.message.channel_change_failed": "Failed to save update channel: {{detail}}",
"app.update.backend.message.channel_changed": "Update channel switched to: {{channel}}",
"app.update.backend.message.check_first": "Check for updates first",
"app.update.backend.message.checksum_failed": "Update package checksum failed. Try again.",
"app.update.backend.message.checksum_missing": "Update package checksum is missing (SHA256SUMS)",
"app.update.backend.message.create_workspace_failed": "Cannot create update workspace directory in the app directory: {{path}}",
"app.update.backend.message.download_in_progress": "Update package is downloading. Try again later.",
"app.update.backend.message.install_launch_failed": "Failed to start update installer: {{detail}}",
"app.update.backend.message.install_launch_failed_with_log": "Failed to start update installer: {{detail}} (update log: {{path}})",
"app.update.backend.message.install_started": "Update installation has started",
"app.update.backend.message.install_started_with_log": "Update installation has started. Log path: {{path}}",
"app.update.backend.message.latest": "Already on the latest version",
"app.update.backend.message.no_downloaded_package": "No downloaded update package was found",
"app.update.backend.message.no_update_package": "No update package is available",
"app.update.backend.message.open_directory_failed": "Failed to open update directory: {{detail}}",
"app.update.backend.message.open_directory_unsupported": "Opening directories is not supported on this platform: {{platform}}",
"app.update.backend.message.opened_install_directory": "Opened install directory: {{path}}",
"app.update.backend.message.package_already_downloaded": "Update package is already downloaded",
"app.update.backend.message.package_directory_unavailable": "Update directory does not exist or is not accessible",
"app.update.backend.message.package_directory_unresolved": "Unable to resolve update directory",
"app.update.backend.message.package_downloaded": "Update package downloaded",
"app.update.backend.message.package_path_empty": "Update package path is empty",
"app.update.backend.message.update_found": "New version found: {{version}}",
"app.update.download_title": "Download Update",
"app.update.download_title_with_version": "Download Update {{version}}",
"app.update.message.check_failed": "Check for updates failed: {{error}}",
"app.update.message.download_completed": "Update download completed",
"app.update.message.download_completed_with_path": "Update download completed. Package path: {{path}}",
"app.update.message.download_failed": "Update download failed: {{error}}",
"app.update.message.install_failed": "Update installation failed: {{error}}",
"app.update.message.open_install_directory_failed": "Failed to open install directory: {{error}}",
"app.update.message.opened_install_directory": "Install directory opened. Please finish replacement manually.",
"app.update.message.package_ready": "Update package is ready ({{version}})",
"app.update.message.package_ready_with_path": "Update package is ready ({{version}}), path: {{path}}",
"app.update.message.update_found": "New version found: {{version}}",
"app.update.status.available_downloaded": "New version {{version}} found (downloaded; click \"Download Progress\" to install)",
"app.update.status.available_not_downloaded": "New version {{version}} found (not downloaded)",
"app.update.status.check_failed": "Check for updates failed: {{error}}",
"app.update.status.checking": "Checking for updates...",
"app.update.status.latest": "Already on the latest version ({{version}})",
"app.update.status.not_checked": "Not checked",
"app.window_zoom.message.fullscreen_exit_first": "Window zoom cannot be reset in fullscreen. Exit fullscreen first.",
"app.window_zoom.message.reset_failed": "Failed to reset window zoom",
"app.window_zoom.message.reset_success": "Window zoom reset",
"app.window_zoom.message.reset_success_fallback": "Window zoom reset (fallback)",
"app.window_zoom.message.windows_only": "This feature is only available on Windows",
"common.back_to_previous": "Back",
"common.cancel": "Cancel",
"common.close": "Close",
"common.confirm": "Confirm",
"common.continue": "Continue",
"common.delete": "Delete",
"common.edit": "Edit",
"common.error": "Error",
"common.loading": "Loading",
"common.named_item": "{{name}}",
"common.ok": "OK",
"common.refresh": "Refresh",
"common.save": "Save",
"common.search": "Search",
"common.success": "Success",
"common.unknown": "Unknown",
"common.warning": "Warning",
"connection.backend.action.apply_result_changes": "Apply result changes",
"connection.backend.action.clear_table": "Clear table data",
"connection.backend.action.create_database": "Create database",
"connection.backend.action.create_schema": "Create schema",
"connection.backend.action.data_sync_structure": "Modify sync target structure",
"connection.backend.action.data_sync_write": "Write synchronized data",
"connection.backend.action.drop_database": "Drop database",
"connection.backend.action.drop_function_or_procedure": "Drop function or stored procedure",
"connection.backend.action.drop_schema": "Drop schema",
"connection.backend.action.drop_table": "Drop table",
"connection.backend.action.drop_view": "Drop view",
"connection.backend.action.import_data": "Import data",
"connection.backend.action.preview_result_changes": "Preview result changes",
"connection.backend.action.rename_database": "Rename database",
"connection.backend.action.rename_schema": "Rename schema",
"connection.backend.action.rename_table": "Rename table",
"connection.backend.action.rename_view": "Rename view",
"connection.backend.action.truncate_table": "Truncate table",
"connection.backend.error.readonly_action_blocked": "This connection has production guard enabled. {{action}} is not allowed.",
"connection.copy_suffix": " - Copy",
"connection.delete": "Delete Connection",
"connection.edit": "Edit Connection",
"connection.new": "New Connection",
"connection.oceanbase.error.unsupported_protocol": "OceanBase only supports MySQL/Oracle tenant protocols; \"{{value}}\" is not supported. Switch to MySQL or Oracle.",
"connection.sidebar.delete.backendUnavailable": "Failed to delete connection: backend interface unavailable",
"connection.sidebar.delete.confirmContent": "Are you sure you want to delete connection \"{{name}}\"?",
"connection.sidebar.delete.confirmTitle": "Confirm deletion",
"connection.sidebar.delete.failureFallback": "Failed to delete connection",
"connection.sidebar.delete.success": "Connection deleted",
"connection.sidebar.disconnect.success": "Disconnected",
"connection.sidebar.duplicate.backendUnavailable": "Failed to copy connection: backend interface unavailable",
"connection.sidebar.duplicate.failureFallback": "Failed to copy connection",
"connection.sidebar.duplicate.noResult": "Failed to copy connection: backend returned no result",
"connection.sidebar.duplicate.success": "Connection copied: {{name}}",
"connection.sidebar.group.badge": "GROUP",
"connection.sidebar.group.collapseAria": "Collapse connection group {{name}}",
"connection.sidebar.group.delete": "Delete group",
"connection.sidebar.group.deleteConfirmContent": "Delete group \"{{name}}\"? Connections inside it will not be removed.",
"connection.sidebar.group.deleteConfirmTitle": "Confirm deletion",
"connection.sidebar.group.edit": "Edit group",
"connection.sidebar.group.expandAria": "Expand connection group {{name}}",
"connection.sidebar.group.meta": "{{count}} connections · Connection group",
"connection.sidebar.group.untitled": "Untitled group",
"connection.sidebar.menu.copy": "Copy connection",
"connection.sidebar.menu.createDatabase": "New database",
"connection.sidebar.menu.current": "Current",
"connection.sidebar.menu.delete": "Delete connection",
"connection.sidebar.menu.disconnect": "Disconnect",
"connection.sidebar.menu.groupSection": "Connection groups",
"connection.sidebar.menu.hostBadge": "HOST",
"connection.sidebar.menu.hostFallback": "Address not configured",
"connection.sidebar.menu.moveOutTag": "Remove from tag",
"connection.sidebar.menu.moveToTag": "Move to tag",
"connection.sidebar.menu.moveToUngrouped": "Remove from group",
"connection.sidebar.menu.refresh": "Refresh connection",
"connection.sidebar.menu.section": "Connection",
"connection.test": "Test Connection",
"connection.unnamed": "Unnamed Connection",
"connection_modal.action.browse": "Browse...",
"connection_modal.action.cancel": "Cancel",
"connection_modal.action.close": "Close",
"connection_modal.action.copy_uri": "Copy URI",
"connection_modal.action.disable": "Disable",
"connection_modal.action.discover_members": "Discover members",
"connection_modal.action.enable_and_prefer": "Enable and prefer",
"connection_modal.action.generate_uri": "Generate URI",
"connection_modal.action.open_driver_manager": "Open Driver Manager",
"connection_modal.action.parse_uri": "Parse URI",
"connection_modal.action.previous_step": "Previous",
"connection_modal.action.reset_default": "Reset default",
"connection_modal.action.save": "Save",
"connection_modal.action.test": "Test connection",
"connection_modal.action.view_reason": "View reason",
"connection_modal.appearance.color": "Color",
"connection_modal.appearance.current_icon": "Current icon: {{icon}}",
"connection_modal.appearance.custom_color": "Custom color",
"connection_modal.appearance.icon": "Icon",
"connection_modal.appearance.preview": "Preview",
"connection_modal.badge.current": "Current",
"connection_modal.badge.current_editing": "Editing",
"connection_modal.badge.preferred": "Preferred",
"connection_modal.config_section.connectionMode.description": "Configure standalone, primary/replica, cluster, or Replica Set mode.",
"connection_modal.config_section.connectionMode.title": "Connection mode",
"connection_modal.config_section.credentials.description": "Configure username, password, and saved credentials.",
"connection_modal.config_section.credentials.title": "Credentials",
"connection_modal.config_section.customDriver.description": "Configure the custom driver name.",
"connection_modal.config_section.customDriver.title": "Custom driver",
"connection_modal.config_section.customDsn.description": "Configure a driver-specific DSN.",
"connection_modal.config_section.customDsn.title": "Custom DSN",
"connection_modal.config_section.databaseScope.description": "Choose which databases are shown after connecting.",
"connection_modal.config_section.databaseScope.title": "Database scope",
"connection_modal.config_section.fileTarget.description": "Select a local database file.",
"connection_modal.config_section.fileTarget.title": "File database",
"connection_modal.config_section.identity.description": "Configure the connection name, icon, and basic identity.",
"connection_modal.config_section.identity.title": "Identity",
"connection_modal.config_section.jvmRuntime.description": "Configure JVM access modes and diagnostics.",
"connection_modal.config_section.jvmRuntime.title": "JVM runtime",
"connection_modal.config_section.mongoDiscovery.description": "Discover and manage MongoDB members.",
"connection_modal.config_section.mongoDiscovery.title": "MongoDB discovery",
"connection_modal.config_section.mongoPolicy.description": "Configure MongoDB authentication, readPreference, and save policy.",
"connection_modal.config_section.mongoPolicy.title": "MongoDB policy",
"connection_modal.config_section.replica.description": "Configure replica or additional nodes.",
"connection_modal.config_section.replica.title": "Replica nodes",
"connection_modal.config_section.service.description": "Configure service name, default database, and visible database scope.",
"connection_modal.config_section.service.title": "Service and database",
"connection_modal.config_section.target.description": "Configure the host, port, and connection target.",
"connection_modal.config_section.target.title": "Target address",
"connection_modal.config_section.uri.description": "Enter, generate, or parse a connection URI.",
"connection_modal.config_section.uri.title": "Connection URI",
"connection_modal.db_icon_label.custom": "Custom",
"connection_modal.db_type.custom": "Custom",
"connection_modal.db_type_hint.custom": "Connect with a custom driver and DSN.",
"connection_modal.db_type_hint.file": "Select a local SQLite or DuckDB database file.",
"connection_modal.db_type_hint.mongodb": "Connect to MongoDB standalone, Replica Set, or SRV addresses.",
"connection_modal.db_type_hint.redis": "Connect to Redis standalone or Redis Cluster.",
"connection_modal.db_type_hint.standard": "Enter host, port, authentication details, and an optional database.",
"connection_modal.driver.current": "Current",
"connection_modal.error.unknown": "Unknown error",
"connection_modal.error.unknown_exception": "Unknown error",
"connection_modal.field.additional_hosts": "Additional hosts",
"connection_modal.field.additional_srv_hosts_optional": "Additional SRV hosts (optional)",
"connection_modal.field.auth_source": "Authentication database (authSource)",
"connection_modal.field.clickHouseProtocol.auto": "Auto",
"connection_modal.field.cluster_additional_hosts": "Cluster additional hosts",
"connection_modal.field.connection_name": "Connection name",
"connection_modal.field.connection_timeout_seconds": "Connection timeout (seconds)",
"connection_modal.field.connection_timeout_seconds_ascii": "Connection timeout (seconds)",
"connection_modal.field.defaultDatabase.placeholder": "For example: appdb",
"connection_modal.field.default_database_optional": "Default database (optional)",
"connection_modal.field.display_databases_optional": "Display databases (optional)",
"connection_modal.field.driver.placeholder": "For example: mysql, postgres",
"connection_modal.field.driver_name": "Driver name",
"connection_modal.field.dsn": "DSN",
"connection_modal.field.dsn.placeholder": "For example: user:pass@tcp(localhost:3306)/dbname?charset=utf8",
"connection_modal.field.file_path_absolute": "File path (absolute path)",
"connection_modal.field.host": "Host",
"connection_modal.field.host_address": "Host address",
"connection_modal.field.oceanBaseProtocol.help.connectionAttributes": "If an Oracle tenant connection reports \"Error 1235\" or an OBClient handshake failure, use {{attributes}} in the \"Connection parameters\" field to override the OBClient capability injected by GoNavi by default.",
"connection_modal.field.oceanBaseProtocol.help.primary": "Choose MySQL for MySQL tenants and Oracle for Oracle tenants. GoNavi selects automatically by port: OB MySQL wire ports use OBClient capability injection (the same path as Navicat), while OBProxy Oracle listener ports use standard TNS.",
"connection_modal.field.oceanBaseProtocol.label": "OceanBase protocol",
"connection_modal.field.password": "Password",
"connection_modal.field.password_optional": "Password (optional)",
"connection_modal.field.port": "Port",
"connection_modal.field.port_plain": "Port",
"connection_modal.field.primary_port": "Primary port",
"connection_modal.field.private_key_path_optional": "Private key path (optional)",
"connection_modal.field.proxy_host": "Proxy host",
"connection_modal.field.proxy_password_optional": "Proxy password (optional)",
"connection_modal.field.proxy_type": "Proxy type",
"connection_modal.field.proxy_username_optional": "Proxy username (optional)",
"connection_modal.field.readOnly.checkbox": "Mark this as a production connection and allow queries only",
"connection_modal.field.readOnly.compatibility": "Selecting all options matches the legacy query-only production guard.",
"connection_modal.field.readOnly.help": "Select only the restrictions you need for result editing, structure changes, script execution, and import or sync flows.",
"connection_modal.field.readOnly.label": "Production guard",
"connection_modal.field.readOnly.option.dataEdit.help": "Block result-grid edits, bulk clear actions, and message publishing writes on this connection.",
"connection_modal.field.readOnly.option.dataEdit.label": "Restrict data edits",
"connection_modal.field.readOnly.option.dataImport.help": "Block file import, bulk load, and using this connection as a sync target.",
"connection_modal.field.readOnly.option.dataImport.label": "Restrict data import",
"connection_modal.field.readOnly.option.scriptExecution.help": "Block mutating SQL statements and MongoDB commands from the query editor.",
"connection_modal.field.readOnly.option.scriptExecution.label": "Restrict script execution",
"connection_modal.field.readOnly.option.structureEdit.help": "Block create, rename, and drop object actions, and open the table designer in read-only mode.",
"connection_modal.field.readOnly.option.structureEdit.label": "Restrict structure edits",
"connection_modal.field.readOnly.status.disabled": "No restrictions",
"connection_modal.field.readOnly.status.enabledCount": "{{count}} restrictions enabled",
"connection_modal.field.readOnly.summary.empty": "When no restriction is selected, this connection behaves like a normal connection.",
"connection_modal.field.readOnly.summary.selected": "{{count}} restrictions are enabled. Unchecked abilities still behave like a normal connection.",
"connection_modal.field.readOnly.summary.title": "Current policy",
"connection_modal.field.readOnly.tip": "Recommended for production, standby, and governed databases. These restrictions only affect GoNavi behavior for the current connection and do not modify server-side permissions.",
"connection_modal.field.replica_hosts": "Replica host list",
"connection_modal.field.replica_password_optional": "Replica password (optional)",
"connection_modal.field.replica_set_optional": "Replica set (optional)",
"connection_modal.field.replica_set_password_optional": "Replica set password (optional)",
"connection_modal.field.replica_set_username_optional": "Replica set username (optional)",
"connection_modal.field.replica_username_optional": "Replica username (optional)",
"connection_modal.field.save_password": "Save password",
"connection_modal.field.serviceName.placeholder": "For example: ORCLPDB1",
"connection_modal.field.service_name": "Service name",
"connection_modal.field.ssh_host": "SSH host",
"connection_modal.field.ssh_password": "SSH password",
"connection_modal.field.ssh_user": "SSH user",
"connection_modal.field.ssl_cert_path": "SSL certificate path",
"connection_modal.field.ssl_key_path": "SSL key path",
"connection_modal.field.tunnel_host": "HTTP Tunnel host",
"connection_modal.field.tunnel_password_optional": "HTTP Tunnel password (optional)",
"connection_modal.field.tunnel_username_optional": "HTTP Tunnel username (optional)",
"connection_modal.field.uri": "URI",
"connection_modal.field.username": "Username",
"connection_modal.field.username.optional_placeholder": "Leave empty when authentication is disabled",
"connection_modal.group.chinese_databases": "Chinese databases",
"connection_modal.group.other": "Other",
"connection_modal.group.relational": "Relational databases",
"connection_modal.group.time_series": "Time-series databases",
"connection_modal.help.additional_hosts": "Optional MongoDB members, separated by comma, semicolon, or space.",
"connection_modal.help.additional_srv_hosts": "Optional additional SRV hosts for MongoDB discovery.",
"connection_modal.help.connection_timeout": "Applies to connection tests and metadata loading. Range: 1-300 seconds.",
"connection_modal.help.custom_driver": "Supported: mysql, postgres, sqlite, oracle, dm, kingbase. Aliases: postgresql/pgx, dm8, kingbase8/kingbasees/kingbasev8. Extending drivers through JDBC Jar is not currently supported.",
"connection_modal.help.default_database": "Leave empty to use the server default database.",
"connection_modal.help.oracle_service_name": "Oracle service name, for example ORCLPDB1.",
"connection_modal.help.private_key_path": "Use a private key for SSH authentication. Leave password empty if the key is not encrypted.",
"connection_modal.help.redis_cluster_hosts": "Additional Redis cluster nodes, separated by comma, semicolon, or space.",
"connection_modal.help.replica_hosts": "Replica host list in host:port format, separated by comma, semicolon, or space.",
"connection_modal.help.select_after_test": "Run a connection test first to load selectable databases.",
"connection_modal.help.uri": "Paste a full connection URI or generate one from the current form.",
"connection_modal.jvm.access_mode_description": "Choose which JVM access modes this connection can use and which one is preferred.",
"connection_modal.jvm.access_mode_title": "Access modes",
"connection_modal.jvm.agent_api_key_optional": "Agent API key (optional)",
"connection_modal.jvm.agent_description": "Connect through a GoNavi Agent when direct network access is restricted.",
"connection_modal.jvm.agent_help": "Base URL of the GoNavi Agent service.",
"connection_modal.jvm.agent_url": "Agent URL",
"connection_modal.jvm.diagnostic.agent_bridge_description": "Use the GoNavi Agent Bridge diagnostic endpoint.",
"connection_modal.jvm.diagnostic.arthas_tunnel_description": "Use Arthas Tunnel to reach the target JVM.",
"connection_modal.jvm.diagnostic.arthas_tunnel_help": "Base URL of the Arthas Tunnel server.",
"connection_modal.jvm.diagnostic.arthas_tunnel_url": "Arthas Tunnel URL",
"connection_modal.jvm.diagnostic.bridge_help": "Base URL of the GoNavi diagnostic bridge.",
"connection_modal.jvm.diagnostic.bridge_url": "Diagnostic bridge URL",
"connection_modal.jvm.diagnostic.mutating_commands": "Mutating commands",
"connection_modal.jvm.diagnostic.mutating_commands_description": "Allow commands that may change runtime state. Use only in controlled environments.",
"connection_modal.jvm.diagnostic.observe_commands": "Observe commands",
"connection_modal.jvm.diagnostic.observe_commands_description": "Allow read-only commands such as dashboard, thread, and JVM info.",
"connection_modal.jvm.diagnostic.target_agent_id": "Target Agent ID",
"connection_modal.jvm.diagnostic.target_agent_id_help": "Agent ID registered in Arthas Tunnel.",
"connection_modal.jvm.diagnostic.target_id": "Target ID",
"connection_modal.jvm.diagnostic.target_id_help": "Target identifier understood by the diagnostic bridge. Leave empty if the bridge selects the default target.",
"connection_modal.jvm.diagnostic.trace_commands": "Trace commands",
"connection_modal.jvm.diagnostic.trace_commands_description": "Allow tracing and watch commands that add runtime overhead.",
"connection_modal.jvm.diagnostic.transport.agent_bridge": "Agent Bridge",
"connection_modal.jvm.diagnostic.transport.arthas_tunnel": "Arthas Tunnel",
"connection_modal.jvm.diagnostic_api_key_optional": "Diagnostic API key (optional)",
"connection_modal.jvm.diagnostic_description": "Enable optional diagnostic commands for JVM troubleshooting.",
"connection_modal.jvm.diagnostic_disabled_hint": "Diagnostic enhancement is disabled. Enable it only when you need runtime troubleshooting.",
"connection_modal.jvm.diagnostic_timeout_seconds": "Diagnostic timeout (seconds)",
"connection_modal.jvm.diagnostic_title": "Diagnostic enhancement",
"connection_modal.jvm.diagnostic_transport": "Diagnostic transport",
"connection_modal.jvm.endpoint_api_key_optional": "Endpoint API key (optional)",
"connection_modal.jvm.endpoint_description": "Connect to a service-provided Endpoint instead of direct JMX.",
"connection_modal.jvm.endpoint_help": "Base URL of the JVM management Endpoint.",
"connection_modal.jvm.endpoint_url": "Endpoint URL",
"connection_modal.jvm.environment": "Environment",
"connection_modal.jvm.environment.dev": "Development",
"connection_modal.jvm.environment.dev_description": "Lower risk test environment.",
"connection_modal.jvm.environment.prod": "Production",
"connection_modal.jvm.environment.prod_description": "Production environment; read-only first is recommended.",
"connection_modal.jvm.environment.uat": "UAT",
"connection_modal.jvm.environment.uat_description": "Pre-production validation environment.",
"connection_modal.jvm.jmx_description": "Connect through JMX using host, port, and optional credentials.",
"connection_modal.jvm.jmx_host_override_optional": "JMX host override (optional)",
"connection_modal.jvm.jmx_password_optional": "JMX password (optional)",
"connection_modal.jvm.jmx_port": "JMX port",
"connection_modal.jvm.jmx_username_optional": "JMX username (optional)",
"connection_modal.jvm.mode.agent_description": "Go through GoNavi Agent for environments behind firewalls or NAT.",
"connection_modal.jvm.mode.endpoint_description": "Use an HTTP Endpoint exposed by the target service.",
"connection_modal.jvm.mode.jmx_description": "Use standard JMX remote access.",
"connection_modal.jvm.preferred_mode_hint": "Current preferred mode: {{mode}}",
"connection_modal.jvm.read_only_first": "Prefer read-only operations",
"connection_modal.jvm.security_policy": "Security policy",
"connection_modal.jvm.target_description": "Configure the host, port, and access method for the JVM management endpoint.",
"connection_modal.jvm.target_title": "JVM target",
"connection_modal.layout.custom": "Custom driver connection",
"connection_modal.layout.file": "File database connection",
"connection_modal.layout.generic_sql": "Generic SQL connection",
"connection_modal.layout.jvm": "JVM runtime connection",
"connection_modal.layout.mongodb": "MongoDB connection",
"connection_modal.layout.mysql_compatible": "MySQL-compatible connection",
"connection_modal.layout.oracle": "Oracle connection",
"connection_modal.layout.postgres_compatible": "PostgreSQL-compatible connection",
"connection_modal.layout.redis": "Redis connection",
"connection_modal.layoutKind.custom": "Custom driver",
"connection_modal.layoutKind.file": "File databases",
"connection_modal.layoutKind.genericSql": "Standard SQL",
"connection_modal.layoutKind.jvm": "JVM runtime",
"connection_modal.layoutKind.mongodb": "MongoDB",
"connection_modal.layoutKind.mysqlCompatible": "MySQL-compatible",
"connection_modal.layoutKind.oracle": "Oracle",
"connection_modal.layoutKind.postgresCompatible": "PostgreSQL-compatible",
"connection_modal.layoutKind.redis": "Redis",
"connection_modal.layoutKind.search": "Search engines",
"connection_modal.layoutKind.timeseries": "Time-series databases",
"connection_modal.layoutKind.vector": "Vector databases",
"connection_modal.message.connection_failed": "Connection failed",
"connection_modal.message.connection_params_incomplete": "Connection parameters are incomplete",
"connection_modal.message.connection_rejected": "Connection rejected",
"connection_modal.message.connection_success": "Connection succeeded",
"connection_modal.message.copy_failed": "Copy failed",
"connection_modal.message.current_driver_not_enabled": "The current driver is not installed or enabled",
"connection_modal.message.dameng_ssl_cert_required": "Dameng SSL requires certificate and private key paths",
"connection_modal.message.database_list_failed": "Failed to load database list: {{error}}",
"connection_modal.message.database_list_timeout": "Operation timed out after {{seconds}} seconds",
"connection_modal.message.driver_not_enabled": "Driver is not installed or enabled",
"connection_modal.message.driver_not_enabled_with_name": "{{name}} driver is not installed or enabled. Install or enable it in Driver Manager first.",
"connection_modal.message.driver_not_enabled_with_name_short": "{{name}} driver is not installed or enabled. Open Driver Manager first.",
"connection_modal.message.driver_unavailable_title": "{{name}} driver unavailable",
"connection_modal.message.http_tunnel_host_required": "Enter the HTTP Tunnel host",
"connection_modal.message.http_tunnel_port_invalid": "HTTP Tunnel port is invalid",
"connection_modal.message.member_discovery_failed": "Failed to discover MongoDB members",
"connection_modal.message.member_discovery_success": "Discovered {{count}} members",
"connection_modal.message.no_visible_databases": "No visible databases were returned",
"connection_modal.message.no_visible_schema": "No visible schema was returned",
"connection_modal.message.required_fields_before_test": "Fill in the required fields before testing",
"connection_modal.message.save_backend_unavailable": "Save is unavailable because the backend API is not ready",
"connection_modal.message.save_created_disconnected": "Configuration saved (not connected)",
"connection_modal.message.save_failed": "Failed to save connection",
"connection_modal.message.save_security_refresh_failed": "Configuration saved, but security metadata could not be refreshed",
"connection_modal.message.save_updated_disconnected": "Configuration saved (not connected)",
"connection_modal.message.select_database_file_failed": "Failed to select database file: {{error}}",
"connection_modal.message.select_ssh_key_failed": "Failed to select SSH private key: {{error}}",
"connection_modal.message.srv_with_ssh_dns_warning": "SRV with SSH Tunnel may depend on local DNS resolution. If resolution fails, use standard hosts.",
"connection_modal.message.test_failed_detail": "Test failed: {{detail}}",
"connection_modal.message.test_requires_new_mongo_replica_password": "Enter the new MongoDB Replica Set password before testing.",
"connection_modal.message.test_requires_new_mongodb_password": "Enter the new MongoDB password before testing.",
"connection_modal.message.test_requires_new_password": "Enter the new connection password before testing.",
"connection_modal.message.test_requires_new_proxy_password": "Enter the new proxy password before testing.",
"connection_modal.message.test_requires_new_replica_password": "Enter the new replica password before testing.",
"connection_modal.message.test_requires_new_ssh_password": "Enter the new SSH password before testing.",
"connection_modal.message.test_requires_new_tunnel_password": "Enter the new HTTP Tunnel password before testing.",
"connection_modal.message.test_timeout": "Operation timed out after {{seconds}} seconds",
"connection_modal.message.unsupported_jvm_diagnostic_transport": "The selected JVM diagnostic transport is not supported",
"connection_modal.message.unsupported_jvm_modes": "The selected JVM access mode is not supported",
"connection_modal.message.unsupported_jvm_modes_current": "This connection contains unsupported JVM access modes",
"connection_modal.message.unsupported_jvm_modes_detected": "Unsupported JVM access modes detected",
"connection_modal.message.uri_copied": "URI copied",
"connection_modal.message.uri_empty_copy": "No URI to copy",
"connection_modal.message.uri_generate_failed": "Failed to generate URI",
"connection_modal.message.uri_generated": "URI generated",
"connection_modal.message.uri_parse_failed": "Failed to parse URI",
"connection_modal.message.uri_parsed": "URI parsed into the form",
"connection_modal.message.uri_required": "Enter a URI first",
"connection_modal.message.uri_type_mismatch": "URI type does not match the selected data source",
"connection_modal.messageQueue.kafka.defaultTopic.help": "Specify a Topic in SQL when this is empty. After it is set, SHOW, CONSUME, or SELECT can preview data directly.",
"connection_modal.messageQueue.kafka.defaultTopic.label": "Default Topic (optional)",
"connection_modal.messageQueue.kafka.defaultTopic.placeholder": "For example: orders.events",
"connection_modal.messageQueue.kafka.extraBrokers.help": "Enter multiple broker addresses in host:port format and press Enter to confirm.",
"connection_modal.messageQueue.kafka.extraBrokers.label": "Additional Broker addresses",
"connection_modal.messageQueue.kafka.extraBrokers.placeholder": "For example: 10.10.0.12:9092, 10.10.0.13:9092",
"connection_modal.messageQueue.kafka.topology.cluster.description": "Configure multiple bootstrap brokers to improve discovery and failover success.",
"connection_modal.messageQueue.kafka.topology.single.description": "Configure one bootstrap broker for local or simple environments.",
"connection_modal.messageQueue.kafka.topology.single.label": "Single Broker",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.help": "Specify a Topic in SQL when this is empty. After it is set, SHOW, CONSUME, or SELECT can preview data directly. Supports /, +, and #.",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.label": "Default Topic / Filter (optional)",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.placeholder": "For example: devices/+/telemetry",
"connection_modal.messageQueue.mqtt.extraBrokers.help": "Enter multiple broker addresses in host:port format and press Enter to confirm.",
"connection_modal.messageQueue.mqtt.extraBrokers.label": "Additional Broker addresses",
"connection_modal.messageQueue.mqtt.extraBrokers.placeholder": "For example: 10.10.0.12:1883, 10.10.0.13:1883",
"connection_modal.messageQueue.mqtt.topology.cluster.description": "Configure multiple brokers to improve connection discovery and failover success.",
"connection_modal.messageQueue.mqtt.topology.single.description": "Configure one broker for local or simple environments.",
"connection_modal.messageQueue.mqtt.topology.single.label": "Single Broker",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.help": "When empty, / is used by default. After it is set, the query editor uses the current vhost as the Queue browsing and test publishing context.",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.label": "Default Virtual Host (optional)",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.placeholder": "For example: / or orders-vhost",
"connection_modal.messageQueue.rocketmq.defaultTopic.help": "Specify a Topic in SQL when this is empty. Connection parameters can still add groupId, namespace, tag, pullBatchSize, and startOffset.",
"connection_modal.messageQueue.rocketmq.defaultTopic.label": "Default Topic (optional)",
"connection_modal.messageQueue.rocketmq.defaultTopic.placeholder": "For example: orders.events",
"connection_modal.messageQueue.rocketmq.extraNameServers.help": "Enter multiple NameServer addresses in host:port format and press Enter to confirm.",
"connection_modal.messageQueue.rocketmq.extraNameServers.label": "Additional NameServer addresses",
"connection_modal.messageQueue.rocketmq.extraNameServers.placeholder": "For example: 10.10.0.12:9876, 10.10.0.13:9876",
"connection_modal.messageQueue.rocketmq.topology.cluster.description": "Configure multiple NameServers to improve route discovery and failover success.",
"connection_modal.messageQueue.rocketmq.topology.single.description": "Configure one NameServer for local or simple environments.",
"connection_modal.messageQueue.rocketmq.topology.single.label": "Single NameServer",
"connection_modal.messageQueue.topology.cluster.label": "Cluster mode",
"connection_modal.mongodb.auth.auto": "Auto",
"connection_modal.mongodb.auth.auto_description": "Let the driver choose the authentication mechanism.",
"connection_modal.mongodb.auth.aws_iam_description": "Use AWS IAM authentication. Keep AWS IAM credentials in the runtime environment.",
"connection_modal.mongodb.auth.none": "No auth",
"connection_modal.mongodb.auth.none_description": "Connect without MongoDB authentication.",
"connection_modal.mongodb.auth.scram_sha1_description": "Use SCRAM-SHA-1 authentication.",
"connection_modal.mongodb.auth.scram_sha256_description": "Use SCRAM-SHA-256 authentication.",
"connection_modal.mongodb.auth_mechanism": "Authentication mechanism",
"connection_modal.mongodb.discovery.current": "Current",
"connection_modal.mongodb.discovery.srv.description": "Use mongodb+srv and let DNS discover target nodes.",
"connection_modal.mongodb.discovery.srv.label": "SRV address",
"connection_modal.mongodb.discovery.srv_ssh_warning": "When SRV and SSH tunnel are both enabled, local DNS resolution may be required.",
"connection_modal.mongodb.discovery.standard.description": "Connect directly with host:port or use a replica set node list.",
"connection_modal.mongodb.discovery.standard.label": "Standard address",
"connection_modal.mongodb.members.health": "Health",
"connection_modal.mongodb.members.health.error": "Unhealthy",
"connection_modal.mongodb.members.health.ok": "Healthy",
"connection_modal.mongodb.members.role": "Role",
"connection_modal.mongodb.policy.auth_source.label": "Auth database (authSource)",
"connection_modal.mongodb.policy.auth_source.placeholder": "Defaults to database or admin",
"connection_modal.mongodb.read_preference": "readPreference",
"connection_modal.mongodb.read_preference.nearest": "Route reads to the nearest member.",
"connection_modal.mongodb.read_preference.primary": "Read only from the primary.",
"connection_modal.mongodb.read_preference.primary_preferred": "Prefer primary, fall back to secondaries.",
"connection_modal.mongodb.read_preference.secondary": "Read only from secondaries.",
"connection_modal.mongodb.read_preference.secondary_preferred": "Prefer secondaries, fall back to primary.",
"connection_modal.mongodb.replica.hosts.srv.help": "Enter multiple candidate host names in host format. Leave empty to use only the host above.",
"connection_modal.mongodb.replica.hosts.srv.label": "Additional SRV hosts (optional)",
"connection_modal.mongodb.replica.hosts.srv.placeholder": "For example: cluster-a.example.com, cluster-b.example.com",
"connection_modal.mongodb.replica.hosts.standard.help": "Enter multiple node addresses in host:port format and press Enter to confirm.",
"connection_modal.mongodb.replica.hosts.standard.label": "Additional node addresses",
"connection_modal.mongodb.replica.hosts.standard.placeholder": "For example: 10.10.0.12:27017, 10.10.0.13:27017",
"connection_modal.mongodb.replica.password.clear": "Clear saved replica set password",
"connection_modal.mongodb.replica.password.description": "A replica set password is currently saved. Leave this empty to keep it, or enter a new value to replace it.",
"connection_modal.mongodb.replica.password.label": "Replica set password (optional)",
"connection_modal.mongodb.replica.password.placeholder.empty": "Leave empty to reuse the primary password",
"connection_modal.mongodb.replica.password.placeholder.retained": "Saved replica set password",
"connection_modal.mongodb.replica.set.label": "Replica set name (optional)",
"connection_modal.mongodb.replica.set.placeholder": "For example: rs0",
"connection_modal.mongodb.replica.user.label": "Replica set username (optional)",
"connection_modal.mongodb.replica.user.placeholder": "Leave empty to reuse the primary username",
"connection_modal.mongodb.srv_address": "SRV address",
"connection_modal.mongodb.srv_address_description": "Use a MongoDB SRV record to discover hosts.",
"connection_modal.mongodb.standard_address": "Standard address",
"connection_modal.mongodb.standard_address_description": "Use host and port plus optional member list.",
"connection_modal.mongodb.topology.replica.label": "Replica set / multi-node",
"connection_modal.mongodb.topology.single.label": "Standalone mode",
"connection_modal.network.http_tunnel": "HTTP Tunnel",
"connection_modal.network.http_tunnel_description": "Forward database traffic through an HTTP Tunnel.",
"connection_modal.network.http_tunnel_disabled_hint": "Enable HTTP Tunnel to configure tunnel host, port, and credentials.",
"connection_modal.network.http_tunnel_mutex_hint": "HTTP Tunnel cannot be used together with SSH Tunnel or proxy.",
"connection_modal.network.http_tunnel_panel_description": "Configure an HTTP Tunnel gateway for this connection.",
"connection_modal.network.proxy": "Proxy",
"connection_modal.network.proxy_disabled_hint": "Enable proxy to route this connection through SOCKS5 or HTTP CONNECT.",
"connection_modal.network.proxy_panel_description": "Configure per-connection proxy settings.",
"connection_modal.network.proxy_type.http_description": "Use HTTP CONNECT proxying.",
"connection_modal.network.proxy_type.socks5_description": "Use SOCKS5 proxying.",
"connection_modal.network.ssh_disabled_hint": "Enable SSH Tunnel to connect through a bastion host.",
"connection_modal.network.ssh_panel_description": "Configure SSH Tunnel host, credentials, and optional private key.",
"connection_modal.network.ssh_tunnel": "SSH Tunnel",
"connection_modal.network.ssh_tunnel_description": "Connect through an SSH Tunnel before reaching the database.",
"connection_modal.network.ssl_description": "Encrypt the database connection with SSL/TLS.",
"connection_modal.network.ssl_disabled_hint": "Enable SSL/TLS to configure certificate policy.",
"connection_modal.network.ssl_mode": "SSL mode",
"connection_modal.network.ssl_mode.preferred": "Preferred",
"connection_modal.network.ssl_mode.preferred_description": "Try SSL first and fall back if the server does not require it.",
"connection_modal.network.ssl_mode.required": "Required",
"connection_modal.network.ssl_mode.required_description": "Require SSL and fail if encrypted connection cannot be established.",
"connection_modal.network.ssl_mode.skip_verify": "Skip Verify",
"connection_modal.network.ssl_mode.skip_verify_description": "Use SSL but skip certificate verification. Use only for testing or self-signed certificates.",
"connection_modal.network.ssl_panel_description": "Configure SSL/TLS policy for this connection.",
"connection_modal.network.ssl_tls": "SSL/TLS",
"connection_modal.placeholder.absolute_path": "/absolute/path/to/file",
"connection_modal.placeholder.agent_api_key": "Optional Agent API key",
"connection_modal.placeholder.agent_url": "http://127.0.0.1:19090",
"connection_modal.placeholder.connection_name": "Connection name",
"connection_modal.placeholder.connection_name_fallback": "Connection name",
"connection_modal.placeholder.custom_dsn_example": "Example: driver-specific DSN",
"connection_modal.placeholder.default_database_or_admin": "default database or admin",
"connection_modal.placeholder.diagnostic_api_key": "Optional diagnostic API key",
"connection_modal.placeholder.diagnostic_target_agent_id": "Arthas Agent ID",
"connection_modal.placeholder.diagnostic_target_id": "Target ID",
"connection_modal.placeholder.driver_name": "Driver name",
"connection_modal.placeholder.empty_without_auth": "Leave empty for no authentication",
"connection_modal.placeholder.endpoint_api_key": "Optional Endpoint API key",
"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.jvm_name": "JVM connection name",
"connection_modal.placeholder.no_auth": "No authentication",
"connection_modal.placeholder.proxy_host": "127.0.0.1",
"connection_modal.placeholder.redis_password": "Redis password",
"connection_modal.placeholder.select_databases": "Select databases to display",
"connection_modal.placeholder.select_redis_databases": "Select Redis databases to display",
"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.uri_example_postgres": "postgresql://user:pass@localhost:5432/appdb?sslmode=require",
"connection_modal.placeholder.use_primary_host": "Use primary host",
"connection_modal.placeholder.use_primary_password": "Use primary password",
"connection_modal.placeholder.use_primary_password_short": "Use primary password",
"connection_modal.placeholder.use_primary_port": "Use primary port",
"connection_modal.placeholder.use_primary_username": "Use primary username",
"connection_modal.placeholder.use_primary_username_short": "Use primary username",
"connection_modal.redis.credentials.primary.label": "Password (optional)",
"connection_modal.redis.credentials.primary.placeholder.empty": "Redis password if requirepass is set",
"connection_modal.redis.credentials.primary.placeholder.retained": "Saved Redis password",
"connection_modal.redis.credentials.sentinelPassword.clear": "Clear saved Sentinel password",
"connection_modal.redis.credentials.sentinelPassword.description": "A Sentinel password is currently saved. Leave this empty to keep it, or enter a new value to replace it.",
"connection_modal.redis.credentials.sentinelPassword.label": "Sentinel password (optional)",
"connection_modal.redis.credentials.sentinelPassword.placeholder.empty": "Sentinel authentication password. Leave empty to send none.",
"connection_modal.redis.credentials.sentinelPassword.placeholder.retained": "Saved Sentinel password",
"connection_modal.redis.credentials.sentinelUser.label": "Sentinel username (optional)",
"connection_modal.redis.credentials.sentinelUser.placeholder": "Leave empty when Sentinel does not use an ACL username",
"connection_modal.redis.databaseScope.help": "Selectable after the connection test succeeds",
"connection_modal.redis.databaseScope.label": "Databases to show (empty shows all)",
"connection_modal.redis.databaseScope.placeholder": "Select databases to show",
"connection_modal.redis.hosts.cluster.help": "The host above is used as the primary node. Enter other seed nodes here in host:port format.",
"connection_modal.redis.hosts.cluster.label": "Additional cluster node addresses",
"connection_modal.redis.hosts.cluster.placeholder": "For example: 10.10.0.12:6379, 10.10.0.13:6379",
"connection_modal.redis.hosts.sentinel.help": "The host above is used as the first Sentinel. Enter other Sentinel nodes here in host:port format.",
"connection_modal.redis.hosts.sentinel.label": "Additional Sentinel node addresses",
"connection_modal.redis.hosts.sentinel.placeholder": "For example: 10.10.0.12:26379, 10.10.0.13:26379",
"connection_modal.redis.sentinel.master.help": "Enter the monitor name from the Sentinel configuration, for example mymaster.",
"connection_modal.redis.sentinel.master.label": "Sentinel master name",
"connection_modal.redis.sentinel.master.placeholder": "For example: mymaster",
"connection_modal.redis.sentinel.master.required": "Enter the Sentinel master name",
"connection_modal.redis.topology.cluster.description": "Redis Cluster with multiple seed nodes.",
"connection_modal.redis.topology.cluster.label": "Cluster mode",
"connection_modal.redis.topology.sentinel.description": "Discover the primary node through Sentinel for primary-replica high availability.",
"connection_modal.redis.topology.sentinel.label": "Sentinel mode",
"connection_modal.redis.topology.single.description": "Connect to one Redis node.",
"connection_modal.redis.topology.single.label": "Standalone mode",
"connection_modal.secret.blocking.redis_sentinel": "Enter a new Sentinel password before testing, or cancel clearing the saved Sentinel password",
"connection_modal.secret.clear_saved_dsn": "Clear saved DSN",
"connection_modal.secret.clear_saved_mongo_replica_password": "Clear saved MongoDB replica password",
"connection_modal.secret.clear_saved_password": "Clear saved password",
"connection_modal.secret.clear_saved_proxy_password": "Clear saved proxy password",
"connection_modal.secret.clear_saved_replica_password": "Clear saved replica password",
"connection_modal.secret.clear_saved_ssh_password": "Clear saved SSH password",
"connection_modal.secret.clear_saved_tunnel_password": "Clear saved HTTP Tunnel password",
"connection_modal.secret.clear_saved_uri": "Clear saved URI",
"connection_modal.secret.error.saved_connection_deleted": "The saved connection was not found. It may have been deleted. Refresh and try again.",
"connection_modal.secret.error.saved_connection_missing": "The saved secret for the current connection was not found. Re-enter the password, save, and try again.",
"connection_modal.secret.error.store_unavailable": "Secure secret storage is currently unavailable. Check the system keychain or credential manager, then try again.",
"connection_modal.secret.new_value_replaces_saved": "New value will replace the saved secret.",
"connection_modal.secret.saved_dsn_description": "A DSN is already stored securely. Leave this empty to keep using it.",
"connection_modal.secret.saved_mongo_replica_password": "Saved MongoDB replica password",
"connection_modal.secret.saved_mongo_replica_password_description": "A MongoDB replica password is already saved in secure storage. Leave this field empty to keep it.",
"connection_modal.secret.saved_password": "Saved password",
"connection_modal.secret.saved_placeholder": "•••••• (leave empty to keep using {{label}})",
"connection_modal.secret.saved_primary_password_description": "A primary connection password is already saved in secure storage. Leave this field empty to keep it.",
"connection_modal.secret.saved_proxy_password": "Saved proxy password",
"connection_modal.secret.saved_proxy_password_description": "A proxy password is already saved in secure storage. Leave this field empty to keep it.",
"connection_modal.secret.saved_redis_password": "Saved Redis password",
"connection_modal.secret.saved_redis_password_description": "A Redis password is already saved in secure storage. Leave this field empty to keep it.",
"connection_modal.secret.saved_replica_password": "Saved replica password",
"connection_modal.secret.saved_replica_password_description": "A replica password is already saved in secure storage. Leave this field empty to keep it.",
"connection_modal.secret.saved_ssh_password": "Saved SSH password",
"connection_modal.secret.saved_ssh_password_description": "An SSH password is already saved in secure storage. Leave this field empty to keep it.",
"connection_modal.secret.saved_tunnel_password": "Saved HTTP Tunnel password",
"connection_modal.secret.saved_tunnel_password_description": "An HTTP Tunnel password is already saved in secure storage. Leave this field empty to keep it.",
"connection_modal.secret.saved_uri_description": "A connection URI is already stored securely. Leave this empty to keep using it.",
"connection_modal.section.advanced_connection": "Advanced connection",
"connection_modal.section.appearance.description": "Set the icon and color shown for this connection in the sidebar.",
"connection_modal.section.appearance.title": "Appearance",
"connection_modal.section.basic.description": "Name the connection and enter the target, driver, and authentication details.",
"connection_modal.section.basic.jvm_description": "Configure the JVM target, access modes, and credentials.",
"connection_modal.section.basic.sql_description": "Configure the target, driver, credentials, and database scope.",
"connection_modal.section.basic.title": "Basic information",
"connection_modal.section.config_sections": "Configuration sections",
"connection_modal.section.network.description": "Configure SSL/TLS, SSH Tunnel, proxy, and HTTP Tunnel options.",
"connection_modal.section.network.nav_description": "Configure network and security options for this connection.",
"connection_modal.section.network.title": "Network and security",
"connection_modal.section.readOnly.description": "Choose the high-risk production restrictions you want instead of forcing a single read-only switch.",
"connection_modal.section.readOnly.title": "Production guard",
"connection_modal.ssl_hint.dameng": "Choose the SSL/TLS mode required by the database security policy.",
"connection_modal.ssl_hint.default": "Choose the SSL/TLS mode required by the database security policy.",
"connection_modal.ssl_hint.mongodb": "Choose the SSL/TLS mode required by the database security policy.",
"connection_modal.ssl_hint.mysql_like": "Choose the SSL/TLS mode required by the database security policy.",
"connection_modal.ssl_hint.sqlserver": "Choose the SSL/TLS mode required by the database security policy.",
"connection_modal.status.disabled": "Disabled",
"connection_modal.status.enabled": "Enabled",
"connection_modal.status.healthy": "Healthy",
"connection_modal.status.unhealthy": "Unhealthy",
"connection_modal.step.select_source": "Select data source",
"connection_modal.step.select_source_description": "Choose the connection type to create.",
"connection_modal.step1.group.domestic": "Domestic databases",
"connection_modal.step1.group.message_queue": "Message queues",
"connection_modal.step1.group.nosql": "NoSQL databases",
"connection_modal.step1.group.other": "Other",
"connection_modal.step1.group.relational": "Relational databases",
"connection_modal.step1.group.timeseries": "Time-series databases",
"connection_modal.step1.group.vector": "Vector databases",
"connection_modal.step1.hint.chroma": "Collection browsing, vector retrieval, and metadata filtering",
"connection_modal.step1.hint.custom": "Custom driver and DSN",
"connection_modal.step1.hint.elasticsearch": "Index browsing, Mapping inspection, JSON DSL, and query_string queries",
"connection_modal.step1.hint.file": "Local file connection",
"connection_modal.step1.hint.goldendb": "MySQL compatible / distributed transactions",
"connection_modal.step1.hint.jvm": "JMX / Endpoint / Agent",
"connection_modal.step1.hint.mongodb": "Single node / replica set",
"connection_modal.step1.hint.oceanBase": "MySQL / Oracle tenant",
"connection_modal.step1.hint.qdrant": "Collection browsing, vector search, and Payload filtering",
"connection_modal.step1.hint.redis": "Single node / cluster",
"connection_modal.step1.hint.standard": "Standard connection configuration",
"connection_modal.switch.off": "Off",
"connection_modal.switch.on": "On",
"connection_modal.table.health": "Health",
"connection_modal.table.role": "Role",
"connection_modal.test.redis_database_list_failure": "Connected, but failed to load the Redis database list: {{detail}}",
"connection_modal.test.redis_database_list_timeout": "Connected, but loading the Redis database list timed out (>{{seconds}} seconds)",
"connection_modal.test_error.description": "View the full error returned by the backend.",
"connection_modal.test_error.empty": "No error details",
"connection_modal.test_error.title": "Connection test failure details",
"connection_modal.title.create": "New {{type}} connection",
"connection_modal.title.create_description": "Enter and save the connection configuration.",
"connection_modal.title.edit": "Edit connection",
"connection_modal.title.edit_description": "Edit the {{type}} connection configuration.",
"connection_modal.title.select_type": "Select data source type",
"connection_modal.title.select_type_description": "Choose one of the supported data source types.",
"connection_modal.topology.cluster": "Cluster",
"connection_modal.topology.mongodb_replica": "Replica set",
"connection_modal.topology.mongodb_replica_description": "Connect to a MongoDB replica set and optionally discover members.",
"connection_modal.topology.mongodb_single_description": "Connect to one MongoDB host.",
"connection_modal.topology.mysql_replica_description": "Use a primary connection plus optional replica hosts.",
"connection_modal.topology.mysql_single_description": "Connect to a single MySQL-compatible node.",
"connection_modal.topology.primary_replica": "Primary/replica",
"connection_modal.topology.redis_cluster_description": "Connect to a Redis Cluster and list additional nodes.",
"connection_modal.topology.redis_single_description": "Connect to a single Redis node.",
"connection_modal.topology.single": "Single node",
"connection_modal.validation.address_or_path_required": "Enter a host address or file path",
"connection_modal.validation.agent_url_required": "Enter the Agent URL",
"connection_modal.validation.arthas_tunnel_url_required": "Enter the Arthas Tunnel URL",
"connection_modal.validation.custom_dsn_required": "Enter the connection string",
"connection_modal.validation.custom_dsn_required_when_clearing_saved": "Enter a new connection string, or cancel clearing the saved DSN",
"connection_modal.validation.dameng_ssl_cert_path_required": "Enter the Dameng SSL certificate path",
"connection_modal.validation.dameng_ssl_key_path_required": "Enter the Dameng SSL key path",
"connection_modal.validation.diagnostic_bridge_url_required": "Enter the diagnostic bridge URL",
"connection_modal.validation.diagnostic_target_required": "Enter the diagnostic target",
"connection_modal.validation.diagnostic_timeout_range_1_300": "Diagnostic timeout must be between 1 and 300 seconds",
"connection_modal.validation.driver_name_required": "This field is required",
"connection_modal.validation.endpoint_url_required": "Enter the Endpoint URL",
"connection_modal.validation.jvm_access_mode_required": "Select at least one JVM access mode",
"connection_modal.validation.jvm_host_required": "This field is required",
"connection_modal.validation.jvm_port_required": "This field is required",
"connection_modal.validation.jvm_preferred_mode_required": "Select a preferred JVM access mode",
"connection_modal.validation.oracle_service_required": "Enter the Oracle service name",
"connection_modal.validation.port_required": "Enter the port",
"connection_modal.validation.proxy_host_required": "Enter the proxy host",
"connection_modal.validation.proxy_port_required": "Enter the proxy port",
"connection_modal.validation.ssh_host_required": "Enter the SSH host",
"connection_modal.validation.ssh_port_required": "Enter the SSH port",
"connection_modal.validation.ssh_user_required": "Enter the SSH user",
"connection_modal.validation.timeout_range_1_300": "Timeout must be between 1 and 300 seconds",
"connection_modal.validation.tunnel_host_required": "Enter the HTTP Tunnel host",
"connection_modal.validation.tunnel_port_required": "Enter the HTTP Tunnel port",
"connection_modal.validation.username_required": "Enter the username",
"data_export.action.clear": "Clear",
"data_export.action.clear_progress": "Clear current progress",
"data_export.action.select_all": "Select all",
"data_export.action.start": "Start export",
"data_export.dialog.action.start": "Start export",
"data_export.dialog.field.format": "Export format",
"data_export.dialog.field.scope": "Export scope",
"data_export.dialog.field.xlsx_max_rows": "Max rows per worksheet",
"data_export.dialog.field.xlsx_max_rows_help": "Applies to XLSX only, maximum {{maxRows}} rows (excluding header)",
"data_export.dialog.validation.format_required": "Please choose an export format",
"data_export.dialog.validation.scope_required": "Please choose an available export scope",
"data_export.dialog.validation.xlsx_max_rows_limit": "The max rows per worksheet cannot exceed {{maxRows}}",
"data_export.dialog.validation.xlsx_max_rows_required": "Please enter a valid max rows value per worksheet",
"data_export.hint.batch_stage": "The current stage is a backend progress hint. Overall progress advances after each object or database finishes.",
"data_export.hint.rows_unknown": "Total rows were not counted in advance, so percentage is hidden and the written row count is shown in real time.",
"data_export.label.connection": "Connection",
"data_export.label.current_stage": "Current stage",
"data_export.label.database": "Database",
"data_export.label.directory": "Directory",
"data_export.label.elapsed": "Export duration",
"data_export.label.estimated_rows": "Estimated rows",
"data_export.label.export_content": "Export content",
"data_export.label.export_scope": "Export scope",
"data_export.label.file": "File",
"data_export.label.format": "Format",
"data_export.label.host": "Host",
"data_export.label.mode": "Mode",
"data_export.label.object": "Object",
"data_export.label.object_count": "Object count",
"data_export.label.progress_summary": "Progress details",
"data_export.label.selected_databases": "Selected databases",
"data_export.label.sql_file": "SQL file",
"data_export.label.started_at": "Start time",
"data_export.label.status": "Status",
"data_export.label.strategy": "Execution path",
"data_export.label.type": "Type",
"data_export.label.xlsx_max_rows": "Max rows per worksheet",
"data_export.message.already_running": "An export task is already running. Wait for it to finish before starting another export.",
"data_export.message.export_failed": "Export failed: {{error}}",
"data_export.message.export_success": "Export successful",
"data_export.message.load_databases_failed": "Failed to load database list",
"data_export.message.load_objects_failed": "Failed to load object list",
"data_export.progress.label.task": "Task",
"data_export.progress.rows_written": "Written {{current}} rows",
"data_export.progress.rows_written_with_total": "Written {{current}} / {{total}} rows",
"data_export.progress.stage.export_failed": "Export failed",
"data_export.progress.stage.exporting_item_with_progress": "Exporting {{name}} ({{current}}/{{total}})",
"data_export.progress.stage.exporting_sql_file": "Exporting SQL file",
"data_export.progress.stage.finalizing_csv_write": "Finalizing CSV write",
"data_export.progress.stage.finalizing_file_write": "Finalizing file write",
"data_export.progress.stage.finalizing_xlsx_package": "Packaging and compressing XLSX file",
"data_export.progress.stage.preparing_batch_databases_export": "Preparing batch database export",
"data_export.progress.stage.preparing_batch_tables_export": "Preparing batch object export",
"data_export.progress.stage.preparing_export": "Preparing export",
"data_export.progress.stage.querying_data": "Querying data",
"data_export.progress.stage.waiting_file_selection": "Waiting to choose an export file",
"data_export.progress.stage.writing_file": "Writing file",
"data_export.progress.status.done": "Completed",
"data_export.progress.status.error": "Failed",
"data_export.progress.status.finalizing": "Finalizing",
"data_export.progress.status.idle": "Not started",
"data_export.progress.status.running": "Running",
"data_export.progress.status.start": "Preparing",
"data_export.progress.title.done": "Export complete",
"data_export.progress.title.error": "Export failed",
"data_export.progress.title.running": "Exporting",
"data_export.progress.value.target_fallback": "Unnamed object",
"data_export.progress.value.task_fallback": "Export task",
"data_export.value.unestimated": "Not pre-counted",
"data_export.value.waiting_target_path": "Waiting for target path",
"data_export.value.waiting_to_start": "Waiting to start",
"data_export.workbench.alert.connection_missing_description": "Restore the connection configuration before running this export task.",
"data_export.workbench.alert.connection_missing_title": "The current connection no longer exists",
"data_export.workbench.alert.database_load_failed": "Failed to load database list",
"data_export.workbench.alert.object_load_failed": "Failed to load object list",
"data_export.workbench.alert.scope_unavailable_description": "This scope lacks stable backend query context. Please export directly from the data page, or switch to full-table or filtered-result export.",
"data_export.workbench.alert.scope_unavailable_title": "This scope cannot currently be reproduced in the export workbench",
"data_export.workbench.batch_databases.mode.backup.description": "Generate separate schema-plus-data SQL files for each database.",
"data_export.workbench.batch_databases.mode.backup.label": "Backup databases",
"data_export.workbench.batch_databases.mode.schema.description": "Generate separate schema SQL files for each database.",
"data_export.workbench.batch_databases.mode.schema.label": "Export database schema",
"data_export.workbench.batch_tables.mode.backup.description": "Export schema and data SQL for selected objects.",
"data_export.workbench.batch_tables.mode.backup.label": "Backup",
"data_export.workbench.batch_tables.mode.data_only.description": "Export INSERT statements for selected objects.",
"data_export.workbench.batch_tables.mode.data_only.label": "Data only",
"data_export.workbench.batch_tables.mode.schema.description": "Export CREATE or definition SQL for selected objects in the current database.",
"data_export.workbench.batch_tables.mode.schema.label": "Schema",
"data_export.workbench.description.current_task_empty": "After export starts, the single primary progress for the current task will appear here.",
"data_export.workbench.description.history": "The current task is not duplicated here. The history area keeps only summaries for finished tasks or tasks you have switched away from.",
"data_export.workbench.empty.history": "No history yet. After you finish an export, the latest task summary will stay here.",
"data_export.workbench.empty.not_started": "Export has not started",
"data_export.workbench.helper.available_objects": "{{available}} objects are available in the current database, {{selected}} selected.",
"data_export.workbench.helper.batch_database_output": "When export starts, choose an output directory first, then generate separate SQL files for each database.",
"data_export.workbench.helper.batch_databases_start": "Batch database export lets you choose an output directory first, then generates separate SQL files per database and shows overall database progress on the right.",
"data_export.workbench.helper.batch_tables_start": "Batch object export generates one SQL file and shows overall object progress plus recent task summaries on the right.",
"data_export.workbench.helper.single_export_start": "After export starts, you will choose the target file first, and the right panel will show a single progress bar, elapsed time, and output path.",
"data_export.workbench.history.count": "{{count}} records",
"data_export.workbench.mode.batch_databases": "Batch databases",
"data_export.workbench.mode.batch_tables": "Batch objects",
"data_export.workbench.object_type.materialized_view": "Materialized view",
"data_export.workbench.object_type.table": "Table",
"data_export.workbench.object_type.view": "View",
"data_export.workbench.placeholder.loading_databases": "Loading databases...",
"data_export.workbench.placeholder.loading_objects": "Loading objects...",
"data_export.workbench.placeholder.select_connection": "Select connection",
"data_export.workbench.placeholder.select_database": "Select database",
"data_export.workbench.placeholder.select_database_first": "Please select a database first",
"data_export.workbench.placeholder.select_object": "Select objects",
"data_export.workbench.scope.all.description": "Re-query the entire table on the backend and export all rows.",
"data_export.workbench.scope.all.label": "Full table data",
"data_export.workbench.scope.selected_databases": "Selected databases ({{count}})",
"data_export.workbench.scope.selected_objects": "Selected objects ({{count}})",
"data_export.workbench.section.config": "Export configuration",
"data_export.workbench.section.current_task": "Current task",
"data_export.workbench.section.history": "Recent tasks",
"data_export.workbench.strategy.batch_databases": "Batch database SQL export · {{mode}}",
"data_export.workbench.strategy.batch_tables": "Batch object SQL export · {{mode}}",
"data_export.workbench.strategy.full_table": "Full-table export path",
"data_export.workbench.strategy.query_replay": "SQL replay export",
"data_export.workbench.subtitle": "Configure exports, watch the primary progress, and review recent task summaries on one page.",
"data_export.workbench.summary.batch_databases_done": "Completed {{current}} / {{total}} databases",
"data_export.workbench.summary.batch_databases_running": "Batch database export is running",
"data_export.workbench.summary.batch_tables_done": "Completed {{current}} / {{total}} objects",
"data_export.workbench.summary.batch_tables_running": "Batch object export is running",
"data_export.workbench.target.batch_databases": "{{count}} databases",
"data_export.workbench.target.batch_tables": "{{database}} · {{count}} objects",
"data_export.workbench.target.current_database": "Current database",
"data_export.workbench.task.export_target": "Export {{name}}",
"data_export.workbench.title": "Export Workbench",
"data_grid.action.apply": "Apply",
"data_grid.ai_insight.prompt": "Please analyze the following query result data (first {{count}} sample rows):\n```json\n{{json}}\n```\n\nAnalyze data characteristics, find patterns, or provide business insights.",
"data_grid.ai_prompt.analyze_page": "Please analyze the following query result data (first {{count}} sample rows):\n```json\n{{json}}\n```\n\nPlease analyze data characteristics, find patterns, or provide business insights.",
"data_grid.aria.row_number": "Row number",
"data_grid.batch_fill.set_null": "Set to NULL",
"data_grid.batch_fill.title": "Batch fill ({{count}} cells)",
"data_grid.batch_fill.value_placeholder": "Enter the value to fill",
"data_grid.cell_editor.now": "Now",
"data_grid.cell_editor.title": "Edit cell",
"data_grid.cell_editor.title_with_column": "Edit cell: {{column}}",
"data_grid.column.comment_tooltip": "Comment: {{comment}}",
"data_grid.column.drag_tooltip": "Drag to reorder columns",
"data_grid.column.foreign_key_jump_title": "Open foreign key table: {{tableName}}",
"data_grid.column.foreign_key_tooltip": "Foreign key: {{target}}",
"data_grid.column.resize_tooltip": "Drag to resize column, double-click to auto fit",
"data_grid.column.type_tooltip": "Type: {{type}}",
"data_grid.column_quick_find.placeholder": "Jump to column...",
"data_grid.column_quick_find.tooltip": "Type a column name, then press Enter or the locate button to jump to that column",
"data_grid.column_settings.column_visibility": "Column visibility",
"data_grid.column_settings.display_settings": "Display settings",
"data_grid.column_settings.field_info": "Field info",
"data_grid.column_settings.global_hidden_columns": "Global hidden columns",
"data_grid.column_settings.global_hidden_columns_add_current": "Add current hidden",
"data_grid.column_settings.global_hidden_columns_apply": "Apply global",
"data_grid.column_settings.global_hidden_columns_clear": "Clear global",
"data_grid.column_settings.global_hidden_columns_help": "Column names listed here are hidden in query results wherever they appear. Separate names with comma or newline.",
"data_grid.column_settings.hide_all": "Hide all",
"data_grid.column_settings.remember_column_order": "Remember custom column order",
"data_grid.column_settings.remember_hidden_columns": "Remember hidden column settings",
"data_grid.column_settings.reset_hidden": "Reset hidden",
"data_grid.column_settings.reset_hidden_success": "All columns are visible again",
"data_grid.column_settings.reset_order": "Reset order",
"data_grid.column_settings.reset_order_success": "Default column order restored",
"data_grid.column_settings.search_columns_placeholder": "Search column names...",
"data_grid.column_settings.show_all": "Show all",
"data_grid.column_settings.show_comments": "Show column comments in header",
"data_grid.column_settings.show_types": "Show column types in header",
"data_grid.context_menu.auto_fit_column": "Auto-fit column width to content",
"data_grid.context_menu.clear_column_sort": "Clear sort for this field",
"data_grid.context_menu.column_display_section": "Field display",
"data_grid.context_menu.column_no_comment": "No comment",
"data_grid.context_menu.column_unknown_type": "Unknown type",
"data_grid.context_menu.column_unnamed_field": "Unnamed field",
"data_grid.context_menu.copy_as_csv": "Copy as CSV",
"data_grid.context_menu.copy_as_delete": "Copy as DELETE",
"data_grid.context_menu.copy_as_insert": "Copy as INSERT",
"data_grid.context_menu.copy_as_json": "Copy as JSON",
"data_grid.context_menu.copy_as_markdown": "Copy as Markdown",
"data_grid.context_menu.copy_as_update": "Copy as UPDATE",
"data_grid.context_menu.copy_column_data": "Copy column data",
"data_grid.context_menu.copy_field_name": "Copy field name",
"data_grid.context_menu.copy_row_as_new": "Copy this row as a new row",
"data_grid.context_menu.copy_row_data": "Copy row data",
"data_grid.context_menu.current_cell": "Current cell",
"data_grid.context_menu.current_marker": "Current",
"data_grid.context_menu.current_row": "Current row",
"data_grid.context_menu.edit_row": "Edit this row",
"data_grid.context_menu.edit_section": "Edit",
"data_grid.context_menu.export_as_csv": "Export as CSV",
"data_grid.context_menu.export_as_excel": "Export as Excel",
"data_grid.context_menu.export_as_html": "Export as HTML",
"data_grid.context_menu.export_as_json": "Export as JSON",
"data_grid.context_menu.export_selected": "Export selected data",
"data_grid.context_menu.fill_to_selected_rows": "Fill to selected rows ({{count}})",
"data_grid.context_menu.hide_column": "Hide this field",
"data_grid.context_menu.hide_column_comment": "Hide field comment",
"data_grid.context_menu.hide_column_type": "Hide field type",
"data_grid.context_menu.paste_copied_columns": "Paste copied columns (same names)",
"data_grid.context_menu.paste_row_as_new": "Paste as new row",
"data_grid.context_menu.paste_row_as_new_count": "Paste as new row ({{count}})",
"data_grid.context_menu.show_column_comment": "Show field comment",
"data_grid.context_menu.show_column_type": "Show field type",
"data_grid.context_menu.sort_ascending": "Sort ascending",
"data_grid.context_menu.sort_descending": "Sort descending",
"data_grid.context_menu.sort_section": "Sort",
"data_grid.context_menu.undo_cell_change": "Undo this cell change",
"data_grid.copy_sql.error.missing_safe_where": "The current result set lacks a primary key or unique key that can safely locate the row, and it does not cover every table column, so a WHERE condition cannot be generated.",
"data_grid.copy_sql.error.missing_table_name": "The current result set is not associated with a clear table name, so {{mode}} SQL cannot be generated.",
"data_grid.copy_sql.error.no_copyable_fields": "The current result set has no copyable fields, so SQL cannot be generated.",
"data_grid.data_panel.click_cell_description": "Click a cell in the table to preview full data",
"data_grid.data_panel.click_cell_title": "Click a cell to view data",
"data_grid.data_panel.title": "Data preview",
"data_grid.datetime_picker.now": "Now",
"data_grid.ddl.copy": "Copy DDL",
"data_grid.ddl.layout_bottom": "Bottom",
"data_grid.ddl.layout_side": "Side",
"data_grid.ddl.loading": "Loading DDL...",
"data_grid.ddl.reload": "Reload",
"data_grid.ddl.sidebar_aria": "Table DDL sidebar",
"data_grid.ddl.view": "View DDL",
"data_grid.embedded_designer.title": "Design table ({{tableName}})",
"data_grid.error_boundary.description": "An error occurred while rendering the data grid. The data format may be invalid.",
"data_grid.error_boundary.retry": "Retry",
"data_grid.error_boundary.title": "Render error",
"data_grid.export.all_data": "Export all data",
"data_grid.export.all_rows": "Export all rows ({{count}} rows)",
"data_grid.export.all_rows_requery": "Export all (rerun query)",
"data_grid.export.current_page": "Export current page ({{count}} rows)",
"data_grid.export.current_page_rows": "Export current page ({{count}} rows)",
"data_grid.export.group_filtered_results": "Filtered results",
"data_grid.export.group_full_table": "Full table",
"data_grid.export.no_selection_prompt": "No rows are selected. Choose an export scope:",
"data_grid.export.options_title": "Export options",
"data_grid.export.query_result_title": "Export query results",
"data_grid.export.scope.all_results_cached": "All results (current cache {{count}} rows)",
"data_grid.export.scope.all_results_cached_description": "Exports all results from the current cache when the current query cannot be replayed.",
"data_grid.export.scope.all_results_requery": "All results (rerun query)",
"data_grid.export.scope.all_results_requery_description": "Re-runs the SQL on the backend to avoid exporting only the current page or cache.",
"data_grid.export.scope.current_page": "Current page ({{count}} rows)",
"data_grid.export.scope.current_page_description": "Export directly from the current page cache.",
"data_grid.export.scope.current_page_requery_description": "Re-runs the current page on the backend using the current pagination settings before export.",
"data_grid.export.scope.current_page_unavailable_description": "The current page depends on temporary frontend state, so use quick export instead.",
"data_grid.export.scope.filtered_results_all": "Filtered results (all)",
"data_grid.export.scope.filtered_results_all_requery_description": "Re-queries the database with the current filters and exports all filtered results.",
"data_grid.export.scope.filtered_results_all_unavailable_description": "The current data source or state does not support replaying filtered exports in the workbench.",
"data_grid.export.scope.selected_rows": "Selected rows",
"data_grid.export.scope.selected_rows_count": "Selected rows ({{count}} rows)",
"data_grid.export.scope.selected_rows_description": "Export only the checked rows in the current result set.",
"data_grid.export.scope_prompt": "Choose export scope:",
"data_grid.export.selected_rows": "Export selected rows ({{count}} rows)",
"data_grid.filter.add_condition": "Add condition",
"data_grid.filter.add_sort": "Add sort",
"data_grid.filter.apply": "Apply",
"data_grid.filter.apply_where": "Apply WHERE",
"data_grid.filter.clear": "Clear",
"data_grid.filter.custom_where_placeholder": "Enter a custom WHERE expression (without WHERE), for example: status IN ('A','B')",
"data_grid.filter.disable_all": "Disable all",
"data_grid.filter.enable_all": "Enable all",
"data_grid.filter.enabled": "Enabled",
"data_grid.filter.end_value_placeholder": "End value",
"data_grid.filter.first_condition": "First",
"data_grid.filter.invalid_quick_where": "WHERE condition cannot contain semicolons or SQL comments",
"data_grid.filter.list_values_placeholder": "Separate multiple values with commas or line breaks",
"data_grid.filter.logic.and": "And (AND)",
"data_grid.filter.logic.or": "Or (OR)",
"data_grid.filter.mongodb_query_placeholder": "Enter a MongoDB JSON query object, for example {\"status\":\"A\"}",
"data_grid.filter.no_value_placeholder": "No value required",
"data_grid.filter.op.between": "Between",
"data_grid.filter.op.contains": "Contains",
"data_grid.filter.op.custom": "[Custom]",
"data_grid.filter.op.ends_with": "Ends with",
"data_grid.filter.op.in_list": "In list",
"data_grid.filter.op.is_empty": "Is empty",
"data_grid.filter.op.is_not_empty": "Is not empty",
"data_grid.filter.op.is_not_null": "Is not NULL",
"data_grid.filter.op.is_null": "Is NULL",
"data_grid.filter.op.not_between": "Not between",
"data_grid.filter.op.not_contains": "Does not contain",
"data_grid.filter.op.not_ends_with": "Does not end with",
"data_grid.filter.op.not_in_list": "Not in list",
"data_grid.filter.op.not_starts_with": "Does not start with",
"data_grid.filter.op.starts_with": "Starts with",
"data_grid.filter.quick_where_placeholder": "Enter the condition after WHERE, for example status = 1 AND name LIKE 'A%'",
"data_grid.filter.search_field_placeholder": "Search field names",
"data_grid.filter.select_sort_field_placeholder": "Select sort field",
"data_grid.filter.sort_asc": "Ascending",
"data_grid.filter.sort_desc": "Descending",
"data_grid.filter.sort_label": "Sort",
"data_grid.filter.start_value_placeholder": "Start value",
"data_grid.filter.suggestion.column": "Column",
"data_grid.filter.suggestion.keyword": "Keyword",
"data_grid.filter.suggestion.operator": "Operator",
"data_grid.filter.then_label": "Then",
"data_grid.json_editor.apply_changes": "Apply changes",
"data_grid.json_editor.description": "Edit in the current result order. JSON mode does not support adding or deleting records. Use table mode for that.",
"data_grid.json_editor.format": "Format JSON",
"data_grid.json_editor.invalid_format": "Invalid JSON format: {{error}}",
"data_grid.json_editor.title": "Edit JSON result set",
"data_grid.message.auto_commit_failed": "Auto commit failed: {{detail}}",
"data_grid.message.auto_commit_success": "Auto commit succeeded",
"data_grid.message.cell_edit_mode_entered": "Cell edit mode enabled. Drag to select multiple cells.",
"data_grid.message.cell_edit_mode_exited": "Cell edit mode disabled.",
"data_grid.message.change_set_build_failed": "Failed to build change set",
"data_grid.message.change_set_build_failed_detail": "Failed to build change set: {{detail}}",
"data_grid.message.column_order_reset": "Default column order restored",
"data_grid.message.column_quick_find_not_found": "Field column not found: {{query}}",
"data_grid.message.column_quick_find_not_rendered": "Field column \"{{column}}\" is not currently rendered, so it cannot be located.",
"data_grid.message.column_visibility_reset": "All columns restored",
"data_grid.message.commit_failed": "Commit failed: {{detail}}",
"data_grid.message.copied_columns": "Copied {{count}} columns. You can paste them to target rows.",
"data_grid.message.copied_rows": "Copied {{count}} rows. You can paste them as new rows.",
"data_grid.message.copied_to_clipboard": "Copied to clipboard",
"data_grid.message.copy_columns_first": "Copy column values first",
"data_grid.message.copy_columns_same_row_only": "Select cells from only one row when copying column values",
"data_grid.message.copy_rows_first": "Copy rows first",
"data_grid.message.copy_sql_not_supported": "This data source does not support copying SQL. Use JSON/CSV/Markdown copy instead.",
"data_grid.message.current_field_not_editable": "The current field is not editable",
"data_grid.message.current_record_not_editable": "The current record is not editable",
"data_grid.message.current_row_no_copyable_content": "The current row has no copyable content",
"data_grid.message.ddl_copied": "DDL copied to clipboard",
"data_grid.message.ddl_copy_failed": "Failed to copy DDL",
"data_grid.message.ddl_load_failed": "Failed to load DDL",
"data_grid.message.ddl_missing_context": "The current table is missing a connection or table name, so DDL cannot be viewed",
"data_grid.message.drag_select_cells_to_copy": "Drag to select cells to copy first",
"data_grid.message.export_failed": "Export failed: {{detail}}",
"data_grid.message.export_success": "Export completed",
"data_grid.message.export_with_uncommitted_changes": "There are uncommitted changes. Export will use the visible grid data. Commit first if you need full long-field data.",
"data_grid.message.exporting": "Exporting...",
"data_grid.message.exporting_all": "Exporting all data...",
"data_grid.message.exporting_rows": "Exporting {{count}} rows...",
"data_grid.message.filled_cells": "Filled {{count}} cells",
"data_grid.message.filled_rows": "Filled {{count}} rows",
"data_grid.message.filtered_export_not_supported": "This data source does not support exporting filtered results",
"data_grid.message.filtered_export_uses_committed_data": "There are uncommitted changes. Filtered result export uses committed database data.",
"data_grid.message.import_done": "Import completed",
"data_grid.message.json_applied": "JSON changes were applied to the current result set. You can continue with Commit transaction.",
"data_grid.message.json_invalid": "Invalid JSON: {{detail}}",
"data_grid.message.json_parse_failed": "JSON parse failed: {{detail}}",
"data_grid.message.json_record_count_mismatch": "Record count mismatch: current {{current}} rows, JSON has {{json}} rows. Do not add or delete records in this mode.",
"data_grid.message.json_record_missing_row_key": "Record {{index}} is missing the row identifier and cannot be applied",
"data_grid.message.json_record_not_object": "Record {{index}} is not an object and cannot be applied",
"data_grid.message.json_view_must_be_array": "JSON view must be an array, with each item corresponding to one record",
"data_grid.message.keep_one_visible_column": "Keep at least one visible column",
"data_grid.message.locate_record_to_edit": "Locate the record to edit first",
"data_grid.message.locator_column_value_empty": "Locator column {{column}} is empty, so changes cannot be submitted safely.",
"data_grid.message.no_changes_to_commit": "No changes to commit",
"data_grid.message.no_copyable_cells": "No copyable cells were recognized",
"data_grid.message.no_copyable_columns": "No copyable columns were recognized",
"data_grid.message.no_copyable_rows": "No copyable rows were recognized",
"data_grid.message.no_data_changes": "No data changed",
"data_grid.message.no_ddl_to_copy": "No DDL to copy",
"data_grid.message.no_field_name": "Field name not recognized",
"data_grid.message.no_filter_applied": "No filter condition is currently applied",
"data_grid.message.no_other_rows_to_fill": "No other selected rows can be filled",
"data_grid.message.no_pasteable_editable_fields": "No editable fields can be pasted",
"data_grid.message.no_pasteable_rows": "No rows can be pasted",
"data_grid.message.no_rows_selected": "No rows are selected",
"data_grid.message.no_safe_locator": "No safe row locator is available for this result set.",
"data_grid.message.pasted_columns_to_rows": "Pasted to {{rows}} rows, {{cells}} cells total",
"data_grid.message.pasted_rows_as_new": "Pasted {{count}} rows as new rows. Review them before committing.",
"data_grid.message.preview_sql_failed": "Failed to generate preview SQL",
"data_grid.message.preview_sql_failed_detail": "Failed to generate preview SQL: {{detail}}",
"data_grid.message.result_set_no_copyable_content": "The current result set has no copyable content",
"data_grid.message.rollback_failed": "Rollback failed: {{detail}}",
"data_grid.message.saved": "Saved",
"data_grid.message.select_cells_to_fill": "Select cells to fill first",
"data_grid.message.select_file_failed": "Failed to select file: {{detail}}",
"data_grid.message.select_rows_to_copy": "Select rows to copy first",
"data_grid.message.select_rows_to_fill": "Select rows to fill first",
"data_grid.message.select_same_row_cells_to_copy": "Select cells in the same row to copy first",
"data_grid.message.select_target_rows": "Select target rows first",
"data_grid.message.selected_cells_no_update": "Selected cells do not need updates",
"data_grid.message.selection_no_copyable_content": "The current selection has no copyable content",
"data_grid.message.target_row_not_found": "Target row not found. Refresh and try again.",
"data_grid.message.target_rows_cannot_only_source": "Target rows cannot be only the source row. Select another row.",
"data_grid.message.target_rows_no_update": "Target rows do not need updates",
"data_grid.message.transaction_committed": "Transaction committed",
"data_grid.message.transaction_rolled_back": "Transaction rolled back",
"data_grid.message.undo_added_row_hint": "For new rows, use Delete selected or full-table rollback to undo.",
"data_grid.message.undo_cell_original_missing": "The original data for this cell was not found, so it cannot be undone.",
"data_grid.message.undo_cell_success": "Cell change undone",
"data_grid.metadata_view.column_name": "Name",
"data_grid.metadata_view.column_type": "Type",
"data_grid.metadata_view.comment": "Comment",
"data_grid.metadata_view.default_value": "Default",
"data_grid.metadata_view.er_collapse_fields": "Collapse field summary",
"data_grid.metadata_view.er_current_badge": "Current",
"data_grid.metadata_view.er_empty": "No foreign key relations were found for this table",
"data_grid.metadata_view.er_expand_fields": "Expand all fields",
"data_grid.metadata_view.er_expand_hidden_columns": "Show {{count}} more fields",
"data_grid.metadata_view.er_expand_relations": "Expand next layer",
"data_grid.metadata_view.er_field_badge": "Field",
"data_grid.metadata_view.er_hidden_columns": "{{count}} more fields",
"data_grid.metadata_view.er_open_table": "Open table",
"data_grid.metadata_view.er_partial_warning": "Some relations could not be loaded. The diagram may be incomplete.",
"data_grid.metadata_view.er_reference_badge": "References",
"data_grid.metadata_view.er_referenced_by_badge": "Referenced by",
"data_grid.metadata_view.er_related_table_count": "{{count}} related tables",
"data_grid.metadata_view.er_relation_count": "{{count}} relations",
"data_grid.metadata_view.er_relation_depth": "Depth {{count}}",
"data_grid.metadata_view.er_reset_relations": "Reset to one hop",
"data_grid.metadata_view.er_table_badge": "Table",
"data_grid.metadata_view.field_count": "{{count}} fields",
"data_grid.metadata_view.fields_badge": "Fields",
"data_grid.modal.export_options.all_data": "Export all data",
"data_grid.modal.export_options.current_page": "Export current page ({{count}} rows)",
"data_grid.modal.export_options.filtered_results": "Filtered results",
"data_grid.modal.export_options.no_rows_selected": "No rows are selected. Choose an export scope:",
"data_grid.modal.export_options.title": "Export options",
"data_grid.modal.export_options.whole_table": "Whole table",
"data_grid.page_find.next": "Next",
"data_grid.page_find.placeholder": "Find in current page...",
"data_grid.page_find.previous": "Previous",
"data_grid.page_find.summary": "{{occurrences}} matches / {{cells}} cells",
"data_grid.page_find.tooltip": "Find only in loaded rows on the current page. WHERE conditions are not changed.",
"data_grid.pagination.jump_action": "Go",
"data_grid.pagination.jump_aria": "Jump to page",
"data_grid.pagination.jump_label": "Jump",
"data_grid.pagination.page.current": "Page {{current}}",
"data_grid.pagination.page.known": "Page {{current}} / {{totalPages}}",
"data_grid.pagination.page_size_aria": "Rows per page",
"data_grid.pagination.page_size_option": "{{count}} rows / page",
"data_grid.pagination.result_set": "Result set",
"data_grid.pagination.summary.approximate": "Current {{current}} rows / about {{total}} rows",
"data_grid.pagination.summary.cancelled": "Current {{current}} rows / count cancelled",
"data_grid.pagination.summary.counting": "Current {{current}} rows / counting total...",
"data_grid.pagination.summary.counting_exact": "Current {{current}} rows / counting exact total...",
"data_grid.pagination.summary.empty": "Current 0 rows / 0 rows total",
"data_grid.pagination.summary.known": "Current {{current}} rows / {{total}} rows total",
"data_grid.pagination.summary.not_counted": "Current {{current}} rows / total not counted",
"data_grid.preview_panel.no_cell_description": "Click a table cell to preview the full data",
"data_grid.preview_panel.no_cell_title": "Click a cell to view data",
"data_grid.preview_sql.copied": "Copied",
"data_grid.preview_sql.no_changes": "No changes",
"data_grid.preview_sql.summary": "{{deletes}} DELETE, {{updates}} UPDATE, {{inserts}} INSERT",
"data_grid.preview_sql.title": "Change preview",
"data_grid.record_view.edit_current": "Edit current record",
"data_grid.record_view.edit_json": "Edit JSON",
"data_grid.record_view.empty": "No data in the current result set",
"data_grid.record_view.json_record_count": "Current result set: {{count}} records",
"data_grid.record_view.next": "Next",
"data_grid.record_view.previous": "Previous",
"data_grid.record_view.record_position": "Record {{current}} / {{total}}",
"data_grid.row_editor.popup_edit": "Edit in popup",
"data_grid.row_editor.title": "Edit row",
"data_grid.secondary.column_display": "Column display",
"data_grid.secondary.data_preview": "Data preview",
"data_grid.secondary.er_diagram": "ER diagram",
"data_grid.secondary.jump_column": "Jump column",
"data_grid.secondary.live": "live",
"data_grid.secondary.object_design": "Object design",
"data_grid.secondary.pending_changes": "Pending {{count}}",
"data_grid.secondary.row_count": "{{count}} rows",
"data_grid.secondary.view_ddl": "View DDL",
"data_grid.table_fallback.query_result": "Query result",
"data_grid.toolbar.add_row": "Add row",
"data_grid.toolbar.ai_insight": "AI data insight",
"data_grid.toolbar.ai_insight_short": "AI insight",
"data_grid.toolbar.ai_insight_tooltip": "Ask AI to analyze the current query page data",
"data_grid.toolbar.batch_fill": "Batch fill ({{count}})",
"data_grid.toolbar.cancel_count": "Cancel count",
"data_grid.toolbar.cancel_count_tooltip": "Cancel this exact total count. Current browsing is not affected.",
"data_grid.toolbar.cell_editor": "Cell editor",
"data_grid.toolbar.commit": "Commit transaction ({{count}})",
"data_grid.toolbar.commit_delay.seconds": "{{seconds}}s",
"data_grid.toolbar.commit_label": "Commit transaction",
"data_grid.toolbar.commit_mode.auto": "Auto commit",
"data_grid.toolbar.commit_mode.auto_countdown": "Commit in {{seconds}}s",
"data_grid.toolbar.commit_mode.manual": "Manual commit",
"data_grid.toolbar.commit_mode.tooltip": "Controls how table edits are committed. Manual commit is safer; auto commit runs after the selected delay following the last edit.",
"data_grid.toolbar.copied_columns_count": "{{count}} copied columns",
"data_grid.toolbar.copy": "Copy",
"data_grid.toolbar.copy_row": "Copy row",
"data_grid.toolbar.copy_selection": "Copy selection ({{count}})",
"data_grid.toolbar.copy_selection_columns": "Copy selection column values ({{count}})",
"data_grid.toolbar.count_total": "Count total",
"data_grid.toolbar.count_total_tooltip": "Count the exact total with the current filter",
"data_grid.toolbar.delete_selected": "Delete selected",
"data_grid.toolbar.export": "Export",
"data_grid.toolbar.filter": "Filter",
"data_grid.toolbar.import": "Import",
"data_grid.toolbar.paste_row": "Paste row",
"data_grid.toolbar.paste_row_count": "Paste row ({{count}})",
"data_grid.toolbar.paste_to_selected_rows": "Paste to selected rows ({{count}})",
"data_grid.toolbar.preview_sql": "Preview SQL",
"data_grid.toolbar.preview_sql_generate": "Generate preview SQL",
"data_grid.toolbar.refresh": "Refresh",
"data_grid.toolbar.rollback": "Rollback",
"data_grid.toolbar.selected_count": "{{count}} selected",
"data_grid.toolbar.undo_delete": "Undo delete",
"data_grid.view.edit_current_record": "Edit current record",
"data_grid.view.edit_json": "Edit JSON",
"data_grid.view.empty_result": "Current result set has no data",
"data_grid.view.next_record": "Next record",
"data_grid.view.previous_record": "Previous record",
"data_grid.view.record_count": "Current result set: {{count}} records",
"data_grid.view.record_position": "Record {{current}} / {{total}}",
"data_grid.view.result_view": "Result view",
"data_grid.view.table": "Table",
"data_grid.view.text": "Text",
"data_sync.action.analyze_diff": "Analyze Differences",
"data_sync.action.cancel": "Cancel",
"data_sync.action.close": "Close",
"data_sync.action.continue_sync": "Continue Sync",
"data_sync.action.next": "Next",
"data_sync.action.previous": "Previous",
"data_sync.action.start_sync": "Start Sync",
"data_sync.action.view": "View",
"data_sync.alert.auto_create_planner_scope": "Automatic table creation currently supports only MySQL to Kingbase. It migrates columns, primary keys, regular indexes, unique indexes, and composite indexes, and skips full-text, spatial, prefix, and function indexes explicitly.",
"data_sync.alert.auto_create_scope": "Automatic table creation currently supports only MySQL to Kingbase. It migrates columns, primary keys, regular indexes, unique indexes, and composite indexes, and skips full-text, spatial, prefix, and function indexes explicitly.",
"data_sync.alert.existing_target_only": "Data sync runs against existing target tables by default. Switch to cross-database migration when you need table creation and import.",
"data_sync.alert.full_overwrite": "Full overwrite clears target table data. Use it carefully.",
"data_sync.alert.migration_mode": "Cross-database migration is active. Use it to move tables to another data source with automatic table creation and import.",
"data_sync.alert.query_mode": "SQL result-set sync currently supports custom source SQL to one existing target table. The query result must include the target table primary-key column.",
"data_sync.alert.sync_mode": "Data sync is active. Use it for incremental sync or overwrite import when target tables already exist.",
"data_sync.backend.error.analyze_prepare_secrets_failed": "Failed to prepare data sync analysis secrets: {{detail}}",
"data_sync.backend.error.apply_changes_failed": "Failed to apply changes: {{detail}}",
"data_sync.backend.error.apply_changes_unsupported": "The target driver does not support applying data changes",
"data_sync.backend.error.apply_source_query_changes_failed": "Failed to apply SQL result-set changes: {{detail}}",
"data_sync.backend.error.auto_add_column_failed": "Failed to add column automatically: column={{column}}, error={{detail}}",
"data_sync.backend.error.build_migration_plan_failed": "Failed to build migration plan: table={{table}}, error={{detail}}",
"data_sync.backend.error.clear_target_failed": "Failed to clear target table: {{detail}}",
"data_sync.backend.error.connect_source_failed": "Source database connection failed: {{detail}}",
"data_sync.backend.error.connect_source_mongodb_failed": "Source MongoDB connection failed: {{detail}}",
"data_sync.backend.error.connect_source_redis_failed": "Source Redis connection failed: {{detail}}",
"data_sync.backend.error.connect_target_failed": "Target database connection failed: {{detail}}",
"data_sync.backend.error.connect_target_mongodb_failed": "Target MongoDB connection failed: {{detail}}",
"data_sync.backend.error.connect_target_redis_failed": "Target Redis connection failed: {{detail}}",
"data_sync.backend.error.create_indexes_failed": "Failed to create indexes: table={{table}}, error={{detail}}",
"data_sync.backend.error.create_table_sql_empty": "Automatic table creation failed for table {{table}}: create-table SQL is empty",
"data_sync.backend.error.create_target_table_failed": "Failed to create target table: table={{table}}, error={{detail}}",
"data_sync.backend.error.diff_composite_pk_unsupported": "Composite primary key ({{columns}}) is not supported for difference comparison sync",
"data_sync.backend.error.diff_pk_required": "No primary key. Difference comparison sync is not supported; use insert-only or full-overwrite mode for direct import.",
"data_sync.backend.error.exec_ddl_statement_failed": "{{stage}} failed: SQL={{sql}}, error={{detail}}",
"data_sync.backend.error.execute_source_query_failed": "Failed to execute source query: {{detail}}",
"data_sync.backend.error.init_source_driver_failed": "Failed to initialize source database driver: {{detail}}",
"data_sync.backend.error.init_source_mongodb_driver_failed": "Failed to initialize source MongoDB driver: {{detail}}",
"data_sync.backend.error.init_target_driver_failed": "Failed to initialize target database driver: {{detail}}",
"data_sync.backend.error.init_target_mongodb_driver_failed": "Failed to initialize target MongoDB driver: {{detail}}",
"data_sync.backend.error.inspect_mongodb_collection_failed": "Failed to inspect target MongoDB collection: {{detail}}",
"data_sync.backend.error.list_mongodb_collections_failed": "Failed to list MongoDB collections: {{detail}}",
"data_sync.backend.error.load_target_columns_failed": "Failed to load target table columns: {{detail}}",
"data_sync.backend.error.mongo_document_write_unsupported": "The target driver does not support MongoDB document writes",
"data_sync.backend.error.mongo_read_source_samples_failed": "Failed to read source MongoDB collection samples: {{detail}}",
"data_sync.backend.error.mongo_redis_analyze_collection_failed": "Failed to analyze MongoDB collection {{collection}}: {{detail}}",
"data_sync.backend.error.mongo_redis_document_key_missing": "MongoDB document is missing the key field",
"data_sync.backend.error.mongo_redis_document_type_missing": "MongoDB document for Redis Key {{key}} is missing field {{field}}",
"data_sync.backend.error.mongo_redis_empty_target_value": "Redis target value is empty for key {{key}}",
"data_sync.backend.error.mongo_redis_unsupported_type": "Redis type {{type}} is not supported for key {{key}}",
"data_sync.backend.error.mongo_redis_value_invalid": "Redis value for key {{key}} has invalid {{type}} payload; actual type={{actual}}",
"data_sync.backend.error.mongo_redis_write_key_failed": "Failed to write Redis Key {{key}}: {{detail}}",
"data_sync.backend.error.pre_create_table_sql_failed": "Failed to pre-execute create-table SQL: table={{table}}, error={{detail}}",
"data_sync.backend.error.prepare_secrets_failed": "Failed to prepare data sync secrets: {{detail}}",
"data_sync.backend.error.preview_composite_pk_unsupported": "Composite primary key ({{columns}}) is not supported for data preview",
"data_sync.backend.error.preview_failed": "Data sync preview failed: {{detail}}",
"data_sync.backend.error.preview_pk_required": "No primary key, data preview is not supported",
"data_sync.backend.error.preview_prepare_secrets_failed": "Failed to prepare data sync preview secrets: {{detail}}",
"data_sync.backend.error.read_redis_key_failed": "Failed to read Redis Key {{key}}: {{detail}}",
"data_sync.backend.error.read_source_table_failed": "Failed to read source table: {{detail}}",
"data_sync.backend.error.read_source_table_failed_with_table": "Failed to read source table {{table}}: {{detail}}",
"data_sync.backend.error.read_target_redis_key_failed": "Failed to read target Redis Key {{key}}: {{detail}}",
"data_sync.backend.error.read_target_table_failed": "Failed to read target table: {{detail}}",
"data_sync.backend.error.read_target_table_failed_with_table": "Failed to read target table {{table}}: {{detail}}",
"data_sync.backend.error.redis_mongo_analyze_changes_failed": "Failed to analyze Redis migration changes: {{detail}}",
"data_sync.backend.error.redis_mongo_apply_changes_failed": "Failed to apply Redis migration changes: {{detail}}",
"data_sync.backend.error.redis_mongo_build_changes_failed": "Failed to build Redis migration changes: {{detail}}",
"data_sync.backend.error.redis_mongo_create_collection_failed": "Failed to create target MongoDB collection: {{detail}}",
"data_sync.backend.error.refresh_columns_after_create_failed": "Failed to load columns after creating target table: table={{table}}, error={{detail}}",
"data_sync.backend.error.restore_source_secret_failed": "Failed to restore source database connection secret: {{detail}}",
"data_sync.backend.error.restore_target_secret_failed": "Failed to restore target database connection secret: {{detail}}",
"data_sync.backend.error.scan_redis_keys_failed": "Failed to scan Redis Keys: {{detail}}",
"data_sync.backend.error.source_collection_no_migratable_fields": "No migratable fields could be inferred from source MongoDB collection: {{collection}}",
"data_sync.backend.error.source_table_columns_failed": "Failed to get source table columns: {{detail}}",
"data_sync.backend.error.source_table_missing_or_no_columns": "Source table is missing or has no column definitions: {{table}}",
"data_sync.backend.error.sync_table_schema_failed": "Failed to sync table schema: table={{table}}, error={{detail}}",
"data_sync.backend.error.target_collection_check_failed": "Failed to check target MongoDB collection: {{detail}}",
"data_sync.backend.error.target_composite_pk_query_diff_unsupported": "Target table has composite primary key ({{columns}}), so SQL result-set difference analysis is not supported",
"data_sync.backend.error.target_pk_required_for_query_diff": "The target table has no primary key, so SQL result-set difference analysis is not supported",
"data_sync.backend.error.target_table_columns_failed": "Failed to get target table columns: {{detail}}",
"data_sync.backend.error.target_table_columns_missing": "Target table {{table}} is missing or its column definitions could not be read",
"data_sync.backend.label.content_data_only": "Data only",
"data_sync.backend.label.content_schema_and_data": "Schema + data",
"data_sync.backend.label.content_schema_only": "Schema only",
"data_sync.backend.label.mode_full_overwrite": "full overwrite",
"data_sync.backend.label.mode_insert_only": "insert only",
"data_sync.backend.label.mode_insert_update": "incremental sync",
"data_sync.backend.label.target_strategy_auto_create_if_missing": "create target automatically when missing",
"data_sync.backend.label.target_strategy_existing_only": "require existing target",
"data_sync.backend.label.target_strategy_smart": "smart target handling",
"data_sync.backend.log.auto_add_columns_completed": "Automatic column completion finished: succeeded={{succeeded}}, failed={{failed}}",
"data_sync.backend.log.change_counts": "Rows to insert: {{inserts}}, update: {{updates}}, delete: {{deletes}}",
"data_sync.backend.log.connecting_source": "Connecting to source database: {{host}}...",
"data_sync.backend.log.connecting_target": "Connecting to target database: {{host}}...",
"data_sync.backend.log.data_already_consistent": "Data is already consistent; no changes are needed.",
"data_sync.backend.log.ddl_statement_succeeded": "Table {{table}} {{stage}} succeeded: {{sql}}",
"data_sync.backend.log.fatal_error": "Fatal error: {{message}}",
"data_sync.backend.log.missing_columns_auto_add_disabled": "Target table is missing {{count}} column(s), but automatic completion is disabled; they will be ignored: {{columns}}",
"data_sync.backend.log.missing_columns_auto_add_started": "Target table is missing {{count}} column(s); starting automatic completion: {{columns}}",
"data_sync.backend.log.mongo_redis_keyspace_options": "MongoDB to Redis keyspace migration; mode={{mode}}; target={{target}}",
"data_sync.backend.log.mongo_redis_migrating_key": "Writing Redis Key {{key}}",
"data_sync.backend.log.mongo_redis_syncing_collection": "Syncing MongoDB collection {{collection}}",
"data_sync.backend.log.redis_mongo_keyspace_options": "Redis to MongoDB keyspace migration; mode={{mode}}; target strategy={{strategy}}",
"data_sync.backend.log.redis_mongo_migrating_key": "Migrating Redis Key {{key}}",
"data_sync.backend.log.source_query_no_changes": "SQL result set and target table are consistent; no changes need to be applied",
"data_sync.backend.log.source_query_sync_completed": "SQL result-set sync completed: inserts={{inserts}}, updates={{updates}}, deletes={{deletes}}",
"data_sync.backend.log.source_query_sync_source": "Sync source: SQL result set -> target table {{table}}; mode: {{mode}}",
"data_sync.backend.log.sync_options": "Sync content: {{content}}; mode: {{mode}}; auto-add columns: {{autoAddColumns}}; target table strategy: {{targetTableStrategy}}; create indexes: {{createIndexes}}",
"data_sync.backend.log.syncing_table": "Syncing table: {{table}}",
"data_sync.backend.log.table_no_operations_skipped": "Table {{table}} has no selected operations and was skipped",
"data_sync.backend.log.target_table_created": "Target table created successfully: {{table}}",
"data_sync.backend.log.target_table_no_operations": "Target table {{table}} has no selected operations and was skipped",
"data_sync.backend.log.unknown_sync_content_data_only": "Unknown sync content {{content}}; data-only sync was selected automatically",
"data_sync.backend.result.analyzed_tables": "Analyzed {{count}} table(s)",
"data_sync.backend.result.analyzed_target_tables": "Analyzed {{count}} target table(s)",
"data_sync.backend.result.mongo_redis_analyzed_collections": "Analyzed {{count}} MongoDB collection(s) for Redis migration",
"data_sync.backend.result.mongo_redis_completed": "MongoDB keyspace migration completed; processed {{collections}} collection(s) and {{keys}} Redis Key(s)",
"data_sync.backend.result.mongo_redis_no_collections": "No MongoDB collections available for migration",
"data_sync.backend.result.mongo_redis_no_documents": "No MongoDB Redis documents available for migration",
"data_sync.backend.result.preview_ready": "Data sync preview is ready",
"data_sync.backend.result.redis_mongo_analyzed_keys": "Analyzed {{count}} Redis Key(s) for MongoDB migration",
"data_sync.backend.result.redis_mongo_completed": "Redis keyspace migration completed; processed {{count}} Redis Key(s)",
"data_sync.backend.result.redis_mongo_no_keys": "No Redis Keys available for migration",
"data_sync.backend.result.sync_completed": "Sync completed: tables={{tables}}, inserted={{rowsInserted}}, updated={{rowsUpdated}}, deleted={{rowsDeleted}}",
"data_sync.backend.summary.diff_completed": "Difference analysis completed",
"data_sync.backend.summary.mongo_redis_diff": "Execution will insert {{inserts}} Redis Key(s) and update {{updates}} Redis Key(s)",
"data_sync.backend.summary.mongo_redis_empty_collection": "No migratable documents were found in the collection",
"data_sync.backend.summary.mongo_redis_planned_action": "Migrate to {{target}}",
"data_sync.backend.summary.mongo_redis_same_keys": "The matching Redis Keys are already up to date",
"data_sync.backend.summary.mongo_redis_warning_document_format": "Only documents with key/type/ttl/value fields are supported",
"data_sync.backend.summary.mongo_redis_warning_full_overwrite_downgrade": "MongoDB to Redis downgrades full overwrite to incremental sync to avoid deleting other Redis Keys in the DB",
"data_sync.backend.summary.mongo_redis_warning_keyspace": "Documents in the MongoDB collection will be written to Redis by keyspace semantics",
"data_sync.backend.summary.redis_mongo_insert_document": "Execution will insert a new MongoDB document",
"data_sync.backend.summary.redis_mongo_planned_action": "Migrate to collection {{collection}}",
"data_sync.backend.summary.redis_mongo_same_document": "The matching MongoDB document is already up to date",
"data_sync.backend.summary.redis_mongo_update_document": "Execution will update the existing MongoDB document",
"data_sync.backend.summary.redis_mongo_warning_document_write": "Redis Key will be written as a MongoDB document",
"data_sync.backend.summary.source_query_diff_completed": "SQL result-set difference analysis completed",
"data_sync.backend.unsupported.clickhouse_objects_to_pg_like": "ClickHouse ORDER BY/PARTITION/TTL/Projection/materialized-view semantics are not automatically migrated to PG-like targets yet",
"data_sync.backend.validation.query_mode_data_only": "SQL result-set sync currently supports data-only sync",
"data_sync.backend.validation.single_target_table_required": "SQL result-set sync requires exactly one target table",
"data_sync.backend.validation.source_query_required": "Source query SQL is required",
"data_sync.backend.validation.target_table_required": "Target table is required",
"data_sync.backend.warning.apply_changes_unsupported": "The target driver does not support applying data changes.",
"data_sync.backend.warning.auto_add_column_sql_generation_failed": "Failed to generate auto-add-column SQL for column {{column}}: {{detail}}",
"data_sync.backend.warning.auto_create_pair_unsupported": "Automatic table creation currently supports only MySQL -> Kingbase; current pair={{sourceType}} -> {{targetType}}",
"data_sync.backend.warning.auto_increment_not_preserved_existing_target_add_column": "Column {{column}} is an auto-increment column; {{feature}} will not be recreated automatically when adding it to an existing target table",
"data_sync.backend.warning.clickhouse_complex_type_degraded_mysql": "Column {{column}} type {{type}} was degraded to json",
"data_sync.backend.warning.clickhouse_complex_type_degraded_pg_like": "Column {{column}} type {{type}} was degraded to jsonb",
"data_sync.backend.warning.clickhouse_enum_degraded_pg_like": "Column {{column}} enum type {{type}} was degraded to varchar(255)",
"data_sync.backend.warning.clickhouse_order_by_tuple_used": "No source primary key was detected, so ClickHouse will use ORDER BY tuple(); query performance may be affected",
"data_sync.backend.warning.clickhouse_relational_constraints_not_preserved": "ClickHouse does not preserve relational foreign-key or unique-constraint semantics; only columns and data are migrated",
"data_sync.backend.warning.clickhouse_source_metadata_limited": "ClickHouse source metadata for indexes and constraints is limited; reverse migration focuses on columns and data",
"data_sync.backend.warning.clickhouse_source_primary_key_missing_mysql": "ClickHouse source did not return primary-key information, so the target MySQL table will not create a primary key automatically",
"data_sync.backend.warning.clickhouse_source_primary_key_missing_pg_like": "ClickHouse source did not return primary-key information, so the target PG-like table will not create a primary key automatically",
"data_sync.backend.warning.clickhouse_target_insert_only_recommended": "For ClickHouse targets, insert-only or full-overwrite is recommended; update/delete semantics differ from traditional relational databases",
"data_sync.backend.warning.clickhouse_type_degraded_mysql_text": "Column {{column}} type {{type}} has no dedicated MySQL mapping and was degraded to text",
"data_sync.backend.warning.clickhouse_type_degraded_pg_like_text": "Column {{column}} type {{type}} has no dedicated PG-like mapping and was degraded to text",
"data_sync.backend.warning.clickhouse_uint64_mapped_numeric_pg_like": "Column {{column}} type {{type}} was mapped to numeric(20,0) to avoid unsigned overflow",
"data_sync.backend.warning.column_default_expression_skipped": "Column {{column}} default value {{default}} contains an expression and is not migrated automatically yet",
"data_sync.backend.warning.column_empty_string_default_not_preserved": "Column {{column}} empty-string default value was not preserved",
"data_sync.backend.warning.column_type_degraded": "Column {{column}} type {{sourceType}} was degraded to {{targetType}}",
"data_sync.backend.warning.column_type_degraded_clickhouse_string": "Column {{column}} type {{type}} was degraded to String",
"data_sync.backend.warning.column_type_empty_clickhouse_string": "Column {{column}} type is empty and was degraded to String",
"data_sync.backend.warning.column_type_empty_degraded": "Column {{column}} type is empty and was degraded to {{targetType}}",
"data_sync.backend.warning.column_type_mapped": "Column {{column}} type {{sourceType}} was mapped to {{targetType}}",
"data_sync.backend.warning.column_type_no_mapping_degraded": "Column {{column}} type {{sourceType}} has no dedicated mapping and was degraded to {{targetType}}",
"data_sync.backend.warning.column_user_defined_degraded": "Column {{column}} is a user-defined type and was degraded to {{targetType}}",
"data_sync.backend.warning.column_user_defined_degraded_clickhouse_string": "Column {{column}} is a user-defined type and was degraded to String",
"data_sync.backend.warning.composite_pk_skipped": "Table {{table}} has composite primary key ({{columns}}); difference sync is not supported yet and was skipped",
"data_sync.backend.warning.full_overwrite_clearing_target": "Full overwrite mode: target table {{table}} will be cleared",
"data_sync.backend.warning.index_columns_missing": "Index {{name}} has no column definition and was skipped",
"data_sync.backend.warning.index_prefix_length_unsupported": "Index {{name}} uses a prefix length and cannot be migrated automatically yet",
"data_sync.backend.warning.index_type_unsupported": "Index {{name}} type={{type}} cannot be migrated automatically yet",
"data_sync.backend.warning.load_target_columns_skip_check_failed": "Failed to get target table columns; column consistency check was skipped: {{detail}}",
"data_sync.backend.warning.mongo_redis_document_format": "MongoDB to Redis currently supports documents with key/type/ttl/value fields only",
"data_sync.backend.warning.mongo_redis_full_overwrite_downgrade": "MongoDB to Redis downgrades full overwrite to incremental sync during this migration",
"data_sync.backend.warning.mysql_auto_increment_not_preserved_clickhouse": "Column {{column}} AUTO_INCREMENT is not preserved as auto-increment semantics in ClickHouse",
"data_sync.backend.warning.mysql_binary_degraded_clickhouse_string": "Column {{column}} binary type was degraded to String",
"data_sync.backend.warning.mysql_time_degraded_clickhouse_string": "Column {{column}} type {{type}} was degraded to String",
"data_sync.backend.warning.mysql_type_degraded_clickhouse_string": "Column {{column}} type {{type}} has no dedicated ClickHouse mapping and was degraded to String",
"data_sync.backend.warning.mysql_unsigned_bigint_auto_increment_degraded": "Column {{column}} is unsigned bigint auto_increment; it was degraded to {{targetType}} and auto-increment semantics were not preserved",
"data_sync.backend.warning.pg_like_identity_not_preserved_clickhouse": "Column {{column}} identity/auto-increment semantics are not preserved in ClickHouse",
"data_sync.backend.warning.redis_mongo_full_overwrite_downgrade": "Redis to MongoDB downgrades full overwrite to incremental sync during this migration",
"data_sync.backend.warning.refresh_columns_after_add_failed": "Failed to refresh target columns after adding columns: table={{table}}, error={{detail}}",
"data_sync.backend.warning.source_indexes_read_failed": "Failed to read source table indexes; index migration was skipped: {{detail}}",
"data_sync.backend.warning.table_pk_required_skipped": "Table {{table}} has no primary key; the current mode requires difference comparison and was skipped",
"data_sync.backend.warning.target_existing_only_required": "The current strategy requires the target table to exist, so it will not be created automatically at execution.",
"data_sync.backend.warning.target_exists_data_only_no_indexes": "The target table already exists. Only data import will run; existing indexes and constraints will not be rebuilt automatically.",
"data_sync.backend.warning.target_missing_columns": "Target table is missing {{count}} column(s): {{columns}}",
"data_sync.backend.warning.target_missing_skip_auto_create_disabled": "Target table for {{table}} is missing; the current strategy does not allow automatic table creation, so it was skipped",
"data_sync.backend.warning.target_table_existing_only_required": "The current strategy requires the target table to exist, so it will not be created automatically at execution.",
"data_sync.backend.warning.unknown_content_default_data": "Unknown sync content {{content}}; data-only sync was selected automatically",
"data_sync.backend.warning.unknown_mode_default_insert_update": "Unknown sync mode {{mode}}; incremental sync was selected automatically",
"data_sync.badge.migration_mode": "Migration Mode",
"data_sync.badge.source_pending": "Source Pending",
"data_sync.badge.source_selected": "Source Selected",
"data_sync.badge.sync_mode": "Sync Mode",
"data_sync.badge.table_count": "{{count}} tables",
"data_sync.compare_entry.action.return_to_compare": "Back to Comparison",
"data_sync.compare_entry.alert.data": "You are in Data Compare. It only analyzes row-level differences by primary key and does not write data.",
"data_sync.compare_entry.alert.schema": "You are in Schema Compare. It only analyzes schema differences and generates reviewable SQL without applying changes.",
"data_sync.compare_entry.option.auto_add_columns": "Generate compatible change SQL for missing target columns (preview only, not executed)",
"data_sync.compare_entry.option.source_dataset.query": "Compare by SQL Result Set",
"data_sync.compare_entry.option.source_dataset.table": "Compare by Table",
"data_sync.compare_entry.preview.selection_hint": "Row selection only affects the SQL preview scope and does not write data.",
"data_sync.compare_entry.preview.sql.data_help": "SQL preview is generated from the selected insert, update, delete, and row ranges for difference review only.",
"data_sync.compare_entry.preview.sql.schema_help": "SQL preview shows suggested schema-difference statements for review only.",
"data_sync.compare_entry.result.completed": "Comparison Completed",
"data_sync.compare_entry.result.failed": "Comparison Failed",
"data_sync.compare_entry.result.running": "Comparing",
"data_sync.compare_entry.result.running_description": "Current stage: {{stage}}{{table}}",
"data_sync.compare_entry.result.stage_fallback": "Running",
"data_sync.compare_entry.result.success_summary": "Successfully compared {{tables}} tables.",
"data_sync.compare_entry.result.table_suffix": ", table: {{table}}",
"data_sync.compare_entry.title.analysis_log": "Analysis Log",
"data_sync.compare_entry.workflow_help": "This entry only analyzes differences and previews results. It does not sync, create tables, add columns, or delete data.",
"data_sync.confirm.full_overwrite.content": "Full overwrite clears target table data before inserting rows. Confirm that the target database has been backed up.",
"data_sync.confirm.full_overwrite.ok": "Continue",
"data_sync.confirm.full_overwrite.title": "Confirm Full Overwrite",
"data_sync.diff.column.delete": "Delete",
"data_sync.diff.column.insert": "Insert",
"data_sync.diff.column.plan": "Plan",
"data_sync.diff.column.preview": "Preview",
"data_sync.diff.column.risk": "Risk",
"data_sync.diff.column.same": "Same",
"data_sync.diff.column.table": "Table",
"data_sync.diff.column.target_table": "Target Table",
"data_sync.diff.column.update": "Update",
"data_sync.diff.more_warnings": "{{count}} more not shown",
"data_sync.diff.target_exists": "Exists",
"data_sync.diff.target_missing": "Missing",
"data_sync.diff.title": "Comparison Result",
"data_sync.diff.warning_title": "Precheck found risks or degraded items. Review them before execution.",
"data_sync.entry_mode.compare.action.start": "Start Comparison",
"data_sync.entry_mode.compare.option_title": "Comparison Options",
"data_sync.entry_mode.compare.result_title": "Comparison Result",
"data_sync.entry_mode.data_compare.badge": "Data Compare",
"data_sync.entry_mode.data_compare.description": "Compare source and target table data by primary key, including inserts, updates, and deletes.",
"data_sync.entry_mode.data_compare.hero_description": "Use this to verify data consistency. It only analyzes differences and previews rows without writing data.",
"data_sync.entry_mode.data_compare.table_select_label": "Select tables to compare data:",
"data_sync.entry_mode.data_compare.title": "Data Compare",
"data_sync.entry_mode.schema_compare.badge": "Schema Compare",
"data_sync.entry_mode.schema_compare.description": "Generate schema differences, compatibility risks, and reviewable SQL between source and target tables.",
"data_sync.entry_mode.schema_compare.hero_description": "Use this before release to check schema differences. It only analyzes and previews without applying schema changes.",
"data_sync.entry_mode.schema_compare.table_select_label": "Select tables to compare schema:",
"data_sync.entry_mode.schema_compare.title": "Schema Compare",
"data_sync.entry_mode.sync.hero_description": "Use this when target tables already exist. Analyze differences first, then apply selected inserts, updates, or deletes.",
"data_sync.field.connection": "Connection",
"data_sync.field.database": "Database",
"data_sync.field.migration_content": "Migration Content",
"data_sync.field.migration_mode": "Migration Mode",
"data_sync.field.mongo_collection_name": "Mongo Collection Name (optional)",
"data_sync.field.schema": "Schema",
"data_sync.field.source_dataset_mode": "Source Dataset Mode",
"data_sync.field.source_query_sql": "Source Query SQL",
"data_sync.field.sync_content": "Sync Content",
"data_sync.field.sync_mode": "Sync Mode",
"data_sync.field.target_table": "Target Table",
"data_sync.field.target_table_requirement": "Target Table Requirement",
"data_sync.field.target_table_strategy": "Target Table Strategy",
"data_sync.field.workflow_type": "Workflow Type",
"data_sync.help.mongo_collection_mongo_to_redis": "For MongoDB to Redis, select the source collection directly in most cases. Leave this blank unless an explicit fallback collection name is needed.",
"data_sync.help.mongo_collection_redis_to_mongo": "Leave blank to use the default collection name. When filled, this Redis keyspace writes to that Mongo collection for this run.",
"data_sync.help.select_tables": "Select tables to sync:",
"data_sync.help.source_query_mode": "Enter source query SQL and select one target table. Difference analysis compares this result set directly with the target table.",
"data_sync.help.workflow_type": "Choose whether this run syncs existing target tables or performs cross-database migration. The page adjusts safer defaults by workflow type.",
"data_sync.hero.migration_description": "Move source tables to another database, create tables by policy, import data, and add compatible indexes.",
"data_sync.hero.migration_title": "Cross-Database Migration",
"data_sync.hero.sync_description": "Use existing target tables, compare differences first, then execute selected inserts, updates, or deletes.",
"data_sync.hero.sync_title": "Data Sync",
"data_sync.log.level.error": "Error",
"data_sync.log.level.info": "Info",
"data_sync.log.level.warn": "Warning",
"data_sync.log.title": "Execution Log",
"data_sync.message.analysis_complete": "Difference analysis completed",
"data_sync.message.analysis_failed": "Difference analysis failed",
"data_sync.message.analysis_failed_detail": "Difference analysis failed: {{detail}}",
"data_sync.message.analyze_before_sync": "Analyze differences before starting sync",
"data_sync.message.close_blocked_running": "Sync is running. The window cannot be closed yet.",
"data_sync.message.fetch_source_databases_failed": "Failed to fetch source databases",
"data_sync.message.fetch_source_databases_failed_detail": "Failed to fetch source databases: {{detail}}",
"data_sync.message.fetch_tables_failed": "Failed to fetch tables",
"data_sync.message.fetch_tables_failed_detail": "Failed to fetch tables: {{detail}}",
"data_sync.message.fetch_target_databases_failed": "Failed to fetch target databases",
"data_sync.message.fetch_target_databases_failed_detail": "Failed to fetch target databases: {{detail}}",
"data_sync.message.fetch_target_schemas_failed_detail": "Failed to fetch target schemas: {{detail}}",
"data_sync.message.more_items_collapsed": "{{count}} more not shown",
"data_sync.message.precheck_warnings": "Precheck found risks or degraded items. Review them before execution.",
"data_sync.message.preview_load_failed": "Failed to load difference preview",
"data_sync.message.preview_load_failed_detail": "Failed to load difference preview: {{detail}}",
"data_sync.message.select_connections_first": "Select connections first",
"data_sync.message.select_databases_first": "Select databases first",
"data_sync.message.select_source_database": "Select source database",
"data_sync.message.select_target_database": "Select target database",
"data_sync.message.select_target_schema": "Select target schema",
"data_sync.message.sync_execution_failed": "Sync execution failed",
"data_sync.message.sync_execution_failed_detail": "Sync execution failed: {{detail}}",
"data_sync.modal.full_overwrite_content": "Full overwrite clears target table data before inserting rows. Confirm that the target database has been backed up.",
"data_sync.modal.full_overwrite_ok": "Continue",
"data_sync.modal.full_overwrite_title": "Confirm Full Overwrite",
"data_sync.option.auto_add_columns": "Add missing target columns automatically (currently supports MySQL targets and MySQL to Kingbase; SQL result-set mode is not supported)",
"data_sync.option.content.both": "Sync Schema + Data",
"data_sync.option.content.data": "Data Only",
"data_sync.option.content.schema": "Schema Only",
"data_sync.option.create_indexes": "Migrate compatible regular and unique indexes automatically (only for automatic table creation)",
"data_sync.option.show_same_tables": "Show Same Tables",
"data_sync.option.source_dataset.query": "Sync by SQL Result Set",
"data_sync.option.source_dataset.table": "Sync by Table",
"data_sync.option.sync_mode.full_overwrite": "Full Overwrite (clear target table before insert)",
"data_sync.option.sync_mode.insert_only": "Insert Only (no target comparison; tables without primary keys are skipped)",
"data_sync.option.sync_mode.insert_update": "Incremental Sync (compare differences, then select inserts, updates, and deletes)",
"data_sync.option.target_strategy.auto_create_if_missing": "Create target table automatically when missing",
"data_sync.option.target_strategy.existing_only": "Use existing target tables only",
"data_sync.option.target_strategy.smart": "Smart Mode (import directly when present, create automatically when missing)",
"data_sync.option.workflow.migration": "Cross-Database Migration (create tables automatically and import)",
"data_sync.option.workflow.sync": "Data Sync (compare and sync against existing target tables)",
"data_sync.placeholder.mongo_collection_name": "Enter Mongo collection name",
"data_sync.placeholder.source_query_sql": "Example: SELECT id, name, email FROM users WHERE status = 'active'",
"data_sync.placeholder.target_table": "Select one target table",
"data_sync.plan.add_missing_columns_before_import": "Add {{count}} missing columns before import",
"data_sync.plan.auto_create_unsupported": "Automatic table creation is not supported for this database pair",
"data_sync.plan.backend_summary": "Plan summary",
"data_sync.plan.data_import_without_diff": "The current mode imports source table data without difference comparison.",
"data_sync.plan.migrate_to_collection": "Migrate to collection {{collection}}",
"data_sync.plan.migrate_to_target": "Migrate to {{target}}",
"data_sync.plan.migration_kernel_planning": "This database pair is in migration planning and is waiting for structure analysis and target dialect generation",
"data_sync.plan.missing_columns_auto_add": "Add {{count}} missing columns before import",
"data_sync.plan.missing_columns_auto_add_disabled": "Target table is missing {{count}} columns, and automatic column completion is disabled",
"data_sync.plan.missing_columns_auto_add_unsupported": "Target table is missing {{count}} columns, and automatic column completion is not supported for this database pair",
"data_sync.plan.missing_columns_no_executable_sql": "Target table is missing {{count}} columns, but no executable add-column SQL was generated",
"data_sync.plan.mongo_relational_entry_warning": "The {{objectKind}} migration from {{sourceType}} to {{targetType}} currently only has a structure-analysis planning notice",
"data_sync.plan.mongo_relational_kernel_planned": "This database pair is in migration planning and is waiting for structure analysis and target dialect generation",
"data_sync.plan.mongo_target_collection_missing_auto_create": "Target MongoDB collection {{collection}} is missing. It will be created automatically before import.",
"data_sync.plan.mongo_target_collection_missing_manual_create": "Target MongoDB collection {{collection}} is missing. Create it manually first.",
"data_sync.plan.redis_key_to_mongodb_document": "Generate MongoDB documents from Redis Keys and import them",
"data_sync.plan.redis_mongo_keyspace_import": "Generate MongoDB documents from Redis Keys and import them",
"data_sync.plan.redis_mongo_keyspace_warning_no_schema": "Redis to MongoDB migrates by keyspace semantics and does not run table schema checks",
"data_sync.plan.redis_mongo_keyspace_warning_semantics": "Redis TTL and collection ordering semantics are preserved as document fields and may not be fully equivalent",
"data_sync.plan.redis_mongo_target_collection_auto_create": "Target collection is missing. It will be created automatically before import.",
"data_sync.plan.redis_mongo_target_collection_existing_only_warning": "Current strategy requires an existing target MongoDB collection; execution will not create it automatically",
"data_sync.plan.redis_mongo_target_collection_missing_manual": "Target collection is missing. Create it manually first.",
"data_sync.plan.redis_mongo_unsupported_objects": "Redis Consumer Group / PubSub / Lua scripts / transaction state are not migrated yet",
"data_sync.plan.schema_aligned": "Table schema is already aligned",
"data_sync.plan.schema_changes_detected": "{{count}} schema changes detected",
"data_sync.plan.schema_only": "Schema-only sync",
"data_sync.plan.schema_only_no_data_diff": "Schema-only sync. Data difference analysis was not run.",
"data_sync.plan.schema_preview": "Schema preview",
"data_sync.plan.source_query_preview": "SQL result-set sync preview",
"data_sync.plan.target_collection_missing_auto_create": "Target collection is missing. It will be created automatically before import.",
"data_sync.plan.target_collection_missing_manual_create": "Target collection is missing. Create it manually first.",
"data_sync.plan.target_missing_auto_create": "Target table is missing. It will be created automatically before import.",
"data_sync.plan.target_missing_auto_create_all": "Target table is missing. It will be created automatically at execution and all source data will be imported.",
"data_sync.plan.target_missing_cannot_sync": "Target table is missing. Sync cannot run.",
"data_sync.plan.target_missing_manual_create": "Target table is missing. Create it manually first.",
"data_sync.plan.target_missing_preview_unavailable": "The target table is missing. Difference preview is unavailable.",
"data_sync.plan.tdengine_target_missing_timestamp_auto_create_unavailable": "No source time column can be mapped to the first TDengine column, so automatic table creation cannot run",
"data_sync.plan.tdengine_time_column_missing": "No source time column can be mapped to the first TDengine column, so automatic table creation cannot run",
"data_sync.plan.use_existing_target": "Import into existing target table",
"data_sync.plan.use_existing_target_collection": "Import into existing target collection",
"data_sync.plan.use_existing_target_table": "Import into existing target table",
"data_sync.preview.action.copy_sql": "Copy SQL",
"data_sync.preview.column.changed_columns": "Changed Columns",
"data_sync.preview.column.data": "Data",
"data_sync.preview.column.detail": "Details",
"data_sync.preview.column.primary_key": "Primary Key",
"data_sync.preview.data_summary": "Insert {{inserts}}, update {{updates}}, delete {{deletes}} (preview shows up to 200 rows per type)",
"data_sync.preview.delete_warning": "Delete is not selected by default. Enable delete only after confirming business impact.",
"data_sync.preview.loading": "Loading difference preview...",
"data_sync.preview.message.copy_failed": "Copy failed. Copy manually.",
"data_sync.preview.message.sql_copied": "SQL copied",
"data_sync.preview.schema_plan_help": "Statements planned for this schema sync run are shown below.",
"data_sync.preview.schema_statement_count": "{{count}} schema change statements detected",
"data_sync.preview.schema_warning_title": "Schema preview contains risks or degraded items",
"data_sync.preview.selection_hint.delete": "When no rows are selected, all delete differences are synced. Clear Delete in the comparison result to skip deletes.",
"data_sync.preview.selection_hint.insert": "When no rows are selected, all insert differences are synced. Clear Insert in the comparison result to skip inserts.",
"data_sync.preview.selection_hint.update": "When no rows are selected, all update differences are synced. Clear Update in the comparison result to skip updates.",
"data_sync.preview.side.source": "Source",
"data_sync.preview.side.target": "Target",
"data_sync.preview.sql.data_help": "SQL preview is generated from the selected insert, update, delete, and row ranges for review.",
"data_sync.preview.sql.no_data_sql": "-- No SQL available for the current selection",
"data_sync.preview.sql.no_schema_changes": "-- No executable schema changes for the current table",
"data_sync.preview.sql.schema_help": "SQL preview shows the schema change statements that will be executed for review.",
"data_sync.preview.sql.schema_statement_count": "{{count}} schema change statements",
"data_sync.preview.sql.statement_count": "{{count}} statements (preview data shows up to 200 rows per type)",
"data_sync.preview.tab.delete": "Delete({{count}})",
"data_sync.preview.tab.insert": "Insert({{count}})",
"data_sync.preview.tab.schema": "Schema({{count}})",
"data_sync.preview.tab.sql": "SQL({{count}})",
"data_sync.preview.tab.update": "Update({{count}})",
"data_sync.preview.title": "Difference Preview: {{table}}",
"data_sync.preview.update_detail_title": "Update Details: {{table}} / {{pk}}",
"data_sync.progress.stage.analysis_completed": "Difference analysis completed",
"data_sync.progress.stage.analysis_started": "Difference analysis started",
"data_sync.progress.stage.analyzing_diff": "Analyzing differences",
"data_sync.progress.stage.analyzing_table": "Analyzing table ({{current}}/{{total}})",
"data_sync.progress.stage.applying_changes": "Applying changes",
"data_sync.progress.stage.backend_update": "Progress update",
"data_sync.progress.stage.checking_columns": "Checking column consistency",
"data_sync.progress.stage.clearing_target": "Clearing target table",
"data_sync.progress.stage.collection_completed": "Collection processing completed",
"data_sync.progress.stage.comparing_diff": "Comparing differences",
"data_sync.progress.stage.completed": "Sync completed",
"data_sync.progress.stage.connecting_source": "Connecting to source database",
"data_sync.progress.stage.connecting_target": "Connecting to target database",
"data_sync.progress.stage.creating_indexes": "Creating indexes",
"data_sync.progress.stage.creating_target_collection": "Creating target collection",
"data_sync.progress.stage.creating_target_table": "Creating target table",
"data_sync.progress.stage.executing": "Executing",
"data_sync.progress.stage.failed": "Sync failed",
"data_sync.progress.stage.migrating_collection": "Migrating collection ({{current}}/{{total}})",
"data_sync.progress.stage.migrating_key": "Migrating Key ({{current}}/{{total}})",
"data_sync.progress.stage.mongo_redis_collection_completed": "Collection processing completed",
"data_sync.progress.stage.mongo_redis_migrating_collection": "Migrating collection ({{current}}/{{total}})",
"data_sync.progress.stage.mongo_redis_started": "MongoDB to Redis keyspace migration started",
"data_sync.progress.stage.mongodb_keyspace_started": "MongoDB keyspace migration started",
"data_sync.progress.stage.preparing": "Preparing",
"data_sync.progress.stage.reading_source": "Reading source table data",
"data_sync.progress.stage.reading_target": "Reading target table data",
"data_sync.progress.stage.redis_keyspace_started": "Redis keyspace migration started",
"data_sync.progress.stage.redis_mongo_creating_collection": "Creating target collection",
"data_sync.progress.stage.redis_mongo_migrating_key": "Migrating Key ({{current}}/{{total}})",
"data_sync.progress.stage.redis_mongo_started": "Redis to MongoDB keyspace migration started",
"data_sync.progress.stage.sync_started": "Sync started",
"data_sync.progress.stage.syncing_schema": "Syncing table schema",
"data_sync.progress.stage.syncing_table": "Syncing table ({{current}}/{{total}})",
"data_sync.progress.stage.table_completed": "Table processing completed",
"data_sync.query_mode.help": "Enter source query SQL and select one target table. Difference analysis compares this result set directly with the target table.",
"data_sync.result.completed": "Sync Completed",
"data_sync.result.failed": "Sync Failed",
"data_sync.result.failed_description": "Sync did not complete.",
"data_sync.result.failed_detail": "Sync failed: {{detail}}",
"data_sync.result.running": "Sync Running",
"data_sync.result.running_description": "Current stage: {{stage}}{{table}}",
"data_sync.result.success_summary": "Successfully synced {{tables}} tables. Inserted: {{inserted}}, updated: {{updated}}",
"data_sync.result.table_suffix": ", table: {{table}}",
"data_sync.schema_inference.mongo_relational_issue": "Structure analysis for {{sourceType}} -> {{targetType}} is still under development; only a migration-planning notice is available now.",
"data_sync.schema_inference.mongo_relational_resolution": "Future iterations will generate column definitions and type-degradation policies from sampled data.",
"data_sync.schema_sync.error.create_statement_empty": "Create-table statement is empty",
"data_sync.schema_sync.error.create_target_table_failed": "Failed to create target table {{table}}: {{detail}}",
"data_sync.schema_sync.error.get_columns_after_create_failed": "Failed to get columns after creating target table {{table}}: {{detail}}",
"data_sync.schema_sync.error.get_create_statement_failed": "Failed to get create-table statement for source table {{table}}: {{detail}}",
"data_sync.schema_sync.error.get_source_columns_failed": "Failed to get source table {{table}} columns: {{detail}}",
"data_sync.schema_sync.error.target_missing_auto_create_unsupported": "Target table {{table}} is missing, and source type {{sourceType}} does not support automatic table creation yet: {{detail}}",
"data_sync.schema_sync.log.add_column_failed": "Failed to add column: table={{table}}, column={{column}}, error={{detail}}",
"data_sync.schema_sync.log.column_added": "Column added: table={{table}}, column={{column}}, type={{type}}",
"data_sync.schema_sync.log.completed": "Schema sync completed for {{table}}; added {{count}} column(s)",
"data_sync.schema_sync.log.schema_aligned": "Table schema is aligned: {{table}}",
"data_sync.schema_sync.log.target_created": "Target table created successfully: {{table}}",
"data_sync.schema_sync.log.target_missing_create": "Target table {{table}} is missing; attempting to create table schema",
"data_sync.schema_sync.warning.target_unsupported": "Target database type={{targetType}} does not support schema sync yet; table {{table}} was skipped",
"data_sync.section.migration_options": "Migration Options",
"data_sync.section.source_database": "Source Database",
"data_sync.section.sync_options": "Sync Options",
"data_sync.section.target_database": "Target Database",
"data_sync.step.configure": "Configure Source and Target",
"data_sync.step.result": "Execution Result",
"data_sync.step.select_tables": "Select Tables",
"data_sync.table.delete": "Delete",
"data_sync.table.insert": "Insert",
"data_sync.table.plan": "Plan",
"data_sync.table.preview": "Preview",
"data_sync.table.risk": "Risk",
"data_sync.table.same": "Same",
"data_sync.table.table_name": "Table",
"data_sync.table.target_exists": "Exists",
"data_sync.table.target_missing": "Missing",
"data_sync.table.target_table": "Target Table",
"data_sync.table.update": "Update",
"data_sync.table_picker.help": "Select tables to sync:",
"data_sync.table_picker.item_unit": "item",
"data_sync.table_picker.items_unit": "items",
"data_sync.table_picker.not_found": "No data",
"data_sync.table_picker.search_placeholder": "Search tables...",
"data_sync.table_picker.selected_title": "Selected Tables",
"data_sync.table_picker.show_same": "Show Same Tables",
"data_sync.table_picker.source_title": "Source Tables",
"data_sync.title.compare_result": "Comparison Result",
"data_sync.title.execution_log": "Execution Log",
"data_sync.title.migration": "Cross-Database Migration",
"data_sync.title.migration_description": "Create tables, import data, and run risk prechecks from source to target.",
"data_sync.title.migration_options": "Migration Options",
"data_sync.title.migration_workbench": "Cross-Database Migration Workbench",
"data_sync.title.source_database": "Source Database",
"data_sync.title.sync": "Data Sync",
"data_sync.title.sync_description": "Compare differences, execute sync, and confirm results against existing target tables.",
"data_sync.title.sync_options": "Sync Options",
"data_sync.title.sync_workbench": "Data Sync Workbench",
"data_sync.title.target_database": "Target Database",
"data_sync.transfer.empty": "No data",
"data_sync.transfer.item_unit": "item",
"data_sync.transfer.items_unit": "items",
"data_sync.transfer.search_placeholder": "Search tables...",
"data_sync.transfer.selected_tables": "Selected Tables",
"data_sync.transfer.source_tables": "Source Tables",
"data_sync.unsupported.clickhouse_to_tdengine_schema_semantics": "Source ORDER BY/PARTITION/TTL/Projection/materialized-view semantics are not automatically migrated to TDengine yet",
"data_sync.unsupported.mongo_index_columns_missing": "Index {{name}} has no column definition and was skipped",
"data_sync.unsupported.mongo_index_create_command_failed": "Failed to generate MongoDB createIndexes command for index {{name}}: {{detail}}",
"data_sync.unsupported.mongo_index_prefix_length": "Index {{name}} uses a prefix length; equivalent migration to MongoDB is not supported yet",
"data_sync.unsupported.mysql_to_tdengine_schema_semantics": "Source indexes, foreign keys, triggers, unique constraints, and auto-increment semantics are not automatically migrated to TDengine yet",
"data_sync.unsupported.pglike_to_tdengine_schema_semantics": "Source indexes, foreign keys, triggers, unique constraints, identity, and sequence semantics are not automatically migrated to TDengine yet",
"data_sync.unsupported.tdengine_source_relational_semantics": "TDengine indexes, foreign keys, triggers, supertables, TTL, and other time-series semantics are not automatically migrated yet",
"data_sync.unsupported.tdengine_target_missing_timestamp": "TDengine regular table first column must be TIMESTAMP; the current source table has no directly mappable time column",
"data_sync.unsupported.tdengine_to_tdengine_regular_table_semantics": "Source supertable, TAGS, TTL, retention policy, and index semantics are not automatically migrated to TDengine regular table yet",
"data_sync.validation.query_mode_data_only": "SQL result-set sync supports data-only sync",
"data_sync.validation.single_target_table_required": "SQL result-set sync requires exactly one target table",
"data_sync.validation.source_query_required": "Enter source query SQL",
"data_sync.validation.table_required": "Select at least one table",
"data_sync.warning.mongo_field_mixed_bson_types": "Field {{field}} contains multiple BSON value types and was degraded to a compatible type",
"data_sync.warning.mongo_index_type_normalized": "Index {{name}} type={{type}} will be migrated to MongoDB as a regular index",
"data_sync.warning.mongo_source_collection_index_read_failed": "Failed to read source MongoDB collection indexes; index migration was skipped: {{detail}}",
"data_sync.warning.mongo_source_empty_sample_id_only": "The source MongoDB collection has no sample data; only a basic primary-key column is generated from `_id`",
"data_sync.warning.mongo_source_primary_key_missing": "No stable primary key was inferred from the source MongoDB collection; the target table will not create a primary key automatically",
"data_sync.warning.mongo_source_table_index_read_failed": "Failed to read source table indexes; index migration was skipped: {{detail}}",
"data_sync.warning.mongo_target_collection_existing_only_required": "The current strategy requires the target MongoDB collection to exist, so it will not be created automatically at execution",
"data_sync.warning.mongo_target_collection_weak_schema": "MongoDB is a weak-schema target; field structure follows written documents, and target column checks are not run",
"data_sync.warning.target_exists_strategy_no_auto_create": "The current strategy requires the target table to exist, so it will not be created automatically at execution.",
"data_sync.warning.target_missing_columns": "Target table is missing {{count}} column(s): {{columns}}",
"data_sync.warning.tdengine_source_existing_target_no_auto_add_columns": "TDengine sources do not automatically add columns to an existing target table yet; confirm the target schema first",
"data_sync.warning.tdengine_source_mysql_type_fallback": "Column {{column}} type {{type}} has no dedicated MySQL mapping and was degraded to {{targetType}}",
"data_sync.warning.tdengine_source_pg_unsigned_overflow_safeguard": "Column {{column}} type {{type}} was mapped to {{targetType}} to avoid unsigned overflow",
"data_sync.warning.tdengine_source_pglike_type_fallback": "Column {{column}} type {{type}} has no dedicated PG-like mapping and was degraded to {{targetType}}",
"data_sync.warning.tdengine_source_semantics_degraded": "TDengine to relational targets currently migrates only columns and data; supertable, TAG association, retention policy, and other time-series semantics may be degraded or lost",
"data_sync.warning.tdengine_source_tag_column_degraded": "Column {{column}} is a TDengine TAG column and will be degraded to a regular column in the relational target",
"data_sync.warning.tdengine_source_tag_column_mapped": "Column {{column}} is a TDengine TAG column and was mapped as a regular column",
"data_sync.warning.tdengine_target_auto_create_basic_table_only": "TDengine target auto-create currently creates only a basic table; indexes, foreign keys, triggers, supertable/TAGS/TTL are not migrated automatically",
"data_sync.warning.tdengine_target_auto_increment_not_migrated": "Column {{column}} auto-increment semantics are not migrated to TDengine",
"data_sync.warning.tdengine_target_binary_type_fallback": "Column {{column}} type {{type}} was degraded to {{targetType}} by string semantics",
"data_sync.warning.tdengine_target_column_promoted_to_timestamp": "Column {{column}} type {{type}} was promoted to the first TDengine TIMESTAMP column",
"data_sync.warning.tdengine_target_empty_type_fallback": "Column {{column}} type is empty and was degraded to {{targetType}}",
"data_sync.warning.tdengine_target_enum_type_fallback": "Column {{column}} enum type {{type}} was degraded to {{targetType}}",
"data_sync.warning.tdengine_target_existing_table_no_auto_add_columns": "TDengine targets do not automatically add columns to an existing target table yet; confirm the target schema first",
"data_sync.warning.tdengine_target_fixedstring_length_parse_failed": "Column {{column}} FixedString length could not be parsed and was degraded to {{targetType}}",
"data_sync.warning.tdengine_target_identity_not_migrated": "Column {{column}} auto-increment/identity semantics are not migrated to TDengine",
"data_sync.warning.tdengine_target_insert_only": "TDengine targets currently support only INSERT writes; update/delete differences will be rejected at execution",
"data_sync.warning.tdengine_target_json_regular_table_fallback": "Column {{column}} type {{type}} does not preserve TAG semantics in TDengine regular table and was degraded to {{targetType}}",
"data_sync.warning.tdengine_target_json_tag_only_fallback": "Column {{column}} type {{type}} was degraded to {{targetType}} because TDengine JSON applies only to TAG",
"data_sync.warning.tdengine_target_missing_time_column": "The source table has no mappable time column, so automatic table creation is unavailable. Prepare the TDengine target table and time column manually before continuing.",
"data_sync.warning.tdengine_target_pk_constraint_not_migrated": "Column {{column}} primary-key semantics are not migrated to TDengine as relational constraints",
"data_sync.warning.tdengine_target_same_db_type_no_mapping_fallback": "Column {{column}} type {{type}} has no dedicated TDengine same-database mapping and was degraded to {{targetType}}",
"data_sync.warning.tdengine_target_tag_column_degraded_to_regular": "Column {{column}} is a TDengine TAG column and will be degraded to a regular column after migration to regular table",
"data_sync.warning.tdengine_target_time_only_type_fallback": "Column {{column}} type {{type}} has no stable TDengine time-only mapping and was degraded to {{targetType}}",
"data_sync.warning.tdengine_target_timestamp_column_reordered": "TDengine base tables require the time column first; column {{column}} was moved to the first position",
"data_sync.warning.tdengine_target_type_fallback": "Column {{column}} type {{type}} was degraded to {{targetType}}",
"data_sync.warning.tdengine_target_type_no_mapping_fallback": "Column {{column}} type {{type}} has no dedicated TDengine mapping and was degraded to {{targetType}}",
"data_sync.warning.tdengine_target_user_defined_type_fallback": "Column {{column}} is a user-defined type and was degraded to {{targetType}}",
"data_viewer.edit_hint.all_columns_locator": "No primary key or unique index was detected, so rows will be located by matching all columns. Edit with care.",
"data_viewer.message.connection_not_found": "Connection not found",
"data_viewer.message.duckdb_query_timeout": "DuckDB query exceeded the connection timeout and was interrupted. Increase the connection timeout, or reduce the sort/filter scope and retry.",
"data_viewer.message.fetch_data_failed_detail": "Error fetching data: {{detail}}",
"data_viewer.message.mongo_filter_invalid_detail": "MongoDB filter condition is invalid: {{detail}}",
"data_viewer.message.mongo_filter_parse_failed": "Failed to parse",
"data_viewer.message.query_failed": "Query failed",
"data_viewer.message.query_timeout": "Query exceeded the connection timeout and was interrupted. Increase the connection timeout, or reduce the query scope and retry.",
"data_viewer.message.result_not_ready": "Current result set is not ready. Load data once first.",
"data_viewer.message.sort_buffer_retry_succeeded": "Increased the sort buffer automatically, and the query succeeded.",
"data_viewer.message.total_count_failed": "Failed to count total rows",
"data_viewer.message.total_count_failed_detail": "Failed to count total rows: {{detail}}",
"data_viewer.message.total_count_parse_failed": "Failed to parse total count result",
"data_viewer.read_only.reason.duckdb_rowid_missing": "No primary key, usable unique index, or DuckDB rowid was found, so changes cannot be submitted safely.",
"data_viewer.read_only.reason.index_metadata_unavailable": "Unique index metadata could not be loaded, so changes cannot be submitted safely.",
"data_viewer.read_only.reason.metadata_unavailable": "Primary key or unique index metadata could not be loaded, so changes cannot be submitted safely.",
"data_viewer.read_only.reason.mongo_id_missing": "MongoDB result set is missing _id, so changes cannot be submitted safely.",
"data_viewer.read_only.reason.no_safe_locator": "No primary key or usable unique index was found, so changes cannot be submitted safely.",
"data_viewer.read_only.reason.oracle_rowid_missing": "No primary key or usable unique index was found, and Oracle ROWID is missing from the result set, so changes cannot be submitted safely.",
"data_viewer.read_only.reason.primary_key_column_missing": "The result set is missing primary key column {{columns}}, so changes cannot be submitted safely.",
"data_viewer.read_only.warning.collection": "Collection {{target}} remains read-only: {{reason}}",
"data_viewer.read_only.warning.table": "Table {{target}} remains read-only: {{reason}}",
"data_viewer.sql_log.phase.complex_type_fallback_retry": "Complex type fallback retry",
"data_viewer.sql_log.phase.main_query": "Main query",
"data_viewer.sql_log.phase.sort_buffer_retry": "Retry ({{size}} sort_buffer)",
"database.label": "Database",
"database.unnamed": "Unnamed Database",
"db.backend.action.delete": "Delete",
"db.backend.action.update": "Update",
"db.backend.error.batch_insert_exec_required": "Execution function is required",
"db.backend.error.batch_insert_failed": "Insert failed: {{detail}}",
"db.backend.error.batch_insert_failed_with_sql": "Insert failed: {{detail}}; SQL={{sql}}",
"db.backend.error.batch_insert_literal_required": "Literal function is required",
"db.backend.error.batch_insert_no_rows_affected": "Insert did not take effect: no rows were affected",
"db.backend.error.batch_insert_placeholder_required": "Placeholder function is required",
"db.backend.error.batch_insert_quote_column_required": "Column quoting function is required",
"db.backend.error.clickhouse_address_required": "Enter a ClickHouse host address or connection URI",
"db.backend.error.clickhouse_attempt_tls_config_failed": "Attempt {{attempt}} TLS configuration failed (protocol={{protocol}}): {{detail}}",
"db.backend.error.clickhouse_attempt_validation_failed": "Attempt {{attempt}} connection validation failed (protocol={{protocol}}): {{detail}}",
"db.backend.error.clickhouse_delete_failed_with_sql": "Failed to delete ClickHouse rows: {{detail}}; SQL={{sql}}",
"db.backend.error.clickhouse_driver_detail_missing": "No driver error details were returned",
"db.backend.error.clickhouse_http_client_protocol_version_unsupported": "Current ClickHouse HTTP port does not support client_protocol_version (common on ClickHouse 22.8); retrying with HTTP compatibility mode. If it still fails, confirm the connection protocol and port",
"db.backend.error.clickhouse_http_protocol_mismatch": "Server response does not look like an HTTP response; the current port looks more like a Native port. Select Native protocol, or confirm the ClickHouse HTTP port",
"db.backend.error.clickhouse_native_protocol_mismatch": "Server response does not look like a Native handshake; the current port looks more like an HTTP/HTTPS port. Select HTTP protocol, or confirm the ClickHouse Native port",
"db.backend.error.clickhouse_unknown_error": "Unknown error",
"db.backend.error.clickhouse_update_failed_with_sql": "Failed to update ClickHouse rows: {{detail}}; SQL={{sql}}",
"db.backend.error.clickhouse_validation_failed_auto": "ClickHouse connection validation failed: Automatic protocol detection failed (Native common ports 9000/9440, HTTP common ports {{httpPorts}}; for non-standard ports, specify the connection protocol manually). {{detail}}",
"db.backend.error.clickhouse_validation_failed_manual": "ClickHouse connection validation failed: used user-selected {{protocol}} protocol for {{host}}:{{port}}. {{detail}}",
"db.backend.error.column_definitions_missing": "No column definitions were returned",
"db.backend.error.connection_not_open": "Connection is not open",
"db.backend.error.connection_open_failed_prefix": "Failed to open database connection: ",
"db.backend.error.connection_verify_failed_prefix": "Failed to verify the established connection: ",
"db.backend.error.create_table_statement_not_found": "The CREATE TABLE statement was not found",
"db.backend.error.custom_driver_system_odbc_unsupported_prefix": "Failed to open database connection: custom connections do not support entering the system ODBC/JDBC driver name \"{{driver}}\" directly. Enter a Go database/sql driver name already registered by GoNavi. The current build does not register a generic ODBC driver, so connecting to InterSystems IRIS through \"{{driver}}\" is not supported yet: ",
"db.backend.error.custom_driver_unregistered_prefix": "Failed to open database connection: the custom connection driver \"{{driver}}\" is not registered in GoNavi. Enter a registered Go database/sql driver name instead of a system ODBC/JDBC driver name: ",
"db.backend.error.data_source_type_required": "Select a data source type first",
"db.backend.error.database_create_sphinx_unsupported": "Sphinx does not support creating databases",
"db.backend.error.database_create_user_schema_unsupported": "The current data source ({{dbType}}) treats databases as users/schemas and does not support creating them from this entry point. Use the SQL editor to run a CREATE USER statement",
"db.backend.error.database_drop_unsupported": "The current data source ({{dbType}}) does not support dropping databases",
"db.backend.error.database_name_required": "Database name is required",
"db.backend.error.database_rename_direct_unsupported": "MySQL/MariaDB/OceanBase/StarRocks/Sphinx does not support direct database renaming. Create a new database and migrate the data instead",
"db.backend.error.database_rename_unsupported": "The current data source ({{dbType}}) does not support renaming databases",
"db.backend.error.database_same_name": "The old and new database names must be different",
"db.backend.error.duckdb_build_unavailable": "The current build does not include the DuckDB driver (platform={{platform}}). Enable CGO and use a supported platform (darwin/linux amd64|arm64, windows/amd64), or provide a custom library via -tags duckdb_use_lib / duckdb_use_static_lib",
"db.backend.error.duckdb_driver_unavailable": "DuckDB driver is unavailable: {{detail}}",
"db.backend.error.duckdb_procedure_drop_unsupported": "DuckDB does not support stored procedures yet",
"db.backend.error.http_tunnel_host_required": "HTTP Tunnel host is required",
"db.backend.error.http_tunnel_port_invalid": "HTTP Tunnel port is invalid: {{port}}",
"db.backend.error.http_tunnel_proxy_conflict": "HTTP Tunnel cannot be enabled together with a regular proxy",
"db.backend.error.managed_transaction_unsupported": "The current data source ({{dbType}}) does not support SQL editor managed transactions",
"db.backend.error.mongo_member_discovery_unsupported": "The current MongoDB driver does not support member discovery",
"db.backend.error.mqtt_connect_timeout": "MQTT connection timed out",
"db.backend.error.mqtt_publish_timeout": "MQTT publish timed out",
"db.backend.error.mqtt_subscribe_timeout": "MQTT subscription timed out",
"db.backend.error.multi_statement_execution_failed": "Statement {{index}} failed: {{detail}}",
"db.backend.error.multi_statement_previous_success": " ({{count}} previous statements succeeded)",
"db.backend.error.oceanbase_oracle_show_create_table_fallback_failed": "{{metadataDetail}}; OceanBase Oracle SHOW CREATE TABLE fallback failed: {{showDetail}}",
"db.backend.error.old_table_name_required": "The old table name is required",
"db.backend.error.old_view_name_required": "Old view name is required",
"db.backend.error.oracle_column_metadata_load_failed": "Failed to load column metadata (table={{table}}): {{detail}}; check ALL_TAB_COLUMNS query permission and whether the table exists",
"db.backend.error.proxy_local_forward_addr_parse_failed": "Failed to parse the local proxy forward address: {{address}}",
"db.backend.error.proxy_ssh_gateway_connect_failed": "Failed to connect to the SSH gateway through the proxy: {{detail}}",
"db.backend.error.proxy_target_port_invalid": "Target port is invalid: {{port}}",
"db.backend.error.routine_drop_unsupported": "The current data source ({{dbType}}) does not support dropping functions or procedures",
"db.backend.error.routine_name_required": "Function or procedure name is required",
"db.backend.error.row_action_not_effective_multiple_rows": "{{action}} did not take effect: affected {{count}} rows; expected exactly 1",
"db.backend.error.row_action_not_effective_no_rows_matched": "{{action}} did not take effect: no rows matched",
"db.backend.error.row_action_not_effective_rows_affected_unknown": "{{action}} did not take effect: could not determine affected rows: {{detail}}",
"db.backend.error.row_delete_failed": "Delete failed: {{detail}}",
"db.backend.error.row_update_failed": "Update failed: {{detail}}",
"db.backend.error.row_update_key_conditions_required": "Update operation requires key conditions",
"db.backend.error.schema_create_unsupported": "The current data source ({{dbType}}) does not support creating schemas from this entry point",
"db.backend.error.schema_drop_unsupported": "The current data source ({{dbType}}) does not support dropping schemas from this entry point",
"db.backend.error.schema_name_required": "Schema name is required",
"db.backend.error.schema_rename_unsupported": "The current data source ({{dbType}}) does not support renaming schemas from this entry point",
"db.backend.error.schema_same_name": "The old and new schema names must be different",
"db.backend.error.sqlite_file_path_required": "SQLite requires a local database file path (for example /path/to/demo.sqlite)",
"db.backend.error.sqlite_host_port_not_file_path": "SQLite requires a local database file path; the current input looks like a host address: {{dsn}}",
"db.backend.error.table_columns_empty_for_ddl": "The retrieved column definitions were empty, so the CREATE TABLE statement could not be generated",
"db.backend.error.table_columns_missing_for_ddl": "No column definitions were retrieved, so the CREATE TABLE statement could not be generated",
"db.backend.error.table_drop_unsupported": "The current data source ({{dbType}}) does not support dropping tables",
"db.backend.error.table_name_required": "Table name is required",
"db.backend.error.table_new_name_no_qualifier": "The new table name must not include a schema or database prefix",
"db.backend.error.table_rename_unsupported": "The current data source ({{dbType}}) does not support renaming tables",
"db.backend.error.table_same_name": "The old and new table names must be different",
"db.backend.error.target_database_required": "Target database is required",
"db.backend.error.tdengine_apply_changes_insert_only": "TDengine targets currently support only INSERT writes; UPDATE/DELETE differences are not supported by ApplyChanges",
"db.backend.error.test_connection_close_failed": "Connection succeeded, but releasing the test connection failed: {{detail}}",
"db.backend.error.transaction_already_finished": "Transaction has already finished",
"db.backend.error.transaction_commit_close_failed": "Transaction committed, but closing the session failed: {{detail}}",
"db.backend.error.transaction_commit_failed": "Transaction commit failed: {{detail}}",
"db.backend.error.transaction_id_required": "Transaction ID is required",
"db.backend.error.transaction_not_found": "Transaction not found or already finished",
"db.backend.error.transaction_not_open": "Transaction is not open",
"db.backend.error.transaction_query_unsupported": "The current transaction session does not support query statements",
"db.backend.error.transaction_rollback_close_failed": "Transaction rolled back, but closing the session failed: {{detail}}",
"db.backend.error.transaction_rollback_failed": "Transaction rollback failed: {{detail}}",
"db.backend.error.unsupported_database_type": "Unsupported database type: {{dbType}}",
"db.backend.error.view_drop_unsupported": "The current data source ({{dbType}}) does not support dropping views",
"db.backend.error.view_name_required": "View name is required",
"db.backend.error.view_new_name_no_qualifier": "The new view name must not include a schema or database prefix",
"db.backend.error.view_rename_unsupported": "The current data source ({{dbType}}) does not support renaming views",
"db.backend.error.view_same_name": "The old and new view names must be different",
"db.backend.message.connect_failure_cooldown": "The connection failed recently and is in cooldown. Retry after {{remaining}}; last error: {{detail}}",
"db.backend.message.connect_success": "Connection succeeded",
"db.backend.message.connect_timeout_detail": "Database connection timed out: {{dbType}} {{host}}:{{port}}/{{database}}: {{detail}}",
"db.backend.message.database_created": "Database created",
"db.backend.message.database_dropped": "Database dropped",
"db.backend.message.database_renamed": "Database renamed",
"db.backend.message.function_dropped": "Function dropped",
"db.backend.message.mongo_members_discovered": "Discovered {{count}} members",
"db.backend.message.mongo_primary_credentials_label": "primary credentials",
"db.backend.message.mongo_replica_credentials_label": "replica credentials",
"db.backend.message.multi_statement_sequential_fallback": "The current data source ({{dbType}}) did not use the native multi-statement result path for this execution. It was automatically split into {{count}} statements and executed sequentially.",
"db.backend.message.procedure_dropped": "Stored procedure dropped",
"db.backend.message.release_success": "Connection released",
"db.backend.message.schema_created": "Schema created",
"db.backend.message.schema_dropped": "Schema dropped",
"db.backend.message.schema_renamed": "Schema renamed",
"db.backend.message.table_dropped": "Table dropped",
"db.backend.message.table_renamed": "Table renamed",
"db.backend.message.transaction_committed": "Transaction committed",
"db.backend.message.transaction_rolled_back": "Transaction rolled back",
"db.backend.message.view_dropped": "View dropped",
"db.backend.message.view_renamed": "View renamed",
"definition_viewer.action.edit_object": "Edit object",
"definition_viewer.edit.comment_compatibility": "Confirm the syntax is compatible with the current database before running it",
"definition_viewer.edit.comment_empty_definition": "The current object definition is empty. Complete the DDL for {{name}} before running it",
"definition_viewer.edit.comment_title": "Edit {{object}}: {{name}}",
"definition_viewer.edit.tab_title": "Edit {{object}}: {{name}}",
"definition_viewer.editor.event_definition_not_found": "Event definition not found",
"definition_viewer.editor.event_fragment_fallback.header": "The current data source did not return a complete CREATE EVENT statement; an event definition fragment was returned",
"definition_viewer.editor.metadata_fallback.header": "The current data source did not return executable definition text; metadata was returned",
"definition_viewer.editor.metadata_fallback.name_label": "Name",
"definition_viewer.editor.metadata_fallback.type_label": "Type",
"definition_viewer.editor.object_definition_not_found": "{{object}} definition not found",
"definition_viewer.editor.package_definition_not_found": "Package definition not found",
"definition_viewer.editor.routine_definition_not_found": "Function/procedure definition not found",
"definition_viewer.editor.sequence_definition_not_found": "Sequence definition not found",
"definition_viewer.editor.sphinx.compat_queries_hint": "Multiple compatibility queries were executed. This may be due to version capability limits or an unsupported object type.",
"definition_viewer.editor.sphinx.empty_result": "Current Sphinx instance{{version}} returned no {{object}} definition.",
"definition_viewer.editor.sphinx.failed_message_label": "Returned failure message",
"definition_viewer.editor.sphinx.failed_message_unknown": "Returned failure message: Unknown error",
"definition_viewer.editor.sphinx.unsupported_query": "Current Sphinx instance{{version}} does not support querying {{object}} definitions.",
"definition_viewer.editor.sphinx.version_suffix": " (version: {{version}})",
"definition_viewer.editor.unsupported_event_definition": "This database type does not support viewing event definitions",
"definition_viewer.editor.unsupported_object_definition": "This object definition is not supported",
"definition_viewer.editor.unsupported_package_definition": "This database type does not support viewing package definitions",
"definition_viewer.editor.unsupported_routine_definition": "This database type does not support viewing function/procedure definitions",
"definition_viewer.editor.unsupported_sequence_definition": "This database type does not support viewing sequence definitions",
"definition_viewer.editor.unsupported_sqlite_routine_definition": "SQLite does not support function/procedure definition management",
"definition_viewer.editor.unsupported_view_definition": "This database type does not support viewing view definitions",
"definition_viewer.editor.view_definition_not_found": "View definition not found",
"definition_viewer.error.connection_not_found": "Database connection not found",
"definition_viewer.error.event_name_empty": "Event name is empty",
"definition_viewer.error.load_failed": "Load failed",
"definition_viewer.error.package_name_empty": "Package name is empty",
"definition_viewer.error.query_failed": "Failed to query definition",
"definition_viewer.error.query_failed_detail": "Failed to query definition: {{detail}}",
"definition_viewer.error.routine_name_empty": "Function/procedure name is empty",
"definition_viewer.error.sequence_name_empty": "Sequence name is empty",
"definition_viewer.error.view_name_empty": "View name is empty",
"definition_viewer.field.database": "Database",
"definition_viewer.field.type": "Type",
"definition_viewer.loading.event_definition": "Loading event definition...",
"definition_viewer.loading.package_definition": "Loading package definition...",
"definition_viewer.loading.routine_definition": "Loading function/procedure definition...",
"definition_viewer.loading.sequence_definition": "Loading sequence definition...",
"definition_viewer.loading.view_definition": "Loading view definition...",
"definition_viewer.object.event": "Event",
"definition_viewer.object.materialized_view": "Materialized view",
"definition_viewer.object.package": "Package",
"definition_viewer.object.routine": "Function/procedure",
"definition_viewer.object.sequence": "Sequence",
"definition_viewer.object.view": "View",
"definition_viewer.warning.refresh_latest_failed": "Failed to refresh the latest definition",
"dev.perf_data_grid.columns": "Columns",
"dev.perf_data_grid.density.comfortable": "Comfortable",
"dev.perf_data_grid.density.compact": "Ultra compact",
"dev.perf_data_grid.density.standard": "Compact",
"dev.perf_data_grid.notice.description": "Current {{uiVersion}} UI, {{rows}} rows / {{columns}} columns. Sample vertical, horizontal, and Shift+wheel scrolling directly in the grid area.",
"dev.perf_data_grid.notice.message": "This page is only for development scroll performance sampling",
"dev.perf_data_grid.rows": "Rows",
"dev.perf_data_grid.title": "DataGrid performance reproduction page",
"dev.perf_data_grid.trigger_layout": "Trigger layout recalculation",
"dev.perf_data_grid.ui_version.legacy": "Legacy UI",
"dev.perf_data_grid.ui_version.legacy_short": "Legacy",
"dev.perf_data_grid.ui_version.v2": "New UI",
"dev.perf_data_grid.ui_version.v2_short": "New",
"driver.guidance.customConnectionDriverHelp": "Supported: mysql, starrocks, oceanbase, postgres, opengauss, sqlite, oracle, dm, kingbase; aliases include postgresql/pgx, open_gauss/open-gauss, dm8, kingbase8/kingbasees/kingbasev8. Enter a Go database/sql driver name already registered by GoNavi. Do not enter a system ODBC/JDBC driver name directly or import a JDBC Jar.",
"driver_manager.action.close": "Close",
"driver_manager.action.import_directory": "Import Driver Directory",
"driver_manager.action.import_package": "Import Driver Package",
"driver_manager.action.install_enable": "Install and Enable",
"driver_manager.action.logs": "Logs",
"driver_manager.action.network_check": "Network Check",
"driver_manager.action.open_directory": "Open Driver Directory",
"driver_manager.action.open_global_proxy_settings": "Open Global Proxy Settings",
"driver_manager.action.refresh": "Refresh",
"driver_manager.action.remove": "Remove",
"driver_manager.action.switch_version": "Switch version",
"driver_manager.backend.dialog.select_download_directory": "Select driver download directory",
"driver_manager.backend.dialog.select_package_directory": "Select driver package directory",
"driver_manager.backend.dialog.select_package_file": "Select driver package file (not a JDBC Jar)",
"driver_manager.backend.driver_fallback_name": "driver",
"driver_manager.backend.error.agent_hash_failed": "Failed to calculate driver agent checksum: {{detail}}",
"driver_manager.backend.error.agent_metadata_unavailable": "{{name}} driver-agent version metadata is unavailable. Install the driver-agent that matches the current version: {{detail}}",
"driver_manager.backend.error.agent_path_occupied_by_directory": "{{name}} driver-agent path is occupied by a directory: {{path}}",
"driver_manager.backend.error.agent_revision_mismatch": "{{name}} driver-agent revision does not match (installed: {{actual}}, required: {{expected}}). Install the driver-agent that matches the current version.",
"driver_manager.backend.error.agent_revision_mismatch_empty_actual": "{{name}} driver-agent revision does not match (installed: empty, required: {{expected}}). Install the driver-agent that matches the current version.",
"driver_manager.backend.error.api_url_empty": "API URL is empty",
"driver_manager.backend.error.asset_name_empty": "Driver asset name is empty",
"driver_manager.backend.error.builtin_download_not_required": "Built-in drivers do not need extension package downloads",
"driver_manager.backend.error.builtin_install_not_required": "Built-in drivers do not need extension package installation",
"driver_manager.backend.error.builtin_package_not_required": "Built-in drivers do not have install packages",
"driver_manager.backend.error.builtin_remove_not_allowed": "Built-in drivers cannot be removed",
"driver_manager.backend.error.builtin_version_not_required": "Built-in drivers do not need version selection",
"driver_manager.backend.error.bundle_download_failed": "Failed to download driver bundle: {{detail}}",
"driver_manager.backend.error.bundle_entry_missing": "{{name}} was not found in the driver bundle (expected path: {{path}})",
"driver_manager.backend.error.bundle_index_asset_missing": "Driver bundle index asset was not found",
"driver_manager.backend.error.bundle_index_empty": "Driver bundle index is empty",
"driver_manager.backend.error.bundle_index_fetch_failed": "Failed to fetch driver bundle index: {{detail}}",
"driver_manager.backend.error.bundle_index_parse_failed": "Failed to parse driver bundle index: {{detail}}",
"driver_manager.backend.error.bundle_url_empty": "Driver bundle download URL is empty",
"driver_manager.backend.error.bundled_agent_hash_failed": "Failed to calculate bundled {{name}} driver-agent checksum: {{detail}}",
"driver_manager.backend.error.cache_key_empty": "Cache key is empty",
"driver_manager.backend.error.chmod_agent_failed": "Failed to set driver agent permissions: {{detail}}",
"driver_manager.backend.error.close_agent_file_failed": "Failed to close driver agent file: {{detail}}",
"driver_manager.backend.error.copy_bundled_agent_failed": "Failed to copy bundled {{name}} driver-agent: {{detail}}",
"driver_manager.backend.error.copy_runtime_dependency_entry_failed": "Failed to copy runtime dependency {{name}}: {{detail}}",
"driver_manager.backend.error.copy_runtime_dependency_failed": "Failed to copy {{name}} runtime dependencies: {{detail}}",
"driver_manager.backend.error.create_agent_temp_file_failed": "Failed to create driver agent temporary file: {{detail}}",
"driver_manager.backend.error.create_directory_failed": "Failed to create driver directory: {{detail}}",
"driver_manager.backend.error.create_named_directory_failed": "Failed to create {{name}} driver directory: {{detail}}",
"driver_manager.backend.error.download_failed": "Download failed: {{detail}}",
"driver_manager.backend.error.download_url_empty": "Download URL is empty",
"driver_manager.backend.error.driver_type_empty": "Driver type is empty",
"driver_manager.backend.error.driver_version_list_fetch_failed": "Failed to fetch driver version list: {{detail}}",
"driver_manager.backend.error.driver_version_list_parse_failed": "Failed to parse driver version list: {{detail}}",
"driver_manager.backend.error.driver_version_unsupported": "{{name}} version {{version}} is not supported",
"driver_manager.backend.error.extract_runtime_dependency_failed": "Failed to extract runtime dependency {{name}}: {{detail}}",
"driver_manager.backend.error.file_manifest_url_invalid": "Invalid file driver manifest URL",
"driver_manager.backend.error.file_path_empty": "File path is empty",
"driver_manager.backend.error.go_not_found_prebuilt_missing": "Go is not installed in the current environment, and no available prebuilt {{name}} agent package was found",
"driver_manager.backend.error.import_local_agent_failed": "Failed to import local driver agent: {{detail}}",
"driver_manager.backend.error.import_local_agent_runtime_failed": "Failed to import local driver agent runtime dependencies: {{detail}}",
"driver_manager.backend.error.install_prebuilt_package_failed": "Failed to install prebuilt driver package: {{detail}}",
"driver_manager.backend.error.local_directory_entry_missing": "{{name}} agent file was not found in the directory (preferred path: {{path}}, candidate file names: {{assetCandidates}} / {{baseCandidates}})",
"driver_manager.backend.error.local_directory_not_directory": "Local driver directory path is not a directory: {{path}}",
"driver_manager.backend.error.local_directory_path_empty": "Local driver directory path is empty",
"driver_manager.backend.error.local_directory_scan_limit": "Local driver directory has too many entries (over {{max}}). Narrow the directory or choose a zip/single file directly.",
"driver_manager.backend.error.local_manifest_url_invalid": "Invalid local driver manifest URL",
"driver_manager.backend.error.local_package_entry_missing": "{{name}} agent file was not found in the local driver package (expected path: {{path}})",
"driver_manager.backend.error.local_package_path_empty": "Local driver package path is empty",
"driver_manager.backend.error.manifest_fetch_failed": "Failed to fetch driver manifest: {{detail}}",
"driver_manager.backend.error.manifest_parse_failed": "Failed to parse driver manifest: {{detail}}",
"driver_manager.backend.error.manifest_scheme_unsupported": "Unsupported driver manifest URL scheme: {{scheme}}",
"driver_manager.backend.error.manifest_too_large": "Driver manifest exceeds the size limit",
"driver_manager.backend.error.manifest_url_empty": "Driver manifest URL is empty",
"driver_manager.backend.error.metadata_file_write_failed": "Failed to write driver metadata file: {{detail}}",
"driver_manager.backend.error.metadata_payload_encode_failed": "Failed to encode driver metadata: {{detail}}",
"driver_manager.backend.error.module_path_empty": "Module path is empty",
"driver_manager.backend.error.module_version_list_empty": "Module version list is empty",
"driver_manager.backend.error.module_version_list_fetch_failed": "Failed to fetch module version list: {{detail}}",
"driver_manager.backend.error.module_version_list_read_failed": "Failed to read module version list: {{detail}}",
"driver_manager.backend.error.mongo_version_unsupported": "MongoDB version {{version}} is not supported; only 1.17.x and 2.x are supported",
"driver_manager.backend.error.named_agent_hash_failed": "Failed to calculate {{name}} driver agent checksum: {{detail}}",
"driver_manager.backend.error.named_chmod_agent_failed": "Failed to set {{name}} driver agent permissions: {{detail}}",
"driver_manager.backend.error.no_driver_versions": "No available driver versions were found",
"driver_manager.backend.error.open_bundle_failed": "Failed to open driver bundle: {{detail}}",
"driver_manager.backend.error.open_directory_failed": "Failed to open driver directory: {{detail}}",
"driver_manager.backend.error.open_directory_unsupported": "Opening directories is not supported on this platform: {{platform}}",
"driver_manager.backend.error.open_local_package_failed": "Failed to open local driver package: {{detail}}",
"driver_manager.backend.error.optional_go_only": "Only optional Go drivers can be installed and enabled here",
"driver_manager.backend.error.package_size_unsupported": "This driver does not support install package size queries",
"driver_manager.backend.error.prebuilt_downloads_failed": "Prebuilt package download failed: {{detail}}",
"driver_manager.backend.error.read_bundle_entry_failed": "Failed to read driver bundle entry: {{detail}}",
"driver_manager.backend.error.read_local_directory_failed": "Failed to read local driver directory: {{detail}}",
"driver_manager.backend.error.read_local_package_entry_failed": "Failed to read local driver package entry: {{detail}}",
"driver_manager.backend.error.read_local_package_failed": "Failed to read local driver package: {{detail}}",
"driver_manager.backend.error.release_empty": "Release is empty",
"driver_manager.backend.error.release_info_fetch_failed": "Failed to fetch Release information: {{detail}}",
"driver_manager.backend.error.remove_installed_agent_failed": "Failed to remove installed {{name}} driver-agent: {{detail}}",
"driver_manager.backend.error.remove_package_failed": "Failed to remove driver package: {{detail}}",
"driver_manager.backend.error.replace_agent_failed": "Failed to replace driver agent: {{detail}}",
"driver_manager.backend.error.runtime_dependency_directory_empty": "Runtime dependency directory is empty",
"driver_manager.backend.error.runtime_dependency_entry_missing": "Driver package is missing runtime dependency: {{name}}",
"driver_manager.backend.error.runtime_dependency_required": "{{name}} requires bundled runtime dependencies on the current platform ({{files}}); single-file agent installation is not supported. Use the driver bundle, a dedicated driver zip, or a local source build.",
"driver_manager.backend.error.runtime_dependency_target_directory_empty": "Runtime dependency target directory is empty",
"driver_manager.backend.error.scan_local_directory_failed": "Failed to scan local driver directory: {{detail}}",
"driver_manager.backend.error.source_build_command_failed": "Failed to build the {{name}} driver agent: {{detail}}; output: {{output}}",
"driver_manager.backend.error.source_build_duckdb_windows_cgo_toolchain_prepare_failed": "Failed to prepare DuckDB Windows CGO toolchain: {{detail}}",
"driver_manager.backend.error.source_build_duckdb_windows_dlltool_resolve_failed": "Failed to locate DuckDB Windows dlltool: {{detail}}",
"driver_manager.backend.error.source_build_duckdb_windows_dynamic_library_missing_files": "DuckDB official dynamic library package is missing files: {{files}}",
"driver_manager.backend.error.source_build_duckdb_windows_dynamic_library_prepare_failed": "Failed to prepare DuckDB Windows dynamic library: {{detail}}",
"driver_manager.backend.error.source_build_duckdb_windows_gcc_not_found": "No usable gcc.exe/g++.exe was found; {{hint}}",
"driver_manager.backend.error.source_build_duckdb_windows_gcc_not_found_with_checked": "No usable gcc.exe/g++.exe was found. Checked: {{checked}}; {{hint}}",
"driver_manager.backend.error.source_build_duckdb_windows_toolchain_install_hint": "Please install the MSYS2 UCRT64 toolchain first: winget install --id MSYS2.MSYS2 -e; then run C:\\msys64\\usr\\bin\\bash.exe -lc \"pacman -S --needed --noconfirm mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-binutils\"",
"driver_manager.backend.error.source_build_failed": "Local source build failed: {{detail}}",
"driver_manager.backend.error.source_build_go_mod_read_failed": "Failed to read go.mod: {{detail}}",
"driver_manager.backend.error.source_build_module_dependency_missing": "Driver dependency was not found in go.mod: {{modulePath}}",
"driver_manager.backend.error.source_build_module_or_version_empty": "Driver module path or version is empty",
"driver_manager.backend.error.source_build_project_root_missing": "Optional driver agent source was not found in the project; please use a published build",
"driver_manager.backend.error.source_build_tag_unconfigured": "No build tags are configured for driver type: {{driverType}}",
"driver_manager.backend.error.source_build_temp_directory_create_failed": "Failed to create a temporary directory for driver build: {{detail}}",
"driver_manager.backend.error.source_build_temp_go_mod_write_failed": "Failed to write temporary go.mod: {{detail}}",
"driver_manager.backend.error.source_build_temp_go_sum_write_failed": "Failed to write temporary go.sum: {{detail}}",
"driver_manager.backend.error.source_build_timeout": "Building the {{name}} driver agent timed out (over {{timeout}}). Prefer a prebuilt driver package or local driver package import.",
"driver_manager.backend.error.source_build_workdir_unavailable": "Failed to get current directory: {{detail}}",
"driver_manager.backend.error.sync_agent_failed": "Failed to flush driver agent to disk: {{detail}}",
"driver_manager.backend.error.tag_empty": "Tag is empty",
"driver_manager.backend.error.unknown": "Unknown error",
"driver_manager.backend.error.unsupported_driver_type": "Unsupported driver type",
"driver_manager.backend.error.version_empty": "Version is empty",
"driver_manager.backend.error.write_agent_failed": "Failed to write driver agent: {{detail}}",
"driver_manager.backend.error.zip_entry_empty": "Zip entry is empty",
"driver_manager.backend.message.download_failed_detail": "Failed to download and install driver: {{detail}}",
"driver_manager.backend.message.driver_install_success": "Driver installed successfully",
"driver_manager.backend.message.jdbc_jar_unsupported": "Importing JDBC Jar files directly is not supported. GoNavi uses Go drivers and optional driver-agent packages; use a driver package or driver directory instead. To connect to Kingbase, prefer the Kingbase connection type or enter kingbase / kingbase8 in a custom connection.",
"driver_manager.backend.message.local_import_failed_detail": "Failed to import local driver package: {{detail}}",
"driver_manager.backend.message.log_hint": " (detail log: {{path}})",
"driver_manager.backend.message.metadata_write_failed_detail": "Failed to write driver metadata: {{detail}}",
"driver_manager.backend.message.opened_directory": "Opened driver directory: {{path}}",
"driver_manager.backend.message.package_removed": "Driver package removed",
"driver_manager.backend.message.runtime_directory_configured": "Driver runtime directory is configured",
"driver_manager.backend.message.unsupported_builtin_manifest_url": "Unsupported built-in driver manifest URL: {{url}}",
"driver_manager.backend.network.error.probe_host_missing": "Probe URL is missing a host",
"driver_manager.backend.network.error.probe_url_empty": "Probe URL is empty",
"driver_manager.backend.network.error.timeout": "Network connection timed out",
"driver_manager.backend.network.probe.github_driver_release": "GitHub driver releases",
"driver_manager.backend.network.probe.github_release_asset_domain": "GitHub Release asset domain",
"driver_manager.backend.network.probe.go_module_proxy": "Go module proxy",
"driver_manager.backend.network.summary.download_chain_unreachable": "GitHub API is reachable, but the driver download chain is unreachable. Enable GoNavi global proxy first, allow github.com, api.github.com, release-assets.githubusercontent.com, objects.githubusercontent.com, and raw.githubusercontent.com in proxy rules, then consider TUN mode if it still fails.",
"driver_manager.backend.package_size.built_in": "Built-in",
"driver_manager.backend.package_size.to_be_published": "To be published",
"driver_manager.backend.progress.fallback.bundle_available": "Direct links are unavailable; falling back to driver bundles ({{name}}, {{bundle}} bundle source remaining)",
"driver_manager.backend.progress.fallback.direct_to_bundle": "Prebuilt direct links did not match; falling back to driver bundles ({{name}}, {{bundle}} bundle source remaining)",
"driver_manager.backend.progress.fallback.explicit_skip_bundle": "Prebuilt direct links did not match; this version only allows explicit assets, skipping driver bundles ({{name}})",
"driver_manager.backend.progress.fallback.source_build": "Release assets did not match; preparing to fall back to a local source build ({{name}})",
"driver_manager.backend.progress.plan.bundle_only": "Preparing to install {{name}} driver agent (version {{version}}); no prebuilt direct link is available, trying {{bundle}} driver bundle source",
"driver_manager.backend.progress.plan.direct_only": "Preparing to install {{name}} driver agent (version {{version}}); try {{direct}} prebuilt direct link first",
"driver_manager.backend.progress.plan.direct_then_bundle": "Preparing to install {{name}} driver agent (version {{version}}); try {{direct}} prebuilt direct link first, then use {{bundle}} driver bundle source",
"driver_manager.backend.progress.plan.explicit_direct": "Preparing to install {{name}} driver agent (version {{version}}); only explicit version assets are allowed, trying {{direct}} prebuilt direct link first",
"driver_manager.backend.progress.plan.source_fallback": "Preparing to install {{name}} driver agent (version {{version}}); fall back to a local source build if release assets do not match",
"driver_manager.backend.progress.plan.source_first": "Preparing to install {{name}} driver agent (version {{version}}); try a local source build first, then continue with download fallback if it fails",
"driver_manager.backend.progress.plan.source_only": "Preparing to install {{name}} driver agent (version {{version}}); this version only allows local source builds",
"driver_manager.backend.status.affected_connections": "Affects {{count}} saved connections",
"driver_manager.backend.status.agent_arch_incompatible_detail": "{{name}} driver agent architecture is incompatible: file={{file}}, current process={{process}}; reinstall and enable it in Driver Manager.",
"driver_manager.backend.status.agent_missing": "{{name}} driver agent is missing; reinstall and enable it in Driver Manager.",
"driver_manager.backend.status.agent_path_failed": "{{name}} driver agent path could not be resolved; reinstall and enable it in Driver Manager.",
"driver_manager.backend.status.agent_revision_update_detail": "Reason: the current GoNavi version requires the updated {{name}} driver-agent (revision: {{expected}}). Impact: the driver-agent is a standalone binary and is not updated automatically with the main app. Without reinstalling, the old agent logic will continue to run, so driver-side fixes or optimizations will not take effect and old-version issues may continue. Strongly recommend reinstalling the matching driver-agent.",
"driver_manager.backend.status.agent_revision_update_detail_with_actual": "Reason: the current GoNavi version requires the updated {{name}} driver-agent (revision: {{expected}}). Impact: the driver-agent is a standalone binary and is not updated automatically with the main app. Without reinstalling, the old agent logic will continue to run, so driver-side fixes or optimizations will not take effect and old-version issues may continue. Strongly recommend reinstalling the matching driver-agent (installed marker: {{actual}}, required: {{expected}}).",
"driver_manager.backend.status.agent_unavailable_reinstall": "{{name}} driver agent is unavailable: {{detail}}; reinstall and enable it in Driver Manager.",
"driver_manager.backend.status.built_in_available": "Built-in driver is ready to connect",
"driver_manager.backend.status.expected_revision": "expected revision {{revision}}.",
"driver_manager.backend.status.installed_pending": "Driver is installed and pending activation",
"driver_manager.backend.status.installed_pending_with_version": "Driver is installed (version: {{version}}) and pending activation",
"driver_manager.backend.status.installed_revision": "installed revision {{revision}}.",
"driver_manager.backend.status.mongodb_compatibility_update_detail": "Reason: the recommended MongoDB compatibility driver version is {{recommended}}, and the installed version is {{installed}}. Impact: MongoDB 2.x driver-agent uses the official v2 driver and requires MongoDB server 4.2+; connecting to MongoDB 4.0 can hit the wire version 7 incompatibility. Strongly recommend reinstalling the matching driver-agent.",
"driver_manager.backend.status.needs_update": "Reinstall required to apply driver updates.",
"driver_manager.backend.status.optional_disabled": "{{name}} Go driver is not enabled; install and enable it in Driver Manager.",
"driver_manager.backend.status.optional_disabled_generic": "Not enabled",
"driver_manager.backend.status.optional_disabled_with_version": "Not enabled (version: {{version}})",
"driver_manager.backend.status.optional_enabled": "Go driver is enabled and ready to connect",
"driver_manager.backend.status.slim_build_required": "{{name}} is not included in the current slim build. Install the Full edition to use this driver.",
"driver_manager.backend.status.unrecognized_driver_type": "Unrecognized data source type",
"driver_manager.backend.version.latest_suffix": " (latest)",
"driver_manager.backend.version.recommended_suffix": " (recommended)",
"driver_manager.backend.version.unlabeled": "Unlabeled version",
"driver_manager.column.actions": "Actions",
"driver_manager.column.data_source": "Data Source",
"driver_manager.column.package_size": "Package Size",
"driver_manager.column.progress": "Install Progress",
"driver_manager.column.status": "Status",
"driver_manager.column.version": "Driver Version",
"driver_manager.description.install_required": "Except for MySQL / Redis / Oracle / PostgreSQL, data sources must be installed and enabled before connecting.",
"driver_manager.directory_info.details_label": "View driver directory and reuse notes",
"driver_manager.directory_info.log_file": "Runtime log file: {{path}}",
"driver_manager.directory_info.reuse_help": "Automatically downloaded and manually imported drivers are stored in this directory. Downloaded drivers can be reused for later version upgrades.",
"driver_manager.directory_info.root_dir": "Driver root directory: {{path}}",
"driver_manager.directory_info.title": "Driver Directory and Reuse Notes",
"driver_manager.empty.default": "No driver data",
"driver_manager.empty.search": "No driver matches \"{{keyword}}\"",
"driver_manager.filter_summary.match": "Matched {{filtered}} / {{total}}",
"driver_manager.filter_summary.total": "{{total}} drivers",
"driver_manager.import.directory_help": "If the in-app download route fails, manually download the driver package to this directory first, then use \"Import driver package\" or \"Import driver directory\" to complete installation.",
"driver_manager.import.single_file_help": "Inline \"Import Driver Package\" only supports a single driver file or bundle, such as `mariadb-driver-agent`, `mariadb-driver-agent.exe`, or `GoNavi-DriverAgents.zip`. It does not import a JDBC Jar directly; use \"Import Driver Directory\" above for batch import.",
"driver_manager.local_source.directory": "directory",
"driver_manager.local_source.file": "file",
"driver_manager.log.done_auto_install": "Automatic installation completed{{version}}",
"driver_manager.log.done_local_import": "Local import installation completed{{version}}",
"driver_manager.log.done_remove": "Driver removal completed",
"driver_manager.log.force_overwrite_reinstall": "Overwrite installed mode is enabled; reinstall import will run",
"driver_manager.log.progress_line": "[{{status}}] {{message}} ({{percent}}%)",
"driver_manager.log.skip_installed_dedupe": "Driver is already installed; skipped by directory import dedupe",
"driver_manager.log.skip_slim_build": "Current release package is a slim build; directory import skipped",
"driver_manager.log.start_auto_install": "Starting automatic installation",
"driver_manager.log.start_local_import": "Starting local import{{version}} ({{source}}): {{path}}",
"driver_manager.log.start_remove": "Starting driver removal",
"driver_manager.log_modal.empty": "This driver has no operation logs yet.",
"driver_manager.log_modal.executable_path": "Driver executable: {{path}}",
"driver_manager.log_modal.install_dir": "Install directory: {{path}}",
"driver_manager.log_modal.title": "Driver Logs - {{name}}",
"driver_manager.message.directory_import_completed": "Directory import completed{{mode}}: {{success}} succeeded{{skip}}",
"driver_manager.message.directory_import_completed_with_failure": "Directory import completed{{mode}}: {{success}} succeeded, {{failed}} failed{{skip}}",
"driver_manager.message.directory_import_failed": "Directory import failed{{mode}}: {{failed}} failed{{skip}}",
"driver_manager.message.install_failed": "Failed to install {{name}}",
"driver_manager.message.install_failed_detail": "Failed to install {{name}}: {{detail}}",
"driver_manager.message.install_failed_fallback": "Failed to install {{name}}",
"driver_manager.message.install_start": "Starting installation",
"driver_manager.message.install_success": "{{name}}{{version}} installed and enabled",
"driver_manager.message.install_watchdog_timeout": "Installing {{name}} has not completed after {{minutes}} minutes. The background task may still be downloading or building. Refresh the status later; if this repeats, check the proxy or import a local driver package.",
"driver_manager.message.load_status_failed": "Failed to load driver status",
"driver_manager.message.load_status_failed_detail": "Failed to load driver status: {{detail}}",
"driver_manager.message.load_version_failed": "Failed to load version list for {{name}}",
"driver_manager.message.load_version_failed_detail": "Failed to load version list for {{name}}: {{detail}}",
"driver_manager.message.local_directory_required": "Select a valid driver package directory",
"driver_manager.message.local_file_required": "Select a valid driver package file",
"driver_manager.message.local_import_failed": "Failed to import local driver package for {{name}}",
"driver_manager.message.local_import_failed_detail": "Failed to import local driver package for {{name}}: {{detail}}",
"driver_manager.message.local_import_start": "Starting local driver package import",
"driver_manager.message.local_import_success": "{{name}}{{version}} local driver package installed and enabled",
"driver_manager.message.local_path_required": "Select a valid local import {{source}}",
"driver_manager.message.network_check_completed": "Driver network check completed",
"driver_manager.message.network_check_failed": "Driver network check failed",
"driver_manager.message.network_check_failed_detail": "Driver network check failed: {{detail}}",
"driver_manager.message.no_external_drivers_to_import": "There are no external drivers to import",
"driver_manager.message.open_directory_failed": "Failed to open driver directory",
"driver_manager.message.open_directory_failed_detail": "Failed to open driver directory: {{detail}}",
"driver_manager.message.overwrite_suffix": " (overwrite installed)",
"driver_manager.message.remove_failed": "Failed to remove {{name}}",
"driver_manager.message.remove_failed_detail": "Failed to remove {{name}}: {{detail}}",
"driver_manager.message.remove_success": "{{name}} removed",
"driver_manager.message.select_local_directory_failed": "Failed to select local driver package directory",
"driver_manager.message.select_local_directory_failed_detail": "Failed to select local driver package directory: {{detail}}",
"driver_manager.message.select_local_file_failed": "Failed to select local driver package file",
"driver_manager.message.select_local_file_failed_detail": "Failed to select local driver package file: {{detail}}",
"driver_manager.message.skip.dedupe": "{{count}} dedupe skipped",
"driver_manager.message.skip.slim": "{{count}} slim-build skipped",
"driver_manager.message.skip_suffix": ", {{items}}",
"driver_manager.network.alert.download_chain_unreachable": "Important: driver download route domains are unreachable",
"driver_manager.network.alert.download_network_unreachable": "Important: driver download network is unreachable",
"driver_manager.network.chain_alert.allow_hosts": "If it still fails, allow these hosts in the proxy rules: {{hosts}}. If the rules cannot be adjusted, consider enabling TUN mode.",
"driver_manager.network.chain_alert.description": "You may be able to open GitHub pages, but driver package downloads redirect to asset domains. Enable the global proxy from the GoNavi top \"Proxy\" entry first, using the local address and port of your proxy app.",
"driver_manager.network.checking": "Checking driver download network...",
"driver_manager.network.details_label": "View network check details",
"driver_manager.network.error_value": ", {{detail}}",
"driver_manager.network.github_latency": "Proxy route to GitHub connectivity latency: {{status}}{{latency}}{{detail}}",
"driver_manager.network.latency_value": ", {{latency}}ms",
"driver_manager.network.no_proxy_env": "No system proxy environment variables detected.",
"driver_manager.network.no_result": "no result",
"driver_manager.network.not_checked": "Network check has not completed",
"driver_manager.network.proxy_env_detected": "Detected proxy environment variables: {{keys}}",
"driver_manager.network.reachable": "reachable",
"driver_manager.network.summary.download_chain_unreachable": "GitHub API is reachable, but driver download asset domains are not reachable.",
"driver_manager.network.summary.proxy_recommended": "Some driver download endpoints are unreachable. Configure an HTTP/HTTPS/SOCKS5 proxy before installing drivers.",
"driver_manager.network.summary.reachable": "Driver download network is available. You can install drivers directly.",
"driver_manager.network.summary.reachable_with_proxy": "Driver download network is available through the configured proxy.",
"driver_manager.network.summary.unreachable": "Some driver download endpoints are unreachable. Check your network and retry.",
"driver_manager.network.summary.unreachable_proxy_configured": "Some driver download endpoints are unreachable. Check that the configured proxy is working and retry.",
"driver_manager.network.unreachable": "unreachable",
"driver_manager.option.force_overwrite_installed": "Overwrite installed",
"driver_manager.package_size.built_in": "Built-in",
"driver_manager.package_size.pending_release": "Pending release",
"driver_manager.progress.agent_install_done": "{{name}} driver agent installation completed",
"driver_manager.progress.agent_install_start": "Starting {{name}} driver agent installation",
"driver_manager.progress.backend_detail": "Backend detail: {{detail}}",
"driver_manager.progress.backend_empty": "No backend progress detail",
"driver_manager.progress.dev_build_fallback": "No prebuilt package matched; trying development local build",
"driver_manager.progress.download_bundle": "Downloading {{name}} driver bundle",
"driver_manager.progress.download_prebuilt_agent": "Downloading prebuilt {{name}} driver agent",
"driver_manager.progress.download_prebuilt_package": "Downloading prebuilt {{name}} driver package",
"driver_manager.progress.extract_agent_from_bundle": "Extracting {{name}} agent from driver bundle",
"driver_manager.progress.fallback.bundle_available": "Direct link unavailable; switching to driver bundle fallback ({{name}}, {{bundle}} bundle sources remaining)",
"driver_manager.progress.fallback.direct_to_bundle": "Prebuilt direct links did not match; switching to driver bundle fallback ({{name}}, {{bundle}} bundle sources remaining)",
"driver_manager.progress.fallback.explicit_skip_bundle": "Prebuilt direct links did not match; explicit assets only, skipping driver bundles ({{name}})",
"driver_manager.progress.fallback.source_build": "Release assets did not match; preparing local source build fallback ({{name}})",
"driver_manager.progress.install_start": "Starting installation",
"driver_manager.progress.local_package_done": "Local driver package import completed",
"driver_manager.progress.local_package_start": "Starting local driver package installation",
"driver_manager.progress.metadata_write": "Writing driver metadata",
"driver_manager.progress.plan.bundle_only": "Preparing {{name}} driver agent installation (version {{version}}); no prebuilt direct links, trying {{bundle}} driver bundle sources",
"driver_manager.progress.plan.direct_only": "Preparing {{name}} driver agent installation (version {{version}}); trying {{direct}} prebuilt direct links",
"driver_manager.progress.plan.direct_then_bundle": "Preparing {{name}} driver agent installation (version {{version}}); trying {{direct}} prebuilt direct links, then {{bundle}} driver bundle sources",
"driver_manager.progress.plan.explicit_direct": "Preparing {{name}} driver agent installation (version {{version}}); explicit version assets only, trying {{direct}} prebuilt direct links",
"driver_manager.progress.plan.require_source_first": "Preparing {{name}} driver agent installation (version {{version}}); development build uses local source only and will not fall back to release packages",
"driver_manager.progress.plan.source_fallback": "Preparing {{name}} driver agent installation (version {{version}}); will fall back to local source build if release assets do not match",
"driver_manager.progress.plan.source_first": "Preparing {{name}} driver agent installation (version {{version}}); trying local source build first, then download fallback",
"driver_manager.progress.plan.source_only": "Preparing {{name}} driver agent installation (version {{version}}); this version only allows local source builds",
"driver_manager.progress.pure_go_enabled": "Installation completed; pure Go driver enabled",
"driver_manager.progress.source_build_preferred": "Using local source build first for {{name}} driver agent",
"driver_manager.progress.status.done": "DONE",
"driver_manager.progress.status.downloading": "DOWNLOADING",
"driver_manager.progress.status.error": "ERROR",
"driver_manager.progress.status.start": "START",
"driver_manager.progress.status.unknown": "UNKNOWN",
"driver_manager.progress.unzip_agent": "Extracting {{name}} driver agent",
"driver_manager.progress.wait_bundle": "Waiting for {{name}} driver bundle download to finish",
"driver_manager.punctuation.list_separator": ", ",
"driver_manager.search.built_in": "built-in",
"driver_manager.search.external": "external",
"driver_manager.search.placeholder": "Search driver name/type, such as DuckDB or clickhouse",
"driver_manager.status.built_in_available": "Built-in available",
"driver_manager.status.calculating": "Calculating...",
"driver_manager.status.disabled": "Disabled",
"driver_manager.status.enabled": "Enabled",
"driver_manager.status.full_required": "Full edition required",
"driver_manager.status.installed": "Installed",
"driver_manager.status.installing_percent": "Installing {{percent}}%",
"driver_manager.title": "Driver Manager",
"driver_manager.version.current_fallback": "current version",
"driver_manager.version.default": "Default version",
"driver_manager.version.group.other": "Other",
"driver_manager.version.group.year": "{{year}}",
"driver_manager.version.inline_suffix": " ({{version}})",
"driver_manager.version.installed": "Installed{{suffix}}",
"driver_manager.version.installed_locked": "Installed (remove it to change)",
"driver_manager.version.installed_locked_with_version": "{{version}} (installed; remove it to change)",
"driver_manager.version.installed_with_version": "{{version}} (installed{{suffix}})",
"driver_manager.version.latest_suffix": " (latest)",
"driver_manager.version.mongodb_hint": "Currently only MongoDB 1.17.x and 2.x are supported. Older 1.x versions are not available for installation.",
"driver_manager.version.needs_reinstall_suffix": ", reinstall required",
"driver_manager.version.placeholder.load_on_expand": "Expand to load versions",
"driver_manager.version.placeholder.select": "Select driver version",
"driver_manager.version.recommended_suffix": " (recommended)",
"driver_manager.version.switch_pending": "Currently installed {{installedVersion}}; selected {{targetVersion}}. Click \"Switch version\" to apply.",
"driver_manager.version.target_fallback": "target version",
"driver_manager.version.unlabeled": "Unlabeled version",
"file.backend.dialog.export_connections": "Export connections",
"file.backend.dialog.export_data": "Export data",
"file.backend.dialog.export_database_sql": "Export {{database}} (SQL)",
"file.backend.dialog.export_query_result": "Export query result",
"file.backend.dialog.export_table": "Export {{table}}",
"file.backend.dialog.export_tables_sql": "Export tables (SQL)",
"file.backend.dialog.import_data": "Import into {{table}}",
"file.backend.dialog.select_batch_export_directory": "Select batch export directory",
"file.backend.dialog.select_ca_server_certificate_file": "Select CA/server certificate file",
"file.backend.dialog.select_client_certificate_file": "Select client certificate file",
"file.backend.dialog.select_client_private_key_file": "Select client private key file",
"file.backend.dialog.select_config_file": "Select config file",
"file.backend.dialog.select_database_file": "Select database file",
"file.backend.dialog.select_duckdb_file": "Select DuckDB data file",
"file.backend.dialog.select_sql_directory": "Select SQL directory",
"file.backend.dialog.select_sql_file": "Select SQL file",
"file.backend.dialog.select_sqlite_file": "Select SQLite data file",
"file.backend.dialog.select_ssh_key_file": "Select SSH private key file",
"file.backend.dialog.select_tls_certificate_file": "Select TLS certificate file",
"file.backend.error.app_log_file_not_found": "GoNavi log file was not found",
"file.backend.error.batch_commit_unsupported": "Current database type does not support batch commit",
"file.backend.error.connection_export_file_too_large": "Connection export file is too large",
"file.backend.error.connection_import_file_too_large": "Connection import file is too large",
"file.backend.error.connection_package_decrypt_failed": "File password is incorrect or the file is corrupted",
"file.backend.error.connection_package_password_required": "Connection package password cannot be empty",
"file.backend.error.connection_package_payload_too_large": "Connection package payload is too large",
"file.backend.error.connection_package_unsupported": "Unsupported connection package format",
"file.backend.error.create_directory_failed": "Unable to create directory: {{detail}}",
"file.backend.error.create_sql_file_failed": "Unable to create SQL file: {{detail}}",
"file.backend.error.database_name_required": "Database name cannot be empty",
"file.backend.error.delete_sql_directory_failed": "Unable to delete directory: {{detail}} (only empty directories can be deleted)",
"file.backend.error.delete_sql_file_failed": "Unable to delete SQL file: {{detail}}",
"file.backend.error.directory_exists": "Directory already exists",
"file.backend.error.directory_name_no_separator": "Directory name cannot contain path separators",
"file.backend.error.directory_name_required": "Directory name cannot be empty",
"file.backend.error.directory_path_required": "Directory path cannot be empty",
"file.backend.error.export_driver_agent_streaming_required": "Export requires the latest {{driver}} driver-agent streaming protocol. To avoid falling back to high-memory buffered mode for large result sets, reinstall it from Driver Management and try again: {{detail}}",
"file.backend.error.export_unsupported_format": "Unsupported export format: {{format}}",
"file.backend.error.file_path_empty": "File path is empty",
"file.backend.error.file_path_required": "File path cannot be empty",
"file.backend.error.import_csv_empty_or_missing_header": "CSV is empty or missing a header",
"file.backend.error.import_csv_open_failed": "Unable to open CSV: {{detail}}",
"file.backend.error.import_csv_read_failed": "Unable to read CSV: {{detail}}",
"file.backend.error.import_excel_empty_or_missing_header": "Excel is empty or missing a header",
"file.backend.error.import_excel_no_sheets": "Excel file has no sheets",
"file.backend.error.import_excel_parse_failed": "Unable to parse Excel: {{detail}}",
"file.backend.error.import_excel_read_failed": "Unable to read Excel: {{detail}}",
"file.backend.error.import_file_empty": "File path cannot be empty",
"file.backend.error.import_json_parse_failed": "Unable to parse JSON: {{detail}}",
"file.backend.error.import_json_root_not_array": "JSON root must be array",
"file.backend.error.import_unsupported_format": "Unsupported file format",
"file.backend.error.invalid_export_mode": "Invalid export mode",
"file.backend.error.mysql_workbench_no_connections": "No valid connection profiles were found in the XML",
"file.backend.error.mysql_workbench_parse_failed": "Failed to parse MySQL Workbench XML: {{detail}}",
"file.backend.error.navicat_connection_password_parse_failed": "Failed to parse password for connection {{name}}",
"file.backend.error.navicat_connection_proxy_password_parse_failed": "Failed to parse proxy password for connection {{name}}",
"file.backend.error.navicat_connection_ssh_password_parse_failed": "Failed to parse SSH password for connection {{name}}",
"file.backend.error.navicat_ncx_no_connections": "No valid GoNavi-supported connection configuration was found in Navicat NCX",
"file.backend.error.navicat_ncx_parse_failed": "Failed to parse Navicat NCX",
"file.backend.error.navicat_secret_decrypt_failed": "Failed to decrypt Navicat password",
"file.backend.error.open_file_failed": "Unable to open file: {{detail}}",
"file.backend.error.query_required": "Query statement cannot be empty",
"file.backend.error.read_directory_info_failed": "Unable to read directory info: {{detail}}",
"file.backend.error.read_file_error_summary": "File read error: {{detail}}. Executed {{count}}.",
"file.backend.error.read_file_info_failed": "Unable to read file info: {{detail}}",
"file.backend.error.read_target_directory_info_failed": "Unable to read target directory info: {{detail}}",
"file.backend.error.read_target_file_info_failed": "Unable to read target file info: {{detail}}",
"file.backend.error.rename_directory_failed": "Unable to rename directory: {{detail}}",
"file.backend.error.rename_sql_file_failed": "Unable to rename SQL file: {{detail}}",
"file.backend.error.schema_export_no_objects": "No exportable tables or views were found in schema {{schema}}",
"file.backend.error.schema_name_required": "Schema name cannot be empty",
"file.backend.error.select_with_query_required": "Only SELECT/WITH query export is supported",
"file.backend.error.selected_path_not_directory": "Selected path is not a directory",
"file.backend.error.selected_path_not_sql_file": "Selected path is not a SQL file",
"file.backend.error.sql_file_batch_execution_failed": "Batch execution failed starting at statement {{index}}: {{detail}}",
"file.backend.error.sql_file_batch_rollback_failed": "Batch execution failed: {{detail}}; rollback failed: {{rollbackDetail}}",
"file.backend.error.sql_file_exists": "SQL file already exists",
"file.backend.error.sql_file_extension_required": "Only SQL files are supported",
"file.backend.error.sql_file_name_no_separator": "SQL file name cannot contain path separators",
"file.backend.error.sql_file_name_required": "SQL file name cannot be empty",
"file.backend.error.sql_file_statement_execution_failed": "Statement {{index}} failed: {{detail}}",
"file.backend.error.table_data_batch_limit": "You can process at most {{max}} tables at once; currently selected {{count}}",
"file.backend.error.table_data_clear_failed": "Failed to clear {{table}}: {{detail}}",
"file.backend.error.table_data_clear_failed_partial": "Failed to clear {{table}}: {{detail}}. Warning: the first {{count}} tables have been cleared and cannot be restored",
"file.backend.error.table_data_mode_unsupported": "Unsupported table data cleanup mode: {{mode}}",
"file.backend.error.table_data_no_tables": "No tables selected",
"file.backend.error.table_data_truncate_failed": "Failed to truncate {{table}}: {{detail}}",
"file.backend.error.table_data_truncate_failed_partial": "Failed to truncate {{table}}: {{detail}}. Warning: the first {{count}} tables have been truncated and cannot be restored",
"file.backend.error.table_data_truncate_unsupported": "Current database type {{type}} does not support truncating tables. Use clearing instead",
"file.backend.error.target_directory_exists": "Target directory already exists",
"file.backend.error.target_sql_file_exists": "Target SQL file already exists",
"file.backend.error.task_not_found": "Task not found",
"file.backend.error.write_failed": "Write failed: {{detail}}",
"file.backend.filter.all_files": "All files",
"file.backend.filter.all_files_pattern": "All files (*.*)",
"file.backend.filter.certificate_files": "Certificate files",
"file.backend.filter.connection_package": "GoNavi Connection Package (*.gonavi-conn)",
"file.backend.filter.data_files": "Data files",
"file.backend.filter.database_files": "Database files",
"file.backend.filter.duckdb_files": "DuckDB files",
"file.backend.filter.json_files": "JSON Files (*.json)",
"file.backend.filter.mysql_workbench_connections": "MySQL Workbench Connections (*.xml)",
"file.backend.filter.private_key_files": "Private key files",
"file.backend.filter.sql_files": "SQL files (*.sql)",
"file.backend.filter.sqlite_files": "SQLite files",
"file.backend.html_export.document_title": "GoNavi Export",
"file.backend.html_export.empty_rows": "(0 rows)",
"file.backend.html_export.heading": "GoNavi Data Export",
"file.backend.html_export.meta": "Rows: {{rowCount}} · Columns: {{columnCount}} · Generated: {{generatedAt}}",
"file.backend.message.cancel_requested": "Cancellation request sent",
"file.backend.message.execution_cancelled": "Execution canceled. Executed {{executed}}, failed {{failed}}, duration {{duration}}.",
"file.backend.message.execution_completed": "Execution completed. Succeeded {{success}}, failed {{failed}}, duration {{duration}}.",
"file.backend.message.execution_error_detail_header": "Error details (first {{count}}):",
"file.backend.message.execution_more_errors": "...{{count}} more errors are not shown",
"file.backend.message.export_completed": "Export completed",
"file.backend.message.import_no_data": "No data to import",
"file.backend.message.import_row_failed": "Import row {{index}} failed: {{detail}}",
"file.backend.message.import_summary": "Imported: {{imported}}, Failed: {{failed}}",
"file.backend.message.statement_failed": "Statement {{index}} failed: {{detail}}\n SQL: {{sql}}",
"file.backend.message.table_data_clear_succeeded": "Clearing succeeded",
"file.backend.message.table_data_truncate_succeeded": "Truncation succeeded",
"file.backend.message.transaction_committed": "Transaction committed successfully",
"file.backend.message.user_cancelled": "User canceled execution",
"file.backend.sql_dump.database": "Database: {{database}}",
"file.backend.sql_dump.empty_rows": "(0 rows)",
"file.backend.sql_dump.generated_at": "Time: {{generatedAt}}",
"file.backend.sql_dump.table": "Table: {{objectName}}",
"file.backend.sql_dump.title": "GoNavi SQL Export",
"file.backend.sql_dump.view": "View: {{objectName}}",
"file.backend.sql_dump.view_data_skipped": "View data export skipped (INSERT for views is not emitted).",
"find_in_database.column.action": "Actions",
"find_in_database.column.match_count": "Hit rows",
"find_in_database.column.matched_columns": "Matching columns",
"find_in_database.column.table_name": "Table",
"find_in_database.detail.row_count": "Rows: {{count}}",
"find_in_database.detail.title": "{{table}} - Matching row details",
"find_in_database.match.contains": "Contains",
"find_in_database.match.exact": "Exact match",
"find_in_database.message.connection_config_not_found": "Connection configuration not found",
"find_in_database.message.get_tables_failed": "Failed to get table list: {{detail}}",
"find_in_database.message.keyword_required": "Enter a search keyword",
"find_in_database.message.no_matches": "No matching data found",
"find_in_database.message.no_tables": "The current database has no tables",
"find_in_database.message.search_failed": "Search failed: {{detail}}",
"find_in_database.placeholder.keyword": "Enter the string to search for...",
"find_in_database.progress.searching_table": "Searching {{table}}... ({{current}}/{{total}})",
"find_in_database.summary.found_tables": "Matching tables: {{count}}",
"find_in_database.summary.searching": " (search in progress...)",
"find_in_database.title": "Search in database - {{dbName}}",
"find_in_database.tooltip.collapse_details": "Collapse details",
"find_in_database.tooltip.view_details": "View details",
"import_preview.action.start": "Start import",
"import_preview.error.connection_config_not_found": "Connection configuration not found",
"import_preview.error.import_failed": "Import failed",
"import_preview.error.import_failed_detail": "Import failed: {{detail}}",
"import_preview.error.preview_failed": "Preview failed",
"import_preview.error.preview_failed_detail": "Preview failed: {{detail}}",
"import_preview.preview.description": "The first 5 rows are shown below. Start the import after confirming the data.",
"import_preview.preview.field_list": "Field list:",
"import_preview.preview.summary": "{{rows}} rows and {{columns}} fields",
"import_preview.preview.table_title": "Data preview (first 5 rows):",
"import_preview.progress.error_count": "Failed {{count}}",
"import_preview.progress.processed_rows": "Processed {{current}} / {{total}} rows",
"import_preview.progress.success_count": "Success {{count}}",
"import_preview.result.completed": "Import completed",
"import_preview.result.error_logs": "Error logs:",
"import_preview.result.failed_rows": "Failed {{count}} rows",
"import_preview.result.success_rows": "Successfully imported {{count}} rows",
"import_preview.status.importing": "Importing data...",
"import_preview.status.loading_preview": "Loading preview data...",
"import_preview.title": "Import data preview",
"jvm.backend.capability.reason.read_only": "Current connection is read-only",
"jvm.backend.connection_error.agent.base_url_invalid.help": "Enter a full http:// or https:// URL, for example http://127.0.0.1:19090/gonavi/agent/jvm.",
"jvm.backend.connection_error.agent.base_url_invalid.summary": "Agent connection failed: Agent Base URL is invalid.",
"jvm.backend.connection_error.agent.base_url_required": "Agent connection failed: Agent Base URL is missing.",
"jvm.backend.connection_error.agent.connection_refused.help": "Confirm the Java service started GoNavi Agent with `-javaagent`, and check Base URL, port mapping, and firewall rules.",
"jvm.backend.connection_error.agent.connection_refused.summary": "Agent connection failed: the target Agent management port is not listening, or the address is unreachable.",
"jvm.backend.connection_error.agent.forbidden.help": "Confirm that client source, authentication settings, and Agent access policy allow GoNavi to access it.",
"jvm.backend.connection_error.agent.forbidden.summary": "Agent connection failed: Agent rejected this request.",
"jvm.backend.connection_error.agent.scheme_unsupported.help": "Change Agent Base URL to an address that starts with http:// or https://.",
"jvm.backend.connection_error.agent.scheme_unsupported.summary": "Agent connection failed: only HTTP or HTTPS is supported.",
"jvm.backend.connection_error.agent.timeout.help": "Confirm the target address is reachable, the Agent has started, and increase the connection timeout if needed.",
"jvm.backend.connection_error.agent.timeout.summary": "Agent connection failed: timed out while accessing the Agent management port.",
"jvm.backend.connection_error.agent.unauthorized.help": "Check whether the Agent API Key in the connection matches the target service startup parameters.",
"jvm.backend.connection_error.agent.unauthorized.summary": "Agent connection failed: Agent responded, but the API Key is missing or invalid.",
"jvm.backend.connection_error.endpoint.base_url_invalid.help": "Enter a full http:// or https:// URL that points to the management API root implementing the GoNavi JVM HTTP contract, for example http://127.0.0.1:19090/manage/jvm.",
"jvm.backend.connection_error.endpoint.base_url_invalid.summary": "Endpoint connection failed: Endpoint Base URL is invalid.",
"jvm.backend.connection_error.endpoint.base_url_required": "Endpoint connection failed: Endpoint Base URL is missing.",
"jvm.backend.connection_error.endpoint.connection_refused.help": "Confirm that Base URL points to the management API implementing the GoNavi JVM HTTP contract, and check service listening, port mapping, and firewall rules.",
"jvm.backend.connection_error.endpoint.connection_refused.summary": "Endpoint connection failed: the target management API is not listening, or the address is unreachable.",
"jvm.backend.connection_error.endpoint.forbidden.help": "Confirm that client source, authentication settings, and access policy allow GoNavi to access this management API.",
"jvm.backend.connection_error.endpoint.forbidden.summary": "Endpoint connection failed: the target management API rejected this request.",
"jvm.backend.connection_error.endpoint.not_found.help": "Confirm that Base URL points to the JVM management API root, not a business endpoint, health check, or gateway home page.",
"jvm.backend.connection_error.endpoint.not_found.summary": "Endpoint connection failed: the target responded, but the GoNavi JVM management API was not found.",
"jvm.backend.connection_error.endpoint.scheme_unsupported.help": "Change Endpoint Base URL to an address that starts with http:// or https://.",
"jvm.backend.connection_error.endpoint.scheme_unsupported.summary": "Endpoint connection failed: only HTTP or HTTPS is supported.",
"jvm.backend.connection_error.endpoint.timeout.help": "Confirm Base URL is reachable, the target service has started, and increase the connection timeout if needed.",
"jvm.backend.connection_error.endpoint.timeout.summary": "Endpoint connection failed: timed out while accessing the target management API.",
"jvm.backend.connection_error.endpoint.unauthorized.help": "Check whether the Endpoint API Key in the connection matches the target service configuration.",
"jvm.backend.connection_error.endpoint.unauthorized.summary": "Endpoint connection failed: the target management API responded, but the API Key is missing or invalid.",
"jvm.backend.connection_error.generic": "JVM connection failed",
"jvm.backend.connection_error.jmx.auth.help": "Confirm whether target JMX disables authentication. If authentication is required, provide username and password before connecting.",
"jvm.backend.connection_error.jmx.auth.summary": "JMX connection failed: {{target}} requires authentication, or the current credentials are invalid.",
"jvm.backend.connection_error.jmx.connection_refused.help": "Confirm remote JMX is enabled on the target JVM, and check host, firewall, port mapping, SSH, and proxy settings.",
"jvm.backend.connection_error.jmx.connection_refused.summary": "JMX connection failed: cannot connect to {{target}} because the port is not listening or the network is unreachable.",
"jvm.backend.connection_error.jmx.connection_reset.help": "Confirm the configured port is the JVM's exposed JMX port, not a business port, debug port, or proxied port.",
"jvm.backend.connection_error.jmx.connection_reset.summary": "JMX connection failed: the service on {{target}} closed the connection; the port is not a compatible standard JMX RMI port.",
"jvm.backend.connection_error.jmx.host_required": "JMX connection failed: host is missing.",
"jvm.backend.connection_error.jmx.java_missing.help": "Install JRE/JDK first, or point the GONAVI_JMX_JAVA_BIN environment variable to the correct `java` executable.",
"jvm.backend.connection_error.jmx.java_missing.summary": "JMX connection failed: the current machine cannot find the `java` runtime, so GoNavi cannot start the JMX helper.",
"jvm.backend.connection_error.jmx.no_such_object.help": "This usually means the port is an RMI registry, debug port, or another Java service port. Check the `jmxremote.port` and `jmxremote.rmi.port` settings.",
"jvm.backend.connection_error.jmx.no_such_object.summary": "JMX connection failed: {{target}} has an RMI service, but it is not a usable JMX RMIServer port.",
"jvm.backend.connection_error.jmx.non_jrmp.help": "Use the actual JMX port exposed by the application, not the business `server.port`. If the service only enables `-Dcom.sun.management.jmxremote` without `jmxremote.port`, it cannot be connected remotely.",
"jvm.backend.connection_error.jmx.non_jrmp.summary": "JMX connection failed: {{target}} is not a standard JMX remote management port; it looks like a business or HTTP port.",
"jvm.backend.connection_error.jmx.port_invalid": "JMX connection failed: port is invalid. Enter a valid port from 1 to 65535.",
"jvm.backend.connection_error.jmx.timeout.help": "Confirm the port is reachable, the network is not blocked, and increase the connection timeout if needed.",
"jvm.backend.connection_error.jmx.timeout.summary": "JMX connection failed: connection to {{target}} timed out.",
"jvm.backend.connection_error.suggestion": "Suggestion: {{detail}}",
"jvm.backend.connection_error.technical_detail": "Technical detail: {{detail}}",
"jvm.backend.diagnostic.arthas.base_url_invalid": "Arthas Tunnel address is invalid: {{detail}}",
"jvm.backend.diagnostic.arthas.base_url_required": "Arthas Tunnel address is required",
"jvm.backend.diagnostic.arthas.cancel_command_mismatch": "The active command in this Arthas Tunnel session does not match the command to cancel.",
"jvm.backend.diagnostic.arthas.command_already_running": "This Arthas Tunnel session already has a running command. Wait for it to finish or cancel it first.",
"jvm.backend.diagnostic.arthas.command_canceled": "Arthas Tunnel command was canceled",
"jvm.backend.diagnostic.arthas.command_timeout": "Arthas Tunnel command timed out after {{timeout}}",
"jvm.backend.diagnostic.arthas.connect_canceled": "Arthas Tunnel WebSocket connection was canceled",
"jvm.backend.diagnostic.arthas.connect_failed": "Arthas Tunnel WebSocket connection failed: {{detail}}",
"jvm.backend.diagnostic.arthas.connect_timeout": "Arthas Tunnel WebSocket connection timed out after {{timeout}} without a response",
"jvm.backend.diagnostic.arthas.connection_closed": "Arthas Tunnel connection closed: {{detail}}",
"jvm.backend.diagnostic.arthas.connection_closed_code": "Arthas Tunnel connection closed: code={{code}}",
"jvm.backend.diagnostic.arthas.connection_not_ready": "Arthas Tunnel connection is not ready. Try again later.",
"jvm.backend.diagnostic.arthas.http_failed": "Arthas Tunnel connection failed: HTTP {{status}}",
"jvm.backend.diagnostic.arthas.no_running_command": "This Arthas Tunnel session has no running command.",
"jvm.backend.diagnostic.arthas.read_canceled": "Reading Arthas Tunnel output was canceled",
"jvm.backend.diagnostic.arthas.read_deadline_failed": "Failed to set Arthas Tunnel read deadline: {{detail}}",
"jvm.backend.diagnostic.arthas.read_failed": "Failed to read Arthas Tunnel output: {{detail}}",
"jvm.backend.diagnostic.arthas.read_timeout": "Reading Arthas Tunnel output timed out after {{timeout}} without a response",
"jvm.backend.diagnostic.arthas.request_encode_failed": "Failed to encode Arthas Tunnel request: {{detail}}",
"jvm.backend.diagnostic.arthas.scheme_unsupported": "Arthas Tunnel only supports http/https/ws/wss addresses: {{scheme}}",
"jvm.backend.diagnostic.arthas.send_canceled": "Sending the Arthas Tunnel terminal command was canceled",
"jvm.backend.diagnostic.arthas.send_failed": "Failed to send Arthas Tunnel terminal command: {{detail}}",
"jvm.backend.diagnostic.arthas.send_timeout": "Sending the Arthas Tunnel terminal command timed out after {{timeout}} without a response",
"jvm.backend.diagnostic.arthas.session_config_changed": "Arthas Tunnel session configuration changed. Create the diagnostic session again.",
"jvm.backend.diagnostic.arthas.session_missing": "Diagnostic session does not exist. Create the Arthas Tunnel session again.",
"jvm.backend.diagnostic.arthas.target_id_required": "Arthas Tunnel target ID is required (targetId / agentId)",
"jvm.backend.diagnostic.arthas.target_not_found": "Target instance was not found. Check targetId / agentId and make sure the tunnel client is online.",
"jvm.backend.diagnostic.arthas.target_not_found_with_id": "Target instance {{target}} was not found. Check targetId / agentId and make sure the tunnel client is online.",
"jvm.backend.diagnostic.arthas.terminal_command_encode_failed": "Failed to encode Arthas Tunnel terminal command: {{detail}}",
"jvm.backend.diagnostic.arthas.write_deadline_failed": "Failed to set Arthas Tunnel write deadline: {{detail}}",
"jvm.backend.diagnostic.error.audit_write_blocked": "Failed to write diagnostic audit record, command execution was blocked: {{detail}}",
"jvm.backend.diagnostic.error.cancel_identifiers_required": "Cancel command requires sessionId and commandId",
"jvm.backend.diagnostic.error.command_required": "Diagnostic command cannot be empty",
"jvm.backend.diagnostic.error.disabled": "JVM diagnostic enhancement is not enabled for this connection",
"jvm.backend.diagnostic.error.execute_canceled": "Diagnostic execute request was canceled: {{detail}}",
"jvm.backend.diagnostic.error.session_id_required": "Diagnostic session ID is required. Create a session first.",
"jvm.backend.diagnostic.error.transport_unsupported": "Unsupported JVM diagnostic transport: {{transport}}",
"jvm.backend.diagnostic.message.arthas_command_canceled": "Arthas command canceled",
"jvm.backend.diagnostic.message.arthas_command_completed": "Arthas command completed",
"jvm.backend.diagnostic.message.cancel_requested": "Cancel request sent; waiting for the diagnostic bridge to stop the command",
"jvm.backend.diagnostic.message.command_completed": "Diagnostic command completed",
"jvm.backend.diagnostic.policy.multiline_not_supported": "Diagnostic command does not support newlines or multiple commands",
"jvm.backend.diagnostic.policy.mutating_not_allowed": "High-risk diagnostic commands are not enabled for this connection: {{command}}",
"jvm.backend.diagnostic.policy.observe_not_allowed": "Observe diagnostic commands are not enabled for this connection: {{command}}",
"jvm.backend.diagnostic.policy.read_only_observe_only": "Current connection is read-only. Only observe diagnostic commands are allowed",
"jvm.backend.diagnostic.policy.trace_not_allowed": "Trace diagnostic commands are not enabled for this connection: {{command}}",
"jvm.backend.diagnostic.warning.audit_write_failed": "Failed to write audit record: {{detail}}",
"jvm.backend.error.audit_write_blocked": "Failed to write audit record, JVM change was blocked: {{detail}}",
"jvm.backend.error.change_action_required": "JVM change action is required",
"jvm.backend.error.change_blocked_by_guard": "The current change was blocked by Guard",
"jvm.backend.error.change_blocked_read_only": "Current connection is read-only, so writes are blocked",
"jvm.backend.error.change_confirmation_token_failed": "Failed to generate JVM change confirmation token: {{detail}}",
"jvm.backend.error.change_reason_required": "JVM change reason is required",
"jvm.backend.error.change_resource_id_required": "JVM resource ID is required",
"jvm.backend.error.confirmation_token_expired": "Confirmation token expired. Preview and confirm again.",
"jvm.backend.error.confirmation_token_invalid": "Confirmation token is invalid. Preview and confirm again.",
"jvm.backend.error.confirmation_token_missing": "Confirmation token is missing. Complete preview confirmation first.",
"jvm.backend.error.disallowed_mode": "Current connection does not allow {{mode}} mode",
"jvm.backend.error.preview_confirmation_missing": "Preview confirmation token is missing. Preview again before submitting.",
"jvm.backend.error.preview_context_hash_failed": "Failed to generate JVM preview context: {{detail}}",
"jvm.backend.error.preview_payload_hash_failed": "Failed to generate JVM preview payload digest: {{detail}}",
"jvm.backend.error.resource_path_invalid": "Invalid JVM resource path: {{detail}}",
"jvm.backend.message.connect_success": "JVM connection succeeded",
"jvm.backend.monitoring.error.session_not_found": "Monitoring session not found for {{connectionId}} {{providerMode}}",
"jvm.backend.monitoring.error.snapshot_unsupported": "{{provider}} monitoring snapshot is not supported yet",
"jvm.backend.monitoring.warning.sample_auto_stopped": "Monitoring sampling failed {{count}} consecutive times and this session was stopped automatically",
"jvm.backend.separator.message_warning": "; ",
"jvm.backend.warning.failed_audit_write_failed": "Failed to write failure audit record: {{detail}}",
"jvm.backend.warning.terminal_audit_write_failed": "Failed to write terminal audit record: {{detail}}",
"jvm_ai_plan.actions.description": ": {{description}}",
"jvm_ai_plan.actions.field_separator": ", ",
"jvm_ai_plan.actions.label": " ({{label}})",
"jvm_ai_plan.actions.none": "The current resource does not declare supported actions. If you generate a plan, provide an action only when it can be clearly inferred from the snapshot, and keep payload as a JSON object.",
"jvm_ai_plan.actions.payload_fields": "; payload fields: {{fields}}",
"jvm_ai_plan.actions.required_suffix": "(required)",
"jvm_ai_plan.error.action_missing": "The AI plan is missing an executable action.",
"jvm_ai_plan.error.payload_json_object_required": "The current JVM preview requires payload to remain a JSON object.",
"jvm_ai_plan.error.reason_missing": "The AI plan is missing a change reason.",
"jvm_ai_plan.error.resource_locator_missing": "The AI plan is missing usable resource locator information.",
"jvm_ai_plan.prompt.connection_name": "Connection name: {{connectionName}}",
"jvm_ai_plan.prompt.connection_policy": "Connection policy: {{policy}}",
"jvm_ai_plan.prompt.connection_policy.read_only": "Read-only connection. You may only generate a plan and risk analysis, and must not assume execution has happened.",
"jvm_ai_plan.prompt.connection_policy.writable": "Writable connection, but the change must still be previewed first and manually confirmed.",
"jvm_ai_plan.prompt.environment": "Environment: {{environmentLabel}}",
"jvm_ai_plan.prompt.environment_unknown": "unknown",
"jvm_ai_plan.prompt.example_reason": "Fix a dirty cache value",
"jvm_ai_plan.prompt.example_title": "JSON example:",
"jvm_ai_plan.prompt.intro": "Analyze the following JVM resource and generate a structured modification plan for GoNavi \"Preview Change\".",
"jvm_ai_plan.prompt.output_requirements_title": "Output requirements:",
"jvm_ai_plan.prompt.provider_mode": "Provider mode: {{providerMode}}",
"jvm_ai_plan.prompt.requirement.action": "4. Prefer choosing action from \"Supported actions for the current resource\"; infer from the snapshot only when no supported actions are declared.",
"jvm_ai_plan.prompt.requirement.fields": "2. The JSON fields inside the code block must be exactly: targetType, selector, action, payload, reason.",
"jvm_ai_plan.prompt.requirement.no_execute": "6. Do not claim the modification has already been executed, and do not output scripts or commands.",
"jvm_ai_plan.prompt.requirement.payload": "5. payload must be wrapped as a JSON object. Do not output scripts, commands, or raw binary. If a plain text value is needed, wrap it as {\"format\":\"text\",\"value\":\"...\"}.",
"jvm_ai_plan.prompt.requirement.resource_path": "3. Prefer selector.resourcePath with the current resource path {{resourcePath}}. Do not invent another path.",
"jvm_ai_plan.prompt.requirement.single_json_block": "1. You may include a short analysis first, but the answer must contain exactly one ```json code block.",
"jvm_ai_plan.prompt.resource_path": "Current resource path: {{resourcePath}}",
"jvm_ai_plan.prompt.resource_path_missing": "(resource path not provided)",
"jvm_ai_plan.prompt.snapshot_title": "Current resource snapshot:",
"jvm_ai_plan.prompt.supported_actions_title": "Supported actions for the current resource:",
"jvm_ai_plan.prompt.target_host": "Target host: {{host}}",
"jvm_ai_plan.snapshot.unavailable": "The current resource snapshot has not loaded successfully.",
"jvm_audit.action.refresh": "Refresh",
"jvm_audit.card.records": "Audit records",
"jvm_audit.column.action": "Action",
"jvm_audit.column.mode": "Mode",
"jvm_audit.column.reason": "Reason",
"jvm_audit.column.resource": "Resource",
"jvm_audit.column.result": "Result",
"jvm_audit.column.source": "Source",
"jvm_audit.column.time": "Time",
"jvm_audit.description.current_range": "Current range: last {{limit}} records",
"jvm_audit.empty.load_failed": "Audit records are unavailable right now",
"jvm_audit.empty.no_records": "No audit records",
"jvm_audit.error.backend_unavailable": "JVMListAuditRecords backend method is unavailable.",
"jvm_audit.error.connection_missing": "The connection does not exist or has been deleted.",
"jvm_audit.error.load_failed": "Failed to load JVM audit records{{separator}}{{detail}}",
"jvm_audit.eyebrow": "JVM Audit",
"jvm_audit.option.last_records": "Last {{limit}} records",
"jvm_audit.source.ai_plan": "AI assisted",
"jvm_audit.source.manual": "Manual",
"jvm_audit.title": "JVM change audit",
"jvm_change_preview_modal.action.close": "Close",
"jvm_change_preview_modal.action.confirm_execute": "Confirm execution",
"jvm_change_preview_modal.blocking.alert_message": "Current change cannot be executed",
"jvm_change_preview_modal.blocking.label": "Blocking reason",
"jvm_change_preview_modal.field.format": "Format",
"jvm_change_preview_modal.field.resource_id": "Resource ID",
"jvm_change_preview_modal.field.version": "Version",
"jvm_change_preview_modal.permission.allowed": "Allowed",
"jvm_change_preview_modal.permission.forbidden": "Forbidden",
"jvm_change_preview_modal.permission.requires_confirmation": "Confirmation required",
"jvm_change_preview_modal.risk.high": "High",
"jvm_change_preview_modal.risk.label": "Risk {{level}}",
"jvm_change_preview_modal.risk.low": "Low",
"jvm_change_preview_modal.risk.medium": "Medium",
"jvm_change_preview_modal.risk.unknown": "Unknown",
"jvm_change_preview_modal.section.after": "After",
"jvm_change_preview_modal.section.before": "Before",
"jvm_change_preview_modal.section.summary": "Change summary",
"jvm_change_preview_modal.status.generated": "Preview generated",
"jvm_change_preview_modal.status.no_preview": "No preview result",
"jvm_change_preview_modal.title": "JVM change preview",
"jvm_diagnostic.ai_plan.default_reason": "AI diagnostic plan: {{intent}}",
"jvm_diagnostic.ai_plan.error.transport_mismatch": "The AI plan diagnostic transport is {{planTransport}}, which does not match the current console {{currentTransport}}. Regenerate the plan before applying it.",
"jvm_diagnostic.ai_plan.message.filled": "AI diagnostic plan filled into the console",
"jvm_diagnostic.capability.empty.description": "Capability checks only read transport permissions and command policy. They do not create a session or run commands.",
"jvm_diagnostic.capability.empty.title": "No capability check yet",
"jvm_diagnostic.capability_result.mutating_allowed": "High-risk commands",
"jvm_diagnostic.capability_result.observe_allowed": "Observe commands",
"jvm_diagnostic.capability_result.observe_denied": "Observe disabled",
"jvm_diagnostic.capability_result.session_allowed": "Can start sessions",
"jvm_diagnostic.capability_result.session_denied": "Cannot start sessions",
"jvm_diagnostic.capability_result.streaming_supported": "Streaming output",
"jvm_diagnostic.capability_result.streaming_unsupported": "Streaming unsupported",
"jvm_diagnostic.capability_result.title": "Capability check results",
"jvm_diagnostic.capability_result.trace_allowed": "Trace commands",
"jvm_diagnostic.command_input.command_description": "Enter an Arthas/diagnostic command, for example thread -n 5, dashboard, or jvm; templates below can fill this in with one click.",
"jvm_diagnostic.command_input.command_label": "Diagnostic command",
"jvm_diagnostic.command_input.description": "Supports autocomplete. Press Ctrl/Cmd + Enter to run.",
"jvm_diagnostic.command_input.reason_help": "Used for audit records and AI context. It is not sent to the target JVM as an Arthas command.",
"jvm_diagnostic.command_input.reason_label": "Reason (optional)",
"jvm_diagnostic.command_input.reason_placeholder": "For example: investigate high CPU, confirm blocked threads, or locate a slow method",
"jvm_diagnostic.command_input.title": "Command input",
"jvm_diagnostic.command_templates.title": "Command templates",
"jvm_diagnostic.completion.argument.classloader.hash.documentation": "View details for a specified class loader.",
"jvm_diagnostic.completion.argument.classloader.hash.label": "Specified class loader Hash",
"jvm_diagnostic.completion.argument.classloader.tree.documentation": "Output the class loader tree.",
"jvm_diagnostic.completion.argument.classloader.tree.label": "Tree view (-t)",
"jvm_diagnostic.completion.argument.classloader.url_stat.documentation": "View class loader URL statistics.",
"jvm_diagnostic.completion.argument.classloader.url_stat.label": "All URL statistics (--url-stat)",
"jvm_diagnostic.completion.argument.command_template.label": "{{command}} template",
"jvm_diagnostic.completion.argument.dashboard.direct.documentation": "View the current JVM runtime overview.",
"jvm_diagnostic.completion.argument.dashboard.direct.label": "dashboard",
"jvm_diagnostic.completion.argument.detail_mode_d.label": "Detail mode (-d)",
"jvm_diagnostic.completion.argument.jad.template.documentation": "Decompile the specified class.",
"jvm_diagnostic.completion.argument.jad.template.label": "Decompile template",
"jvm_diagnostic.completion.argument.jvm.direct.documentation": "View JVM memory, threads, class loading, GC, and runtime arguments.",
"jvm_diagnostic.completion.argument.jvm.direct.label": "jvm",
"jvm_diagnostic.completion.argument.monitor.template.documentation": "Collect method call statistics at intervals.",
"jvm_diagnostic.completion.argument.ognl.template.documentation": "Execute an OGNL expression; high-risk commands are restricted by policy by default.",
"jvm_diagnostic.completion.argument.redefine.template.documentation": "Redefine the class bytecode file path.",
"jvm_diagnostic.completion.argument.retransform.template.documentation": "Retransform the specified class.",
"jvm_diagnostic.completion.argument.sc.class_pattern.documentation": "Search by class name pattern.",
"jvm_diagnostic.completion.argument.sc.class_pattern.label": "Class pattern template",
"jvm_diagnostic.completion.argument.sc.detail.documentation": "Output detailed class information.",
"jvm_diagnostic.completion.argument.sm.detail.documentation": "Output detailed method signatures.",
"jvm_diagnostic.completion.argument.sm.method_signature.documentation": "View method signatures for a class.",
"jvm_diagnostic.completion.argument.sm.method_signature.label": "Method signature template",
"jvm_diagnostic.completion.argument.stack.template.documentation": "Print method call stacks.",
"jvm_diagnostic.completion.argument.stop.direct.documentation": "Stop the current background task.",
"jvm_diagnostic.completion.argument.stop.direct.label": "stop",
"jvm_diagnostic.completion.argument.sysenv.variable.documentation": "Read the specified environment variable.",
"jvm_diagnostic.completion.argument.sysenv.variable.label": "View environment variable",
"jvm_diagnostic.completion.argument.sysprop.property.documentation": "Read the specified system property.",
"jvm_diagnostic.completion.argument.sysprop.property.label": "View property",
"jvm_diagnostic.completion.argument.thread.blocking.documentation": "Find threads that are currently blocking other threads.",
"jvm_diagnostic.completion.argument.thread.blocking.label": "Blocked threads (-b)",
"jvm_diagnostic.completion.argument.thread.busy_top.documentation": "View the top N CPU-busiest threads.",
"jvm_diagnostic.completion.argument.thread.busy_top.label": "Busy threads TOP N (-n)",
"jvm_diagnostic.completion.argument.thread.thread_id.documentation": "View detailed stack information for a specified thread.",
"jvm_diagnostic.completion.argument.thread.thread_id.label": "Specified thread ID",
"jvm_diagnostic.completion.argument.trace.condition.documentation": "Append a trace condition expression.",
"jvm_diagnostic.completion.argument.trace.condition.label": "Condition filter '#cost > 100'",
"jvm_diagnostic.completion.argument.trace.template.documentation": "Trace slow method call chains.",
"jvm_diagnostic.completion.argument.tt.list.documentation": "View the current recording list.",
"jvm_diagnostic.completion.argument.tt.list.label": "View record list (-l)",
"jvm_diagnostic.completion.argument.tt.record.documentation": "Record calls to the specified method.",
"jvm_diagnostic.completion.argument.tt.record.label": "tt recording template",
"jvm_diagnostic.completion.argument.tt.replay.documentation": "View details for a specified record.",
"jvm_diagnostic.completion.argument.tt.replay.label": "Replay record (-i)",
"jvm_diagnostic.completion.argument.vmtool.get_instances.documentation": "Get instances of the specified class; high-risk commands are restricted by policy by default.",
"jvm_diagnostic.completion.argument.vmtool.get_instances.label": "vmtool getInstances",
"jvm_diagnostic.completion.argument.watch.expand_depth.documentation": "Set object expansion depth.",
"jvm_diagnostic.completion.argument.watch.expand_depth.label": "Expansion depth -x 2",
"jvm_diagnostic.completion.argument.watch.template.documentation": "Observe parameters, return values, or exceptions.",
"jvm_diagnostic.completion.category.control": "control command",
"jvm_diagnostic.completion.category.mutating": "high-risk command",
"jvm_diagnostic.completion.category.observe": "observation command",
"jvm_diagnostic.completion.category.trace": "trace command",
"jvm_diagnostic.completion.command.classloader.documentation": "View class loader information.",
"jvm_diagnostic.completion.command.dashboard.documentation": "View the JVM runtime overview.",
"jvm_diagnostic.completion.command.jad.documentation": "Decompile the specified class.",
"jvm_diagnostic.completion.command.jvm.documentation": "View JVM memory, threads, class loading, GC, and runtime arguments.",
"jvm_diagnostic.completion.command.monitor.documentation": "Periodically collect method call statistics.",
"jvm_diagnostic.completion.command.ognl.documentation": "Execute an OGNL expression; extra authorization is required by default.",
"jvm_diagnostic.completion.command.redefine.documentation": "Redefine class bytecode.",
"jvm_diagnostic.completion.command.retransform.documentation": "Trigger class retransformation.",
"jvm_diagnostic.completion.command.sc.documentation": "Search matching class information.",
"jvm_diagnostic.completion.command.sm.documentation": "View method signatures for a class.",
"jvm_diagnostic.completion.command.stack.documentation": "Print method call stacks.",
"jvm_diagnostic.completion.command.stop.documentation": "Stop the current background task.",
"jvm_diagnostic.completion.command.sysenv.documentation": "View environment variables.",
"jvm_diagnostic.completion.command.sysprop.documentation": "View system properties.",
"jvm_diagnostic.completion.command.thread.documentation": "View hot threads, thread stacks, and blocked threads.",
"jvm_diagnostic.completion.command.trace.documentation": "Trace method call time paths.",
"jvm_diagnostic.completion.command.tt.documentation": "Method time tunnel for recording and replaying calls.",
"jvm_diagnostic.completion.command.vmtool.documentation": "Directly operate JVM objects or execute VMTool actions.",
"jvm_diagnostic.completion.command.watch.documentation": "Observe parameters, return values, or exceptions.",
"jvm_diagnostic.completion.detail.class_search_template": "class search template",
"jvm_diagnostic.completion.detail.classloader_template": "class loader template",
"jvm_diagnostic.completion.detail.decompile_template": "decompile template",
"jvm_diagnostic.completion.detail.environment_variable_template": "environment variable template",
"jvm_diagnostic.completion.detail.execute_directly": "execute directly",
"jvm_diagnostic.completion.detail.high_risk_template": "high-risk template",
"jvm_diagnostic.completion.detail.method_search_template": "method search template",
"jvm_diagnostic.completion.detail.monitor_template": "monitor template",
"jvm_diagnostic.completion.detail.stack_template": "stack template",
"jvm_diagnostic.completion.detail.system_property_template": "system property template",
"jvm_diagnostic.completion.detail.thread_option": "thread option",
"jvm_diagnostic.completion.detail.time_tunnel_template": "time tunnel template",
"jvm_diagnostic.completion.detail.trace_option": "trace option",
"jvm_diagnostic.completion.detail.trace_template": "trace template",
"jvm_diagnostic.completion.detail.watch_option": "watch option",
"jvm_diagnostic.completion.detail.watch_template": "watch template",
"jvm_diagnostic.completion.preset.category.mutating": "high-risk command",
"jvm_diagnostic.completion.preset.category.observe": "observation command",
"jvm_diagnostic.completion.preset.category.trace": "trace command",
"jvm_diagnostic.completion.preset.dashboard.documentation": "View the JVM runtime overview.",
"jvm_diagnostic.completion.preset.ognl-sample.documentation": "High-risk expression command, shown as an example by default.",
"jvm_diagnostic.completion.preset.thread-top.documentation": "View the busiest threads to quickly locate blocked or high-CPU threads.",
"jvm_diagnostic.completion.preset.trace-slow-method.documentation": "Trace slow method call paths.",
"jvm_diagnostic.completion.preset.watch-return.documentation": "Observe parameters and return values.",
"jvm_diagnostic.connection_missing.message": "Connection does not exist or has been deleted",
"jvm_diagnostic.error.cancel_failed": "Failed to cancel diagnostic command",
"jvm_diagnostic.error.cancel_unavailable": "JVMCancelDiagnosticCommand backend method is unavailable",
"jvm_diagnostic.error.execute_command_required": "Diagnostic command is required",
"jvm_diagnostic.error.execute_failed": "Failed to execute diagnostic command",
"jvm_diagnostic.error.execute_session_required": "Create a diagnostic session before running a command",
"jvm_diagnostic.error.execute_unavailable": "JVMExecuteDiagnosticCommand backend method is unavailable",
"jvm_diagnostic.error.history_load_failed": "Failed to load diagnostic history",
"jvm_diagnostic.error.probe_failed": "Failed to check diagnostic capabilities",
"jvm_diagnostic.error.probe_unavailable": "JVMProbeDiagnosticCapabilities backend method is unavailable",
"jvm_diagnostic.error.start_failed": "Failed to create diagnostic session",
"jvm_diagnostic.error.start_unavailable": "JVMStartDiagnosticSession backend method is unavailable",
"jvm_diagnostic.history.current_session": "Current session",
"jvm_diagnostic.history.description": "Recent commands and execution status",
"jvm_diagnostic.history.no_records": "No diagnostic history",
"jvm_diagnostic.history.no_session": "No diagnostic session yet",
"jvm_diagnostic.history.reason_missing": "No diagnostic reason provided",
"jvm_diagnostic.history.recent_records": "Recent records",
"jvm_diagnostic.history.title": "Audit history",
"jvm_diagnostic.message.cancel_sent": "Cancel request sent",
"jvm_diagnostic.no_session.action.probe": "Check capabilities first",
"jvm_diagnostic.no_session.action.start": "Start diagnostic session",
"jvm_diagnostic.no_session.alert.description": "This prevents users from thinking commands can run before a session is bound, and keeps audit records, output streams, and cancellation tied to the same session.",
"jvm_diagnostic.no_session.alert.title": "Command input appears after a session is created",
"jvm_diagnostic.no_session.description": "Create a session first, then show the command editor and templates",
"jvm_diagnostic.no_session.title": "Start a diagnostic session",
"jvm_diagnostic.output.description": "Appended from backend event stream",
"jvm_diagnostic.output.empty.description": "No live output yet. Backend output will appear here in chronological order after a command runs.",
"jvm_diagnostic.output.frontend_completed_fallback": "The diagnostic command call returned, but no terminal backend event was received. The frontend ended the waiting state as a fallback.",
"jvm_diagnostic.output.local_pending": "Diagnostic command submitted; waiting for backend output: {{command}}",
"jvm_diagnostic.output.title": "Live output",
"jvm_diagnostic.presentation.category.mutating": "High-risk commands",
"jvm_diagnostic.presentation.category.observe": "Observation commands",
"jvm_diagnostic.presentation.category.trace": "Trace commands",
"jvm_diagnostic.presentation.chunk.empty_event": "Empty event",
"jvm_diagnostic.presentation.command_type.mutating": "High risk",
"jvm_diagnostic.presentation.command_type.observe": "Observe",
"jvm_diagnostic.presentation.command_type.trace": "Trace",
"jvm_diagnostic.presentation.event.chunk": "Output chunk",
"jvm_diagnostic.presentation.event.diagnostic": "Diagnostic output",
"jvm_diagnostic.presentation.event.done": "Execution finished",
"jvm_diagnostic.presentation.fallback.unknown": "Unknown",
"jvm_diagnostic.presentation.phase.canceled": "Canceled",
"jvm_diagnostic.presentation.phase.canceling": "Canceling",
"jvm_diagnostic.presentation.phase.completed": "Completed",
"jvm_diagnostic.presentation.phase.diagnostic": "Diagnostic event",
"jvm_diagnostic.presentation.phase.failed": "Failed",
"jvm_diagnostic.presentation.phase.running": "Running",
"jvm_diagnostic.presentation.risk.high": "High risk",
"jvm_diagnostic.presentation.risk.low": "Low risk",
"jvm_diagnostic.presentation.risk.medium": "Medium risk",
"jvm_diagnostic.presentation.source.ai_plan": "AI plan",
"jvm_diagnostic.presentation.source.manual": "Manual input",
"jvm_diagnostic.presentation.transport.agent_bridge": "Agent Bridge",
"jvm_diagnostic.presentation.transport.arthas_tunnel": "Arthas Tunnel",
"jvm_diagnostic.session.default_reason": "Session started from the console",
"jvm_diagnostic.session.default_title": "JVM diagnostic console",
"jvm_diagnostic.session_capability.action.clear_output": "Clear output",
"jvm_diagnostic.session_capability.action.refresh_history": "Refresh history",
"jvm_diagnostic.session_capability.description": "Current transport, permissions, and quick maintenance",
"jvm_diagnostic.session_capability.note": "Capability checks do not run commands; create a session before running commands. Audit history shows recent command records and can include records from past sessions even when no session exists.",
"jvm_diagnostic.session_capability.session_id_hint": "Session ID appears here after a session is created.",
"jvm_diagnostic.session_capability.status.command_running": "Command running",
"jvm_diagnostic.session_capability.status.idle": "Idle",
"jvm_diagnostic.session_capability.status.no_session": "No session",
"jvm_diagnostic.session_capability.status.session_established": "Session established",
"jvm_diagnostic.session_capability.title": "Session and capabilities",
"jvm_diagnostic.workbench.action.cancel_command": "Cancel command",
"jvm_diagnostic.workbench.action.execute_command": "Execute command",
"jvm_diagnostic.workbench.action.probe": "Check capabilities",
"jvm_diagnostic.workbench.action.restart_session": "Restart session",
"jvm_diagnostic.workbench.action.start_session": "Start session",
"jvm_diagnostic.workbench.eyebrow": "JVM diagnostics",
"jvm_diagnostic.workbench.status.command_running": "Command running",
"jvm_diagnostic.workbench.status.no_session": "No session",
"jvm_diagnostic.workbench.status.session_established": "Session established",
"jvm_diagnostic.workbench.title": "JVM diagnostic workbench",
"jvm_diagnostic.workflow.command.description": "After a session is created, show the command editor, reason input, and templates.",
"jvm_diagnostic.workflow.command.title": "Run command",
"jvm_diagnostic.workflow.probe.description": "Read diagnostic transport, streaming output, and command permissions without creating a session.",
"jvm_diagnostic.workflow.probe.title": "Check capabilities",
"jvm_diagnostic.workflow.session.description": "Create a diagnostic context so subsequent commands are bound to this session.",
"jvm_diagnostic.workflow.session.title": "Start session",
"jvm_monitoring_charts.empty.classes.metric_unavailable": "Current monitoring source does not provide class loading metrics.",
"jvm_monitoring_charts.empty.classes.no_samples": "No class loading samples yet.",
"jvm_monitoring_charts.empty.gc.metric_unavailable": "Current monitoring source does not provide garbage collection metrics.",
"jvm_monitoring_charts.empty.gc.no_samples": "No garbage collection samples yet.",
"jvm_monitoring_charts.empty.heap.metric_unavailable": "Current monitoring source does not provide heap memory metrics.",
"jvm_monitoring_charts.empty.heap.no_samples": "No heap memory samples yet.",
"jvm_monitoring_charts.empty.threads.metric_unavailable": "Current monitoring source does not provide thread metrics.",
"jvm_monitoring_charts.empty.threads.no_samples": "No thread samples yet.",
"jvm_monitoring_charts.legend.daemon_thread_count": "Daemon threads",
"jvm_monitoring_charts.legend.gc_count": "GC count",
"jvm_monitoring_charts.legend.gc_time_ms": "GC time (ms)",
"jvm_monitoring_charts.legend.heap_committed": "Heap committed",
"jvm_monitoring_charts.legend.heap_used": "Heap used",
"jvm_monitoring_charts.legend.loaded_classes": "Loaded classes",
"jvm_monitoring_charts.legend.peak_thread_count": "Peak threads",
"jvm_monitoring_charts.legend.thread_count": "Thread count",
"jvm_monitoring_charts.legend.unloaded_classes": "Unloaded classes",
"jvm_monitoring_charts.title.classes": "Class loading",
"jvm_monitoring_charts.title.gc": "Garbage collection",
"jvm_monitoring_charts.title.heap": "Heap memory",
"jvm_monitoring_charts.title.threads": "Threads",
"jvm_monitoring_dashboard.action.refresh": "Refresh",
"jvm_monitoring_dashboard.action.start": "Start monitoring",
"jvm_monitoring_dashboard.action.stop": "Stop monitoring",
"jvm_monitoring_dashboard.connection_missing.message": "Connection does not exist or has been deleted",
"jvm_monitoring_dashboard.degraded.message": "Monitoring capability is degraded",
"jvm_monitoring_dashboard.empty.description": "After you click \"Start monitoring\", GoNavi keeps sampling results for this connection in the current session; switching tabs does not stop sampling.",
"jvm_monitoring_dashboard.empty.title": "Continuous monitoring has not started yet",
"jvm_monitoring_dashboard.error.history_load_failed": "Failed to load monitoring history",
"jvm_monitoring_dashboard.error.history_unavailable": "JVMGetMonitoringHistory backend method is unavailable",
"jvm_monitoring_dashboard.error.start_failed": "Failed to start monitoring",
"jvm_monitoring_dashboard.error.start_unavailable": "JVMStartMonitoring backend method is unavailable",
"jvm_monitoring_dashboard.error.stop_failed": "Failed to stop monitoring",
"jvm_monitoring_dashboard.error.stop_unavailable": "JVMStopMonitoring backend method is unavailable",
"jvm_monitoring_dashboard.status.sampling": "Sampling",
"jvm_monitoring_dashboard.status.stopped": "Stopped",
"jvm_monitoring_dashboard.title": "Continuous JVM monitoring",
"jvm_monitoring_detail_panel.empty.gc_events_unavailable": "Current monitoring source does not provide event-level garbage collection data.",
"jvm_monitoring_detail_panel.empty.recent_gc_events": "No garbage collection events in the recent window.",
"jvm_monitoring_detail_panel.empty.thread_states": "No thread state samples yet.",
"jvm_monitoring_detail_panel.field.process_cpu": "Process CPU",
"jvm_monitoring_detail_panel.field.process_physical_memory": "Process physical memory",
"jvm_monitoring_detail_panel.field.process_virtual_memory": "Process virtual memory",
"jvm_monitoring_detail_panel.field.system_cpu": "System CPU",
"jvm_monitoring_detail_panel.gc.after": "After collection",
"jvm_monitoring_detail_panel.gc.before": "Before collection",
"jvm_monitoring_detail_panel.memory_missing.default": "The current monitoring source did not return process resident physical memory metrics. Check that the HTTP endpoint or enhanced agent collects and reports process physical memory.",
"jvm_monitoring_detail_panel.memory_missing.jmx": "JMX connection does not expose process resident physical memory, so only process virtual memory metrics can be read right now. To collect process physical memory, switch to the HTTP endpoint or enhanced agent.",
"jvm_monitoring_detail_panel.memory_missing.title": "Why process physical memory is missing",
"jvm_monitoring_detail_panel.title.capabilities_and_degradation": "Capabilities and degradation",
"jvm_monitoring_detail_panel.title.recent_gc_details": "Recent garbage collection details",
"jvm_monitoring_detail_panel.title.thread_state_distribution": "Thread state distribution",
"jvm_monitoring_detail_panel.title.troubleshooting_metrics": "Troubleshooting metrics",
"jvm_monitoring_presentation.availability.missing_metrics": "Missing metrics: {{metrics}}",
"jvm_monitoring_presentation.availability.no_obvious_degradation": "No obvious degradation was found in the current monitoring session.",
"jvm_monitoring_presentation.availability.provider_warnings": "Monitoring source warning: {{warnings}}",
"jvm_monitoring_presentation.metric.class_loading": "Class loading",
"jvm_monitoring_presentation.metric.cpu_process": "Process CPU",
"jvm_monitoring_presentation.metric.cpu_system": "System CPU",
"jvm_monitoring_presentation.metric.gc_count": "Garbage collection count",
"jvm_monitoring_presentation.metric.gc_events": "Recent garbage collection events",
"jvm_monitoring_presentation.metric.gc_time": "Garbage collection time",
"jvm_monitoring_presentation.metric.heap_non_heap": "Non-heap memory",
"jvm_monitoring_presentation.metric.heap_used": "Heap memory",
"jvm_monitoring_presentation.metric.memory_rss": "Process physical memory",
"jvm_monitoring_presentation.metric.memory_virtual": "Process virtual memory",
"jvm_monitoring_presentation.metric.thread_count": "Thread count",
"jvm_monitoring_presentation.metric.thread_states": "Thread states",
"jvm_monitoring_presentation.thread_state.blocked": "Blocked",
"jvm_monitoring_presentation.thread_state.new": "New",
"jvm_monitoring_presentation.thread_state.runnable": "Runnable",
"jvm_monitoring_presentation.thread_state.terminated": "Terminated",
"jvm_monitoring_presentation.thread_state.timed_waiting": "Timed waiting",
"jvm_monitoring_presentation.thread_state.waiting": "Waiting",
"jvm_monitoring_status_cards.meta.gc_total_time": "Total {{value}}",
"jvm_monitoring_status_cards.meta.heap_committed": "Committed {{value}}",
"jvm_monitoring_status_cards.meta.thread_peak": "Peak {{value}}",
"jvm_monitoring_status_cards.meta.waiting_samples": "Waiting for samples",
"jvm_monitoring_status_cards.status.sampling": "Sampling",
"jvm_monitoring_status_cards.status.stopped": "Stopped",
"jvm_monitoring_status_cards.thread_state.runnable_count": "Runnable {{count}}",
"jvm_monitoring_status_cards.title.classes": "Class loading",
"jvm_monitoring_status_cards.title.gc_pressure": "Garbage collection pressure",
"jvm_monitoring_status_cards.title.heap": "Heap memory",
"jvm_monitoring_status_cards.title.threads": "Threads",
"jvm_overview.badge.read_only": "Read-only connection",
"jvm_overview.badge.writable": "Writable connection",
"jvm_overview.capability.can_browse": "Browsable",
"jvm_overview.capability.cannot_browse": "Not browsable",
"jvm_overview.capability.preview_supported": "Preview supported",
"jvm_overview.capability.preview_unsupported": "Preview unsupported",
"jvm_overview.capability.read_only": "Read-only",
"jvm_overview.capability.writable": "Writable",
"jvm_overview.card.connection_summary": "Connection summary",
"jvm_overview.card.mode_capability": "Mode capabilities",
"jvm_overview.connection_missing.message": "Connection does not exist or has been deleted",
"jvm_overview.empty.capabilities": "No mode capability data",
"jvm_overview.error.capability_load_failed": "Failed to read JVM mode capabilities",
"jvm_overview.eyebrow": "JVM Runtime",
"jvm_overview.field.agent": "Agent",
"jvm_overview.field.allowed_modes": "Allowed modes",
"jvm_overview.field.current_mode": "Current mode",
"jvm_overview.field.endpoint": "Endpoint",
"jvm_overview.field.jmx_address": "JMX address",
"jvm_overview.field.resource_browse": "Resource browsing",
"jvm_overview.title": "JVM runtime overview",
"jvm_overview.value.enabled": "Enabled",
"jvm_overview.value.not_configured": "Not configured",
"jvm_overview.value.resource_browse_lazy_load": "Lazy-loads after expanding a mode node in the sidebar",
"jvm_resource.action.ask_ai_plan": "Ask AI for a plan",
"jvm_resource.action.audit": "Audit log",
"jvm_resource.action.generate_ai_plan": "Generate AI plan",
"jvm_resource.action.preview_change": "Preview change",
"jvm_resource.badge.read_only": "Read-only connection",
"jvm_resource.badge.writable": "Writable connection",
"jvm_resource.card.change_draft": "Change draft",
"jvm_resource.card.snapshot": "Resource snapshot",
"jvm_resource.draft_source.ai_plan": "AI-assisted draft",
"jvm_resource.draft_source.manual": "Manual edit",
"jvm_resource.empty.no_resource_data": "No resource data",
"jvm_resource.error.ai_plan_context_mismatch": "The current JVM tab does not match the source context of the AI plan, so automatic application was rejected.",
"jvm_resource.error.ai_plan_missing_context": "The AI plan is missing its source context. Regenerate it from the target JVM resource page before applying it.",
"jvm_resource.error.ai_plan_to_draft_failed": "The AI plan cannot be converted into a JVM preview draft right now.",
"jvm_resource.error.apply_failed": "Failed to execute JVM change.",
"jvm_resource.error.apply_unavailable": "JVM change execution is not available in this build.",
"jvm_resource.error.confirmation_missing": "Confirmation token is missing. Preview again before executing.",
"jvm_resource.error.connection_missing": "The connection does not exist or has been deleted.",
"jvm_resource.error.context_changed": "Resource context changed. Preview again before executing.",
"jvm_resource.error.draft_invalid": "The change draft is invalid.",
"jvm_resource.error.get_value_unavailable": "JVM value reading is not available in this build.",
"jvm_resource.error.payload_object_required": "Payload must be a JSON object.",
"jvm_resource.error.preview_failed": "Failed to preview JVM change.",
"jvm_resource.error.preview_required": "Preview the change before confirming execution.",
"jvm_resource.error.preview_result_invalid": "The preview result has an invalid format.",
"jvm_resource.error.preview_unavailable": "JVM change preview is not available in this build.",
"jvm_resource.error.read_failed": "Failed to read JVM resource.",
"jvm_resource.error.reason_required": "Enter a change reason.",
"jvm_resource.error.resource_id_empty": "Resource ID is empty, so a change draft cannot be created.",
"jvm_resource.error.resource_path_empty": "Resource path is empty.",
"jvm_resource.field.action": "Action",
"jvm_resource.field.available_actions": "Available actions",
"jvm_resource.field.draft_source": "Draft source",
"jvm_resource.field.format": "Format",
"jvm_resource.field.payload": "Payload (JSON)",
"jvm_resource.field.payload_fields": "Payload fields: ",
"jvm_resource.field.reason": "Change reason",
"jvm_resource.field.resource_id": "Resource ID",
"jvm_resource.field.resource_path": "Resource path",
"jvm_resource.field.resource_type": "Resource type",
"jvm_resource.field.resource_version": "Resource version",
"jvm_resource.field.target_resource": "Target resource",
"jvm_resource.field.version": "Version",
"jvm_resource.list_separator": ", ",
"jvm_resource.marker.required_suffix": " (required)",
"jvm_resource.message.ai_plan_draft_filled": "The draft was filled from the AI plan for {{resourceId}}. Preview the change before confirming the write.",
"jvm_resource.message.apply_success": "JVM change executed.",
"jvm_resource.message.current_action": "Current action: ",
"jvm_resource.message.payload_hint": "Preview uses the current draft. Confirming execution uses the most recent successful preview request. Preview again after editing the draft.",
"jvm_resource.message.payload_template_applied": "A recommended template has been filled for the current action.",
"jvm_resource.placeholder.action_default": "For example, put / clear / evict",
"jvm_resource.placeholder.action_jmx": "For example, set or invoke",
"jvm_resource.placeholder.reason": "Enter the reason for this JVM resource change",
"jvm_resource.presentation.action.clear.description": "Clear data or state from the current JVM resource.",
"jvm_resource.presentation.action.clear.label": "Clear resource",
"jvm_resource.presentation.action.delete.description": "Delete or unregister the current resource.",
"jvm_resource.presentation.action.delete.label": "Delete resource",
"jvm_resource.presentation.action.evict.description": "Evict the target cache item from the current JVM runtime.",
"jvm_resource.presentation.action.evict.label": "Evict cache",
"jvm_resource.presentation.action.invoke.description": "Invoke a management operation exposed by the current resource.",
"jvm_resource.presentation.action.invoke.label": "Invoke operation",
"jvm_resource.presentation.action.put.description": "Write the payload content to the current JVM resource.",
"jvm_resource.presentation.action.put.label": "Write resource",
"jvm_resource.presentation.action.refresh.description": "Refresh the runtime state of the current resource.",
"jvm_resource.presentation.action.refresh.label": "Refresh resource",
"jvm_resource.presentation.action.reload.description": "Reload the current resource or its configuration.",
"jvm_resource.presentation.action.reload.label": "Reload",
"jvm_resource.presentation.action.remove.description": "Remove the specified entry from the current resource.",
"jvm_resource.presentation.action.remove.label": "Remove entry",
"jvm_resource.presentation.action.reset.description": "Restore the current resource to its initial or default state.",
"jvm_resource.presentation.action.reset.label": "Reset state",
"jvm_resource.presentation.action.set.description": "Update a writable property exposed by the current resource.",
"jvm_resource.presentation.action.set.label": "Set property",
"jvm_resource.presentation.audit_result.applied": "Applied",
"jvm_resource.presentation.audit_result.blocked": "Blocked",
"jvm_resource.presentation.audit_result.failed": "Failed",
"jvm_resource.presentation.audit_result.success": "Success",
"jvm_resource.presentation.audit_result.unknown": "Unknown",
"jvm_resource.presentation.audit_result.warning": "Warning",
"jvm_resource.presentation.risk.high": "High",
"jvm_resource.presentation.risk.low": "Low",
"jvm_resource.presentation.risk.medium": "Medium",
"jvm_resource.presentation.risk.unknown": "Unknown",
"jvm_resource.presentation.unnamed_action": "Unnamed action",
"jvm_resource.section.metadata": "Metadata",
"jvm_resource.section.resource_value": "Resource value",
"jvm_resource.section.supported_actions": "Supported resource actions",
"jvm_resource.title": "JVM Resource Workbench",
"log_panel.action.clear": "Clear logs",
"log_panel.action.close": "Close panel",
"log_panel.affected_rows": "Affected: {{count}}",
"log_panel.column.duration": "Duration",
"log_panel.column.sql_message": "SQL / Message",
"log_panel.column.status": "Status",
"log_panel.column.time": "Time",
"log_panel.description": "Track execution status, duration, and errors for quick review.",
"log_panel.empty": "No SQL execution logs",
"log_panel.short_title": "Logs",
"log_panel.title": "SQL execution log",
"message_publish.error.destination_required": "Enter a target Topic / Queue",
"message_publish.error.invalid_json_detail": "{{field}} is not valid JSON: {{detail}}",
"message_publish.error.json_object_required": "{{field}} must be a JSON object",
"message_publish.error.mqtt_wildcard_topic": "MQTT publish Topic cannot contain + or # wildcards",
"message_publish.error.required_field": "{{field}} is required",
"message_publish.error.unsupported_type": "The current data source does not support test message publishing: {{type}}",
"message_publish.field.body": "Message body",
"message_publish.field.message_key": "Message Key",
"message_publish.presentation.kafka.alert": "This form builds a Kafka publish JSON command and calls the backend to send a test message.",
"message_publish.presentation.kafka.destination_placeholder": "Example: orders.events",
"message_publish.presentation.kafka.key_placeholder": "Optional. In JSON mode, enter one valid JSON line.",
"message_publish.presentation.kafka.success_hint": "Headers are sent as Kafka Record Headers.",
"message_publish.presentation.key_label": "Message Key (optional)",
"message_publish.presentation.keys_label": "Message Keys (optional)",
"message_publish.presentation.mqtt.alert": "This form builds an MQTT publish JSON command and sends a test message directly through the broker.",
"message_publish.presentation.mqtt.destination_placeholder": "Example: devices/device-001/telemetry",
"message_publish.presentation.mqtt.success_hint": "QoS and retain can be set separately. Empty fields use the defaults from the current connection.",
"message_publish.presentation.rabbitmq.alert": "This form builds a RabbitMQ publish JSON command and sends a test message through the Management API.",
"message_publish.presentation.rabbitmq.destination_placeholder": "Example: orders.queue",
"message_publish.presentation.rabbitmq.destination_required": "Enter a Queue",
"message_publish.presentation.rabbitmq.success_hint": "When Exchange is empty, the default exchange is used and the Queue name is used as the routing key.",
"message_publish.presentation.rocketmq.alert": "This form builds a RocketMQ publish JSON command and sends a test message through the NameServer/Broker.",
"message_publish.presentation.rocketmq.destination_placeholder": "Example: orders.events",
"message_publish.presentation.rocketmq.key_placeholder": "Enter multiple Key values separated by commas",
"message_publish.presentation.rocketmq.success_hint": "Tag, Keys, Delay Level, and Properties are written into the RocketMQ message attributes.",
"message_publish.presentation.rocketmq.tag_placeholder": "Example: TagA",
"message_publish.presentation.topic_required": "Enter a Topic",
"message_publish_modal.action.send": "Send",
"message_publish_modal.error.build_command_failed": "Failed to build the publish command",
"message_publish_modal.error.send_failed_detail": "Send failed: {{detail}}",
"message_publish_modal.error.unknown_error": "Unknown error",
"message_publish_modal.field.body.extra": "JSON mode requires valid JSON. Text mode sends the content as-is.",
"message_publish_modal.field.body.label": "Message body",
"message_publish_modal.field.body.placeholder": "Enter the message body",
"message_publish_modal.field.body.required": "Enter the message body",
"message_publish_modal.field.body_mode.label": "Message body type",
"message_publish_modal.field.delay_level.extra": "RocketMQ uses fixed delay levels. 0 sends immediately.",
"message_publish_modal.field.delay_level.label": "Delay Level (optional)",
"message_publish_modal.field.exchange.extra": "Leave empty to use the default exchange. If you enter a custom exchange, make sure the target Queue has a binding.",
"message_publish_modal.field.exchange.label": "Exchange (optional)",
"message_publish_modal.field.exchange.placeholder": "Example: events.topic",
"message_publish_modal.field.headers.extra": "Must be a JSON object, for example {{example}}.",
"message_publish_modal.field.headers.label": "Headers (optional)",
"message_publish_modal.field.properties.extra": "Must be a JSON object, for example {{example}}.",
"message_publish_modal.field.properties.label": "Properties (optional)",
"message_publish_modal.field.qos.extra": "0 is at most once, 1 is at least once, and 2 is exactly once.",
"message_publish_modal.field.retain.label": "Retain message",
"message_publish_modal.field.routing_key.extra": "Leave empty to use the current Queue name by default.",
"message_publish_modal.field.routing_key.label": "Routing Key (optional)",
"message_publish_modal.field.routing_key.placeholder": "Example: orders.queue",
"message_publish_modal.field.tag.extra": "Leave empty to skip filtering or writing a Tag.",
"message_publish_modal.field.tag.label": "Tag (optional)",
"message_publish_modal.footer.success_prefix": "A successful send returns",
"message_publish_modal.footer.success_suffix": " to confirm whether this test message was submitted.",
"message_publish_modal.option.no_delay": "No delay",
"message_publish_modal.option.text": "Text",
"message_publish_modal.title": "Test message publish",
"message_publish_modal.title_with_connection": "Test message publish · {{connectionName}}",
"proxy.backend.error.host_empty": "Proxy host is empty",
"proxy.backend.error.http_connect_failed": "Failed to connect to HTTP proxy: {{detail}}",
"proxy.backend.error.http_connect_read_failed": "Failed to read HTTP CONNECT response: {{detail}}",
"proxy.backend.error.http_connect_status_failed": "HTTP proxy CONNECT failed: {{status}}",
"proxy.backend.error.http_connect_write_failed": "Failed to send HTTP CONNECT request: {{detail}}",
"proxy.backend.error.listen_failed": "Failed to create local proxy listener: {{detail}}",
"proxy.backend.error.port_invalid": "Invalid proxy port: {{port}}",
"proxy.backend.error.remote_addr_invalid": "Invalid remote address: {{address}}",
"proxy.backend.error.socks5_connect_failed": "SOCKS5 proxy connection failed: {{detail}}",
"proxy.backend.error.socks5_dialer_failed": "Failed to create SOCKS5 proxy dialer: {{detail}}",
"proxy.backend.error.unsupported_type": "Unsupported proxy type: {{type}}",
"query.format": "Format SQL",
"query.new": "New Query",
"query.run": "Run",
"query.save": "Save Query",
"query.stop": "Stop",
"query_editor.action.ai_explain_sql": "AI Explain SQL",
"query_editor.action.ai_explain_sql_menu": "Explain SQL",
"query_editor.action.ai_generate_sql": "AI Generate SQL",
"query_editor.action.ai_generate_sql_menu": "Generate SQL",
"query_editor.action.ai_optimize_sql": "AI Optimize SQL",
"query_editor.action.ai_optimize_sql_menu": "Optimize SQL",
"query_editor.action.ai_schema_analysis": "Schema analysis",
"query_editor.action.ai_text_to_sql_menu": "Text-to-SQL",
"query_editor.action.export_sql_file": "Export SQL file",
"query_editor.action.find_in_editor": "Find",
"query_editor.action.find_in_editor_with_shortcut": "Find in editor ({{shortcut}})",
"query_editor.action.format": "Format",
"query_editor.action.format_sql": "Format SQL",
"query_editor.action.format_sql_with_shortcut": "Format SQL ({{shortcut}})",
"query_editor.action.hide_results_panel": "Hide results panel",
"query_editor.action.hide_results_panel_with_shortcut": "Hide results panel ({{shortcut}})",
"query_editor.action.insert_sql_snippet": "Insert SQL Snippet",
"query_editor.action.more": "More",
"query_editor.action.rename_query": "Rename query",
"query_editor.action.resize_editor": "Drag to resize height",
"query_editor.action.results": "Results",
"query_editor.action.run": "Run",
"query_editor.action.run_with_shortcut": "Run ({{shortcut}})",
"query_editor.action.save": "Save",
"query_editor.action.save_with_shortcut": "Save ({{shortcut}})",
"query_editor.action.show_object_info": "Show Object Info",
"query_editor.action.show_results_panel": "Show results panel",
"query_editor.action.show_results_panel_with_shortcut": "Show results panel ({{shortcut}})",
"query_editor.action.stop": "Stop",
"query_editor.ai_prompt.context": "Context: {{type}} {{name}}, selected database {{database}}.\n",
"query_editor.ai_prompt.default_database": "Default",
"query_editor.ai_prompt.default_source": "Database",
"query_editor.ai_prompt.diagnose": "I got an error while executing this SQL:\n```sql\n{{sql}}\n```\n\nThe database returned this error:\n```text\n{{error}}\n```\n\nAnalyze the cause and suggest a fix.",
"query_editor.ai_prompt.explain": "Explain the execution logic of this SQL statement:\n```sql\n{{sql}}\n```",
"query_editor.ai_prompt.generate": "Generate a query based on the current database schema.",
"query_editor.ai_prompt.optimize": "Analyze this SQL statement for performance issues and suggest optimizations:\n```sql\n{{sql}}\n```",
"query_editor.ai_prompt.schema": "Analyze the current database schema and suggest performance and design improvements.",
"query_editor.completion.action.absolute_value": "absolute value",
"query_editor.completion.action.approximate_distinct": "approximate distinct",
"query_editor.completion.action.approximate_distinct_count": "approximate distinct count",
"query_editor.completion.action.approximate_percentile": "approximate percentile",
"query_editor.completion.action.approximate_quantile": "approximate quantile",
"query_editor.completion.action.array_aggregation": "array aggregation",
"query_editor.completion.action.array_length": "array length",
"query_editor.completion.action.average": "average",
"query_editor.completion.action.bitmap_aggregation": "bitmap aggregation",
"query_editor.completion.action.bitmap_construction": "build bitmap",
"query_editor.completion.action.bitmap_count": "bitmap count",
"query_editor.completion.action.boolean_and_aggregation": "boolean AND aggregation",
"query_editor.completion.action.boolean_or_aggregation": "boolean OR aggregation",
"query_editor.completion.action.character_length": "character length",
"query_editor.completion.action.concat_with_separator": "concatenate with separator",
"query_editor.completion.action.concatenation": "concatenate",
"query_editor.completion.action.condition_mapping": "condition mapping",
"query_editor.completion.action.conditional_check": "conditional check",
"query_editor.completion.action.count": "count",
"query_editor.completion.action.current_database": "current database",
"query_editor.completion.action.current_date": "current date",
"query_editor.completion.action.current_date_time": "current date and time",
"query_editor.completion.action.current_time": "current time",
"query_editor.completion.action.current_timestamp": "current timestamp",
"query_editor.completion.action.current_user": "current user",
"query_editor.completion.action.database_current_time": "database current time",
"query_editor.completion.action.date_addition": "date addition",
"query_editor.completion.action.date_conversion": "convert to date",
"query_editor.completion.action.date_difference": "date difference",
"query_editor.completion.action.date_field_extraction": "extract date field",
"query_editor.completion.action.date_formatting": "date formatting",
"query_editor.completion.action.date_subtraction": "date subtraction",
"query_editor.completion.action.date_truncation": "date truncation",
"query_editor.completion.action.date_value": "date",
"query_editor.completion.action.datetime_conversion": "convert to date and time",
"query_editor.completion.action.datetime_value": "date and time",
"query_editor.completion.action.decimal_truncation": "truncate decimals",
"query_editor.completion.action.dense_rank": "dense rank",
"query_editor.completion.action.distinct_array_aggregation": "distinct array aggregation",
"query_editor.completion.action.e_power": "power of e",
"query_editor.completion.action.elapsed_time": "elapsed time",
"query_editor.completion.action.epoch_seconds": "epoch seconds",
"query_editor.completion.action.exact_distinct": "exact distinct",
"query_editor.completion.action.first_non_null": "return first non-NULL",
"query_editor.completion.action.first_value": "first value",
"query_editor.completion.action.format_as_text": "format as text",
"query_editor.completion.action.group_concatenation": "grouped concatenation",
"query_editor.completion.action.guid_generation": "generate GUID",
"query_editor.completion.action.hexadecimal": "hexadecimal",
"query_editor.completion.action.high_precision_current_time": "high-precision current time",
"query_editor.completion.action.hll_aggregation": "HLL aggregation",
"query_editor.completion.action.hll_hash": "HLL hash",
"query_editor.completion.action.instant_rate_of_change": "instant rate of change",
"query_editor.completion.action.int64_conversion": "convert to Int64",
"query_editor.completion.action.interpolation": "interpolation",
"query_editor.completion.action.json_string_extraction": "JSON string extraction",
"query_editor.completion.action.json_unquote": "remove JSON quotes",
"query_editor.completion.action.json_value_extraction": "JSON value extraction",
"query_editor.completion.action.json_value_set": "set JSON value",
"query_editor.completion.action.jsonb_path_extraction": "JSONB path extraction",
"query_editor.completion.action.julian_day": "Julian day",
"query_editor.completion.action.last_insert_id": "last insert ID",
"query_editor.completion.action.last_row": "last row",
"query_editor.completion.action.last_value": "last value",
"query_editor.completion.action.least_squares": "least squares",
"query_editor.completion.action.left_padding": "left padding",
"query_editor.completion.action.left_space_trimming": "trim left spaces",
"query_editor.completion.action.left_substring": "extract from left",
"query_editor.completion.action.length": "length",
"query_editor.completion.action.list_aggregation": "list aggregation",
"query_editor.completion.action.list_unnest": "unnest list",
"query_editor.completion.action.log_base_10": "base-10 logarithm",
"query_editor.completion.action.log_base_2": "base-2 logarithm",
"query_editor.completion.action.logarithm": "logarithm",
"query_editor.completion.action.lowercase": "convert to lowercase",
"query_editor.completion.action.maximum": "maximum",
"query_editor.completion.action.md5_hash": "MD5 hash",
"query_editor.completion.action.minimum": "minimum",
"query_editor.completion.action.modulo": "modulo",
"query_editor.completion.action.month_addition": "add months",
"query_editor.completion.action.month_difference": "month difference",
"query_editor.completion.action.month_end_date": "month-end date",
"query_editor.completion.action.next_row": "next row",
"query_editor.completion.action.null_branch": "NULL branch",
"query_editor.completion.action.null_if_equal": "return NULL if equal",
"query_editor.completion.action.null_replacement": "null replacement",
"query_editor.completion.action.number_conversion": "convert to number",
"query_editor.completion.action.number_formatting": "number formatting",
"query_editor.completion.action.position_lookup": "find position",
"query_editor.completion.action.power_operation": "power operation",
"query_editor.completion.action.previous_row": "previous row",
"query_editor.completion.action.quantile": "quantile",
"query_editor.completion.action.random_number": "random number",
"query_editor.completion.action.rank": "rank",
"query_editor.completion.action.rate_of_change": "rate of change",
"query_editor.completion.action.regex_match": "regex match",
"query_editor.completion.action.regex_replace": "regex replace",
"query_editor.completion.action.replacement": "replace",
"query_editor.completion.action.right_padding": "right padding",
"query_editor.completion.action.right_space_trimming": "trim right spaces",
"query_editor.completion.action.right_substring": "extract from right",
"query_editor.completion.action.round_down": "round down",
"query_editor.completion.action.round_up": "round up",
"query_editor.completion.action.rounding": "round",
"query_editor.completion.action.row_number": "row number",
"query_editor.completion.action.set_lookup": "set lookup",
"query_editor.completion.action.sha1_hash": "SHA1 hash",
"query_editor.completion.action.sha2_hash": "SHA2 hash",
"query_editor.completion.action.space_trimming": "trim spaces",
"query_editor.completion.action.spread": "spread",
"query_editor.completion.action.sql_literal": "SQL literal",
"query_editor.completion.action.square_root": "square root",
"query_editor.completion.action.string_aggregation": "string aggregation",
"query_editor.completion.action.string_conversion": "convert to string",
"query_editor.completion.action.string_repetition": "repeat string",
"query_editor.completion.action.string_reversal": "reverse string",
"query_editor.completion.action.string_to_date": "string to date",
"query_editor.completion.action.string_to_timestamp": "string to timestamp",
"query_editor.completion.action.struct_construction": "build struct",
"query_editor.completion.action.substring_extraction": "extract substring",
"query_editor.completion.action.sum": "sum",
"query_editor.completion.action.time_difference": "time difference",
"query_editor.completion.action.time_value": "time",
"query_editor.completion.action.time_weighted_average": "time-weighted average",
"query_editor.completion.action.timestamp_difference": "timestamp difference",
"query_editor.completion.action.truncate_date_or_number": "truncate date or number",
"query_editor.completion.action.try_conversion": "try conversion",
"query_editor.completion.action.type_conversion": "type conversion",
"query_editor.completion.action.unix_time_to_datetime": "Unix time to date and time",
"query_editor.completion.action.unix_timestamp": "Unix timestamp",
"query_editor.completion.action.uppercase": "convert to uppercase",
"query_editor.completion.action.uuid_generation": "generate UUID",
"query_editor.completion.action.value_formatting": "format value",
"query_editor.completion.action.version": "version",
"query_editor.completion.detail.aggregate": "Aggregate function",
"query_editor.completion.detail.aggregate_count": "Aggregate - count",
"query_editor.completion.detail.conditional": "Conditional function",
"query_editor.completion.detail.conditional_if": "Conditional - if",
"query_editor.completion.detail.conversion": "Type conversion function",
"query_editor.completion.detail.conversion_cast": "Conversion - type cast",
"query_editor.completion.detail.crypto_md5": "Hash - MD5",
"query_editor.completion.detail.date_now": "Date - current date and time",
"query_editor.completion.detail.date_time": "Date and time function",
"query_editor.completion.detail.info": "Information function",
"query_editor.completion.detail.info_database": "Info - current database",
"query_editor.completion.detail.json": "JSON function",
"query_editor.completion.detail.json_extract": "JSON - extract value",
"query_editor.completion.detail.math": "Math function",
"query_editor.completion.detail.math_abs": "Math - absolute value",
"query_editor.completion.detail.modifier_distinct": "Modifier - distinct",
"query_editor.completion.detail.sql_function": "SQL function",
"query_editor.completion.detail.string": "String function",
"query_editor.completion.detail.string_concat": "String - concatenate",
"query_editor.completion.detail.utility": "Utility function",
"query_editor.completion.detail.window": "Window function",
"query_editor.completion.detail.window_row_number": "Window - row number",
"query_editor.completion.documentation.comment": "Comment: {{comment}}",
"query_editor.empty_state.description": "Run a query to display results below in the new data grid.",
"query_editor.empty_state.title": "Awaiting SQL execution",
"query_editor.format.keyword_lower": "Lowercase keywords",
"query_editor.format.keyword_upper": "Uppercase keywords",
"query_editor.format.restore_last_format": "Restore last format",
"query_editor.format.shortcut_settings": "Shortcut settings...",
"query_editor.format.snippet_settings": "Snippet settings...",
"query_editor.hover.open_function_with_shortcut": "{{shortcut}} + click to open this function",
"query_editor.hover.open_materialized_view_with_shortcut": "{{shortcut}} + click to open this materialized view",
"query_editor.hover.open_package_with_shortcut": "{{shortcut}} + click to open this package",
"query_editor.hover.open_procedure_with_shortcut": "{{shortcut}} + click to open this stored procedure",
"query_editor.hover.open_sequence_with_shortcut": "{{shortcut}} + click to open this sequence",
"query_editor.hover.open_table_with_shortcut": "{{shortcut}} + click to open this table object design",
"query_editor.hover.open_trigger_with_shortcut": "{{shortcut}} + click to open this trigger",
"query_editor.hover.open_view_with_shortcut": "{{shortcut}} + click to open this view",
"query_editor.hover.switch_database_with_shortcut": "{{shortcut}} + click to switch to this database",
"query_editor.max_rows.option_1000": "Max rows: 1000",
"query_editor.max_rows.option_20000": "Max rows: 20000",
"query_editor.max_rows.option_500": "Max rows: 500",
"query_editor.max_rows.option_5000": "Max rows: 5000",
"query_editor.max_rows.option_unlimited": "Max rows: unlimited",
"query_editor.max_rows.tooltip": "Maximum returned rows. SELECT statements get an automatic LIMIT to prevent very large result sets from freezing the UI.",
"query_editor.message.ai_model_missing": "The active AI provider has no model selected. Select a model in AI settings first.",
"query_editor.message.ai_provider_missing": "Configure and enable an AI provider in AI settings first.",
"query_editor.message.ai_service_unavailable": "The AI service is not ready. Try again later or check AI settings.",
"query_editor.message.append_success": "Code appended.",
"query_editor.message.cancel_failed": "Failed to cancel query: {{error}}",
"query_editor.message.cancel_no_running": "No running query to cancel.",
"query_editor.message.cancel_success": "Query canceled.",
"query_editor.message.connection_not_found": "Connection not found.",
"query_editor.message.connection_readonly_blocked": "This connection has production guard enabled and only allows query operations.",
"query_editor.message.current_line_no_copyable_content": "No copyable content on the current line.",
"query_editor.message.execution_failed_with_error": "Query execution failed: {{error}}",
"query_editor.message.execution_multi_success": "Executed {{statements}} statements and produced {{results}} result sets.",
"query_editor.message.execution_result_sets_success": "Execution finished and produced {{results}} result sets.",
"query_editor.message.execution_success": "Execution succeeded.",
"query_editor.message.export_sql_file_failed": "Export SQL file failed: {{error}}",
"query_editor.message.export_sql_file_success": "SQL file exported.",
"query_editor.message.format_failed": "Format failed: SQL syntax may be invalid.",
"query_editor.message.format_restore_success": "Restored the pre-format SQL snapshot.",
"query_editor.message.insert_success": "Code inserted at the current cursor.",
"query_editor.message.no_executable_sql": "No executable SQL.",
"query_editor.message.no_format_restore_snapshot": "No pre-format SQL snapshot is available to restore.",
"query_editor.message.no_selectable_sql": "No selectable SQL statement.",
"query_editor.message.object_info_target_not_found": "The cursor is not on a recognized table or column.",
"query_editor.message.page_query_empty": "The page query returned no result set.",
"query_editor.message.page_query_failed": "Page query failed: {{error}}",
"query_editor.message.read_only_index_metadata_unavailable": "Unable to load unique index metadata, so changes cannot be committed safely.",
"query_editor.message.read_only_no_safe_locator": "No primary key or usable unique index was detected, so changes cannot be committed safely.",
"query_editor.message.read_only_oracle_rowid_injection_unavailable": "The Oracle query uses *, so the ROWID locator column could not be injected automatically. Results remain read-only.",
"query_editor.message.read_only_system_metadata": "System metadata query results remain read-only.",
"query_editor.message.read_only_table_locator_metadata_unavailable": "Unable to load primary key/unique index metadata for {{table}}, so changes cannot be committed safely.",
"query_editor.message.read_only_warning_with_detail": "Query results remain read-only: {{detail}}",
"query_editor.message.refresh_failed": "Refresh failed: {{error}}",
"query_editor.message.renamed": "Query renamed.",
"query_editor.message.save_first_before_rename": "Save the query before renaming it.",
"query_editor.message.save_query_failed": "Failed to save query: {{error}}",
"query_editor.message.save_sql_file_failed": "Failed to save SQL file: {{error}}",
"query_editor.message.saved": "Query saved.",
"query_editor.message.select_database_first": "Select a database first.",
"query_editor.message.sql_file_saved": "SQL file saved.",
"query_editor.message.statement_failed_prefix": "Statement {{index}} failed: ",
"query_editor.message.text_to_sql_empty_instruction": "Enter the SQL requirement to generate.",
"query_editor.message.text_to_sql_empty_result": "AI did not return insertable SQL.",
"query_editor.message.text_to_sql_failed": "Text-to-SQL generation failed: {{error}}",
"query_editor.message.text_to_sql_success": "SQL generated and written to the editor.",
"query_editor.message.unsupported_source": "This data source does not support the SQL query editor. Use its dedicated page instead.",
"query_editor.object_info.column": "Column",
"query_editor.object_info.database": "Database",
"query_editor.object_info.label.database": "Database",
"query_editor.object_info.label.schema": "Schema",
"query_editor.object_info.label.separator": ": ",
"query_editor.object_info.label.table": "Table",
"query_editor.object_info.label.type": "Type",
"query_editor.object_info.materialized_view": "Materialized view",
"query_editor.object_info.table": "Table",
"query_editor.placeholder.connection": "Select connection",
"query_editor.placeholder.database": "Select database",
"query_editor.result.affected_rows": "Affected rows: {{count}}",
"query_editor.result.ai_diagnose": "AI diagnose",
"query_editor.result.close": "Close result",
"query_editor.result.execution_failed": "Execution failed",
"query_editor.result.execution_success": "Execution succeeded",
"query_editor.result.tab_title": "Result {{index}} ({{count}})",
"query_editor.result.tab_title_success": "Result {{index}} ✓",
"query_editor.results_panel.action.hide": "Hide",
"query_editor.results_panel.aria.hide": "Hide results panel",
"query_editor.results_panel.detached.close": "Close window",
"query_editor.results_panel.detached.restore": "Restore as result tab",
"query_editor.results_panel.detached.title": "Result {{index}}",
"query_editor.results_panel.menu.close_all": "Close all tabs",
"query_editor.results_panel.menu.close_left": "Close tabs to the left",
"query_editor.results_panel.menu.close_other": "Close other tabs",
"query_editor.results_panel.menu.close_right": "Close tabs to the right",
"query_editor.results_panel.menu.open_in_window": "Open in floating window",
"query_editor.results_panel.menu.restore_to_tab": "Restore as result tab",
"query_editor.results_panel.message.action.copy": "Copy",
"query_editor.results_panel.message.copy_failed": "Failed to copy message: {{detail}}",
"query_editor.results_panel.message.copy_unsupported": "Clipboard is not available in the current environment",
"query_editor.results_panel.message.title": "Execution messages",
"query_editor.results_panel.panel.title": "Results panel",
"query_editor.results_panel.tab.message": "Message {{index}}",
"query_editor.results_panel.tab.result": "Result {{index}}",
"query_editor.results_panel.tooltip.hide": "Hide results panel",
"query_editor.results_panel.tooltip.hide_with_shortcut": "Hide results panel ({{shortcut}})",
"query_editor.save_modal.name_label": "Query name",
"query_editor.save_modal.name_placeholder": "Example: query all users",
"query_editor.save_modal.name_required": "Enter a query name.",
"query_editor.save_modal.rename_ok": "Rename",
"query_editor.save_modal.rename_title": "Rename query",
"query_editor.save_modal.title": "Save query",
"query_editor.save_modal.unnamed": "Untitled query",
"query_editor.slash_command.diff.description": "Compare table differences and generate changes",
"query_editor.slash_command.diff.label": "Table comparison",
"query_editor.slash_command.diff.prompt": "Compare these two table structures and generate ALTER statements to migrate from the old version to the new version.",
"query_editor.slash_command.explain.description": "Explain the selected SQL logic",
"query_editor.slash_command.explain.label": "Explain SQL",
"query_editor.slash_command.explain.prompt": "Explain the execution logic of this SQL statement:\n```sql\n{{sql}}\n```",
"query_editor.slash_command.index.description": "Recommend an index strategy",
"query_editor.slash_command.index.label": "Index advice",
"query_editor.slash_command.index.prompt": "Recommend an index strategy based on the current table structure and common query patterns, and include SQL where useful.",
"query_editor.slash_command.mock.description": "Generate INSERT test data",
"query_editor.slash_command.mock.label": "Mock data",
"query_editor.slash_command.mock.prompt": "Generate 10 business-meaningful INSERT test rows for the related table.",
"query_editor.slash_command.optimize.description": "Analyze SQL performance bottlenecks",
"query_editor.slash_command.optimize.label": "Optimize analysis",
"query_editor.slash_command.optimize.prompt": "Analyze this SQL statement for performance issues and suggest optimizations:\n```sql\n{{sql}}\n```",
"query_editor.slash_command.query.description": "Describe what you want to query",
"query_editor.slash_command.query.label": "Natural language query",
"query_editor.slash_command.query.prompt": "Write an SQL query for this request:",
"query_editor.slash_command.schema.description": "Review table structure design quality",
"query_editor.slash_command.schema.label": "Table design review",
"query_editor.slash_command.schema.prompt": "Review the related table design, including field types, normalization, indexes, and improvement suggestions.",
"query_editor.slash_command.sql.description": "Describe the requirement and generate a statement",
"query_editor.slash_command.sql.label": "Generate SQL",
"query_editor.slash_command.sql.prompt": "Generate SQL for this requirement:",
"query_editor.snippet_picker.description": "Choose an existing SQL snippet and insert it at the current cursor position.",
"query_editor.snippet_picker.empty": "No SQL snippets are available yet. Open snippet settings to add or restore snippets.",
"query_editor.snippet_picker.empty_filtered": "No SQL snippets match the current filter.",
"query_editor.snippet_picker.manage": "Manage snippets",
"query_editor.snippet_picker.search_placeholder": "Search by prefix, name, or content",
"query_editor.snippet_picker.title": "Insert SQL Snippet",
"query_editor.sql_error.rule.column_missing.explanation": "The SQL references a column that is not in the result set, is spelled differently, or does not exist on the current table.",
"query_editor.sql_error.rule.column_missing.label": "Column does not exist",
"query_editor.sql_error.rule.column_missing.suggestion": "Check column names, aliases, casing, table aliases, and whether the column belongs to the current FROM/JOIN object.",
"query_editor.sql_error.rule.connection_or_auth.explanation": "The client could not connect to the database, or credentials, network, or instance state may be wrong.",
"query_editor.sql_error.rule.connection_or_auth.label": "Database connection or authentication failed",
"query_editor.sql_error.rule.connection_or_auth.suggestion": "Check host, port, username, password, network reachability, proxy/SSH tunnel, and database service status.",
"query_editor.sql_error.rule.constraint_failed.explanation": "The data violates a foreign key, non-null, check constraint, or referential integrity rule.",
"query_editor.sql_error.rule.constraint_failed.label": "Constraint validation failed",
"query_editor.sql_error.rule.constraint_failed.suggestion": "Check related parent records, required fields, CHECK conditions, and whether the write order is correct.",
"query_editor.sql_error.rule.generic.explanation": "The database returned an execution failure, and no more specific error type was matched.",
"query_editor.sql_error.rule.generic.label": "Database execution error",
"query_editor.sql_error.rule.generic.suggestion": "Continue troubleshooting with the raw error, SQL fragment, and current database dialect.",
"query_editor.sql_error.rule.object_missing.explanation": "The SQL references a table, view, sequence, or other database object that cannot be found in the current database or schema.",
"query_editor.sql_error.rule.object_missing.label": "Table or object does not exist",
"query_editor.sql_error.rule.object_missing.suggestion": "Check the object name, casing, schema/database prefix, and whether the selected database for this query is correct.",
"query_editor.sql_error.rule.permission_denied.explanation": "The current database account does not have permission to execute this SQL or access the related objects.",
"query_editor.sql_error.rule.permission_denied.label": "Insufficient permissions",
"query_editor.sql_error.rule.permission_denied.suggestion": "Check account privileges, schema grants, read-only connection limits, and whether an administrator needs to grant access.",
"query_editor.sql_error.rule.syntax.explanation": "Usually caused by keywords, commas, parentheses, quotes, statement order, or SQL dialect mismatch.",
"query_editor.sql_error.rule.syntax.label": "SQL syntax error",
"query_editor.sql_error.rule.syntax.suggestion": "Check the SQL fragment near the reported position and confirm the current data source type matches the SQL dialect.",
"query_editor.sql_error.rule.timeout_or_canceled.explanation": "The SQL ran longer than the timeout limit, or execution was manually canceled.",
"query_editor.sql_error.rule.timeout_or_canceled.label": "Query timed out or was canceled",
"query_editor.sql_error.rule.timeout_or_canceled.suggestion": "Check the SQL execution plan, filters, and indexes; narrow the query range or adjust the timeout if needed.",
"query_editor.sql_error.rule.type_mismatch.explanation": "The value being written, compared, or converted does not match the target column or expression format.",
"query_editor.sql_error.rule.type_mismatch.label": "Data type or format mismatch",
"query_editor.sql_error.rule.type_mismatch.suggestion": "Check dates, numbers, booleans, enum values, implicit casts, and column types; use an explicit CAST if needed.",
"query_editor.sql_error.rule.unique_conflict.explanation": "The inserted or updated data duplicates an existing value in a unique index, primary key, or unique constraint.",
"query_editor.sql_error.rule.unique_conflict.label": "Unique constraint or primary key conflict",
"query_editor.sql_error.rule.unique_conflict.suggestion": "Check the duplicate key value and use UPDATE or UPSERT if appropriate, or adjust the unique-key field value.",
"query_editor.sql_error.unknown": "Unknown error",
"query_editor.sql_error.wrapper.raw_line": "Raw error: {{error}}",
"query_editor.sql_error.wrapper.semantic_line": "Semantic meaning: {{label}}. {{explanation}}",
"query_editor.sql_error.wrapper.suggestion_line": "Suggestion: {{suggestion}}",
"query_editor.text_to_sql.description": "Describe the data you want to query or change. GoNavi will use the current connection, database, and loaded schema to generate SQL.",
"query_editor.text_to_sql.generate": "Generate SQL",
"query_editor.text_to_sql.mode.insert": "Insert at cursor",
"query_editor.text_to_sql.mode.replace_all": "Replace all",
"query_editor.text_to_sql.mode.replace_selection": "Replace selection",
"query_editor.text_to_sql.placeholder": "Example: summarize daily order amount for the last 30 days and sort by date ascending",
"query_editor.text_to_sql.title": "Text-to-SQL",
"query_editor.transaction.action.commit": "Commit",
"query_editor.transaction.action.commit_with_count": "Commit ({{count}})",
"query_editor.transaction.action.rollback": "Rollback",
"query_editor.transaction.delay.immediate": "Immediately",
"query_editor.transaction.delay.immediate_commit": "Commit now",
"query_editor.transaction.delay.seconds_commit": "Commit in {{seconds}}s",
"query_editor.transaction.message.pending_managed_transaction": "The SQL editor already has a pending transaction. Commit or roll it back before running another DML statement.",
"query_editor.transaction.mode.auto": "Auto",
"query_editor.transaction.mode.manual": "Manual",
"query_editor.transaction.mode.tooltip": "Like DBeaver: when the SQL editor runs DML such as INSERT/UPDATE/DELETE/MERGE/REPLACE, GoNavi first opens a managed transaction. Manual mode requires commit/rollback; auto mode automatically runs COMMIT after successful execution.",
"query_editor.transaction.status.auto_commit_countdown": "Auto commit in {{seconds}}s",
"query_editor.transaction.status.auto_committing": "Auto committing",
"query_history.backend.error.connection_fingerprint_invalid": "Unable to parse the connection fingerprint",
"query_history.backend.message.cleared": "Slow query history cleared",
"query_history.backend.message.loaded": "Loaded",
"redis.backend.error.address_required": "Redis connection address cannot be empty",
"redis.backend.error.argument_invalid_type": "{{name}} has an invalid type",
"redis.backend.error.argument_required": "{{name}} is required",
"redis.backend.error.cluster_connect_failed": "Redis Cluster connection failed: {{detail}}",
"redis.backend.error.command_required": "Command cannot be empty",
"redis.backend.error.connect_attempt_failed": "Attempt {{attempt}} connection failed: {{detail}}",
"redis.backend.error.connect_failed": "Redis connection failed: {{detail}}",
"redis.backend.error.connect_tls_setup_failed": "Attempt {{attempt}} TLS setup failed: {{detail}}",
"redis.backend.error.export_no_keys": "No Keys matched the export scope",
"redis.backend.error.import_no_keys_selected": "No Keys were selected for import",
"redis.backend.error.import_payload_invalid": "Redis import file is invalid: {{detail}}",
"redis.backend.error.invalid_node_address": "Invalid Redis node address: {{address}}",
"redis.backend.error.invalid_port": "Invalid Redis port: {{address}}",
"redis.backend.error.node_address_required": "Redis node address cannot be empty",
"redis.backend.error.select_db_index_invalid": "Invalid database index: {{value}}",
"redis.backend.error.select_db_index_out_of_range": "Database index must be between {{min}} and {{max}}",
"redis.backend.error.select_db_index_required": "SELECT command requires a database index",
"redis.backend.error.sentinel_connect_failed": "Redis Sentinel connection failed: {{detail}}",
"redis.backend.error.sentinel_master_required": "Redis Sentinel mode requires a master name",
"redis.backend.error.ssh_tunnel_create_failed": "Failed to create the SSH tunnel: {{detail}}",
"redis.backend.error.test_connection_close_failed": "Connection succeeded, but releasing the test connection failed: {{detail}}",
"redis.backend.error.topology_ssh_tunnel_unsupported": "Redis {{topology}} mode does not support SSH tunnels yet. Disable SSH and try again.",
"redis.backend.label.topology_cluster": "Cluster",
"redis.backend.label.topology_multi_node": "multi-node",
"redis.backend.label.topology_sentinel": "Sentinel",
"redis.backend.message.add_success": "Add succeeded",
"redis.backend.message.connect_success": "Connection succeeded",
"redis.backend.message.delete_success": "Delete succeeded",
"redis.backend.message.export_success": "Export succeeded",
"redis.backend.message.flush_success": "Flush succeeded",
"redis.backend.message.import_success": "Import succeeded",
"redis.backend.message.rename_success": "Rename succeeded",
"redis.backend.message.select_db_success": "Database switched",
"redis.backend.message.set_success": "Set succeeded",
"redis.db_alias.menu.set": "Set alias",
"redis.db_alias.modal.placeholder": "e.g. cache, sessions (leave empty to clear)",
"redis.db_alias.modal.title": "Alias for {{db}}",
"redis_command.action.clear_console": "Clear console",
"redis_command.action.execute": "Run (Cmd+Enter)",
"redis_command.completion.detail": "Redis command",
"redis_command.message.command_required": "Enter a command to run",
"redis_command.output.empty_hint": "Run commands in this console; results are shown as returned.",
"redis_command.output.selection_tip": "Tip: select any lines and press Ctrl + Enter to run only that selection.",
"redis_command.output.title": "Execution output",
"redis_command.state.connection_not_found": "Connection not found",
"redis_command.title.console": "Redis Console",
"redis_monitor.action.pause_refresh": "Pause refresh",
"redis_monitor.action.refresh_now": "Refresh now",
"redis_monitor.action.resume_refresh": "Resume refresh",
"redis_monitor.chart.clients_keys": "Connection info (Clients & Keys)",
"redis_monitor.chart.cpu_usage": "CPU usage",
"redis_monitor.chart.memory": "Memory overhead",
"redis_monitor.chart.qps": "Request throughput (QPS)",
"redis_monitor.message.fetch_failed": "Failed to fetch Redis info: {{detail}}",
"redis_monitor.metric.blocked_clients": "Blocked: {{value}}",
"redis_monitor.metric.clients": "Clients",
"redis_monitor.metric.days": "Days: {{value}}",
"redis_monitor.metric.memory_peak": "Peak: {{value}}",
"redis_monitor.metric.memory_used": "Used memory",
"redis_monitor.metric.ops": "Throughput (OPS)",
"redis_monitor.metric.uptime": "Uptime",
"redis_monitor.series.clients": "Clients",
"redis_monitor.series.rss_memory": "RSS memory",
"redis_monitor.series.system": "System",
"redis_monitor.series.total_keys": "Total Keys",
"redis_monitor.series.used_memory": "Used memory",
"redis_monitor.series.user": "User",
"redis_monitor.server_details.title": "Detailed server parameters",
"redis_monitor.state.connection_not_found": "Connection not found",
"redis_monitor.title.instance": "Redis instance monitor",
"redis_viewer.action.add_field": "Add field",
"redis_viewer.action.add_list_head": "Push to head",
"redis_viewer.action.add_list_tail": "Push to tail",
"redis_viewer.action.add_member": "Add member",
"redis_viewer.action.add_stream_entry": "Add entry",
"redis_viewer.action.change_import_file": "Change import file",
"redis_viewer.action.clear_group_selection": "Clear selection",
"redis_viewer.action.clear_selection": "Clear selection",
"redis_viewer.action.copy": "Copy",
"redis_viewer.action.copy_key_name": "Copy Key name",
"redis_viewer.action.copy_value": "Copy value",
"redis_viewer.action.delete_key": "Delete Key",
"redis_viewer.action.delete_selected": "Delete selected ({{count}})",
"redis_viewer.action.edit": "Edit",
"redis_viewer.action.export_all": "Export all",
"redis_viewer.action.export_selected": "Export selected",
"redis_viewer.action.import": "Import",
"redis_viewer.action.load_all": "Load all",
"redis_viewer.action.load_more": "Load more",
"redis_viewer.action.new_key": "New",
"redis_viewer.action.refresh": "Refresh",
"redis_viewer.action.rename_key": "Rename Key",
"redis_viewer.action.select_all_import_keys": "Select all import Keys",
"redis_viewer.action.select_all_loaded": "Select all loaded",
"redis_viewer.action.select_group": "Select",
"redis_viewer.action.select_import_file": "Select import file",
"redis_viewer.action.set_ttl": "Set TTL",
"redis_viewer.aria.collapse_group": "Collapse group",
"redis_viewer.aria.expand_group": "Expand group",
"redis_viewer.confirm.delete_field": "Delete this field?",
"redis_viewer.confirm.delete_key": "Delete Key \"{{key}}\"?",
"redis_viewer.confirm.delete_member": "Delete this member?",
"redis_viewer.confirm.delete_selected": "Delete the selected {{count}} Keys?",
"redis_viewer.confirm.delete_stream_entry": "Delete this Stream entry?",
"redis_viewer.field.field_name": "Field name",
"redis_viewer.field.fields_json": "Fields JSON:",
"redis_viewer.field.import_conflict_mode": "Existing Key handling",
"redis_viewer.field.import_file": "Import file",
"redis_viewer.field.import_keys": "Keys to import",
"redis_viewer.field.key": "Key",
"redis_viewer.field.member": "Member:",
"redis_viewer.field.new_key_name": "New Key name",
"redis_viewer.field.new_score": "New score:",
"redis_viewer.field.score": "Score:",
"redis_viewer.field.stream_id": "ID (optional, default *):",
"redis_viewer.field.ttl_seconds": "TTL (seconds)",
"redis_viewer.field.value": "Value",
"redis_viewer.help.ttl_forever": "-1 means no expiration",
"redis_viewer.hint.binary_readonly": "Binary data cannot be edited",
"redis_viewer.hint.switch_auto_to_edit": "Switch to Auto mode to edit",
"redis_viewer.label.encoding": "Encoding: {{encoding}}",
"redis_viewer.label.import_database": "Source DB: db{{database}}",
"redis_viewer.label.import_selection": "Selected {{selected}} / {{total}} Keys",
"redis_viewer.label.keys_count": "Loaded {{count}} Keys",
"redis_viewer.label.length": "Length: {{count}}",
"redis_viewer.label.node_count": "{{count}} nodes",
"redis_viewer.label.original_key": "Original Key: {{key}}",
"redis_viewer.message.add_failed": "Add failed: {{detail}}",
"redis_viewer.message.add_success": "Added",
"redis_viewer.message.add_success_with_id": "Added{{id}}",
"redis_viewer.message.copied": "Copied",
"redis_viewer.message.copy_failed": "Copy failed",
"redis_viewer.message.create_failed": "Create failed: {{detail}}",
"redis_viewer.message.create_success": "Created",
"redis_viewer.message.delete_failed": "Delete failed: {{detail}}",
"redis_viewer.message.delete_success": "Deleted",
"redis_viewer.message.deleted_keys": "Deleted {{count}} Keys",
"redis_viewer.message.export_failed": "Export failed: {{detail}}",
"redis_viewer.message.export_selection_required": "Select at least one Key to export",
"redis_viewer.message.export_success": "Exported {{count}} Keys",
"redis_viewer.message.fields_json_invalid": "Fields JSON is invalid",
"redis_viewer.message.fields_must_be_json_object": "Fields must be a JSON object",
"redis_viewer.message.fields_required": "Provide at least one field",
"redis_viewer.message.import_failed": "Import failed: {{detail}}",
"redis_viewer.message.import_file_required": "Select an import file first",
"redis_viewer.message.import_selection_required": "Select at least one Key to import",
"redis_viewer.message.import_summary": "Imported {{imported}} Keys, skipped {{skipped}} existing Keys",
"redis_viewer.message.key_check_failed": "Failed to check target Key: {{detail}}",
"redis_viewer.message.key_missing_removed": "Key no longer exists or has expired, and was removed from the list",
"redis_viewer.message.key_name_copied": "Key name copied",
"redis_viewer.message.load_keys_failed": "Failed to load Keys: {{detail}}",
"redis_viewer.message.new_key_name_required": "Enter the new Key name",
"redis_viewer.message.rename_failed": "Rename failed: {{detail}}",
"redis_viewer.message.rename_same_key": "The new Key name must differ from the original",
"redis_viewer.message.rename_success": "Key renamed",
"redis_viewer.message.save_failed": "Save failed: {{detail}}",
"redis_viewer.message.save_success": "Saved",
"redis_viewer.message.set_failed": "Set failed: {{detail}}",
"redis_viewer.message.stream_entry_not_deleted": "No Stream entry was deleted; it may no longer exist",
"redis_viewer.message.target_key_exists": "Target Key already exists: {{key}}",
"redis_viewer.message.ttl_set_success": "TTL updated",
"redis_viewer.message.update_failed": "Update failed: {{detail}}",
"redis_viewer.message.update_success": "Updated",
"redis_viewer.message.value_load_failed": "Failed to get value: {{detail}}",
"redis_viewer.modal.add_element": "Add element",
"redis_viewer.modal.add_element_head": "Add element to head",
"redis_viewer.modal.add_field": "Add field",
"redis_viewer.modal.add_member": "Add member",
"redis_viewer.modal.add_stream_entry": "Add Stream entry",
"redis_viewer.modal.edit_field": "Edit field: {{field}}",
"redis_viewer.modal.edit_index": "Edit index {{index}}",
"redis_viewer.modal.edit_value": "Edit value",
"redis_viewer.modal.import_keys": "Import Redis Keys",
"redis_viewer.modal.new_key": "New Key",
"redis_viewer.modal.rename_key": "Rename Key",
"redis_viewer.modal.set_ttl": "Set TTL",
"redis_viewer.modal.update_score": "Update score",
"redis_viewer.notice.large_keyspace_mode": "Large keyspace performance mode is enabled. Node rendering is simplified and up to {{count}} expanded groups are kept.",
"redis_viewer.option.import_overwrite": "Overwrite existing Keys",
"redis_viewer.option.import_skip_existing": "Skip existing Keys",
"redis_viewer.placeholder.key_name": "Key name",
"redis_viewer.placeholder.member_value": "Enter member value",
"redis_viewer.placeholder.new_element_value": "Enter new element value",
"redis_viewer.placeholder.new_key_name": "new:key:name",
"redis_viewer.placeholder.new_member_value": "Enter new member value",
"redis_viewer.placeholder.search_exact": "Enter full Key or namespace for exact search",
"redis_viewer.placeholder.search_fuzzy": "Search Keys (fuzzy match)",
"redis_viewer.placeholder.stream_id": "For example: * or 1723110000000-0",
"redis_viewer.placeholder.value": "Value",
"redis_viewer.search.exact": "Exact",
"redis_viewer.search.fuzzy": "Fuzzy",
"redis_viewer.state.connection_not_found": "Connection not found",
"redis_viewer.state.empty_selection": "Select a Key to view details",
"redis_viewer.state.import_preview_empty": "Select a Redis export file to preview and choose Keys to import",
"redis_viewer.table.action": "Actions",
"redis_viewer.table.field": "Field",
"redis_viewer.table.fields": "Fields",
"redis_viewer.table.index": "Index",
"redis_viewer.table.member": "Member",
"redis_viewer.table.score": "Score",
"redis_viewer.table.value": "Value",
"redis_viewer.title.active_key": "Active Key",
"redis_viewer.title.key_explorer": "Key Explorer",
"redis_viewer.title.namespace_key": "Namespace / Key",
"redis_viewer.title.type_ttl": "Type / TTL",
"redis_viewer.tooltip.copy_fields_json": "Copy fields JSON",
"redis_viewer.tooltip.copy_id": "Copy ID",
"redis_viewer.tooltip.copy_key_name": "Copy Key name",
"redis_viewer.tooltip.copy_value": "Copy value",
"redis_viewer.tooltip.resize_panels": "Drag to resize",
"redis_viewer.topology.cluster": "Cluster",
"redis_viewer.topology.sentinel": "Sentinel",
"redis_viewer.topology.single": "Single",
"redis_viewer.ttl.days_hours": "{{days}}d {{hours}}h",
"redis_viewer.ttl.expired": "Expired",
"redis_viewer.ttl.forever": "Persistent",
"redis_viewer.ttl.hours_minutes": "{{hours}}h {{minutes}}m",
"redis_viewer.ttl.minutes_seconds": "{{minutes}}m {{seconds}}s",
"redis_viewer.ttl.seconds": "{{seconds}}s",
"redis_viewer.validation.key_required": "Enter a Key",
"redis_viewer.validation.new_key_name_required": "Enter the new Key name",
"redis_viewer.validation.value_required": "Enter a value",
"redis_viewer.view.auto": "Auto",
"redis_viewer.view.hex": "Hex",
"redis_viewer.view.text": "Raw text",
"redis_viewer.view.title": "View mode",
"saved_query.default_name": "Query {{index}}",
"saved_query.error.missing_context": "Saved query is missing SQL, connection, or database context",
"security_update.action.open_ai_settings": "AI Settings",
"security_update.action.open_connection": "Open Connection",
"security_update.action.open_proxy_settings": "Proxy Settings",
"security_update.action.retry_update": "Check Again",
"security_update.action.view_details": "View Details",
"security_update.backend.issue.ai_provider.migration_required": "AI provider configuration is still saved in the current app configuration. After the security update completes, it will be moved to the new secure storage.",
"security_update.backend.issue.ai_provider.missing_or_resave": "AI provider configuration no longer exists or still needs to be saved again before the security update can be completed.",
"security_update.backend.issue.ai_provider.secret_missing": "AI provider configuration needs more information before the security update can be completed.",
"security_update.backend.issue.connection.incomplete": "Connection configuration still needs more information before the security update can be completed.",
"security_update.backend.issue.connection.missing_or_resave": "Connection configuration no longer exists or still needs to be saved again before the security update can be completed.",
"security_update.backend.issue.connection.password_missing": "Connection password is missing. Save it again before continuing.",
"security_update.backend.issue.global_proxy.missing_or_resave": "Global proxy settings no longer exist or still need to be saved again before the security update can be completed.",
"security_update.backend.issue.global_proxy.password_incomplete": "Global proxy password still needs more information before the security update can be completed.",
"security_update.backend.issue.global_proxy.password_missing": "Global proxy password is missing. Save it again before continuing.",
"security_update.backend.issue.global_proxy.title": "Global Proxy",
"security_update.backend.issue.system.message": "The current environment could not complete this security update. Try again later.",
"security_update.backend.issue.system.title": "Security update was not completed",
"security_update.banner.action.restart_update": "Restart Update",
"security_update.banner.action.retry_check": "Check Again",
"security_update.banner.action.start_now": "Update Now",
"security_update.banner.action.view_details": "View Details",
"security_update.banner.title": "Saved configurations can be securely updated",
"security_update.bootstrap.legacy.connection.message": "This connection is still saved in the current app's local configuration. After the security update completes, it will be moved to the new secure storage.",
"security_update.bootstrap.legacy.global_proxy.message": "Global proxy settings are still saved in the current app's local configuration. After the security update completes, they will be moved to the new secure storage.",
"security_update.bootstrap.legacy.global_proxy.title": "Global Proxy",
"security_update.error.capability_unavailable": "Security update capability is unavailable",
"security_update.intro.action.details": "View Details",
"security_update.intro.action.later": "Remind Me Later",
"security_update.intro.action.start_now": "Update Now",
"security_update.intro.description": "To move saved connections, proxy settings, and related service configuration to the new secure storage, this update needs to run once locally. A local backup is created before the update. If it does not finish, the system keeps the currently usable configuration and you can continue later.",
"security_update.intro.subtitle": "Complete a local configuration update before using the new secure storage.",
"security_update.intro.title": "Saved Configuration Security Update",
"security_update.item_status.failed": "Failed",
"security_update.item_status.needs_attention": "Needs Attention",
"security_update.item_status.pending": "Pending",
"security_update.item_status.skipped": "Skipped",
"security_update.item_status.updated": "Updated",
"security_update.progress.default_detail": "The currently usable configuration will be kept during the update. Please wait.",
"security_update.repair.warning.connection_not_found": "The matching connection was not found. Check the latest status first.",
"security_update.settings.action.close": "Close",
"security_update.settings.action.restart_update": "Restart Update",
"security_update.settings.action.retry_check": "Check Again",
"security_update.settings.action.start": "Start Update",
"security_update.settings.backup_path": "Backup location: ",
"security_update.settings.current_status": "Current status: {{status}}",
"security_update.settings.empty_pending": "No pending items",
"security_update.settings.item_default_message": "This item needs more attention before the security update can be completed.",
"security_update.settings.item_severity": "Level: {{severity}}",
"security_update.settings.item_status": "Status: {{status}}",
"security_update.settings.last_error": "Latest error: ",
"security_update.settings.pending_list": "Pending Items",
"security_update.settings.recent_result": "Latest Result",
"security_update.settings.scope_title": "Affected Scope",
"security_update.settings.subtitle": "Manage the security update status and pending items for saved configurations.",
"security_update.settings.summary.failed": "Failed",
"security_update.settings.summary.pending": "Pending",
"security_update.settings.summary.skipped": "Skipped",
"security_update.settings.summary.total": "Total",
"security_update.settings.summary.updated": "Updated",
"security_update.settings.title": "Security Update",
"security_update.severity.high": "High Risk",
"security_update.severity.low": "Low Risk",
"security_update.severity.medium": "Medium Risk",
"security_update.status.completed.description": "Saved configurations have completed the security update.",
"security_update.status.completed.label": "Completed",
"security_update.status.in_progress.description": "Checking and updating secure storage for saved configurations.",
"security_update.status.in_progress.label": "Updating",
"security_update.status.needs_attention.description": "The update is not complete yet. A few configurations need your attention.",
"security_update.status.needs_attention.label": "Needs Attention",
"security_update.status.not_detected.description": "No security update needs attention right now.",
"security_update.status.not_detected.label": "Not Detected",
"security_update.status.pending.description": "A security update is available. You can start now or continue later.",
"security_update.status.pending.label": "Pending",
"security_update.status.postponed.description": "This security update has been postponed. The currently usable configuration is still kept.",
"security_update.status.postponed.label": "Pending",
"security_update.status.rolled_back.description": "This update did not complete. The system kept the currently usable configuration.",
"security_update.status.rolled_back.label": "Rolled Back",
"settings.language.description": "Choose the display language for GoNavi.",
"settings.language.english": "English",
"settings.language.follow_system": "Follow system",
"settings.language.german": "Deutsch",
"settings.language.japanese": "日本語",
"settings.language.restart_hint": "Some editors and system-level menus may require reopening the window to fully apply.",
"settings.language.russian": "Русский",
"settings.language.simplified_chinese": "Simplified Chinese",
"settings.language.title": "Language",
"settings.language.traditional_chinese": "繁體中文",
"settings.title": "Settings",
"sidebar.action.backup_database_count": "Back up databases ({{count}})",
"sidebar.action.backup_schema_data": "Back up (schema + data)",
"sidebar.action.batch_databases": "Batch databases",
"sidebar.action.batch_tables": "Batch tables",
"sidebar.action.cancel": "Cancel",
"sidebar.action.clear_selection": "Deselect all",
"sidebar.action.clear_tables": "Clear tables",
"sidebar.action.close": "Close",
"sidebar.action.continue": "Continue",
"sidebar.action.delete": "Delete",
"sidebar.action.delete_database_count": "Delete databases ({{count}})",
"sidebar.action.delete_tables": "Delete tables",
"sidebar.action.export_data_only": "Data only (INSERT)",
"sidebar.action.export_database_schema_count": "Export database schemas ({{count}})",
"sidebar.action.export_schema": "Export schema",
"sidebar.action.invert_selection": "Invert selection",
"sidebar.action.locate_current_tab": "Locate current tab",
"sidebar.action.locate_current_table": "Locate current open table",
"sidebar.action.new_group": "New group",
"sidebar.action.pin_table": "Pin table",
"sidebar.action.select_all": "Select all",
"sidebar.action.unpin_table": "Unpin table",
"sidebar.active_connection.actions": "Connection actions",
"sidebar.active_connection.current_host_database": "Current host and database",
"sidebar.active_connection.no_database_selected": "No database selected",
"sidebar.active_connection.no_host_selected": "No host selected",
"sidebar.ai_prompt.explain.detail": "Focus on field meanings, primary keys/indexes, potential relationships, typical query scenarios, and risks.",
"sidebar.ai_prompt.explain.intro": "Explain the structure and business meaning of table {{table}}.",
"sidebar.ai_prompt.query.detail": "Include: a data preview query, a query filtered by key fields, and one aggregation or statistics query.",
"sidebar.ai_prompt.query.intro": "Generate 3 common SQL queries for table {{table}}.",
"sidebar.aria.switch_connection": "Switch to connection {{name}}",
"sidebar.badge.recommended": "Recommended",
"sidebar.batch.filtered_count": "Filtered {{filtered}} / {{total}} objects",
"sidebar.batch.group.tables": "Tables",
"sidebar.batch.group.views": "Views",
"sidebar.batch.no_matching_objects": "No matching objects",
"sidebar.batch.selected_databases": "Selected {{selected}} / {{total}} databases",
"sidebar.batch.selected_objects": "Selected {{selected}} / {{total}} objects",
"sidebar.batch_databases": "Batch database operations",
"sidebar.batch_tables": "Batch table operations",
"sidebar.command_search.action.ask_ai.title": "Ask AI",
"sidebar.command_search.action.new_connection.meta": "Create a database, runtime, or other data source connection",
"sidebar.command_search.action.new_connection.title": "New data source",
"sidebar.command_search.action.new_query.meta": "Open a new SQL editor tab",
"sidebar.command_search.action.open_ai.meta": "Let AI analyze the current database context",
"sidebar.command_search.action.open_ai.title": "Open AI data insights",
"sidebar.command_search.action.open_sql_log.meta": "Open the recent execution history panel",
"sidebar.command_search.action.open_sql_log.title": "View SQL execution log",
"sidebar.command_search.empty.ai": "Type a question after \"?\" and press Enter to send it to the AI panel.",
"sidebar.command_search.empty.default": "No matches. Type @table to search table objects only, or type ?question to ask AI.",
"sidebar.command_search.empty.object": "No matching tables, views, or materialized views.",
"sidebar.command_search.footer.ask_ai": "Send to AI",
"sidebar.command_search.footer.navigate": "Navigate",
"sidebar.command_search.footer.object_only": "Table objects only",
"sidebar.command_search.footer.select": "Select",
"sidebar.command_search.label": "Search tables, connections, actions",
"sidebar.command_search.no_filter_content": "No filter text",
"sidebar.command_search.no_synced_filter": "No synced sidebar filter",
"sidebar.command_search.object_kind.all": "All",
"sidebar.command_search.object_kind.events": "Events",
"sidebar.command_search.object_kind.filter_aria": "Object filters",
"sidebar.command_search.object_kind.packages": "Packages",
"sidebar.command_search.object_kind.routines": "Routines",
"sidebar.command_search.object_kind.sequences": "Sequences",
"sidebar.command_search.object_kind.tables": "Tables",
"sidebar.command_search.object_kind.views": "Views",
"sidebar.command_search.placeholder": "Search tables, connections, actions... or ask AI",
"sidebar.command_search.recent_sql_fallback": "SQL record",
"sidebar.command_search.reset_filter": "Reset sidebar filter",
"sidebar.command_search.scope.compact_smart": "Smart",
"sidebar.command_search.scope.database": "Database",
"sidebar.command_search.scope.description": "\"Smart\" automatically matches the most likely results; manual mode lets you combine filter dimensions.",
"sidebar.command_search.scope.host": "Host",
"sidebar.command_search.scope.manual_help": "Smart is mutually exclusive with other options. If you know you need objects, databases, Host, or tags, switch to manual scope to reduce noisy results.",
"sidebar.command_search.scope.manual_title": "Manual scope",
"sidebar.command_search.scope.multi_select": "Multiple selections supported",
"sidebar.command_search.scope.object": "Table objects",
"sidebar.command_search.scope.recommended": "Recommended",
"sidebar.command_search.scope.smart": "Smart",
"sidebar.command_search.scope.smart_help": "Best for everyday search; automatically covers common dimensions such as names, databases, Host, and tags.",
"sidebar.command_search.scope.summary_smart": "Smart",
"sidebar.command_search.scope.tag": "Tags",
"sidebar.command_search.scope.title": "Search scope",
"sidebar.command_search.scope.tooltip": "Search scope: {{scope}}",
"sidebar.command_search.section.actions": "Actions",
"sidebar.command_search.section.ai": "AI · Ask",
"sidebar.command_search.section.goto": "Go to",
"sidebar.command_search.section.recent": "Recent queries",
"sidebar.command_search.sync_to_filter_aria": "Sync to left-side filter",
"sidebar.command_search.sync_to_filter_tooltip": "Sync input to the left-side filter",
"sidebar.copy_object_name.copied": "{{label}} copied to clipboard",
"sidebar.copy_object_name.empty": "{{label}} is empty and cannot be copied",
"sidebar.copy_object_name.failed": "Failed to copy {{label}}: {{error}}",
"sidebar.copy_object_name.label.event": "Event name",
"sidebar.copy_object_name.label.materialized_view": "Materialized view name",
"sidebar.copy_object_name.label.package": "Package name",
"sidebar.copy_object_name.label.sequence": "Sequence name",
"sidebar.copy_object_name.label.table": "Table name",
"sidebar.copy_object_name.label.view": "View name",
"sidebar.error.unknown": "Unknown error",
"sidebar.external_sql.directory_fallback": "SQL directory",
"sidebar.external_sql.root": "External SQL files",
"sidebar.external_sql_modal.action.create": "Create",
"sidebar.external_sql_modal.action.rename": "Rename",
"sidebar.external_sql_modal.field.directory_name": "Directory name",
"sidebar.external_sql_modal.field.sql_file_name": "SQL file name",
"sidebar.external_sql_modal.help.directory": "This directory only appears in the external SQL tree; non-SQL files still stay hidden",
"sidebar.external_sql_modal.help.sql_file": "The .sql suffix is added automatically when omitted",
"sidebar.external_sql_modal.placeholder.directory_name": "e.g. reports",
"sidebar.external_sql_modal.placeholder.sql_file_name": "e.g. report.sql",
"sidebar.external_sql_modal.title.create_directory": "New directory",
"sidebar.external_sql_modal.title.create_file": "New SQL file",
"sidebar.external_sql_modal.title.rename_directory": "Rename directory",
"sidebar.external_sql_modal.title.rename_file": "Rename SQL file",
"sidebar.external_sql_modal.validation.directory_name_no_separator": "Directory name cannot contain path separators",
"sidebar.external_sql_modal.validation.directory_name_required": "Enter a directory name",
"sidebar.external_sql_modal.validation.sql_file_name_no_separator": "File name cannot contain path separators",
"sidebar.external_sql_modal.validation.sql_file_name_required": "Enter a SQL file name",
"sidebar.field.database_name": "Database name",
"sidebar.field.new_database_name": "Replacement database name",
"sidebar.field.new_table_name": "Replacement table name",
"sidebar.field.new_view_name": "Replacement view name",
"sidebar.field.schema_name": "Schema name",
"sidebar.field.select_connection": "Select connection",
"sidebar.field.select_connections": "Select connections",
"sidebar.field.select_database": "Select database",
"sidebar.field.tag_name": "Group name",
"sidebar.filter.all_objects": "All objects",
"sidebar.filter.scope_all": "Apply selection to: all objects",
"sidebar.filter.scope_filtered": "Apply selection to: current filtered results",
"sidebar.filter.tables_only": "Tables only",
"sidebar.filter.views_only": "Views only",
"sidebar.jvm.action.diagnostic": "Diagnostic enhancement",
"sidebar.jvm.action.monitoring": "Continuous monitoring",
"sidebar.jvm.tab.audit": "JVM audit",
"sidebar.jvm.tab.diagnostic": "JVM diagnostics",
"sidebar.jvm.tab.monitoring": "JVM monitoring",
"sidebar.jvm.tab.overview": "JVM overview",
"sidebar.jvm.tab.resource": "JVM resources",
"sidebar.locate.object.materialized_view": "Materialized view",
"sidebar.locate.object.routine": "Function/procedure",
"sidebar.locate.object.table": "Table",
"sidebar.locate.object.trigger": "Trigger",
"sidebar.locate.object.view": "View",
"sidebar.menu.add_sql_directory": "Add SQL directory",
"sidebar.menu.backup_all_tables_sql": "Back up all tables (schema + data SQL)",
"sidebar.menu.backup_current_schema_sql": "Back up all tables in current schema (schema and data SQL)",
"sidebar.menu.backup_table_sql": "Back up table (SQL)",
"sidebar.menu.bind_to_connection": "Bind to connection",
"sidebar.menu.browse_keys": "Browse keys",
"sidebar.menu.browse_materialized_view_data": "Browse materialized view data",
"sidebar.menu.browse_view_data": "Browse view data",
"sidebar.menu.clear_table": "Clear table",
"sidebar.menu.close_database": "Close database",
"sidebar.menu.copy_object_name": "Copy name",
"sidebar.menu.copy_table_name": "Copy table name",
"sidebar.menu.copy_table_structure": "Copy table structure",
"sidebar.menu.create_database": "New database",
"sidebar.menu.create_event": "New event",
"sidebar.menu.create_function": "New function",
"sidebar.menu.create_procedure": "New procedure",
"sidebar.menu.create_table": "New table",
"sidebar.menu.create_view": "New view",
"sidebar.menu.danger_operations": "Dangerous operations",
"sidebar.menu.delete_connection": "Delete connection",
"sidebar.menu.delete_database": "Delete database",
"sidebar.menu.delete_local_directory": "Delete local directory",
"sidebar.menu.delete_query": "Delete query",
"sidebar.menu.delete_routine": "Delete {{type}}",
"sidebar.menu.delete_schema": "Delete schema",
"sidebar.menu.delete_sql_directory": "Delete directory",
"sidebar.menu.delete_sql_file": "Delete SQL file",
"sidebar.menu.delete_table": "Delete table",
"sidebar.menu.delete_tag": "Delete group",
"sidebar.menu.delete_view": "Delete view",
"sidebar.menu.design_table": "Design table",
"sidebar.menu.disconnect": "Disconnect",
"sidebar.menu.duplicate_connection": "Duplicate connection",
"sidebar.menu.edit_connection": "Edit connection",
"sidebar.menu.edit_definition": "Edit definition",
"sidebar.menu.edit_schema": "Edit schema",
"sidebar.menu.edit_tag": "Edit group",
"sidebar.menu.edit_view": "Edit view",
"sidebar.menu.export_all_table_schema_sql": "Export all table schemas (SQL)",
"sidebar.menu.export_csv": "Export CSV",
"sidebar.menu.export_current_schema_sql": "Export current schema table structures (SQL)",
"sidebar.menu.export_html": "Export HTML",
"sidebar.menu.export_json": "Export JSON",
"sidebar.menu.export_markdown": "Export Markdown",
"sidebar.menu.export_table_data": "Export table data",
"sidebar.menu.export_xlsx": "Export Excel (XLSX)",
"sidebar.menu.materialized_view_definition": "Materialized view definition",
"sidebar.menu.move_out_of_tag": "Remove from group",
"sidebar.menu.move_to_tag": "Move to group",
"sidebar.menu.new_command_window": "New command window",
"sidebar.menu.new_query": "New query",
"sidebar.menu.new_sql_directory": "New directory",
"sidebar.menu.new_sql_directory_in_directory": "New directory in this directory",
"sidebar.menu.new_sql_file": "New SQL file",
"sidebar.menu.new_sql_file_in_directory": "New SQL file in this directory",
"sidebar.menu.new_table": "New table",
"sidebar.menu.open_query": "Open query",
"sidebar.menu.open_sql_file": "Open SQL file",
"sidebar.menu.redis_monitor": "Redis instance monitor",
"sidebar.menu.refresh": "Refresh",
"sidebar.menu.refresh_directory": "Refresh directory",
"sidebar.menu.remove_directory": "Remove directory",
"sidebar.menu.rename_database": "Rename database",
"sidebar.menu.rename_query": "Rename query",
"sidebar.menu.rename_sql_directory": "Rename directory",
"sidebar.menu.rename_sql_file": "Rename SQL file",
"sidebar.menu.rename_table": "Rename table",
"sidebar.menu.rename_view": "Rename view",
"sidebar.menu.sort_by_frequency": "Sort by usage frequency",
"sidebar.menu.sort_by_name": "Sort by name",
"sidebar.menu.table_structure": "Table structure",
"sidebar.menu.truncate_table": "Truncate table",
"sidebar.menu.view_definition": "View definition",
"sidebar.menu.view_object_definition": "View definition",
"sidebar.menu.view_routine_definition": "View definition",
"sidebar.message.add_sql_directory_database_required": "Select a database before adding an SQL directory.",
"sidebar.message.ai_table_context_missing": "The current table is missing connection context and cannot be sent to AI.",
"sidebar.message.backing_up_database": "Backing up {{database}}...",
"sidebar.message.backing_up_selected_objects": "Backing up {{count}} selected objects...",
"sidebar.message.backing_up_selected_tables": "Backing up {{count}} selected tables...",
"sidebar.message.clear_failed": "Clear failed: {{error}}",
"sidebar.message.clear_success": "Clear completed.",
"sidebar.message.clearing_selected_tables": "Clearing {{count}} selected tables...",
"sidebar.message.connection_config_not_found": "Connection configuration was not found.",
"sidebar.message.connection_deleted": "Connection deleted.",
"sidebar.message.connection_failed": "Connection failed: {{error}}",
"sidebar.message.connection_release_failed": "Failed to release connection",
"sidebar.message.connection_release_failed_from_sidebar": "The connection was disconnected from the sidebar, but backend connection release failed",
"sidebar.message.create_failed": "Create failed: {{error}}",
"sidebar.message.create_sql_directory_failed": "Failed to create directory: {{error}}",
"sidebar.message.create_sql_file_failed": "Failed to create SQL file: {{error}}",
"sidebar.message.database_closed": "Database closed.",
"sidebar.message.database_created": "Database created.",
"sidebar.message.database_deleted": "Database deleted.",
"sidebar.message.database_export_failed": "Failed to export {{database}}: {{error}}",
"sidebar.message.database_export_success": "Exported {{database}}.",
"sidebar.message.database_name_required": "Database name is required.",
"sidebar.message.database_name_unchanged": "Database name is unchanged.",
"sidebar.message.database_renamed": "Database renamed.",
"sidebar.message.delete_connection_backend_unavailable": "Delete connection is not available in this build.",
"sidebar.message.delete_connection_failed": "Failed to delete connection.",
"sidebar.message.delete_databases_failed": "Failed to delete database {{database}}: {{error}}",
"sidebar.message.delete_databases_success": "Deleted {{count}} databases.",
"sidebar.message.delete_failed": "Delete failed: {{error}}",
"sidebar.message.delete_sql_directory_failed": "Failed to delete SQL directory: {{error}}",
"sidebar.message.delete_sql_file_failed": "Failed to delete SQL file: {{error}}",
"sidebar.message.delete_tables_failed": "Failed to delete table {{table}}: {{error}}",
"sidebar.message.delete_tables_success": "Deleted {{count}} tables.",
"sidebar.message.deleting_selected_databases": "Deleting {{count}} selected databases...",
"sidebar.message.deleting_selected_tables": "Deleting {{count}} selected tables...",
"sidebar.message.disconnected": "Disconnected.",
"sidebar.message.duplicate_backend_unavailable": "Duplicate connection is not available in this build.",
"sidebar.message.duplicate_empty_result": "The duplicated connection was not returned.",
"sidebar.message.duplicate_failed": "Failed to duplicate connection.",
"sidebar.message.duplicated_connection": "Duplicated {{name}}.",
"sidebar.message.export_failed": "Export failed: {{error}}",
"sidebar.message.export_success": "Export succeeded.",
"sidebar.message.export_success_skipped_views": "Export succeeded. {{count}} views were skipped for data export.",
"sidebar.message.export_tables_same_database_required": "Select tables from the same database.",
"sidebar.message.exporting_database_backup": "Backing up {{database}} (schema and data)...",
"sidebar.message.exporting_database_schema": "Exporting schema for {{database}}...",
"sidebar.message.exporting_schema_backup": "Backing up schema {{schema}} (structure and data)...",
"sidebar.message.exporting_schema_structure": "Exporting structure for schema {{schema}}...",
"sidebar.message.exporting_selected_object_data": "Exporting {{format}} data for {{count}} selected objects...",
"sidebar.message.exporting_selected_object_schema": "Exporting schema for {{count}} selected objects...",
"sidebar.message.exporting_selected_table_schema": "Exporting schema for {{count}} selected tables...",
"sidebar.message.exporting_table_format": "Exporting {{table}} as {{format}}...",
"sidebar.message.external_sql_directory_added": "SQL directory added.",
"sidebar.message.external_sql_directory_context_missing": "SQL directory context is missing.",
"sidebar.message.external_sql_directory_delete_target_missing": "Could not find the SQL directory to delete.",
"sidebar.message.external_sql_directory_not_found": "SQL directory was not found.",
"sidebar.message.external_sql_directory_parent_missing": "Could not find the location for creating a directory.",
"sidebar.message.external_sql_directory_read_failed": "Failed to read SQL directory {{name}}: {{error}}",
"sidebar.message.external_sql_directory_refreshed": "SQL directory refreshed.",
"sidebar.message.external_sql_directory_removed": "SQL directory removed.",
"sidebar.message.external_sql_directory_rename_sync_failed": "Directory was renamed, but the external SQL directory list could not be synchronized. Add the directory again.",
"sidebar.message.external_sql_directory_rename_target_missing": "Could not find the directory to rename.",
"sidebar.message.external_sql_file_delete_target_missing": "Could not find the SQL file to delete.",
"sidebar.message.external_sql_file_parent_missing": "Could not find the directory for creating an SQL file.",
"sidebar.message.external_sql_file_rename_target_missing": "Could not find the SQL file to rename.",
"sidebar.message.jvm_provider_probe_exception": "JVM provider probe failed: {{error}}",
"sidebar.message.jvm_provider_probe_exception_with_diagnostic": "JVM provider probe exception: {{error}}. Diagnostic enhancement entry remains available.",
"sidebar.message.jvm_provider_probe_failed": "Failed to probe JVM providers: {{error}}",
"sidebar.message.jvm_provider_probe_failed_with_diagnostic": "JVM provider probe failed: {{error}}. Diagnostic enhancement entry remains available.",
"sidebar.message.jvm_resources_backend_unavailable": "JVM resource browsing is not available in this build.",
"sidebar.message.load_database_list_failed": "Failed to load databases: {{error}}",
"sidebar.message.load_jvm_resources_failed": "Failed to load JVM resources: {{error}}",
"sidebar.message.load_table_list_failed": "Failed to load tables: {{error}}",
"sidebar.message.load_tables_failed": "Failed to load objects: {{error}}",
"sidebar.message.locate_connection_not_found_for_object": "The connection for the current object was not found",
"sidebar.message.locate_connection_not_in_tree": "Current connection was not found in the left tree",
"sidebar.message.locate_current_tab_unavailable": "The current tab has no locatable content",
"sidebar.message.locate_current_table_unavailable": "The current tab has no table to locate",
"sidebar.message.locate_database_loading": "Database node is still loading: {{database}}. Try again later",
"sidebar.message.locate_database_not_found": "Database was not found in the left tree: {{database}}",
"sidebar.message.locate_external_sql_file_not_found": "SQL file was not found in external SQL directories: {{path}}",
"sidebar.message.locate_object_loading": "Database objects for {{object}} are still loading in {{database}}. Try again later",
"sidebar.message.locate_object_not_found": "{{object}} was not found in the left tree: {{name}}. Refresh the database node and try again",
"sidebar.message.message_publish_success": "Test message sent to {{destination}}",
"sidebar.message.message_publish_success_with_count": "Test message sent to {{destination}} (submitted {{count}})",
"sidebar.message.message_publish_target_fallback": "target",
"sidebar.message.message_publish_unsupported": "The current object does not support test message sending",
"sidebar.message.no_visible_databases": "No visible databases or schemas were returned. Check account permissions or refresh from the context menu.",
"sidebar.message.operation_create_failed": "Create failed: {{error}}",
"sidebar.message.operation_drop_failed": "Drop failed: {{error}}",
"sidebar.message.operation_rename_failed": "Rename failed: {{error}}",
"sidebar.message.read_file_failed": "Failed to read file: {{error}}",
"sidebar.message.read_sql_file_failed": "Failed to read SQL file: {{error}}",
"sidebar.message.rename_failed": "Rename failed: {{error}}",
"sidebar.message.rename_sql_directory_failed": "Failed to rename directory: {{error}}",
"sidebar.message.rename_sql_file_failed": "Failed to rename SQL file: {{error}}",
"sidebar.message.routine_deleted": "{{type}} deleted.",
"sidebar.message.saved_query_delete_failed": "Failed to delete query: {{error}}",
"sidebar.message.saved_query_deleted": "Query deleted.",
"sidebar.message.saved_query_name_unchanged": "Query name is unchanged.",
"sidebar.message.saved_query_rebind_failed": "Failed to bind query: {{error}}",
"sidebar.message.saved_query_rebind_success": "Query bound to {{name}}",
"sidebar.message.saved_query_rename_failed": "Failed to rename query: {{error}}",
"sidebar.message.saved_query_renamed": "Query renamed.",
"sidebar.message.schema_create_unsupported": "Schema creation is not supported for this database.",
"sidebar.message.schema_created": "Schema created.",
"sidebar.message.schema_deleted": "Schema deleted.",
"sidebar.message.schema_edit_unsupported": "This node does not support schema editing from this entry.",
"sidebar.message.schema_export_target_missing": "Target schema was not found, so export cannot continue.",
"sidebar.message.schema_name_unchanged": "Schema name is unchanged.",
"sidebar.message.schema_renamed": "Schema renamed.",
"sidebar.message.schema_target_delete_missing": "Target schema was not found, so it cannot be deleted.",
"sidebar.message.schema_target_edit_missing": "Target schema was not found, so it cannot be edited.",
"sidebar.message.schema_target_missing": "Select a database for schema creation.",
"sidebar.message.select_connection_or_database_first": "Select a connection or database first.",
"sidebar.message.select_database_required": "Select at least one database.",
"sidebar.message.select_host_before_large_sql_file": "Select a Host before running a large SQL file.",
"sidebar.message.select_object_required": "Select at least one object.",
"sidebar.message.select_sql_directory_failed": "Failed to select SQL directory: {{error}}",
"sidebar.message.select_table_required": "Select at least one table.",
"sidebar.message.sidebar_filter_reset": "Sidebar filter reset.",
"sidebar.message.sidebar_filter_sync_disabled": "Left-side filter sync disabled.",
"sidebar.message.sidebar_filter_sync_enabled": "Left-side filter sync enabled.",
"sidebar.message.sphinx_unsupported_objects": "This Sphinx instance does not expose these object capabilities: {{objects}}. Compatibility mode was applied.",
"sidebar.message.sql_directory_created": "Directory created.",
"sidebar.message.sql_directory_deleted": "SQL directory deleted.",
"sidebar.message.sql_directory_name_required": "Directory name is required.",
"sidebar.message.sql_directory_path_invalid": "SQL directory path is invalid.",
"sidebar.message.sql_directory_renamed": "Directory renamed.",
"sidebar.message.sql_file_context_incomplete": "SQL file context is incomplete.",
"sidebar.message.sql_file_created": "SQL file created.",
"sidebar.message.sql_file_deleted": "SQL file deleted.",
"sidebar.message.sql_file_name_required": "SQL file name is required.",
"sidebar.message.sql_file_path_incomplete": "SQL file path is incomplete, so it cannot be opened.",
"sidebar.message.sql_file_renamed": "SQL file renamed.",
"sidebar.message.table_data_action_failed": "{{action}} failed: {{error}}",
"sidebar.message.table_data_action_loading": "{{action}} {{table}}...",
"sidebar.message.table_data_action_success": "{{action}} completed.",
"sidebar.message.table_deleted": "Table deleted.",
"sidebar.message.table_export_target_missing": "Table name could not be identified, so export cannot continue.",
"sidebar.message.table_name_required": "Table name is required.",
"sidebar.message.table_name_unchanged": "Table name is unchanged.",
"sidebar.message.table_pinned": "Table pinned",
"sidebar.message.table_renamed": "Table renamed.",
"sidebar.message.table_structure_copied": "Table structure copied.",
"sidebar.message.table_unpinned": "Table unpinned",
"sidebar.message.view_deleted": "View deleted.",
"sidebar.message.view_name_required": "View name is required.",
"sidebar.message.view_name_unchanged": "View name is unchanged.",
"sidebar.message.view_renamed": "View renamed.",
"sidebar.message.visual_new_table_unsupported": "This data source does not support visual table creation yet.",
"sidebar.modal.batch_databases.description": "Export schemas by database in batches, or generate backups that include both schema and data.",
"sidebar.modal.batch_databases.selection_hint": "After a connection is selected, the list of batch-exportable databases under that connection will be loaded.",
"sidebar.modal.batch_databases.title": "Batch database operations",
"sidebar.modal.batch_tables.description": "Export schemas, data, or full backups for objects in batches.",
"sidebar.modal.batch_tables.selection_hint": "Select a connection and database first, then decide the export scope and target objects.",
"sidebar.modal.batch_tables.title": "Batch object operations",
"sidebar.modal.confirm_clear_selected_tables.content": "Clear data in selected objects under {{connection}} / {{database}}? This cannot be undone.",
"sidebar.modal.confirm_clear_selected_tables.title": "Confirm clear selected tables",
"sidebar.modal.confirm_delete.title": "Confirm delete",
"sidebar.modal.confirm_delete_connection.content": "Delete {{name}}?",
"sidebar.modal.confirm_delete_database.content": "Delete {{name}}? This cannot be undone.",
"sidebar.modal.confirm_delete_database.title": "Delete database",
"sidebar.modal.confirm_delete_routine.content": "Delete {{type}} {{name}}? This cannot be undone.",
"sidebar.modal.confirm_delete_routine.title": "Delete {{type}}",
"sidebar.modal.confirm_delete_saved_query.content": "Delete saved query \"{{name}}\"? This action cannot be undone.",
"sidebar.modal.confirm_delete_schema.content": "Delete schema {{name}}? The schema and all objects inside it will be deleted. This cannot be undone.",
"sidebar.modal.confirm_delete_schema.title": "Delete schema",
"sidebar.modal.confirm_delete_selected_databases.content": "Delete {{count}} selected databases under {{connection}}? This cannot be undone.",
"sidebar.modal.confirm_delete_selected_databases.title": "Confirm delete selected databases",
"sidebar.modal.confirm_delete_selected_tables.content": "Delete {{count}} selected tables under {{connection}} / {{database}}? This cannot be undone.",
"sidebar.modal.confirm_delete_selected_tables.title": "Confirm delete selected tables",
"sidebar.modal.confirm_delete_sql_directory.content": "Delete \"{{name}}\"? This will delete the local directory from disk, and only empty directories can be deleted.",
"sidebar.modal.confirm_delete_sql_directory.title": "Delete SQL directory",
"sidebar.modal.confirm_delete_sql_file.content": "Delete \"{{name}}\"? This will delete the local file from disk and cannot be undone.",
"sidebar.modal.confirm_delete_sql_file.title": "Delete SQL file",
"sidebar.modal.confirm_delete_table.content": "Delete {{name}}? This cannot be undone.",
"sidebar.modal.confirm_delete_table.title": "Delete table",
"sidebar.modal.confirm_delete_tag.content": "Delete group \"{{name}}\"? This will not delete the connections inside it.",
"sidebar.modal.confirm_delete_view.content": "Delete {{name}}? This cannot be undone.",
"sidebar.modal.confirm_delete_view.title": "Delete view",
"sidebar.modal.confirm_table_data_action.content": "{{action}} {{table}}? This cannot be undone.",
"sidebar.modal.confirm_table_data_action.title": "Confirm {{action}}",
"sidebar.modal.create_database.title": "Create database",
"sidebar.modal.rename_database.title": "Rename database: {{name}}",
"sidebar.modal.rename_schema.title": "Edit schema: {{name}}",
"sidebar.modal.rename_table.title": "Rename table: {{name}}",
"sidebar.modal.rename_view.title": "Rename view: {{name}}",
"sidebar.modal.tag.create_description": "Create a group to organize connections.",
"sidebar.modal.tag.create_title": "New group",
"sidebar.modal.tag.edit_description": "Update the group name and included connections.",
"sidebar.modal.tag.edit_title": "Edit group",
"sidebar.object.function": "Function",
"sidebar.object.procedure": "Procedure",
"sidebar.object.view": "View",
"sidebar.object_group.events": "Events",
"sidebar.object_group.materialized_views": "Materialized views",
"sidebar.object_group.packages": "Packages",
"sidebar.object_group.routines": "Functions and procedures",
"sidebar.object_group.sequences": "Sequences",
"sidebar.object_group.tables": "Tables",
"sidebar.object_group.triggers": "Triggers",
"sidebar.object_group.views": "Views",
"sidebar.placeholder.filter_table_view": "Filter tables and views",
"sidebar.placeholder.select_connection": "Select connection",
"sidebar.placeholder.select_connection_first": "Select a connection first",
"sidebar.placeholder.tag_name": "Group name",
"sidebar.punctuation.list_separator": ", ",
"sidebar.rail.object_actions": "Object area quick actions",
"sidebar.rail.system_actions": "System actions",
"sidebar.search.manual_scope": "Manual scope",
"sidebar.search.multi_select_supported": "Multiple scopes supported",
"sidebar.search.placeholder": "Search...",
"sidebar.search.scope.database": "Database",
"sidebar.search.scope.host": "Host",
"sidebar.search.scope.object": "Object",
"sidebar.search.scope.smart": "Smart",
"sidebar.search.scope.smart_description": "Automatically narrows search based on the selected node.",
"sidebar.search.scope.smart_short": "Smart",
"sidebar.search.scope.tag": "Tag",
"sidebar.search.scope_description": "Choose where the sidebar search should match.",
"sidebar.search.scope_hint": "Smart mode searches names, hosts, databases, and objects according to context.",
"sidebar.search.scope_title": "Search scope",
"sidebar.search.scope_tooltip": "Current search scope: {{scope}}",
"sidebar.sql_directory.default_name": "SQL directory",
"sidebar.sql_file.default_name": "SQL file",
"sidebar.sql_file_exec.cancel": "Cancel execution",
"sidebar.sql_file_exec.executed_label": "Executed: ",
"sidebar.sql_file_exec.file_size": "File size: ",
"sidebar.sql_file_exec.message.already_running": "An external SQL execution task is already running",
"sidebar.sql_file_exec.rows_separator": " rows | Failed: ",
"sidebar.sql_file_exec.rows_suffix": " rows",
"sidebar.sql_file_exec.status.cancelled": "Cancelled",
"sidebar.sql_file_exec.status.done": "Done",
"sidebar.sql_file_exec.status.error": "Error",
"sidebar.sql_file_exec.status.running": "Running",
"sidebar.sql_file_exec.status_label": "Status: ",
"sidebar.sql_file_exec.title": "Run external SQL file",
"sidebar.sql_file_exec.workbench.action.clear_history": "Clear history",
"sidebar.sql_file_exec.workbench.action.run_again": "Run again",
"sidebar.sql_file_exec.workbench.description.current_task_empty": "No execution is running yet. Once a file is selected, progress will stay visible here.",
"sidebar.sql_file_exec.workbench.empty.history": "Recent executions for this workbench stay here so you can review elapsed time and results.",
"sidebar.sql_file_exec.workbench.empty.not_started": "Not started",
"sidebar.sql_file_exec.workbench.helper.auto_run": "After selecting a file, the current workbench is reused and keeps the execution progress visible here.",
"sidebar.sql_file_exec.workbench.helper.reuse": "The same connection, database, and file reuse this workbench for repeat runs and result comparison.",
"sidebar.sql_file_exec.workbench.label.current_sql": "Current SQL",
"sidebar.sql_file_exec.workbench.label.current_stage": "Current stage",
"sidebar.sql_file_exec.workbench.label.elapsed": "Elapsed",
"sidebar.sql_file_exec.workbench.label.file_path": "File path",
"sidebar.sql_file_exec.workbench.label.progress_summary": "Execution summary",
"sidebar.sql_file_exec.workbench.label.started_at": "Started at",
"sidebar.sql_file_exec.workbench.section.config": "Execution config",
"sidebar.sql_file_exec.workbench.stage.preparing": "Preparing execution",
"sidebar.sql_template.duckdb_macro_hint": "Use SQL Macro for function-like behavior",
"sidebar.sql_template.duckdb_procedure_unsupported": "DuckDB does not support stored procedures yet",
"sidebar.sql_template.edit_routine": "Edit {{type}} {{name}}",
"sidebar.sql_template.edit_view": "Edit view {{name}}",
"sidebar.sql_template.modify_then_execute": "Modify and execute",
"sidebar.status.pinned": "Pinned",
"sidebar.tab.batch_export_databases": "Batch export databases",
"sidebar.tab.batch_export_objects": "Batch export objects",
"sidebar.tab.batch_export_objects_database": "Batch export {{database}} objects",
"sidebar.tab.create_function": "New function",
"sidebar.tab.create_procedure": "New procedure",
"sidebar.tab.create_view": "New view",
"sidebar.tab.design_table": "Design table ({{table}})",
"sidebar.tab.edit_event": "Edit event: {{name}}",
"sidebar.tab.edit_routine": "Edit {{type}}: {{name}}",
"sidebar.tab.edit_view": "Edit view: {{name}}",
"sidebar.tab.event": "Event: {{name}}",
"sidebar.tab.materialized_view_definition": "Materialized view: {{name}}",
"sidebar.tab.new_event": "New event",
"sidebar.tab.new_query": "New query",
"sidebar.tab.new_query_database": "New query ({{database}})",
"sidebar.tab.new_table": "New table - {{database}}",
"sidebar.tab.package_definition": "Package: {{name}}",
"sidebar.tab.recent_query": "Recent query",
"sidebar.tab.redis_command": "Command - {{database}}",
"sidebar.tab.redis_monitor": "Monitor - {{database}}",
"sidebar.tab.routine_definition": "{{type}}: {{name}}",
"sidebar.tab.sequence_definition": "Sequence: {{name}}",
"sidebar.tab.table_overview": "Table overview - {{database}}{{schema}}",
"sidebar.tab.table_structure": "Table structure ({{table}})",
"sidebar.tab.trigger": "Trigger: {{name}}",
"sidebar.tab.view_definition": "View: {{name}}",
"sidebar.table_action.clear.label": "Clear table",
"sidebar.table_action.clear.progress": "Clearing",
"sidebar.table_action.truncate.label": "Truncate table",
"sidebar.table_action.truncate.progress": "Truncating",
"sidebar.table_folder.columns": "Columns",
"sidebar.table_folder.foreign_keys": "Foreign keys",
"sidebar.table_folder.indexes": "Indexes",
"sidebar.table_folder.triggers": "Triggers",
"sidebar.tree.all_saved_queries": "All saved queries",
"sidebar.tree.default_database": "Default database",
"sidebar.tree.default_schema": "Default schema",
"sidebar.tree.saved_queries": "Saved queries",
"sidebar.tree.unknown_connection": "Unknown connection",
"sidebar.tree.unmatched_saved_queries": "Unmatched",
"sidebar.tree.untitled_query": "Untitled query",
"sidebar.v2_database_menu.backup_all_tables_sql": "Back up all tables · schema + data SQL",
"sidebar.v2_database_menu.export_all_table_schema_sql": "Export all table schemas · SQL",
"sidebar.v2_database_menu.export_backup_section": "Export and backup",
"sidebar.v2_database_menu.meta": "{{dialect}} · Database actions",
"sidebar.v2_database_menu.new_external_catalog": "New external Catalog",
"sidebar.v2_database_menu.new_materialized_view": "New materialized view",
"sidebar.v2_database_menu.new_schema": "New schema",
"sidebar.v2_database_menu.refresh_object_tree": "Refresh object tree",
"sidebar.v2_schema_menu.backup_current_schema_sql": "Back up all current schema tables · schema + data",
"sidebar.v2_schema_menu.delete_schema_cascade": "Delete schema · DROP CASCADE",
"sidebar.v2_schema_menu.edit_schema": "Edit schema",
"sidebar.v2_schema_menu.export_current_schema_sql": "Export current schema table structures · SQL",
"sidebar.v2_schema_menu.meta": "{{database}} · Schema actions",
"sidebar.v2_table_group_menu.current_database": "Current database",
"sidebar.v2_table_group_menu.display_create_time": "Show created time",
"sidebar.v2_table_group_menu.display_section": "Display",
"sidebar.v2_table_group_menu.display_table_rows": "Show row counts",
"sidebar.v2_table_group_menu.display_table_size": "Show table size",
"sidebar.v2_table_group_menu.display_update_time": "Show updated time",
"sidebar.v2_table_group_menu.meta": "{{database}} · {{count}} tables · sorted by {{sort}}",
"sidebar.v2_table_group_menu.metadata_value.created_at": "Created {{time}}",
"sidebar.v2_table_group_menu.metadata_value.rows": "{{count}} rows",
"sidebar.v2_table_group_menu.metadata_value.size": "{{size}}",
"sidebar.v2_table_group_menu.metadata_value.updated_at": "Updated {{time}}",
"sidebar.v2_table_group_menu.show_table_comments": "Show table comments",
"sidebar.v2_table_group_menu.sort_frequency": "usage frequency",
"sidebar.v2_table_group_menu.sort_name": "name",
"sidebar.v2_table_group_menu.table_comment_tooltip": "Comment: {{comment}}",
"sidebar.v2_table_group_menu.title": "Tables",
"sidebar.v2_table_menu.ai_explain_table": "Use AI to explain this table",
"sidebar.v2_table_menu.ai_generate_query": "Use AI to generate a query",
"sidebar.v2_table_menu.backup_sql_dump": "Backup · {{keyword}}",
"sidebar.v2_table_menu.copy_section": "Copy",
"sidebar.v2_table_menu.copy_table_as_insert": "Copy entire table as {{keyword}}",
"sidebar.v2_table_menu.copy_table_name": "Copy table name",
"sidebar.v2_table_menu.design_table_detail": "columns / indexes / foreign keys",
"sidebar.v2_table_menu.item_with_suffix": "{{label}} · {{suffix}}",
"sidebar.v2_table_menu.maintenance_section": "Maintenance",
"sidebar.v2_table_menu.meta.idle": "Click refresh to load stats",
"sidebar.v2_table_menu.meta.loading": "Loading table stats...",
"sidebar.v2_table_menu.meta.rows": "{{count}} rows",
"sidebar.v2_table_menu.meta.rows_empty": "— rows",
"sidebar.v2_table_menu.meta.summary": "{{rows}} · {{data}} data · {{indexes}} indexes",
"sidebar.v2_table_menu.meta.unavailable": "Table stats unavailable",
"sidebar.v2_table_menu.metadata_section": "Metadata",
"sidebar.v2_table_menu.new_rollup": "New {{keyword}}",
"sidebar.v2_table_menu.open_data": "View data",
"sidebar.v2_table_menu.open_export_workbench": "Open export workbench...",
"sidebar.v2_table_menu.open_in_new_tab": "Open in new tab",
"sidebar.v2_table_menu.refresh_stats": "Refresh stats",
"sidebar.v2_table_menu.rename_compact": "Rename...",
"sidebar.v2_table_menu.truncate_table": "Truncate table",
"sidebar.v2_table_menu.view_in_er": "View in ER diagram",
"sidebar.validation.name_required": "Enter a name.",
"sidebar.validation.new_database_name_required": "Enter the replacement database name.",
"sidebar.validation.new_table_name_required": "Enter the replacement table name.",
"sidebar.validation.new_view_name_required": "Enter the replacement view name.",
"sidebar.validation.schema_name_required": "Enter the schema name.",
"sidebar.validation.tag_name_required": "Enter a group name.",
"snippet_settings.action.close": "Close",
"snippet_settings.action.delete": "Delete",
"snippet_settings.action.new": "New Snippet",
"snippet_settings.action.reset": "Reset to Default",
"snippet_settings.action.save": "Save",
"snippet_settings.confirm.delete.description": "Are you sure you want to delete this snippet?",
"snippet_settings.confirm.delete.title": "Delete Snippet",
"snippet_settings.confirm.reset.description": "Restore the original content of this built-in snippet",
"snippet_settings.confirm.reset.title": "Reset to Default",
"snippet_settings.empty_state": "Select a snippet on the left to edit, or click \"{{action}}\"",
"snippet_settings.field.body.label": "Snippet Body",
"snippet_settings.field.description.label": "Description (optional)",
"snippet_settings.field.description.placeholder": "Description shown in completion details",
"snippet_settings.field.name.label": "Name",
"snippet_settings.field.name.placeholder": "Snippet display name",
"snippet_settings.field.prefix.label": "Prefix",
"snippet_settings.field.prefix.placeholder": "e.g. sel, ins",
"snippet_settings.list.title": "Snippet List",
"snippet_settings.message.body_required": "Snippet body is required",
"snippet_settings.message.deleted": "Snippet deleted",
"snippet_settings.message.name_required": "Name is required",
"snippet_settings.message.prefix_duplicate": "Prefix \"{{prefix}}\" is already used by another snippet",
"snippet_settings.message.prefix_required": "Prefix is required",
"snippet_settings.message.reset_default": "Reset to default",
"snippet_settings.message.saved": "Snippet saved",
"snippet_settings.syntax_help.label": "Snippet syntax notes (editable)",
"snippet_settings.syntax_help.placeholder": "Shown in completion details, for example placeholder meanings, parameter conventions, or notes",
"snippet_settings.syntax_reference.builtin_variables": "Built-in variables (auto-replaced when expanded):",
"snippet_settings.syntax_reference.current_date": "${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE} Current date",
"snippet_settings.syntax_reference.current_time": "${CURRENT_HOUR}:${CURRENT_MINUTE}:${CURRENT_SECOND} Current time",
"snippet_settings.syntax_reference.example": "Example: SELECT ${1:column_name} FROM ${2:table_name} WHERE date >= '${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}';$0",
"snippet_settings.syntax_reference.final_cursor": "$0 Final cursor position",
"snippet_settings.syntax_reference.first_tabstop": "${1:placeholder} First Tab stop; placeholder is the hint text",
"snippet_settings.syntax_reference.label": "Placeholder syntax reference",
"snippet_settings.syntax_reference.linked_tabstop": "${1:table_name} Reusing the same number keeps edits synchronized",
"snippet_settings.syntax_reference.random": "${RANDOM} 6-digit random number",
"snippet_settings.syntax_reference.second_tabstop": "${2:default_value} Second Tab stop; accept the default directly if needed",
"snippet_settings.syntax_reference.unix_seconds": "${CURRENT_SECONDS_UNIX} Unix timestamp",
"snippet_settings.syntax_reference.uuid": "${UUID} Random UUID",
"snippet_settings.tag.builtin": "Built-in",
"sql_analysis.backend.error.driver_explain_failed": "Driver EXPLAIN execution failed: {{detail}}",
"sql_analysis.backend.error.explain_dialect_unsupported": "The EXPLAIN dialect is not supported for {{dbType}}",
"sql_analysis.backend.error.explain_execution_failed": "EXPLAIN execution failed: {{detail}}",
"sql_analysis.backend.error.explain_query_not_implemented": "EXPLAIN query generation is not implemented for {{dbType}}",
"sql_analysis.backend.error.explain_result_empty": "The EXPLAIN result set was empty",
"sql_analysis.backend.error.explain_result_missing": "No EXPLAIN result set was returned",
"sql_analysis.backend.error.query_required": "SQL statement cannot be empty",
"sql_analysis.backend.error.select_only": "Diagnosis only supports SELECT / WITH queries. Use EXPLAIN PLAN mode for write operations (PR2 support).",
"sql_analysis.backend.error.unsupported_db_type": "The current data source ({{dbType}}) does not support SQL diagnosis yet. Phase 1 supports MySQL/PostgreSQL/SQLite/ClickHouse/Oracle/SQLServer/OceanBase.",
"sql_analysis.backend.message.completed": "Diagnosis completed",
"sql_analysis.explain.empty": "Enter SQL and run diagnosis",
"sql_analysis.explain.error.query_required": "SQL statement is empty",
"sql_analysis.explain.error.run_failed": "Diagnosis failed",
"sql_analysis.explain.error.title": "Diagnosis failed: ",
"sql_analysis.explain.loading": "Running EXPLAIN and parsing the plan...",
"sql_analysis.explain.meta.node_count": "{{count}} nodes",
"sql_analysis.explain.raw.empty": "(no raw output)",
"sql_analysis.explain.view.plan": "Execution plan",
"sql_analysis.explain.view.raw": "Raw",
"sql_analysis.explain_graph.flag.filesort": "Filesort",
"sql_analysis.explain_graph.flag.full_scan": "Full scan",
"sql_analysis.explain_graph.flag.temp_table": "Temp table",
"sql_analysis.explain_graph.label.index": "Index: ",
"sql_analysis.explain_graph.label.table": "Table: ",
"sql_analysis.explain_graph.metric.actual_rows": "Actual",
"sql_analysis.explain_graph.metric.cost": "Cost",
"sql_analysis.explain_graph.metric.est_rows": "Est.",
"sql_analysis.sidebar.node.actual_rows": "Actual rows",
"sql_analysis.sidebar.node.buffer_hit": "Buffer hit",
"sql_analysis.sidebar.node.cost": "Cost",
"sql_analysis.sidebar.node.duration": "Duration",
"sql_analysis.sidebar.node.est_rows": "Estimated rows",
"sql_analysis.sidebar.node.extra": "Extra fields ({{count}})",
"sql_analysis.sidebar.node.flags": "Flags",
"sql_analysis.sidebar.node.index": "Index",
"sql_analysis.sidebar.node.loops": "Loops",
"sql_analysis.sidebar.node.op_detail": "Operation detail",
"sql_analysis.sidebar.node.op_type": "Operation type",
"sql_analysis.sidebar.node.table": "Table",
"sql_analysis.sidebar.node.title": "Node details",
"sql_analysis.sidebar.stats.buffer_hit": "Buffer hit",
"sql_analysis.sidebar.stats.max_est_rows": "Max node rows",
"sql_analysis.sidebar.stats.rows_read": "Rows read",
"sql_analysis.sidebar.stats.title": "Execution stats",
"sql_analysis.sidebar.stats.total_cost": "Total cost",
"sql_analysis.sidebar.stats.total_duration": "Total duration",
"sql_analysis.sidebar.suggestions.empty": "No obvious performance issues found",
"sql_analysis.sidebar.suggestions.rows": "{{count}} rows",
"sql_analysis.sidebar.suggestions.table": "Table: {{table}}",
"sql_analysis.sidebar.suggestions.title": "Index suggestions ({{count}})",
"sql_analysis.sidebar.warning.filesort": "Extra sort detected",
"sql_analysis.sidebar.warning.full_scan": "Full table scan detected",
"sql_analysis.sidebar.warning.temp_table": "Temporary table used",
"sql_analysis.slow_query.current_connection": "(current connection)",
"sql_analysis.slow_query.empty": "No slow query records yet (threshold {{threshold}}ms)",
"sql_analysis.slow_query.error.clear_failed": "Clear failed",
"sql_analysis.slow_query.error.load_failed": "Load failed",
"sql_analysis.slow_query.error.title": "Load failed: ",
"sql_analysis.slow_query.loading": "Loading slow query history...",
"sql_analysis.slow_query.message.cleared": "Slow query history cleared",
"sql_analysis.slow_query.metric.rows_read": "Read",
"sql_analysis.slow_query.metric.rows_returned": "Returned",
"sql_analysis.slow_query.preview.empty": "(no SQL preview)",
"sql_analysis.slow_query.rail.aria_label": "Slow SQL workbench",
"sql_analysis.slow_query.rail.tooltip.no_connection": "Open a database connection tab first",
"sql_analysis.slow_query.rail.tooltip.open": "Open the SQL analysis workbench for the current connection",
"sql_analysis.slow_query.relative.days_ago": "{{count}} days ago",
"sql_analysis.slow_query.relative.hours_ago": "{{count}} hours ago",
"sql_analysis.slow_query.relative.just_now": "Just now",
"sql_analysis.slow_query.relative.minutes_ago": "{{count}} minutes ago",
"sql_analysis.slow_query.sort.duration": "By duration",
"sql_analysis.slow_query.sort.recent": "By time",
"sql_analysis.slow_query.sort.rows_read": "By rows read",
"sql_analysis.slow_query.title": "Slow SQL history",
"sql_analysis.slow_query.tooltip.clear_current": "Clear history for the current connection",
"sql_analysis.workbench.action.run": "Run diagnosis",
"sql_analysis.workbench.alert.connection_missing_description": "Choose a valid connection again before reopening the SQL analysis workbench.",
"sql_analysis.workbench.alert.connection_missing_title": "The connection for this workbench is no longer available",
"sql_analysis.workbench.editor.hint": "You can click an item in the slow SQL list to fill it in directly",
"sql_analysis.workbench.editor.placeholder": "Enter the SQL to diagnose, or click an item in the slow SQL list to fill it in",
"sql_analysis.workbench.tab_title": "SQL analysis",
"sql_analysis.workbench.tab_title_with_database": "SQL analysis · {{database}}",
"sql_analysis.workbench.title": "SQL analysis workbench",
"sql_analysis.workbench.validation.sql_required": "Enter the SQL to diagnose",
"sql_analysis.workbench.view.diagnose": "SQL diagnosis",
"sql_analysis.workbench.view.slow_query": "Slow SQL",
"sql_snippets.builtin.alt.description": "ALTER TABLE add-column template",
"sql_snippets.builtin.alt.name": "ALTER TABLE",
"sql_snippets.builtin.ct.description": "CREATE TABLE template",
"sql_snippets.builtin.ct.name": "CREATE TABLE",
"sql_snippets.builtin.ctt.description": "Table creation template with created_at / updated_at time columns",
"sql_snippets.builtin.ctt.name": "CREATE TABLE (with time columns)",
"sql_snippets.builtin.del.description": "DELETE data template",
"sql_snippets.builtin.del.name": "DELETE",
"sql_snippets.builtin.dro.description": "DROP TABLE template",
"sql_snippets.builtin.dro.name": "DROP TABLE",
"sql_snippets.builtin.grp.description": "Aggregate query template with GROUP BY",
"sql_snippets.builtin.grp.name": "GROUP BY",
"sql_snippets.builtin.ins.description": "INSERT data template",
"sql_snippets.builtin.ins.name": "INSERT",
"sql_snippets.builtin.inst.description": "INSERT template prefilled with the current timestamp",
"sql_snippets.builtin.inst.name": "INSERT (with timestamp)",
"sql_snippets.builtin.lim.description": "Pagination query template with LIMIT",
"sql_snippets.builtin.lim.name": "LIMIT Query",
"sql_snippets.builtin.ljo.description": "LEFT JOIN template",
"sql_snippets.builtin.ljo.name": "LEFT JOIN",
"sql_snippets.builtin.ord.description": "Query template with sorting",
"sql_snippets.builtin.ord.name": "ORDER BY",
"sql_snippets.builtin.sel.description": "Basic SELECT query template",
"sql_snippets.builtin.sel.name": "SELECT Basic Query",
"sql_snippets.builtin.seld.description": "SELECT query filtered by date, prefilled with today's date",
"sql_snippets.builtin.seld.name": "SELECT by Date",
"sql_snippets.builtin.selj.description": "SELECT query with an INNER JOIN",
"sql_snippets.builtin.selj.name": "SELECT JOIN",
"sql_snippets.builtin.selw.description": "SELECT query with a WHERE condition",
"sql_snippets.builtin.selw.name": "SELECT WHERE",
"sql_snippets.builtin.sub.description": "IN subquery template",
"sql_snippets.builtin.sub.name": "Subquery",
"sql_snippets.builtin.upd.description": "UPDATE data template",
"sql_snippets.builtin.upd.name": "UPDATE",
"store.fallback.connection_name": "Connection {{index}}",
"store.fallback.connection_tag_name": "Tag {{index}}",
"store.fallback.sql_snippet_name": "Snippet {{index}}",
"tab_manager.close_aria": "Close {{title}}",
"tab_manager.detached.close": "Close window",
"tab_manager.detached.restore": "Restore as tab",
"tab_manager.detached.title_fallback": "Floating window",
"tab_manager.empty.action.open_ai": "Open AI",
"tab_manager.empty.aria.start_workbench": "GoNavi start workbench",
"tab_manager.empty.eyebrow.connections": "{{count}} connections",
"tab_manager.empty.eyebrow.workbench": "WORKBENCH",
"tab_manager.empty.hero.description": "Choose a data source, open the query editor, or continue with context in the AI panel.",
"tab_manager.empty.hero.title": "Connections, queries, and analysis start in one workbench.",
"tab_manager.empty.quick.ai_assist.description": "Explain SQL, generate queries, and review results",
"tab_manager.empty.quick.ai_assist.title": "Enter AI assistance",
"tab_manager.empty.quick.aria": "Quick workflow",
"tab_manager.empty.quick.configure_source.description": "Set URI, SSH, proxy, and driver in one place",
"tab_manager.empty.quick.configure_source.title": "Configure data source",
"tab_manager.empty.quick.heading": "Quick workflow",
"tab_manager.empty.quick.sql_workspace.description": "Open the query editor with the current context",
"tab_manager.empty.quick.sql_workspace.title": "Start SQL workspace",
"tab_manager.hover.fallback.database_not_specified": "Not specified",
"tab_manager.hover.fallback.host_not_configured": "Not configured",
"tab_manager.hover.fallback.unbound_connection": "Unbound connection",
"tab_manager.hover.kind.design": "Table design",
"tab_manager.hover.kind.event": "Event",
"tab_manager.hover.kind.fallback": "Tab",
"tab_manager.hover.kind.jvm_audit": "JVM audit",
"tab_manager.hover.kind.jvm_diagnostic": "JVM diagnostic",
"tab_manager.hover.kind.jvm_monitoring": "JVM monitoring",
"tab_manager.hover.kind.jvm_overview": "JVM overview",
"tab_manager.hover.kind.jvm_resource": "JVM resource",
"tab_manager.hover.kind.materialized_view": "Materialized view",
"tab_manager.hover.kind.package": "Package",
"tab_manager.hover.kind.query": "SQL query",
"tab_manager.hover.kind.redis_command": "Redis command",
"tab_manager.hover.kind.redis_keys": "Redis Key",
"tab_manager.hover.kind.redis_monitor": "Redis monitor",
"tab_manager.hover.kind.routine": "Function / procedure",
"tab_manager.hover.kind.sequence": "Sequence",
"tab_manager.hover.kind.sql_analysis": "SQL analysis workbench",
"tab_manager.hover.kind.table": "Table data",
"tab_manager.hover.kind.table_export": "Export workbench",
"tab_manager.hover.kind.table_overview": "Table overview",
"tab_manager.hover.kind.trigger": "Trigger",
"tab_manager.hover.kind.view": "View",
"tab_manager.hover.label.connection": "Connection",
"tab_manager.hover.label.database": "Database",
"tab_manager.hover.label.object": "Object",
"tab_manager.hover.label.type": "Type",
"tab_manager.kind_badge.design": "Design",
"tab_manager.kind_badge.event": "Event",
"tab_manager.kind_badge.fallback": "Tab",
"tab_manager.kind_badge.jvm": "JVM",
"tab_manager.kind_badge.materialized_view": "MV",
"tab_manager.kind_badge.package": "Pkg",
"tab_manager.kind_badge.query": "SQL",
"tab_manager.kind_badge.redis": "Redis",
"tab_manager.kind_badge.routine": "Func",
"tab_manager.kind_badge.sequence": "Seq",
"tab_manager.kind_badge.sql_analysis": "Analyze",
"tab_manager.kind_badge.table": "Table",
"tab_manager.kind_badge.table_export": "Export",
"tab_manager.kind_badge.table_overview": "DB",
"tab_manager.kind_badge.trigger": "Trigger",
"tab_manager.kind_badge.view": "View",
"tab_manager.menu.close_all": "Close all tabs",
"tab_manager.menu.close_left": "Close tabs to the left",
"tab_manager.menu.close_other": "Close other tabs",
"tab_manager.menu.close_right": "Close tabs to the right",
"tab_manager.menu.open_in_window": "Open in floating window",
"tab_manager.menu.restore_to_tab": "Restore as tab",
"tab_manager.menu.tab_display_settings": "Tab settings",
"tab_manager.sql_file_close.close_tabs": "Close tabs",
"tab_manager.sql_file_close.continue_close": "Continue closing",
"tab_manager.sql_file_close.dirty_multiple_label": "{{count}} SQL files",
"tab_manager.sql_file_close.dirty_single_label": "\"{{title}}\"",
"tab_manager.sql_file_close.discard": "Don't save",
"tab_manager.sql_file_close.missing_confirm_content": "The external SQL file for {{label}} no longer exists or was moved. Closing will discard the local draft in the tab.",
"tab_manager.sql_file_close.missing_confirm_title": "Close missing SQL file tabs?",
"tab_manager.sql_file_close.missing_multiple_label": "{{count}} SQL file tabs",
"tab_manager.sql_file_close.missing_single_label": "\"{{title}}\"",
"tab_manager.sql_file_close.read_failed_cancel_close": "Failed to read SQL file, close was cancelled: {{detail}}",
"tab_manager.sql_file_close.save_and_close": "Save and close",
"tab_manager.sql_file_close.save_confirm_content": "{{label}} has unsaved changes. Save before closing?",
"tab_manager.sql_file_close.save_confirm_title": "Save SQL file changes?",
"tab_manager.sql_file_close.save_failed": "Failed to save {{title}}: {{detail}}",
"tab_manager.sql_file_close.saved": "SQL file saved",
"tab_manager.sql_file_close.unknown_error": "Unknown error",
"table_designer.action.add": "Add",
"table_designer.action.add_after_selected": "Add after selected column",
"table_designer.action.add_column": "Add column",
"table_designer.action.apply": "Apply",
"table_designer.action.cancel": "Cancel",
"table_designer.action.copy_selected_to_new_table": "Copy selected to new table",
"table_designer.action.create": "Create",
"table_designer.action.create_table": "Create table",
"table_designer.action.delete": "Delete",
"table_designer.action.edit": "Edit",
"table_designer.action.execute": "Execute",
"table_designer.action.refresh": "Refresh",
"table_designer.action.refresh_anyway": "Refresh anyway",
"table_designer.action.save": "Save",
"table_designer.action.table_comment": "Table comment",
"table_designer.action.view_statement": "View statement",
"table_designer.column.actions": "Actions",
"table_designer.column.auto_increment": "Auto increment",
"table_designer.column.comment": "Comment",
"table_designer.column.default": "Default",
"table_designer.column.name": "Name",
"table_designer.column.not_null": "Not NULL",
"table_designer.column.primary_key": "Primary key",
"table_designer.column.type": "Type",
"table_designer.empty.triggers": "This table has no triggers",
"table_designer.fallback.empty": "(empty)",
"table_designer.fallback.unknown_error": "Unknown error",
"table_designer.fallback.unnamed_foreign_key": "(unnamed foreign key)",
"table_designer.fallback.unnamed_index": "(unnamed index)",
"table_designer.foreign_key.column.constraint_name": "Constraint name",
"table_designer.foreign_key.column.fields": "Fields",
"table_designer.foreign_key.column.ref_fields": "Referenced fields",
"table_designer.foreign_key.column.ref_table": "Referenced table",
"table_designer.index.column.fields": "Fields",
"table_designer.index.column.name": "Index name",
"table_designer.index.column.type": "Index type",
"table_designer.index.column.uniqueness": "Uniqueness",
"table_designer.index.kind.fulltext": "Full-text index",
"table_designer.index.kind.normal": "Normal index",
"table_designer.index.kind.normal_nonclustered": "Normal index (non-clustered)",
"table_designer.index.kind.primary_clustered": "Primary key index (clustered)",
"table_designer.index.kind.spatial": "Spatial index",
"table_designer.index.kind.unique": "Unique index",
"table_designer.index.uniqueness.normal": "Normal",
"table_designer.index.uniqueness.unique": "Unique",
"table_designer.label.create_statement": "Create statement for {{name}}",
"table_designer.label.create_statement_plain": "Create statement",
"table_designer.message.add_at_least_one_column": "Add at least one column",
"table_designer.message.columns_copied_to_new_table": "Copied {{count}} columns to new table {{table}}",
"table_designer.message.connection_not_found": "Connection not found",
"table_designer.message.delete_failed": "Delete failed: {{detail}}",
"table_designer.message.drop_old_trigger_failed": "Failed to drop the old trigger: {{detail}}",
"table_designer.message.duckdb_primary_key_change_unsupported": "DuckDB currently only supports adding a primary key to tables without one. Modifying or dropping an existing primary key requires rebuilding the table.",
"table_designer.message.execution_failed": "Execution failed: {{detail}}",
"table_designer.message.execution_failed_plain": "Execution failed",
"table_designer.message.execution_failed_prefix": "Execution failed: ",
"table_designer.message.foreign_key_column_count_mismatch": "The number of local fields must match the number of referenced fields",
"table_designer.message.foreign_key_created": "Foreign key created",
"table_designer.message.foreign_key_delete_unsupported": "This database does not support deleting this foreign key here",
"table_designer.message.foreign_key_deleted": "Foreign key deleted",
"table_designer.message.foreign_key_maintenance_unsupported": "This database does not support foreign key maintenance here",
"table_designer.message.foreign_key_name_exists": "Foreign key constraint already exists: {{name}}",
"table_designer.message.foreign_key_name_required": "Enter a foreign key constraint name",
"table_designer.message.foreign_key_updated": "Foreign key updated",
"table_designer.message.index_create_sql_placeholder": "Index creation SQL is unavailable",
"table_designer.message.index_create_sql_unavailable": "Unable to generate index creation SQL",
"table_designer.message.index_created": "Index created",
"table_designer.message.index_delete_named_unsupported": "This database does not support deleting index \"{{name}}\"",
"table_designer.message.index_delete_unsupported": "This database does not support deleting this index",
"table_designer.message.index_deleted": "Index deleted",
"table_designer.message.index_kind_unsupported": "This database does not support this index type",
"table_designer.message.index_maintenance_unsupported": "This database does not support index maintenance here",
"table_designer.message.index_name_exists": "Index name already exists: {{name}}",
"table_designer.message.index_name_required": "Enter an index name",
"table_designer.message.index_restore_failed": "{{detail}}; failed to restore the original index: {{restoreDetail}}",
"table_designer.message.index_restore_unavailable": "{{detail}}; the original index could not be restored automatically. Check it as soon as possible.",
"table_designer.message.index_restored_after_failure": "{{detail}}; the original index was restored automatically.",
"table_designer.message.index_updated": "Index updated",
"table_designer.message.indexes_deleted": "{{count}} indexes deleted",
"table_designer.message.load_columns_failed": "Failed to load columns: {{detail}}",
"table_designer.message.no_changes_detected": "No changes detected",
"table_designer.message.no_copyable_columns": "No copyable columns selected",
"table_designer.message.no_index_changes": "No index changes detected",
"table_designer.message.only_normal_unique_index_supported": "This database only supports maintaining normal and unique indexes",
"table_designer.message.ref_columns_required": "Enter at least one referenced field",
"table_designer.message.ref_table_required": "Enter a referenced table",
"table_designer.message.relational_index_unsupported": "This data source does not support relational index maintenance",
"table_designer.message.schema_saved_alter": "Table structure updated.",
"table_designer.message.schema_saved_create": "Table created.",
"table_designer.message.select_at_least_one_column": "Select at least one column",
"table_designer.message.select_column_before_insert": "Select a column before inserting.",
"table_designer.message.select_columns_to_copy": "Select columns to copy first",
"table_designer.message.select_index_to_delete": "Select an index to delete first",
"table_designer.message.select_local_columns": "Select at least one local field",
"table_designer.message.select_one_foreign_key": "Select one foreign key first",
"table_designer.message.select_one_index": "Select one index first",
"table_designer.message.statement_execution_failed_prefix": "Statement {{current}}/{{total}} failed: ",
"table_designer.message.switch_index_kind": "Switch Index category to {{kind}} index",
"table_designer.message.table_comment_unsupported": "This database does not support editing table comments here",
"table_designer.message.table_comment_updated": "Table comment updated",
"table_designer.message.table_name_required": "Enter a table name",
"table_designer.message.target_table_required": "Enter a target table name",
"table_designer.message.trigger_created": "Trigger created",
"table_designer.message.trigger_deleted": "Trigger deleted",
"table_designer.message.trigger_updated": "Trigger updated",
"table_designer.modal.column_comment_title": "Column comment",
"table_designer.modal.column_comment_title_named": "Column comment - {{name}}",
"table_designer.modal.confirm_sql_title": "Confirm SQL changes",
"table_designer.modal.copy_columns_title": "Copy selected columns to new table",
"table_designer.modal.delete_foreign_key_content": "Delete foreign key constraint \"{{name}}\"?",
"table_designer.modal.delete_foreign_key_title": "Delete foreign key",
"table_designer.modal.delete_index_many": "Delete these {{count}} indexes?\n{{names}}",
"table_designer.modal.delete_index_one": "Delete index {{names}}?",
"table_designer.modal.delete_index_title": "Delete index",
"table_designer.modal.delete_trigger_content": "Delete trigger \"{{name}}\"? This cannot be undone.",
"table_designer.modal.delete_trigger_title": "Delete trigger",
"table_designer.modal.foreign_key_create_title": "Add foreign key",
"table_designer.modal.foreign_key_edit_title": "Edit foreign key",
"table_designer.modal.index_create_title": "Add index",
"table_designer.modal.index_edit_title": "Edit index",
"table_designer.modal.table_comment_title": "Edit table comment",
"table_designer.modal.trigger_create_title": "Add trigger",
"table_designer.modal.trigger_detail_title": "Trigger details",
"table_designer.modal.trigger_detail_title_named": "Trigger: {{name}}",
"table_designer.modal.trigger_edit_title": "Edit trigger",
"table_designer.modal.unsaved_changes_content": "Refreshing will discard the unsaved column changes in the current draft. Refresh and overwrite the draft anyway?",
"table_designer.modal.unsaved_changes_title": "Unsaved column changes",
"table_designer.notice.foreign_key_readonly": "This database does not support foreign key editing here. View only.",
"table_designer.notice.foreign_key_replace_hint": "Editing a foreign key drops the old foreign key first, then creates the new one.",
"table_designer.notice.index_readonly": "This database does not support index editing here. View only.",
"table_designer.notice.index_restore_hint": "When editing an index, the system will try to restore the original index if creating the new one fails.",
"table_designer.notice.sql_irreversible": "Review the SQL carefully. Execution cannot be undone.",
"table_designer.notice.sql_statement_irreversible": "Review the SQL statement carefully. Execution cannot be undone.",
"table_designer.notice.trigger_replace_hint": "Editing a trigger drops the original trigger first, then creates a new trigger.",
"table_designer.option.default": "Default",
"table_designer.option.recommended_suffix": "(Recommended)",
"table_designer.placeholder.column_comment": "Enter a column comment",
"table_designer.placeholder.foreign_key_name": "Foreign key constraint name, for example fk_order_user",
"table_designer.placeholder.index_columns": "Select index columns; selection order is used",
"table_designer.placeholder.index_name": "Index name, for example idx_user_name",
"table_designer.placeholder.local_columns": "Select local fields; order must match referenced fields",
"table_designer.placeholder.primary_index_name": "Primary key index uses fixed name: PRIMARY",
"table_designer.placeholder.ref_columns": "Enter referenced fields; multiple values supported",
"table_designer.placeholder.ref_table": "Referenced table; db.table is supported",
"table_designer.placeholder.table_comment": "Enter a table comment",
"table_designer.placeholder.table_name": "Enter a table name",
"table_designer.placeholder.target_table_name": "Enter a target table name",
"table_designer.schema_sql.doris.primary_key_hint": "-- Doris primary key/Key model changes require manual migration according to the table model. MySQL-only DROP/ADD PRIMARY KEY clauses were skipped.",
"table_designer.schema_sql.duckdb.comment_hint": "-- DuckDB cannot persist column comments through COMMENT ON COLUMN. The comment for column {{column}} remains only in the designer preview.",
"table_designer.schema_sql.duckdb.primary_key_hint": "-- DuckDB currently only supports adding PRIMARY KEY to tables without an existing primary key. Changing or dropping an existing primary key requires rebuilding the table.",
"table_designer.schema_sql.limited_column_hint": "-- {{dialect}} column constraint, default, and comment syntax differs from MySQL. MySQL-only clauses were skipped; add dialect-specific SQL before running.",
"table_designer.schema_sql.sqlite.modify_column_hint": "-- SQLite cannot alter column properties directly. Rebuild the table, migrate data, and replace the old table for column {{column}}.",
"table_designer.schema_sql.sqlserver.drop_primary_key_hint": "-- SQL Server requires the original constraint name to drop the old primary key. Confirm it on the indexes tab before deleting.",
"table_designer.schema_sql.tdengine.timestamp_hint": "-- TDengine regular tables usually require a TIMESTAMP column. Confirm the table model before running.",
"table_designer.selection.columns_selected": "{{count}} columns selected",
"table_designer.selection.foreign_key_selected": "Selected: {{name}}",
"table_designer.selection.indexes_selected": "{{count}} indexes selected",
"table_designer.selection.trigger_prompt": "Click to select a trigger",
"table_designer.selection.trigger_selected": "Selected: {{name}}",
"table_designer.sql_preview.change.add": "Add change",
"table_designer.sql_preview.change.comment": "Comment change",
"table_designer.sql_preview.change.constraint": "Constraint change",
"table_designer.sql_preview.change.create": "New table structure",
"table_designer.sql_preview.change.create_index": "Create index",
"table_designer.sql_preview.change.drop": "Drop change",
"table_designer.sql_preview.change.modify": "Column property change",
"table_designer.sql_preview.change.rename": "Rename change",
"table_designer.starrocks.bucket_mode.auto": "Auto buckets",
"table_designer.starrocks.bucket_mode.number": "Fixed bucket count",
"table_designer.starrocks.distribution.hash": "Hash distribution",
"table_designer.starrocks.distribution.none": "No distribution",
"table_designer.starrocks.distribution.random": "Random distribution",
"table_designer.starrocks.key_model.aggregate": "Aggregate key",
"table_designer.starrocks.key_model.duplicate": "Duplicate key",
"table_designer.starrocks.key_model.unique": "Unique key",
"table_designer.starrocks.placeholder.bucket_count": "Buckets",
"table_designer.starrocks.placeholder.distribution_columns": "Distribution columns, for example user_id",
"table_designer.starrocks.placeholder.key_columns": "Key columns, for example id, date",
"table_designer.starrocks.placeholder.partition_clause": "Partition clause, for example PARTITION BY RANGE(date_col)(...)",
"table_designer.starrocks.table_kind.external": "External table",
"table_designer.starrocks.table_kind.olap": "OLAP table",
"table_designer.status.read_only": "Read only",
"table_designer.summary.columns": "{{count}} columns",
"table_designer.summary.indexes": "Indexes: {{count}}, indexed fields: {{fields}}",
"table_designer.tab.columns": "Columns",
"table_designer.tab.edit_trigger_title": "Edit trigger: {{name}}",
"table_designer.tab.foreign_keys": "Foreign keys",
"table_designer.tab.indexes": "Indexes",
"table_designer.tab.triggers": "Triggers",
"table_designer.table_comment.current": "Current comment: {{comment}}",
"table_designer.title.default_database": "Default database",
"table_designer.title.schema_designer": "Schema designer",
"table_designer.title.untitled_table": "Untitled table",
"table_designer.tooltip.edit_comment_popup": "Edit comment in popup",
"table_designer.trigger.column.event": "Event",
"table_designer.trigger.column.name": "Name",
"table_designer.trigger.column.timing": "Timing",
"table_designer.trigger.definition_unavailable": "Unable to get the full trigger definition",
"table_designer.trigger.field.event": "Event",
"table_designer.trigger.field.timing": "Timing",
"table_designer.trigger.template.body_comment": "Trigger logic",
"table_designer.trigger.template.enter_create": "Enter a CREATE TRIGGER statement",
"table_overview.action.show_more": "Show more tables ({{count}} remaining)",
"table_overview.empty.no_matches": "No matches",
"table_overview.empty.no_tables": "No tables",
"table_overview.menu.backup_table_sql": "Back Up Table (SQL)",
"table_overview.menu.clear_table": "Clear Table",
"table_overview.menu.copy_structure": "Copy Table Structure",
"table_overview.menu.copy_table_name": "Copy Table Name",
"table_overview.menu.danger_operations": "Danger Operations",
"table_overview.menu.delete_table": "Delete Table",
"table_overview.menu.design_table": "Design Table",
"table_overview.menu.export_csv": "Export CSV",
"table_overview.menu.export_html": "Export HTML",
"table_overview.menu.export_json": "Export JSON",
"table_overview.menu.export_markdown": "Export Markdown",
"table_overview.menu.export_table_data": "Export Table Data",
"table_overview.menu.export_xlsx": "Export XLSX",
"table_overview.menu.new_query": "New Query",
"table_overview.menu.rename_table": "Rename Table",
"table_overview.menu.table_structure": "Table Structure",
"table_overview.menu.truncate_table": "Truncate Table",
"table_overview.message.copy_structure_failed": "Failed to copy table structure: {{detail}}",
"table_overview.message.copy_structure_success": "Table structure copied to clipboard",
"table_overview.message.copy_table_name_empty": "Table name is empty and cannot be copied",
"table_overview.message.copy_table_name_failed": "Failed to copy table name: {{detail}}",
"table_overview.message.copy_table_name_success": "Table name copied to clipboard",
"table_overview.message.delete_table_failed": "Failed to delete table: {{detail}}",
"table_overview.message.delete_table_success": "Table deleted",
"table_overview.message.export_failed": "Export failed: {{detail}}",
"table_overview.message.export_success": "Export succeeded",
"table_overview.message.exporting_table_format": "Exporting {{table}} as {{format}}...",
"table_overview.message.load_tables_failed": "Failed to load table information: {{detail}}",
"table_overview.message.pinned": "Table pinned",
"table_overview.message.rename_table_failed": "Failed to rename table: {{detail}}",
"table_overview.message.rename_table_success": "Table renamed",
"table_overview.message.table_data_action_failed": "{{action}} failed: {{detail}}",
"table_overview.message.table_data_action_loading": "Running {{action}} on {{table}}...",
"table_overview.message.table_data_action_success": "{{action}} succeeded",
"table_overview.message.unknown_error": "Unknown error",
"table_overview.message.unpinned": "Table unpinned",
"table_overview.metric.created_at": "Created",
"table_overview.metric.data_size": "Data size",
"table_overview.metric.engine": "Engine",
"table_overview.metric.index_size": "Index size",
"table_overview.metric.relative_size": "Relative size",
"table_overview.metric.updated_at": "Last updated",
"table_overview.modal.delete_table.content": "Delete table \"{{table}}\"? This action cannot be undone.",
"table_overview.modal.delete_table.title": "Delete Table",
"table_overview.modal.rename_table.placeholder": "Enter a new table name",
"table_overview.modal.rename_table.title": "Rename Table",
"table_overview.modal.table_data_action.content": "{{action}} will permanently delete all data in table \"{{table}}\". This action cannot be undone. Continue?",
"table_overview.modal.table_data_action.title": "Confirm {{action}}",
"table_overview.placeholder.search": "Search table names or comments...",
"table_overview.row.engine_table": "{{engine}} table",
"table_overview.row.open_hint": "Double-click to open data, right-click for more actions",
"table_overview.section.all": "All",
"table_overview.section.pinned": "Pinned",
"table_overview.sort.name": "Name",
"table_overview.sort.rows": "Rows",
"table_overview.sort.size": "Size",
"table_overview.status.hidden_count_hint": "{{count}} more not rendered. Load more or narrow the search.",
"table_overview.status.loading_tables": "Loading table information...",
"table_overview.status.matching_rendered": "Matching {{matched}} tables, rendering {{rendered}}",
"table_overview.status.updating_filter": "Updating filtered results...",
"table_overview.tab.design_table_title": "Design Table ({{table}})",
"table_overview.tab.table_structure_title": "Table Structure ({{table}})",
"table_overview.table_data_action.clear.label": "Clear Table",
"table_overview.table_data_action.truncate.label": "Truncate Table",
"table_overview.toolbar.summary": "{{count}} tables · {{rows}} rows · {{size}}",
"table_overview.tooltip.card_view": "Card view",
"table_overview.tooltip.list_view": "List view",
"table_overview.tooltip.refresh": "Refresh",
"table_overview.tooltip.sort": "Sort",
"table_overview.validation.table_name_required": "Table name is required",
"table_overview.validation.table_name_unchanged": "New table name is the same as the current name",
"trigger_viewer.action.edit_object": "Edit object",
"trigger_viewer.edit_sql.compatibility_hint": "Review compatibility with the current database before running.",
"trigger_viewer.edit_sql.empty_definition": "The trigger definition is empty. Complete the CREATE TRIGGER statement before running.",
"trigger_viewer.edit_sql.fragment_definition": "The current data source returned only a trigger definition fragment. Complete the CREATE TRIGGER statement before running.",
"trigger_viewer.edit_sql.header": "Edit trigger: {{name}}",
"trigger_viewer.edit_sql.replace_hint": "The table design change will drop the original trigger before creating a new one. Confirm before running.",
"trigger_viewer.editor.definition_not_found": "Trigger definition not found",
"trigger_viewer.editor.sphinx.compat_queries_hint": "Multiple compatibility queries were executed. This may be due to version capability limits or an unsupported object type.",
"trigger_viewer.editor.sphinx.empty_result": "Current Sphinx instance{{version}} returned no trigger definition.",
"trigger_viewer.editor.sphinx.failed_message_label": "Returned failure message",
"trigger_viewer.editor.sphinx.failed_message_unknown": "Returned failure message: Unknown error",
"trigger_viewer.editor.sphinx.unsupported_query": "Current Sphinx instance{{version}} does not support querying trigger definitions.",
"trigger_viewer.editor.sphinx.version_suffix": " (version: {{version}})",
"trigger_viewer.editor.unsupported.duckdb": "DuckDB does not support triggers",
"trigger_viewer.editor.unsupported.generic": "This database type does not support viewing trigger definitions",
"trigger_viewer.editor.unsupported.mongodb": "MongoDB does not support triggers",
"trigger_viewer.editor.unsupported.tdengine": "TDengine does not support triggers",
"trigger_viewer.error.connection_not_found": "Database connection not found",
"trigger_viewer.error.load_failed": "Load failed",
"trigger_viewer.error.query_failed": "Failed to query trigger definition",
"trigger_viewer.error.query_failed_detail": "Failed to query trigger definition: {{detail}}",
"trigger_viewer.error.trigger_name_empty": "Trigger name is empty",
"trigger_viewer.field.database": "Database",
"trigger_viewer.field.trigger": "Trigger",
"trigger_viewer.loading.definition": "Loading trigger definition...",
"trigger_viewer.tab.edit_trigger_title": "Edit trigger: {{name}}",
"trigger_viewer.warning.refresh_latest_failed": "Failed to refresh the latest definition",
"web_auth.error.already_configured": "Web authentication is already configured",
"web_auth.error.auth_required": "Authentication is required",
"web_auth.error.copy_manual": "Copy manually",
"web_auth.error.init_failed": "Setup failed",
"web_auth.error.init_info_failed": "Failed to generate setup information",
"web_auth.error.invalid_login_payload": "Invalid sign-in payload",
"web_auth.error.invalid_password_or_code": "Invalid admin password or verification code",
"web_auth.error.invalid_setup_payload": "Invalid setup payload",
"web_auth.error.invalid_setup_token": "Invalid setup token",
"web_auth.error.invalid_totp_code": "Invalid Google Authenticator code",
"web_auth.error.load_status_failed": "Failed to load authentication status",
"web_auth.error.login_failed": "Sign-in failed",
"web_auth.error.method_not_allowed": "Method not allowed",
"web_auth.error.password_confirmation_mismatch": "Password confirmation does not match",
"web_auth.error.password_min_length": "Password must be at least {{count}} characters",
"web_auth.error.password_required": "Admin password is required",
"web_auth.error.retry_after_seconds": ". Try again in {{seconds}} seconds",
"web_auth.error.setup_info_expired": "Setup information expired. Refresh the page and try again.",
"web_auth.error.setup_required": "Web authentication setup is required",
"web_auth.error.setup_token_expired": "Setup token expired. Refresh the page and try again.",
"web_auth.error.too_many_login_attempts": "Too many sign-in attempts. Try again later.",
"web_auth.error.totp_code_required": "Enter a Google Authenticator code or a recovery code",
"web_auth.page.login.code_label": "Google Authenticator code / recovery code",
"web_auth.page.login.code_placeholder": "6-digit code or recovery code",
"web_auth.page.login.description": "Browser sessions are managed on the server. Idle timeout, absolute timeout, and remember-me duration are enforced centrally.",
"web_auth.page.login.heading": "Sign In",
"web_auth.page.login.password_label": "Admin password",
"web_auth.page.login.password_placeholder": "Enter the admin password",
"web_auth.page.login.security_cookie": "The cookie is stored only in this browser and is protected with HttpOnly and SameSite=Strict.",
"web_auth.page.login.security_rate_limit": "Repeated failures trigger temporary rate limiting to reduce brute-force attempts.",
"web_auth.page.login.security_recovery": "If you lose Google Authenticator, use the recovery codes saved during setup.",
"web_auth.page.login.security_title": "Security Notes",
"web_auth.page.login.submit": "Sign in to GoNavi",
"web_auth.page.login.subtitle": "Access browser-based GoNavi with the admin password and Google Authenticator",
"web_auth.page.login.title": "GoNavi Web Login",
"web_auth.page.setup.absolute_label": "Absolute timeout (hours)",
"web_auth.page.setup.account_label": "Account",
"web_auth.page.setup.admin_title": "Initialize admin access",
"web_auth.page.setup.back": "Back",
"web_auth.page.setup.confirm_label": "Confirm password",
"web_auth.page.setup.confirm_placeholder": "Enter the password again",
"web_auth.page.setup.copy_secret": "Copy Secret",
"web_auth.page.setup.copy_uri": "Copy otpauth URI",
"web_auth.page.setup.enable_totp": "Enable Google Authenticator 2FA",
"web_auth.page.setup.first_code_label": "First verification code / recovery code",
"web_auth.page.setup.first_code_placeholder": "Enter the current 6-digit Authenticator code",
"web_auth.page.setup.footer_note": "For public Internet access, a 30-minute idle timeout plus 7-day absolute timeout is recommended. You can later edit web_auth.json and redeploy.",
"web_auth.page.setup.idle_label": "Idle timeout (minutes)",
"web_auth.page.setup.intro": "Create the admin password before the first access. It is recommended to bind Google Authenticator at the same time and save the recovery codes immediately.",
"web_auth.page.setup.issuer_label": "Issuer",
"web_auth.page.setup.next": "Next",
"web_auth.page.setup.otpauth_label": "otpauth URI",
"web_auth.page.setup.password_label": "Admin password",
"web_auth.page.setup.password_placeholder": "At least 10 characters",
"web_auth.page.setup.qr_alt": "Google Authenticator QR code",
"web_auth.page.setup.recovery_intro": "Recovery codes are shown only once. Save them offline:",
"web_auth.page.setup.remember_label": "Remember sign-in (days)",
"web_auth.page.setup.secret_label": "Secret",
"web_auth.page.setup.session_title": "Session policy",
"web_auth.page.setup.step_admin_description": "Set the browser admin credential first",
"web_auth.page.setup.step_admin_hint": "Start by creating the admin password, then decide whether Google Authenticator 2FA should be enabled right away.",
"web_auth.page.setup.step_admin_title": "Create admin password",
"web_auth.page.setup.step_session_description": "Review timeout and remember-me policy",
"web_auth.page.setup.step_session_hint": "Finish by confirming the browser session policy. For public Internet access, keep the timeouts conservative. You can adjust them later in the config file.",
"web_auth.page.setup.step_session_title": "Confirm session policy",
"web_auth.page.setup.step_totp_description": "Bind TOTP by QR code or manual entry",
"web_auth.page.setup.step_totp_hint": "If 2FA is enabled, complete the authenticator binding here and confirm it with the first verification code.",
"web_auth.page.setup.step_totp_title": "Bind authenticator",
"web_auth.page.setup.submit": "Complete setup and enter GoNavi",
"web_auth.page.setup.subtitle": "Create the admin password on first launch and bind Google Authenticator right away",
"web_auth.page.setup.title": "Initialize GoNavi Web",
"web_auth.page.setup.totp_clients": "Google Authenticator, Microsoft Authenticator, 1Password, Aegis, and other standard TOTP clients can scan this directly.",
"web_auth.page.setup.totp_description": "Scan the QR code first. If scanning is not convenient on this device, enter the account and secret below manually.",
"web_auth.page.setup.totp_disabled_note": "Google Authenticator 2FA is disabled for this setup. This initialization will use only the admin password, and you can enable 2FA later.",
"web_auth.page.setup.totp_naming": "If the entry is not named automatically after scanning, use the issuer and account below as the display name.",
"web_auth.page.setup.totp_title": "Google Authenticator",
"ai_settings.form.section.thinking": "Thinking intensity",
"ai_settings.form.thinking_intensity": "Thinking intensity",
"ai_settings.form.thinking_intensity_hint": "Available levels depend on the provider. Leave unset to use the provider default.",
"ai_settings.form.thinking_intensity.off": "Off",
"ai_settings.form.thinking_intensity.low": "Low",
"ai_settings.form.thinking_intensity.medium": "Medium",
"ai_settings.form.thinking_intensity.high": "High",
"ai_settings.mcp_http.panel.mode.schema_only": "Schema only",
"ai_settings.mcp_http.panel.mode.limited_query": "Limited query",
"ai_settings.mcp_http.panel.limited_query.label": "Allow execute_sql for limited data",
"ai_settings.mcp_http.panel.limited_query.hint": "Registers execute_sql (default 50 rows/result, max 200), still governed by AI safety. Restart the service after changing.",
"ai_settings.mcp_http.panel.limited_query.on": "On",
"ai_settings.mcp_http.panel.limited_query.off": "Off",
"ai_settings.form.thinking_intensity.none": "none",
"ai_settings.form.thinking_intensity.minimal": "minimal",
"ai_settings.form.thinking_intensity.xhigh": "xhigh",
"ai_settings.form.thinking_intensity.max": "max",
"ai_settings.form.thinking_intensity_hint.openai": "OpenAI / GPT reasoning models use reasoning_effort: none, minimal, low, medium, high, xhigh.",
"ai_settings.form.thinking_intensity_hint.anthropic": "Anthropic uses thinking + output_config.effort: off, low, medium, high, xhigh, max.",
"ai_settings.form.thinking_intensity_hint.deepseek": "DeepSeek: off or low/medium/high (Anthropic maps to effort; OpenAI maps to thinking on/off).",
"ai_settings.form.thinking_intensity_hint.gemini": "Gemini uses thinking_level / thinking_budget: off, minimal, low, medium, high.",
"ai_chat.input.thinking_intensity.placeholder": "Thinking",
"ai_chat.detached.window_title": "GoNavi AI",
"ai_chat.detached.window_aria": "AI chat floating window",
"ai_chat.detached.action.popout": "Open in floating window",
"ai_chat.detached.action.dock": "Dock back to sidebar",
"ai_settings.open_mode.title": "Default open style",
"ai_settings.open_mode.description": "Choose whether AI chat opens as a sidebar or floating window by default. You can still switch either way after opening.",
"ai_settings.open_mode.dock.label": "Sidebar panel",
"ai_settings.open_mode.dock.desc": "Opens docked to the right of the workbench for side-by-side querying.",
"ai_settings.open_mode.detached.label": "Floating window",
"ai_settings.open_mode.detached.desc": "Opens as a draggable/resizable floating window for multi-monitor or larger chat space.",
"ai_settings.open_mode.message.dock": "Default open style set to sidebar",
"ai_settings.open_mode.message.detached": "Default open style set to floating window",
"ai_settings.context.section_title": "Context level",
"app.about.action.restart_to_update": "Restart to update",
"app.about.download_progress.ready_to_restart": "Download complete (100%). Click “Restart to update” to finish installing.",
"app.about.download_progress.downloading": "Downloading update…",
"app.about.download_progress.applying_restart": "Applying update and restarting…",
"app.about.download_progress.restarting": "Restarting…",
"app.about.download_progress.complete_hint": "Update package ready (100%)",
"app.about.message.download_ready_restart": "Update downloaded. Click “Restart to update” when ready.",
"app.about.message.download_ready_restart_with_path": "Update downloaded. Click “Restart to update” when ready. Path: {{path}}",
"app.about.update_status.new_version_ready_restart": "New version {{version}} is ready. Click “Restart to update”."
}