diff --git a/link-ip-monitor/translations/en.json b/link-ip-monitor/translations/en.json index bdf79af..4868854 100644 --- a/link-ip-monitor/translations/en.json +++ b/link-ip-monitor/translations/en.json @@ -1,49 +1,49 @@ { - "title": "Link/IP Monitor", - "settings": { - "interval_seconds": { - "label": "Check interval (s)", - "description": "How often each host is checked." - }, - "timeout_seconds": { - "label": "Ping timeout (s)", - "description": "How long to wait for a reply before treating it as a failure." - }, - "notify_on_recovery": { - "label": "Notify when a host comes back", - "description": "Send a notification when a host that was down responds again." - }, - "glyph": { - "label": "Bar icon", - "description": "Icon shown in the bar for this widget." - } - }, "notify": { + "duplicate_host": "{host} is already in the list", "host_down": "{host} is unreachable", "host_up": "{host} is responding again", - "invalid_host": "{host} is not a valid IP, host or link", - "duplicate_host": "{host} is already in the list" + "invalid_host": "{host} is not a valid IP, host or link" }, "panel": { - "empty": "No hosts configured yet", - "add_placeholder": "IP, host or link", "add_label_placeholder": "Description (optional) — e.g. Router, Server", + "add_placeholder": "IP, host or link", + "empty": "No hosts configured yet", "invalid_format": "Invalid — enter an IP (0.0.0.0), a host or a link", - "status_online": "Online", - "status_offline": "Offline", "status_checking": "Checking…", - "tooltip_check_now": "Check now", + "status_offline": "Offline", + "status_online": "Online", "tooltip_add": "Add", - "tooltip_remove": "Remove", - "tooltip_confirm_remove": "Confirm removal", + "tooltip_add_host": "Add host", "tooltip_cancel": "Cancel", - "tooltip_drag": "Drag to reorder", + "tooltip_check_now": "Check now", "tooltip_close_form": "Close", - "tooltip_add_host": "Add host" + "tooltip_confirm_remove": "Confirm removal", + "tooltip_drag": "Drag to reorder", + "tooltip_remove": "Remove" }, + "settings": { + "glyph": { + "description": "Icon shown in the bar for this widget.", + "label": "Bar icon" + }, + "interval_seconds": { + "description": "How often each host is checked.", + "label": "Check interval (s)" + }, + "notify_on_recovery": { + "description": "Send a notification when a host that was down responds again.", + "label": "Notify when a host comes back" + }, + "timeout_seconds": { + "description": "How long to wait for a reply before treating it as a failure.", + "label": "Ping timeout (s)" + } + }, + "title": "Link/IP Monitor", "widget": { + "checking_now": "Checking now…", "tooltip_all_up": "All monitored hosts are responding", - "tooltip_down_prefix": "Down:", - "checking_now": "Checking now…" + "tooltip_down_prefix": "Down:" } } diff --git a/link-ip-monitor/translations/pt-BR.json b/link-ip-monitor/translations/pt-BR.json index fd9c064..3ec354a 100644 --- a/link-ip-monitor/translations/pt-BR.json +++ b/link-ip-monitor/translations/pt-BR.json @@ -1,49 +1,49 @@ { - "title": "Link/IP Monitor", - "settings": { - "interval_seconds": { - "label": "Intervalo entre checagens (s)", - "description": "Com que frequência cada host é checado." - }, - "timeout_seconds": { - "label": "Timeout do ping (s)", - "description": "Quanto tempo esperar por resposta antes de considerar falha." - }, - "notify_on_recovery": { - "label": "Notificar quando o host volta", - "description": "Envia uma notificação quando um host que estava fora do ar volta a responder." - }, - "glyph": { - "label": "Ícone da barra", - "description": "Ícone mostrado na barra para este widget." - } - }, "notify": { + "duplicate_host": "{host} já está na lista", "host_down": "{host} está inacessível", "host_up": "{host} voltou a responder", - "invalid_host": "{host} não é um IP, host ou link válido", - "duplicate_host": "{host} já está na lista" + "invalid_host": "{host} não é um IP, host ou link válido" }, "panel": { - "empty": "Nenhum host configurado ainda", - "add_placeholder": "IP, host ou link", "add_label_placeholder": "Descrição (opcional) — ex: Roteador, Servidor", + "add_placeholder": "IP, host ou link", + "empty": "Nenhum host configurado ainda", "invalid_format": "Inválido — informe um IP (0.0.0.0), um host ou um link", - "status_online": "Online", - "status_offline": "Offline", "status_checking": "Checando…", - "tooltip_check_now": "Checar agora", + "status_offline": "Offline", + "status_online": "Online", "tooltip_add": "Adicionar", - "tooltip_remove": "Remover", - "tooltip_confirm_remove": "Confirmar remoção", + "tooltip_add_host": "Adicionar host", "tooltip_cancel": "Cancelar", - "tooltip_drag": "Arraste para reordenar", + "tooltip_check_now": "Checar agora", "tooltip_close_form": "Fechar", - "tooltip_add_host": "Adicionar host" + "tooltip_confirm_remove": "Confirmar remoção", + "tooltip_drag": "Arraste para reordenar", + "tooltip_remove": "Remover" }, + "settings": { + "glyph": { + "description": "Ícone mostrado na barra para este widget.", + "label": "Ícone da barra" + }, + "interval_seconds": { + "description": "Com que frequência cada host é checado.", + "label": "Intervalo entre checagens (s)" + }, + "notify_on_recovery": { + "description": "Envia uma notificação quando um host que estava fora do ar volta a responder.", + "label": "Notificar quando o host volta" + }, + "timeout_seconds": { + "description": "Quanto tempo esperar por resposta antes de considerar falha.", + "label": "Timeout do ping (s)" + } + }, + "title": "Link/IP Monitor", "widget": { + "checking_now": "Checando agora…", "tooltip_all_up": "Todos os hosts monitorados estão respondendo", - "tooltip_down_prefix": "Fora do ar:", - "checking_now": "Checando agora…" + "tooltip_down_prefix": "Fora do ar:" } } diff --git a/opencode-companion/translations/en.json b/opencode-companion/translations/en.json index 7b563b0..a08eae9 100644 --- a/opencode-companion/translations/en.json +++ b/opencode-companion/translations/en.json @@ -1,170 +1,170 @@ { - "state": { - "tip": { - "online": "OpenCode: connected", - "offline": "OpenCode: offline", - "starting": "OpenCode: starting server…", - "busy": "OpenCode: processing…", - "waiting_permission": "OpenCode: waiting for permission" - }, - "unread": "{count} unread response(s)" + "chat": { + "assistant": "Assistant", + "back": "Back to sessions", + "dismiss_error": "Dismiss", + "empty": "No messages yet. Send a prompt to begin.", + "open_terminal": "Open in terminal", + "placeholder": "Ask OpenCode anything… (Enter = newline, Ctrl+Enter = send)", + "refresh": "Refresh", + "select_agent": "Agent", + "select_model": "Model", + "send": "Send (Ctrl+Enter)", + "stop": "Stop", + "thinking": "Thinking…", + "title": "OpenCode Chat", + "you": "You" }, "chooser": { - "title": "OpenCode — Sessions", - "refresh": "Refresh", - "new_session": "New Session", - "empty": "No sessions yet. Create one to get started.", - "open": "Open session", "delete": "Delete session", - "delete_confirm": "Confirm delete", "delete_cancel": "Cancel", - "search": "Search sessions…", - "no_match": "No sessions match your search." - }, - "chat": { - "title": "OpenCode Chat", - "you": "You", - "assistant": "Assistant", - "empty": "No messages yet. Send a prompt to begin.", - "thinking": "Thinking…", - "stop": "Stop", - "send": "Send (Ctrl+Enter)", + "delete_confirm": "Confirm delete", + "empty": "No sessions yet. Create one to get started.", + "new_session": "New Session", + "no_match": "No sessions match your search.", + "open": "Open session", "refresh": "Refresh", - "open_terminal": "Open in terminal", - "back": "Back to sessions", - "placeholder": "Ask OpenCode anything… (Enter = newline, Ctrl+Enter = send)", - "select_model": "Model", - "select_agent": "Agent", - "dismiss_error": "Dismiss" - }, - "permission": { - "title": "Permission Required", - "default_message": "OpenCode wants to perform an action that requires your approval.", - "allow": "Allow", - "allow_remember": "Always Allow", - "deny": "Deny" - }, - "mcp": { - "title": "MCP Servers", - "connected": "Connected", - "failed": "Failed", - "disabled": "Disabled" + "search": "Search sessions…", + "title": "OpenCode — Sessions" }, "error": { + "abort_failed": "Failed to abort session", + "connection_failed": "Could not connect to server", + "connection_failed_detail": "The server did not respond to a health check.", + "create_session_failed": "Failed to create session", + "delete_session_failed": "Failed to delete session", "exe_not_found": "opencode not found on PATH", "exe_not_found_detail": "Install opencode and ensure it is available on your PATH.", + "external_not_configured": "External server URL not configured", + "permission_failed": "Failed to respond to permission", + "prompt_failed": "Failed to send prompt", + "question_failed": "Failed to answer question", "server_failed": "Failed to start OpenCode server", "server_timeout": "Server did not start in time", "server_timeout_detail": "The server did not become healthy within the timeout period.", - "external_not_configured": "External server URL not configured", - "connection_failed": "Could not connect to server", - "connection_failed_detail": "The server did not respond to a health check.", - "session_not_found": "Session not found", - "create_session_failed": "Failed to create session", - "delete_session_failed": "Failed to delete session", - "abort_failed": "Failed to abort session", - "prompt_failed": "Failed to send prompt", - "permission_failed": "Failed to respond to permission", - "question_failed": "Failed to answer question", "session_error": "Session encountered an error", "session_error_detail": "The agent stopped due to an error.", + "session_not_found": "Session not found", "sse_disconnected": "Event stream disconnected" }, - "notify": { - "title": "OpenCode", - "new_session": "Creating new session…", - "permission_title": "Permission Request", - "permission_body": "OpenCode is waiting for your approval." + "mcp": { + "connected": "Connected", + "disabled": "Disabled", + "failed": "Failed", + "title": "MCP Servers" }, - "time": { - "just_now": "just now", - "minutes_ago": "{n}m ago", - "hours_ago": "{n}h ago", - "days_ago": "{n}d ago" + "notify": { + "new_session": "Creating new session…", + "permission_body": "OpenCode is waiting for your approval.", + "permission_title": "Permission Request", + "title": "OpenCode" + }, + "permission": { + "allow": "Allow", + "allow_remember": "Always Allow", + "default_message": "OpenCode wants to perform an action that requires your approval.", + "deny": "Deny", + "title": "Permission Required" + }, + "question": { + "cancel": "Cancel", + "custom": "Custom Answer", + "submit": "Submit", + "title": "Question" }, "settings": { - "server_mode": { - "label": "Server Mode", - "description": "How the plugin connects to OpenCode. 'auto' manages a local server; 'external' connects to a user-specified URL." - }, - "server_host": { - "label": "Server Host", - "description": "Hostname the managed server binds to. Default: 127.0.0.1 (loopback only)." - }, - "server_port": { - "label": "Server Port", - "description": "Port the managed server listens on. Default: 4096." - }, - "server_url": { - "label": "External Server URL", - "description": "Base URL of an external OpenCode server (e.g., http://127.0.0.1:4096). Used when Server Mode is 'external'." - }, - "default_workspace": { - "label": "Default Workspace", - "description": "Default working directory for new sessions. Leave empty to use the current directory." - }, - "default_model": { - "label": "Default Model", - "description": "Default model in 'provider/model' format (e.g., 'anthropic/claude-3-5-sonnet-20241022'). Leave empty to use server default." - }, - "default_agent": { - "label": "Default Agent", - "description": "Default agent to use for new sessions. Default: 'build'." - }, "auto_start": { - "label": "Auto-start Server", - "description": "Automatically start the managed server when the plugin loads." - }, - "show_tool_calls": { - "label": "Show Tool Calls", - "description": "Display tool call status cards in the chat view." - }, - "show_reasoning": { - "label": "Show Reasoning", - "description": "Display reasoning/thinking text in the chat view." - }, - "notify_on_complete": { - "label": "Notify on Completion", - "description": "Show a desktop notification when a response completes." - }, - "max_messages_load": { - "label": "Max Messages to Load", - "description": "Messages loaded per session (1–100). Set the slider to its top notch for unlimited. Default: 50." + "description": "Automatically start the managed server when the plugin loads.", + "label": "Auto-start Server" }, "debug_logging": { - "label": "Debug Logging", - "description": "Print debug messages to the Noctalia log." + "description": "Print debug messages to the Noctalia log.", + "label": "Debug Logging" + }, + "default_agent": { + "description": "Default agent to use for new sessions. Default: 'build'.", + "label": "Default Agent" + }, + "default_model": { + "description": "Default model in 'provider/model' format (e.g., 'anthropic/claude-3-5-sonnet-20241022'). Leave empty to use server default.", + "label": "Default Model" + }, + "default_workspace": { + "description": "Default working directory for new sessions. Leave empty to use the current directory.", + "label": "Default Workspace" }, "language": { - "label": "Language", "description": "Language for this plugin's UI. 'Auto' follows the Noctalia shell language.", + "label": "Language", "options": { "auto": "Auto (follow shell)", "en": "English", "vi": "Tiếng Việt" } }, - "ui_mode": { - "label": "UI Mode", - "description": "Full shows a spacious layout; Compact tightens padding, fonts and hides secondary details to keep the panel minimal.", - "options": { - "full": "Full", - "compact": "Compact" - } + "max_messages_load": { + "description": "Messages loaded per session (1–100). Set the slider to its top notch for unlimited. Default: 50.", + "label": "Max Messages to Load" + }, + "notify_on_complete": { + "description": "Show a desktop notification when a response completes.", + "label": "Notify on Completion" }, "panel_mode": { - "label": "Panel Layout", "description": "Fill right opens a full-height panel pinned to the right edge; Compact shows the original floating panel near the bar click.", + "label": "Panel Layout", "options": { - "fill_right": "Full-height right side", - "compact": "Compact (near click)" + "compact": "Compact (near click)", + "fill_right": "Full-height right side" + } + }, + "server_host": { + "description": "Hostname the managed server binds to. Default: 127.0.0.1 (loopback only).", + "label": "Server Host" + }, + "server_mode": { + "description": "How the plugin connects to OpenCode. 'auto' manages a local server; 'external' connects to a user-specified URL.", + "label": "Server Mode" + }, + "server_port": { + "description": "Port the managed server listens on. Default: 4096.", + "label": "Server Port" + }, + "server_url": { + "description": "Base URL of an external OpenCode server (e.g., http://127.0.0.1:4096). Used when Server Mode is 'external'.", + "label": "External Server URL" + }, + "show_reasoning": { + "description": "Display reasoning/thinking text in the chat view.", + "label": "Show Reasoning" + }, + "show_tool_calls": { + "description": "Display tool call status cards in the chat view.", + "label": "Show Tool Calls" + }, + "ui_mode": { + "description": "Full shows a spacious layout; Compact tightens padding, fonts and hides secondary details to keep the panel minimal.", + "label": "UI Mode", + "options": { + "compact": "Compact", + "full": "Full" } } }, - "question": { - "title": "Question", - "custom": "Custom Answer", - "cancel": "Cancel", - "submit": "Submit" + "state": { + "tip": { + "busy": "OpenCode: processing…", + "offline": "OpenCode: offline", + "online": "OpenCode: connected", + "starting": "OpenCode: starting server…", + "waiting_permission": "OpenCode: waiting for permission" + }, + "unread": "{count} unread response(s)" + }, + "time": { + "days_ago": "{n}d ago", + "hours_ago": "{n}h ago", + "just_now": "just now", + "minutes_ago": "{n}m ago" } } diff --git a/opencode-companion/translations/vi.json b/opencode-companion/translations/vi.json index e29112d..6a51567 100644 --- a/opencode-companion/translations/vi.json +++ b/opencode-companion/translations/vi.json @@ -1,170 +1,170 @@ { - "state": { - "tip": { - "online": "OpenCode: đã kết nối", - "offline": "OpenCode: ngắt kết nối", - "starting": "OpenCode: đang khởi động…", - "busy": "OpenCode: đang xử lý…", - "waiting_permission": "OpenCode: chờ cấp quyền" - }, - "unread": "{count} phản hồi chưa đọc" + "chat": { + "assistant": "Trợ lý", + "back": "Quay lại danh sách phiên", + "dismiss_error": "Bỏ qua", + "empty": "Chưa có tin nhắn. Gửi prompt để bắt đầu.", + "open_terminal": "Mở trong terminal", + "placeholder": "Hỏi OpenCode bất cứ điều gì… (Enter = xuống dòng, Ctrl+Enter = gửi)", + "refresh": "Làm mới", + "select_agent": "Agent", + "select_model": "Mô hình", + "send": "Gửi (Ctrl+Enter)", + "stop": "Dừng", + "thinking": "Đang suy nghĩ…", + "title": "OpenCode Chat", + "you": "Bạn" }, "chooser": { - "title": "OpenCode — Phiên", - "refresh": "Làm mới", - "new_session": "Tạo phiên mới", - "empty": "Chưa có phiên nào. Tạo một phiên để bắt đầu.", - "open": "Mở phiên", "delete": "Xóa phiên", - "delete_confirm": "Xác nhận xóa", "delete_cancel": "Hủy", - "search": "Tìm phiên…", - "no_match": "Không có phiên nào khớp." - }, - "chat": { - "title": "OpenCode Chat", - "you": "Bạn", - "assistant": "Trợ lý", - "empty": "Chưa có tin nhắn. Gửi prompt để bắt đầu.", - "thinking": "Đang suy nghĩ…", - "stop": "Dừng", - "send": "Gửi (Ctrl+Enter)", + "delete_confirm": "Xác nhận xóa", + "empty": "Chưa có phiên nào. Tạo một phiên để bắt đầu.", + "new_session": "Tạo phiên mới", + "no_match": "Không có phiên nào khớp.", + "open": "Mở phiên", "refresh": "Làm mới", - "open_terminal": "Mở trong terminal", - "back": "Quay lại danh sách phiên", - "placeholder": "Hỏi OpenCode bất cứ điều gì… (Enter = xuống dòng, Ctrl+Enter = gửi)", - "select_model": "Mô hình", - "select_agent": "Agent", - "dismiss_error": "Bỏ qua" - }, - "permission": { - "title": "Cần cấp quyền", - "default_message": "OpenCode muốn thực hiện một hành động cần sự chấp thuận của bạn.", - "allow": "Cho phép", - "allow_remember": "Luôn cho phép", - "deny": "Từ chối" - }, - "mcp": { - "title": "Máy chủ MCP", - "connected": "Đã kết nối", - "failed": "Lỗi", - "disabled": "Đã tắt" + "search": "Tìm phiên…", + "title": "OpenCode — Phiên" }, "error": { + "abort_failed": "Không thể hủy phiên", + "connection_failed": "Không thể kết nối đến máy chụ", + "connection_failed_detail": "Máy chủ không phản hồi health check.", + "create_session_failed": "Không thể tạo phiên", + "delete_session_failed": "Không thể xóa phiên", "exe_not_found": "Không tìm thấy opencode trên PATH", "exe_not_found_detail": "Cài đặt opencode và đảm bảo nó có trên PATH.", + "external_not_configured": "URL máy chủ bên ngoài chưa được cấu hình", + "permission_failed": "Không thể phản hồi yêu cầu quyền", + "prompt_failed": "Không thể gửi prompt", + "question_failed": "Không thể trả lời câu hỏi", "server_failed": "Không thể khởi động máy chủ OpenCode", "server_timeout": "Máy chủ không khởi động kịp thời gian", "server_timeout_detail": "Máy chủ không trở nên sỏng trong khoảng thời gian chờ.", - "external_not_configured": "URL máy chủ bên ngoài chưa được cấu hình", - "connection_failed": "Không thể kết nối đến máy chụ", - "connection_failed_detail": "Máy chủ không phản hồi health check.", - "session_not_found": "Không tìm thấy phiên", - "create_session_failed": "Không thể tạo phiên", - "delete_session_failed": "Không thể xóa phiên", - "abort_failed": "Không thể hủy phiên", - "prompt_failed": "Không thể gửi prompt", - "permission_failed": "Không thể phản hồi yêu cầu quyền", - "question_failed": "Không thể trả lời câu hỏi", "session_error": "Phiên gặp lỗi", "session_error_detail": "Agent đã dừng do gặp lỗi.", + "session_not_found": "Không tìm thấy phiên", "sse_disconnected": "Luồng sự kiện đã ngắt kết nối" }, - "notify": { - "title": "OpenCode", - "new_session": "Đang tạo phiên mới…", - "permission_title": "Yêu cầu quyền", - "permission_body": "OpenCode đang chờ bạn phê duyệt." + "mcp": { + "connected": "Đã kết nối", + "disabled": "Đã tắt", + "failed": "Lỗi", + "title": "Máy chủ MCP" }, - "time": { - "just_now": "vừa xong", - "minutes_ago": "{n} phút trước", - "hours_ago": "{n} giờ trước", - "days_ago": "{n} ngày trước" + "notify": { + "new_session": "Đang tạo phiên mới…", + "permission_body": "OpenCode đang chờ bạn phê duyệt.", + "permission_title": "Yêu cầu quyền", + "title": "OpenCode" + }, + "permission": { + "allow": "Cho phép", + "allow_remember": "Luôn cho phép", + "default_message": "OpenCode muốn thực hiện một hành động cần sự chấp thuận của bạn.", + "deny": "Từ chối", + "title": "Cần cấp quyền" + }, + "question": { + "cancel": "Hủy", + "custom": "Trả lời tùy chỉnh", + "submit": "Gửi", + "title": "Câu hỏi" }, "settings": { - "server_mode": { - "label": "Chế độ máy chủ", - "description": "Cách plugin kết nối đến OpenCode. 'auto' quản lý máy chụ cục bộ; 'external' kết nối đến URL do người dùng chỉ định." - }, - "server_host": { - "label": "Máy chủ host", - "description": "Hostname máy chủ cục bộ bind vào. Mặc định: 127.0.0.1 (chỉ loopback)." - }, - "server_port": { - "label": "Cổng máy chủ", - "description": "Cổng máy chủ cục bộ lắng nghe. Mặc định: 4096." - }, - "server_url": { - "label": "URL máy chủ bên ngoài", - "description": "URL cơ sở của máy chủ OpenCode bên ngoài (ví dụ: http://127.0.0.1:4096). Dùng khi chế độ máy chủ là 'external'." - }, - "default_workspace": { - "label": "Thư mục làm việc mặc định", - "description": "Thư mục làm việc mặc định cho phiên mới. Để trống để dùng thư mục hiện tại." - }, - "default_model": { - "label": "Model mặc định", - "description": "Model mặc định theo định dạng 'provider/model' (ví dụ: 'anthropic/claude-3-5-sonnet-20241022'). Để trống để dùng mặc định của máy chủ." - }, - "default_agent": { - "label": "Agent mặc định", - "description": "Agent mặc định cho phiên mới. Mặc định: 'build'." - }, "auto_start": { - "label": "Tự động khởi động", - "description": "Tự động khởi động máy chủ cục bộ khi plugin tải." - }, - "show_tool_calls": { - "label": "Hiện tool calls", - "description": "Hiển thị trạng thái tool call trong khung chat." - }, - "show_reasoning": { - "label": "Hiện reasoning", - "description": "Hiển thị nội dung reasoning/thinking trong khung chat." - }, - "notify_on_complete": { - "label": "Thông báo khi hoàn tất", - "description": "Hiển thị thông báo trên desktop khi phản hồi hoàn tất." - }, - "max_messages_load": { - "label": "Số tin nhắn tải tối đa", - "description": "Số tin nhắn tải mỗi phiên (1–100). Kéo thanh trượt lên mức cao nhất để không giới hạn. Mặc định: 50." + "description": "Tự động khởi động máy chủ cục bộ khi plugin tải.", + "label": "Tự động khởi động" }, "debug_logging": { - "label": "Gỡ lỗi", - "description": "In thông tin gỡ lỗi vào nhật ký Noctalia." + "description": "In thông tin gỡ lỗi vào nhật ký Noctalia.", + "label": "Gỡ lỗi" + }, + "default_agent": { + "description": "Agent mặc định cho phiên mới. Mặc định: 'build'.", + "label": "Agent mặc định" + }, + "default_model": { + "description": "Model mặc định theo định dạng 'provider/model' (ví dụ: 'anthropic/claude-3-5-sonnet-20241022'). Để trống để dùng mặc định của máy chủ.", + "label": "Model mặc định" + }, + "default_workspace": { + "description": "Thư mục làm việc mặc định cho phiên mới. Để trống để dùng thư mục hiện tại.", + "label": "Thư mục làm việc mặc định" }, "language": { - "label": "Ngôn ngữ", "description": "Ngôn ngữ giao diện của plugin này. 'Tự động' theo ngôn ngữ của Noctalia.", + "label": "Ngôn ngữ", "options": { "auto": "Tự động (theo shell)", "en": "English", "vi": "Tiếng Việt" } }, - "ui_mode": { - "label": "Chế độ giao diện", - "description": "Full hiển thị bố cục rộng rãi; Compact thu nhỏ padding, chữ và ẩn chi tiết phụ để panel gọn gàng tối giản.", - "options": { - "full": "Full", - "compact": "Compact" - } + "max_messages_load": { + "description": "Số tin nhắn tải mỗi phiên (1–100). Kéo thanh trượt lên mức cao nhất để không giới hạn. Mặc định: 50.", + "label": "Số tin nhắn tải tối đa" + }, + "notify_on_complete": { + "description": "Hiển thị thông báo trên desktop khi phản hồi hoàn tất.", + "label": "Thông báo khi hoàn tất" }, "panel_mode": { - "label": "Kiểu panel", "description": "Full-height sát phải mở panel cao trọn màn hình ghim vào mép phải; Compact hiển thị panel nổi gần chỗ bấm trên thanh bar.", + "label": "Kiểu panel", "options": { - "fill_right": "Thanh cao full màn bên phải", - "compact": "Gọn (gần điểm bấm)" + "compact": "Gọn (gần điểm bấm)", + "fill_right": "Thanh cao full màn bên phải" + } + }, + "server_host": { + "description": "Hostname máy chủ cục bộ bind vào. Mặc định: 127.0.0.1 (chỉ loopback).", + "label": "Máy chủ host" + }, + "server_mode": { + "description": "Cách plugin kết nối đến OpenCode. 'auto' quản lý máy chụ cục bộ; 'external' kết nối đến URL do người dùng chỉ định.", + "label": "Chế độ máy chủ" + }, + "server_port": { + "description": "Cổng máy chủ cục bộ lắng nghe. Mặc định: 4096.", + "label": "Cổng máy chủ" + }, + "server_url": { + "description": "URL cơ sở của máy chủ OpenCode bên ngoài (ví dụ: http://127.0.0.1:4096). Dùng khi chế độ máy chủ là 'external'.", + "label": "URL máy chủ bên ngoài" + }, + "show_reasoning": { + "description": "Hiển thị nội dung reasoning/thinking trong khung chat.", + "label": "Hiện reasoning" + }, + "show_tool_calls": { + "description": "Hiển thị trạng thái tool call trong khung chat.", + "label": "Hiện tool calls" + }, + "ui_mode": { + "description": "Full hiển thị bố cục rộng rãi; Compact thu nhỏ padding, chữ và ẩn chi tiết phụ để panel gọn gàng tối giản.", + "label": "Chế độ giao diện", + "options": { + "compact": "Compact", + "full": "Full" } } }, - "question": { - "title": "Câu hỏi", - "custom": "Trả lời tùy chỉnh", - "cancel": "Hủy", - "submit": "Gửi" + "state": { + "tip": { + "busy": "OpenCode: đang xử lý…", + "offline": "OpenCode: ngắt kết nối", + "online": "OpenCode: đã kết nối", + "starting": "OpenCode: đang khởi động…", + "waiting_permission": "OpenCode: chờ cấp quyền" + }, + "unread": "{count} phản hồi chưa đọc" + }, + "time": { + "days_ago": "{n} ngày trước", + "hours_ago": "{n} giờ trước", + "just_now": "vừa xong", + "minutes_ago": "{n} phút trước" } }