Files
BetterDesk/web-nodejs/lang/en.json
T
UNITRONIX 0496b1dbc4 Add client API, sysinfo endpoints and Docker
Add RustDesk-compatible client API and telemetry support and introduce a single-container Docker build. New client_api_handlers.go implements /api/login, /api/login-options, /api/logout, /api/currentUser, /api/ab, /api/heartbeat, /api/sysinfo and /api/sysinfo_ver with TOTP flow and an in-memory TFA session store; auth middleware and Server registration updated accordingly. Database interface and SQLite/Postgres implementations gain UpdatePeerSysinfo (with tests), audit actions for sysinfo, and handleGetPeer now returns live_online/live_status. Also add Dockerfile, docker-compose.single.yml, supervisord entrypoint, UI fixes (QR color inversion, 403 error view), labels file, README updates, and other ancillary changes.

Co-Authored-By: MrBrodacz - Design <215021251+MrBrodacz2025@users.noreply.github.com>
Co-Authored-By: boruto79 <176351662+boruto79@users.noreply.github.com>
Co-Authored-By: marcosacramento <marcosacramento@gmail.com>
Co-Authored-By: Charles Olivier Savignac <1275666+sircharlo@users.noreply.github.com>
2026-03-06 01:08:10 +01:00

1058 lines
40 KiB
JSON

{
"meta": {
"lang": "en",
"name": "English",
"native_name": "English",
"direction": "ltr"
},
"common": {
"loading": "Loading...",
"confirm": "Confirm",
"alert": "Alert",
"prompt": "Enter value",
"copied": "Copied to clipboard",
"save": "Save",
"saved": "Saved",
"error": "Error",
"success": "Success",
"warning": "Warning",
"info": "Information",
"all": "All",
"cancel": "Cancel",
"delete": "Delete"
},
"nav": {
"main": "Main",
"tools": "Tools",
"system": "System",
"dashboard": "Dashboard",
"devices": "Devices",
"keys": "Keys",
"generator": "Generator",
"settings": "Settings",
"users": "Users",
"inventory": "Inventory",
"tickets": "Tickets",
"activity": "Activity",
"automation": "Automation",
"file_transfer": "File Transfer",
"network": "Network",
"dataguard": "DataGuard",
"reports": "Reports",
"tenants": "Tenants",
"registrations": "Registrations",
"toggle_sidebar": "Toggle sidebar"
},
"auth": {
"login": "Login",
"logout": "Logout",
"login_title": "Sign In",
"login_subtitle": "Sign in to BetterDesk Console",
"username": "Username",
"username_placeholder": "Enter username",
"password": "Password",
"password_placeholder": "Enter password",
"remember_me": "Remember me",
"login_failed": "Login failed. Please check your credentials.",
"invalid_credentials": "Invalid username or password.",
"fill_all_fields": "Please fill in all fields",
"logout_confirm": "Are you sure you want to logout?",
"change_password": "Change Password",
"password_required": "Password is required",
"totp_title": "Two-Factor Authentication",
"totp_subtitle": "Enter the 6-digit code from your authenticator app",
"totp_code": "Verification Code",
"totp_verify": "Verify",
"totp_use_recovery": "Use a recovery code instead",
"totp_use_code": "Use authenticator code instead",
"totp_recovery_code": "Recovery Code",
"totp_back_to_login": "Back to login",
"totp_invalid_code": "Invalid verification code. Please try again.",
"totp_enter_code": "Please enter a 6-digit code",
"totp_enter_recovery": "Please enter a recovery code",
"totp_session_expired": "Session expired. Please log in again.",
"totp_already_enabled": "Two-factor authentication is already enabled"
},
"dashboard": {
"title": "Dashboard",
"subtitle": "Overview of your RustDesk server",
"total_devices": "Total Devices",
"online_now": "Online Now",
"banned": "Banned",
"active_connections": "Active Connections",
"offline_devices": "Offline",
"server_status": "Server Status",
"quick_actions": "Quick Actions",
"manage_devices": "Manage connected devices",
"view_keys": "View server keys",
"generate_config": "Generate client config",
"server_settings": "Configure settings"
},
"devices": {
"title": "Devices",
"id": "ID",
"hostname": "Hostname",
"username": "Username",
"platform": "Platform",
"version": "Version",
"ip_address": "IP Address",
"note": "Note",
"last_seen": "Last Seen",
"last_online": "Last Online",
"first_seen": "First Seen",
"created": "Created",
"status": "Status",
"ban_reason": "Ban Reason",
"actions": "Actions",
"search_placeholder": "Search devices...",
"filter_all": "All",
"filter_online": "Online",
"filter_offline": "Offline",
"filter_banned": "Banned",
"selected": "selected",
"showing": "Showing",
"of": "of",
"sync_status": "Sync Status",
"sync_success": "Status synchronized successfully",
"empty_title": "No devices found",
"empty_text": "No devices match your current filters",
"edit_title": "Device Details",
"delete_title": "Delete Device",
"delete_confirm": "Are you sure you want to delete device {id}?",
"delete_warning": "You are about to permanently delete this device:",
"delete_permanent": "This action cannot be undone. All data associated with this device will be permanently removed from the database.",
"delete_success": "Device deleted successfully",
"details": "Device Details",
"ban_title": "Ban Device",
"ban_confirm": "Are you sure you want to ban device {id}?",
"ban_success": "Device banned successfully",
"unban_title": "Unban Device",
"unban_confirm": "Are you sure you want to unban device {id}?",
"unban_success": "Device unbanned successfully",
"change_id": "Change ID",
"change_id_title": "Change Device ID",
"new_id": "New ID",
"change_id_hint": "6-16 characters, letters, numbers, dashes and underscores only",
"change_id_success": "Device ID changed successfully",
"id_length_error": "ID must be 6-16 characters long",
"id_format_error": "ID can only contain letters, numbers, dashes and underscores",
"bulk_delete_title": "Delete Multiple Devices",
"bulk_delete_confirm": "Are you sure you want to delete {count} devices?",
"bulk_delete_success": "{count} devices deleted successfully",
"columns": "Columns",
"toggle_columns": "Toggle visible columns"
},
"keys": {
"title": "Server Keys",
"subtitle": "Public key and configuration for RustDesk clients",
"public_key": "Public Key",
"qr_code": "QR Code",
"server_info": "Server Information",
"download": "Download Key",
"show_qr": "Show QR",
"qr_hint": "Scan this QR code with RustDesk mobile app",
"no_key": "No public key found",
"no_key_to_copy": "No key to copy",
"no_qr": "QR code not available",
"download_success": "Key file downloaded"
},
"settings": {
"title": "Settings",
"subtitle": "Console configuration and account settings",
"tab_general": "General",
"tab_server": "Server",
"tab_branding": "Branding",
"tab_backup": "Backup",
"language": "Language",
"change_password": "Change Password",
"password_desc": "Update your account password",
"current_password": "Current Password",
"new_password": "New Password",
"confirm_password": "Confirm Password",
"save_password": "Update Password",
"password_changed": "Password changed successfully",
"fill_all_fields": "Please fill in all fields",
"passwords_not_match": "Passwords do not match",
"password_requirements": "Password requirements",
"password_requirements_not_met": "Password does not meet requirements",
"req_length": "At least 8 characters",
"req_uppercase": "At least one uppercase letter",
"req_lowercase": "At least one lowercase letter",
"req_number": "At least one number",
"server_info": "Server Information",
"version": "Version",
"database": "Database",
"uptime": "Uptime",
"audit_log": "Audit Log",
"audit_desc": "Recent console activity",
"no_audit_logs": "No audit logs found",
"backend_title": "Server Backend",
"backend_desc": "Choose which server backend to use for device management and signal/relay services.",
"backend_original": "Original",
"backend_enhanced": "Enhanced",
"backend_rustdesk_desc": "Standard RustDesk signal and relay servers (hbbs + hbbr). Basic HTTP API with limited endpoints.",
"backend_betterdesk_desc": "Enhanced Go-based server with full REST API, JWT authentication, blocklist, tags, real-time WebSocket events, and audit logging.",
"backend_feature_signal": "Signal server (ID registration)",
"backend_feature_relay": "Relay server (connection relay)",
"backend_feature_basic_api": "Basic REST API",
"backend_feature_full_api": "Full REST API (34+ endpoints)",
"backend_feature_jwt": "JWT authentication & TOTP 2FA",
"backend_feature_blocklist": "IP/ID blocklist management",
"backend_feature_tags": "Device tags & grouping",
"backend_feature_audit": "Audit event logging",
"backend_feature_websocket": "Real-time WebSocket events",
"backend_connection": "Connection",
"backend_api_url": "API URL",
"backend_test": "Test Connection",
"backend_testing": "Testing...",
"backend_save": "Apply Backend",
"backend_saved": "Server backend changed successfully. Device data will now be managed by the new backend.",
"backend_save_failed": "Failed to switch server backend",
"backend_test_success": "Connection successful! Server is reachable.",
"backend_test_failed": "Connection failed. Server is unreachable.",
"backend_confirm_switch": "Are you sure you want to switch the server backend? This will change how devices are managed.",
"backend_unreachable": "Cannot switch: target server is unreachable. Start the server first.",
"invalid_backend": "Invalid backend selection. Choose 'rustdesk' or 'betterdesk'.",
"backend_status_running": "Connected",
"backend_status_unreachable": "Unreachable",
"backend_status_error": "Error",
"backend_status_unknown": "Unknown",
"totp_title": "Two-Factor Authentication",
"totp_desc": "Add an extra layer of security with TOTP authenticator apps (Google Authenticator, Microsoft Authenticator, Authy, etc.)",
"totp_enabled": "2FA Enabled",
"totp_enabled_desc": "Your account is protected with two-factor authentication.",
"totp_disabled": "2FA Not Enabled",
"totp_disabled_desc": "Enable two-factor authentication for additional account security.",
"totp_setup": "Enable 2FA",
"totp_disable": "Disable 2FA",
"totp_step1": "Install an authenticator app on your phone",
"totp_step2": "Scan the QR code below",
"totp_step3": "Enter the 6-digit code to verify",
"totp_manual_key": "Manual key",
"totp_enter_code": "Enter verification code",
"totp_verify_enable": "Verify & Enable",
"totp_enabled_success": "Two-factor authentication enabled!",
"totp_recovery_warning": "Save these recovery codes in a safe place. Each code can only be used once. If you lose access to your authenticator app, you can use these codes to log in.",
"totp_done": "Done",
"totp_disable_warning": "Disabling two-factor authentication will make your account less secure. Enter your password to confirm.",
"totp_disabled_success": "Two-factor authentication has been disabled."
},
"audit": {
"time": "Time",
"user": "User",
"action": "Action",
"details": "Details"
},
"generator": {
"title": "Client Configuration Generator",
"subtitle": "Generate configuration for RustDesk clients",
"config_options": "Configuration Options",
"server_address": "Server Address",
"server_address_hint": "Your server's domain or IP address",
"custom_port": "Custom Port",
"port_hint": "Leave empty for default (21116)",
"relay_server": "Relay Server",
"relay_placeholder": "Same as ID server if empty",
"relay_hint": "Optional: separate relay server address",
"include_key": "Include public key in configuration",
"generate": "Generate Configuration",
"output": "Configuration Output",
"usage_title": "Connection Details",
"generated": "Configuration generated",
"server_required": "Server address is required",
"nothing_to_copy": "Generate a configuration first"
},
"server": {
"port": "Port",
"api_port": "API Port",
"id_server": "ID Server",
"relay_server": "Relay Server",
"api_key": "API Key"
},
"status": {
"online": "Online",
"offline": "Offline",
"banned": "Banned",
"running": "Running",
"stopped": "Stopped",
"unknown": "Unknown",
"checking": "Checking..."
},
"actions": {
"refresh": "Refresh",
"copy": "Copy",
"connect": "Connect",
"connect_desktop": "Connect via Desktop Client",
"details": "Details",
"edit": "Edit",
"delete": "Delete",
"ban": "Ban",
"unban": "Unban",
"save": "Save",
"cancel": "Cancel",
"confirm": "Confirm",
"close": "Close",
"clear": "Clear",
"ok": "OK"
},
"time": {
"just_now": "Just now",
"minutes_ago": "{count} minute(s) ago",
"hours_ago": "{count} hour(s) ago",
"days_ago": "{count} day(s) ago"
},
"users": {
"title": "User Management",
"subtitle": "Manage console users and permissions",
"add_user": "Add User",
"edit_user": "Edit User",
"username": "Username",
"username_placeholder": "Enter username",
"username_hint": "3-32 characters, letters, numbers and underscores only",
"password": "Password",
"password_placeholder": "Enter password",
"password_hint": "Minimum 8 characters with mixed case, numbers and symbols",
"password_leave_empty": "Leave empty to keep current",
"role": "Role",
"role_admin": "Administrator",
"role_operator": "Operator",
"role_viewer": "Viewer",
"role_hint": "Viewers can only view data, operators can manage devices, admins have full access",
"created": "Created",
"last_login": "Last Login",
"never": "Never",
"actions": "Actions",
"create": "Create User",
"edit": "Edit",
"reset_password": "Reset Password",
"new_password": "New Password",
"delete_title": "Delete User",
"delete_confirm": "Are you sure you want to delete user {username}?",
"delete_success": "User deleted successfully",
"user_created": "User created successfully",
"user_updated": "User updated successfully",
"password_reset_success": "Password reset successfully",
"empty_title": "No users found",
"empty_text": "Add users to manage console access",
"fill_required": "Please fill in all required fields",
"invalid_username": "Username must be 3-32 characters, letters, numbers and underscores only",
"username_exists": "Username already exists",
"weak_password": "Password is too weak",
"password_too_short": "Password must be at least 8 characters",
"invalid_role": "Invalid role",
"cannot_demote_self": "You cannot demote yourself",
"cannot_delete_self": "You cannot delete your own account",
"last_admin": "Cannot delete the last administrator",
"admin_only": "This feature is only available to administrators",
"password_required": "Password is required",
"not_found": "User not found",
"strength_weak": "Weak",
"strength_medium": "Medium",
"strength_strong": "Strong",
"security_tips_title": "Security Best Practices",
"tip_strong_passwords": "Use strong, unique passwords for each user",
"tip_unique_accounts": "Create individual accounts for each person",
"tip_viewer_role": "Use viewer role for users who only need read access",
"tip_operator_role": "Use operator role for users who need to manage devices but not users",
"tip_audit_logs": "Review audit logs regularly for suspicious activity"
},
"folders": {
"title": "Folders",
"create": "Create Folder",
"edit": "Edit Folder",
"delete": "Delete Folder",
"name": "Folder Name",
"name_placeholder": "Enter folder name",
"name_required": "Folder name is required",
"name_too_long": "Folder name is too long (max 50 characters)",
"color": "Color",
"icon": "Icon",
"not_found": "Folder not found",
"delete_confirm": "Are you sure you want to delete this folder? Devices will be unassigned.",
"delete_success": "Folder deleted successfully",
"created": "Folder created successfully",
"updated": "Folder updated successfully",
"no_devices_selected": "No devices selected",
"devices_moved": "Devices moved successfully",
"device_assigned": "Device assigned to folder",
"unassigned": "Unassigned",
"all_devices": "All Devices",
"drag_hint": "Drag devices to folders to organize them",
"move_to": "Move to",
"toggle_sidebar": "Toggle sidebar"
},
"errors": {
"forbidden_title": "Access Denied",
"forbidden_message": "You do not have permission to access this resource.",
"not_found_title": "Page Not Found",
"not_found_message": "The page you're looking for doesn't exist or has been moved.",
"server_error_title": "Server Error",
"server_error_message": "Something went wrong. Please try again later.",
"go_home": "Go Home",
"try_again": "Try Again",
"load_devices_failed": "Failed to load devices",
"load_key_failed": "Failed to load key",
"load_qr_failed": "Failed to load QR",
"load_audit_failed": "Failed to load audit log",
"load_users_failed": "Failed to load users",
"load_folders_failed": "Failed to load folders",
"download_failed": "Download failed",
"logout_failed": "Logout failed",
"password_change_failed": "Failed to change password",
"language_change_failed": "Failed to change language",
"ban_failed": "Failed to ban device",
"unban_failed": "Failed to unban device",
"delete_failed": "Failed to delete device",
"change_id_failed": "Failed to change device ID",
"bulk_delete_failed": "Failed to delete devices",
"sync_failed": "Failed to sync status"
},
"remote": {
"title": "Remote Desktop",
"connecting": "Connecting...",
"waiting_password": "Waiting for password",
"authenticating": "Authenticating...",
"streaming": "Connected",
"disconnected": "Disconnected",
"error": "Error",
"status_idle": "Idle",
"password_required": "Password Required",
"enter_password_for": "Enter password for device",
"password_placeholder": "Device password",
"connect": "Connect",
"reconnect": "Reconnect",
"disconnect": "Disconnect",
"back_to_devices": "Back to Devices",
"fullscreen": "Fullscreen",
"toggle_audio": "Toggle Audio",
"send_keys": "Send Keys",
"scale_mode": "Scale Mode",
"scale_fit": "Fit to Window",
"scale_fill": "Fill Window",
"scale_original": "Original Size (1:1)",
"scale_stretch": "Stretch to Fill",
"actions": "Actions",
"lock_screen": "Lock Screen",
"restart_remote": "Restart Remote Device",
"refresh_screen": "Refresh Screen",
"clipboard_paste": "Paste from Clipboard",
"block_input": "Block Input",
"display_settings": "Display Settings",
"image_quality": "Image Quality",
"quality_best": "Best Quality",
"quality_balanced": "Balanced",
"quality_low": "Performance",
"show_cursor": "Show Remote Cursor",
"lock_after_session": "Lock After Session",
"privacy_mode": "Privacy Mode",
"disable_clipboard": "Disable Clipboard",
"chat": "Chat",
"chat_placeholder": "Type a message...",
"record": "Record Screen",
"view_only": "View Only",
"pin_toolbar": "Pin Toolbar",
"confirm_restart": "Are you sure you want to restart the remote device?",
"webcodecs_not_supported": "Your browser does not support WebCodecs API. Please use Chrome 94+ or Edge 94+.",
"webcodecs_insecure_context": "WebCodecs unavailable over HTTP. Video uses software fallback. For best performance, use HTTPS.",
"webcodecs_fallback_active": "Software video decoder active (limited performance)",
"click_to_start": "Click to Start",
"autoplay_blocked": "Browser requires user interaction to start video and audio playback.",
"start_playback": "Start Playback"
},
"branding": {
"identity_title": "Brand Identity",
"identity_desc": "Customize the application name and description shown across the console",
"app_name": "Application Name",
"app_description": "Application Description",
"logo_title": "Logo",
"logo_desc": "Choose how your logo appears in the sidebar and login page",
"logo_type_icon": "Material Icon",
"logo_type_svg": "SVG Code",
"logo_type_image": "Image URL",
"logo_icon_name": "Icon Name",
"logo_icon_hint": "Enter a Material Icons name (e.g. dns, cloud, security). See fonts.google.com/icons",
"logo_svg_code": "SVG Code",
"logo_svg_hint": "Paste your SVG markup here. Supports full <svg> elements with paths and styles.",
"logo_image_upload": "Upload Image",
"logo_image_choose": "Choose image file",
"logo_image_hint": "PNG, JPG, GIF, WebP or SVG. Max 1.5 MB. The image is stored as base64 data.",
"logo_image_url": "Image Data / URL",
"logo_image_url_hint": "Auto-filled when you upload a file, or paste a URL manually.",
"logo_image_too_large": "Image is too large. Maximum size is 1.5 MB.",
"logo_image_invalid_type": "Invalid file type. Use PNG, JPG, GIF, WebP or SVG.",
"preview": "Preview",
"colors_title": "Color Scheme",
"colors_desc": "Customize the color palette. Leave empty to use defaults.",
"colors_backgrounds": "Backgrounds",
"colors_text": "Text",
"colors_accents": "Accent Colors",
"colors_borders": "Borders",
"import_export_title": "Import / Export",
"import_export_desc": "Save your theme as a JSON file or import one from another instance",
"export_theme": "Export Theme",
"import_theme": "Import Theme",
"reset_defaults": "Reset to Defaults",
"save_branding": "Save Branding",
"saved": "Branding saved successfully. Reloading...",
"exported": "Theme exported",
"imported": "Theme imported successfully. Reloading...",
"import_error": "Failed to import theme. Invalid file format.",
"reset_confirm": "Are you sure you want to reset branding to defaults? This cannot be undone.",
"reset_success": "Branding reset to defaults. Reloading..."
},
"device_detail": {
"tab_overview": "Overview",
"tab_tags": "Tags & Notes",
"tab_actions": "Actions",
"section_identity": "Identity",
"section_network": "Network",
"section_timestamps": "Timestamps",
"section_connect": "Connection",
"section_manage": "Management",
"folder": "Folder",
"status_tier": "Status Tier",
"device_banned": "This device is banned",
"no_reason": "No reason provided",
"tags": "Tags",
"no_tags": "No tags assigned to this device",
"tag_placeholder": "Enter a tag name...",
"add_tag": "Add",
"tag_exists": "This tag already exists",
"notes": "Notes",
"notes_placeholder": "Add notes about this device...",
"danger_zone": "Danger Zone",
"action_connect_web": "Web Remote",
"action_connect_web_desc": "Connect via browser remote desktop",
"action_native_remote": "BetterDesk Remote",
"action_native_remote_desc": "Native JPEG stream — no plugins required",
"action_connect_desktop": "Desktop Client",
"action_connect_desktop_desc": "Open in desktop client app",
"action_change_id_desc": "Change the device registration ID",
"action_ban_desc": "Block this device from connecting",
"action_unban_desc": "Allow this device to connect again",
"action_delete_desc": "Permanently remove this device",
"tab_hardware": "Hardware",
"tab_metrics": "Metrics",
"section_system": "System",
"section_cpu": "Processor",
"section_memory": "Memory",
"section_displays": "Displays",
"section_encoding": "Encoding Capabilities",
"section_live_metrics": "Live Metrics",
"section_current_usage": "Current Usage",
"section_usage_history": "Usage History",
"os": "Operating System",
"version": "Client Version",
"cpu_model": "CPU Model",
"cpu_cores": "CPU Cores",
"cpu_freq": "CPU Frequency",
"total_memory": "Total Memory",
"metric_memory": "Memory",
"metric_disk": "Disk",
"metrics_updated": "Updated",
"device_groups": "Groups",
"no_sysinfo": "No hardware information available",
"no_sysinfo_hint": "System info will appear after the device sends a sysinfo report",
"no_metrics": "No metrics data available",
"no_metrics_hint": "Metrics will appear after the device sends heartbeat reports",
"chart_oldest": "← Oldest",
"chart_newest": "Newest →"
},
"inventory": {
"title": "Inventory",
"subtitle": "Hardware and software inventory of managed devices",
"device_id": "Device ID",
"hostname": "Hostname",
"os": "Operating System",
"cpu": "CPU",
"cpu_cores": "CPU Cores",
"cpu_usage": "CPU Usage",
"memory": "Memory",
"memory_total": "Total Memory",
"memory_used": "Used Memory",
"memory_available": "Available Memory",
"memory_usage": "Memory Usage",
"swap": "Swap",
"disks": "Disks",
"disk_count": "Disk Count",
"network": "Network",
"network_interfaces": "Network Interfaces",
"software": "Software",
"software_count": "Installed Software",
"system": "System",
"kernel": "Kernel",
"architecture": "Architecture",
"uptime": "Uptime",
"frequency": "Frequency",
"physical_cores": "Physical Cores",
"logical_cores": "Logical Cores",
"model": "Model",
"usage": "Usage",
"total": "Total",
"used": "Used",
"available": "Available",
"mount_point": "Mount Point",
"removable": "removable",
"mac_address": "MAC Address",
"ip_addresses": "IP Addresses",
"traffic": "Traffic",
"collect_now": "Collect Now",
"collector_running": "Collector Running",
"collector_stopped": "Collector Stopped",
"last_upload": "Last upload",
"total_uploads": "total",
"last_seen": "Last Seen",
"collected_at": "Collected At",
"no_data": "No inventory data available yet. Click \"Collect Now\" to gather system information.",
"no_devices": "No devices with inventory data found",
"detail_title": "Device Inventory Detail",
"telemetry": "Telemetry",
"view_detail": "View Detail",
"export": "Export",
"refresh": "Refresh"
},
"tickets": {
"title": "Helpdesk",
"subtitle": "Support tickets and issue tracking",
"create": "New Ticket",
"edit": "Edit Ticket",
"delete": "Delete Ticket",
"detail": "Ticket Detail",
"ticket_id": "Ticket ID",
"ticket_title": "Title",
"description": "Description",
"status": "Status",
"priority": "Priority",
"category": "Category",
"assigned_to": "Assigned To",
"created_by": "Created By",
"device": "Device",
"sla_due": "SLA Due",
"created_at": "Created",
"updated_at": "Updated",
"resolved_at": "Resolved",
"closed_at": "Closed",
"status_open": "Open",
"status_in_progress": "In Progress",
"status_resolved": "Resolved",
"status_closed": "Closed",
"priority_low": "Low",
"priority_medium": "Medium",
"priority_high": "High",
"priority_critical": "Critical",
"category_general": "General",
"category_hardware": "Hardware",
"category_software": "Software",
"category_network": "Network",
"category_access": "Access",
"category_other": "Other",
"comments": "Comments",
"add_comment": "Add Comment",
"comment_placeholder": "Write a comment...",
"internal_note": "Internal note (not visible to end users)",
"attachments": "Attachments",
"upload_attachment": "Upload Attachment",
"download": "Download",
"connect_device": "Connect to Device",
"no_tickets": "No tickets found",
"no_comments": "No comments yet",
"no_attachments": "No attachments",
"title_required": "Title is required",
"delete_confirm": "Are you sure you want to delete ticket #{id}?",
"delete_success": "Ticket deleted successfully",
"created_success": "Ticket created successfully",
"updated_success": "Ticket updated successfully",
"sla_overdue": "SLA Overdue",
"filter_all": "All",
"search_placeholder": "Search tickets...",
"assign_to_me": "Assign to me",
"unassign": "Unassign",
"stats_total": "Total",
"stats_open": "Open",
"stats_in_progress": "In Progress",
"stats_resolved": "Resolved",
"stats_closed": "Closed"
},
"activity": {
"title": "Activity Monitoring",
"subtitle": "Application usage and idle tracking",
"device": "Device",
"hostname": "Hostname",
"sessions": "Sessions",
"idle_time": "Idle Time",
"active_time": "Active Time",
"last_report": "Last Report",
"top_apps": "Top Applications",
"app_name": "Application",
"window_title": "Window Title",
"category": "Category",
"duration": "Duration",
"started_at": "Started",
"ended_at": "Ended",
"session_count": "Session Count",
"total_active": "Total Active",
"total_idle": "Total Idle",
"detail_count": "Detail Records",
"no_data": "No activity data available",
"no_sessions": "No sessions recorded",
"filter_from": "From",
"filter_to": "To",
"filter_apply": "Apply filter",
"hours": "hours",
"minutes": "minutes",
"seconds": "seconds",
"category_browser": "Browser",
"category_productivity": "Productivity",
"category_communication": "Communication",
"category_development": "Development",
"category_media": "Media",
"category_gaming": "Gaming",
"category_system": "System",
"category_other": "Other",
"summary": "Summary",
"details": "Details",
"refresh": "Refresh"
},
"automation": {
"title": "Automation & Alerts",
"subtitle": "Alert rules, remote commands, and SMTP configuration",
"rules": "Alert Rules",
"rules_subtitle": "Define conditions that trigger notifications",
"alerts": "Alert History",
"alerts_subtitle": "View and acknowledge triggered alerts",
"commands": "Remote Commands",
"commands_subtitle": "Send commands to remote devices",
"smtp": "SMTP Configuration",
"smtp_subtitle": "Email notification settings",
"rule_name": "Rule Name",
"description": "Description",
"condition_type": "Condition Type",
"condition_op": "Operator",
"condition_value": "Threshold",
"severity": "Severity",
"scope_device": "Target Device",
"scope_all": "All Devices",
"cooldown": "Cooldown (seconds)",
"notify_emails": "Notification Emails",
"enabled": "Enabled",
"disabled": "Disabled",
"create_rule": "Create Rule",
"edit_rule": "Edit Rule",
"delete_rule": "Delete Rule",
"acknowledge": "Acknowledge",
"acknowledged": "Acknowledged",
"unacknowledged": "Unacknowledged",
"triggered_at": "Triggered At",
"severity_info": "Info",
"severity_warning": "Warning",
"severity_critical": "Critical",
"op_gt": "Greater than",
"op_gte": "Greater or equal",
"op_lt": "Less than",
"op_lte": "Less or equal",
"op_eq": "Equal to",
"op_neq": "Not equal to",
"type_cpu_usage": "CPU Usage (%)",
"type_memory_usage": "Memory Usage (%)",
"type_disk_usage": "Disk Usage (%)",
"type_offline_duration": "Offline Duration (s)",
"type_idle_duration": "Idle Duration (s)",
"type_custom": "Custom",
"command_type": "Command Type",
"command_payload": "Command / Script",
"command_result": "Result",
"command_status": "Status",
"send_command": "Send Command",
"status_pending": "Pending",
"status_running": "Running",
"status_completed": "Completed",
"status_failed": "Failed",
"smtp_host": "SMTP Host",
"smtp_port": "Port",
"smtp_secure": "Use TLS",
"smtp_user": "Username",
"smtp_pass": "Password",
"smtp_from": "From Address",
"smtp_test": "Test Connection",
"smtp_save": "Save Configuration",
"smtp_test_success": "Connection successful",
"smtp_test_failed": "Connection failed",
"no_rules": "No alert rules configured",
"no_alerts": "No alerts triggered",
"no_commands": "No commands sent"
},
"file_transfer": {
"title": "File Transfer",
"transfers": "Transfers",
"new_transfer": "New Transfer",
"upload": "Upload",
"download": "Download",
"direction": "Direction",
"filename": "Filename",
"file_size": "File Size",
"mime_type": "MIME Type",
"progress": "Progress",
"status": "Status",
"device": "Device",
"initiated_by": "Initiated By",
"created_at": "Created At",
"cancel": "Cancel",
"cancel_confirm": "Are you sure you want to cancel this transfer?",
"download_file": "Download File",
"browse_files": "Browse Files",
"select_file": "Select File",
"select_device": "Select Device",
"no_transfers": "No file transfers",
"status_pending": "Pending",
"status_active": "Active",
"status_completed": "Completed",
"status_failed": "Failed",
"status_cancelled": "Cancelled",
"bytes_transferred": "Bytes Transferred",
"chunks": "Chunks",
"transfer_started": "Transfer started",
"transfer_completed": "Transfer completed",
"transfer_failed": "Transfer failed",
"transfer_cancelled": "Transfer cancelled",
"max_file_size": "Maximum file size: 4 GB",
"error_too_large": "File is too large",
"error_no_device": "No device selected",
"error_no_file": "No file selected"
},
"network": {
"title": "Network Monitoring",
"targets": "Monitoring Targets",
"add_target": "Add Target",
"edit_target": "Edit Target",
"delete_target": "Delete Target",
"delete_confirm": "Are you sure you want to delete this target?",
"target_name": "Name",
"host": "Host",
"port": "Port",
"url": "URL",
"check_type": "Check Type",
"timeout": "Timeout (ms)",
"interval": "Interval (ms)",
"enabled": "Enabled",
"status": "Status",
"last_check": "Last Check",
"last_rtt": "Last RTT",
"rtt_ms": "RTT (ms)",
"status_up": "Up",
"status_down": "Down",
"status_unknown": "Unknown",
"check_now": "Check Now",
"history": "Check History",
"stats": "Statistics",
"total_targets": "Total Targets",
"targets_up": "Targets Up",
"targets_down": "Targets Down",
"type_ping": "Ping (ICMP)",
"type_tcp": "TCP Port",
"type_http": "HTTP",
"type_https": "HTTPS",
"tools": "Network Tools",
"ping_tool": "Ping Test",
"tcp_tool": "TCP Port Check",
"http_tool": "HTTP Check",
"dns_tool": "DNS Resolve",
"monitor_start": "Start Monitor",
"monitor_stop": "Stop Monitor",
"monitor_running": "Monitor is running",
"monitor_stopped": "Monitor is stopped",
"no_targets": "No monitoring targets configured",
"no_history": "No check history available",
"error_code": "Error",
"status_code": "HTTP Status Code"
},
"dataguard": {
"title": "DataGuard — DLP",
"policies": "DLP Policies",
"add_policy": "Add Policy",
"edit_policy": "Edit Policy",
"delete_policy": "Delete Policy",
"delete_confirm": "Are you sure you want to delete this policy?",
"policy_name": "Name",
"policy_description": "Description",
"enabled": "Enabled",
"disabled": "Disabled",
"rules": "Rules",
"add_rule": "Add Rule",
"rule_type": "Rule Type",
"rule_type_usb": "USB Device",
"rule_type_file": "File Operation",
"action": "Action",
"action_allow": "Allow",
"action_block": "Block",
"action_log": "Log Only",
"filter": "Filter",
"vid": "Vendor ID (VID)",
"pid": "Product ID (PID)",
"serial": "Serial Number",
"device_class": "Device Class",
"drive_type": "Drive Type",
"file_extensions": "File Extensions",
"events": "DLP Events",
"event_source": "Source",
"event_source_usb": "USB",
"event_source_file": "File",
"event_type": "Event Type",
"event_details": "Details",
"no_policies": "No DLP policies configured",
"no_events": "No DLP events recorded",
"stats": "Statistics",
"total_events": "Total Events",
"blocked_events": "Blocked",
"logged_events": "Logged",
"usb_events": "USB Events",
"file_events": "File Events",
"device_id": "Device ID",
"policy_matched": "Policy Matched",
"timestamp": "Timestamp",
"drive_removable": "Removable",
"drive_fixed": "Fixed",
"drive_network": "Network",
"drive_cdrom": "CD-ROM",
"drive_unknown": "Unknown"
},
"reports": {
"title": "Reports",
"generate": "Generate Report",
"generate_csv": "Export CSV",
"report_type": "Report Type",
"type_devices": "Device Summary",
"type_activity": "Activity Summary",
"type_security": "Security Report",
"type_tickets": "Ticket Report",
"type_network": "Network Report",
"type_inventory": "Inventory Report",
"type_alerts": "Alert Report",
"saved": "Saved Reports",
"save_report": "Save Report",
"delete_report": "Delete Report",
"delete_confirm": "Are you sure you want to delete this saved report?",
"no_saved": "No saved reports",
"report_title": "Title",
"created_by": "Created By",
"created_at": "Created At",
"filters": "Filters",
"date_from": "From",
"date_to": "To",
"device_filter": "Device ID",
"generated_at": "Generated At",
"section": "Data Section",
"total_devices": "Total Devices",
"online": "Online",
"offline": "Offline",
"banned": "Banned",
"platform_distribution": "Platform Distribution",
"top_applications": "Top Applications",
"total_active": "Total Active Time",
"total_idle": "Total Idle Time",
"dlp_stats": "DLP Statistics",
"banned_devices": "Banned Devices",
"audit_logs": "Audit Logs",
"ticket_stats": "Ticket Statistics",
"category_distribution": "Category Distribution",
"priority_distribution": "Priority Distribution",
"targets_status": "Targets Status",
"os_distribution": "OS Distribution",
"avg_ram": "Average RAM",
"alert_rules": "Alert Rules",
"recent_alerts": "Recent Alerts"
},
"tenants": {
"title": "Multi-Tenancy",
"list": "Tenants",
"add_tenant": "Add Tenant",
"edit_tenant": "Edit Tenant",
"delete_tenant": "Delete Tenant",
"delete_confirm": "Are you sure you want to delete this tenant? All device and user assignments will be removed.",
"name": "Name",
"slug": "Slug",
"contact_name": "Contact Name",
"contact_email": "Contact Email",
"max_devices": "Max Devices",
"max_devices_hint": "0 = unlimited",
"notes": "Notes",
"active": "Active",
"inactive": "Inactive",
"devices": "Devices",
"users": "Users",
"assign_device": "Assign Device",
"assign_devices": "Assign Devices",
"remove_device": "Remove Device",
"assign_user": "Assign User",
"remove_user": "Remove User",
"no_tenants": "No tenants configured",
"no_devices": "No devices assigned to this tenant",
"no_users": "No users assigned to this tenant",
"stats": "Tenant Statistics",
"total_devices": "Total Devices",
"online_devices": "Online Devices",
"total_users": "Total Users",
"created_at": "Created At",
"updated_at": "Updated At",
"slug_exists": "Tenant slug already exists"
},
"registrations": {
"title": "Device Registrations",
"subtitle": "Manage registration requests from devices discovered via LAN",
"search_placeholder": "Search by device ID, hostname or IP...",
"no_registrations": "No registration requests",
"col_device_id": "Device ID",
"col_hostname": "Hostname",
"col_platform": "Platform",
"col_ip": "IP Address",
"col_version": "Version",
"col_status": "Status",
"col_requested": "Requested",
"col_actions": "Actions",
"status_pending": "Pending",
"status_approved": "Approved",
"status_rejected": "Rejected",
"approve_btn": "Approve",
"approve_confirm": "Are you sure you want to approve this device? It will receive server credentials and can connect automatically.",
"approved_success": "Device registration approved successfully",
"reject_btn": "Reject",
"reject_title": "Reject Registration",
"reject_confirm": "Are you sure you want to reject this registration request?",
"reject_reason": "Reason (optional)",
"reject_reason_placeholder": "Enter reason for rejection...",
"rejected_success": "Device registration rejected",
"delete_confirm": "Are you sure you want to delete this registration record?",
"deleted_success": "Registration record deleted"
},
"backup": {
"title": "Backup",
"desc": "Download a full backup of your console configuration, users, groups, and settings. Go server peer data is included when the BetterDesk backend is active.",
"restore_title": "Restore",
"restore_desc": "Upload a previously downloaded backup file to restore console configuration. Select which sections to restore below.",
"stat_users": "Users",
"stat_settings": "Settings",
"stat_folders": "Folders",
"stat_groups": "Groups",
"stat_strategies": "Strategies",
"stat_backend": "Backend",
"download": "Download Backup",
"creating": "Creating backup...",
"download_success": "Backup downloaded successfully",
"upload": "Upload Backup",
"restore_confirm": "Are you sure you want to restore from this backup? Selected sections will be overwritten.",
"restore_success": "Backup restored successfully. Some changes may require a page reload.",
"restored": "Restored",
"skipped": "Skipped",
"backup_date": "Backup date",
"opt_settings": "Console settings",
"opt_branding": "Branding / Theme",
"opt_folders": "Device folders",
"opt_groups": "User & device groups",
"opt_addressbooks": "Address books",
"opt_users": "User accounts",
"opt_users_warning": "Destructive: replaces ALL user accounts with backup data. You may be logged out.",
"no_file": "No backup file selected",
"invalid_json": "Invalid backup file: not valid JSON",
"invalid_format": "Invalid backup file: not a BetterDesk backup"
}
}