Files
BetterDesk/web-nodejs/lang/en.json
T
UNITRONIX 5e2ab9bfa9 refactor(org): replace JSON address book tab with device groups view
Show org-linked device and user groups via team_id, with shortcuts to
Devices → Groups and one-click group creation scoped to the organization.
2026-06-10 03:33:02 +02:00

3702 lines
163 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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",
"actions": "Actions",
"close": "Close",
"required": "required",
"name_required": "Name is required",
"active": "Active",
"inactive": "Inactive",
"invalid_json": "Invalid JSON",
"field_required": "{field} is required",
"back": "Back",
"edit": "Edit",
"yes": "Yes",
"no": "No"
},
"nav": {
"main": "Main",
"tools": "Tools",
"system": "System",
"dashboard": "Dashboard",
"devices": "Devices",
"keys": "Keys",
"generator": "Generator",
"settings": "Settings",
"users": "Users",
"inventory": "Inventory",
"tickets": "Tickets",
"help_requests": "Help Requests",
"activity": "Activity",
"automation": "Automation",
"file_transfer": "File Transfer",
"network": "Network",
"dataguard": "DataGuard",
"reports": "Reports",
"tenants": "Tenants",
"registrations": "Enrollment Requests",
"management": "Management",
"toggle_sidebar": "Toggle sidebar",
"toggle_theme": "Toggle theme",
"cdap": "CDAP Devices",
"fleet": "Fleet",
"scaling": "Scaling",
"cross_platform": "Cross-Platform",
"tokens": "Device Tokens",
"organizations": "Organizations",
"policies": "Policies",
"attestation": "Attestation",
"remote": "Remote Desktop",
"toolkit": "Toolkit",
"security_audit": "Security Audit",
"permissions": "Permissions",
"languages": "Languages",
"resource_control": "Resource Control",
"sdk_studio": "SDK Studio",
"chat": "Chat",
"help": "Help",
"expand_sidebar": "Expand sidebar",
"login": "Login",
"server_management": "Server Management",
"server_attestation": "Server Attestation",
"commercialization": "Commercialization"
},
"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.",
"or": "or",
"login_sso": "Sign in with SSO",
"login_sso_with": "Sign in with {{provider}}",
"oidc_denied": "Access was denied by the identity provider.",
"oidc_invalid": "Invalid OIDC callback. Please try again.",
"oidc_failed": "OIDC authentication failed. Please try again.",
"oidc_error": "An error occurred during SSO login.",
"oidc_no_account": "Your account was not found and auto-registration is disabled.",
"invalid_credentials": "Invalid username or password.",
"username_collision": "A local account with this username already exists. Sign in with your local password, or ask an administrator to rename or remove the conflicting account.",
"pro_only_account": "This account is for RustDesk desktop client only. Please use the RustDesk app to log in.",
"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_rate_limited": "Too many attempts. Please try again later.",
"totp_already_enabled": "Two-factor authentication is already enabled",
"passwords_mismatch": "Passwords do not match",
"emergency_mode_banner": "Go server unreachable — running in emergency mode (admin-only, limited functionality)"
},
"dashboard": {
"title": "Dashboard",
"subtitle": "Overview of your BetterDesk 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",
"greeting_morning": "Good morning, {name}",
"greeting_afternoon": "Good afternoon, {name}",
"greeting_evening": "Good evening, {name}",
"greeting_night": "Good night, {name}",
"health_overview": "Health Overview",
"devices_online": "Devices Online",
"active_alerts": "Active Alerts",
"recent_connections": "Total Devices",
"server_uptime": "Server Uptime",
"activity_feed": "Recent Activity",
"no_recent_activity": "No recent activity",
"just_now": "just now",
"ago": "ago",
"tip_desktop_mode": "Try Desktop Mode for a multi-window workspace with monitoring widgets.",
"tip_keyboard_shortcuts": "Press Ctrl+K anywhere to open the quick search command palette.",
"tip_address_book": "Sync your address book across devices by logging in from the RustDesk client.",
"tip_2fa": "Enable Two-Factor Authentication in Settings for extra account security.",
"tip_bulk_actions": "Select multiple devices and use bulk actions to manage them at once.",
"tip_theme": "Switch between Dark and Light themes in the sidebar settings.",
"tip_cdap": "Connect IoT devices and industrial sensors via the CDAP gateway.",
"tip_tutorials": "Click the help button in the bottom-right corner for interactive tutorials."
},
"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",
"no_signal_tooltip": "Client contacted the API recently but is not registered on the signal server (UDP :21116). Restart the client after server migration.",
"selected": "selected",
"showing": "Showing",
"of": "of",
"per_page": "Per page",
"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",
"revoke_option": "Revoke device",
"revoke_hint": "Block device ID and disconnect active connections",
"revoke_success": "Device revoked 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",
"not_found": "Device not found",
"delete_failed": "Failed to delete device",
"restore_failed": "Failed to restore device",
"change_id_failed": "Failed to change device ID",
"invalid_id": "Invalid device ID (6-16 characters required)",
"invalid_id_format": "Invalid ID format (letters, numbers, dashes, underscores only)",
"id_exists": "Device ID already exists",
"no_selection": "No devices selected",
"device_type": "Type",
"tags": "Tags",
"filter_type_all": "All Types",
"filter_type_rustdesk": "RustDesk",
"filter_type_desktop": "Desktop",
"filter_type_scada": "SCADA",
"filter_type_iot": "IoT",
"filter_type_agent": "Agent",
"cdap_connected": "CDAP Connected",
"revoke": "Revoke",
"access_policy": "Access Policy",
"filter_by_tags": "Filter by tags",
"no_tags": "No tags",
"all_groups": "All groups",
"create_group": "Create group",
"manage_groups": "Manage Groups",
"group_name": "Group name",
"group_name_placeholder": "e.g. Media PCs",
"dynamic_group": "Dynamic group from tag",
"dynamic_group_hint": "Devices with this tag join automatically.",
"tag_filter": "Tag filter",
"group_allowed_users": "Allowed users",
"group_allowed_users_hint": "Leave empty to keep the group visible to everyone with device permissions.",
"group_allowed_user_groups": "Allowed user groups",
"group_allowed_user_groups_hint": "Users in selected user groups can access this device group.",
"manage_user_groups": "Manage user groups",
"no_user_groups": "No user groups",
"edit_group": "Edit group",
"delete_group": "Delete group",
"delete_group_confirm": "Delete device group {name}?",
"group_deleted": "Device group deleted",
"folder_group_readonly": "Folder-backed groups are managed from folders.",
"group_tag_required": "Tag filter is required for dynamic groups",
"group_invalid": "Invalid group identifier",
"group_not_found": "Group not found",
"group_saved": "Device group saved",
"groups_saved": "Device groups saved",
"group_membership_added": "Added to group",
"group_membership_removed": "Removed from group",
"no_groups": "No groups yet",
"manual_groups": "Manual groups",
"dynamic_memberships": "Dynamic memberships",
"unattended_access": "Unattended Access",
"enable_unattended": "Enable unattended access",
"access_password": "Access Password",
"password_configured": "Password set",
"no_password": "No password",
"new_password": "New password (leave empty to keep current)",
"clear_password": "Clear password",
"access_schedule": "Access Schedule",
"enable_schedule": "Enable time-based access",
"allowed_days": "Allowed days",
"start_time": "Start time",
"end_time": "End time",
"timezone": "Timezone",
"allowed_operators": "Allowed Operators",
"all_operators": "All operators (leave empty)",
"operators_hint": "Comma-separated usernames. Leave empty to allow all operators.",
"last_updated_by": "Last updated by",
"access_policy_saved": "Access policy saved",
"display_name": "Display Name",
"display_name_placeholder": "Custom name (overrides hostname)",
"note_placeholder": "Notes about this device",
"tabs": {
"overview": "Overview",
"hardware": "Hardware",
"metrics": "Metrics",
"connections": "Connections",
"audit": "Audit",
"info": "Info",
"history": "History"
},
"hardware": {
"cpu": "Processor",
"memory": "Memory",
"disk": "Disk",
"os": "Operating System",
"hostname": "Hostname",
"uptime": "Uptime",
"load_avg": "Load Average",
"network": "Network Adapters",
"no_data": "No hardware data available",
"title": "Hardware Information",
"gpu": "Graphics Card"
}
},
"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",
"not_found": "Key not found",
"api_not_found": "API key not found"
},
"settings": {
"title": "Settings",
"subtitle": "Console configuration and account settings",
"tab_general": "General",
"tab_server": "Server",
"tab_branding": "Branding",
"tab_backup": "Backup",
"tab_auth": "Authentication",
"tab_advanced": "Advanced",
"connection_mode_title": "Connection strategy",
"connection_mode_desc": "Control how RustDesk desktop clients connect: direct P2P (hole punch) when possible, or always via relay.",
"connection_mode_label": "Default connection mode",
"connection_mode_p2p_first": "P2P first (recommended) — try direct connection, fall back to relay",
"connection_mode_relay_only": "Relay only — all sessions use the relay server",
"connection_mode_advanced": "Advanced options",
"connection_mode_fallback_ms": "P2P fallback timeout (ms)",
"connection_mode_same_nat_relay": "Force relay when both peers share the same public IP (NAT hairpin)",
"connection_mode_network_hint": "P2P requires UDP port 21116 to be reachable between clients. Signal TCP 21116, relay TCP 21117, NAT test 21115 must be open on the server. Web browser clients always use relay.",
"connection_mode_save": "Save",
"connection_mode_save_restart": "Save & restart server",
"connection_mode_saved": "Connection mode saved",
"connection_mode_restart_started": "Server restart initiated",
"connection_mode_restart_failed": "Server restart failed",
"connection_mode_not_configurable": "Connection mode cannot be changed on this deployment (no systemd unit or docker-compose found)",
"connection_mode_compose_error": "Could not find server environment section in docker-compose.yml",
"connection_mode_source_saved": "Saved in",
"connection_mode_source_defaults": "Using server defaults (not writable from panel)",
"connection_mode_runtime": "Active server",
"advanced_title": "Configuration files",
"advanced_desc": "Edit server configuration files directly. Changes may require restarting services. A backup copy is created before each save.",
"advanced_warning": "These files contain secrets (API keys, database passwords, session secrets). Only edit if you know what you are doing. Incorrect syntax can prevent the server from starting.",
"advanced_files_label": "Files",
"advanced_select_file": "Select a file from the list to view or edit its contents.",
"advanced_reload": "Reload",
"advanced_save": "Save file",
"advanced_apply_restart": "Apply (restart service)",
"advanced_saved": "Configuration file saved",
"advanced_restart_after_save": "Configuration saved. Restart the affected service now so changes take effect?",
"advanced_restart_confirm": "Restart the related BetterDesk service(s)? Active connections may be interrupted briefly.",
"advanced_restart_console_confirm": "Restart the web console service? Your browser session will disconnect briefly and the page will reload when the console is back.",
"advanced_restart_started": "Service restart initiated",
"advanced_restart_done": "Console restarted — reloading page…",
"advanced_restart_polling": "Waiting for the console to come back online…",
"advanced_restart_timeout": "Restart was sent but the console did not respond in time. Check systemd/NSSM logs and reload manually.",
"advanced_restart_failed": "Service restart failed (insufficient privileges or service not installed)",
"advanced_save_confirm": "Save changes to this file? A backup of the previous version will be created.",
"advanced_unsaved_confirm": "You have unsaved changes. Discard them?",
"advanced_no_files": "No configuration files available on this system.",
"advanced_readonly": "read-only",
"advanced_missing": "missing",
"advanced_new_file": "New file (not created until you save)",
"advanced_new_file_hint": "New file — add content and save",
"advanced_backup_created": "backup created",
"advanced_restart_console": "Restart the web console service (e.g. systemctl restart betterdesk-console) for .env changes to take effect.",
"advanced_restart_goserver": "Restart the BetterDesk Go server for blocklist changes to load.",
"advanced_restart_systemd": "After editing systemd units, run: systemctl daemon-reload && systemctl restart <service>",
"advanced_restart_generic": "Restart the affected service for changes to take effect.",
"advanced_error_unknown": "Unknown configuration file",
"advanced_error_not_found": "File does not exist",
"advanced_error_not_file": "Path is not a regular file",
"advanced_error_too_large": "File exceeds the maximum editable size (512 KB)",
"advanced_error_binary": "Binary files cannot be edited in the panel",
"advanced_error_invalid": "Invalid file content",
"advanced_error_not_writable": "File is not writable by the console process",
"advanced_file_console-env": "Console environment (.env)",
"advanced_file_console-env-local": "Console overrides (.env.local)",
"advanced_file_go-blocklist": "Go server blocklist (blocklist.txt)",
"advanced_file_systemd-console": "systemd: betterdesk-console",
"advanced_file_systemd-server": "systemd: betterdesk-server",
"advanced_file_console-session-secret": "Console session secret (.session_secret)",
"advanced_file_go-audit-log": "Go server audit log (audit.jsonl)",
"advanced_file_build-env": "Agent build environment (/etc/betterdesk/build.env)",
"advanced_file_docker-supervisord": "Docker: supervisord.conf",
"advanced_file_docker-compose": "Docker: docker-compose.yml",
"advanced_restart_none": "No service restart is required for this file.",
"enrollment_title": "Device enrollment (RustDesk)",
"enrollment_desc": "Control how new RustDesk clients register and how operators approve them in the enrollment requests page.",
"enrollment_require_approval": "Require operator approval (Managed mode)",
"enrollment_require_approval_hint": "When enabled, unknown clients are queued until an operator approves them in Enrollment Requests.",
"enrollment_rich_approve": "Full approval form (name, folder, groups, tags)",
"enrollment_rich_approve_hint": "Shows a detailed dialog when approving enrollment or LAN registration requests.",
"enrollment_tag_picker": "Pick tags from existing device tags",
"enrollment_tag_picker_hint": "Lets operators select tags from the list used on the Devices page instead of typing only.",
"enrollment_open_requests": "Open enrollment requests",
"enrollment_pending_count": "{count} pending enrollment request(s)",
"ldap_title": "LDAP / Active Directory",
"ldap_desc": "Configure external authentication via LDAP or Active Directory. Users will be able to sign in with their domain credentials.",
"ldap_enabled": "Enable LDAP Authentication",
"ldap_enabled_hint": "When enabled, users can sign in with LDAP/AD credentials. Local accounts still work as fallback.",
"ldap_connection": "Server Connection",
"ldap_host": "Host",
"ldap_port": "Port",
"ldap_use_tls": "LDAPS (TLS)",
"ldap_start_tls": "StartTLS",
"ldap_skip_verify": "Skip TLS verify",
"ldap_timeout": "Connection timeout (s)",
"ldap_timeout_hint": "Seconds to wait for LDAP server response",
"ldap_bind_mode": "Bind Mode",
"ldap_direct_bind": "Direct Bind",
"ldap_direct_bind_hint": "Bind directly with a DN template instead of using a service account to search.",
"ldap_bind_dn": "Bind DN (service account)",
"ldap_bind_dn_hint": "Distinguished Name of a read-only service account used to search for users.",
"ldap_bind_password": "Bind Password",
"ldap_base_dn": "Base DN",
"ldap_base_dn_hint": "Search base for finding users, e.g. dc=example,dc=com",
"ldap_user_filter": "User Filter",
"ldap_user_filter_hint": "LDAP filter to find users. Use {{username}} as placeholder. Default: (sAMAccountName={{username}})",
"ldap_direct_bind_dn": "Direct Bind DN Template",
"ldap_direct_bind_dn_hint": "DN template for direct bind. Use {{username}} as placeholder, e.g. uid={{username}},ou=users,dc=example,dc=com",
"ldap_user_attrs": "User Attributes",
"ldap_attr_id": "Username Attribute",
"ldap_attr_email": "Email Attribute",
"ldap_attr_name": "Display Name Attribute",
"ldap_group_mapping": "Group → Role Mapping",
"ldap_group_base_dn": "Group Base DN",
"ldap_group_base_dn_hint": "Leave empty to use the main Base DN",
"ldap_group_filter": "Group Filter",
"ldap_group_attr_name": "Group Name Attribute",
"ldap_default_role": "Default Role",
"ldap_default_role_hint": "Role assigned to users whose LDAP groups don't match any mapping",
"ldap_role_viewer": "Viewer",
"ldap_role_operator": "Operator",
"ldap_role_admin": "Admin",
"ldap_group_role_map": "Group → Role Map",
"ldap_group_role_map_hint": "Map LDAP groups to BetterDesk roles. Format: GroupDN=role separated by | (pipe). Example: CN=Admins,DC=example,DC=com=admin|CN=Ops,DC=example,DC=com=operator",
"ldap_test_connection": "Test Connection",
"ldap_testing": "Testing...",
"ldap_test_success": "Connection successful! LDAP server is reachable and bind credentials are valid.",
"ldap_test_failed": "Connection failed",
"ldap_save": "Save LDAP Configuration",
"ldap_saved": "LDAP configuration saved successfully",
"oidc_title": "OIDC / OAuth2 (SSO)",
"oidc_desc": "Configure Single Sign-On via an OpenID Connect provider (Azure AD, Okta, Google, Keycloak, etc.).",
"oidc_enabled": "Enable OIDC Authentication",
"oidc_enabled_hint": "Allow users to sign in with an external identity provider",
"oidc_provider": "Identity Provider",
"oidc_display_name": "Button Display Name",
"oidc_display_name_hint": "Text shown on the login button (e.g. Azure AD, Okta)",
"oidc_issuer_url": "Issuer URL",
"oidc_issuer_url_hint": "OpenID Connect issuer URL (discovery will be automatic)",
"oidc_client_id": "Client ID",
"oidc_client_secret": "Client Secret",
"oidc_redirect_url": "Redirect URL (Callback)",
"oidc_redirect_url_hint": "Must match exactly what is configured in your IdP. Usually: http(s)://your-server:21114/api/auth/oidc/callback",
"oidc_scopes": "Scopes",
"oidc_use_pkce": "Use PKCE (recommended)",
"oidc_auto_discovery": "Auto-discovery",
"oidc_allow_signup": "Auto-create users",
"oidc_manual_endpoints": "Manual Endpoint URLs",
"oidc_authorization_url": "Authorization Endpoint",
"oidc_token_url": "Token Endpoint",
"oidc_userinfo_url": "Userinfo Endpoint",
"oidc_claim_mapping": "Claim Mapping",
"oidc_claim_username": "Username Claim",
"oidc_claim_email": "Email Claim",
"oidc_claim_name": "Display Name Claim",
"oidc_claim_groups": "Groups Claim",
"oidc_role_mapping": "Role Mapping",
"oidc_default_role": "Default Role",
"oidc_group_role_map": "Group → Role Mapping",
"oidc_group_role_map_hint": "One mapping per line: group_name=role (e.g. admins=admin, operators=operator)",
"oidc_test_discovery": "Test Discovery",
"oidc_testing": "Testing...",
"oidc_test_success": "Discovery successful! Endpoints resolved.",
"oidc_test_failed": "Discovery failed",
"oidc_issuer_required": "Issuer URL is required to test discovery",
"oidc_save": "Save OIDC Configuration",
"oidc_saved": "OIDC configuration saved successfully",
"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",
"tutorials_title": "Tutorials & Guides",
"tutorials_desc": "Control guided tours and help overlays shown throughout the console",
"tutorials_enabled": "Enable tutorials",
"tutorials_enabled_hint": "When disabled, tutorials will not start automatically and the help button will be hidden",
"tutorials_reset_hint": "Mark all tutorials as unseen so they can be shown again",
"tutorials_enabled_toast": "Tutorials enabled",
"tutorials_disabled_toast": "Tutorials disabled",
"tutorials_reset_toast": "All tutorials have been reset",
"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",
"action_login": "Login",
"action_login_failed": "Login Failed",
"action_logout": "Logout",
"action_password_change": "Password Changed",
"action_2fa_enable": "2FA Enabled",
"action_2fa_disable": "2FA Disabled",
"action_user_create": "User Created",
"action_user_update": "User Updated",
"action_user_delete": "User Deleted",
"action_settings_update": "Settings Updated",
"action_device_ban": "Device Banned",
"action_device_unban": "Device Unbanned",
"action_device_delete": "Device Deleted"
},
"generator": {
"title": "Agent Generator",
"subtitle": "Build branded BetterDesk Agent installers for your end users",
"alpha_badge": "ALPHA",
"alpha_tooltip": "Early feature — agent bundle generator is under active development.",
"bundles_title": "Agent bundles",
"new_bundle": "New bundle",
"editor_title": "Bundle editor",
"empty_state": "Select a bundle on the left or create a new one to begin.",
"loading": "Loading…",
"no_bundles": "No bundles yet. Create your first one.",
"bundle_name": "Bundle name",
"bundle_name_hint": "Internal label only — not shown to end users.",
"short_link": "Short download link",
"short_link_hint": "Used in the public URL (/d/…). Lowercase letters, numbers and dashes only (232 chars). Auto-filled from bundle name — shorten it for easier sharing (e.g. acme).",
"connection_section": "Server connection",
"server_host": "Public server address",
"server_host_placeholder": "support.example.com or 203.0.113.10",
"server_host_hint": "Domain name or public IP where end users reach your BetterDesk server. Port is taken from console configuration.",
"use_https": "Use HTTPS / WSS (recommended)",
"enrollment_token": "Device registration",
"enrollment_token_pending": "Per device after approval",
"enrollment_token_set": "Per device — approve in Registrations",
"enrollment_token_hint": "Each installation registers on its own. Approve new devices in the Registrations panel; the server then issues a unique access key per computer.",
"enrollment_per_device": "Per device — approve in Registrations",
"branding_section": "Branding",
"company_name": "Company / brand name",
"short_text": "Short description",
"contact_email": "Contact email",
"contact_phone": "Contact phone",
"contact_url": "Contact website",
"logo": "Logo",
"logo_hint": "PNG, JPEG, SVG or WebP. Maximum 256 KB.",
"logo_clear": "Remove logo",
"primary_color": "Primary color",
"accent_color": "Header color",
"background_color": "Window background",
"surface_color": "Card background",
"text_color": "Text color",
"text_muted_color": "Muted text color",
"status_ready_color": "Ready indicator color",
"header_text_color": "Header text color",
"default_lang": "Default language",
"allow_unattended": "Allow unattended access",
"allow_unattended_hint": "When enabled, the agent shows a permanent password for operator access.",
"save": "Save bundle",
"revoke": "Revoke",
"unrevoke": "Re-enable",
"revoked": "Revoked",
"preview_title": "Live preview",
"preview_hint": "Approximate look of the end-user agent window.",
"preview_default_name": "BetterDesk Support",
"preview_status_ready": "Ready",
"preview_id": "Your ID",
"preview_password": "Password",
"preview_chat": "Chat with support",
"preview_help": "Request help",
"preview_settings": "Settings (admin only)",
"preview_quit": "Quit (admin only)",
"download_link_title": "Download link",
"download_link_hint": "Share this link with end users. They will see a branded download page. Old hex links keep working after you change the short link.",
"open_portal": "Open",
"created": "Bundle created",
"saved": "Bundle saved",
"deleted": "Bundle deleted",
"revoked_ok": "Bundle revoked",
"unrevoked_ok": "Bundle re-enabled",
"link_copied": "Link copied to clipboard",
"copy_failed": "Could not copy automatically — please copy manually",
"unsaved_confirm": "Discard unsaved changes?",
"confirm_revoke": "Revoke this bundle? The download link will stop working.",
"confirm_unrevoke": "Re-enable this bundle?",
"confirm_delete": "Delete this bundle permanently? This cannot be undone.",
"builds_title": "Client builds",
"builds_hint": "Installers compiled on this server for each platform. Rebuild after fixing toolchain errors or updating agent source.",
"builds_loading": "Loading build status…",
"builds_empty": "No builds queued yet — save the bundle or click Rebuild all.",
"rebuild_all": "Rebuild all",
"rebuilding_all": "Queuing rebuilds…",
"rebuild_queued": "All platform builds queued",
"rebuild_confirm": "Rebuild all platform installers for this bundle? Existing ready artifacts will be replaced.",
"build_status_ready": "Ready",
"build_status_pending": "Queued",
"build_status_building": "Building",
"build_status_failed": "Failed",
"builds_summary": "{{ready}} ready · {{pending}} queued · {{building}} building · {{failed}} failed",
"build_error_hint": "Build error",
"errors": {
"validation_failed": "Validation failed",
"name_required": "Bundle name is required",
"company_name_required": "Company name is required",
"logo_invalid": "Logo must be a valid image file",
"logo_too_large": "Logo must be 256 KB or smaller",
"logo_read_failed": "Failed to read logo file",
"primary_color_invalid": "Primary color must be a hex value (e.g. #2563eb)",
"accent_color_invalid": "Header color must be a hex value (e.g. #1e293b)",
"contact_url_invalid": "Contact website must be a valid URL",
"server_host_required": "Public server address is required",
"server_host_invalid": "Enter a valid domain name or IPv4 address",
"token_failed": "Could not generate enrollment token — check server connectivity",
"rebuild_revoked": "Cannot rebuild a revoked bundle — re-enable it first",
"slug_invalid": "Short link may only contain lowercase letters, numbers and dashes",
"slug_too_short": "Short link must be at least 2 characters",
"slug_too_long": "Short link must be at most 32 characters",
"slug_taken": "This short link is already used by another bundle"
},
"legacy_title": "Client Configuration Generator",
"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"
},
"download": {
"title": "Download BetterDesk Agent",
"choose_platform": "Choose your platform",
"choose_platform_hint": "Select the installer that matches your operating system.",
"download": "Download",
"building": "Building…",
"failed": "Build failed",
"need_help": "Need help?",
"powered_by": "Powered by"
},
"server": {
"port": "Port",
"api_port": "API Port",
"id_server": "ID Server",
"relay_server": "Relay Server",
"api_key": "API Key"
},
"status": {
"online": "Online",
"offline": "Offline",
"no_signal": "No signal",
"banned": "Banned",
"running": "Running",
"stopped": "Stopped",
"unknown": "Unknown",
"checking": "Checking...",
"label": "Status"
},
"actions": {
"refresh": "Refresh",
"copy": "Copy",
"connect": "Connect",
"connect_desktop": "Connect via Desktop Client",
"remote_viewer": "Remote Viewer",
"web_remote": "Web Remote",
"cdap_viewer": "CDAP Snapshot Viewer",
"details": "Details",
"edit": "Edit",
"delete": "Delete",
"ban": "Ban",
"unban": "Unban",
"save": "Save",
"cancel": "Cancel",
"confirm": "Confirm",
"close": "Close",
"clear": "Clear",
"ok": "OK",
"saved": "Saved successfully",
"back": "Back",
"create": "Create",
"dismiss": "Dismiss",
"view_all": "View All",
"add": "Add",
"remove": "Remove"
},
"time": {
"just_now": "Just now",
"seconds_ago": "{count}s ago",
"minutes_ago": "{count}m ago",
"hours_ago": "{count}h ago",
"days_ago": "{count}d ago",
"day_mon": "Mon",
"day_tue": "Tue",
"day_wed": "Wed",
"day_thu": "Thu",
"day_fri": "Fri",
"day_sat": "Sat",
"day_sun": "Sun"
},
"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_pro": "Pro (API only)",
"role_super_admin": "Super Admin",
"role_server_admin": "Server Admin",
"role_global_admin": "Global Admin",
"role_hint": "This is the server-wide role. Super Admin has full access. Server Admin manages server config and keys. Global Admin manages all users, orgs, and devices but cannot change server config. Administrator is equivalent to Super Admin. Operators manage devices. Viewers have read-only access. Pro activates Pro mode in RustDesk client (API only). Per-organization roles are configured separately under each user's Organizations.",
"user_groups": "User groups",
"user_groups_hint": "User groups can be used to grant access to selected device groups.",
"loading_user_groups": "Loading user groups...",
"no_user_groups": "No user groups available",
"create_user_group": "Create group",
"edit_user_group": "Edit user group",
"delete_user_group": "Delete user group",
"delete_user_group_confirm": "Delete user group {name}? Members will lose access granted through this group.",
"user_group_created": "User group created",
"user_group_updated": "User group updated",
"user_group_deleted": "User group deleted",
"user_group_not_found": "User group not found",
"group_name": "Group name",
"group_name_placeholder": "Operators",
"group_note": "Note",
"group_note_placeholder": "Optional note",
"group_name_required": "Group name is required",
"group_members_count": "{count} members",
"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",
"organizations": "Organizations",
"user_organizations": "Organizations for {username}",
"no_organizations": "User is not assigned to any organization",
"org_removed": "Organization assignment removed",
"server_role_label": "Server Role",
"server_role_hint": "Determines what the user can do across the whole console (panel access, server config, audit, etc.).",
"org_membership_section": "Organization Membership",
"org_membership_hint": "A user can belong to multiple organizations. The organization role only controls permissions inside that organization and is independent of the server role above.",
"column_organizations": "Organizations",
"provider": "Provider",
"provider_local": "Local",
"provider_ldap": "LDAP/AD",
"provider_oidc": "SSO",
"password_managed_by_provider": "Managed by identity provider",
"provider_managed_hint": "This account is managed by an external identity provider (LDAP/AD or SSO). The password and role are controlled by the provider and cannot be changed here.",
"no_orgs_short": "—",
"org_count_one": "{count} organization",
"org_count_many": "{count} organizations",
"all_orgs_assigned": "User is already a member of every organization."
},
"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",
"error": "Error",
"not_found": "Not found",
"server_error": "Server error",
"load_device_failed": "Failed to load device",
"load_orgs_failed": "Failed to load organizations"
},
"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",
"use_cdap_fallback": "Use CDAP viewer",
"cdap_fallback_hint": "Open the lightweight JPEG-polling viewer that uses bd-signal/CDAP instead of the RustDesk relay. Useful when the peer is offline on the relay but reachable via the agent management channel.",
"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",
"clipboard_empty": "Clipboard is empty",
"clipboard_denied": "Clipboard access denied. HTTPS required or permission not granted.",
"block_input": "Block Input",
"display_settings": "Display Settings",
"image_quality": "Image Quality",
"quality_best": "Best (Full Quality, 60fps)",
"quality_balanced": "Balanced",
"quality_low": "Performance",
"codec": "Video Codec",
"codec_auto": "Auto (recommended)",
"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",
"monitors": "Monitors",
"select_monitor": "Select Monitor",
"quality_speed": "Speed (Low Quality, 60fps)",
"quality_quality": "Quality (Best, 30fps)",
"recording_started": "Recording started",
"recording_stopped": "Recording stopped",
"download_recording": "Download Recording",
"e2e_encrypted": "End-to-End Encrypted",
"e2e_key_exchange": "Establishing secure channel...",
"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",
"new_connection": "New Connection",
"device_id_placeholder": "Enter Device ID",
"http_warning": "HTTP mode: limited to H.264 software decode (~15 FPS). Use HTTPS for full performance (WebCodecs, VP9, 60 FPS).",
"file_transfer": "File Transfer",
"file_upload": "Upload",
"file_download": "Download",
"file_empty": "This folder is empty",
"file_loading": "Loading...",
"file_timeout": "Remote device did not respond. File transfer may not be supported or is disabled on the remote machine.",
"file_transfers": "Transfers",
"file_complete": "Complete",
"file_error": "Transfer failed",
"file_show_hidden": "Show hidden files",
"file_new_folder": "New Folder",
"file_new_folder_prompt": "Enter folder name:",
"file_parent": "Parent folder",
"file_root": "Root",
"file_rename": "Rename",
"file_rename_prompt": "Enter new name:",
"file_delete_confirm": "Are you sure you want to delete this item?",
"file_cancelled": "Transfer cancelled",
"2fa_required": "2FA Verification Required",
"2fa_hint": "Enter the 6-digit code from your authenticator app",
"2fa_invalid": "Enter a valid 6-digit code",
"verify": "Verify"
},
"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_text": "Text Logo",
"logo_type_icon": "Material Icon",
"logo_type_svg": "SVG Code",
"logo_type_image": "Image URL",
"logo_text": "Logo Text",
"logo_text_hint": "Primary text displayed as your brand logo",
"logo_text_accent": "Accent Text",
"logo_text_accent_hint": "Secondary text below the logo (e.g. product name or tagline)",
"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 2 MB. The image is saved on the server.",
"logo_image_url": "Image Path / URL",
"logo_image_url_hint": "Auto-filled when you upload a file, or enter a URL / path manually.",
"logo_image_too_large": "Image is too large. Maximum size is 2 MB.",
"logo_image_invalid_type": "Invalid file type. Use PNG, JPG, GIF, WebP or SVG.",
"logo_upload_success": "Logo uploaded successfully.",
"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",
"typography_title": "Typography",
"typography_desc": "Choose fonts for headings and body text. Fonts are downloaded to the server for self-hosting.",
"font_heading": "Heading Font",
"font_heading_hint": "Used for headings (H1H6) and text logo",
"font_body": "Body Font",
"font_body_hint": "Used for body text and UI elements",
"font_search_placeholder": "Search fonts...",
"font_system_default": "System default",
"font_clear": "Clear",
"font_cat_all": "All",
"font_downloaded_count": "fonts downloaded on server",
"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...",
"powered_by": "Powered by",
"background_title": "Background & Appearance",
"background_desc": "Set a console wallpaper, gradient or solid background. Cards float above it.",
"bg_type_none": "None",
"bg_type_color": "Solid Color",
"bg_type_gradient": "Gradient",
"bg_type_image": "Image",
"bg_color": "Background Color",
"bg_gradient": "CSS Gradient",
"bg_gradient_hint": "Any valid CSS gradient, e.g. linear-gradient(135deg, #1e293b, #0f172a)",
"bg_image_upload": "Upload Background Image",
"bg_image_choose": "Choose image file",
"bg_image_hint": "PNG, JPG, WebP or GIF. Max 8 MB. Stored on the server.",
"bg_image_url": "Image Path / URL",
"bg_size": "Image Sizing",
"bg_size_cover": "Cover (fill screen)",
"bg_size_contain": "Contain (fit)",
"bg_size_auto": "Auto (original)",
"bg_blur": "Background Blur",
"bg_overlay": "Dark Overlay",
"bg_overlay_hint": "Darkens the background for better text readability.",
"bg_image_too_large": "Image is too large. Maximum size is 8 MB.",
"bg_image_invalid_type": "Invalid file type. Use PNG, JPG, WebP or GIF.",
"bg_upload_success": "Background image uploaded successfully.",
"login_title": "Login Page",
"login_desc": "Customize the login screen heading, subtitle and background.",
"login_heading": "Login Heading",
"login_heading_placeholder": "Welcome back",
"login_subheading": "Login Subtitle",
"login_subheading_placeholder": "Sign in to your account",
"login_bg_inherit": "Same as console",
"agent_title": "Agent Download Page",
"agent_desc": "Customize the public agent download portal shown to end users.",
"agent_show_powered": "Show \"Powered by BetterDesk\"",
"agent_show_powered_hint": "Display the BetterDesk attribution in the download portal footer.",
"footer_title": "Footer & Copyright",
"footer_desc": "Add a custom footer line shown on the login screen and console sidebar.",
"footer_text": "Footer Text",
"footer_text_hint": "e.g. a copyright notice or company name.",
"show_powered": "Show \"BetterDesk\" attribution",
"show_powered_hint": "Display the BetterDesk name and version in the login footer and sidebar.",
"custom_css_title": "Custom CSS",
"custom_css_desc": "Advanced: inject custom CSS applied across the console and login page.",
"custom_css_hint": "Use with care. Invalid or unsafe rules are sanitized. Max 20,000 characters."
},
"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",
"tab_services": "Services",
"tab_processes": "Processes",
"tab_events": "Events",
"tab_activity": "Activity",
"tab_files": "Files",
"agent_lazy_hint": "Click this tab to load live data from the agent",
"agent_offline": "Agent is offline",
"agent_timeout": "Agent did not respond in time",
"agent_error": "Failed to load data from agent",
"service_name": "Name",
"service_display": "Display name",
"service_status": "Status",
"service_start": "Start mode",
"process_name": "Name",
"process_user": "User",
"process_memory": "Memory",
"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": "Tickets",
"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",
"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",
"search": "Search devices...",
"date_range": "Date Range",
"device_id": "Device ID",
"session_start": "Session Start",
"session_end": "Session End",
"user": "User",
"no_activity": "No activity recorded",
"reported_at": "Reported At",
"detail": "Detail",
"no_apps": "No applications"
},
"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",
"id_payload_required": "Device ID and payload are required",
"no_commands_sent": "No commands have been sent yet"
},
"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",
"search_targets": "Search targets...",
"name": "Name",
"tab_targets": "Targets",
"tab_tools": "Tools",
"avg_latency": "Avg Latency",
"type": "Type",
"latency": "Latency",
"check_history": "Check History",
"name_host_required": "Name and host are required",
"uptime": "Uptime",
"response_time": "Response Time",
"avg_response": "Average Response",
"charts": "Charts",
"realtime": "Realtime",
"response_time_ms": "Response Time (ms)",
"uptime_percent": "Uptime %",
"last_24h": "Last 24 hours",
"last_7d": "Last 7 days",
"last_30d": "Last 30 days"
},
"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",
"policy_desc": "Policy Description",
"status": "Status",
"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",
"total_policies": "Total Policies",
"active_policies": "Active Policies",
"violations": "Violations",
"blocked": "Blocked",
"tab_policies": "Policies",
"tab_events": "Events",
"search_policies": "Search policies...",
"create_policy": "Create Policy",
"policy_type": "Policy Type",
"scope": "Scope",
"events_count": "Events",
"search_events": "Search events...",
"event_time": "Event Time",
"device": "Device",
"policy": "Policy",
"detail": "Detail",
"scope_help": "Comma-separated device IDs, or leave empty for all",
"scope_all": "All Devices",
"active": "Active",
"type_file_type": "File Type",
"type_usb": "USB",
"type_clipboard": "Clipboard",
"type_screen_share": "Screen Share",
"type_file_transfer": "File Transfer"
},
"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",
"tab_generate": "Generate Report",
"tab_saved": "Saved Reports",
"type_devices_desc": "Overview of all devices, platforms and statuses",
"type_activity_desc": "Application usage and idle time summary",
"type_security_desc": "Ban actions, DLP events and audit logs",
"type_tickets_desc": "Ticket statistics and SLA performance",
"type_network_desc": "Network monitoring targets and uptime data",
"type_inventory_desc": "Hardware and software inventory summary",
"type_alerts_desc": "Alert rules and triggered alert history",
"report_name": "Report Name",
"format": "Format",
"save": "Save Report",
"preview": "Preview",
"download": "Download",
"delete_saved": "Delete Report",
"raw_json": "Raw JSON"
},
"tenants": {
"title": "Tenants",
"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",
"total_tenants": "Total Tenants",
"active_tenants": "Active Tenants",
"search": "Search tenants...",
"create_tenant": "Create Tenant",
"detail": "Tenant Detail",
"contact": "Contact",
"enabled": "Enabled",
"disabled": "Disabled",
"max": "max",
"info": "Tenant Info",
"status": "Status"
},
"registrations": {
"title": "Device Enrollment Requests",
"subtitle": "Review pending device enrollment and registration approval requests",
"search_placeholder": "Search by device ID, hostname or IP...",
"no_registrations": "No enrollment 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",
"enrollment_title": "Device Enrollment",
"enrollment_subtitle": "Pending enrollment requests from BetterDesk desktop clients",
"enrollment_empty": "No pending enrollment requests",
"enrollment_approve": "Approve",
"enrollment_reject": "Reject",
"enrollment_display_name": "Display Name",
"enrollment_display_name_placeholder": "Enter a name for this device...",
"enrollment_sync_mode": "Sync Mode",
"enrollment_sync_silent": "Silent — minimal telemetry",
"enrollment_sync_standard": "Standard — balanced sync",
"enrollment_sync_turbo": "Turbo — aggressive sync",
"enrollment_approved_success": "Device enrollment approved",
"enrollment_rejected_success": "Device enrollment rejected",
"approve_title": "Approve Device",
"field_name": "Device Name",
"field_name_placeholder": "Enter a name for this device...",
"field_sync_mode": "Sync Mode",
"sync_standard": "Standard — balanced sync",
"sync_silent": "Silent — minimal telemetry",
"sync_turbo": "Turbo — aggressive sync",
"field_tags": "Tags",
"field_tags_placeholder": "Comma-separated tags (e.g. office, laptop)...",
"field_tags_existing": "Existing tags",
"field_tag_add_placeholder": "Add a new tag...",
"field_tag_add_btn": "Add",
"field_groups": "Device groups",
"field_folder": "Folder",
"field_folder_none": "No folder",
"reject_ban_option": "Ban this device",
"reject_ban_hint": "The device will be blocked and cannot send new registration requests.",
"banner_open_mode": "Enrollment is open — new RustDesk clients register without operator approval. Set Managed mode in Settings to use this queue.",
"banner_locked_mode": "Enrollment is locked — only token-bound devices can register. Managed mode is required for operator approval of unknown clients.",
"enrollment_settings_link": "Enrollment settings"
},
"backup": {
"title": "Backup",
"desc": "Download a full disaster-recovery backup of your console — database, server identity keys, environment file, branding uploads and Go server data. The archive (.tar.gz) can be restored on a fresh machine to bring the entire server back online.",
"restore_title": "Restore",
"restore_desc": "Upload a previously downloaded backup archive (.tar.gz) or a legacy JSON config snapshot. Select which components to restore below.",
"stat_users": "Users",
"stat_settings": "Settings",
"stat_folders": "Folders",
"stat_groups": "Groups",
"stat_strategies": "Strategies",
"stat_backend": "Backend",
"stat_database": "Database engine",
"stat_keys": "Server keys included",
"stat_env": "Environment file",
"stat_uploads": "Branding files",
"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 components will be overwritten.",
"restore_success": "Backup restored successfully. Some changes may require a page reload.",
"restart_required": "Some restored components (keys / .env / Go database) require a service restart to take effect.",
"restored": "Restored",
"skipped": "Skipped",
"backup_date": "Backup date",
"security_warning": "This backup contains secrets (server keys, environment file, password hashes and 2FA secrets). Store it securely and never share it.",
"restore_warning": "Restoring secrets, the environment file or the Go server database overwrites server identity and requires a service restart afterwards.",
"opt_database": "Database (all tables)",
"opt_database_hint": "Re-imports all console data. Applied live, no restart needed.",
"opt_uploads": "Branding files",
"opt_uploads_hint": "Logos and uploaded images.",
"opt_secrets": "Server keys & secrets",
"opt_secrets_warning": "Overwrites the Ed25519 server identity, API key and session secret. Requires a service restart.",
"opt_env": "Environment file (.env)",
"opt_env_warning": "Overwrites SESSION_SECRET, API key, database DSN, ports and TLS settings. Requires a service restart.",
"opt_godb": "Go server database",
"opt_godb_warning": "Overwrites the Go server SQLite database (SQLite backend only). Requires a service restart.",
"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"
},
"cdap": {
"device_detail": "CDAP Device",
"loading": "Loading...",
"loading_widgets": "Loading device widgets...",
"load_error": "Failed to load device data",
"connected": "Connected",
"disconnected": "Disconnected",
"device_offline_msg": "Device is currently offline. Widget values may be stale.",
"no_widgets": "No widgets available",
"no_widgets_desc": "This device has not registered a CDAP manifest with widget definitions.",
"command_log": "Command Log",
"clear_log": "Clear log",
"confirm_command": "Confirm Command",
"select_option": "Select",
"cdap_status": "CDAP Status",
"cdap_enabled": "CDAP Enabled",
"cdap_disabled": "CDAP Disabled",
"cdap_devices": "CDAP Devices",
"cdap_connections": "Active Connections",
"send_command": "Send Command",
"command_sent": "Command sent successfully",
"command_failed": "Failed to send command",
"devices_title": "CDAP Devices",
"devices_subtitle": "Connected devices via Custom Device Application Protocol",
"stat_connected": "Connected",
"stat_port": "Port",
"search_devices": "Search devices...",
"no_devices": "No devices connected",
"no_devices_desc": "No CDAP devices are currently connected. Devices will appear here once they connect to the gateway.",
"gateway_disabled": "CDAP Gateway Disabled",
"gateway_disabled_desc": "Enable the CDAP gateway by setting CDAP_ENABLED=true in the server configuration.",
"gateway_active": "Active",
"toggle_enable": "Enable CDAP",
"toggle_disable": "Disable CDAP",
"enabled_restart": "CDAP enabled. Server restart required to apply changes.",
"disabled_restart": "CDAP disabled. Server restart required to apply changes.",
"widgets": "widgets",
"type_all": "All",
"type_iot": "IoT",
"type_scada": "SCADA",
"type_os_agent": "OS Agent",
"type_network": "Network",
"type_camera": "Camera",
"type_custom": "Custom",
"active_alerts": "Active Alerts",
"alert_fired": "Alert fired",
"alert_cleared": "Alert cleared",
"no_alerts": "No active alerts",
"connect_terminal": "Connect Terminal",
"table_search": "Search...",
"just_now": "Just now",
"terminal_connecting": "Connecting to device...",
"terminal_disconnected": "Disconnected",
"terminal_error": "Terminal connection failed",
"linked_devices": "Linked Devices",
"link_device": "Link Device",
"unlink_device": "Unlink",
"no_linked_devices": "No linked devices",
"unlink_confirm": "Are you sure you want to unlink this device?",
"link_prompt": "Enter the Peer ID to link to this device:",
"connect_desktop": "Connect Desktop",
"connect_video": "Connect Stream",
"connect_files": "Browse Files",
"connect_audio": "Connect Audio",
"upload_file": "Upload",
"desktop_connecting": "Connecting...",
"video_connecting": "Connecting...",
"files_connecting": "Connecting...",
"audio_connecting": "Connecting...",
"audio_streaming": "Streaming",
"clipboard_in": "Clipboard received",
"clipboard_out": "Clipboard sent",
"monitor_select": "Select Monitor",
"keyframe_request": "Request Keyframe",
"quality_auto": "Auto Quality"
},
"notifications": {
"title": "Notifications",
"empty": "No new notifications",
"mark_all_read": "Mark all read",
"see_all": "See all help requests",
"help_request": "Help request",
"just_now": "just now"
},
"desktop": {
"switch_mode": "Desktop Mode",
"console_mode": "Console Mode",
"loading": "Loading...",
"minimize": "Minimize",
"maximize": "Maximize",
"restore": "Restore",
"close": "Close",
"widgets_mode": "Widgets",
"windows_mode": "Windows",
"wallpaper": "Wallpaper",
"add_widget": "Add Widget",
"remove_widget": "Remove Widget",
"pop_out_widget": "Pop Out",
"pop_in_widget": "Pop In",
"configure": "Configure",
"search_widgets": "Search widgets...",
"cat_monitoring": "Monitoring",
"cat_devices": "Devices",
"cat_tools": "Tools",
"cat_general": "General",
"notes_placeholder": "Write notes here...",
"search_placeholder": "Search devices, pages, settings...",
"search_pages": "Pages",
"search_devices": "Devices",
"search_no_results": "No results",
"exit_desktop": "Exit Desktop Mode",
"refresh": "Refresh",
"fullscreen": "Fullscreen",
"help": "Help",
"widget_clock": "Clock",
"widget_device_status": "Device Status",
"widget_server_health": "Server Info",
"widget_system_stats": "Device Gauges",
"widget_device_list": "Device List",
"widget_quick_actions": "Quick Actions",
"widget_recent_activity": "Recent Activity",
"widget_notes": "Notes",
"widget_network_monitor": "Network Monitor",
"widget_tickets_summary": "Tickets",
"widget_iframe": "Web Embed",
"widget_cdap_devices": "CDAP Devices",
"widget_uptime": "Uptime",
"widget_port_status": "Port Status",
"widget_device_grid": "Device Grid",
"widget_multi_gauge": "Server Gauges",
"widget_weekly_chart": "Weekly Activity",
"widget_quick_controls": "Quick Controls",
"widget_bandwidth": "Bandwidth",
"widget_connection_stats": "Connection Stats",
"widget_weather": "Weather",
"widget_world_clock": "World Clock",
"widget_bookmarks": "Bookmarks",
"widget_user_sessions": "User Sessions",
"widget_alert_feed": "Alert Feed",
"label_online": "Online",
"label_offline": "Offline",
"label_total": "Total",
"label_blocked": "Blocked",
"label_banned": "Banned",
"label_active": "Active",
"label_service": "Service",
"label_port": "Port",
"label_uptime_prefix": "Uptime:",
"label_uptime": "Uptime",
"label_no_devices": "No devices",
"label_no_activity": "No activity",
"label_no_targets": "No targets",
"label_unavailable": "Unavailable",
"label_open": "Open",
"label_in_progress": "In Progress",
"label_resolved": "Resolved",
"label_set_url": "Set URL in config",
"label_server_uptime": "Server Uptime",
"label_merged_info": "Merged into Server Info widget",
"label_with_notes": "With Notes",
"label_metric": "Metric",
"label_count": "Count",
"label_total_devices": "Total Devices",
"label_throughput": "Throughput",
"label_active_relays": "Active Relays",
"label_total_relayed": "Total Relayed",
"label_total_bytes": "Total Bytes",
"label_filter_devices": "Filter devices...",
"label_all": "All",
"label_ban": "Ban",
"label_unban": "Unban",
"label_connect": "Connect",
"label_no_cdap_devices": "No CDAP devices",
"action_add_widget": "Add Widget",
"label_merged_server_info": "Merged into Server Info widget",
"wp_images": "Images",
"wp_colors": "Solid Colors",
"wp_custom_color": "Custom color",
"wp_fit_style": "Style",
"wp_fill": "Fill",
"wp_fit": "Fit",
"wp_stretch": "Stretch",
"wp_center": "Center",
"wp_unavailable": "Wallpaper images are not installed on this server.",
"wp_download_hint": "Place PNG images in the public/wallpapers/ directory to enable wallpaper selection.",
"widget_calendar": "Calendar",
"widget_process_monitor": "Process Monitor",
"widget_disk_usage": "Disk Usage",
"widget_log_viewer": "Log Viewer",
"widget_speed_test": "Speed Test",
"widget_database_stats": "Database Stats",
"widget_docker_containers": "Docker Containers",
"widget_shell_command": "Shell Command",
"widget_device_map": "Device Map",
"widget_remote_connect": "Remote Connect",
"label_no_online": "No online devices",
"label_no_events": "No events today",
"label_event_title": "Event title:",
"label_no_data": "No data available",
"label_download_speed": "Download Speed",
"label_latency": "Latency",
"label_server": "Server",
"label_run_test": "Run Test",
"label_testing": "Testing...",
"label_table": "Table",
"label_rows": "Rows",
"label_last_backup": "Last Backup",
"label_no_containers": "No containers",
"label_docker_unavailable": "Docker not available",
"label_no_command": "No command configured",
"label_no_output": "No output yet",
"label_run": "Run",
"label_presets": "Presets",
"label_save_preset": "Save Preset",
"label_load_preset": "Load Preset",
"label_preset_name": "Preset name:",
"label_preset_monitoring": "Monitoring",
"label_preset_helpdesk": "Helpdesk",
"label_preset_minimal": "Minimal",
"label_preset_developer": "Developer",
"label_snap_layout": "Snap Layout",
"label_auto_arrange": "Auto Arrange",
"label_zone_layout": "Zone Layout",
"label_2col_equal": "2 Columns (Equal)",
"label_2col_wide": "2 Columns (60/40)",
"label_3col": "3 Columns",
"label_2x2_grid": "2×2 Grid",
"label_1_2": "1 + 2",
"label_1_3": "1 + 3",
"widget_group": "Widget Group",
"ungroup_widgets": "Ungroup Widgets",
"group_widgets": "Group Selected Widgets",
"snap_layouts": "Snap Layouts",
"snap_left": "Snap Left",
"snap_right": "Snap Right",
"snap_top_left": "Snap Top-Left",
"snap_top_right": "Snap Top-Right",
"snap_bottom_left": "Snap Bottom-Left",
"snap_bottom_right": "Snap Bottom-Right",
"aero_shake": "Shake to Minimize Others",
"zone_resize": "Drag border to resize zones",
"zone_borders": "Draggable Zone Borders",
"app_drawer": "Applications",
"search_apps": "Search apps...",
"edit_shortcuts": "Edit shortcuts",
"widgets": "Widgets",
"theme": "Theme"
},
"desktop_login": {
"click_to_sign_in": "Click anywhere or press a key to sign in",
"username_placeholder": "Username",
"password_placeholder": "Password",
"sign_in": "Sign in",
"verify": "Verify",
"totp_title": "Two-Factor Authentication",
"totp_subtitle": "Enter the 6-digit code from your authenticator app",
"back_to_login": "Back to login",
"fill_all_fields": "Please fill in all fields",
"invalid_credentials": "Invalid username or password",
"invalid_code": "Invalid verification code",
"enter_6_digits": "Enter all 6 digits",
"network_error": "Network error — check your connection",
"session_expired": "Session expired. Please sign in again."
},
"permissions": {
"title": "Permissions",
"subtitle": "Manage role-based permissions and custom overrides",
"info_title": "How permissions work",
"info_desc": "Each role has default permissions. You can add or remove individual permissions per role by toggling them below. Custom overrides are highlighted and can be reverted to defaults at any time.",
"select_role": "Select role",
"select_role_placeholder": "Choose a role...",
"reset_overrides": "Reset all overrides",
"granted": "Granted",
"overrides": "Overrides",
"level": "Level",
"super_admin_tag": "Full access",
"server_level_tag": "Server-level",
"custom": "Custom",
"default": "Default",
"revert": "Revert to default",
"saved": "Permission updated",
"reverted": "Reverted to default",
"all_reverted": "All overrides reverted",
"confirm_reset": "Reset all custom overrides for this role to defaults?",
"empty_title": "Select a role",
"empty_desc": "Choose a role from the dropdown above to view and manage its permissions.",
"locked_title": "Super Admin",
"locked_desc": "Super Admin has all permissions by default and cannot be customized.",
"cat_device": "Devices",
"cat_user": "Users",
"cat_server": "Server",
"cat_org": "Organizations",
"cat_audit": "Audit & Monitoring",
"cat_cdap": "CDAP",
"cat_enrollment": "Enrollment",
"cat_chat": "Chat",
"cat_branding": "Branding",
"perm_device_view": "View devices",
"perm_device_connect": "Connect to devices",
"perm_device_edit": "Edit devices",
"perm_device_delete": "Delete devices",
"perm_device_ban": "Ban / unban devices",
"perm_device_change_id": "Change device ID",
"perm_user_view": "View users",
"perm_user_create": "Create users",
"perm_user_edit": "Edit users",
"perm_user_delete": "Delete users",
"perm_server_config": "Server configuration",
"perm_server_keys": "Manage API keys",
"perm_server_attestation": "Server performance attestation",
"perm_org_create": "Create organizations",
"perm_org_edit": "Edit organizations",
"perm_org_delete": "Delete organizations",
"perm_org_manage_users": "Manage organization users",
"perm_org_manage_devices": "Manage organization devices",
"perm_audit_view": "View audit logs",
"perm_metrics_view": "View metrics",
"perm_blocklist_edit": "Edit blocklist",
"perm_cdap_view": "View CDAP devices",
"perm_cdap_command": "Send CDAP commands",
"perm_cdap_terminal": "CDAP terminal access",
"perm_cdap_files": "CDAP file access",
"perm_enrollment_manage": "Manage enrollment",
"perm_enrollment_approve": "Approve enrollment",
"perm_chat_access": "Chat access",
"perm_branding_edit": "Edit branding"
},
"tokens": {
"title": "Device Tokens",
"subtitle": "Manage enrollment tokens for automated device provisioning",
"enrollment_mode": "Enrollment Mode",
"mode_open": "Open",
"mode_open_desc": "Any device can register without a token",
"mode_managed": "Managed",
"mode_managed_desc": "Devices need a valid token or operator approval to register",
"mode_locked": "Locked",
"mode_locked_desc": "Only devices with a valid token can register",
"total": "Total Tokens",
"active": "Active",
"used": "Used",
"revoked": "Revoked",
"search_placeholder": "Search tokens...",
"status_pending": "Pending",
"status_active": "Active",
"status_used": "Used",
"status_revoked": "Revoked",
"status_expired": "Expired",
"bulk_generate": "Bulk Generate",
"create": "Create Token",
"edit": "Edit Token",
"token": "Token Prefix",
"name": "Name",
"status": "Status",
"uses": "Uses",
"bound_peer": "Bound Peer",
"expires": "Expires",
"created": "Created",
"actions": "Actions",
"name_placeholder": "e.g. Office PC batch",
"max_uses": "Max Uses",
"max_uses_hint": "0 = unlimited",
"expires_in": "Expires In",
"no_expiration": "No expiration",
"expires_1h": "1 hour",
"expires_24h": "24 hours",
"expires_7d": "7 days",
"expires_30d": "30 days",
"note": "Note",
"note_placeholder": "Optional note about this token...",
"count": "Count",
"count_range": "Number of tokens to generate (1-100)",
"name_prefix": "Name Prefix",
"generate": "Generate",
"token_created": "Token Created",
"tokens_generated": "Tokens Generated",
"copy_warning": "Copy the token now. It will not be shown again.",
"copy_token": "Copy Token",
"copied": "Copied!",
"revoke": "Revoke",
"revoke_confirm": "Are you sure you want to revoke this token? Devices already registered with it will not be affected.",
"revoked_success": "Token revoked successfully",
"no_tokens": "No tokens found",
"expired": "Expired",
"never": "Never",
"save": "Save",
"cancel": "Cancel",
"unlimited": "Unlimited"
},
"tutorial": {
"next": "Next",
"prev": "Previous",
"skip": "Skip",
"finish": "Finish",
"close": "Close",
"step_of": "{current} of {total}",
"console_sidebar_title": "Navigation Sidebar",
"console_sidebar_text": "Access all modules from here. Click any icon to navigate to that section. The sidebar adapts to your screen size.",
"console_expand_title": "Expand Sidebar",
"console_expand_text": "Click here to expand the sidebar and see full labels for all navigation items. Click again to collapse.",
"console_search_title": "Quick Search",
"console_search_text": "Search for devices, settings, or actions quickly. Press Ctrl+K for keyboard shortcut.",
"console_dashboard_title": "Dashboard",
"console_dashboard_text": "Your central hub showing server status, online devices, and quick actions. Keep an eye on important metrics at a glance.",
"console_devices_title": "Device Management",
"console_devices_text": "View, search, and manage all connected devices. Filter by status, assign tags, and configure individual device settings.",
"console_settings_title": "Settings",
"console_settings_text": "Configure server behavior, security options, branding, and user management. Customize BetterDesk to fit your needs.",
"console_desktop_title": "Desktop Mode",
"console_desktop_text": "Switch to desktop mode for a windowed workspace with widgets. Perfect for multi-tasking and monitoring dashboards.",
"console_complete_title": "You're Ready!",
"console_complete_text": "Explore the sidebar categories to discover all features. Click the Help icon anytime to restart this guide.",
"desktop_topbar_title": "Top Bar",
"desktop_topbar_text": "The top bar shows the clock, quick controls, and access to the app drawer. Click the grid icon to browse all apps.",
"desktop_drawer_title": "App Drawer",
"desktop_drawer_text": "Open the app drawer to search and launch any console function as a floating window. Apps are organized by category.",
"desktop_widgets_title": "Widget Dashboard",
"desktop_widgets_text": "Your customizable workspace. Widgets display live information and provide quick access to features. Drag to rearrange.",
"desktop_add_widget_title": "Add Widgets",
"desktop_add_widget_text": "Click here to browse available widgets. Choose from monitoring displays, device lists, notes, and more.",
"desktop_taskbar_title": "Taskbar",
"desktop_taskbar_text": "Open apps appear here. Click to focus or minimize windows. Hover icons to see app labels.",
"desktop_snap_title": "Snap Layouts",
"desktop_snap_text": "Drag windows to screen edges to snap them into position, or hover the maximize button for layout presets. Try Aero Shake!",
"desktop_windows_title": "App Windows",
"desktop_windows_text": "Apps open in draggable, resizable windows. Minimize, maximize, or close from the title bar. Windows layer above widgets.",
"desktop_search_title": "Quick Search",
"desktop_search_text": "Search across devices, pages, and settings. Press Ctrl+K anywhere to open search instantly.",
"desktop_complete_title": "Desktop Mode Ready!",
"desktop_complete_text": "Try opening apps from the drawer and arranging windows side-by-side. Use widget presets for quick dashboard layouts.",
"devices_folders_title": "Device Folders",
"devices_folders_text": "Organize devices into folders. Click a folder to filter the list. Right-click to rename or delete.",
"devices_search_title": "Search & Filter",
"devices_search_text": "Search by ID, hostname, or platform. Use the status pills to show only online, offline, or all devices.",
"devices_table_title": "Device List",
"devices_table_text": "Click any device row for details. Use the kebab menu on the right for quick actions like connect, edit tags, or delete.",
"devices_complete_title": "Device Management Ready!",
"devices_complete_text": "Drag devices between folders to organize them. Double-click a device to open its detail panel.",
"settings_tabs_title": "Settings Categories",
"settings_tabs_text": "Navigate between General, Security, Appearance, and other configuration sections.",
"settings_content_title": "Configuration",
"settings_content_text": "Each section contains specific server and console settings. Changes are saved when you click Save.",
"settings_complete_title": "Settings Overview",
"settings_complete_text": "Check Security settings for 2FA, API keys and user management. Visit Appearance to customize the console look.",
"help": "Help & Tutorials",
"tour_console": "Console Tour",
"tour_desktop": "Desktop Mode Tour",
"tour_devices": "Devices Tour",
"tour_remote": "Remote Session Tour",
"tour_organization": "Organization Setup",
"tour_cdap": "CDAP Overview",
"tour_chat": "Chat Basics",
"tour_settings": "Settings Tour",
"reset_all": "Reset All Tutorials",
"disable_tutorials": "Disable Tutorials",
"enable_tutorials": "Enable Tutorials",
"remote_toolbar_title": "Remote Toolbar",
"remote_toolbar_text": "Access display controls, clipboard sync, special keys, and quality settings from the toolbar. Toggle fullscreen with F11.",
"remote_canvas_title": "Remote Display",
"remote_canvas_text": "This is the remote screen. Click inside to start controlling the remote device. Mouse and keyboard input are forwarded automatically.",
"remote_clipboard_title": "Clipboard Sync",
"remote_clipboard_text": "Copy and paste text between your computer and the remote device. Use Ctrl+C / Ctrl+V as normal while focused on the remote display.",
"remote_complete_title": "Remote Session Ready!",
"remote_complete_text": "Use the toolbar buttons for special keys (Ctrl+Alt+Del, PrintScreen) and monitor switching. Press Escape or click Disconnect to end the session.",
"org_overview_title": "Organizations",
"org_overview_text": "Organizations let you group users, devices, and policies. Each organization has its own admin, operators, and settings.",
"org_create_title": "Create Organization",
"org_create_text": "Click here to create a new organization. Provide a name, slug, and optional description. You will be the owner of the new organization.",
"org_members_title": "Manage Members",
"org_members_text": "Invite users by email, assign roles (admin, operator, user), and manage access. Members can see devices assigned to their organization.",
"org_devices_title": "Assign Devices",
"org_devices_text": "Add devices to the organization. Devices assigned here will inherit the organization's policies and be visible to its members.",
"org_policies_title": "Organization Policies",
"org_policies_text": "Set security policies like password requirements, session timeouts, 2FA enforcement, and device enrollment rules for the organization.",
"org_complete_title": "Organization Setup Complete!",
"org_complete_text": "Invite your team and assign devices to start using organization-scoped management. Policies apply automatically to all members.",
"cdap_devices_title": "CDAP Devices",
"cdap_devices_text": "View all connected CDAP devices — IoT sensors, PLCs, bridges, and custom agents. Green indicators show live connections.",
"cdap_widgets_title": "Widget Dashboard",
"cdap_widgets_text": "Widgets display real-time data from devices. Gauges, toggles, LEDs, charts — each widget type visualizes a different kind of data.",
"cdap_commands_title": "Send Commands",
"cdap_commands_text": "Interact with devices by sending commands. Some commands need confirmation. The command log keeps a history of all sent commands.",
"cdap_terminal_title": "Device Terminal",
"cdap_terminal_text": "Open a terminal session to CDAP agents for advanced diagnostics or manual configuration. Type commands directly.",
"cdap_complete_title": "CDAP Overview Complete!",
"cdap_complete_text": "Explore device widgets, send commands, and use the terminal or file browser for deeper management. CDAP agents report metrics automatically.",
"chat_contacts_title": "Contacts & Groups",
"chat_contacts_text": "See your contacts and chat groups. Click any contact to open a conversation. Green dots indicate online users.",
"chat_send_title": "Send Messages",
"chat_send_text": "Type your message and press Enter to send. Messages are end-to-end encrypted when both parties support E2E.",
"chat_file_title": "Share Files",
"chat_file_text": "Click the attachment icon to share files. Files are encrypted and can be up to 50 MB.",
"chat_complete_title": "Chat Ready!",
"chat_complete_text": "Chat with operators and end users in real time. Create groups for team communication. All messages support read receipts."
},
"help_request": {
"title": "Help Requests",
"subtitle": "Manage incoming help requests from desktop clients",
"new_request": "New Help Request",
"device": "Device",
"hostname": "Hostname",
"message": "Message",
"status": "Status",
"pending": "Pending",
"accepted": "Accepted",
"resolved": "Resolved",
"accept": "Accept",
"resolve": "Resolve",
"no_requests": "No help requests",
"notification": "Help request received from",
"stats_total": "Total",
"filter_all": "All"
},
"organizations": {
"title": "Organizations",
"create": "Create Organization",
"edit": "Edit Organization",
"detail": "Organization Details",
"name": "Name",
"slug": "Slug (URL-safe)",
"logo_url": "Logo URL",
"users": "Users",
"devices": "Devices",
"invitations": "Invitations",
"settings": "Settings",
"add_user": "Add User",
"assign_device": "Assign Device",
"create_invitation": "Create Invitation",
"delete_confirm": "Delete this organization? This will remove all associated users, devices, and settings.",
"no_orgs": "No organizations yet",
"no_orgs_hint": "Create your first organization to start managing devices and users.",
"connection_policy": "Connection Policy",
"allow_file_transfer": "Allow File Transfer",
"allow_clipboard": "Allow Clipboard",
"max_session_duration": "Max Session Duration (min)",
"role_owner": "Owner (Org Admin)",
"role_admin": "Administrator",
"role_operator": "Operator",
"role_user": "Member",
"username": "Username",
"password": "Password",
"display_name": "Display Name",
"email": "Email",
"role": "Role",
"last_login": "Last Login",
"actions": "Actions",
"device_id": "Device ID",
"department": "Department",
"building": "Building",
"location": "Location",
"assigned_user": "Assigned User",
"token": "Token",
"expires": "Expires",
"used": "Used",
"no_users": "No users in this organization.",
"no_devices": "No devices assigned to this organization.",
"no_invitations": "No invitations.",
"user_added": "User added",
"user_removed": "User removed",
"user_updated": "User role updated",
"device_assigned": "Device assigned",
"device_unassigned": "Device unassigned",
"invitation_created": "Invitation created",
"settings_saved": "Settings saved",
"org_deleted": "Organization deleted",
"confirm_remove_user": "Remove this user from the organization?",
"confirm_unassign_device": "Unassign this device from the organization?",
"confirm_delete_org": "Delete this organization and all associated data?",
"edit_role": "Edit Role",
"raw_settings": "Raw Settings",
"key": "Key",
"value": "Value",
"save": "Save Settings",
"policy_unattended": "Unattended (instant)",
"policy_attended": "Attended (with confirmation)",
"policy_ask": "Always ask",
"expires_hours": "Expiration (hours)",
"loading_failed": "Failed to load organization data",
"name_slug_required": "Name and slug are required",
"org_created": "Organization created",
"org_updated": "Organization updated",
"create_new_user": "Create New",
"add_existing_user": "Add Existing",
"none_available": "none",
"select_user": "Select user",
"org_role": "Organization Role",
"link_user_hint": "Selected user will be linked to this organization using their server account credentials.",
"no_available_users": "All server users are already linked to this organization.",
"user_linked": "User linked to organization",
"device_groups_tab": "Device Groups",
"device_groups_intro": "Device groups linked to this organization define which machines members can reach in the RustDesk client. Configure members and access on the Devices page.",
"manage_in_devices": "Open Devices → Groups",
"no_org_device_groups": "No device groups are linked to this organization yet.",
"create_org_device_group": "Create device group",
"org_device_group_created": "Device group created",
"org_user_groups_title": "User groups",
"org_user_groups_intro": "User groups linked to this organization can be granted access to the device groups above (Devices → Groups → Allowed user groups).",
"no_org_user_groups": "No user groups linked to this organization.",
"group_name": "Name",
"group_type": "Type",
"group_members": "Devices",
"group_type_manual": "Manual",
"group_type_tag": "Tag",
"group_allowed_user_groups": "Allowed user groups",
"group_devices_suffix": "devices",
"group_name_required": "Group name is required",
"org_team_id": "Organization team ID",
"link_team_id_hint": "The group will be linked to this organization automatically (team ID = organization ID)."
},
"chat": {
"e2e_enabled": "End-to-end encrypted",
"e2e_establishing": "Establishing secure channel...",
"e2e_established": "Secure channel established",
"e2e_unsupported": "E2E encryption not supported in this browser",
"typing_indicator": "typing...",
"read_receipt": "Read",
"delivered": "Delivered",
"file_share": "File",
"file_too_large": "File too large (max 50MB)",
"file_encrypted": "Encrypted file transfer",
"presence_online": "Online",
"presence_away": "Away",
"presence_busy": "Busy",
"presence_offline": "Offline",
"key_rotation": "Security keys rotated",
"new_message": "New message",
"title": "Chat",
"contacts": "Contacts",
"groups": "Groups",
"no_contacts": "No contacts yet",
"no_groups": "No groups yet",
"no_messages": "No messages yet",
"no_results": "No results found",
"select_conversation": "Select a conversation to start chatting",
"select_conversation_hint": "Select a conversation to view messages",
"type_message": "Type a message...",
"send": "Send",
"attach_file": "Attach file",
"emoji": "Emoji",
"info": "Info",
"search_messages": "Search messages",
"create_group": "Create group",
"group_name": "Group name",
"group_name_placeholder": "Enter group name",
"group_members": "Members",
"cancel": "Cancel",
"create": "Create",
"members": "members",
"today": "Today",
"yesterday": "Yesterday",
"react": "React",
"my_presence": "My status",
"search_placeholder": "Search contacts & messages"
},
"toast": {
"device_connected": "Device connected",
"device_disconnected": "Device disconnected",
"session_started": "Remote session started",
"session_ended": "Remote session ended",
"file_upload_complete": "File upload complete",
"settings_saved": "Settings saved",
"error_generic": "An error occurred",
"connection_lost": "Connection lost",
"reconnecting": "Reconnecting..."
},
"theme": {
"dark": "Dark",
"light": "Light",
"auto": "System",
"title": "Theme"
},
"days": {
"mon": "Mon",
"tue": "Tue",
"wed": "Wed",
"thu": "Thu",
"fri": "Fri",
"sat": "Sat",
"sun": "Sun"
},
"toolkit": {
"title": "Toolkit",
"subtitle": "Admin utilities and diagnostic tools",
"cat_network": "Network",
"cat_crypto": "Crypto",
"cat_encoding": "Encoding",
"cat_system": "System",
"host": "Host",
"port": "Port",
"domain": "Domain",
"run": "Run",
"generate": "Generate",
"encode": "Encode",
"decode": "Decode",
"send": "Send",
"refresh": "Refresh",
"algorithm": "Algorithm",
"input_text": "Input Text",
"enter_text": "Enter text...",
"length": "Length",
"options": "Options",
"source": "Source",
"lines": "Lines",
"log_console": "Console",
"log_go": "Go Server",
"mac_address": "MAC Address",
"broadcast": "Broadcast",
"ping_title": "Ping",
"ping_desc": "Check host reachability and latency",
"tcp_title": "TCP Port Check",
"tcp_desc": "Test TCP port connectivity",
"ssl_title": "SSL Inspector",
"ssl_desc": "Inspect SSL/TLS certificate details",
"http_title": "HTTP Health Check",
"http_desc": "Verify HTTP endpoint status",
"dns_title": "DNS Lookup",
"dns_desc": "Resolve hostname to IP address",
"whois_title": "DNS Records",
"whois_desc": "Query A, AAAA, MX, TXT, NS records",
"speed_title": "Speed Test",
"speed_desc": "Measure download bandwidth",
"run_speed_test": "Run Speed Test",
"wol_title": "Wake-on-LAN",
"wol_desc": "Send magic packet to wake a device",
"wol_sent": "Magic packet sent",
"hash_title": "Hash Generator",
"hash_desc": "Generate cryptographic hashes",
"password_title": "Password Generator",
"password_desc": "Generate a secure random password",
"jwt_title": "JWT Decoder",
"jwt_desc": "Decode and inspect JSON Web Tokens",
"jwt_token": "JWT Token",
"base64_title": "Base64",
"base64_desc": "Encode or decode Base64 data",
"url_title": "URL Encoder",
"url_desc": "Encode or decode URL components",
"processes_title": "Process List",
"processes_desc": "View running system processes",
"disk_title": "Disk Usage",
"disk_desc": "View disk partition usage",
"db_title": "Database Stats",
"db_desc": "View database table statistics",
"docker_title": "Docker Containers",
"docker_desc": "View running Docker containers",
"logs_title": "Log Viewer",
"logs_desc": "View recent log output",
"ip_address": "IP",
"latency": "Latency",
"ttl": "TTL",
"status": "Status",
"resolved": "Resolved",
"subject": "Subject",
"issuer": "Issuer",
"valid_from": "Valid From",
"valid_to": "Valid To",
"days_left": "Days Left",
"days": "days",
"protocol": "Protocol",
"cipher": "Cipher",
"alt_names": "SANs",
"chain": "Chain",
"record_type": "Type",
"record_value": "Value",
"hash_value": "Hash",
"entropy": "Entropy",
"very_strong": "Very Strong",
"strong": "Strong",
"weak": "Weak",
"expiry": "Expiry",
"expired": "Expired",
"valid": "Valid",
"process_name": "Name",
"db_type": "Type",
"db_size": "Size",
"table_name": "Table",
"row_count": "Rows",
"no_data": "No data available",
"no_docker": "No Docker containers found or Docker not available",
"no_logs": "No log lines available"
},
"policies": {
"title": "Organization Policies",
"subtitle": "Manage security, connection, and feature policies for your organizations",
"select_org": "Organization",
"select_org_placeholder": "Select an organization...",
"select_org_first": "Select an organization to view policy audit log.",
"configured": "Configured",
"connection_title": "Connection Policy",
"connection_desc": "Control how remote sessions are established",
"connection_mode": "Connection Mode",
"mode_attended": "Attended (requires user approval)",
"mode_unattended": "Unattended (always allow)",
"mode_ask": "Always Ask",
"max_session": "Max Session Duration (minutes)",
"idle_lock": "Idle Lock Timeout (minutes)",
"wallpaper_policy": "Wallpaper During Session",
"wallpaper_show": "Show",
"wallpaper_hide_session": "Hide during session",
"wallpaper_hide_always": "Always hide",
"features_title": "Feature Policy",
"features_desc": "Enable or disable specific features for devices",
"allow_file_transfer": "Allow File Transfer",
"allow_clipboard": "Allow Clipboard Sync",
"allow_audio": "Allow Audio Streaming",
"allow_recording": "Allow Session Recording",
"security_title": "Security Policy",
"security_desc": "Enforce security requirements for organization devices",
"require_2fa": "Require 2FA for Unattended Access",
"password_min_length": "Minimum Password Length",
"password_require_special": "Require Special Characters",
"password_max_age": "Password Max Age (days, 0=never)",
"allowed_operators": "Allowed Operator Roles (comma-separated)",
"network_title": "Network Policy",
"network_desc": "Control relay servers and direct connections",
"block_direct_p2p": "Block Direct P2P (force relay)",
"block_direct_p2p_hint": "Applies to devices in this organization. Global default is under Settings → Connection strategy.",
"allowed_relays": "Allowed Relay Servers (one per line)",
"ip_allowlist": "IP Allowlist (CIDR, one per line)",
"update_title": "Update Policy",
"update_desc": "Control automatic updates and update channels",
"auto_update": "Enable Auto-Update",
"update_channel": "Update Channel",
"audit_title": "Policy Changes",
"audit_desc": "Recent policy change history",
"no_audit": "No policy changes recorded.",
"save_success": "Policy saved successfully",
"save_failed": "Failed to save policy",
"load_failed": "Failed to load policies"
},
"attestation": {
"title": "Device Attestation",
"subtitle": "Monitor device identity verification and hardware fingerprints",
"verified": "Verified",
"pending": "Pending",
"failed": "Failed",
"device_list": "Device Attestation Records",
"device_list_desc": "Hardware fingerprints and identity verification status",
"col_device": "Device ID",
"col_hostname": "Hostname",
"col_fingerprint": "Fingerprint",
"col_status": "Status",
"col_last_check": "Last Check",
"col_actions": "Actions",
"no_records": "No attestation records found.",
"verify_success": "Device marked as verified",
"verify_failed": "Failed to verify device",
"revoke_success": "Device attestation revoked",
"revoke_failed": "Failed to revoke attestation"
},
"fleet": {
"title": "Fleet Management",
"tab_resources": "Resources",
"tab_tasks": "Tasks",
"tab_builder": "Workflow Builder",
"tab_compliance": "Compliance",
"res_title": "Resource Mapping",
"res_all_types": "All Types",
"res_type_printer": "Printer",
"res_type_network_drive": "Network Drive",
"res_type_dns": "DNS Server",
"res_type_proxy": "Proxy",
"res_type_vpn": "VPN",
"res_add": "Add Resource",
"res_name": "Resource Name",
"res_type": "Type",
"res_address": "Address / Path",
"res_target": "Target",
"res_scope": "Scope",
"res_scope_org": "Organization",
"res_scope_group": "Group",
"res_scope_device": "Device",
"res_scope_value": "Scope Value",
"res_status": "Status",
"res_active": "Active",
"res_inactive": "Inactive",
"res_no_data": "No resources found. Click 'Add Resource' to create one.",
"res_confirm_delete": "Are you sure you want to delete this resource?",
"task_title": "Task Scheduler",
"task_all_status": "All Status",
"task_status_pending": "Pending",
"task_status_running": "Running",
"task_status_success": "Success",
"task_status_failed": "Failed",
"task_search": "Search tasks…",
"task_create": "Create Task",
"task_name": "Task Name",
"task_type": "Type",
"task_type_script": "Script",
"task_type_install": "Install",
"task_type_update": "Update",
"task_type_restart": "Restart",
"task_type_deploy": "Deploy",
"task_type_scan": "Scan",
"task_targets": "Targets",
"task_targets_help": "Device IDs or group names, comma-separated",
"task_schedule": "Schedule",
"task_schedule_once": "Once",
"task_schedule_cron": "Cron",
"task_schedule_interval": "Interval",
"task_schedule_value": "Schedule Value",
"task_script": "Script / Command",
"task_retries": "Retries",
"task_timeout": "Timeout (s)",
"task_last_run": "Last Run",
"task_no_data": "No tasks found. Click 'Create Task' to get started.",
"task_confirm_delete": "Are you sure you want to delete this task?",
"task_output": "Task Output",
"task_retry": "Retry",
"builder_title": "Visual Workflow Builder",
"builder_select_workflow": "Select workflow…",
"builder_new": "New",
"builder_save": "Save",
"builder_export": "Export",
"builder_execute": "Execute",
"builder_dry_run": "Dry Run",
"builder_triggers": "Triggers",
"builder_conditions": "Conditions",
"builder_actions": "Actions",
"builder_results": "Results",
"builder_transforms": "Transforms",
"builder_properties": "Properties",
"builder_no_selection": "Select a node to edit its properties.",
"builder_node_trigger_manual": "Manual Trigger",
"builder_node_trigger_schedule": "Schedule",
"builder_node_trigger_event": "Event Trigger",
"builder_node_cond_os": "OS Check",
"builder_node_cond_threshold": "Threshold",
"builder_node_cond_time_window": "Time Window",
"builder_node_action_script": "Run Script",
"builder_node_action_install": "Install SW",
"builder_node_action_restart": "Restart Svc",
"builder_node_action_file_deploy": "Deploy File",
"builder_node_action_message": "Send Message",
"builder_node_result_log": "Log Output",
"builder_node_result_alert": "Send Alert",
"builder_node_result_chain": "Chain Workflow",
"builder_node_transform_parse": "Parse JSON",
"builder_node_transform_filter": "Filter",
"builder_node_transform_delay": "Delay",
"workflow_name": "Workflow name:",
"comp_title": "Software Compliance",
"comp_compliant": "Compliant",
"comp_warning": "Warning",
"comp_critical": "Critical",
"comp_score": "Avg. Score",
"comp_device": "Device",
"comp_hostname": "Hostname",
"comp_os": "OS",
"comp_score_col": "Score",
"comp_issues": "Issues",
"comp_last_scan": "Last Scan",
"comp_scan": "Scan",
"comp_scan_all": "Scan All",
"comp_remediate": "Remediate",
"comp_remediate_confirm": "Run auto-remediation on this device?",
"comp_no_data": "No compliance data available. Run a scan to get started.",
"save": "Save",
"cancel": "Cancel",
"close": "Close",
"edit": "Edit",
"delete": "Delete",
"actions": "Actions",
"all_orgs": "All Organizations",
"select_org_placeholder": "Select organization…",
"all_types": "All Types",
"type_printer": "Printer",
"type_network_drive": "Network Drive",
"type_dns": "DNS Server",
"type_vpn": "VPN",
"type_proxy": "Proxy",
"add_resource": "Add Resource",
"edit_resource": "Edit Resource",
"col_name": "Name",
"col_type": "Type",
"col_target": "Target",
"col_scope": "Scope",
"col_status": "Status",
"col_actions": "Actions",
"no_resources": "No resources found. Click 'Add Resource' to create one.",
"active": "Active",
"inactive": "Inactive",
"address": "Address / Path",
"scope_org": "Organization",
"scope_group": "Group",
"scope_device": "Device",
"scope_value": "Scope Value",
"scope_value_hint": "Organization name, group name, or device ID",
"confirm_delete": "Are you sure you want to delete this item?",
"all_statuses": "All Statuses",
"status_pending": "Pending",
"status_running": "Running",
"status_success": "Success",
"status_failed": "Failed",
"search_tasks": "Search tasks…",
"create_task": "Create Task",
"edit_task": "Edit Task",
"col_task_name": "Task Name",
"col_task_type": "Type",
"col_schedule": "Schedule",
"col_last_run": "Last Run",
"no_tasks": "No tasks found. Click 'Create Task' to get started.",
"task_type_file_deploy": "File Deploy",
"task_type_registry": "Registry",
"target_devices": "Target Devices",
"target_hint": "Device IDs or group names, comma-separated",
"schedule_immediate": "Immediate",
"schedule_once": "Once",
"schedule_cron": "Cron",
"cron_placeholder": "*/5 * * * *",
"script_content": "Script / Command",
"retry_count": "Retries",
"timeout_sec": "Timeout (s)",
"loading": "Loading",
"no_output": "No output available",
"error_loading": "Error loading data",
"select_workflow": "Select workflow…",
"new_workflow": "New",
"export": "Export",
"execute": "Execute",
"dry_run": "Dry Run",
"node_triggers": "Triggers",
"node_manual": "Manual Trigger",
"node_schedule": "Schedule",
"node_event": "Event Trigger",
"node_conditions": "Conditions",
"node_os_check": "OS Check",
"node_threshold": "Threshold",
"node_time_window": "Time Window",
"node_actions": "Actions",
"node_run_script": "Run Script",
"node_install": "Install SW",
"node_restart": "Restart Svc",
"node_file_deploy": "Deploy File",
"node_send_message": "Send Message",
"node_results": "Results",
"node_log_output": "Log Output",
"node_send_alert": "Send Alert",
"node_chain": "Chain Workflow",
"node_transforms": "Transforms",
"node_parse_json": "Parse JSON",
"node_filter": "Filter",
"node_delay": "Delay",
"node_properties": "Properties",
"all_organizations": "All Organizations",
"scan_all": "Scan All",
"compliant": "Compliant",
"non_compliant": "Warning",
"critical_issues": "Critical",
"avg_score": "Avg. Score",
"col_device": "Device",
"col_hostname": "Hostname",
"col_os": "OS",
"col_score": "Score",
"col_issues": "Issues",
"col_last_scan": "Last Scan",
"no_compliance_data": "No compliance data available. Run a scan to get started.",
"confirm_remediate": "Run auto-remediation on this device?"
},
"scaling": {
"title": "Scaling & Relay Management",
"tab_overview": "Overview",
"tab_relays": "Relay Nodes",
"tab_rules": "Assignment Rules",
"tab_capacity": "Capacity Planning",
"arch_title": "Network Architecture",
"arch_loading": "Loading architecture diagram...",
"stat_relay_nodes": "Relay Nodes",
"stat_total_devices": "Total Devices",
"stat_active_sessions": "Active Sessions",
"stat_bandwidth": "Total Bandwidth",
"relay_health": "Relay Health",
"no_relays": "No relay nodes configured. Add your first relay node to distribute load.",
"relay_search": "Search relays...",
"relay_add": "Add Relay Node",
"relay_edit": "Edit Relay Node",
"col_name": "Name",
"col_address": "Address",
"col_location": "Location",
"col_devices": "Devices",
"col_sessions": "Sessions",
"col_bandwidth": "Bandwidth",
"col_status": "Status",
"col_actions": "Actions",
"col_priority": "Priority",
"col_rule_name": "Rule Name",
"col_match": "Match",
"col_target_relay": "Target Relay",
"col_fallback": "Fallback",
"status_online": "Online",
"status_degraded": "Degraded",
"status_offline": "Offline",
"status_enabled": "Enabled",
"status_disabled": "Disabled",
"confirm_delete_relay": "Are you sure you want to delete this relay node?",
"confirm_delete_rule": "Are you sure you want to delete this assignment rule?",
"relays_info_banner": "This list is informational. The relay servers actually used by clients are configured via the RELAY_SERVERS environment variable on the BetterDesk server.",
"relay_name_address_required": "Name and address are required.",
"relay_save_failed": "Failed to save relay node.",
"relay_delete_failed": "Failed to delete relay node.",
"relay_saved": "Relay node saved.",
"relay_deleted": "Relay node deleted.",
"rule_name_value_required": "Rule name and match value are required.",
"rule_save_failed": "Failed to save rule.",
"rule_delete_failed": "Failed to delete rule.",
"rule_saved": "Rule saved.",
"rule_deleted": "Rule deleted.",
"rules_hint": "Assignment rules determine which relay server handles specific device groups. Rules are evaluated by priority (lowest first).",
"no_rules": "No assignment rules.",
"rule_add": "Add Rule",
"rule_edit": "Edit Rule",
"rule_match_type": "Match Type",
"match_subnet": "Subnet",
"match_group": "Device Group",
"match_tag": "Device Tag",
"match_location": "Location",
"rule_match_value": "Match Value",
"fallback_master": "Master Server",
"fallback_nearest": "Nearest Relay",
"relay_max_sessions": "Max Sessions",
"relay_max_bandwidth": "Max Bandwidth (Mbps)",
"cap_tiers": "Capacity Tiers",
"cap_loading": "Loading capacity data...",
"cap_recommendations": "Recommendations",
"cap_no_recs": "No recommendations available.",
"cap_planning": "Infrastructure Planning",
"cap_config": "Configuration",
"cap_max_devices": "Max Devices",
"cap_max_sessions": "Max Sessions",
"cap_current": "Current",
"cap_utilization": "Utilization",
"cap_tier_devices": "Device Capacity",
"cap_tier_sessions": "Session Capacity",
"cap_tier_bandwidth": "Bandwidth Capacity",
"cap_single_sqlite": "Single Server (SQLite)",
"cap_single_pg": "Single Server (PostgreSQL)",
"cap_master_3": "Master + 3 Relays",
"cap_master_10": "Master + 10 Relays",
"rec_no_relays": "No relay nodes configured. Consider adding relay nodes for better performance and redundancy.",
"rec_devices_high": "Device utilization is high. Consider adding more relay nodes to distribute load.",
"rec_sessions_high": "Session capacity is nearing its limit. Consider upgrading relay infrastructure.",
"rec_cpu_high": "Some relay nodes report high CPU usage. Consider load balancing or capacity upgrades.",
"rec_all_good": "All systems operating within normal parameters. No action required.",
"save": "Save",
"cancel": "Cancel",
"edit": "Edit",
"delete": "Delete",
"close": "Close"
},
"cross_platform": {
"title": "Cross-Platform Compatibility",
"tab_matrix": "Compatibility Matrix",
"tab_distribution": "Distribution",
"tab_protocols": "Protocols",
"tab_limitations": "Limitations",
"matrix_hint": "Feature support matrix across all supported platforms. Green = full support, yellow = partial, gray = not available, blue = planned.",
"col_feature": "Feature",
"legend_full": "Full support",
"legend_partial": "Partial support",
"legend_none": "Not available",
"legend_planned": "Planned",
"platform_breakdown": "Platform Breakdown",
"arch_breakdown": "Architecture Breakdown",
"version_breakdown": "Version Breakdown",
"summary": "Summary",
"total_devices": "Total Devices",
"unique_platforms": "Platforms",
"unique_archs": "Architectures",
"unique_versions": "Client Versions",
"no_devices": "No devices registered yet.",
"protocols_hint": "Protocol capability negotiation ensures each client receives only the features it supports. The server adapts behavior based on reported capabilities.",
"capability_negotiation": "Capability Negotiation",
"codec_support": "Codec Support (Online Devices)",
"feature_support": "Feature Support (Online Devices)",
"no_codec_data": "No codec data available from online devices.",
"no_feature_data": "No feature data available from online devices.",
"protobuf_schema": "ClientCapabilities Protobuf Schema",
"diagram_client": "Client",
"diagram_server": "BetterDesk Server",
"diagram_peer": "Remote Peer",
"limitations_hint": "Each platform has specific limitations that affect available features. Review these constraints when planning deployments.",
"feat_desktop_client": "Desktop Client",
"feat_background_agent": "Background Agent",
"feat_remote_target": "Remote Target",
"feat_screen_capture": "Screen Capture",
"feat_input_injection": "Input Injection",
"feat_file_transfer": "File Transfer",
"feat_clipboard_sync": "Clipboard Sync",
"feat_audio_streaming": "Audio Streaming",
"feat_chat": "Chat",
"feat_h264": "H.264 Codec",
"feat_vp9": "VP9 Codec",
"feat_av1": "AV1 Codec",
"feat_cdap_agent": "CDAP Agent",
"feat_session_recording": "Session Recording",
"feat_multi_monitor": "Multi-Monitor",
"feat_unattended_access": "Unattended Access",
"platform_windows": "Windows",
"platform_linux": "Linux",
"platform_macos": "macOS",
"platform_android": "Android",
"platform_ios": "iOS",
"platform_web": "Web Browser",
"platform_chromeos": "ChromeOS",
"status_production": "Production",
"status_testing": "Testing",
"status_planned": "Planned",
"status_limited": "Limited",
"status_experimental": "Experimental",
"limit_win_uac": "UAC elevation required for service installation and input injection on secure desktops.",
"limit_win_service": "Runs as NSSM service under per-service virtual accounts (NT SERVICE\\<service>); Administrator required only for installation.",
"limit_win_firewall": "Windows Firewall rules must allow ports 21115-21119 for relay connections.",
"limit_win_virtual_account": "Services run under isolated virtual accounts instead of LocalSystem; custom log paths may need ACL adjustment.",
"limit_linux_wayland": "Wayland compositors restrict programmatic screen capture; PipeWire portal API required.",
"limit_linux_pipewire": "Audio capture requires PipeWire; PulseAudio fallback available but limited.",
"limit_linux_arm": "ARM64 builds available; some codecs may use software decoding (slower).",
"limit_linux_unprivileged": "Services run as dedicated unprivileged 'betterdesk' account with systemd hardening (NoNewPrivileges, ProtectSystem=strict).",
"limit_mac_screen": "Screen Recording permission required in System Preferences > Privacy & Security.",
"limit_mac_signing": "Agent must be signed with Apple Developer ID for distribution.",
"limit_mac_notarize": "Notarization required for macOS Gatekeeper (non-App Store distribution).",
"limit_android_projection": "MediaProjection API requires user consent for each screen capture session.",
"limit_android_accessibility": "Input injection requires AccessibilityService; restricted in Android 14+.",
"limit_android_battery": "Background service limited by Doze mode; may require battery optimization exemption.",
"limit_ios_capture": "Apple prohibits background screen capture; viewer-only mode supported.",
"limit_ios_input": "No input injection permitted; remote viewing and chat only.",
"limit_ios_appstore": "Distribution via App Store only; TestFlight for beta testing.",
"limit_web_https": "WebCodecs API and WebRTC require HTTPS; HTTP falls back to JMuxer (limited codecs).",
"limit_web_codec": "Codec support depends on browser; H.264 widely supported, VP9/AV1 varies.",
"limit_web_performance": "Performance limited by browser sandbox; no direct hardware acceleration.",
"limit_chrome_crostini": "Full agent support only inside Crostini Linux container.",
"limit_chrome_pwa": "PWA mode provides web-only features; no native agent capabilities.",
"limit_chrome_input": "Input injection not supported outside Crostini container."
},
"security_audit": {
"title": "Security Audit",
"tab_overview": "Overview",
"tab_events": "Audit Events",
"tab_hardening": "Hardening",
"tab_vulnerabilities": "Vulnerabilities",
"security_score": "Security Score",
"failed_logins": "Failed Logins (24h)",
"active_bans": "Active Bans",
"api_keys": "API Keys",
"old_keys": "Old Keys (>90d)",
"security_checks": "Security Checks",
"tls_status": "TLS Status",
"pass": "Pass",
"warning": "Warning",
"fail": "Fail",
"tls_signal": "Signal TLS",
"tls_relay": "Relay TLS",
"tls_api": "API TLS",
"tls_wss": "WebSocket Secure",
"enabled": "Enabled",
"disabled": "Disabled",
"all_events": "All Events",
"event_login_failed": "Login Failed",
"event_login_success": "Login Success",
"event_peer_banned": "Peer Banned",
"event_ip_banned": "IP Banned",
"event_config_changed": "Config Changed",
"event_key_created": "Key Created",
"refresh": "Refresh",
"col_time": "Time",
"col_action": "Action",
"col_actor": "Actor",
"col_target": "Target",
"col_ip": "IP Address",
"col_details": "Details",
"no_events": "No audit events found.",
"hardening_hint": "Security hardening priorities for your BetterDesk deployment. Items are ordered by severity.",
"no_hardening": "No hardening items available.",
"vuln_hint": "Dependency vulnerability scan results. Run npm audit regularly to keep dependencies secure.",
"no_vulns": "No vulnerabilities found. Your dependencies are secure."
},
"languages": {
"title": "Language Management",
"total_languages": "Total Languages",
"fully_translated": "Fully Translated",
"needs_review": "Needs Review",
"reference_keys": "Reference Keys",
"no_languages": "No language files found.",
"badge_reference": "Reference",
"badge_review": "Needs Review",
"badge_complete": "Complete",
"coverage": "coverage",
"keys": "keys",
"missing": "missing",
"extra": "extra",
"view_missing": "View Missing",
"fix_missing": "Manual translation required",
"missing_keys_for": "Missing keys for",
"missing_keys_count": "keys missing (EN/PL reference values shown)",
"and_more": "and {n} more...",
"all_keys_present": "All keys are present!",
"confirm_fix": "Automatic language fixing is disabled for {code}.",
"fixed_title": "Manual translation required",
"fixed_msg": "Missing keys in {code} must be translated manually.",
"no_fix_needed": "No missing keys to fix."
},
"resource_control": {
"title": "Resource Control",
"tab_overview": "Overview",
"tab_usb": "USB Control",
"tab_optical": "Optical Drives",
"tab_monitors": "Monitors",
"tab_disks": "Disk Access",
"tab_quotas": "Resource Quotas",
"compliance_by_category": "Compliance by Category",
"device_compliance": "Device Compliance",
"search_devices": "Search devices...",
"col_device": "Device",
"col_platform": "Platform",
"col_status": "Status",
"col_usb": "USB",
"col_optical": "Optical",
"col_monitors": "Monitors",
"col_disks": "Disks",
"col_quotas": "Quotas",
"col_actions": "Actions",
"stat_total_devices": "Total Devices",
"stat_compliant": "Compliant",
"stat_partial": "Partial",
"stat_noncompliant": "Non-Compliant",
"stat_compliance_rate": "Compliance Rate",
"badge_na": "N/A",
"badge_compliant": "OK",
"badge_partial": "Partial",
"badge_noncompliant": "Fail",
"btn_configure": "Configure",
"no_devices": "No devices found",
"usb_title": "USB Port Control",
"usb_hint": "Control USB storage device access for the selected device or organization-wide default policy.",
"usb_storage_policy": "USB Storage Policy",
"usb_whitelist": "Whitelisted Devices (one per line)",
"usb_whitelist_hint": "VID:PID (e.g. 0781:5583)",
"usb_audit_log": "Log USB device connections",
"optical_title": "Optical Drive Control",
"optical_hint": "Control CD/DVD/Blu-ray drive access for the selected device.",
"optical_policy": "Optical Drive Policy",
"optical_audit_log": "Log optical drive access",
"monitors_title": "Monitor Management",
"monitors_hint": "Configure monitor settings including maximum count, resolution enforcement, brightness and power schedules.",
"monitors_max_count": "Maximum Monitors (0 = unlimited)",
"monitors_max_hint": "0 means no limit",
"monitors_resolution": "Max Resolution",
"monitors_brightness": "Brightness Limit",
"monitors_power_schedule": "Power Schedule",
"monitors_power_hint": "e.g. off:22:00-06:00",
"disks_title": "Disk Access Control",
"disks_hint": "Configure disk access policies including read-only mode, encryption enforcement, and partition visibility.",
"disks_readonly": "Force read-only mode",
"disks_encryption": "Require encryption (BitLocker/LUKS)",
"disks_smart": "Enable S.M.A.R.T. monitoring",
"disks_hidden": "Hidden Partitions",
"disks_hidden_hint": "Comma-separated drive letters or mount points",
"quotas_title": "Resource Quotas",
"quotas_hint": "Set per-user CPU, RAM, bandwidth, and disk quotas for the selected device.",
"quotas_cpu": "CPU Limit",
"quotas_ram": "RAM Limit",
"quotas_bandwidth": "Bandwidth Limit (Mbps)",
"quotas_bandwidth_hint": "0 = unlimited",
"quotas_disk_quota": "Disk Quota (GB)",
"quotas_disk_hint": "0 = unlimited",
"quotas_process_whitelist": "Process Whitelist (one per line)",
"quotas_process_hint": "e.g. chrome.exe, code.exe",
"policy_allowed": "Allowed",
"policy_blocked": "Blocked",
"policy_whitelist": "Whitelist Only",
"policy_any": "Any"
},
"sdk_studio": {
"title": "SDK Studio",
"subtitle": "Visual flow editor for CDAP bridges",
"new_flow": "New Flow",
"open_flow": "Open Flow",
"save_flow": "Save Flow",
"import_flow": "Import Flow",
"run_flow": "Run",
"debug": "Debug",
"deploy": "Deploy",
"undo": "Undo",
"redo": "Redo",
"untitled": "Untitled Flow",
"code_mode": "Code Mode",
"toggle_grid": "Toggle Grid",
"zoom_in": "Zoom In",
"zoom_out": "Zoom Out",
"zoom_fit": "Fit to Screen",
"palette": "Node Palette",
"search_nodes": "Search nodes...",
"cat_sources": "Sources",
"cat_processing": "Processing",
"cat_outputs": "Outputs",
"empty_title": "Start Building",
"empty_desc": "Drag nodes from the palette to start building a flow",
"browse_templates": "Browse Templates",
"inspector": "Inspector",
"select_node": "Select a node to inspect its properties",
"console": "Console",
"clear_console": "Clear",
"console_ready": "Studio ready",
"label": "Label",
"configuration": "Configuration",
"connections": "Connections",
"inputs": "Inputs",
"outputs": "Outputs",
"delete_node": "Delete Node",
"nodes": "Nodes",
"wires": "Wires",
"status_ready": "Ready",
"status_deployed": "Deployed",
"flow_name": "Flow Name",
"flow_desc": "Description",
"loading": "Loading...",
"no_flows": "No saved flows yet",
"confirm_delete": "Are you sure you want to delete this flow?",
"templates": "Templates",
"node_modbus_tcp": "Modbus TCP",
"node_modbus_rtu": "Modbus RTU",
"node_snmp_poll": "SNMP Poll",
"node_rest_poll": "REST Poll",
"node_mqtt_subscribe": "MQTT Subscribe",
"node_webhook": "Webhook",
"node_device_telemetry": "Device Telemetry",
"node_database_query": "Database Query",
"node_file_watch": "File Watch",
"node_filter": "Filter",
"node_transform": "Transform",
"node_aggregate": "Aggregate",
"node_delay": "Delay",
"node_debounce": "Debounce",
"node_switch": "Switch",
"node_merge": "Merge",
"node_script": "Script",
"node_widget_update": "Widget Update",
"node_alert": "Alert",
"node_command": "Command",
"node_log": "Log",
"node_rest_call": "REST Call",
"node_mqtt_publish": "MQTT Publish",
"node_database_write": "Database Write",
"node_email": "Email",
"node_modbus_write": "Modbus Write"
},
"updates": {
"tab_title": "Updates",
"title": "Software Updates",
"desc": "Check for new versions and update the BetterDesk console and Go server from GitHub",
"current_version": "Installed version",
"latest_version": "Latest commit",
"status": "Status",
"check_now": "Check for updates",
"checking": "Checking…",
"up_to_date": "Up to date",
"update_available": "Update available",
"changelog": "Recent Commits",
"no_changelog": "No release notes available",
"files_changed": "Files changed",
"files": "files",
"changes_unavailable": "Could not load file change list. You can still install the update.",
"create_backup": "Create backup before updating",
"install": "Install",
"install_confirm": "Are you sure you want to install this update? All supported changed components will be updated automatically and the console will restart after the update.",
"installing": "Installing update…",
"creating_backup": "Creating backup…",
"downloading": "Downloading files…",
"install_success": "Update installed successfully. Console is restarting…",
"install_failed": "Update installation failed",
"restarting": "Waiting for console to restart…",
"restart_complete": "Console restarted successfully",
"restart_timeout": "The update was applied, but the browser could not confirm the restart automatically. Reload the console to verify the new version.",
"no_version": "No update version selected. Check for updates first.",
"backups_title": "Update Backups",
"backups_desc": "Pre-update backups created automatically before each update",
"no_backups": "No update backups found",
"restore": "Restore",
"restore_confirm": "Are you sure you want to restore from this backup? Changed files will be overwritten.",
"restore_success": "Backup restored successfully. Console is restarting…",
"delete": "Delete",
"delete_confirm": "Permanently delete backup {name}? This cannot be undone.",
"delete_success": "Backup deleted",
"delete_failed": "Failed to delete backup",
"retention_label": "Keep N most recent backups",
"retention_hint": "Older backups are deleted automatically after each update. Use 0 to keep all backups.",
"retention_saved": "Retention setting saved",
"retention_invalid": "Retention must be an integer between 0 and 1000",
"retention_required_for_prune": "Set a retention value greater than 0 first",
"prune_now": "Apply now",
"prune_confirm": "Keep only the {n} most recent backups and delete the rest?",
"prune_done": "Pruned {n} backup(s)",
"total_size": "Total size",
"backups_count": "backup(s)",
"baseline_set": "Baseline set",
"commits_behind": "commits behind",
"total_files": "Total files",
"applied": "Applied",
"failed": "Failed",
"skipped": "Skipped",
"removed": "Removed",
"auto": "Auto",
"manual": "Manual",
"component_console": "Web Console",
"component_server": "Go Server",
"component_agent": "Agent",
"component_scripts": "Scripts & Docker",
"component_other": "Other",
"server_rebuild_warning": "Go Server source changed — the server binary will be updated automatically.",
"include_server": "Go Server will be updated automatically",
"checking_go": "Checking Go…",
"go_not_found": "Go not installed",
"go_check_failed": "Could not check Go availability",
"server_building": "Compiling Go server… This may take a few minutes.",
"server_built": "Server binary compiled",
"server_build_failed": "Server compilation failed",
"server_stale_title": "Server binary out of date",
"server_stale_desc": "The Go server source was updated but the running binary was not rebuilt. Rebuild it now to apply security and library updates.",
"rebuild_server": "Rebuild server binary",
"rebuilding_server": "Rebuilding…",
"rebuild_server_success": "Server binary rebuilt and restarted",
"rebuild_server_failed": "Server binary rebuild failed",
"docker_title": "Docker image deployment",
"docker_desc": "This console runs from a pre-built container image. Updates are applied by pulling newer images from GHCR, not through in-app install or Go rebuild.",
"docker_install_note": "In-app install is disabled in Docker. Run the commands above on the host, then refresh this page.",
"docker_update_available": "New container images available",
"docker_sha_unknown": "Up to date (image commit unknown)",
"docker_images": "Images",
"server_deployed": "Server binary deployed",
"server_deploy_failed": "Server deploy failed",
"server_build_note": "Server compilation may take 1-5 minutes. The update service will run it automatically when needed.",
"server_source_downloading": "Downloading server source…",
"strategy_label": "Update method",
"strategy_download": "Download pre-built binary",
"strategy_compile": "Compile from source",
"both_available": "Download & Compile",
"download_available": "Download available",
"no_method": "No update method",
"no_release": "No release",
"available": "Available",
"server_downloading": "Downloading server binary…",
"server_downloaded": "Server binary downloaded",
"server_download_failed": "Server binary download failed",
"server_download_note": "A pre-built binary will be downloaded from GitHub Releases. This usually takes less than a minute.",
"install_go_hint": "Install Go from https://go.dev/dl/ to enable compilation, or publish a release with pre-built binaries",
"strategy_install_go": "Auto-install Go and compile",
"strategy_install_go_hint": "Downloads or refreshes the official Go toolchain (~120 MB) in the console data directory, then compiles the server when needed.",
"auto_strategy": "Auto",
"auto_strategy_hint": "The console will pick the best available method and download or update required tools automatically.",
"auto_available": "Auto-rebuild ready",
"toolchain_ready": "Toolchain installed",
"toolchain_will_install": "Go toolchain will be installed or updated automatically",
"toolchain_downloading": "Downloading Go toolchain…",
"toolchain_failed": "Go toolchain install failed",
"modal_title": "Installing update",
"modal_done_title": "Update complete",
"modal_close": "Close",
"modal_reload_now": "Reload console",
"phase_confirm": "Confirmation",
"phase_backup": "Backup",
"phase_console": "Console files",
"phase_server": "Go server",
"phase_restart": "Restart",
"phase_done": "Done",
"preparing": "Preparing…",
"backup_skipped": "Backup skipped (per user choice)",
"server_skipped": "Go server skipped",
"server_not_selected": "No Go server changes",
"server_processing": "Processing Go server update…",
"no_restart_needed": "No restart required",
"complete": "Update applied",
"complete_summary": "The update has been applied successfully.",
"complete_with_errors": "The update finished, but some steps failed. See details below.",
"modal_done_with_errors_title": "Update finished with errors",
"console_will_restart": "Console process will restart now…",
"restart_complete_msg": "The console finished restarting. Click reload to load the new version. The page will reload automatically in 8 seconds.",
"refresh_recommended": "Static assets changed — reload the page to see the new UI.",
"confirm_title": "Apply update",
"confirm_with_backup": "A pre-update backup will be created automatically.",
"confirm_no_backup": "No backup will be created (proceed at your own risk).",
"channel_title": "Update channel",
"channel_desc": "Choose where the panel checks for updates. Production servers should use Stable.",
"channel_stable": "Stable (main)",
"channel_development": "Development (dev)",
"channel_pick_label": "Switch to",
"channel_apply_hint": "The change is saved immediately after you confirm. Then click Check for updates.",
"channel_branch_label": "GitHub branch",
"channel_save": "Switch channel",
"channel_saved": "Update channel switched. Click Check for updates to refresh.",
"channel_save_failed": "Failed to save update channel",
"channel_switch_warning": "Switching the update channel changes which GitHub branch is used for version checks and installs. Your tracked commit SHA is kept — the next check may show a large diff. Continue?",
"channel_confirm_switch": "Switch update source from {from} to {to}? Your installed commit baseline stays the same until you run Check for updates."
},
"accessibility": {
"title": "Accessibility",
"subtitle": "Adjust the console to your vision, motion and reading needs.",
"close": "Close accessibility menu",
"profiles": "Quick profiles",
"profile_low_vision": "Low vision",
"profile_low_vision_hint": "Larger text, strong contrast and focus.",
"profile_dyslexia": "Reading comfort",
"profile_dyslexia_hint": "Readable font and wider spacing.",
"profile_motion_safe": "Motion safe",
"profile_motion_safe_hint": "Reduces transitions and pauses animation.",
"profile_color_assist": "Color support",
"profile_color_assist_hint": "Color filter, labels and highlighted links.",
"reading": "Reading",
"font_size": "Font size",
"line_height": "Line height",
"letter_spacing": "Letter spacing",
"word_spacing": "Word spacing",
"readable_font": "Readable font",
"readable_font_hint": "Uses broad, familiar letter shapes.",
"dyslexia_spacing": "Dyslexia spacing",
"dyslexia_spacing_hint": "Adds extra spacing for long text.",
"visual": "Visual",
"contrast": "Contrast",
"contrast_normal": "Normal",
"contrast_high_dark": "High contrast dark",
"contrast_high_light": "High contrast light",
"contrast_yellow_black": "Yellow on black",
"color_filter": "Color vision filter",
"filter_none": "None",
"filter_protanopia": "Protanopia",
"filter_deuteranopia": "Deuteranopia",
"filter_tritanopia": "Tritanopia",
"filter_achromatopsia": "Achromatopsia",
"saturation": "Color saturation",
"underline_links": "Underline links",
"underline_links_hint": "Makes links visible without relying on color.",
"highlight_links": "Highlight actions",
"highlight_links_hint": "Outlines links and buttons.",
"highlight_headings": "Highlight headings",
"highlight_headings_hint": "Marks section titles with a color bar.",
"hide_media": "Dim media",
"hide_media_hint": "Dims images, videos and canvases.",
"interaction": "Interaction",
"strong_focus": "Strong focus",
"strong_focus_hint": "Shows a large keyboard focus ring.",
"large_cursor": "Large cursor",
"large_cursor_hint": "Uses a larger high-contrast pointer.",
"reduce_motion": "Reduce motion",
"reduce_motion_hint": "Shortens transitions and smooth scrolling.",
"pause_animations": "Pause animations",
"pause_animations_hint": "Stops looping visual motion.",
"reading_guide": "Reading guide",
"reading_guide_hint": "Follows the pointer with a bright line.",
"reading_mask": "Reading mask",
"reading_mask_hint": "Dims content above and below the pointer.",
"preview": "Preview",
"preview_title": "Operator workspace preview",
"preview_text": "Check whether text, links, controls and status labels are comfortable to read before closing this menu.",
"preview_link": "Device details link",
"preview_status": "Online",
"preview_button": "Primary action",
"preview_secondary": "Secondary",
"reset": "Reset",
"done": "Done"
},
"server_mgmt": {
"title": "Server Management",
"subtitle": "Cockpit-like control plane for the BetterDesk console host (BETA).",
"beta_tooltip": "Beta feature — under active development.",
"notice_title": "Beta feature",
"notice_body": "These tools run on the host where the BetterDesk console process lives. All operations are audited. Feature scope will expand in future releases.",
"tab_overview": "Overview",
"tab_terminal": "Terminal",
"tab_files": "Files",
"tab_services": "Services",
"cpu": "CPU",
"memory": "Memory",
"load": "Load average",
"disks": "Disks",
"history": "History (last 60 samples)",
"host_info": "Host info",
"cores": "cores",
"uptime": "Uptime",
"no_disks": "No disk data available",
"info_hostname": "Hostname",
"info_platform": "Platform",
"info_kernel": "Kernel",
"info_node": "Node.js",
"info_process_id": "Process ID",
"info_pty_available": "PTY available",
"term_connect": "Connect",
"term_disconnect": "Disconnect",
"term_clear": "Clear",
"term_status": "Status",
"term_connecting": "Connecting…",
"term_connected": "Connected",
"term_disconnected": "Disconnected",
"term_error": "Connection error",
"term_warning": "Commands run as the user that owns the console process. Add a sudoers rule to enable elevation.",
"term_hint": "Tip: type `sudo -i` to escalate (requires sudoers configuration).",
"term_lib_failed": "Failed to load terminal library",
"files_up": "Up one level",
"files_go": "Go",
"files_mkdir": "New folder",
"files_name": "Name",
"files_size": "Size",
"files_perms": "Mode",
"files_mtime": "Modified",
"files_rename": "Rename",
"files_rename_prompt": "New name:",
"files_empty": "Empty directory",
"files_error": "Failed to list directory",
"read_failed": "Failed to read file",
"save_failed": "Failed to save file",
"rename_failed": "Rename failed",
"delete_failed": "Delete failed",
"delete_confirm": "Delete this entry?",
"mkdir_prompt": "New folder name:",
"mkdir_failed": "Failed to create folder",
"file_saved": "File saved",
"binary_warn": "Binary file — preview only",
"encoding_utf8": "UTF-8 text",
"truncated": "truncated",
"full": "full",
"svc_search_placeholder": "Search services…",
"svc_name": "Service",
"svc_state": "State",
"svc_description": "Description",
"svc_empty": "No services found",
"svc_load_failed": "Failed to load services",
"svc_action_failed": "Action failed",
"svc_confirm": "Run",
"svc_start": "Start",
"svc_stop": "Stop",
"svc_restart": "Restart",
"svc_reload": "Reload",
"svc_enable": "Enable",
"svc_disable": "Disable",
"svc_status": "Status"
},
"server_attestation": {
"title": "Server Attestation",
"subtitle": "Performance benchmark that determines concurrent remote connection capacity at an 80% CPU, RAM, and disk threshold.",
"warning_title": "Load test",
"warning_body": "The benchmark simulates parallel WebSocket connections to the signal and relay servers. Run during off-peak hours — this test loads production.",
"run_benchmark": "Run benchmark",
"abort": "Abort",
"download_report": "Download JSON report",
"last_test": "Last test",
"no_test_yet": "No benchmark has been run yet",
"max_connections": "Max connections",
"threshold_80": "80% threshold — final metrics",
"disk": "Disk",
"ramp_chart": "Load ramp chart",
"connections": "Connections",
"connections_short": "conn.",
"tier_guide_title": "What does each tier mean?",
"tier_bronze": "BRONZE",
"tier_iron": "IRON",
"tier_titanium": "TITANIUM",
"tier_platinum": "PLATINUM",
"tier_obsidian": "OBSIDIAN",
"tier_none": "UNRATED",
"tier_bronze_desc": "125 concurrent connections — small VPS (12 vCPU, 24 GB RAM).",
"tier_iron_desc": "2675 connections — mid-range server (24 vCPU, 48 GB RAM).",
"tier_platinum_desc": "76200 connections — high-performance server (48 vCPU, 816 GB RAM).",
"tier_titanium_desc": "201400 connections — enterprise infrastructure (8+ vCPU, 1632 GB RAM).",
"tier_obsidian_desc": "401+ connections — turbo class: dedicated hardware, 16+ vCPU, 32+ GB RAM, NVMe.",
"docker_note": "Note: in Docker, CPU/RAM metrics may reflect container limits rather than the physical host.",
"badge_tooltip": "BetterDesk Server Attestation — server performance certification",
"confirm_run": "This benchmark will load-test the server with simulated connections. Continue?",
"starting": "Starting…",
"complete": "Benchmark complete",
"signal_peers": "Signal peers",
"relay_sessions": "Relay sessions",
"page_error": "Failed to load the Server Attestation page",
"mode_estimated": "Estimated (WebSocket unreachable)",
"incomplete": "Benchmark finished without a valid tier"
},
"commercialization": {
"title": "Commercialization",
"subtitle": "Support packages, billable sessions, and work reports",
"alpha_badge": "ALPHA",
"alpha_tooltip": "Early feature — billing and packages are under active development.",
"tabs": {
"overview": "Overview",
"packages": "Packages & contracts",
"sessions": "Sessions",
"reports": "Reports",
"settings": "Advanced settings"
},
"clock": {
"title": "Server time (NTP)",
"check_now": "Check now",
"unsynced": "Server clock is not synchronized — billable sessions may be blocked"
},
"stats": {
"active_sessions": "Active billable sessions"
},
"packages": {
"new": "New package",
"name": "Name",
"included_minutes": "Included minutes",
"overage_rate": "Overage rate / h",
"currency": "Currency",
"heading": "Support packages",
"prompt_name": "Package name",
"create_title": "New package for organization",
"create_submit": "Create package",
"select_org": "Organization",
"select_org_placeholder": "Select organization…"
},
"sessions": {
"device": "Device",
"operator": "Operator",
"duration": "Duration",
"phase": "Phase",
"amount": "Amount"
},
"reports": {
"session": "Session",
"summary": "Summary",
"date": "Date"
},
"contracts": {
"title": "Organization contracts",
"new": "Assign package",
"org": "Organization",
"package": "Package",
"remaining": "Remaining minutes",
"status": "Status",
"actions": "Actions",
"suspend": "Suspend",
"activate": "Activate",
"select_org": "Select organization",
"select_package": "Select package",
"no_orgs": "No organizations found",
"no_packages": "Create a package first"
},
"assign": {
"title": "Assign existing package",
"submit": "Assign"
},
"form": {
"cancel": "Cancel"
},
"export": {
"csv": "Export CSV",
"pdf": "Export PDF",
"sessions_csv": "Export sessions CSV"
},
"empty": {
"packages": "No packages yet. Create one with the button above.",
"contracts": "No organization contracts yet. Assign a package to an organization.",
"sessions": "No billable sessions recorded yet.",
"reports": "No work reports submitted yet."
},
"report": {
"title": "Work report",
"subtitle": "Describe the work performed during this remote session.",
"category": "Category",
"ticket_ref": "Ticket reference",
"summary": "Work performed",
"skip": "Skip for now",
"submit": "Submit report",
"summary_required": "Summary is required",
"saved": "Work report saved"
}
}
}