Files
MyGoNavi/shared/i18n/en-US.json
Syngnat 4999fd544d 🐛 fix(data-sync): 完善多种目标库的 schema 同步链路
- 扩展数据同步目标端 schema 选择与元数据加载,覆盖 SQL Server、IRIS、DuckDB 等独立 schema 场景
- 修正同步链路中的目标表 schema 归一化与 query/apply 表名解析,避免落到错误模式
- 补充前后端回归测试与多语言文案,覆盖 schema 选择、别名识别和结果预览路径

Fixes #571
2026-06-21 22:46:57 +08:00

4855 lines
410 KiB
JSON

{
"common.cancel": "Cancel",
"redis.db_alias.menu.set": "Set alias",
"redis.db_alias.modal.title": "Alias for {{db}}",
"redis.db_alias.modal.placeholder": "e.g. cache, sessions (leave empty to clear)",
"common.back_to_previous": "Back",
"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.sidebar.group.untitled": "Untitled group",
"connection.sidebar.group.meta": "{{count}} connections · Connection group",
"connection.sidebar.group.badge": "GROUP",
"connection.sidebar.group.edit": "Edit group",
"connection.sidebar.group.delete": "Delete group",
"connection.sidebar.group.deleteConfirmTitle": "Confirm deletion",
"connection.sidebar.group.deleteConfirmContent": "Delete group \"{{name}}\"? Connections inside it will not be removed.",
"connection.sidebar.group.expandAria": "Expand connection group {{name}}",
"connection.sidebar.group.collapseAria": "Collapse connection group {{name}}",
"connection.sidebar.menu.section": "Connection",
"connection.sidebar.menu.groupSection": "Connection groups",
"connection.sidebar.menu.copy": "Copy connection",
"connection.sidebar.menu.disconnect": "Disconnect",
"connection.sidebar.menu.delete": "Delete connection",
"connection.sidebar.menu.hostFallback": "Address not configured",
"connection.sidebar.menu.hostBadge": "HOST",
"connection.sidebar.menu.moveToTag": "Move to tag",
"connection.sidebar.menu.moveOutTag": "Remove from tag",
"connection.sidebar.menu.moveToUngrouped": "Remove from group",
"connection.sidebar.menu.createDatabase": "New database",
"connection.sidebar.menu.refresh": "Refresh connection",
"connection.sidebar.menu.current": "Current",
"connection.sidebar.duplicate.backendUnavailable": "Failed to copy connection: backend interface unavailable",
"connection.sidebar.duplicate.noResult": "Failed to copy connection: backend returned no result",
"connection.sidebar.duplicate.success": "Connection copied: {{name}}",
"connection.sidebar.duplicate.failureFallback": "Failed to copy connection",
"connection.sidebar.disconnect.success": "Disconnected",
"connection.sidebar.delete.confirmTitle": "Confirm deletion",
"connection.sidebar.delete.confirmContent": "Are you sure you want to delete connection \"{{name}}\"?",
"connection.sidebar.delete.backendUnavailable": "Failed to delete connection: backend interface unavailable",
"connection.sidebar.delete.success": "Connection deleted",
"connection.sidebar.delete.failureFallback": "Failed to delete connection",
"find_in_database.title": "Search in database - {{dbName}}",
"find_in_database.placeholder.keyword": "Enter the string to search for...",
"find_in_database.match.contains": "Contains",
"find_in_database.match.exact": "Exact match",
"find_in_database.message.keyword_required": "Enter a search keyword",
"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.no_tables": "The current database has no tables",
"find_in_database.message.no_matches": "No matching data found",
"find_in_database.message.search_failed": "Search failed: {{detail}}",
"find_in_database.column.table_name": "Table",
"find_in_database.column.matched_columns": "Matching columns",
"find_in_database.column.match_count": "Hit rows",
"find_in_database.column.action": "Actions",
"find_in_database.tooltip.collapse_details": "Collapse details",
"find_in_database.tooltip.view_details": "View details",
"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.detail.title": "{{table}} - Matching row details",
"find_in_database.detail.row_count": "Rows: {{count}}",
"import_preview.title": "Import data preview",
"import_preview.action.start": "Start import",
"import_preview.status.loading_preview": "Loading preview data...",
"import_preview.status.importing": "Importing data...",
"import_preview.progress.processed_rows": "Processed {{current}} / {{total}} rows",
"import_preview.progress.success_count": "Success {{count}}",
"import_preview.progress.error_count": "Failed {{count}}",
"import_preview.preview.summary": "{{rows}} rows and {{columns}} fields",
"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.table_title": "Data preview (first 5 rows):",
"import_preview.error.preview_failed": "Preview failed",
"import_preview.error.preview_failed_detail": "Preview failed: {{detail}}",
"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.result.completed": "Import completed",
"import_preview.result.success_rows": "Successfully imported {{count}} rows",
"import_preview.result.failed_rows": "Failed {{count}} rows",
"import_preview.result.error_logs": "Error logs:",
"log_panel.title": "SQL execution log",
"log_panel.short_title": "Logs",
"log_panel.description": "Track execution status, duration, and errors for quick review.",
"log_panel.action.clear": "Clear logs",
"log_panel.action.close": "Close panel",
"log_panel.empty": "No SQL execution logs",
"log_panel.column.time": "Time",
"log_panel.column.status": "Status",
"log_panel.column.duration": "Duration",
"log_panel.column.sql_message": "SQL / Message",
"log_panel.affected_rows": "Affected: {{count}}",
"table_overview.status.loading_tables": "Loading table information...",
"table_overview.message.load_tables_failed": "Failed to load table information: {{detail}}",
"table_overview.message.pinned": "Table pinned",
"table_overview.message.unpinned": "Table unpinned",
"table_overview.message.copy_structure_success": "Table structure copied to clipboard",
"table_overview.message.copy_structure_failed": "Failed to copy table structure: {{detail}}",
"table_overview.message.exporting_table_format": "Exporting {{table}} as {{format}}...",
"table_overview.message.export_success": "Export succeeded",
"table_overview.message.export_failed": "Export failed: {{detail}}",
"table_overview.message.delete_table_success": "Table deleted",
"table_overview.message.delete_table_failed": "Failed to delete table: {{detail}}",
"table_overview.table_data_action.truncate.label": "Truncate Table",
"table_overview.table_data_action.clear.label": "Clear Table",
"table_overview.modal.table_data_action.title": "Confirm {{action}}",
"table_overview.modal.table_data_action.content": "{{action}} will permanently delete all data in table \"{{table}}\". This action cannot be undone. Continue?",
"table_overview.message.table_data_action_loading": "Running {{action}} on {{table}}...",
"table_overview.message.table_data_action_success": "{{action}} succeeded",
"table_overview.message.table_data_action_failed": "{{action}} failed: {{detail}}",
"table_overview.message.rename_table_success": "Table renamed",
"table_overview.message.rename_table_failed": "Failed to rename table: {{detail}}",
"table_overview.message.unknown_error": "Unknown error",
"table_overview.modal.delete_table.title": "Delete Table",
"table_overview.modal.delete_table.content": "Delete table \"{{table}}\"? This action cannot be undone.",
"table_overview.modal.rename_table.title": "Rename Table",
"table_overview.modal.rename_table.placeholder": "Enter a new table name",
"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",
"table_overview.toolbar.summary": "{{count}} tables · {{rows}} rows · {{size}}",
"table_overview.placeholder.search": "Search table names or comments...",
"table_overview.tooltip.sort": "Sort",
"table_overview.tooltip.card_view": "Card view",
"table_overview.tooltip.list_view": "List view",
"table_overview.tooltip.refresh": "Refresh",
"table_overview.sort.name": "Name",
"table_overview.sort.rows": "Rows",
"table_overview.sort.size": "Size",
"table_overview.metric.data_size": "Data size",
"table_overview.metric.index_size": "Index size",
"table_overview.metric.relative_size": "Relative size",
"table_overview.metric.engine": "Engine",
"table_overview.section.all": "All",
"table_overview.section.pinned": "Pinned",
"table_overview.row.engine_table": "{{engine}} table",
"table_overview.row.open_hint": "Double-click to open data, right-click for more actions",
"table_overview.status.updating_filter": "Updating filtered results...",
"table_overview.status.matching_rendered": "Matching {{matched}} tables, rendering {{rendered}}",
"table_overview.status.hidden_count_hint": "{{count}} more not rendered. Load more or narrow the search.",
"table_overview.empty.no_matches": "No matches",
"table_overview.empty.no_tables": "No tables",
"table_overview.action.show_more": "Show more tables ({{count}} remaining)",
"table_overview.menu.new_query": "New Query",
"table_overview.menu.design_table": "Design Table",
"table_overview.menu.copy_structure": "Copy Table Structure",
"table_overview.menu.backup_table_sql": "Back Up Table (SQL)",
"table_overview.menu.rename_table": "Rename Table",
"table_overview.menu.danger_operations": "Danger Operations",
"table_overview.menu.truncate_table": "Truncate Table",
"table_overview.menu.clear_table": "Clear Table",
"table_overview.menu.delete_table": "Delete Table",
"table_overview.menu.export_table_data": "Export Table Data",
"table_overview.menu.export_csv": "Export CSV",
"table_overview.menu.export_xlsx": "Export XLSX",
"table_overview.menu.export_json": "Export JSON",
"table_overview.menu.export_markdown": "Export Markdown",
"table_overview.menu.export_html": "Export HTML",
"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",
"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.mute_this_version": "Do Not Remind This Time",
"app.about.community.ai_book": "AI全书",
"app.about.description": "View version information, repository links, update status, and downloads.",
"app.about.field.author": "Author",
"app.about.field.community": "Community",
"app.about.field.update_status": "Update Status",
"app.about.field.version": "Version",
"app.about.message.load_failed": "Failed to get app info: {{error}}",
"app.about.project_links": "Project Links",
"app.about.title": "About GoNavi",
"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.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.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.backend.dialog.select_directory": "Select GoNavi Data Directory",
"app.data_root.backend.error.create_target_failed": "Unable to create target data directory: {{detail}}",
"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.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.read_source_failed": "Unable to read source data ({{entry}}): {{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.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.proxy.description": "Configure update checks, driver management, and connection network access that has no separate proxy.",
"app.proxy.enable": "Enable Global Proxy",
"app.proxy.host": "Proxy Host",
"app.proxy.host_placeholder": "Example: 127.0.0.1",
"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.password_optional": "Password (optional)",
"app.proxy.port": "Port",
"app.proxy.scope_hint": "* Applies to update checks, driver management network requests, and database connections without a separate proxy",
"app.proxy.section_title": "Global Proxy",
"app.proxy.title": "Global Proxy Settings",
"app.proxy.type": "Proxy Type",
"app.proxy.username_optional": "Username (optional)",
"proxy.backend.error.unsupported_type": "Unsupported proxy type: {{type}}",
"proxy.backend.error.host_empty": "Proxy host is empty",
"proxy.backend.error.port_invalid": "Invalid proxy port: {{port}}",
"proxy.backend.error.remote_addr_invalid": "Invalid remote address: {{address}}",
"proxy.backend.error.listen_failed": "Failed to create local proxy listener: {{detail}}",
"proxy.backend.error.socks5_dialer_failed": "Failed to create SOCKS5 proxy dialer: {{detail}}",
"proxy.backend.error.socks5_connect_failed": "SOCKS5 proxy connection failed: {{detail}}",
"proxy.backend.error.http_connect_failed": "Failed to connect to HTTP proxy: {{detail}}",
"proxy.backend.error.http_connect_write_failed": "Failed to send HTTP CONNECT request: {{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}}",
"app.startup_readiness.loading_local_config": "Loading local configuration...",
"app.startup_readiness.loading_security_config": "Loading security configuration...",
"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",
"security_update.banner.title": "Saved configurations can be securely updated",
"security_update.banner.action.start_now": "Update Now",
"security_update.banner.action.view_details": "View Details",
"security_update.banner.action.restart_update": "Restart Update",
"security_update.banner.action.retry_check": "Check Again",
"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.intro.title": "Saved Configuration Security Update",
"security_update.intro.subtitle": "Complete a local configuration update before using the new secure storage.",
"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.action.details": "View Details",
"security_update.intro.action.later": "Remind Me Later",
"security_update.intro.action.start_now": "Update Now",
"security_update.progress.default_detail": "The currently usable configuration will be kept during the update. Please wait.",
"security_update.settings.title": "Security Update",
"security_update.settings.subtitle": "Manage the security update status and pending items for saved configurations.",
"security_update.settings.action.retry_check": "Check Again",
"security_update.settings.action.restart_update": "Restart Update",
"security_update.settings.action.start": "Start Update",
"security_update.settings.action.close": "Close",
"security_update.settings.current_status": "Current status: {{status}}",
"security_update.settings.scope_title": "Affected Scope",
"security_update.settings.summary.total": "Total",
"security_update.settings.summary.updated": "Updated",
"security_update.settings.summary.pending": "Pending",
"security_update.settings.summary.skipped": "Skipped",
"security_update.settings.summary.failed": "Failed",
"security_update.settings.pending_list": "Pending Items",
"security_update.settings.empty_pending": "No pending items",
"security_update.settings.item_status": "Status: {{status}}",
"security_update.settings.item_severity": "Level: {{severity}}",
"security_update.settings.item_default_message": "This item needs more attention before the security update can be completed.",
"security_update.settings.recent_result": "Latest Result",
"security_update.settings.backup_path": "Backup location: ",
"security_update.settings.last_error": "Latest error: ",
"security_update.status.pending.label": "Pending",
"security_update.status.pending.description": "A security update is available. You can start now or continue later.",
"security_update.status.postponed.label": "Pending",
"security_update.status.postponed.description": "This security update has been postponed. The currently usable configuration is still kept.",
"security_update.status.in_progress.label": "Updating",
"security_update.status.in_progress.description": "Checking and updating secure storage for saved configurations.",
"security_update.status.needs_attention.label": "Needs Attention",
"security_update.status.needs_attention.description": "The update is not complete yet. A few configurations need your attention.",
"security_update.status.completed.label": "Completed",
"security_update.status.completed.description": "Saved configurations have completed the security update.",
"security_update.status.rolled_back.label": "Rolled Back",
"security_update.status.rolled_back.description": "This update did not complete. The system kept the currently usable configuration.",
"security_update.status.not_detected.label": "Not Detected",
"security_update.status.not_detected.description": "No security update needs attention right now.",
"security_update.action.open_connection": "Open Connection",
"security_update.action.open_proxy_settings": "Proxy Settings",
"security_update.action.open_ai_settings": "AI Settings",
"security_update.action.retry_update": "Check Again",
"security_update.action.view_details": "View Details",
"security_update.item_status.pending": "Pending",
"security_update.item_status.updated": "Updated",
"security_update.item_status.needs_attention": "Needs Attention",
"security_update.item_status.skipped": "Skipped",
"security_update.item_status.failed": "Failed",
"security_update.severity.high": "High Risk",
"security_update.severity.medium": "Medium Risk",
"security_update.severity.low": "Low Risk",
"security_update.repair.warning.connection_not_found": "The matching connection was not found. Check the latest status first.",
"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.title": "Global Proxy",
"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.error.capability_unavailable": "Security update capability is unavailable",
"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.title": "Settings Center",
"app.shortcuts.action.focusSidebarSearch.description": "Focus the left connection tree search box",
"app.shortcuts.action.focusSidebarSearch.label": "Focus Sidebar Search",
"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 SQL statement at the cursor in the query editor",
"app.shortcuts.action.selectCurrentStatement.label": "Select Current Statement",
"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.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.toggleTheme.description": "Switch between light and dark themes",
"app.shortcuts.action.toggleTheme.label": "Toggle Theme",
"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.showSlowQueries.description": "View slow SQL history for the current connection (default threshold 500ms)",
"app.shortcuts.action.showSlowQueries.label": "Slow SQL History",
"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.tools.entry.snippets.description": "Manage SQL snippets and prefix completion.",
"app.tools.entry.snippets.title": "Snippet Management",
"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.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.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.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.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_title": "Theme Mode",
"app.theme.nav.appearance.description": "Scale, font, and transparency",
"app.theme.nav.appearance.title": "Appearance Parameters",
"app.theme.nav.theme.description": "Light and dark switching",
"app.theme.nav.theme.title": "Theme Mode",
"app.theme.navigation_title": "Settings Navigation",
"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.theme_settings_description": "Switch light and dark themes while keeping the overall visual style consistent.",
"app.theme.theme_settings_title": "Theme Settings",
"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.tab_display.title": "Tab Label Display",
"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.layout.single": "Single line",
"app.theme.tab_display.layout.double": "Double line",
"app.theme.tab_display.badge.current": "Current",
"app.theme.tab_display.row.primary": "Primary row",
"app.theme.tab_display.row.secondary": "Secondary row",
"app.theme.tab_display.action.move_up": "Move up",
"app.theme.tab_display.action.move_down": "Move down",
"app.theme.tab_display.preview.prefix": "Current preview: ",
"app.theme.tab_display.preview.default_label": "Default label",
"app.theme.tab_display.preview.secondary": ", secondary row {{labels}}",
"app.theme.tab_display.preview.focused": "; selected {{label}}",
"app.theme.tab_display.element.connection.label": "Connection",
"app.theme.tab_display.element.connection.description": "Connection alias or environment name, for example DEV",
"app.theme.tab_display.element.kind.label": "Object type",
"app.theme.tab_display.element.kind.description": "Type labels such as SQL / TABLE / VIEW",
"app.theme.tab_display.element.object.label": "Object name",
"app.theme.tab_display.element.object.description": "Core names such as table, query, or resource names",
"app.theme.tab_display.element.database.label": "Database",
"app.theme.tab_display.element.database.description": "Current DB / catalog name",
"app.theme.tab_display.element.schema.label": "Schema",
"app.theme.tab_display.element.schema.description": "schema / owner prefix",
"app.theme.tab_display.element.host.label": "Host/IP",
"app.theme.tab_display.element.host.description": "Connection target address summary",
"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.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.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.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.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",
"app.tools.entry.shortcuts.description": "View and adjust global shortcut bindings.",
"app.tools.entry.shortcuts.title": "Shortcut Manager",
"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.data_compare.description": "Analyze inserted, updated, deleted, and unchanged rows by primary key.",
"app.tools.entry.data_compare.title": "Data Compare",
"app.tools.entry.sync.description": "Open the cross-source sync workflow.",
"app.tools.entry.sync.title": "Data Sync",
"app.tools.title": "Tools Center",
"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.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.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, or MySQL Workbench XML are supported",
"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.export_connection_package_unsupported": "Browser mock does not support recovery package export",
"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.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.provider.test_failed_detail": "Connection test failed: {{detail}}",
"app.browser_mock.provider.test_success": "Endpoint connectivity test succeeded",
"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.check_failed": "Check for updates failed: {{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_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.online_update_unsupported": "Online update is not supported on this platform: {{platform}}",
"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.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",
"connection.delete": "Delete Connection",
"connection.edit": "Edit Connection",
"connection.new": "New Connection",
"connection.test": "Test Connection",
"connection.unnamed": "Unnamed Connection",
"database.unnamed": "Unnamed Database",
"database.label": "Database",
"connection.copy_suffix": " - Copy",
"query.format": "Format SQL",
"query.new": "New Query",
"query.run": "Run",
"query.save": "Save Query",
"saved_query.default_name": "Query {{index}}",
"query.stop": "Stop",
"message_publish_modal.title": "Test message publish",
"message_publish_modal.title_with_connection": "Test message publish · {{connectionName}}",
"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.exchange.label": "Exchange (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.placeholder": "Example: events.topic",
"message_publish_modal.field.routing_key.label": "Routing Key (optional)",
"message_publish_modal.field.routing_key.extra": "Leave empty to use the current Queue name by default.",
"message_publish_modal.field.routing_key.placeholder": "Example: orders.queue",
"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.tag.label": "Tag (optional)",
"message_publish_modal.field.tag.extra": "Leave empty to skip filtering or writing a Tag.",
"message_publish_modal.field.delay_level.label": "Delay Level (optional)",
"message_publish_modal.field.delay_level.extra": "RocketMQ uses fixed delay levels. 0 sends immediately.",
"message_publish_modal.field.body_mode.label": "Message body type",
"message_publish_modal.field.body.label": "Message body",
"message_publish_modal.field.body.required": "Enter the message body",
"message_publish_modal.field.body.extra": "JSON mode requires valid JSON. Text mode sends the content as-is.",
"message_publish_modal.field.body.placeholder": "Enter the message body",
"message_publish_modal.field.headers.label": "Headers (optional)",
"message_publish_modal.field.headers.extra": "Must be a JSON object, for example {{example}}.",
"message_publish_modal.field.properties.label": "Properties (optional)",
"message_publish_modal.field.properties.extra": "Must be a JSON object, for example {{example}}.",
"message_publish_modal.option.no_delay": "No delay",
"message_publish_modal.option.text": "Text",
"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.field.body": "Message body",
"message_publish.field.message_key": "Message Key",
"message_publish.error.destination_required": "Enter a target Topic / Queue",
"message_publish.error.required_field": "{{field}} is required",
"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.unsupported_type": "The current data source does not support test message publishing: {{type}}",
"message_publish.presentation.rabbitmq.destination_placeholder": "Example: orders.queue",
"message_publish.presentation.rabbitmq.destination_required": "Enter a Queue",
"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.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.destination_placeholder": "Example: orders.events",
"message_publish.presentation.topic_required": "Enter a Topic",
"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.success_hint": "Tag, Keys, Delay Level, and Properties are written into the RocketMQ message attributes.",
"message_publish.presentation.keys_label": "Message Keys (optional)",
"message_publish.presentation.rocketmq.key_placeholder": "Enter multiple Key values separated by commas",
"message_publish.presentation.rocketmq.tag_placeholder": "Example: TagA",
"message_publish.presentation.mqtt.destination_placeholder": "Example: devices/device-001/telemetry",
"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.success_hint": "QoS and retain can be set separately. Empty fields use the defaults from the current connection.",
"message_publish.presentation.kafka.destination_placeholder": "Example: orders.events",
"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.success_hint": "Headers are sent as Kafka Record Headers.",
"message_publish.presentation.key_label": "Message Key (optional)",
"message_publish.presentation.kafka.key_placeholder": "Optional. In JSON mode, enter one valid JSON line.",
"connection_modal.action.browse": "Browse...",
"connection_modal.action.disable": "Disable",
"connection_modal.action.discover_members": "Discover members",
"connection_modal.action.enable_and_prefer": "Enable and prefer",
"connection_modal.badge.current_editing": "Editing",
"connection_modal.badge.preferred": "Preferred",
"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.cluster_additional_hosts": "Cluster additional hosts",
"connection_modal.field.connection_timeout_seconds": "Connection timeout (seconds)",
"connection_modal.field.connection_timeout_seconds_ascii": "Connection timeout (seconds)",
"connection_modal.field.default_database_optional": "Default database (optional)",
"connection_modal.field.display_databases_optional": "Display databases (optional)",
"connection_modal.field.file_path_absolute": "File path (absolute path)",
"connection_modal.field.host_address": "Host address",
"connection_modal.field.password_optional": "Password (optional)",
"connection_modal.field.port": "Port",
"connection_modal.field.port_plain": "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.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.service_name": "Service name",
"connection_modal.field.defaultDatabase.placeholder": "For example: appdb",
"connection_modal.field.serviceName.placeholder": "For example: ORCLPDB1",
"connection_modal.field.clickHouseProtocol.auto": "Auto",
"connection_modal.field.oceanBaseProtocol.label": "OceanBase protocol",
"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.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.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.username": "Username",
"connection_modal.field.username.optional_placeholder": "Leave empty when authentication is disabled",
"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.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.transport.agent_bridge": "Agent Bridge",
"connection_modal.jvm.diagnostic.transport.arthas_tunnel": "Arthas Tunnel",
"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_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.message.srv_with_ssh_dns_warning": "SRV with SSH Tunnel may depend on local DNS resolution. If resolution fails, use standard hosts.",
"connection_modal.messageQueue.kafka.defaultTopic.label": "Default Topic (optional)",
"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.placeholder": "For example: orders.events",
"connection_modal.messageQueue.rocketmq.defaultTopic.label": "Default Topic (optional)",
"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.placeholder": "For example: orders.events",
"connection_modal.messageQueue.mqtt.defaultTopicFilter.label": "Default Topic / Filter (optional)",
"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.placeholder": "For example: devices/+/telemetry",
"connection_modal.messageQueue.rabbitmq.defaultVirtualHost.label": "Default Virtual Host (optional)",
"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.placeholder": "For example: / or orders-vhost",
"connection_modal.messageQueue.topology.cluster.label": "Cluster mode",
"connection_modal.messageQueue.kafka.topology.single.label": "Single Broker",
"connection_modal.messageQueue.kafka.topology.single.description": "Configure one bootstrap broker for local or simple environments.",
"connection_modal.messageQueue.kafka.topology.cluster.description": "Configure multiple bootstrap brokers to improve discovery and failover success.",
"connection_modal.messageQueue.rocketmq.topology.single.label": "Single NameServer",
"connection_modal.messageQueue.rocketmq.topology.single.description": "Configure one NameServer for local or simple environments.",
"connection_modal.messageQueue.rocketmq.topology.cluster.description": "Configure multiple NameServers to improve route discovery and failover success.",
"connection_modal.messageQueue.mqtt.topology.single.label": "Single Broker",
"connection_modal.messageQueue.mqtt.topology.single.description": "Configure one broker for local or simple environments.",
"connection_modal.messageQueue.mqtt.topology.cluster.description": "Configure multiple brokers to improve connection discovery and failover success.",
"connection_modal.messageQueue.kafka.extraBrokers.label": "Additional Broker addresses",
"connection_modal.messageQueue.kafka.extraBrokers.help": "Enter multiple broker addresses in host:port format and press Enter to confirm.",
"connection_modal.messageQueue.kafka.extraBrokers.placeholder": "For example: 10.10.0.12:9092, 10.10.0.13:9092",
"connection_modal.messageQueue.rocketmq.extraNameServers.label": "Additional NameServer addresses",
"connection_modal.messageQueue.rocketmq.extraNameServers.help": "Enter multiple NameServer addresses in host:port format and press Enter to confirm.",
"connection_modal.messageQueue.rocketmq.extraNameServers.placeholder": "For example: 10.10.0.12:9876, 10.10.0.13:9876",
"connection_modal.messageQueue.mqtt.extraBrokers.label": "Additional Broker addresses",
"connection_modal.messageQueue.mqtt.extraBrokers.help": "Enter multiple broker addresses in host:port format and press Enter to confirm.",
"connection_modal.messageQueue.mqtt.extraBrokers.placeholder": "For example: 10.10.0.12:1883, 10.10.0.13:1883",
"connection_modal.redis.topology.single.label": "Standalone mode",
"connection_modal.redis.topology.single.description": "Connect to one Redis node.",
"connection_modal.redis.topology.cluster.label": "Cluster mode",
"connection_modal.redis.topology.cluster.description": "Redis Cluster with multiple seed nodes.",
"connection_modal.redis.topology.sentinel.label": "Sentinel mode",
"connection_modal.redis.topology.sentinel.description": "Discover the primary node through Sentinel for primary-replica high availability.",
"connection_modal.redis.hosts.sentinel.label": "Additional Sentinel node addresses",
"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.placeholder": "For example: 10.10.0.12:26379, 10.10.0.13:26379",
"connection_modal.redis.hosts.cluster.label": "Additional cluster node addresses",
"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.placeholder": "For example: 10.10.0.12:6379, 10.10.0.13:6379",
"connection_modal.redis.sentinel.master.label": "Sentinel master name",
"connection_modal.redis.sentinel.master.help": "Enter the monitor name from the Sentinel configuration, for example mymaster.",
"connection_modal.redis.sentinel.master.required": "Enter the Sentinel master name",
"connection_modal.redis.sentinel.master.placeholder": "For example: mymaster",
"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.sentinelUser.label": "Sentinel username (optional)",
"connection_modal.redis.credentials.sentinelUser.placeholder": "Leave empty when Sentinel does not use an ACL username",
"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.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.databaseScope.label": "Databases to show (empty shows all)",
"connection_modal.redis.databaseScope.help": "Selectable after the connection test succeeds",
"connection_modal.redis.databaseScope.placeholder": "Select databases to show",
"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.topology.single.label": "Standalone mode",
"connection_modal.mongodb.topology.replica.label": "Replica set / multi-node",
"connection_modal.mongodb.discovery.standard.label": "Standard address",
"connection_modal.mongodb.discovery.standard.description": "Connect directly with host:port or use a replica set node list.",
"connection_modal.mongodb.discovery.srv.label": "SRV address",
"connection_modal.mongodb.discovery.srv.description": "Use mongodb+srv and let DNS discover target nodes.",
"connection_modal.mongodb.discovery.current": "Current",
"connection_modal.mongodb.discovery.srv_ssh_warning": "When SRV and SSH tunnel are both enabled, local DNS resolution may be required.",
"connection_modal.mongodb.replica.hosts.srv.label": "Additional SRV hosts (optional)",
"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.placeholder": "For example: cluster-a.example.com, cluster-b.example.com",
"connection_modal.mongodb.replica.hosts.standard.label": "Additional node addresses",
"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.placeholder": "For example: 10.10.0.12:27017, 10.10.0.13:27017",
"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.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.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.members.role": "Role",
"connection_modal.mongodb.members.health": "Health",
"connection_modal.mongodb.members.health.ok": "Healthy",
"connection_modal.mongodb.members.health.error": "Unhealthy",
"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.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.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_tls": "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_description": "Try SSL first and fall back if the server does not require it.",
"connection_modal.network.ssl_mode.required_description": "Require SSL and fail if encrypted connection cannot be established.",
"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.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.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.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.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.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.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.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.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.section.advanced_connection": "Advanced connection",
"connection_modal.section.config_sections": "Configuration sections",
"connection_modal.status.disabled": "Disabled",
"connection_modal.status.enabled": "Enabled",
"connection_modal.status.healthy": "Healthy",
"connection_modal.status.unhealthy": "Unhealthy",
"connection_modal.switch.off": "Off",
"connection_modal.switch.on": "On",
"connection_modal.table.health": "Health",
"connection_modal.table.role": "Role",
"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.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.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_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",
"sidebar.batch_databases": "Batch database operations",
"sidebar.batch_tables": "Batch table operations",
"connection_modal.ssl_hint.mysql_like": "Choose the SSL/TLS mode required by the database security policy.",
"connection_modal.ssl_hint.dameng": "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.ssl_hint.mongodb": "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.secret.new_value_replaces_saved": "New value will replace the saved secret.",
"connection_modal.badge.current": "Current",
"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.driver.current": "Current",
"connection_modal.message.driver_unavailable_title": "{{name}} driver unavailable",
"connection_modal.action.open_driver_manager": "Open Driver Manager",
"connection_modal.action.cancel": "Cancel",
"connection_modal.placeholder.uri_example_postgres": "postgresql://user:pass@localhost:5432/appdb?sslmode=require",
"connection_modal.message.uri_generated": "URI generated",
"connection_modal.message.uri_generate_failed": "Failed to generate URI",
"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.message.uri_parsed": "URI parsed into the form",
"connection_modal.message.uri_parse_failed": "Failed to parse URI",
"connection_modal.message.uri_empty_copy": "No URI to copy",
"connection_modal.message.uri_copied": "URI copied",
"connection_modal.message.copy_failed": "Copy failed",
"connection_modal.message.select_ssh_key_failed": "Failed to select SSH private key: {{error}}",
"connection_modal.error.unknown": "Unknown error",
"connection_modal.message.select_database_file_failed": "Failed to select database file: {{error}}",
"connection_modal.message.save_backend_unavailable": "Save is unavailable because the backend API is not ready",
"connection_modal.message.save_updated_disconnected": "Configuration saved (not connected)",
"connection_modal.message.save_created_disconnected": "Configuration saved (not connected)",
"connection_modal.message.save_security_refresh_failed": "Configuration saved, but security metadata could not be refreshed",
"connection_modal.message.save_failed": "Failed to save connection",
"connection_modal.message.test_requires_new_password": "Enter the new connection password before testing.",
"connection_modal.secret.blocking.redis_sentinel": "Enter a new Sentinel password before testing, or cancel clearing the saved Sentinel password",
"connection_modal.test.redis_database_list_timeout": "Connected, but loading the Redis database list timed out (>{{seconds}} seconds)",
"connection_modal.test.redis_database_list_failure": "Connected, but failed to load the Redis database list: {{detail}}",
"connection_modal.message.test_requires_new_ssh_password": "Enter the new SSH password before testing.",
"connection_modal.message.test_requires_new_proxy_password": "Enter the new proxy password before testing.",
"connection_modal.message.test_requires_new_tunnel_password": "Enter the new HTTP Tunnel password before testing.",
"connection_modal.message.test_requires_new_replica_password": "Enter the new replica password before testing.",
"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.driver_not_enabled": "Driver is not installed or enabled",
"connection_modal.message.connection_params_incomplete": "Connection parameters are incomplete",
"connection_modal.message.test_timeout": "Operation timed out after {{seconds}} seconds",
"connection_modal.message.database_list_timeout": "Operation timed out after {{seconds}} seconds",
"connection_modal.message.no_visible_schema": "No visible schema was returned",
"connection_modal.message.no_visible_databases": "No visible databases were returned",
"connection_modal.message.database_list_failed": "Failed to load database list: {{error}}",
"connection_modal.message.connection_rejected": "Connection rejected",
"connection_modal.message.required_fields_before_test": "Fill in the required fields before testing",
"connection_modal.message.test_failed_detail": "Test failed: {{detail}}",
"connection_modal.error.unknown_exception": "Unknown error",
"connection_modal.message.member_discovery_failed": "Failed to discover MongoDB members",
"connection_modal.message.member_discovery_success": "Discovered {{count}} members",
"connection_modal.message.unsupported_jvm_modes": "The selected JVM access mode is not supported",
"connection_modal.message.unsupported_jvm_diagnostic_transport": "The selected JVM diagnostic transport is not supported",
"connection_modal.message.dameng_ssl_cert_required": "Dameng SSL requires certificate and private key paths",
"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.unsupported_jvm_modes_current": "This connection contains unsupported JVM access modes",
"connection_modal.group.relational": "Relational databases",
"connection_modal.group.chinese_databases": "Chinese databases",
"connection_modal.step1.group.nosql": "NoSQL databases",
"connection_modal.step1.group.relational": "Relational databases",
"connection_modal.step1.group.domestic": "Domestic databases",
"connection_modal.step1.group.timeseries": "Time-series databases",
"connection_modal.step1.group.other": "Other",
"connection_modal.group.time_series": "Time-series databases",
"connection_modal.group.other": "Other",
"connection_modal.db_type.custom": "Custom",
"connection_modal.layout.mysql_compatible": "MySQL-compatible connection",
"connection_modal.layout.mongodb": "MongoDB connection",
"connection_modal.layout.redis": "Redis connection",
"connection_modal.layout.postgres_compatible": "PostgreSQL-compatible connection",
"connection_modal.layout.oracle": "Oracle connection",
"connection_modal.layout.file": "File database connection",
"connection_modal.layout.custom": "Custom driver connection",
"connection_modal.layout.jvm": "JVM runtime connection",
"connection_modal.layout.generic_sql": "Generic SQL connection",
"connection_modal.db_type_hint.custom": "Connect with a custom driver and DSN.",
"connection_modal.db_type_hint.redis": "Connect to Redis standalone or Redis Cluster.",
"connection_modal.db_type_hint.mongodb": "Connect to MongoDB standalone, Replica Set, or SRV addresses.",
"connection_modal.db_type_hint.file": "Select a local SQLite or DuckDB database file.",
"connection_modal.db_type_hint.standard": "Enter host, port, authentication details, and an optional database.",
"connection_modal.step1.hint.jvm": "JMX / Endpoint / Agent",
"connection_modal.step1.hint.custom": "Custom driver and DSN",
"connection_modal.step1.hint.redis": "Single node / cluster",
"connection_modal.step1.hint.mongodb": "Single node / replica set",
"connection_modal.step1.hint.oceanBase": "MySQL / Oracle tenant",
"connection_modal.step1.hint.file": "Local file connection",
"connection_modal.step1.hint.standard": "Standard connection configuration",
"connection_modal.step.select_source": "Select data source",
"connection_modal.step.select_source_description": "Choose the connection type to create.",
"connection_modal.message.driver_not_enabled_with_name_short": "{{name}} driver is not installed or enabled. Open Driver Manager first.",
"connection_modal.section.basic.title": "Basic information",
"connection_modal.section.basic.description": "Name the connection and enter the target, driver, and authentication details.",
"connection_modal.field.connection_name": "Connection name",
"connection_modal.placeholder.jvm_name": "JVM connection name",
"connection_modal.placeholder.connection_name": "Connection name",
"connection_modal.field.uri": "URI",
"connection_modal.help.uri": "Paste a full connection URI or generate one from the current form.",
"connection_modal.action.generate_uri": "Generate URI",
"connection_modal.action.parse_uri": "Parse URI",
"connection_modal.action.copy_uri": "Copy URI",
"connection_modal.secret.clear_saved_uri": "Clear saved URI",
"connection_modal.secret.saved_uri_description": "A connection URI is already stored securely. Leave this empty to keep using it.",
"connection_modal.field.driver_name": "Driver name",
"connection_modal.field.driver.placeholder": "For example: mysql, postgres",
"connection_modal.validation.driver_name_required": "This field is required",
"connection_modal.placeholder.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.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.secret.clear_saved_dsn": "Clear saved DSN",
"connection_modal.secret.saved_dsn_description": "A DSN is already stored securely. Leave this empty to keep using it.",
"connection_modal.message.unsupported_jvm_modes_detected": "Unsupported JVM access modes detected",
"connection_modal.jvm.target_title": "JVM target",
"connection_modal.jvm.target_description": "Configure the host, port, and access method for the JVM management endpoint.",
"connection_modal.field.host": "Host",
"connection_modal.validation.jvm_host_required": "This field is required",
"connection_modal.field.primary_port": "Primary port",
"connection_modal.validation.jvm_port_required": "This field is required",
"connection_modal.section.network.title": "Network and security",
"connection_modal.section.network.description": "Configure SSL/TLS, SSH Tunnel, proxy, and HTTP Tunnel options.",
"connection_modal.message.current_driver_not_enabled": "The current driver is not installed or enabled",
"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.network.nav_description": "Configure network and security options for this connection.",
"connection_modal.section.appearance.title": "Appearance",
"connection_modal.section.appearance.description": "Set the icon and color shown for this connection in the sidebar.",
"connection_modal.appearance.icon": "Icon",
"connection_modal.appearance.current_icon": "Current icon: {{icon}}",
"connection_modal.db_icon_label.custom": "Custom",
"connection_modal.appearance.color": "Color",
"connection_modal.appearance.custom_color": "Custom color",
"connection_modal.appearance.preview": "Preview",
"connection_modal.placeholder.connection_name_fallback": "Connection name",
"connection_modal.action.reset_default": "Reset default",
"connection_modal.message.connection_failed": "Connection failed",
"connection_modal.action.previous_step": "Previous",
"connection_modal.message.connection_success": "Connection succeeded",
"connection_modal.action.view_reason": "View reason",
"connection_modal.action.test": "Test connection",
"connection_modal.action.save": "Save",
"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.title.edit": "Edit connection",
"connection_modal.title.edit_description": "Edit the {{type}} connection configuration.",
"connection_modal.title.create": "New {{type}} connection",
"connection_modal.title.create_description": "Enter and save the connection configuration.",
"connection_modal.test_error.title": "Connection test failure details",
"connection_modal.test_error.description": "View the full error returned by the backend.",
"connection_modal.action.close": "Close",
"connection_modal.test_error.empty": "No error details",
"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.duplicated_connection": "Duplicated {{name}}.",
"sidebar.message.duplicate_failed": "Failed to duplicate connection.",
"sidebar.message.jvm_provider_probe_failed_with_diagnostic": "JVM provider probe failed: {{error}}. Diagnostic enhancement entry remains available.",
"sidebar.message.jvm_provider_probe_failed": "Failed to probe JVM providers: {{error}}",
"sidebar.error.unknown": "Unknown error",
"sidebar.message.jvm_provider_probe_exception_with_diagnostic": "JVM provider probe exception: {{error}}. Diagnostic enhancement entry remains available.",
"sidebar.message.jvm_provider_probe_exception": "JVM provider probe failed: {{error}}",
"sidebar.message.connection_failed": "Connection failed: {{error}}",
"sidebar.message.load_jvm_resources_failed": "Failed to load JVM resources: {{error}}",
"sidebar.message.load_tables_failed": "Failed to load objects: {{error}}",
"sidebar.message.table_pinned": "Table pinned",
"sidebar.message.table_unpinned": "Table unpinned",
"sidebar.message.table_structure_copied": "Table structure copied.",
"sidebar.message.exporting_table_format": "Exporting {{table}} as {{format}}...",
"sidebar.message.export_success": "Export succeeded.",
"sidebar.message.export_failed": "Export failed: {{error}}",
"sidebar.message.backing_up_database": "Backing up {{database}}...",
"sidebar.message.exporting_database_schema": "Exporting schema for {{database}}...",
"sidebar.message.exporting_database_backup": "Backing up {{database}} (schema and data)...",
"sidebar.message.schema_export_target_missing": "Target schema was not found, so export cannot continue.",
"sidebar.message.exporting_schema_structure": "Exporting structure for schema {{schema}}...",
"sidebar.message.exporting_schema_backup": "Backing up schema {{schema}} (structure and data)...",
"sidebar.message.export_tables_same_database_required": "Select tables from the same database.",
"sidebar.message.backing_up_selected_tables": "Backing up {{count}} selected tables...",
"sidebar.message.exporting_selected_table_schema": "Exporting schema for {{count}} selected tables...",
"sidebar.message.load_database_list_failed": "Failed to load databases: {{error}}",
"sidebar.message.load_table_list_failed": "Failed to load tables: {{error}}",
"sidebar.message.locate_external_sql_file_not_found": "SQL file was not found in external SQL directories: {{path}}",
"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_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_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.select_object_required": "Select at least one object.",
"sidebar.message.backing_up_selected_objects": "Backing up {{count}} selected objects...",
"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.export_success_skipped_views": "Export succeeded. {{count}} views were skipped for data export.",
"sidebar.modal.confirm_clear_selected_tables.title": "Confirm clear selected tables",
"sidebar.modal.confirm_clear_selected_tables.content": "Clear data in selected objects under {{connection}} / {{database}}? This cannot be undone.",
"sidebar.action.continue": "Continue",
"sidebar.action.cancel": "Cancel",
"sidebar.action.delete": "Delete",
"sidebar.message.clearing_selected_tables": "Clearing {{count}} selected tables...",
"sidebar.message.clear_success": "Clear completed.",
"sidebar.message.clear_failed": "Clear failed: {{error}}",
"sidebar.message.select_database_required": "Select at least one database.",
"sidebar.message.database_export_success": "Exported {{database}}.",
"sidebar.message.database_export_failed": "Failed to export {{database}}: {{error}}",
"sidebar.message.connection_config_not_found": "Connection configuration was not found.",
"sidebar.sql_file_exec.title": "Run external SQL file",
"sidebar.message.read_file_failed": "Failed to read file: {{error}}",
"sidebar.message.select_connection_or_database_first": "Select a connection or database first.",
"sidebar.message.schema_create_unsupported": "Schema creation is not supported for this database.",
"sidebar.message.schema_target_missing": "Select a database for schema creation.",
"sidebar.message.schema_created": "Schema created.",
"sidebar.message.operation_create_failed": "Create failed: {{error}}",
"sidebar.sql_file.default_name": "SQL file",
"sidebar.message.sql_file_context_incomplete": "SQL file context is incomplete.",
"sidebar.message.sql_file_path_incomplete": "SQL file path is incomplete, so it cannot be opened.",
"sidebar.message.select_host_before_large_sql_file": "Select a Host before running a large SQL file.",
"sidebar.message.read_sql_file_failed": "Failed to read SQL file: {{error}}",
"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.external_sql_file_delete_target_missing": "Could not find the SQL file to delete.",
"sidebar.message.external_sql_directory_parent_missing": "Could not find the location for creating a directory.",
"sidebar.message.external_sql_directory_rename_target_missing": "Could not find the directory to rename.",
"sidebar.message.external_sql_directory_delete_target_missing": "Could not find the SQL directory to delete.",
"sidebar.message.sql_file_name_required": "SQL file name is required.",
"sidebar.message.sql_directory_name_required": "Directory name is required.",
"sidebar.message.create_sql_file_failed": "Failed to create SQL file: {{error}}",
"sidebar.message.sql_file_created": "SQL file created.",
"sidebar.message.rename_sql_file_failed": "Failed to rename SQL file: {{error}}",
"sidebar.message.sql_file_renamed": "SQL file renamed.",
"sidebar.message.delete_sql_file_failed": "Failed to delete SQL file: {{error}}",
"sidebar.message.sql_file_deleted": "SQL file deleted.",
"sidebar.message.create_sql_directory_failed": "Failed to create directory: {{error}}",
"sidebar.message.sql_directory_created": "Directory created.",
"sidebar.message.rename_sql_directory_failed": "Failed to rename directory: {{error}}",
"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.sql_directory_renamed": "Directory renamed.",
"sidebar.message.delete_sql_directory_failed": "Failed to delete SQL directory: {{error}}",
"sidebar.message.sql_directory_deleted": "SQL directory deleted.",
"sidebar.message.add_sql_directory_database_required": "Select a database before adding an SQL directory.",
"sidebar.message.select_sql_directory_failed": "Failed to select SQL directory: {{error}}",
"sidebar.message.sql_directory_path_invalid": "SQL directory path is invalid.",
"sidebar.sql_directory.default_name": "SQL directory",
"sidebar.message.external_sql_directory_added": "SQL directory added.",
"sidebar.message.external_sql_directory_not_found": "SQL directory was not found.",
"sidebar.message.external_sql_directory_removed": "SQL directory removed.",
"sidebar.message.external_sql_directory_context_missing": "SQL directory context is missing.",
"sidebar.message.external_sql_directory_refreshed": "SQL directory refreshed.",
"sidebar.message.database_created": "Database created.",
"sidebar.message.create_failed": "Create failed: {{error}}",
"sidebar.modal.confirm_delete_database.title": "Delete database",
"sidebar.modal.confirm_delete_database.content": "Delete {{name}}? This cannot be undone.",
"sidebar.modal.confirm_delete_sql_file.title": "Delete SQL file",
"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_directory.title": "Delete SQL directory",
"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_table.title": "Delete table",
"sidebar.modal.confirm_delete_table.content": "Delete {{name}}? This cannot be undone.",
"sidebar.modal.confirm_table_data_action.title": "Confirm {{action}}",
"sidebar.modal.confirm_table_data_action.content": "{{action}} {{table}}? This cannot be undone.",
"sidebar.modal.confirm_delete_view.title": "Delete view",
"sidebar.modal.confirm_delete_view.content": "Delete {{name}}? This cannot be undone.",
"sidebar.modal.confirm_delete_routine.title": "Delete {{type}}",
"sidebar.modal.confirm_delete_routine.content": "Delete {{type}} {{name}}? This cannot be undone.",
"sidebar.search.scope.smart": "Smart",
"sidebar.search.scope_title": "Search scope",
"sidebar.search.scope_description": "Choose where the sidebar search should match.",
"sidebar.badge.recommended": "Recommended",
"sidebar.search.scope.smart_description": "Automatically narrows search based on the selected node.",
"sidebar.search.manual_scope": "Manual scope",
"sidebar.search.multi_select_supported": "Multiple scopes supported",
"sidebar.search.scope_hint": "Smart mode searches names, hosts, databases, and objects according to context.",
"sidebar.modal.confirm_delete.title": "Confirm delete",
"sidebar.modal.confirm_delete_tag.content": "Delete {{name}}?",
"sidebar.menu.edit_connection": "Edit connection",
"sidebar.menu.delete_connection": "Delete connection",
"sidebar.modal.confirm_delete_connection.content": "Delete {{name}}?",
"sidebar.message.delete_connection_backend_unavailable": "Delete connection is not available in this build.",
"sidebar.message.connection_deleted": "Connection deleted.",
"sidebar.message.delete_connection_failed": "Failed to delete connection.",
"sidebar.modal.confirm_delete_saved_query.content": "Delete saved query \"{{name}}\"? This action cannot be undone.",
"sidebar.search.placeholder": "Search...",
"sidebar.punctuation.list_separator": ", ",
"sidebar.command_search.label": "Search tables, connections, actions",
"sidebar.command_search.placeholder": "Search tables, connections, actions... or ask AI",
"sidebar.command_search.sync_to_filter_tooltip": "Sync input to the left-side filter",
"sidebar.command_search.sync_to_filter_aria": "Sync to left-side filter",
"sidebar.command_search.reset_filter": "Reset sidebar filter",
"sidebar.command_search.no_synced_filter": "No synced sidebar filter",
"sidebar.command_search.no_filter_content": "No filter text",
"sidebar.command_search.object_kind.all": "All",
"sidebar.command_search.object_kind.tables": "Tables",
"sidebar.command_search.object_kind.views": "Views",
"sidebar.command_search.object_kind.routines": "Routines",
"sidebar.command_search.object_kind.events": "Events",
"sidebar.command_search.object_kind.filter_aria": "Object filters",
"sidebar.command_search.scope.smart": "Smart",
"sidebar.command_search.scope.object": "Table objects",
"sidebar.command_search.scope.database": "Database",
"sidebar.command_search.scope.host": "Host",
"sidebar.command_search.scope.tag": "Tags",
"sidebar.command_search.scope.summary_smart": "Smart",
"sidebar.command_search.scope.title": "Search scope",
"sidebar.command_search.scope.description": "\"Smart\" automatically matches the most likely results; manual mode lets you combine filter dimensions.",
"sidebar.command_search.scope.recommended": "Recommended",
"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.manual_title": "Manual scope",
"sidebar.command_search.scope.multi_select": "Multiple selections supported",
"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.tooltip": "Search scope: {{scope}}",
"sidebar.command_search.scope.compact_smart": "Smart",
"sidebar.search.scope_tooltip": "Current search scope: {{scope}}",
"sidebar.search.scope.smart_short": "Smart",
"sidebar.rail.object_actions": "Object area quick actions",
"sidebar.rail.system_actions": "System actions",
"sidebar.action.new_group": "New group",
"sidebar.action.batch_tables": "Batch tables",
"sidebar.action.batch_databases": "Batch databases",
"sidebar.action.locate_current_table": "Locate current open table",
"sidebar.action.pin_table": "Pin table",
"sidebar.action.unpin_table": "Unpin table",
"sidebar.status.pinned": "Pinned",
"sidebar.v2_table_menu.meta.rows_empty": "— rows",
"sidebar.v2_table_menu.meta.rows": "{{count}} rows",
"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.unavailable": "Table stats unavailable",
"sidebar.v2_table_menu.meta.summary": "{{rows}} · {{data}} data · {{indexes}} indexes",
"sidebar.v2_table_menu.open_data": "View data",
"sidebar.v2_table_menu.design_table_detail": "columns / indexes / foreign keys",
"sidebar.v2_table_menu.open_in_new_tab": "Open in new tab",
"sidebar.v2_table_menu.metadata_section": "Metadata",
"sidebar.v2_table_menu.view_in_er": "View in ER diagram",
"sidebar.v2_table_menu.copy_section": "Copy",
"sidebar.v2_table_menu.copy_table_name": "Copy table name",
"sidebar.copy_object_name.label.table": "Table name",
"sidebar.copy_object_name.label.view": "View name",
"sidebar.copy_object_name.label.materialized_view": "Materialized view name",
"sidebar.copy_object_name.label.event": "Event name",
"sidebar.copy_object_name.empty": "{{label}} is empty and cannot be copied",
"sidebar.copy_object_name.copied": "{{label}} copied to clipboard",
"sidebar.copy_object_name.failed": "Failed to copy {{label}}: {{error}}",
"sidebar.v2_table_menu.copy_table_as_insert": "Copy entire table as {{keyword}}",
"sidebar.v2_table_menu.maintenance_section": "Maintenance",
"sidebar.v2_table_menu.rename_compact": "Rename...",
"sidebar.v2_table_menu.new_rollup": "New {{keyword}}",
"sidebar.v2_table_menu.backup_sql_dump": "Backup · {{keyword}}",
"sidebar.v2_table_menu.refresh_stats": "Refresh stats",
"sidebar.v2_table_menu.item_with_suffix": "{{label}} · {{suffix}}",
"sidebar.v2_table_menu.open_export_workbench": "Open export workbench...",
"sidebar.v2_table_menu.truncate_table": "Truncate table",
"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_group_menu.title": "Tables",
"sidebar.v2_table_group_menu.current_database": "Current database",
"sidebar.v2_table_group_menu.sort_name": "name",
"sidebar.v2_table_group_menu.sort_frequency": "usage frequency",
"sidebar.v2_table_group_menu.meta": "{{database}} · {{count}} tables · sorted by {{sort}}",
"sidebar.v2_database_menu.meta": "{{dialect}} · Database actions",
"sidebar.v2_database_menu.new_schema": "New schema",
"sidebar.v2_database_menu.new_materialized_view": "New materialized view",
"sidebar.v2_database_menu.new_external_catalog": "New external Catalog",
"sidebar.v2_database_menu.refresh_object_tree": "Refresh object tree",
"sidebar.v2_database_menu.export_backup_section": "Export and backup",
"sidebar.v2_database_menu.export_all_table_schema_sql": "Export all table schemas · SQL",
"sidebar.v2_database_menu.backup_all_tables_sql": "Back up all tables · schema + data SQL",
"sidebar.message.locate_current_table_unavailable": "The current tab has no table to locate",
"sidebar.locate.object.table": "Table",
"sidebar.locate.object.view": "View",
"sidebar.locate.object.materialized_view": "Materialized view",
"sidebar.locate.object.routine": "Function/procedure",
"sidebar.locate.object.trigger": "Trigger",
"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.active_connection.actions": "Connection actions",
"sidebar.modal.tag.edit_title": "Edit group",
"sidebar.modal.tag.create_title": "New group",
"sidebar.modal.tag.edit_description": "Update the group name and included connections.",
"sidebar.modal.tag.create_description": "Create a group to organize connections.",
"sidebar.field.tag_name": "Group name",
"sidebar.validation.tag_name_required": "Enter a group name.",
"sidebar.placeholder.tag_name": "Group name",
"sidebar.field.select_connections": "Select connections",
"sidebar.modal.create_database.title": "Create database",
"sidebar.field.database_name": "Database name",
"sidebar.validation.name_required": "Enter a name.",
"sidebar.modal.rename_database.title": "Rename database: {{name}}",
"sidebar.field.new_database_name": "Replacement database name",
"sidebar.validation.new_database_name_required": "Enter the replacement database name.",
"sidebar.field.schema_name": "Schema name",
"sidebar.validation.schema_name_required": "Enter the schema name.",
"sidebar.modal.rename_table.title": "Rename table: {{name}}",
"sidebar.field.new_table_name": "Replacement table name",
"sidebar.validation.new_table_name_required": "Enter the replacement table name.",
"sidebar.modal.rename_view.title": "Rename view: {{name}}",
"sidebar.field.new_view_name": "Replacement view name",
"sidebar.validation.new_view_name_required": "Enter the replacement view name.",
"sidebar.modal.batch_tables.title": "Batch table operations",
"sidebar.modal.batch_tables.description": "Select tables and views, then export or clear them in one operation.",
"sidebar.action.clear_tables": "Clear tables",
"sidebar.action.export_schema": "Export schema",
"sidebar.action.export_data_only": "Export data only",
"sidebar.action.backup_schema_data": "Back up schema and data",
"sidebar.field.select_connection": "Select connection",
"sidebar.placeholder.select_connection": "Select connection",
"sidebar.field.select_database": "Select database",
"sidebar.placeholder.select_connection_first": "Select a connection first",
"sidebar.modal.batch_tables.selection_hint": "Select the tables or views to process in this batch.",
"sidebar.placeholder.filter_table_view": "Filter tables and views",
"sidebar.filter.all_objects": "All objects",
"sidebar.filter.tables_only": "Tables only",
"sidebar.filter.views_only": "Views only",
"sidebar.filter.scope_filtered": "Filtered results",
"sidebar.filter.scope_all": "All results",
"sidebar.batch.filtered_count": "Filtered {{filtered}} / {{total}} objects",
"sidebar.action.select_all": "Select all",
"sidebar.action.clear_selection": "Clear selection",
"sidebar.action.invert_selection": "Invert selection",
"sidebar.batch.selected_objects": "Selected {{selected}} / {{total}} objects",
"sidebar.modal.batch_databases.title": "Batch database operations",
"sidebar.modal.batch_databases.description": "Select databases and export schemas or full backups.",
"sidebar.action.export_database_schema_count": "Export schemas ({{count}})",
"sidebar.action.backup_database_count": "Back up databases ({{count}})",
"sidebar.modal.batch_databases.selection_hint": "Select databases from the chosen connection.",
"sidebar.batch.selected_databases": "Selected {{selected}} / {{total}} databases",
"sidebar.sql_file_exec.cancel": "Cancel execution",
"sidebar.action.close": "Close",
"sidebar.sql_file_exec.file_size": "File size: ",
"sidebar.sql_file_exec.status_label": "Status: ",
"sidebar.sql_file_exec.status.running": "Running",
"sidebar.sql_file_exec.status.done": "Done",
"sidebar.sql_file_exec.status.cancelled": "Cancelled",
"sidebar.sql_file_exec.status.error": "Error",
"sidebar.sql_file_exec.executed_label": "Executed: ",
"sidebar.sql_file_exec.rows_separator": " rows | Failed: ",
"sidebar.sql_file_exec.rows_suffix": " rows",
"connection_modal.config_section.identity.title": "Identity",
"connection_modal.config_section.identity.description": "Configure the connection name, icon, and basic identity.",
"connection_modal.config_section.uri.title": "Connection URI",
"connection_modal.config_section.uri.description": "Enter, generate, or parse a connection URI.",
"connection_modal.config_section.target.title": "Target address",
"connection_modal.config_section.target.description": "Configure the host, port, and connection target.",
"connection_modal.config_section.fileTarget.title": "File database",
"connection_modal.config_section.fileTarget.description": "Select a local database file.",
"connection_modal.config_section.connectionMode.title": "Connection mode",
"connection_modal.config_section.connectionMode.description": "Configure standalone, primary/replica, cluster, or Replica Set mode.",
"connection_modal.config_section.mongoDiscovery.title": "MongoDB discovery",
"connection_modal.config_section.mongoDiscovery.description": "Discover and manage MongoDB members.",
"connection_modal.config_section.replica.title": "Replica nodes",
"connection_modal.config_section.replica.description": "Configure replica or additional nodes.",
"connection_modal.config_section.service.title": "Service and database",
"connection_modal.config_section.service.description": "Configure service name, default database, and visible database scope.",
"connection_modal.config_section.mongoPolicy.title": "MongoDB policy",
"connection_modal.config_section.mongoPolicy.description": "Configure MongoDB authentication, readPreference, and save policy.",
"connection_modal.config_section.credentials.title": "Credentials",
"connection_modal.config_section.credentials.description": "Configure username, password, and saved credentials.",
"connection_modal.config_section.databaseScope.title": "Database scope",
"connection_modal.config_section.databaseScope.description": "Choose which databases are shown after connecting.",
"connection_modal.config_section.customDriver.title": "Custom driver",
"connection_modal.config_section.customDriver.description": "Configure the custom driver name.",
"connection_modal.config_section.customDsn.title": "Custom DSN",
"connection_modal.config_section.customDsn.description": "Configure a driver-specific DSN.",
"connection_modal.config_section.jvmRuntime.title": "JVM runtime",
"connection_modal.config_section.jvmRuntime.description": "Configure JVM access modes and diagnostics.",
"connection_modal.field.password": "Password",
"sidebar.menu.refresh": "Refresh",
"sidebar.search.scope.object": "Object",
"sidebar.search.scope.database": "Database",
"sidebar.search.scope.host": "Host",
"sidebar.search.scope.tag": "Tag",
"sidebar.tree.saved_queries": "Saved queries",
"sidebar.tree.untitled_query": "Untitled query",
"sidebar.tree.default_database": "Default database",
"sidebar.tree.unknown_connection": "Unknown connection",
"sidebar.tree.unmatched_saved_queries": "Unmatched",
"sidebar.tree.all_saved_queries": "All saved queries",
"sidebar.tree.default_schema": "Default schema",
"sidebar.object_group.tables": "Tables",
"sidebar.object_group.views": "Views",
"sidebar.object_group.routines": "Functions and procedures",
"sidebar.object_group.triggers": "Triggers",
"sidebar.object_group.events": "Events",
"sidebar.object_group.materialized_views": "Materialized views",
"sidebar.table_folder.columns": "Columns",
"sidebar.table_folder.indexes": "Indexes",
"sidebar.table_folder.foreign_keys": "Foreign keys",
"sidebar.table_folder.triggers": "Triggers",
"sidebar.object.view": "View",
"sidebar.object.function": "Function",
"sidebar.object.procedure": "Procedure",
"sidebar.table_action.truncate.label": "Truncate table",
"sidebar.table_action.truncate.progress": "Truncating",
"sidebar.table_action.clear.label": "Clear table",
"sidebar.table_action.clear.progress": "Clearing",
"sidebar.tab.table_structure": "Table structure ({{table}})",
"sidebar.tab.design_table": "Design table ({{table}})",
"sidebar.tab.new_table": "New table - {{database}}",
"sidebar.tab.table_overview": "Table overview - {{database}}{{schema}}",
"sidebar.tab.trigger": "Trigger: {{name}}",
"sidebar.tab.event": "Event: {{name}}",
"sidebar.tab.edit_event": "Edit event: {{name}}",
"sidebar.tab.materialized_view_definition": "Materialized view: {{name}}",
"sidebar.tab.view_definition": "View: {{name}}",
"sidebar.tab.edit_view": "Edit view: {{name}}",
"sidebar.tab.create_view": "New view",
"sidebar.tab.routine_definition": "{{type}}: {{name}}",
"sidebar.tab.edit_routine": "Edit {{type}}: {{name}}",
"sidebar.tab.create_function": "New function",
"sidebar.tab.create_procedure": "New procedure",
"sidebar.tab.new_query": "New query",
"sidebar.tab.new_query_database": "New query ({{database}})",
"sidebar.tab.redis_command": "Command - {{database}}",
"sidebar.tab.redis_monitor": "Monitor - {{database}}",
"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.close_aria": "Close {{title}}",
"tab_manager.kind_badge.query": "SQL",
"tab_manager.kind_badge.table": "Table",
"tab_manager.kind_badge.design": "Design",
"tab_manager.kind_badge.table_overview": "DB",
"tab_manager.kind_badge.redis": "Redis",
"tab_manager.kind_badge.jvm": "JVM",
"tab_manager.kind_badge.trigger": "Trigger",
"tab_manager.kind_badge.materialized_view": "MV",
"tab_manager.kind_badge.view": "View",
"tab_manager.kind_badge.event": "Event",
"tab_manager.kind_badge.routine": "Func",
"tab_manager.kind_badge.table_export": "Export",
"tab_manager.kind_badge.sql_analysis": "Analyze",
"tab_manager.kind_badge.fallback": "Tab",
"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.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.table": "Table data",
"tab_manager.hover.kind.table_export": "Export workbench",
"tab_manager.hover.kind.sql_analysis": "SQL analysis 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",
"sidebar.message.no_visible_databases": "No visible databases or schemas were returned. Check account permissions or refresh from the context menu.",
"sidebar.message.visual_new_table_unsupported": "This data source does not support visual table creation yet.",
"sidebar.message.jvm_resources_backend_unavailable": "JVM resource browsing is not available in this build.",
"sidebar.message.external_sql_directory_read_failed": "Failed to read SQL directory {{name}}: {{error}}",
"sidebar.message.sphinx_unsupported_objects": "This Sphinx instance does not expose these object capabilities: {{objects}}. Compatibility mode was applied.",
"sidebar.message.sidebar_filter_sync_enabled": "Left-side filter sync enabled.",
"sidebar.message.sidebar_filter_sync_disabled": "Left-side filter sync disabled.",
"sidebar.message.sidebar_filter_reset": "Sidebar filter reset.",
"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.database_deleted": "Database deleted.",
"sidebar.message.operation_rename_failed": "Rename failed: {{error}}",
"sidebar.message.operation_drop_failed": "Drop failed: {{error}}",
"sidebar.message.table_name_required": "Table name is required.",
"sidebar.message.table_name_unchanged": "Table name is unchanged.",
"sidebar.message.table_renamed": "Table renamed.",
"sidebar.message.table_deleted": "Table deleted.",
"sidebar.message.view_name_required": "View name is required.",
"sidebar.message.view_name_unchanged": "View name is unchanged.",
"sidebar.message.view_deleted": "View deleted.",
"sidebar.message.view_renamed": "View renamed.",
"sidebar.message.routine_deleted": "{{type}} deleted.",
"sidebar.message.rename_failed": "Rename failed: {{error}}",
"sidebar.message.delete_failed": "Delete failed: {{error}}",
"sidebar.message.table_data_action_loading": "{{action}} {{table}}...",
"sidebar.message.table_data_action_success": "{{action}} completed.",
"sidebar.message.table_data_action_failed": "{{action}} failed: {{error}}",
"sidebar.message.disconnected": "Disconnected.",
"sidebar.message.database_closed": "Database closed.",
"sidebar.message.saved_query_deleted": "Query deleted.",
"sidebar.message.saved_query_name_unchanged": "Query name is unchanged.",
"sidebar.message.saved_query_renamed": "Query renamed.",
"sidebar.menu.sort_by_name": "Sort by name",
"sidebar.menu.sort_by_frequency": "Sort by usage frequency",
"sidebar.menu.create_view": "New view",
"sidebar.menu.create_function": "New function",
"sidebar.menu.create_procedure": "New procedure",
"sidebar.menu.edit_tag": "Edit group",
"sidebar.menu.delete_tag": "Delete group",
"sidebar.menu.new_command_window": "New command window",
"sidebar.menu.redis_monitor": "Redis instance monitor",
"sidebar.menu.duplicate_connection": "Duplicate connection",
"sidebar.menu.disconnect": "Disconnect",
"sidebar.menu.move_out_of_tag": "Remove from group",
"sidebar.menu.create_database": "New database",
"sidebar.menu.new_query": "New query",
"sidebar.menu.move_to_tag": "Move to group",
"sidebar.menu.browse_keys": "Browse keys",
"sidebar.menu.create_table": "New table",
"sidebar.menu.rename_database": "Rename database",
"sidebar.menu.danger_operations": "Dangerous operations",
"sidebar.menu.delete_database": "Delete database",
"sidebar.menu.export_all_table_schema_sql": "Export all table schemas (SQL)",
"sidebar.menu.backup_all_tables_sql": "Back up all tables (schema + data SQL)",
"sidebar.menu.close_database": "Close database",
"sidebar.menu.browse_view_data": "Browse view data",
"sidebar.menu.view_definition": "View definition",
"sidebar.menu.browse_materialized_view_data": "Browse materialized view data",
"sidebar.menu.materialized_view_definition": "Materialized view definition",
"sidebar.menu.view_object_definition": "View definition",
"sidebar.menu.edit_view": "Edit view",
"sidebar.menu.rename_view": "Rename view",
"sidebar.menu.delete_view": "Delete view",
"sidebar.menu.view_routine_definition": "View definition",
"sidebar.menu.edit_definition": "Edit definition",
"sidebar.menu.delete_routine": "Delete {{type}}",
"sidebar.menu.design_table": "Design table",
"sidebar.menu.copy_table_structure": "Copy table structure",
"sidebar.menu.backup_table_sql": "Back up table (SQL)",
"sidebar.menu.rename_table": "Rename table",
"sidebar.menu.truncate_table": "Truncate table",
"sidebar.menu.clear_table": "Clear table",
"sidebar.menu.delete_table": "Delete table",
"sidebar.menu.export_table_data": "Export table data",
"sidebar.menu.export_csv": "Export CSV",
"sidebar.menu.export_xlsx": "Export Excel (XLSX)",
"sidebar.menu.export_json": "Export JSON",
"sidebar.menu.export_markdown": "Export Markdown",
"sidebar.menu.export_html": "Export HTML",
"sidebar.menu.open_query": "Open query",
"sidebar.menu.rename_query": "Rename query",
"sidebar.menu.delete_query": "Delete query",
"sidebar.menu.add_sql_directory": "Add SQL directory",
"sidebar.menu.refresh_directory": "Refresh directory",
"sidebar.menu.remove_directory": "Remove directory",
"sidebar.menu.open_sql_file": "Open SQL file",
"sidebar.menu.new_sql_file": "New SQL file",
"sidebar.menu.new_sql_directory": "New directory",
"sidebar.menu.rename_sql_directory": "Rename directory",
"sidebar.menu.delete_local_directory": "Delete local directory",
"sidebar.menu.delete_sql_directory": "Delete directory",
"sidebar.menu.rename_sql_file": "Rename SQL file",
"sidebar.menu.new_sql_file_in_directory": "New SQL file in this directory",
"sidebar.menu.new_sql_directory_in_directory": "New directory in this directory",
"sidebar.menu.delete_sql_file": "Delete SQL file",
"sidebar.batch.group.tables": "Tables",
"sidebar.batch.group.views": "Views",
"sidebar.batch.no_matching_objects": "No matching objects",
"sidebar.sql_template.edit_view": "Edit view {{name}}",
"sidebar.sql_template.modify_then_execute": "Modify and execute",
"sidebar.sql_template.edit_routine": "Edit {{type}} {{name}}",
"sidebar.sql_template.duckdb_procedure_unsupported": "DuckDB does not support stored procedures yet",
"sidebar.sql_template.duckdb_macro_hint": "Use SQL Macro for function-like behavior",
"connection_modal.network.ssl_mode.preferred": "Preferred",
"connection_modal.network.ssl_mode.required": "Required",
"connection_modal.network.ssl_mode.skip_verify": "Skip Verify",
"sidebar.external_sql.root": "External SQL files",
"sidebar.external_sql.directory_fallback": "SQL directory",
"sidebar.external_sql_modal.title.create_file": "New SQL file",
"sidebar.external_sql_modal.title.rename_file": "Rename SQL file",
"sidebar.external_sql_modal.title.create_directory": "New directory",
"sidebar.external_sql_modal.title.rename_directory": "Rename directory",
"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.validation.directory_name_required": "Enter a directory name",
"sidebar.external_sql_modal.validation.sql_file_name_required": "Enter a SQL file name",
"sidebar.external_sql_modal.validation.directory_name_no_separator": "Directory name cannot contain path separators",
"sidebar.external_sql_modal.validation.sql_file_name_no_separator": "File name cannot contain path separators",
"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.jvm.action.monitoring": "Continuous monitoring",
"sidebar.jvm.action.diagnostic": "Diagnostic enhancement",
"sidebar.jvm.tab.overview": "JVM overview",
"sidebar.jvm.tab.resource": "JVM resources",
"sidebar.jvm.tab.audit": "JVM audit",
"sidebar.jvm.tab.diagnostic": "JVM diagnostics",
"sidebar.jvm.tab.monitoring": "JVM monitoring",
"jvm.backend.message.connect_success": "JVM connection succeeded",
"jvm.backend.error.preview_confirmation_missing": "Preview confirmation token is missing. Preview again before submitting.",
"jvm.backend.error.confirmation_token_missing": "Confirmation token is missing. Complete preview confirmation first.",
"jvm.backend.error.confirmation_token_invalid": "Confirmation token is invalid. Preview and confirm again.",
"jvm.backend.error.confirmation_token_expired": "Confirmation token expired. Preview and confirm again.",
"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.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_resource_id_required": "JVM resource ID is required",
"jvm.backend.error.change_action_required": "JVM change action is required",
"jvm.backend.error.change_reason_required": "JVM change reason is required",
"jvm.backend.error.change_confirmation_token_failed": "Failed to generate JVM change confirmation token: {{detail}}",
"jvm.backend.error.disallowed_mode": "Current connection does not allow {{mode}} mode",
"jvm.backend.error.resource_path_invalid": "Invalid JVM resource path: {{detail}}",
"jvm.backend.error.audit_write_blocked": "Failed to write audit record, JVM change was blocked: {{detail}}",
"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.backend.separator.message_warning": "; ",
"jvm.backend.capability.reason.read_only": "Current connection is read-only",
"jvm.backend.monitoring.error.snapshot_unsupported": "{{provider}} monitoring snapshot is not supported yet",
"jvm.backend.monitoring.error.session_not_found": "Monitoring session not found for {{connectionId}} {{providerMode}}",
"jvm.backend.monitoring.warning.sample_auto_stopped": "Monitoring sampling failed {{count}} consecutive times and this session was stopped automatically",
"jvm.backend.connection_error.suggestion": "Suggestion: {{detail}}",
"jvm.backend.connection_error.technical_detail": "Technical detail: {{detail}}",
"jvm.backend.connection_error.generic": "JVM connection failed",
"jvm.backend.connection_error.endpoint.base_url_required": "Endpoint connection failed: Endpoint Base URL is missing.",
"jvm.backend.connection_error.endpoint.base_url_invalid.summary": "Endpoint connection failed: Endpoint Base URL is 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.scheme_unsupported.summary": "Endpoint connection failed: only HTTP or HTTPS is supported.",
"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.not_found.summary": "Endpoint connection failed: the target responded, but the GoNavi JVM management API was not found.",
"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.connection_refused.summary": "Endpoint connection failed: the target management API is not listening, or the address is unreachable.",
"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.unauthorized.summary": "Endpoint connection failed: the target management API responded, but the API Key is missing or invalid.",
"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.forbidden.summary": "Endpoint connection failed: the target management API rejected this request.",
"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.timeout.summary": "Endpoint connection failed: timed out while accessing the target management API.",
"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.agent.base_url_required": "Agent connection failed: Agent Base URL is missing.",
"jvm.backend.connection_error.agent.base_url_invalid.summary": "Agent connection failed: Agent Base URL is invalid.",
"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.scheme_unsupported.summary": "Agent connection failed: only HTTP or HTTPS is supported.",
"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.connection_refused.summary": "Agent connection failed: Target Agent management port is not listening, or the address is unreachable.",
"jvm.backend.connection_error.agent.connection_refused.help": "Confirm the Java service started the GoNavi Agent with `-javaagent`, and check Base URL, port mapping, and firewall rules.",
"jvm.backend.connection_error.agent.unauthorized.summary": "Agent connection failed: Agent responded, but the API Key is missing or invalid.",
"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.forbidden.summary": "Agent connection failed: Agent rejected this request.",
"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.timeout.summary": "Agent connection failed: timed out while accessing the Agent management port.",
"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.jmx.host_required": "JMX connection failed: host is missing.",
"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.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.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.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.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.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.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.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.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_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_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.auth.summary": "JMX connection failed: {{target}} requires authentication, or the current credentials are invalid.",
"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.timeout.summary": "JMX connection failed: connection to {{target}} timed out.",
"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.diagnostic.error.disabled": "JVM diagnostic enhancement is not enabled for this connection",
"jvm.backend.diagnostic.error.session_id_required": "Diagnostic session ID is required. Create a session first.",
"jvm.backend.diagnostic.error.command_required": "Diagnostic command cannot be empty",
"jvm.backend.diagnostic.error.cancel_identifiers_required": "Cancel command requires sessionId and commandId",
"jvm.backend.diagnostic.error.audit_write_blocked": "Failed to write diagnostic audit record, command execution was blocked: {{detail}}",
"jvm.backend.diagnostic.error.execute_canceled": "Diagnostic execute request was canceled: {{detail}}",
"jvm.backend.diagnostic.error.transport_unsupported": "Unsupported JVM diagnostic transport: {{transport}}",
"jvm.backend.diagnostic.warning.audit_write_failed": "Failed to write audit record: {{detail}}",
"jvm.backend.diagnostic.message.command_completed": "Diagnostic command completed",
"jvm.backend.diagnostic.message.cancel_requested": "Cancel request sent; waiting for the diagnostic bridge to stop the command",
"jvm.backend.diagnostic.message.arthas_command_completed": "Arthas command completed",
"jvm.backend.diagnostic.message.arthas_command_canceled": "Arthas command canceled",
"jvm.backend.diagnostic.policy.observe_not_allowed": "Observe diagnostic commands are not enabled for this connection: {{command}}",
"jvm.backend.diagnostic.policy.trace_not_allowed": "Trace diagnostic commands are not enabled for this connection: {{command}}",
"jvm.backend.diagnostic.policy.mutating_not_allowed": "High-risk 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.multiline_not_supported": "Diagnostic command does not support newlines or multiple commands",
"jvm.backend.diagnostic.arthas.base_url_required": "Arthas Tunnel address is required",
"jvm.backend.diagnostic.arthas.base_url_invalid": "Arthas Tunnel address is invalid: {{detail}}",
"jvm.backend.diagnostic.arthas.target_id_required": "Arthas Tunnel target ID is required (targetId / agentId)",
"jvm.backend.diagnostic.arthas.scheme_unsupported": "Arthas Tunnel only supports http/https/ws/wss addresses: {{scheme}}",
"jvm.backend.diagnostic.arthas.session_missing": "Diagnostic session does not exist. Create the Arthas Tunnel session again.",
"jvm.backend.diagnostic.arthas.session_config_changed": "Arthas Tunnel session configuration changed. Create the diagnostic session again.",
"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.no_running_command": "This Arthas Tunnel session has no running command.",
"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.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.connect_timeout": "Arthas Tunnel WebSocket connection timed out after {{timeout}} without a response",
"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.request_encode_failed": "Failed to encode Arthas Tunnel request: {{detail}}",
"jvm.backend.diagnostic.arthas.write_deadline_failed": "Failed to set Arthas Tunnel write deadline: {{detail}}",
"jvm.backend.diagnostic.arthas.send_timeout": "Sending the Arthas Tunnel terminal command timed out after {{timeout}} without a response",
"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.read_deadline_failed": "Failed to set Arthas Tunnel read deadline: {{detail}}",
"jvm.backend.diagnostic.arthas.read_timeout": "Reading Arthas Tunnel output timed out after {{timeout}} without a response",
"jvm.backend.diagnostic.arthas.read_canceled": "Reading Arthas Tunnel output was canceled",
"jvm.backend.diagnostic.arthas.read_failed": "Failed to read Arthas Tunnel output: {{detail}}",
"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.command_timeout": "Arthas Tunnel command timed out after {{timeout}}",
"jvm.backend.diagnostic.arthas.command_canceled": "Arthas Tunnel command was canceled",
"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_resource.error.connection_missing": "The connection does not exist or has been deleted.",
"jvm_resource.error.resource_path_empty": "Resource path is empty.",
"jvm_resource.error.get_value_unavailable": "JVM value reading is not available in this build.",
"jvm_resource.error.read_failed": "Failed to read JVM resource.",
"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_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_to_draft_failed": "The AI plan cannot be converted into a JVM preview draft right now.",
"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_ai_plan.error.resource_locator_missing": "The AI plan is missing usable resource locator information.",
"jvm_ai_plan.error.reason_missing": "The AI plan is missing a change reason.",
"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.snapshot.unavailable": "The current resource snapshot has not loaded successfully.",
"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.label": " ({{label}})",
"jvm_ai_plan.actions.description": ": {{description}}",
"jvm_ai_plan.actions.payload_fields": "; payload fields: {{fields}}",
"jvm_ai_plan.actions.field_separator": ", ",
"jvm_ai_plan.actions.required_suffix": "(required)",
"jvm_ai_plan.prompt.resource_path_missing": "(resource path not provided)",
"jvm_ai_plan.prompt.environment_unknown": "unknown",
"jvm_ai_plan.prompt.intro": "Analyze the following JVM resource and generate a structured modification plan for GoNavi \"Preview Change\".",
"jvm_ai_plan.prompt.connection_name": "Connection name: {{connectionName}}",
"jvm_ai_plan.prompt.target_host": "Target host: {{host}}",
"jvm_ai_plan.prompt.provider_mode": "Provider mode: {{providerMode}}",
"jvm_ai_plan.prompt.environment": "Environment: {{environmentLabel}}",
"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.connection_policy": "Connection policy: {{policy}}",
"jvm_ai_plan.prompt.resource_path": "Current resource path: {{resourcePath}}",
"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.output_requirements_title": "Output requirements:",
"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.requirement.fields": "2. The JSON fields inside the code block must be exactly: targetType, selector, action, payload, reason.",
"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.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.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.no_execute": "6. Do not claim the modification has already been executed, and do not output scripts or commands.",
"jvm_ai_plan.prompt.example_title": "JSON example:",
"jvm_ai_plan.prompt.example_reason": "Fix a dirty cache value",
"jvm_resource.error.reason_required": "Enter a change reason.",
"jvm_resource.error.payload_object_required": "Payload must be a JSON object.",
"jvm_resource.error.resource_id_empty": "Resource ID is empty, so a change draft cannot be created.",
"jvm_resource.error.preview_unavailable": "JVM change preview is not available in this build.",
"jvm_resource.error.draft_invalid": "The change draft is invalid.",
"jvm_resource.error.preview_failed": "Failed to preview JVM change.",
"jvm_resource.error.preview_result_invalid": "The preview result has an invalid format.",
"jvm_resource.error.apply_unavailable": "JVM change execution is not available in this build.",
"jvm_resource.error.preview_required": "Preview the change before confirming execution.",
"jvm_resource.error.context_changed": "Resource context changed. Preview again before executing.",
"jvm_resource.error.confirmation_missing": "Confirmation token is missing. Preview again before executing.",
"jvm_resource.presentation.action.set.label": "Set property",
"jvm_resource.presentation.action.set.description": "Update a writable property exposed by the current resource.",
"jvm_resource.presentation.action.invoke.label": "Invoke operation",
"jvm_resource.presentation.action.invoke.description": "Invoke a management operation exposed by the current resource.",
"jvm_resource.presentation.action.put.label": "Write resource",
"jvm_resource.presentation.action.put.description": "Write the payload content to the current JVM resource.",
"jvm_resource.presentation.action.clear.label": "Clear resource",
"jvm_resource.presentation.action.clear.description": "Clear data or state from the current JVM resource.",
"jvm_resource.presentation.action.evict.label": "Evict cache",
"jvm_resource.presentation.action.evict.description": "Evict the target cache item from the current JVM runtime.",
"jvm_resource.presentation.action.remove.label": "Remove entry",
"jvm_resource.presentation.action.remove.description": "Remove the specified entry from the current resource.",
"jvm_resource.presentation.action.delete.label": "Delete resource",
"jvm_resource.presentation.action.delete.description": "Delete or unregister the current resource.",
"jvm_resource.presentation.action.refresh.label": "Refresh resource",
"jvm_resource.presentation.action.refresh.description": "Refresh the runtime state of the current resource.",
"jvm_resource.presentation.action.reload.label": "Reload",
"jvm_resource.presentation.action.reload.description": "Reload the current resource or its configuration.",
"jvm_resource.presentation.action.reset.label": "Reset state",
"jvm_resource.presentation.action.reset.description": "Restore the current resource to its initial or default state.",
"jvm_resource.presentation.unnamed_action": "Unnamed action",
"jvm_resource.presentation.risk.low": "Low",
"jvm_resource.presentation.risk.medium": "Medium",
"jvm_resource.presentation.risk.high": "High",
"jvm_resource.presentation.risk.unknown": "Unknown",
"jvm_resource.presentation.audit_result.unknown": "Unknown",
"jvm_resource.presentation.audit_result.applied": "Applied",
"jvm_resource.presentation.audit_result.success": "Success",
"jvm_resource.presentation.audit_result.warning": "Warning",
"jvm_resource.presentation.audit_result.blocked": "Blocked",
"jvm_resource.presentation.audit_result.failed": "Failed",
"jvm_resource.error.apply_failed": "Failed to execute JVM change.",
"jvm_resource.message.apply_success": "JVM change executed.",
"jvm_resource.title": "JVM Resource Workbench",
"jvm_resource.badge.read_only": "Read-only connection",
"jvm_resource.badge.writable": "Writable connection",
"jvm_resource.action.audit": "Audit log",
"jvm_resource.action.generate_ai_plan": "Generate AI plan",
"jvm_resource.action.ask_ai_plan": "Ask AI for a plan",
"jvm_resource.card.snapshot": "Resource snapshot",
"jvm_resource.field.resource_id": "Resource ID",
"jvm_resource.field.resource_type": "Resource type",
"jvm_resource.field.format": "Format",
"jvm_resource.field.version": "Version",
"jvm_resource.field.available_actions": "Available actions",
"jvm_resource.section.resource_value": "Resource value",
"jvm_resource.section.metadata": "Metadata",
"jvm_resource.empty.no_resource_data": "No resource data",
"jvm_resource.card.change_draft": "Change draft",
"jvm_resource.field.resource_path": "Resource path",
"jvm_resource.field.target_resource": "Target resource",
"jvm_resource.field.resource_version": "Resource version",
"jvm_resource.field.draft_source": "Draft source",
"jvm_resource.draft_source.ai_plan": "AI-assisted draft",
"jvm_resource.draft_source.manual": "Manual edit",
"jvm_resource.section.supported_actions": "Supported resource actions",
"jvm_resource.field.payload_fields": "Payload fields: ",
"jvm_resource.marker.required_suffix": " (required)",
"jvm_resource.list_separator": ", ",
"jvm_resource.field.action": "Action",
"jvm_resource.placeholder.action_jmx": "For example, set or invoke",
"jvm_resource.placeholder.action_default": "For example, put / clear / evict",
"jvm_resource.message.current_action": "Current action: ",
"jvm_resource.field.reason": "Change reason",
"jvm_resource.placeholder.reason": "Enter the reason for this JVM resource change",
"jvm_resource.field.payload": "Payload (JSON)",
"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.action.preview_change": "Preview change",
"jvm_overview.connection_missing.message": "Connection does not exist or has been deleted",
"jvm_overview.error.capability_load_failed": "Failed to read JVM mode capabilities",
"jvm_overview.eyebrow": "JVM Runtime",
"jvm_overview.title": "JVM runtime overview",
"jvm_overview.badge.read_only": "Read-only connection",
"jvm_overview.badge.writable": "Writable connection",
"jvm_overview.card.connection_summary": "Connection summary",
"jvm_overview.card.mode_capability": "Mode capabilities",
"jvm_overview.field.current_mode": "Current mode",
"jvm_overview.field.allowed_modes": "Allowed modes",
"jvm_overview.field.jmx_address": "JMX address",
"jvm_overview.field.endpoint": "Endpoint",
"jvm_overview.field.agent": "Agent",
"jvm_overview.field.resource_browse": "Resource browsing",
"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_overview.empty.capabilities": "No mode capability data",
"jvm_overview.capability.can_browse": "Browsable",
"jvm_overview.capability.cannot_browse": "Not browsable",
"jvm_overview.capability.writable": "Writable",
"jvm_overview.capability.read_only": "Read-only",
"jvm_overview.capability.preview_supported": "Preview supported",
"jvm_overview.capability.preview_unsupported": "Preview unsupported",
"jvm_monitoring_dashboard.connection_missing.message": "Connection does not exist or has been deleted",
"jvm_monitoring_dashboard.error.history_unavailable": "JVMGetMonitoringHistory backend method is unavailable",
"jvm_monitoring_dashboard.error.history_load_failed": "Failed to load monitoring history",
"jvm_monitoring_dashboard.error.start_unavailable": "JVMStartMonitoring backend method is unavailable",
"jvm_monitoring_dashboard.error.start_failed": "Failed to start monitoring",
"jvm_monitoring_dashboard.error.stop_unavailable": "JVMStopMonitoring backend method is unavailable",
"jvm_monitoring_dashboard.error.stop_failed": "Failed to stop monitoring",
"jvm_monitoring_dashboard.title": "Continuous JVM monitoring",
"jvm_monitoring_dashboard.status.sampling": "Sampling",
"jvm_monitoring_dashboard.status.stopped": "Stopped",
"jvm_monitoring_dashboard.action.refresh": "Refresh",
"jvm_monitoring_dashboard.action.start": "Start monitoring",
"jvm_monitoring_dashboard.action.stop": "Stop monitoring",
"jvm_monitoring_dashboard.degraded.message": "Monitoring capability is degraded",
"jvm_monitoring_dashboard.empty.title": "Continuous monitoring has not started yet",
"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_diagnostic.workbench.eyebrow": "JVM diagnostics",
"jvm_diagnostic.workbench.title": "JVM diagnostic workbench",
"jvm_diagnostic.workbench.status.session_established": "Session established",
"jvm_diagnostic.workbench.status.no_session": "No session",
"jvm_diagnostic.workbench.status.command_running": "Command running",
"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.action.execute_command": "Execute command",
"jvm_diagnostic.workbench.action.cancel_command": "Cancel command",
"jvm_diagnostic.connection_missing.message": "Connection does not exist or has been deleted",
"jvm_diagnostic.error.probe_unavailable": "JVMProbeDiagnosticCapabilities backend method is unavailable",
"jvm_diagnostic.error.probe_failed": "Failed to check diagnostic capabilities",
"jvm_diagnostic.error.start_unavailable": "JVMStartDiagnosticSession backend method is unavailable",
"jvm_diagnostic.error.start_failed": "Failed to create diagnostic session",
"jvm_diagnostic.error.history_load_failed": "Failed to load diagnostic history",
"jvm_diagnostic.error.execute_unavailable": "JVMExecuteDiagnosticCommand backend method is unavailable",
"jvm_diagnostic.error.execute_session_required": "Create a diagnostic session before running a command",
"jvm_diagnostic.error.execute_command_required": "Diagnostic command is required",
"jvm_diagnostic.error.execute_failed": "Failed to execute diagnostic command",
"jvm_diagnostic.error.cancel_unavailable": "JVMCancelDiagnosticCommand backend method is unavailable",
"jvm_diagnostic.error.cancel_failed": "Failed to cancel diagnostic command",
"jvm_diagnostic.message.cancel_sent": "Cancel request sent",
"jvm_diagnostic.session.default_title": "JVM diagnostic console",
"jvm_diagnostic.session.default_reason": "Session started from the console",
"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.session_capability.title": "Session and capabilities",
"jvm_diagnostic.session_capability.description": "Current transport, permissions, and quick maintenance",
"jvm_diagnostic.session_capability.status.session_established": "Session established",
"jvm_diagnostic.session_capability.status.no_session": "No session",
"jvm_diagnostic.session_capability.status.command_running": "Command running",
"jvm_diagnostic.session_capability.status.idle": "Idle",
"jvm_diagnostic.session_capability.session_id_hint": "Session ID appears here after a session is created.",
"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.action.clear_output": "Clear output",
"jvm_diagnostic.session_capability.action.refresh_history": "Refresh history",
"jvm_diagnostic.workflow.probe.title": "Check capabilities",
"jvm_diagnostic.workflow.probe.description": "Read diagnostic transport, streaming output, and command permissions without creating a session.",
"jvm_diagnostic.workflow.session.title": "Start session",
"jvm_diagnostic.workflow.session.description": "Create a diagnostic context so subsequent commands are bound to this session.",
"jvm_diagnostic.workflow.command.title": "Run command",
"jvm_diagnostic.workflow.command.description": "After a session is created, show the command editor, reason input, and templates.",
"jvm_diagnostic.capability.empty.title": "No capability check yet",
"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_result.title": "Capability check results",
"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.observe_allowed": "Observe commands",
"jvm_diagnostic.capability_result.observe_denied": "Observe disabled",
"jvm_diagnostic.capability_result.trace_allowed": "Trace commands",
"jvm_diagnostic.capability_result.mutating_allowed": "High-risk commands",
"jvm_diagnostic.no_session.title": "Start a diagnostic session",
"jvm_diagnostic.no_session.description": "Create a session first, then show the command editor and templates",
"jvm_diagnostic.no_session.alert.title": "Command input appears after a session is created",
"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.action.start": "Start diagnostic session",
"jvm_diagnostic.no_session.action.probe": "Check capabilities first",
"jvm_diagnostic.command_input.title": "Command input",
"jvm_diagnostic.command_input.description": "Supports autocomplete. Press Ctrl/Cmd + Enter to run.",
"jvm_diagnostic.command_input.command_label": "Diagnostic command",
"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.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.reason_help": "Used for audit records and AI context. It is not sent to the target JVM as an Arthas command.",
"jvm_diagnostic.command_templates.title": "Command templates",
"jvm_diagnostic.output.title": "Live output",
"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.local_pending": "Diagnostic command submitted; waiting for backend output: {{command}}",
"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.presentation.category.observe": "Observation commands",
"jvm_diagnostic.presentation.category.trace": "Trace commands",
"jvm_diagnostic.presentation.category.mutating": "High-risk commands",
"jvm_diagnostic.presentation.phase.running": "Running",
"jvm_diagnostic.presentation.phase.completed": "Completed",
"jvm_diagnostic.presentation.phase.failed": "Failed",
"jvm_diagnostic.presentation.phase.canceling": "Canceling",
"jvm_diagnostic.presentation.phase.diagnostic": "Diagnostic event",
"jvm_diagnostic.presentation.event.diagnostic": "Diagnostic output",
"jvm_diagnostic.presentation.event.chunk": "Output chunk",
"jvm_diagnostic.presentation.event.done": "Execution finished",
"jvm_diagnostic.presentation.chunk.empty_event": "Empty event",
"jvm_diagnostic.history.title": "Audit history",
"jvm_diagnostic.history.description": "Recent commands and execution status",
"jvm_diagnostic.history.current_session": "Current session",
"jvm_diagnostic.history.no_session": "No diagnostic session yet",
"jvm_diagnostic.history.recent_records": "Recent records",
"jvm_diagnostic.history.reason_missing": "No diagnostic reason provided",
"jvm_diagnostic.history.no_records": "No diagnostic history",
"jvm_audit.eyebrow": "JVM Audit",
"jvm_audit.title": "JVM change audit",
"jvm_audit.card.records": "Audit records",
"jvm_audit.description.current_range": "Current range: last {{limit}} records",
"jvm_audit.option.last_records": "Last {{limit}} records",
"jvm_audit.action.refresh": "Refresh",
"jvm_audit.column.time": "Time",
"jvm_audit.column.mode": "Mode",
"jvm_audit.column.action": "Action",
"jvm_audit.column.resource": "Resource",
"jvm_audit.column.reason": "Reason",
"jvm_audit.column.source": "Source",
"jvm_audit.column.result": "Result",
"jvm_audit.source.ai_plan": "AI assisted",
"jvm_audit.source.manual": "Manual",
"jvm_audit.error.connection_missing": "The connection does not exist or has been deleted.",
"jvm_audit.error.backend_unavailable": "JVMListAuditRecords backend method is unavailable.",
"jvm_audit.error.load_failed": "Failed to load JVM audit records{{separator}}{{detail}}",
"jvm_audit.empty.load_failed": "Audit records are unavailable right now",
"jvm_audit.empty.no_records": "No audit records",
"query_editor.placeholder.connection": "Select connection",
"query_editor.placeholder.database": "Select database",
"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.max_rows.option_500": "Max rows: 500",
"query_editor.max_rows.option_1000": "Max rows: 1000",
"query_editor.max_rows.option_5000": "Max rows: 5000",
"query_editor.max_rows.option_20000": "Max rows: 20000",
"query_editor.max_rows.option_unlimited": "Max rows: unlimited",
"query_editor.action.run": "Run",
"query_editor.action.run_with_shortcut": "Run ({{shortcut}})",
"query_editor.action.stop": "Stop",
"query_editor.action.save": "Save",
"query_editor.action.save_with_shortcut": "Save ({{shortcut}})",
"query_editor.completion.documentation.comment": "Comment: {{comment}}",
"query_editor.hover.switch_database_with_shortcut": "{{shortcut}} + click to switch to this database",
"query_editor.hover.open_table_with_shortcut": "{{shortcut}} + click to open this table",
"query_editor.hover.open_view_with_shortcut": "{{shortcut}} + click to open this view",
"query_editor.hover.open_materialized_view_with_shortcut": "{{shortcut}} + click to open this materialized view",
"query_editor.hover.open_trigger_with_shortcut": "{{shortcut}} + click to open this trigger",
"query_editor.hover.open_procedure_with_shortcut": "{{shortcut}} + click to open this stored procedure",
"query_editor.hover.open_function_with_shortcut": "{{shortcut}} + click to open this function",
"query_editor.object_info.database": "Database",
"query_editor.object_info.table": "Table",
"query_editor.object_info.column": "Column",
"query_editor.object_info.materialized_view": "Materialized view",
"query_editor.object_info.label.database": "Database",
"query_editor.object_info.label.table": "Table",
"query_editor.object_info.label.type": "Type",
"query_editor.object_info.label.schema": "Schema",
"query_editor.object_info.label.separator": ": ",
"query_editor.action.more": "More",
"query_editor.action.format": "Format",
"query_editor.action.format_sql": "Format SQL",
"query_editor.action.resize_editor": "Drag to resize height",
"query_editor.action.ai_generate_sql": "AI Generate SQL",
"query_editor.action.ai_explain_sql": "AI Explain SQL",
"query_editor.action.ai_optimize_sql": "AI Optimize SQL",
"query_editor.action.ai_generate_sql_menu": "Generate SQL",
"query_editor.action.ai_explain_sql_menu": "Explain SQL",
"query_editor.action.ai_optimize_sql_menu": "Optimize SQL",
"query_editor.action.ai_schema_analysis": "Schema analysis",
"query_editor.action.show_results_panel": "Show results panel",
"query_editor.action.hide_results_panel": "Hide results panel",
"query_editor.action.show_results_panel_with_shortcut": "Show results panel ({{shortcut}})",
"query_editor.action.hide_results_panel_with_shortcut": "Hide results panel ({{shortcut}})",
"query_editor.action.results": "Results",
"query_editor.transaction.delay.immediate": "Immediately",
"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.mode.manual": "Manual",
"query_editor.transaction.mode.auto": "Auto",
"query_editor.transaction.status.auto_commit_countdown": "Auto commit in {{seconds}}s",
"query_editor.transaction.status.auto_committing": "Auto committing",
"query_editor.transaction.action.commit": "Commit",
"query_editor.transaction.action.commit_with_count": "Commit ({{count}})",
"query_editor.transaction.action.rollback": "Rollback",
"query_editor.transaction.message.pending_managed_transaction": "The SQL editor already has a pending transaction. Commit or roll it back before running another DML statement.",
"query_editor.action.show_object_info": "Show Object Info",
"query_editor.action.rename_query": "Rename query",
"query_editor.action.export_sql_file": "Export SQL file",
"query_editor.format.keyword_upper": "Uppercase keywords",
"query_editor.format.keyword_lower": "Lowercase keywords",
"query_editor.format.restore_last_format": "Restore last format",
"query_editor.format.snippet_settings": "Snippet settings...",
"query_editor.format.shortcut_settings": "Shortcut settings...",
"query_editor.message.format_failed": "Format failed: SQL syntax may be invalid.",
"query_editor.message.no_format_restore_snapshot": "No pre-format SQL snapshot is available to restore.",
"query_editor.message.format_restore_success": "Restored the pre-format SQL snapshot.",
"query_editor.message.page_query_failed": "Page query failed: {{error}}",
"query_editor.message.page_query_empty": "The page query returned no result set.",
"query_editor.message.refresh_failed": "Refresh failed: {{error}}",
"query_editor.message.select_database_first": "Select a database first.",
"query_editor.message.connection_not_found": "Connection not found.",
"query_editor.message.unsupported_source": "This data source does not support the SQL query editor. Use its dedicated page instead.",
"query_editor.message.no_executable_sql": "No executable SQL.",
"query_editor.message.no_selectable_sql": "No selectable SQL statement.",
"query_editor.message.statement_failed_prefix": "Statement {{index}} failed: ",
"query_editor.message.execution_success": "Execution succeeded.",
"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_failed_with_error": "Query execution failed: {{error}}",
"query_editor.message.cancel_no_running": "No running query to cancel.",
"query_editor.message.cancel_success": "Query canceled.",
"query_editor.message.cancel_failed": "Failed to cancel query: {{error}}",
"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_index_metadata_unavailable": "Unable to load unique index metadata, so changes cannot be committed safely.",
"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_system_metadata": "System metadata query results remain read-only.",
"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_warning_with_detail": "Query results remain read-only: {{detail}}",
"query_editor.message.object_info_target_not_found": "The cursor is not on a recognized table or column.",
"query_editor.message.insert_success": "Code inserted at the current cursor.",
"query_editor.message.append_success": "Code appended.",
"query_editor.message.saved": "Query saved.",
"query_editor.message.sql_file_saved": "SQL file saved.",
"query_editor.message.save_sql_file_failed": "Failed to save SQL file: {{error}}",
"query_editor.message.save_query_failed": "Failed to save query: {{error}}",
"query_editor.message.export_sql_file_success": "SQL file exported.",
"query_editor.message.export_sql_file_failed": "Export SQL file failed: {{error}}",
"query_editor.message.save_first_before_rename": "Save the query before renaming it.",
"query_editor.message.renamed": "Query renamed.",
"query_editor.empty_state.title": "Awaiting SQL execution",
"query_editor.empty_state.description": "Run a query to display results below in the new data grid.",
"query_editor.result.tab_title": "Result {{index}} ({{count}})",
"query_editor.result.tab_title_success": "Result {{index}} ✓",
"query_editor.result.close": "Close result",
"query_editor.result.execution_success": "Execution succeeded",
"query_editor.result.affected_rows": "Affected rows: {{count}}",
"query_editor.result.execution_failed": "Execution failed",
"query_editor.result.ai_diagnose": "AI diagnose",
"query_editor.results_panel.tooltip.hide": "Hide results panel",
"query_editor.results_panel.tooltip.hide_with_shortcut": "Hide results panel ({{shortcut}})",
"query_editor.results_panel.menu.close_other": "Close other tabs",
"query_editor.results_panel.menu.close_left": "Close tabs to the left",
"query_editor.results_panel.menu.close_right": "Close tabs to the right",
"query_editor.results_panel.menu.close_all": "Close all tabs",
"query_editor.results_panel.action.hide": "Hide",
"query_editor.results_panel.aria.hide": "Hide results panel",
"query_editor.results_panel.tab.message": "Message {{index}}",
"query_editor.results_panel.tab.result": "Result {{index}}",
"query_editor.results_panel.message.title": "Execution messages",
"query_editor.results_panel.panel.title": "Results panel",
"query_editor.save_modal.title": "Save query",
"query_editor.save_modal.rename_title": "Rename query",
"query_editor.save_modal.rename_ok": "Rename",
"query_editor.save_modal.name_label": "Query name",
"query_editor.save_modal.name_required": "Enter a query name.",
"query_editor.save_modal.name_placeholder": "Example: query all users",
"query_editor.save_modal.unnamed": "Untitled query",
"query_editor.ai_prompt.default_source": "Database",
"query_editor.ai_prompt.default_database": "Default",
"query_editor.ai_prompt.context": "Context: {{type}} {{name}}, selected database {{database}}.\n",
"query_editor.ai_prompt.generate": "Generate a query based on the current database schema.",
"query_editor.ai_prompt.explain": "Explain the execution logic of this SQL statement:\n```sql\n{{sql}}\n```",
"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.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.slash_command.query.label": "Natural language query",
"query_editor.slash_command.query.description": "Describe what you want to query",
"query_editor.slash_command.query.prompt": "Write an SQL query for this request:",
"query_editor.slash_command.sql.label": "Generate SQL",
"query_editor.slash_command.sql.description": "Describe the requirement and generate a statement",
"query_editor.slash_command.sql.prompt": "Generate SQL for this requirement:",
"query_editor.slash_command.explain.label": "Explain SQL",
"query_editor.slash_command.explain.description": "Explain the selected SQL logic",
"query_editor.slash_command.explain.prompt": "Explain the execution logic of this SQL statement:\n```sql\n{{sql}}\n```",
"query_editor.slash_command.optimize.label": "Optimize analysis",
"query_editor.slash_command.optimize.description": "Analyze SQL performance bottlenecks",
"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.schema.label": "Table design review",
"query_editor.slash_command.schema.description": "Review table structure design quality",
"query_editor.slash_command.schema.prompt": "Review the related table design, including field types, normalization, indexes, and improvement suggestions.",
"query_editor.slash_command.index.label": "Index advice",
"query_editor.slash_command.index.description": "Recommend an index strategy",
"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.diff.label": "Table comparison",
"query_editor.slash_command.diff.description": "Compare table differences and generate changes",
"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.mock.label": "Mock data",
"query_editor.slash_command.mock.description": "Generate INSERT test data",
"query_editor.slash_command.mock.prompt": "Generate 10 business-meaningful INSERT test rows for the related table.",
"query_editor.completion.detail.aggregate": "Aggregate function",
"query_editor.completion.detail.string": "String function",
"query_editor.completion.detail.math": "Math function",
"query_editor.completion.detail.date_time": "Date and time function",
"query_editor.completion.detail.conditional": "Conditional function",
"query_editor.completion.detail.conversion": "Type conversion function",
"query_editor.completion.detail.json": "JSON function",
"query_editor.completion.detail.utility": "Utility function",
"query_editor.completion.detail.info": "Information function",
"query_editor.completion.detail.window": "Window function",
"query_editor.completion.detail.sql_function": "SQL function",
"query_editor.completion.detail.aggregate_count": "Aggregate - count",
"query_editor.completion.detail.string_concat": "String - concatenate",
"query_editor.completion.detail.math_abs": "Math - absolute value",
"query_editor.completion.detail.date_now": "Date - current date and time",
"query_editor.completion.detail.conditional_if": "Conditional - if",
"query_editor.completion.detail.conversion_cast": "Conversion - type cast",
"query_editor.completion.detail.json_extract": "JSON - extract value",
"query_editor.completion.detail.crypto_md5": "Hash - MD5",
"query_editor.completion.detail.info_database": "Info - current database",
"query_editor.completion.detail.window_row_number": "Window - row number",
"query_editor.completion.detail.modifier_distinct": "Modifier - distinct",
"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",
"data_grid.action.apply": "Apply",
"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.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.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.datetime_picker.now": "Now",
"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.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_data": "Copy row data",
"data_grid.context_menu.current_marker": "Current",
"data_grid.context_menu.current_row": "Current row",
"data_grid.context_menu.current_cell": "Current cell",
"data_grid.context_menu.edit_section": "Edit",
"data_grid.context_menu.edit_row": "Edit this row",
"data_grid.context_menu.copy_row_as_new": "Copy this row as a new row",
"data_grid.context_menu.undo_cell_change": "Undo this cell change",
"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.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.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.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_prompt": "Choose export scope:",
"data_grid.export.selected_rows": "Export selected rows ({{count}} rows)",
"data_grid.table_fallback.query_result": "Query result",
"data_grid.metadata_view.fields_badge": "Fields",
"data_grid.metadata_view.er_table_badge": "Table",
"data_grid.metadata_view.er_field_badge": "Field",
"data_grid.metadata_view.er_current_badge": "Current",
"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_hidden_columns": "{{count}} more fields",
"data_grid.metadata_view.er_expand_hidden_columns": "Show {{count}} more fields",
"data_grid.metadata_view.er_expand_fields": "Expand all fields",
"data_grid.metadata_view.er_collapse_fields": "Collapse field summary",
"data_grid.metadata_view.er_relation_depth": "Depth {{count}}",
"data_grid.metadata_view.er_expand_relations": "Expand next layer",
"data_grid.metadata_view.er_reset_relations": "Reset to one hop",
"data_grid.metadata_view.er_empty": "No foreign key relations were found for this table",
"data_grid.metadata_view.er_partial_warning": "Some relations could not be loaded. The diagram may be incomplete.",
"data_grid.metadata_view.er_open_table": "Open table",
"data_grid.metadata_view.field_count": "{{count}} fields",
"data_grid.metadata_view.column_name": "Name",
"data_grid.metadata_view.column_type": "Type",
"data_grid.metadata_view.default_value": "Default",
"data_grid.metadata_view.comment": "Comment",
"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.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.auto_commit_failed": "Auto commit failed: {{detail}}",
"data_grid.message.auto_commit_success": "Auto commit succeeded",
"data_grid.message.commit_failed": "Commit failed: {{detail}}",
"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.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_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.current_field_not_editable": "The current field is not editable",
"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_safe_locator": "No safe row locator is available for this result set.",
"data_grid.message.no_filter_applied": "No filter condition is currently applied",
"data_grid.message.no_rows_selected": "No rows are selected",
"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.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.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.message.result_set_no_copyable_content": "The current result set has no copyable content",
"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_viewer.message.result_not_ready": "Current result set is not ready. Load data once first.",
"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.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.connection_not_found": "Connection not found",
"data_viewer.message.fetch_data_failed_detail": "Error fetching data: {{detail}}",
"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.message.mongo_filter_invalid_detail": "MongoDB filter condition is invalid: {{detail}}",
"data_viewer.message.mongo_filter_parse_failed": "Failed to parse",
"data_viewer.message.sort_buffer_retry_succeeded": "Increased the sort buffer automatically, and the query succeeded.",
"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.metadata_unavailable": "Primary key or unique index metadata could not be loaded, 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.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.table": "Table {{target}} remains read-only: {{reason}}",
"data_viewer.read_only.warning.collection": "Collection {{target}} remains read-only: {{reason}}",
"data_viewer.sql_log.phase.main_query": "Main query",
"data_viewer.sql_log.phase.complex_type_fallback_retry": "Complex type fallback retry",
"data_viewer.sql_log.phase.sort_buffer_retry": "Retry ({{size}} sort_buffer)",
"definition_viewer.object.view": "View",
"definition_viewer.object.materialized_view": "Materialized view",
"definition_viewer.object.routine": "Function/procedure",
"definition_viewer.object.event": "Event",
"definition_viewer.loading.view_definition": "Loading view definition...",
"definition_viewer.loading.routine_definition": "Loading function/procedure definition...",
"definition_viewer.loading.event_definition": "Loading event definition...",
"definition_viewer.error.load_failed": "Load failed",
"definition_viewer.error.connection_not_found": "Database connection not found",
"definition_viewer.error.view_name_empty": "View name is empty",
"definition_viewer.error.event_name_empty": "Event name is empty",
"definition_viewer.error.routine_name_empty": "Function/procedure 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.field.database": "Database",
"definition_viewer.field.type": "Type",
"definition_viewer.editor.unsupported_view_definition": "This database type does not support viewing view definitions",
"definition_viewer.editor.unsupported_sqlite_routine_definition": "SQLite does not support function/procedure definition management",
"definition_viewer.editor.unsupported_routine_definition": "This database type does not support viewing function/procedure definitions",
"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.view_definition_not_found": "View definition not found",
"definition_viewer.editor.routine_definition_not_found": "Function/procedure definition not found",
"definition_viewer.editor.event_definition_not_found": "Event definition not found",
"definition_viewer.editor.object_definition_not_found": "{{object}} definition not found",
"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.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.sphinx.empty_result": "Current Sphinx instance{{version}} returned no {{object}} definition.",
"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.unsupported_query": "Current Sphinx instance{{version}} does not support querying {{object}} definitions.",
"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.version_suffix": " (version: {{version}})",
"trigger_viewer.loading.definition": "Loading trigger definition...",
"trigger_viewer.error.load_failed": "Load failed",
"trigger_viewer.error.connection_not_found": "Database connection not found",
"trigger_viewer.error.trigger_name_empty": "Trigger name is empty",
"trigger_viewer.error.query_failed": "Failed to query trigger definition",
"trigger_viewer.error.query_failed_detail": "Failed to query trigger definition: {{detail}}",
"trigger_viewer.field.trigger": "Trigger",
"trigger_viewer.field.database": "Database",
"trigger_viewer.editor.unsupported.duckdb": "DuckDB does not support triggers",
"trigger_viewer.editor.unsupported.tdengine": "TDengine does not support triggers",
"trigger_viewer.editor.unsupported.mongodb": "MongoDB does not support triggers",
"trigger_viewer.editor.unsupported.generic": "This database type does not support viewing trigger definitions",
"trigger_viewer.editor.definition_not_found": "Trigger definition not found",
"trigger_viewer.editor.sphinx.version_suffix": " (version: {{version}})",
"trigger_viewer.editor.sphinx.empty_result": "Current Sphinx instance{{version}} returned no trigger definition.",
"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.unsupported_query": "Current Sphinx instance{{version}} does not support querying trigger definitions.",
"trigger_viewer.editor.sphinx.failed_message_label": "Returned failure message",
"trigger_viewer.editor.sphinx.failed_message_unknown": "Returned failure message: Unknown error",
"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.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.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.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.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.embedded_designer.title": "Design table ({{tableName}})",
"data_grid.secondary.pending_changes": "Pending {{count}}",
"data_grid.secondary.row_count": "{{count}} rows",
"data_grid.secondary.view_ddl": "View DDL",
"data_grid.row_editor.popup_edit": "Edit in popup",
"data_grid.row_editor.title": "Edit row",
"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_label": "Commit transaction",
"data_grid.toolbar.commit_delay.seconds": "{{seconds}}s",
"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",
"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.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_created": "Index created",
"table_designer.message.index_create_sql_unavailable": "Unable to generate index creation SQL",
"table_designer.message.index_create_sql_placeholder": "Index creation SQL is unavailable",
"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.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.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.starrocks.table_kind.olap": "OLAP table",
"table_designer.starrocks.table_kind.external": "External table",
"table_designer.starrocks.key_model.duplicate": "Duplicate key",
"table_designer.starrocks.key_model.unique": "Unique key",
"table_designer.starrocks.key_model.aggregate": "Aggregate key",
"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.distribution.hash": "Hash distribution",
"table_designer.starrocks.distribution.random": "Random distribution",
"table_designer.starrocks.distribution.none": "No distribution",
"table_designer.starrocks.placeholder.distribution_columns": "Distribution columns, for example user_id",
"table_designer.starrocks.bucket_mode.auto": "Auto buckets",
"table_designer.starrocks.bucket_mode.number": "Fixed bucket count",
"table_designer.starrocks.placeholder.bucket_count": "Buckets",
"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.drop": "Drop change",
"table_designer.sql_preview.change.modify": "Column property change",
"table_designer.sql_preview.change.rename": "Rename change",
"table_designer.summary.indexes": "Indexes: {{count}}, indexed fields: {{fields}}",
"table_designer.summary.columns": "{{count}} columns",
"table_designer.status.read_only": "Read only",
"table_designer.title.untitled_table": "Untitled table",
"table_designer.title.default_database": "Default database",
"table_designer.title.schema_designer": "Schema designer",
"table_designer.tab.columns": "Columns",
"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.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",
"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.backend.message.connect_success": "Connection succeeded",
"redis.backend.message.set_success": "Set succeeded",
"redis.backend.message.select_db_success": "Database switched",
"redis.backend.message.rename_success": "Rename succeeded",
"redis.backend.message.delete_success": "Delete succeeded",
"redis.backend.message.add_success": "Add succeeded",
"redis.backend.message.flush_success": "Flush succeeded",
"redis.backend.error.command_required": "Command cannot be empty",
"redis.backend.error.argument_required": "{{name}} is required",
"redis.backend.error.argument_invalid_type": "{{name}} has an invalid type",
"redis.backend.error.address_required": "Redis connection address cannot be empty",
"redis.backend.error.node_address_required": "Redis node address cannot be empty",
"redis.backend.error.invalid_node_address": "Invalid Redis node address: {{address}}",
"redis.backend.error.invalid_port": "Invalid Redis port: {{address}}",
"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.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.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_loaded": "Select all loaded",
"redis_viewer.action.select_group": "Select",
"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.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.keys_count": "{{count}} Keys",
"redis_viewer.label.node_count": "{{count}} nodes",
"redis_viewer.label.length": "Length: {{count}}",
"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.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.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.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.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.topology.cluster": "Cluster",
"redis_viewer.topology.sentinel": "Sentinel",
"redis_viewer.topology.single": "Single",
"redis_viewer.state.connection_not_found": "Connection not found",
"redis_viewer.state.empty_selection": "Select a Key to view details",
"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.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",
"ai_chat.header.default_session_title": "New chat",
"ai_chat.header.export_time": "Exported at:",
"ai_chat.header.export_user": "You",
"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.header.session.connected": "{{title}} · Connected",
"ai_chat.header.mode_tabs.aria_label": "AI work mode",
"ai_chat.header.mode.chat": "Chat",
"ai_chat.header.mode.insights": "Auto insights",
"ai_chat.header.mode.history": "History",
"ai_chat.header.action.export": "Export",
"ai_chat.history.action.new_chat": "Start new chat",
"ai_chat.history.default_session_title": "New chat",
"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.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.title": "Hi, I am GoNavi AI",
"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.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.input.action.send": "Send",
"ai_chat.input.action.stop": "Stop generating",
"ai_chat.input.context.connection_tooltip": "Current data query context",
"ai_chat.input.context.memory_tooltip": "Current session memory usage. Auto-compression starts when it reaches the {{limit}} limit.",
"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_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... (Enter to send, Shift+Enter for newline, / for commands)",
"ai_chat.input.slash.diff.desc": "Compare two tables and generate changes",
"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.explain.desc": "Explain the selected 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.index.desc": "Recommend the best index plan",
"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.mock.desc": "Generate INSERT test data",
"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.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.label": "🔍 Natural language query",
"ai_chat.input.slash.query.prompt": "Write a SQL query for me:",
"ai_chat.input.slash.schema.desc": "Review table design quality",
"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.sql.desc": "Describe requirements and generate statements",
"ai_chat.input.slash.sql.label": "📝 Generate SQL",
"ai_chat.input.slash.sql.prompt": "Generate SQL from the following requirements:",
"ai_chat.input.tooltip.attach_table_context": "Attach database table context",
"ai_chat.input.tooltip.upload_image": "Upload image or screenshot",
"ai_chat.tools.mcp_fallback_description": "MCP tool {{toolName}} provided by {{serverName}}",
"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.message.action.copy_full": "Copy full text",
"ai_chat.message.action.copied": "Copied",
"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.action.copy_error_raw": "Copy raw error",
"ai_chat.message.action.copied_error_raw": "Raw error copied",
"ai_chat.message.role.user": "You",
"ai_chat.message.image_alt": "Attached image {{index}}",
"ai_chat.message.code.copy": "Copy code",
"ai_chat.message.code.copied": "Copied",
"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.execute": "Execute",
"ai_chat.message.code.execute_tooltip": "Execute now, subject to the AI safety policy",
"ai_chat.message.code.executing": "Executing...",
"ai_chat.message.code.preview": "Preview",
"ai_chat.message.code.preview_tooltip": "Preview query results in chat, up to 20 rows",
"ai_chat.message.code.expand_all": "Expand all code",
"ai_chat.message.code.collapse": "Collapse code",
"ai_chat.message.code.preview_result": "Preview result ({{rows}} rows x {{columns}} columns)",
"ai_chat.message.code.preview_collapse": "Collapse",
"ai_chat.message.code.view_result": "View result ({{rows}} rows)",
"ai_chat.message.code.query_no_result": "Query returned no results",
"ai_chat.message.code.execute_failed": "Execution failed",
"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_title": "⚠️ Safety confirmation",
"ai_chat.message.security.default_warning": "This SQL is a {{operationType}} operation. Execute it?",
"ai_chat.message.security.confirm_execute": "Execute",
"ai_chat.message.thinking.title": "Thinking process",
"ai_chat.message.thinking.active": "Thinking...",
"ai_chat.message.thinking.count": "({{count}} chars)",
"ai_chat.message.tool_result.title": "Probe result ({{name}})",
"ai_chat.message.tool_result.char_count": "{{count}} chars",
"ai_chat.message.tool_result.no_data": "No data",
"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_tables": "Analyze table structure info",
"ai_chat.message.tool_call.get_columns": "Read column list",
"ai_chat.message.tool_call.get_table_ddl": "Read CREATE TABLE statement",
"ai_chat.message.tool_call.execute_sql": "Execute SQL query",
"ai_chat.message.tool_call.running": "Running data probes...",
"ai_chat.message.tool_call.done": "Data probes completed ({{count}} items)",
"ai_chat.message.wait.connecting": "Connecting",
"ai_chat.message.jvm.apply_preview": "Apply to JVM preview",
"ai_chat.message.jvm.apply_diagnostic": "Apply to 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.jvm.missing_diagnostic_context": "This diagnostic plan is missing source tab context. Regenerate it from the target diagnostic console.",
"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.mermaid.parse_failed": "Mermaid parse failed: {{detail}}",
"ai_chat.message.mermaid.render_failed": "Mermaid render failed: {{detail}}",
"ai_chat.panel.history.empty": "No chat history yet",
"ai_chat.panel.insight.context.linked_title": "{{count}} linked tables",
"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.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.table_separator": ", ",
"ai_chat.panel.insight.context.more_tables_suffix": " and more tables",
"ai_chat.panel.insight.query.slowest_title": "Slowest recent query {{duration}}ms",
"ai_chat.panel.insight.query.empty_title": "No query duration samples yet",
"ai_chat.panel.insight.query.empty_body": "After a query runs, SQL clues for optimization analysis appear here.",
"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.status.empty_body": "No SQL logs yet.",
"ai_chat.panel.insight.write.detected_title": "Detected {{count}} write operations",
"ai_chat.panel.insight.write.readonly_title": "Currently focused on read-only analysis",
"ai_chat.panel.insight.write.detected_body": "For SQL involving writes, generate a preview and rollback statements before committing.",
"ai_chat.panel.insight.write.readonly_body": "AI defaults to explaining, generating SELECT, analyzing Schema, and optimizing indexes.",
"ai_chat.panel.render_error.title": "This AI message failed to render and was isolated",
"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.unknown": "Unknown render error",
"ai_chat.panel.render_error.retry": "Retry render",
"ai_chat.panel.render_error.delete": "Delete this message",
"ai_chat.panel.status.memory_compressing": "⚙️ Conversation is overloaded. Starting memory compression...",
"ai_chat.panel.status.memory_compress_failed": "❌ Memory compression failed. Continuing with the original context...",
"ai_chat.panel.status.memory_summary": "[Automatic memory reshape] Long history has been compressed into a summary:\n\n{{summary}}",
"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.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.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.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_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.permission.allowed": "allowed",
"ai_chat.panel.jvm_diagnostic.permission.forbidden": "forbidden",
"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.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.policy.preview_required": "Writable connection, but every modification must generate a preview first and wait for human confirmation.",
"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.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_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.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.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.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.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_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.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_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.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.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.table_name": "tableName",
"ai_chat.panel.local_tool.param.sql": "SQL statement to execute",
"ai_chat.panel.tool_error.connection_not_found": "Connection not found",
"ai_chat.panel.tool_error.unknown_function": "Unknown function: {{functionName}}",
"ai_chat.panel.tool_error.fetch_databases_failed": "Failed to fetch database list: {{detail}}",
"ai_chat.panel.tool_error.fetch_tables_failed": "Failed to fetch table list: {{detail}}",
"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.panel.tool_error.fetch_columns_failed": "Failed to fetch column list: {{detail}}",
"ai_chat.panel.tool_error.fetch_table_ddl_failed": "Failed to fetch CREATE TABLE statement: {{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_failed": "SQL execution failed",
"ai_chat.panel.tool_error.sql_execute_exception": "SQL execution exception: {{detail}}",
"ai_chat.panel.error.unknown": "Unknown error",
"ai_chat.panel.error.http_server": "HTTP {{code}} server error",
"ai_chat.panel.error.html_response": "The server returned an abnormal HTML response, possibly a gateway timeout or unavailable service",
"ai_chat.panel.error.truncated_suffix": "...(truncated)",
"ai_chat.panel.notice.fetch_models_failed": "Failed to fetch model list: {{detail}}",
"ai_chat.panel.message.error": "❌ Error: {{detail}}",
"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.request_interrupted": "❌ Request interrupted: no concrete reply was received.",
"ai_chat.panel.message.service_not_ready": "❌ AI Service is not ready",
"ai_chat.panel.message.send_failed": "❌ Send failed: {{detail}}",
"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.probe.consecutive_failed": "⚠️ Probes failed for 3 consecutive rounds and were stopped. Check the connection status and retry.",
"ai_chat.panel.status.summarizing_probe": "Summarizing probe results",
"ai_chat.panel.status.returning_runtime_data": "Returning runtime data to the model",
"ai_chat.panel.status.deep_reasoning": "Model is reasoning deeply",
"ai_chat.panel.status.waiting_instruction": "Waiting for operation instructions",
"ai_chat.panel.status.analyzing_chain": "Analyzing chain and logic deeply",
"ai_chat.panel.status.model_connecting": "Connecting to model",
"ai_chat.panel.status.waking_engine": "Waking reasoning engine",
"ai_chat.panel.status.waiting_response": "Waiting for model response",
"ai_chat.panel.session.default_title": "New chat",
"ai_settings.title": "AI settings",
"ai_settings.subtitle": "Configure AI models, safety level, and context options",
"ai_settings.nav.title": "Settings navigation",
"ai_settings.nav.providers.title": "Model providers",
"ai_settings.nav.providers.description": "Configure model endpoints and secrets",
"ai_settings.nav.safety.title": "Safety control",
"ai_settings.nav.safety.description": "Limit AI operation risk level",
"ai_settings.nav.context.title": "Context",
"ai_settings.nav.context.description": "Configure database schema context",
"ai_settings.nav.tools.title": "Built-in tools",
"ai_settings.nav.tools.description": "View data probes available to AI",
"ai_settings.nav.prompts.title": "Built-in prompts",
"ai_settings.nav.prompts.description": "View system-level preset requirements",
"ai_settings.provider.empty.title": "No model provider configured",
"ai_settings.provider.empty.description": "Add one to start using the AI assistant",
"ai_settings.provider.no_model": "No model selected",
"ai_settings.provider.next_provider": "next provider",
"ai_settings.provider.action.add": "Add model provider",
"ai_settings.provider.action.edit": "Edit",
"ai_settings.provider.action.delete": "Delete",
"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_preset.openai.label": "OpenAI",
"ai_settings.provider_preset.openai.desc": "GPT-5.4 / 5.3 series",
"ai_settings.provider_preset.deepseek.label": "DeepSeek",
"ai_settings.provider_preset.deepseek.desc": "DeepSeek-V4 / R1",
"ai_settings.provider_preset.qwen_bailian.label": "Qwen (Bailian General)",
"ai_settings.provider_preset.qwen_bailian.desc": "Bailian Anthropic-compatible endpoint / remote model list",
"ai_settings.provider_preset.qwen_coding_plan.label": "Qwen (Coding Plan)",
"ai_settings.provider_preset.qwen_coding_plan.desc": "Claude Code CLI proxy chain / official supported model list",
"ai_settings.provider_preset.zhipu.label": "Zhipu GLM",
"ai_settings.provider_preset.zhipu.desc": "GLM-5 / GLM-5-Turbo",
"ai_settings.provider_preset.moonshot.label": "Kimi",
"ai_settings.provider_preset.moonshot.desc": "Kimi K2.5 (Anthropic-compatible)",
"ai_settings.provider_preset.anthropic.label": "Claude",
"ai_settings.provider_preset.anthropic.desc": "Claude Opus/Sonnet",
"ai_settings.provider_preset.gemini.label": "Gemini",
"ai_settings.provider_preset.gemini.desc": "Gemini 3.1 / 2.5 series",
"ai_settings.provider_preset.volcengine_ark.label": "Volcengine Ark",
"ai_settings.provider_preset.volcengine_ark.desc": "Ark general inference / Doubao models",
"ai_settings.provider_preset.volcengine_coding.label": "Volcengine Coding Plan",
"ai_settings.provider_preset.volcengine_coding.desc": "Ark Code / Coding Plan",
"ai_settings.provider_preset.minimax.label": "MiniMax",
"ai_settings.provider_preset.minimax.desc": "M2.7 / M2.5 series (Anthropic-compatible)",
"ai_settings.provider_preset.ollama.label": "Ollama",
"ai_settings.provider_preset.ollama.desc": "Locally deployed open-source models",
"ai_settings.provider_preset.custom.label": "Custom",
"ai_settings.provider_preset.custom.desc": "Custom API endpoint",
"ai_settings.form.section.service_type": "Service type",
"ai_settings.form.section.basic": "Basic information",
"ai_settings.form.section.auth_connection": "Authentication & connection",
"ai_settings.form.provider_name": "Provider name",
"ai_settings.form.provider_name_required": "Enter a name",
"ai_settings.form.provider_name_placeholder": "Example: My OpenAI-compatible endpoint / private model",
"ai_settings.form.api_format": "API format",
"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.api_key": "API Key",
"ai_settings.form.api_key_required": "Enter an API Key",
"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_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.api_endpoint": "API Endpoint (URL)",
"ai_settings.form.api_endpoint_required": "Enter a valid endpoint URL",
"ai_settings.action.back": "Back",
"ai_settings.action.save": "Save",
"ai_settings.action.test": "Test connection",
"ai_settings.action.retest": "Test again",
"ai_settings.action.connection_ok": "Connection OK",
"ai_settings.message.deleted": "Deleted",
"ai_settings.message.deleted_and_switched": "Deleted and automatically switched to \"{{name}}\"",
"ai_settings.message.delete_failed": "Delete failed",
"ai_settings.message.delete_failed_detail": "Delete failed: {{detail}}",
"ai_settings.message.saved": "Saved",
"ai_settings.message.save_failed": "Save failed",
"ai_settings.message.save_failed_detail": "Save failed: {{detail}}",
"ai_settings.message.switched": "Switched",
"ai_settings.message.switch_failed": "Switch failed",
"ai_settings.message.switch_failed_detail": "Switch 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.test_failed": "Test failed",
"ai_settings.message.test_failed_detail": "Test failed: {{detail}}",
"ai_settings.message.unknown_error": "Unknown error",
"ai_settings.safety.description": "Control which SQL operation types AI may execute to protect data safety",
"ai_settings.safety.readonly.label": "Read-only mode",
"ai_settings.safety.readonly.desc": "AI may only run SELECT and similar query operations. This is the safest mode.",
"ai_settings.safety.readwrite.label": "Read/write mode",
"ai_settings.safety.readwrite.desc": "AI may run INSERT/UPDATE/DELETE. Risky operations require confirmation.",
"ai_settings.safety.full.label": "Full mode",
"ai_settings.safety.full.desc": "AI may run all operations, including DDL. High-risk operations show warnings automatically.",
"ai_settings.context.description": "Control how much database context is sent to AI",
"ai_settings.context.schema_only.label": "Schema only",
"ai_settings.context.schema_only.desc": "Only table and column structure is sent to AI",
"ai_settings.context.with_samples.label": "With samples",
"ai_settings.context.with_samples.desc": "Include a small amount of sample data to help AI understand data patterns",
"ai_settings.context.with_results.label": "With query results",
"ai_settings.context.with_results.desc": "Send recent query results as 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.message.saved": "Custom prompts saved",
"ai_settings.prompts.message.save_failed": "Failed to save custom prompts",
"ai_settings.mcp_server.message.saved": "MCP server saved",
"ai_settings.mcp_server.message.save_failed": "Failed to save MCP server",
"ai_settings.mcp_server.message.deleted": "MCP server deleted",
"ai_settings.mcp_server.message.delete_failed": "Failed to delete MCP server",
"ai_settings.mcp_server.message.test_success": "MCP server connection succeeded",
"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.clipboard.error.unsupported": "Copying to the clipboard is not supported in this environment",
"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.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_unavailable": "No MCP HTTP URL is available to copy",
"ai_settings.mcp_http.message.url_copied": "MCP HTTP URL 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.authorization_header_copied": "Authorization Header copied",
"ai_settings.mcp_http.status.not_running": "GoNavi MCP HTTP server is not running",
"ai_settings.skill.message.saved": "Skill saved",
"ai_settings.skill.message.save_failed": "Failed to save Skill",
"ai_settings.skill.message.deleted": "Skill deleted",
"ai_settings.skill.message.delete_failed": "Failed to delete Skill",
"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.workflow": "💡 Workflow: get_connections -> get_databases -> get_tables -> get_columns -> generate SQL",
"ai_settings.tools.params_label": "Parameters:",
"ai_settings.tools.builtin_tool_label": "Built-in tool",
"ai_settings.tools.search.aria_label": "Search built-in tools",
"ai_settings.tools.search.placeholder": "Search tools, flows, or parameters, for example mcp / lineLimit / allowMutating / transaction",
"ai_settings.tools.search.clear": "Clear",
"ai_settings.tools.summary": "Showing {{flowVisible}}/{{flowTotal}} recommended flows and {{toolVisible}}/{{toolTotal}} built-in tools.",
"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.parameters.hint_title": "Parameter hints",
"ai_settings.tools.parameters.type_label": "Type: {{type}}",
"ai_settings.tools.parameters.required": "Required",
"ai_settings.tools.parameters.optional": "Optional",
"ai_settings.tools.parameters.enum_values": "Allowed values: {{values}}",
"ai_settings.tools.parameters.default_value": "Default: {{value}}",
"ai_settings.tools.parameters.example": "Example:",
"ai_settings.tools.params.none": "None",
"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_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.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_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.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.",
"driver_manager.title": "Driver Manager",
"driver_manager.action.refresh": "Refresh",
"driver_manager.action.network_check": "Network Check",
"driver_manager.action.close": "Close",
"driver_manager.action.open_global_proxy_settings": "Open Global Proxy Settings",
"driver_manager.action.open_directory": "Open Driver Directory",
"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.remove": "Remove",
"driver_manager.action.logs": "Logs",
"driver_manager.column.data_source": "Data Source",
"driver_manager.column.package_size": "Package Size",
"driver_manager.column.status": "Status",
"driver_manager.column.progress": "Install Progress",
"driver_manager.column.version": "Driver Version",
"driver_manager.column.actions": "Actions",
"driver_manager.description.install_required": "Except for MySQL / Redis / Oracle / PostgreSQL, data sources must be installed and enabled before connecting.",
"driver_manager.directory_info.title": "Driver Directory and Reuse Notes",
"driver_manager.directory_info.details_label": "View driver directory and reuse notes",
"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.log_file": "Runtime log file: {{path}}",
"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.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.local_source.file": "file",
"driver_manager.local_source.directory": "directory",
"driver_manager.log.start_auto_install": "Starting automatic installation",
"driver_manager.log.done_auto_install": "Automatic installation completed{{version}}",
"driver_manager.log.start_local_import": "Starting local import{{version}} ({{source}}): {{path}}",
"driver_manager.log.done_local_import": "Local import installation completed{{version}}",
"driver_manager.log.skip_installed_dedupe": "Driver is already installed; skipped by directory import dedupe",
"driver_manager.log.force_overwrite_reinstall": "Overwrite installed mode is enabled; reinstall import will run",
"driver_manager.log.skip_slim_build": "Current release package is a slim build; directory import skipped",
"driver_manager.log.start_remove": "Starting driver removal",
"driver_manager.log.done_remove": "Driver removal completed",
"driver_manager.log.progress_line": "[{{status}}] {{message}} ({{percent}}%)",
"driver_manager.log_modal.title": "Driver Logs - {{name}}",
"driver_manager.log_modal.install_dir": "Install directory: {{path}}",
"driver_manager.log_modal.executable_path": "Driver executable: {{path}}",
"driver_manager.log_modal.empty": "This driver has no operation logs yet.",
"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.network_check_failed": "Driver network check failed",
"driver_manager.message.network_check_failed_detail": "Driver network check failed: {{detail}}",
"driver_manager.message.network_check_completed": "Driver network check completed",
"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.install_start": "Starting installation",
"driver_manager.message.install_failed": "Failed to install {{name}}",
"driver_manager.message.install_failed_detail": "Failed to install {{name}}: {{detail}}",
"driver_manager.message.install_success": "{{name}}{{version}} installed and enabled",
"driver_manager.message.local_path_required": "Select a valid local import {{source}}",
"driver_manager.message.local_import_start": "Starting local driver package import",
"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_success": "{{name}}{{version}} local driver package installed and enabled",
"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.local_file_required": "Select a valid driver package file",
"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.local_directory_required": "Select a valid driver package directory",
"driver_manager.message.no_external_drivers_to_import": "There are no external drivers to import",
"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.message.overwrite_suffix": " (overwrite installed)",
"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.open_directory_failed": "Failed to open driver directory",
"driver_manager.message.open_directory_failed_detail": "Failed to open driver directory: {{detail}}",
"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.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.summary.download_chain_unreachable": "GitHub API is reachable, but driver download asset domains are not reachable.",
"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.summary.proxy_recommended": "Some driver download endpoints are unreachable. Configure an HTTP/HTTPS/SOCKS5 proxy before installing drivers.",
"driver_manager.network.summary.unreachable": "Some driver download endpoints are unreachable. Check your network and retry.",
"driver_manager.network.summary.reachable_with_proxy": "Driver download network is available through the configured proxy.",
"driver_manager.network.summary.reachable": "Driver download network is available. You can install drivers directly.",
"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.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.proxy_env_detected": "Detected proxy environment variables: {{keys}}",
"driver_manager.network.details_label": "View network check details",
"driver_manager.network.github_latency": "Proxy route to GitHub connectivity latency: {{status}}{{latency}}{{detail}}",
"driver_manager.network.reachable": "reachable",
"driver_manager.network.unreachable": "unreachable",
"driver_manager.network.no_result": "no result",
"driver_manager.network.latency_value": ", {{latency}}ms",
"driver_manager.network.error_value": ", {{detail}}",
"driver_manager.network.no_proxy_env": "No system proxy environment variables detected.",
"driver_manager.network.checking": "Checking driver download network...",
"driver_manager.network.not_checked": "Network check has not completed",
"driver_manager.progress.local_package_start": "Starting local driver package installation",
"driver_manager.progress.metadata_write": "Writing driver metadata",
"driver_manager.progress.local_package_done": "Local driver package import completed",
"driver_manager.progress.install_start": "Starting installation",
"driver_manager.progress.pure_go_enabled": "Installation completed; pure Go driver enabled",
"driver_manager.progress.agent_install_start": "Starting {{name}} driver agent installation",
"driver_manager.progress.agent_install_done": "{{name}} driver agent installation completed",
"driver_manager.progress.download_prebuilt_agent": "Downloading prebuilt {{name}} driver agent",
"driver_manager.progress.download_bundle": "Downloading {{name}} driver bundle",
"driver_manager.progress.extract_agent_from_bundle": "Extracting {{name}} agent from driver bundle",
"driver_manager.progress.unzip_agent": "Extracting {{name}} driver agent",
"driver_manager.progress.source_build_preferred": "Using local source build first for {{name}} driver agent",
"driver_manager.progress.dev_build_fallback": "No prebuilt package matched; trying development local build",
"driver_manager.progress.plan.source_only": "Preparing {{name}} driver agent installation (version {{version}}); this version only allows local source builds",
"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.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.direct_only": "Preparing {{name}} driver agent installation (version {{version}}); trying {{direct}} prebuilt direct links",
"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.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.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.bundle_available": "Direct link unavailable; switching to driver bundle fallback ({{name}}, {{bundle}} bundle sources remaining)",
"driver_manager.progress.fallback.source_build": "Release assets did not match; preparing local source build fallback ({{name}})",
"driver_manager.progress.backend_empty": "No backend progress detail",
"driver_manager.progress.backend_detail": "Backend detail: {{detail}}",
"driver_manager.progress.status.start": "START",
"driver_manager.progress.status.downloading": "DOWNLOADING",
"driver_manager.progress.status.done": "DONE",
"driver_manager.progress.status.error": "ERROR",
"driver_manager.progress.status.unknown": "UNKNOWN",
"driver_manager.option.force_overwrite_installed": "Overwrite installed",
"driver_manager.punctuation.list_separator": ", ",
"driver_manager.search.placeholder": "Search driver name/type, such as DuckDB or clickhouse",
"driver_manager.search.built_in": "built-in",
"driver_manager.search.external": "external",
"driver_manager.status.calculating": "Calculating...",
"driver_manager.status.built_in_available": "Built-in available",
"driver_manager.status.installing_percent": "Installing {{percent}}%",
"driver_manager.status.enabled": "Enabled",
"driver_manager.status.installed": "Installed",
"driver_manager.status.disabled": "Disabled",
"driver_manager.status.full_required": "Full edition required",
"driver_manager.version.default": "Default version",
"driver_manager.version.inline_suffix": " ({{version}})",
"driver_manager.version.group.year": "{{year}}",
"driver_manager.version.group.other": "Other",
"driver_manager.version.placeholder.select": "Select driver version",
"driver_manager.version.placeholder.load_on_expand": "Expand to load versions",
"driver_manager.version.installed_locked_with_version": "{{version}} (installed; remove it to change)",
"driver_manager.version.installed_locked": "Installed (remove it to change)",
"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.backend.dialog.select_download_directory": "Select driver download directory",
"driver_manager.backend.dialog.select_package_file": "Select driver package file (not a JDBC Jar)",
"driver_manager.backend.dialog.select_package_directory": "Select driver package directory",
"driver_manager.backend.driver_fallback_name": "driver",
"driver_manager.backend.package_size.built_in": "Built-in",
"driver_manager.backend.package_size.to_be_published": "To be published",
"driver_manager.backend.version.unlabeled": "Unlabeled version",
"driver_manager.backend.version.latest_suffix": " (latest)",
"driver_manager.backend.version.recommended_suffix": " (recommended)",
"driver_manager.backend.message.unsupported_builtin_manifest_url": "Unsupported built-in driver manifest URL: {{url}}",
"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.runtime_directory_configured": "Driver runtime directory is configured",
"driver_manager.backend.message.opened_directory": "Opened driver directory: {{path}}",
"driver_manager.backend.message.log_hint": " (detail log: {{path}})",
"driver_manager.backend.message.local_import_failed_detail": "Failed to import local driver package: {{detail}}",
"driver_manager.backend.message.metadata_write_failed_detail": "Failed to write driver metadata: {{detail}}",
"driver_manager.backend.message.driver_install_success": "Driver installed successfully",
"driver_manager.backend.message.download_failed_detail": "Failed to download and install driver: {{detail}}",
"driver_manager.backend.message.package_removed": "Driver package removed",
"driver_manager.backend.error.unknown": "Unknown error",
"driver_manager.backend.error.unsupported_driver_type": "Unsupported driver type",
"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_version_not_required": "Built-in drivers do not need version selection",
"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.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.version_empty": "Version is empty",
"driver_manager.backend.error.asset_name_empty": "Driver asset name is empty",
"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.open_directory_unsupported": "Opening directories is not supported on this platform: {{platform}}",
"driver_manager.backend.error.open_directory_failed": "Failed to open driver directory: {{detail}}",
"driver_manager.backend.error.create_directory_failed": "Failed to create driver directory: {{detail}}",
"driver_manager.backend.error.remove_package_failed": "Failed to remove driver package: {{detail}}",
"driver_manager.backend.error.manifest_scheme_unsupported": "Unsupported driver manifest URL scheme: {{scheme}}",
"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_url_empty": "Driver manifest URL is empty",
"driver_manager.backend.error.manifest_too_large": "Driver manifest exceeds the size limit",
"driver_manager.backend.error.local_manifest_url_invalid": "Invalid local driver manifest URL",
"driver_manager.backend.error.file_manifest_url_invalid": "Invalid file driver manifest URL",
"driver_manager.backend.error.driver_type_empty": "Driver type is empty",
"driver_manager.backend.error.no_driver_versions": "No available driver versions were found",
"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.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.cache_key_empty": "Cache key is empty",
"driver_manager.backend.error.release_empty": "Release is empty",
"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.tag_empty": "Tag is empty",
"driver_manager.backend.error.api_url_empty": "API URL is empty",
"driver_manager.backend.error.release_info_fetch_failed": "Failed to fetch Release information: {{detail}}",
"driver_manager.backend.error.local_package_path_empty": "Local driver package path is empty",
"driver_manager.backend.error.local_directory_path_empty": "Local driver directory path is empty",
"driver_manager.backend.error.file_path_empty": "File path is empty",
"driver_manager.backend.error.download_url_empty": "Download URL is empty",
"driver_manager.backend.error.bundle_url_empty": "Driver bundle download URL is empty",
"driver_manager.backend.error.read_local_package_failed": "Failed to read local driver package: {{detail}}",
"driver_manager.backend.error.read_local_directory_failed": "Failed to read local driver directory: {{detail}}",
"driver_manager.backend.error.scan_local_directory_failed": "Failed to scan local driver directory: {{detail}}",
"driver_manager.backend.error.open_local_package_failed": "Failed to open local driver package: {{detail}}",
"driver_manager.backend.error.read_local_package_entry_failed": "Failed to read local driver package entry: {{detail}}",
"driver_manager.backend.error.download_failed": "Download failed: {{detail}}",
"driver_manager.backend.error.bundle_download_failed": "Failed to download driver bundle: {{detail}}",
"driver_manager.backend.error.open_bundle_failed": "Failed to open driver bundle: {{detail}}",
"driver_manager.backend.error.read_bundle_entry_failed": "Failed to read driver bundle entry: {{detail}}",
"driver_manager.backend.error.source_build_failed": "Local source build failed: {{detail}}",
"driver_manager.backend.error.prebuilt_downloads_failed": "Prebuilt package download failed: {{detail}}",
"driver_manager.backend.status.built_in_available": "Built-in driver is ready to connect",
"driver_manager.backend.status.optional_enabled": "Go driver is enabled and ready to connect",
"driver_manager.backend.status.installed_pending_with_version": "Driver is installed (version: {{version}}) and pending activation",
"driver_manager.backend.status.installed_pending": "Driver is installed and pending activation",
"driver_manager.backend.status.optional_disabled_with_version": "Not enabled (version: {{version}})",
"driver_manager.backend.status.optional_disabled_generic": "Not enabled",
"driver_manager.backend.status.needs_update": "Reinstall required to apply driver updates.",
"driver_manager.backend.status.installed_revision": "installed revision {{revision}}.",
"driver_manager.backend.status.expected_revision": "expected revision {{revision}}.",
"driver_manager.backend.status.affected_connections": "Affects {{count}} saved connections",
"driver_manager.backend.status.unrecognized_driver_type": "Unrecognized data source type",
"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.agent_path_failed": "{{name}} driver agent path could not be resolved; 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.optional_disabled": "{{name}} Go driver is not enabled; install and enable it in Driver Manager.",
"driver_manager.backend.status.agent_unavailable_reinstall": "{{name}} driver agent is unavailable: {{detail}}; reinstall and enable it in Driver Manager.",
"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.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.error.probe_url_empty": "Probe URL is empty",
"driver_manager.backend.network.error.probe_host_missing": "Probe URL is missing a host",
"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.progress.plan.source_only": "Preparing to install {{name}} driver agent (version {{version}}); this version only allows local source builds",
"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.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.direct_only": "Preparing to install {{name}} driver agent (version {{version}}); try {{direct}} prebuilt direct link first",
"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.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.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.bundle_available": "Direct links are unavailable; falling back to driver bundles ({{name}}, {{bundle}} bundle source remaining)",
"driver_manager.backend.progress.fallback.source_build": "Release assets did not match; preparing to fall back to a local source build ({{name}})",
"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.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.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.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.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.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.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.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.connect_source_failed": "Source database connection failed: {{detail}}",
"data_sync.backend.error.connect_target_failed": "Target database connection failed: {{detail}}",
"data_sync.backend.error.init_source_driver_failed": "Failed to initialize source database driver: {{detail}}",
"data_sync.backend.error.init_target_driver_failed": "Failed to initialize target database driver: {{detail}}",
"data_sync.backend.error.preview_composite_pk_unsupported": "Composite primary key ({{columns}}) is not supported for data preview",
"data_sync.backend.error.preview_pk_required": "No primary key, data preview 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.result.analyzed_tables": "Analyzed {{count}} table(s)",
"data_sync.backend.result.analyzed_target_tables": "Analyzed {{count}} target table(s)",
"data_sync.backend.summary.diff_completed": "Difference analysis completed",
"data_sync.backend.summary.source_query_diff_completed": "SQL result-set difference analysis completed",
"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.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.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.modal.full_overwrite_title": "Confirm Full Overwrite",
"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.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.message.precheck_warnings": "Precheck found risks or degraded items. Review them before execution.",
"data_sync.message.more_items_collapsed": "{{count}} more not shown",
"data_sync.table.table_name": "Table",
"data_sync.table.target_table": "Target Table",
"data_sync.table.target_exists": "Exists",
"data_sync.table.target_missing": "Missing",
"data_sync.table.plan": "Plan",
"data_sync.table.insert": "Insert",
"data_sync.table.update": "Update",
"data_sync.table.delete": "Delete",
"data_sync.table.same": "Same",
"data_sync.table.risk": "Risk",
"data_sync.table.preview": "Preview",
"data_sync.title.compare_result": "Comparison Result",
"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.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.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.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.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.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.sync_execution_failed": "Sync execution failed",
"data_sync.message.sync_execution_failed_detail": "Sync execution failed: {{detail}}",
"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.source_dataset.query": "Sync by SQL Result Set",
"data_sync.option.source_dataset.table": "Sync by Table",
"data_sync.option.show_same_tables": "Show Same Tables",
"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.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.plan.use_existing_target": "Import into existing target table",
"data_sync.plan.target_missing_manual_create": "Target table 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_cannot_sync": "Target table is missing. Sync cannot run.",
"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.schema_changes_detected": "{{count}} schema changes detected",
"data_sync.plan.add_missing_columns_before_import": "Add {{count}} missing columns before import",
"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.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_auto_add_disabled": "Target table is missing {{count}} columns, and automatic column completion is disabled",
"data_sync.plan.schema_only_no_data_diff": "Schema-only sync. Data difference analysis was not run.",
"data_sync.plan.schema_only": "Schema-only sync",
"data_sync.plan.schema_preview": "Schema preview",
"data_sync.plan.schema_aligned": "Table schema is already aligned",
"data_sync.plan.auto_create_unsupported": "Automatic table creation is not supported for this database pair",
"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_collection": "Import into existing target collection",
"data_sync.plan.target_collection_missing_manual_create": "Target collection is missing. Create it manually first.",
"data_sync.plan.target_collection_missing_auto_create": "Target collection is missing. It will be created automatically before import.",
"data_sync.plan.redis_key_to_mongodb_document": "Generate MongoDB documents from Redis Keys and import them",
"data_sync.plan.migrate_to_collection": "Migrate to collection {{collection}}",
"data_sync.plan.migrate_to_target": "Migrate to {{target}}",
"data_sync.plan.source_query_preview": "SQL result-set sync preview",
"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.backend_summary": "Plan summary",
"data_sync.progress.stage.analysis_started": "Difference analysis started",
"data_sync.progress.stage.analysis_completed": "Difference analysis completed",
"data_sync.progress.stage.sync_started": "Sync started",
"data_sync.progress.stage.connecting_source": "Connecting to source database",
"data_sync.progress.stage.connecting_target": "Connecting to target database",
"data_sync.progress.stage.analyzing_table": "Analyzing table ({{current}}/{{total}})",
"data_sync.progress.stage.syncing_table": "Syncing table ({{current}}/{{total}})",
"data_sync.progress.stage.table_completed": "Table processing completed",
"data_sync.progress.stage.creating_target_table": "Creating target table",
"data_sync.progress.stage.syncing_schema": "Syncing table schema",
"data_sync.progress.stage.creating_indexes": "Creating indexes",
"data_sync.progress.stage.reading_source": "Reading source table data",
"data_sync.progress.stage.reading_target": "Reading target table data",
"data_sync.progress.stage.comparing_diff": "Comparing differences",
"data_sync.progress.stage.clearing_target": "Clearing target table",
"data_sync.progress.stage.checking_columns": "Checking column consistency",
"data_sync.progress.stage.applying_changes": "Applying changes",
"data_sync.progress.stage.completed": "Sync completed",
"data_sync.progress.stage.failed": "Sync failed",
"data_sync.progress.stage.redis_keyspace_started": "Redis keyspace migration started",
"data_sync.progress.stage.creating_target_collection": "Creating target collection",
"data_sync.progress.stage.migrating_key": "Migrating Key ({{current}}/{{total}})",
"data_sync.progress.stage.mongodb_keyspace_started": "MongoDB keyspace migration started",
"data_sync.progress.stage.migrating_collection": "Migrating collection ({{current}}/{{total}})",
"data_sync.progress.stage.collection_completed": "Collection processing completed",
"data_sync.progress.stage.backend_update": "Progress update",
"data_sync.progress.stage.analyzing_diff": "Analyzing differences",
"data_sync.progress.stage.executing": "Executing",
"data_sync.progress.stage.preparing": "Preparing",
"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.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.title.source_database": "Source Database",
"data_sync.title.target_database": "Target Database",
"data_sync.title.migration_options": "Migration Options",
"data_sync.title.sync_options": "Sync Options",
"data_sync.title.execution_log": "Execution Log",
"data_sync.step.configure": "Configure Source and Target",
"data_sync.step.result": "Execution Result",
"data_sync.step.select_tables": "Select Tables",
"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.transfer.source_tables": "Source Tables",
"data_sync.transfer.selected_tables": "Selected Tables",
"data_sync.transfer.item_unit": "item",
"data_sync.transfer.items_unit": "items",
"data_sync.transfer.search_placeholder": "Search tables...",
"data_sync.transfer.empty": "No data",
"data_sync.title.migration_description": "Create tables, import data, and run risk prechecks from source to target.",
"data_sync.title.migration_workbench": "Cross-Database Migration Workbench",
"data_sync.title.sync_description": "Compare differences, execute sync, and confirm results against existing target tables.",
"data_sync.title.sync_workbench": "Data Sync Workbench",
"data_sync.title.migration": "Cross-Database Migration",
"data_sync.title.sync": "Data Sync",
"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.plan.use_existing_target_table": "Import into existing target table",
"data_sync.plan.missing_columns_auto_add": "Add {{count}} missing columns before import",
"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.redis_mongo_keyspace_import": "Generate MongoDB documents from Redis Keys and import them",
"data_sync.plan.redis_mongo_target_collection_missing_manual": "Target collection is missing. Create it manually first.",
"data_sync.plan.redis_mongo_target_collection_auto_create": "Target collection is missing. It will be created automatically before import.",
"data_sync.backend.summary.redis_mongo_planned_action": "Migrate to collection {{collection}}",
"data_sync.backend.summary.mongo_redis_planned_action": "Migrate to {{target}}",
"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.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.mongo_redis_migrating_collection": "Migrating collection ({{current}}/{{total}})",
"data_sync.progress.stage.mongo_redis_collection_completed": "Collection processing completed",
"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.clear_target_failed": "Failed to clear target table: {{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_mongodb_failed": "Target MongoDB connection failed: {{detail}}",
"data_sync.backend.error.connect_target_redis_failed": "Target Redis connection failed: {{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.execute_source_query_failed": "Failed to execute source query: {{detail}}",
"data_sync.backend.error.init_source_mongodb_driver_failed": "Failed to initialize source MongoDB 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_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.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_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.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.scan_redis_keys_failed": "Failed to scan Redis Keys: {{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_table_columns_missing": "Target table {{table}} is missing or its column definitions could not be read",
"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.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.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_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_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.plan.data_import_without_diff": "The current mode imports source table data without difference comparison.",
"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.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_existing_only_warning": "Current strategy requires an existing target MongoDB collection; execution will not create it automatically",
"data_sync.plan.redis_mongo_unsupported_objects": "Redis Consumer Group / PubSub / Lua scripts / transaction state are not migrated yet",
"data_sync.plan.target_missing_preview_unavailable": "The target table is missing. Difference preview is unavailable.",
"data_sync.progress.stage.redis_mongo_started": "Redis to MongoDB keyspace migration started",
"data_sync.progress.stage.mongo_redis_started": "MongoDB to Redis keyspace migration started",
"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.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.warning.auto_create_pair_unsupported": "Automatic table creation currently supports only MySQL -> Kingbase; current pair={{sourceType}} -> {{targetType}}",
"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_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_user_defined_degraded_clickhouse_string": "Column {{column}} is a user-defined type and was degraded to String",
"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.pg_like_identity_not_preserved_clickhouse": "Column {{column}} identity/auto-increment semantics are not preserved in ClickHouse",
"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_table_existing_only_required": "The current strategy requires the target table to exist, so it will not be created automatically at execution.",
"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.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.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_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.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.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.exec_ddl_statement_failed": "{{stage}} failed: SQL={{sql}}, error={{detail}}",
"data_sync.backend.error.mongo_read_source_samples_failed": "Failed to read source MongoDB collection samples: {{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_failed": "Data sync preview failed: {{detail}}",
"data_sync.backend.error.preview_prepare_secrets_failed": "Failed to prepare data sync preview secrets: {{detail}}",
"data_sync.backend.error.read_source_table_failed_with_table": "Failed to read source table {{table}}: {{detail}}",
"data_sync.backend.error.read_target_table_failed_with_table": "Failed to read target table {{table}}: {{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.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_table_columns_failed": "Failed to get target table columns: {{detail}}",
"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.preview_ready": "Data sync preview is ready",
"data_sync.backend.result.sync_completed": "Sync completed: tables={{tables}}, inserted={{rowsInserted}}, updated={{rowsUpdated}}, deleted={{rowsDeleted}}",
"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_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.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_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.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.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_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.refresh_columns_after_add_failed": "Failed to refresh target columns after adding columns: table={{table}}, error={{detail}}",
"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.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_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.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.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.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.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.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",
"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_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.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.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).",
"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.database_name_required": "Database name cannot be empty",
"file.backend.error.directory_path_required": "Directory path cannot be empty",
"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_file_empty": "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_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.open_file_failed": "Unable to open file: {{detail}}",
"file.backend.error.query_required": "Query statement cannot be empty",
"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.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.select_with_query_required": "Only SELECT/WITH query export is supported",
"file.backend.error.task_not_found": "Task not found",
"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.write_failed": "Write failed: {{detail}}",
"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.filter.all_files": "All files",
"file.backend.filter.all_files_pattern": "All files (*.*)",
"file.backend.filter.connection_package": "GoNavi Connection Package (*.gonavi-conn)",
"file.backend.filter.database_files": "Database files",
"file.backend.filter.data_files": "Data 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",
"ai_service.backend.message.provider_test_success": "Endpoint connectivity test succeeded",
"ai_service.backend.error.provider_test_failed": "Connection test failed: {{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_status_failed": "Endpoint returned an unexpected status (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_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_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_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.config_rewrite_failed": "Failed to rewrite AI configuration: {{detail}}",
"ai_service.backend.error.config_read_failed": "Failed to read AI configuration: {{detail}}",
"ai_service.backend.error.config_load_failed": "Failed to load AI configuration: {{detail}}",
"ai_service.backend.error.config_serialize_failed": "Failed to serialize AI configuration: {{detail}}",
"ai_service.backend.error.config_dir_create_failed": "Failed to create configuration directory: {{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.secret_store_unavailable": "Secret store is unavailable: {{detail}}",
"ai_service.backend.error.provider_secret_bundle_parse_failed": "Failed to parse provider secret bundle: {{detail}}",
"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.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.active_provider_not_found": "Active AI Provider was not found",
"ai_service.backend.error.editable_provider_not_found": "AI Provider to edit was not found: {{detail}}",
"ai_service.backend.error.provider_not_configured": "AI Provider is not configured. Configure one in Settings first.",
"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.error.session_missing": "Session does not exist",
"ai_service.backend.error.session_corrupt": "Session data is corrupted",
"ai_service.backend.error.sessions_dir_create_failed": "Failed to create sessions directory: {{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.session_delete_failed": "Failed to delete session: {{detail}}",
"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_delete_without_where": "High-risk SQL: DELETE without WHERE will delete all rows",
"ai_service.backend.warning.sql_update_without_where": "High-risk SQL: UPDATE without WHERE will update all rows",
"jvm_monitoring_charts.title.heap": "Heap memory",
"jvm_monitoring_charts.title.gc": "Garbage collection",
"jvm_monitoring_charts.title.threads": "Threads",
"jvm_monitoring_charts.title.classes": "Class loading",
"jvm_monitoring_charts.empty.heap.no_samples": "No heap memory samples yet.",
"jvm_monitoring_charts.empty.heap.metric_unavailable": "Current monitoring source does not provide heap memory metrics.",
"jvm_monitoring_charts.empty.gc.no_samples": "No garbage collection samples yet.",
"jvm_monitoring_charts.empty.gc.metric_unavailable": "Current monitoring source does not provide garbage collection metrics.",
"jvm_monitoring_charts.empty.threads.no_samples": "No thread samples yet.",
"jvm_monitoring_charts.empty.threads.metric_unavailable": "Current monitoring source does not provide thread metrics.",
"jvm_monitoring_charts.empty.classes.no_samples": "No class loading samples yet.",
"jvm_monitoring_charts.empty.classes.metric_unavailable": "Current monitoring source does not provide class loading metrics.",
"jvm_monitoring_charts.legend.heap_used": "Heap used",
"jvm_monitoring_charts.legend.heap_committed": "Heap committed",
"jvm_monitoring_charts.legend.gc_count": "GC count",
"jvm_monitoring_charts.legend.gc_time_ms": "GC time (ms)",
"jvm_monitoring_charts.legend.thread_count": "Thread count",
"jvm_monitoring_charts.legend.daemon_thread_count": "Daemon threads",
"jvm_monitoring_charts.legend.peak_thread_count": "Peak threads",
"jvm_monitoring_charts.legend.loaded_classes": "Loaded classes",
"jvm_monitoring_charts.legend.unloaded_classes": "Unloaded classes",
"jvm_monitoring_status_cards.title.heap": "Heap memory",
"jvm_monitoring_status_cards.title.gc_pressure": "Garbage collection pressure",
"jvm_monitoring_status_cards.title.threads": "Threads",
"jvm_monitoring_status_cards.title.classes": "Class loading",
"jvm_monitoring_status_cards.meta.heap_committed": "Committed {{value}}",
"jvm_monitoring_status_cards.meta.waiting_samples": "Waiting for samples",
"jvm_monitoring_status_cards.meta.gc_total_time": "Total {{value}}",
"jvm_monitoring_status_cards.meta.thread_peak": "Peak {{value}}",
"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_detail_panel.title.troubleshooting_metrics": "Troubleshooting metrics",
"jvm_monitoring_detail_panel.title.thread_state_distribution": "Thread state distribution",
"jvm_monitoring_detail_panel.title.recent_gc_details": "Recent garbage collection details",
"jvm_monitoring_detail_panel.title.capabilities_and_degradation": "Capabilities and degradation",
"jvm_monitoring_detail_panel.field.process_cpu": "Process CPU",
"jvm_monitoring_detail_panel.field.system_cpu": "System 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.memory_missing.title": "Why process physical memory is missing",
"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.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.empty.thread_states": "No thread state samples yet.",
"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.gc.before": "Before collection",
"jvm_monitoring_detail_panel.gc.after": "After collection",
"jvm_monitoring_presentation.metric.heap_used": "Heap memory",
"jvm_monitoring_presentation.metric.heap_non_heap": "Non-heap memory",
"jvm_monitoring_presentation.metric.gc_count": "Garbage collection count",
"jvm_monitoring_presentation.metric.gc_time": "Garbage collection time",
"jvm_monitoring_presentation.metric.gc_events": "Recent garbage collection events",
"jvm_monitoring_presentation.metric.thread_count": "Thread count",
"jvm_monitoring_presentation.metric.thread_states": "Thread states",
"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.memory_rss": "Process physical memory",
"jvm_monitoring_presentation.metric.memory_virtual": "Process virtual memory",
"jvm_monitoring_presentation.thread_state.new": "New",
"jvm_monitoring_presentation.thread_state.runnable": "Runnable",
"jvm_monitoring_presentation.thread_state.blocked": "Blocked",
"jvm_monitoring_presentation.thread_state.waiting": "Waiting",
"jvm_monitoring_presentation.thread_state.timed_waiting": "Timed waiting",
"jvm_monitoring_presentation.thread_state.terminated": "Terminated",
"jvm_monitoring_presentation.availability.missing_metrics": "Missing metrics: {{metrics}}",
"jvm_monitoring_presentation.availability.provider_warnings": "Monitoring source warning: {{warnings}}",
"jvm_monitoring_presentation.availability.no_obvious_degradation": "No obvious degradation was found in the current monitoring session.",
"jvm_change_preview_modal.title": "JVM change preview",
"jvm_change_preview_modal.status.no_preview": "No preview result",
"jvm_change_preview_modal.status.generated": "Preview generated",
"jvm_change_preview_modal.action.confirm_execute": "Confirm execution",
"jvm_change_preview_modal.action.close": "Close",
"jvm_change_preview_modal.section.summary": "Change summary",
"jvm_change_preview_modal.section.before": "Before",
"jvm_change_preview_modal.section.after": "After",
"jvm_change_preview_modal.field.resource_id": "Resource ID",
"jvm_change_preview_modal.field.version": "Version",
"jvm_change_preview_modal.field.format": "Format",
"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.high": "High",
"jvm_change_preview_modal.risk.unknown": "Unknown",
"jvm_change_preview_modal.permission.requires_confirmation": "Confirmation required",
"jvm_change_preview_modal.permission.allowed": "Allowed",
"jvm_change_preview_modal.permission.forbidden": "Forbidden",
"jvm_change_preview_modal.blocking.label": "Blocking reason",
"jvm_change_preview_modal.blocking.alert_message": "Current change cannot be executed",
"jvm_diagnostic.completion.category.observe": "observation command",
"jvm_diagnostic.completion.category.trace": "trace command",
"jvm_diagnostic.completion.category.mutating": "high-risk command",
"jvm_diagnostic.completion.category.control": "control command",
"jvm_diagnostic.completion.preset.category.observe": "observation command",
"jvm_diagnostic.completion.preset.category.trace": "trace command",
"jvm_diagnostic.completion.preset.category.mutating": "high-risk command",
"jvm_diagnostic.completion.preset.thread-top.documentation": "View the busiest threads to quickly locate blocked or high-CPU threads.",
"jvm_diagnostic.completion.preset.dashboard.documentation": "View the JVM runtime overview.",
"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.completion.preset.ognl-sample.documentation": "High-risk expression command, shown as an example by default.",
"jvm_diagnostic.completion.command.dashboard.documentation": "View the JVM runtime overview.",
"jvm_diagnostic.completion.command.jvm.documentation": "View JVM memory, threads, class loading, GC, and runtime arguments.",
"jvm_diagnostic.completion.command.thread.documentation": "View hot threads, thread stacks, and blocked threads.",
"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.jad.documentation": "Decompile the specified class.",
"jvm_diagnostic.completion.command.sysprop.documentation": "View system properties.",
"jvm_diagnostic.completion.command.sysenv.documentation": "View environment variables.",
"jvm_diagnostic.completion.command.classloader.documentation": "View class loader information.",
"jvm_diagnostic.completion.command.trace.documentation": "Trace method call time paths.",
"jvm_diagnostic.completion.command.watch.documentation": "Observe parameters, return values, or exceptions.",
"jvm_diagnostic.completion.command.stack.documentation": "Print method call stacks.",
"jvm_diagnostic.completion.command.monitor.documentation": "Periodically collect method call statistics.",
"jvm_diagnostic.completion.command.tt.documentation": "Method time tunnel for recording and replaying calls.",
"jvm_diagnostic.completion.command.ognl.documentation": "Execute an OGNL expression; extra authorization is required by default.",
"jvm_diagnostic.completion.command.vmtool.documentation": "Directly operate JVM objects or execute VMTool actions.",
"jvm_diagnostic.completion.command.redefine.documentation": "Redefine class bytecode.",
"jvm_diagnostic.completion.command.retransform.documentation": "Trigger class retransformation.",
"jvm_diagnostic.completion.command.stop.documentation": "Stop the current background task.",
"jvm_diagnostic.completion.detail.execute_directly": "execute directly",
"jvm_diagnostic.completion.detail.thread_option": "thread option",
"jvm_diagnostic.completion.detail.class_search_template": "class search template",
"jvm_diagnostic.completion.detail.method_search_template": "method search template",
"jvm_diagnostic.completion.detail.decompile_template": "decompile template",
"jvm_diagnostic.completion.detail.system_property_template": "system property template",
"jvm_diagnostic.completion.detail.environment_variable_template": "environment variable template",
"jvm_diagnostic.completion.detail.classloader_template": "class loader template",
"jvm_diagnostic.completion.detail.trace_template": "trace template",
"jvm_diagnostic.completion.detail.trace_option": "trace option",
"jvm_diagnostic.completion.detail.watch_template": "watch template",
"jvm_diagnostic.completion.detail.watch_option": "watch option",
"jvm_diagnostic.completion.detail.stack_template": "stack template",
"jvm_diagnostic.completion.detail.monitor_template": "monitor template",
"jvm_diagnostic.completion.detail.time_tunnel_template": "time tunnel template",
"jvm_diagnostic.completion.detail.high_risk_template": "high-risk template",
"jvm_diagnostic.completion.argument.command_template.label": "{{command}} template",
"jvm_diagnostic.completion.argument.detail_mode_d.label": "Detail mode (-d)",
"jvm_diagnostic.completion.argument.dashboard.direct.label": "dashboard",
"jvm_diagnostic.completion.argument.dashboard.direct.documentation": "View the current JVM runtime overview.",
"jvm_diagnostic.completion.argument.jvm.direct.label": "jvm",
"jvm_diagnostic.completion.argument.jvm.direct.documentation": "View JVM memory, threads, class loading, GC, and runtime arguments.",
"jvm_diagnostic.completion.argument.thread.busy_top.label": "Busy threads TOP N (-n)",
"jvm_diagnostic.completion.argument.thread.busy_top.documentation": "View the top N CPU-busiest threads.",
"jvm_diagnostic.completion.argument.thread.blocking.label": "Blocked threads (-b)",
"jvm_diagnostic.completion.argument.thread.blocking.documentation": "Find threads that are currently blocking other threads.",
"jvm_diagnostic.completion.argument.thread.thread_id.label": "Specified thread ID",
"jvm_diagnostic.completion.argument.thread.thread_id.documentation": "View detailed stack information for a specified thread.",
"jvm_diagnostic.completion.argument.sc.class_pattern.label": "Class pattern template",
"jvm_diagnostic.completion.argument.sc.class_pattern.documentation": "Search by class name pattern.",
"jvm_diagnostic.completion.argument.sc.detail.documentation": "Output detailed class information.",
"jvm_diagnostic.completion.argument.sm.method_signature.label": "Method signature template",
"jvm_diagnostic.completion.argument.sm.method_signature.documentation": "View method signatures for a class.",
"jvm_diagnostic.completion.argument.sm.detail.documentation": "Output detailed method signatures.",
"jvm_diagnostic.completion.argument.jad.template.label": "Decompile template",
"jvm_diagnostic.completion.argument.jad.template.documentation": "Decompile the specified class.",
"jvm_diagnostic.completion.argument.sysprop.property.label": "View property",
"jvm_diagnostic.completion.argument.sysprop.property.documentation": "Read the specified system property.",
"jvm_diagnostic.completion.argument.sysenv.variable.label": "View environment variable",
"jvm_diagnostic.completion.argument.sysenv.variable.documentation": "Read the specified environment variable.",
"jvm_diagnostic.completion.argument.classloader.tree.label": "Tree view (-t)",
"jvm_diagnostic.completion.argument.classloader.tree.documentation": "Output the class loader tree.",
"jvm_diagnostic.completion.argument.classloader.url_stat.label": "All URL statistics (--url-stat)",
"jvm_diagnostic.completion.argument.classloader.url_stat.documentation": "View class loader URL statistics.",
"jvm_diagnostic.completion.argument.classloader.hash.label": "Specified class loader Hash",
"jvm_diagnostic.completion.argument.classloader.hash.documentation": "View details for a specified class loader.",
"jvm_diagnostic.completion.argument.trace.template.documentation": "Trace slow method call chains.",
"jvm_diagnostic.completion.argument.trace.condition.label": "Condition filter '#cost > 100'",
"jvm_diagnostic.completion.argument.trace.condition.documentation": "Append a trace condition expression.",
"jvm_diagnostic.completion.argument.watch.template.documentation": "Observe parameters, return values, or exceptions.",
"jvm_diagnostic.completion.argument.watch.expand_depth.label": "Expansion depth -x 2",
"jvm_diagnostic.completion.argument.watch.expand_depth.documentation": "Set object expansion depth.",
"jvm_diagnostic.completion.argument.stack.template.documentation": "Print method call stacks.",
"jvm_diagnostic.completion.argument.monitor.template.documentation": "Collect method call statistics at intervals.",
"jvm_diagnostic.completion.argument.tt.record.label": "tt recording template",
"jvm_diagnostic.completion.argument.tt.record.documentation": "Record calls to the specified method.",
"jvm_diagnostic.completion.argument.tt.list.label": "View record list (-l)",
"jvm_diagnostic.completion.argument.tt.list.documentation": "View the current recording list.",
"jvm_diagnostic.completion.argument.tt.replay.label": "Replay record (-i)",
"jvm_diagnostic.completion.argument.tt.replay.documentation": "View details for a specified record.",
"jvm_diagnostic.completion.argument.ognl.template.documentation": "Execute an OGNL expression; high-risk commands are restricted by policy by default.",
"jvm_diagnostic.completion.argument.vmtool.get_instances.label": "vmtool getInstances",
"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.redefine.template.documentation": "Redefine the class bytecode file path.",
"jvm_diagnostic.completion.argument.retransform.template.documentation": "Retransform the specified class.",
"jvm_diagnostic.completion.argument.stop.direct.label": "stop",
"jvm_diagnostic.completion.argument.stop.direct.documentation": "Stop the current background task.",
"app.about.action.open_install_directory": "Open Install Directory",
"app.about.action.install_update": "Install Update",
"app.about.action.hide_to_background": "Hide to Background",
"app.about.download_progress.title": "Download Update",
"app.about.download_progress.title_with_version": "Download Update {{version}}",
"app.about.update_status.not_checked": "Not checked",
"app.about.update_status.checking": "Checking for updates...",
"app.about.update_status.check_failed": "Update check failed: {{error}}",
"app.about.update_status.new_version_downloaded": "New version {{version}} found (downloaded; open Download Progress to install)",
"app.about.update_status.new_version_not_downloaded": "New version {{version}} found (not downloaded)",
"app.about.update_status.latest": "You are on the latest version ({{version}})",
"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.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.open_install_directory_failed_with_error": "Failed to open install directory: {{error}}",
"app.about.message.install_failed_with_error": "Update installation failed: {{error}}",
"app.about.message.check_failed_with_error": "Update check failed: {{error}}",
"app.about.message.new_version_found": "New version {{version}} found",
"app.theme.font_family.title": "Font Family",
"app.theme.font_family.ui_title": "UI Font Family",
"app.theme.font_family.mono_title": "Mono Font Family",
"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.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.linux_cjk_font_banner.title": "Linux CJK fonts missing",
"app.linux_cjk_font_banner.description": "Chinese text may render as missing glyph boxes. Install fonts, then restart GoNavi: ",
"app.linux_cjk_font_banner.action.open_font_settings": "Font Settings",
"app.theme.data_table.density": "Table Density",
"app.theme.data_table.density.comfortable": "Comfortable",
"app.theme.data_table.density.standard": "Standard",
"app.theme.data_table.density.compact": "Compact",
"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.font_size": "Data Table Font Size",
"app.theme.data_table.sidebar_tree_font_size": "Sidebar Schema Tree Font Size",
"app.theme.data_table.follow_global": "Follow Global",
"ai_settings.message.load_provider_failed": "Failed to read provider configuration",
"data_sync.field.schema": "Schema",
"data_sync.message.fetch_target_schemas_failed_detail": "Failed to fetch target schemas: {{detail}}",
"data_sync.message.select_target_schema": "Select target schema"
}