* Repurposed the MacOS-specific platform channel mechanism for all platforms: - Renamed the channel from "org.rustdesk.rustdesk/macos" to "org.rustdesk.rustdesk/host". - Renamed _osxMethodChannel in platform_channel.dart to _hostMethodChannel. - Updated linux/my_application.cc to use the fl_* API to set up a Method Channel and to dispose it during my_application_dispose. - Updated windows/runner/flutter_window.cpp to use the C++ API to set up a Method Channel. - Updated the channel name in macos/Runner/MainFlutterWindow.swift. Signed-off-by: Jonathan Gilbert <logic@deltaq.org> * Added a method "bumpMouse" to the Platform Channel. Added a thunk to call the method through the channel to platform_channel.dart. Added implementation bump_mouse() in linux/my_application.cc using Gdk API calls. Updated host_channel_call_handler to process "bumpMouse" method call messages by calling bump_mouse. Added implementation Win32Desktop::BumpMouse in windows/runner/win32_desktop.cpp/.h. Updated the inline method call handler in flutter_window.cpp to handle "bumpMouse" method calls by calling Win32Desktop::BumpMouse. Updated the method call handler in macos/Runner/MainFlutterWindow.swift to handle "bumpMouse" method call messages. Updated MainFlutterWindow to use a subclass of FlutterViewController exposing access to mouseLocationOutsideOfEventStream. Signed-off-by: Jonathan Gilbert <logic@deltaq.org> * Added message type kWindowBumpMouse to the multiwindow window event model: - Added constant kWindowBumpMouse to consts.dart. - Updated the method handler attached to rustDeskWinManager by DesktopHomePageState to recognize kWindowBumpMouse and translate it to a call to RdPlatformChannel.bumpMouse. Signed-off-by: Jonathan Gilbert <logic@deltaq.org> * Centralized serialization of ScrollStyle values, moving JSON and string conversions into methods toString/fromString and toJson/fromJson within the type. Signed-off-by: Jonathan Gilbert <logic@deltaq.org> * Added new scroll style for edge scrolling: - Added ScrollStyle enum member "scrolledge". Added corresponding constant kRemoteScrollStyleEdge to consts.dart for the string serialized form. - Updated sites checking specifically for ScrollStyle.scrollbar to instead check for NOT ScrollStyle.scrollauto. - Added radio buttons for the new "ScrollEdge" style to desktop_setting_page.dart and remote_toolbar.dart. Added new string "ScrollEdge" to lang/template.rs. Signed-off-by: Jonathan Gilbert <logic@deltaq.org> * Implemented edge scrolling: - Added methods edgeScrollMouse and pushScrollPositionToUI to class CanvasModel in model.dart. - Added boolean parameter edgeScroll to handleMouse, handlePointerDevicePos and processEventToPeer in input_model.dart. - Updated handlePointerDevicePos in input_model.dart to call edgeScrollMouse on move events when the edgeScroll parameter is true. - Added convenience accessor useEdgeScroll to the InputModel class. Updated call sites to handleMouse to use it to supply the value for the edgeScroll parameter. Signed-off-by: Jonathan Gilbert <logic@deltaq.org> * Updated CanvasModel.edgeScrollMouse to be resilient to receiving events when _horizontal/_vertical aren't wired up to any UI. * Updated CanvasModel to take notifications of resizes via method notifyResize and to suppress edge scrolling briefly after a resize. Updated the onWindowResized handler in tabbar_widget.dart to call notifyResize on the canvasModel of any RemotePage tabs. * Half a go at fixing MainFlutterWindow.swift. * Copilot feedback. * Applied fix suggested by Copilot in its explanation of the build error. * Fixed a couple of silly errors in windows/runner/flutter_window.cpp. * Fixed MainFlutterWindow.swift build errors. Co-Authored-By: fufesou <linlong1266@gmail.com> Signed-off-by: Jonathan Gilbert <logic@deltaq.org> * Moved new translation to the end of template.rs. Reran res/lang.py. Signed-off-by: Jonathan Gilbert <logic@deltaq.org> * Switched MainFlutterWindow.swift to use NSEvent.mouseLocation. * Updated MainFlutterWindow.swift code based on build error. * Fixed silly typo. * Reintroduced the coordinate system translation in MainFlutterWindow.swift. * Updated edgeScrollMouse in model.dart to add a "safe zone" around the window frame that doesn't trigger edge scrolling. * Updated the bumpMouse handler in MainFlutterWindow.swift to call CGAssociateMouseAndMouseCursorPosition to cancel event suppression. * Added debug annotation to the onWindowResized event in tabbar_widget.dart. * Fix parameter type for CGAssociateMouseAndMouseCursorPosition in MainFlutterWindow.swift. * tabbar_widget.dart: onWindowResized -> onWindowResize * Removed temporary diagnostic debugPrint from tabbar_widget.dart. * Updated MainFlutterWindow.swift to obtain the mouse position by creating a dummy CGEvent. The old NSEvent.mouseLocation code is left as a fallback. * The documentation said to be sure to call CFRelease, but apparently it's a build error to do so. :-P * Replaced CGEvent calls in MainFlutterWindow.swift with uses of the CGEvent wrapper struct. * Added argument label to call to CGEvent.init. * Changed mouseLoc from piecewise assignment to assignment of the whole structure, as it is not yet initialized at that point. * Linux platform channel: Refactored bump_mouse, setting the stage for a future Wayland implementation. - Made a new top-level bump_mouse method in bump_mouse.cc/.h. - Moved the X11-specific implementation to bump_mouse_x11 in bump_mouse_x11.cc/h. Reworked the bumpMouse operation to have a boolean return value: - Updated bumpMouse in platform_channel.dart to return a Future<bool> instead of a Future<void>. - Windows platform channel: Updated BumpMouse in win32_desktop.cpp to return a bool value. Updated the method call handler "bumpMouse" branch in flutter_window.cpp to propagate the BumpMouse return value back to the originating MethodCall. - MacOS platform channel: Updated the "bumpMouse" branch in the method call handler in MainFlutterWindow.swift to pass true or false into the 'result()' call. - Linux platform channel: Updated the bump_mouse top-level method and its underlying implementation bump_mouse_x11 to return bool values. Updated the "bumpMouse" branch of host_channel_call_handler in my_application.cc to propagate the result value back up the method channel. - Updated the kWindowBumpMouse branch of the method handler registered in desktop_home_page.dart to propagate a return value from RdplatformChannel.bumpMouse. * Reworked the edge scrolling computations in model.dart to use Vector2 from the vector_math package. Updated pubspec.yaml to declare a dependency on vector_math. * Added an alternative edge scrolling mechanism for when "Bump Mouse" functionality is unavailable: - Added methods setEdgeScrollTimer and cancelEdgeScrollTimer to model.dart, along with a few state fields. - Updated edgeScrollMouse to latch the (x, y) coordinate of the last edge scroll event, in case it will be autorepeating. - Updated edgeScrollMouse to check whether the call to the kWindowBumpMouse method of rustDeskWinManager (and thus the underlying bump_mouse method) succeeded, and to switch to timer-based autorepeat if it fails. Made edgeScrollMouse async to allow awaiting the result of the kWindowBumpMouse method call. - Updated input_model.dart to call cancelEdgeScrollTimer when a new move event is being processed. - Updated remote_page.dart to call cancelEdgeScrollTimer when the pointer exits the area represented by the view. * Fixed scroll percentage math in edgeScrollMouse in model.dart. * Fixed declared return value for Win32Desktop::BumpMouse in win32_desktop.h. * Fixed vector_math dependency version in pubspec.yaml to be compatible with the codebase standard Flutter version. * Added class EdgeScrollFallbackState to model.dart for tracking the state of the edge scroll fallback strategy. Factored out the actual edge scrolling action from CanvasModel.edgeScrollMouse to new method performEdgeScroll so that EdgeScrollFallbackState can call it. Updated edgeScrollMouse to not call performEdgeScroll when it's enabling the fallback strategy. Updated CanvasModel to use EdgeScrollFallbackState instead of directly tracking the state. Removed method setEdgeScrollTimer. Added method initializeEdgeScrollFallback to CanvasModel that takes a TickerProvider. Updated _RemotePageState to include the mixin TickerProviderStateMixin. Updated _RemotePageState.initState to call canvasModel.initializeEdgeScrollFallback. Updated handlePointerDevicePos in input_model.dart to not call cancelEdgeScrollTimer before edgeScrollMouse. Renamed CanvasModel.cancelEdgeScrollTimer to CanvasModel.cancelEdgeScroll. Updated the calculations in CanvasModel.edgeScrollMouse to only factor in the safe zone if BumpMouse is working. (Otherwise the problem with resizing can't possibly occur.) * Updated CanvasModel.edgeScrollMouse in model.dart to handle the situation where only one of the scrollbars is active. Factored extraction of scrollbar data into new function getScrollInfo. * Updated onWindowResize in tabbar_widget.dart to be resilient to RemotePage instances that don't yet have an ffi reference. Added property hasFFI to remote_page.dart. * Removed debug output from model.dart. * PR feedback: - Added filtering to diagnostic output in the method handler in desktop_home_page.dart to exclude the very chatty kWindowBumpMouse-related output. - Removed the diagnostic output from bumpMouse in platform_channel.dart for the same reason. - Updated setScrollPercent to coalesce NaN values for x and y to 0. - Initialized the GError pointer variable passed into fl_method_call_respond_success in linux/my_application.cc to NULL. - Added bounds checking of the argument values in the EncodableList branch of the "bumpMouse" method call handler in windows/runner/flutter_window.cpp. * Added a latch mechanism that keeps edge scrolling disabled until the cursor is observed to be in the inner area bounded by the edge scroll areas: - Added tristate enumerated type EdgeScrollState to model.dart. In addition to inactive and active states, there is state armed which behaves like inactive but can transition to active when conditions are met. - Added a field to CanvasModel of type EdgeScrollState. Added methods disableEdgeScroll and rearmEdgeScroll. - Updated enterView to call canvasModel.rearmEdgeScroll and leaveView to call canvasModel.disableEdgeScroll in remote_page.dart. - Updated edgeScrollMouse to check the state, disabling edge scrolling when the state is not active and transitioning from armed to active when the mouse is in the interior space. - Removed the notifyResize/_suppressEdgeScroll mechanism from CanvasModel in model.dart as it is no longer necessary. - Removed the "safe zone" mechanism from CanvasModel.edgeScrollMouse in model.dart as it is no longer necessary. - Switched the onWindowResize handler in DesktopTabState in tabbar_widget.dart back to onWindowResized, now that it is no longer delivering canvasModel.notifyResize to all RemotePage tabs. * Fixed memory leak: Added call to free GError object returned by Flutter API in the event of an error. * PR feedback: - Copilot: Use type annotations. - Copilot: Condition to stop edge scrolling when fallback strategy is in use and the mouse is moved back to the centre. - Copilot: Check FLValue type before calling fl_value_get_int. - Copilot: Support list-style method channel dispatch in "bumpMouse" handler for macos as the linux and windows implementations already do. - Naming convention for constants. - Left-over variable from previous strategy: _suppressEdgeScroll. - Unnecessary extra parentheses in edge scroll area conditions. * Removed property suppressEdgeScroll referencing now-removed field _suppressEdgeScroll in model.dart. Removed accidental extra blank line in MainFlutterWindow.swift. * Switched CanvasModel.setScrollPercent to use double.isFinite instead of double.isNaN to test for proper numerical values. * PR feedback: - Copilot: Use Vector2.length2 instead of Vector2.length to avoid an unnecessary sqrt in comparison with zero. - Copilot: Baleet unnecessary semicolons from Swift code. * PR feedback: - Copilot: Check argList.count before indexing it * Oops with the semicolons again. * Edge scroll, active local cursor Signed-off-by: fufesou <linlong1266@gmail.com> * Remove duplicated condition checks Signed-off-by: fufesou <linlong1266@gmail.com> * Chore Signed-off-by: fufesou <linlong1266@gmail.com> * PR feedback: - Copilot: Removed unused property hasFFI from remote_page.dart. - Copilot: Updated updateScrollStyle in model.dart to be resilient to the possibility of bind.sessionGetScrollStyle returning null. * Factored local cursor updates out of CanvasModel.moveDesktopMouse in model.dart, adding new methods activateLocalCursor and updateLocalCursor. Updated handlePointerDevicePos in input_model.dart to call canvasModel.updateLocalCursor on every mouse event. Updated initState in remote_page.dart to schedule a call to canvasModel.activateLocalCursor as a first-image callback. * Updated the explanation for rounding away from 0 in edgeScrollMouse in model.dart. --------- Signed-off-by: Jonathan Gilbert <logic@deltaq.org> Signed-off-by: fufesou <linlong1266@gmail.com> Co-authored-by: fufesou <linlong1266@gmail.com>
727 lines
25 KiB
Rust
727 lines
25 KiB
Rust
lazy_static::lazy_static! {
|
|
pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|
[
|
|
("Status", ""),
|
|
("Your Desktop", ""),
|
|
("desk_tip", ""),
|
|
("Password", ""),
|
|
("Ready", ""),
|
|
("Established", ""),
|
|
("connecting_status", ""),
|
|
("Enable service", ""),
|
|
("Start service", ""),
|
|
("Service is running", ""),
|
|
("Service is not running", ""),
|
|
("not_ready_status", ""),
|
|
("Control Remote Desktop", ""),
|
|
("Transfer file", ""),
|
|
("Connect", ""),
|
|
("Recent sessions", ""),
|
|
("Address book", ""),
|
|
("Confirmation", ""),
|
|
("TCP tunneling", ""),
|
|
("Remove", ""),
|
|
("Refresh random password", ""),
|
|
("Set your own password", ""),
|
|
("Enable keyboard/mouse", ""),
|
|
("Enable clipboard", ""),
|
|
("Enable file transfer", ""),
|
|
("Enable TCP tunneling", ""),
|
|
("IP Whitelisting", ""),
|
|
("ID/Relay Server", ""),
|
|
("Import server config", ""),
|
|
("Export Server Config", ""),
|
|
("Import server configuration successfully", ""),
|
|
("Export server configuration successfully", ""),
|
|
("Invalid server configuration", ""),
|
|
("Clipboard is empty", ""),
|
|
("Stop service", ""),
|
|
("Change ID", ""),
|
|
("Your new ID", ""),
|
|
("length %min% to %max%", ""),
|
|
("starts with a letter", ""),
|
|
("allowed characters", ""),
|
|
("id_change_tip", ""),
|
|
("Website", ""),
|
|
("About", ""),
|
|
("Slogan_tip", ""),
|
|
("Privacy Statement", ""),
|
|
("Mute", ""),
|
|
("Build Date", ""),
|
|
("Version", ""),
|
|
("Home", ""),
|
|
("Audio Input", ""),
|
|
("Enhancements", ""),
|
|
("Hardware Codec", ""),
|
|
("Adaptive bitrate", ""),
|
|
("ID Server", ""),
|
|
("Relay Server", ""),
|
|
("API Server", ""),
|
|
("invalid_http", ""),
|
|
("Invalid IP", ""),
|
|
("Invalid format", ""),
|
|
("server_not_support", ""),
|
|
("Not available", ""),
|
|
("Too frequent", ""),
|
|
("Cancel", ""),
|
|
("Skip", ""),
|
|
("Close", ""),
|
|
("Retry", ""),
|
|
("OK", ""),
|
|
("Password Required", ""),
|
|
("Please enter your password", ""),
|
|
("Remember password", ""),
|
|
("Wrong Password", ""),
|
|
("Do you want to enter again?", ""),
|
|
("Connection Error", ""),
|
|
("Error", ""),
|
|
("Reset by the peer", ""),
|
|
("Connecting...", ""),
|
|
("Connection in progress. Please wait.", ""),
|
|
("Please try 1 minute later", ""),
|
|
("Login Error", ""),
|
|
("Successful", ""),
|
|
("Connected, waiting for image...", ""),
|
|
("Name", ""),
|
|
("Type", ""),
|
|
("Modified", ""),
|
|
("Size", ""),
|
|
("Show Hidden Files", ""),
|
|
("Receive", ""),
|
|
("Send", ""),
|
|
("Refresh File", ""),
|
|
("Local", ""),
|
|
("Remote", ""),
|
|
("Remote Computer", ""),
|
|
("Local Computer", ""),
|
|
("Confirm Delete", ""),
|
|
("Delete", ""),
|
|
("Properties", ""),
|
|
("Multi Select", ""),
|
|
("Select All", ""),
|
|
("Unselect All", ""),
|
|
("Empty Directory", ""),
|
|
("Not an empty directory", ""),
|
|
("Are you sure you want to delete this file?", ""),
|
|
("Are you sure you want to delete this empty directory?", ""),
|
|
("Are you sure you want to delete the file of this directory?", ""),
|
|
("Do this for all conflicts", ""),
|
|
("This is irreversible!", ""),
|
|
("Deleting", ""),
|
|
("files", ""),
|
|
("Waiting", ""),
|
|
("Finished", ""),
|
|
("Speed", ""),
|
|
("Custom Image Quality", ""),
|
|
("Privacy mode", ""),
|
|
("Block user input", ""),
|
|
("Unblock user input", ""),
|
|
("Adjust Window", ""),
|
|
("Original", ""),
|
|
("Shrink", ""),
|
|
("Stretch", ""),
|
|
("Scrollbar", ""),
|
|
("ScrollAuto", ""),
|
|
("Good image quality", ""),
|
|
("Balanced", ""),
|
|
("Optimize reaction time", ""),
|
|
("Custom", ""),
|
|
("Show remote cursor", ""),
|
|
("Show quality monitor", ""),
|
|
("Disable clipboard", ""),
|
|
("Lock after session end", ""),
|
|
("Insert Ctrl + Alt + Del", ""),
|
|
("Insert Lock", ""),
|
|
("Refresh", ""),
|
|
("ID does not exist", ""),
|
|
("Failed to connect to rendezvous server", ""),
|
|
("Please try later", ""),
|
|
("Remote desktop is offline", ""),
|
|
("Key mismatch", ""),
|
|
("Timeout", ""),
|
|
("Failed to connect to relay server", ""),
|
|
("Failed to connect via rendezvous server", ""),
|
|
("Failed to connect via relay server", ""),
|
|
("Failed to make direct connection to remote desktop", ""),
|
|
("Set Password", ""),
|
|
("OS Password", ""),
|
|
("install_tip", ""),
|
|
("Click to upgrade", ""),
|
|
("Configure", ""),
|
|
("config_acc", ""),
|
|
("config_screen", ""),
|
|
("Installing ...", ""),
|
|
("Install", ""),
|
|
("Installation", ""),
|
|
("Installation Path", ""),
|
|
("Create start menu shortcuts", ""),
|
|
("Create desktop icon", ""),
|
|
("agreement_tip", ""),
|
|
("Accept and Install", ""),
|
|
("End-user license agreement", ""),
|
|
("Generating ...", ""),
|
|
("Your installation is lower version.", ""),
|
|
("not_close_tcp_tip", ""),
|
|
("Listening ...", ""),
|
|
("Remote Host", ""),
|
|
("Remote Port", ""),
|
|
("Action", ""),
|
|
("Add", ""),
|
|
("Local Port", ""),
|
|
("Local Address", ""),
|
|
("Change Local Port", ""),
|
|
("setup_server_tip", ""),
|
|
("Too short, at least 6 characters.", ""),
|
|
("The confirmation is not identical.", ""),
|
|
("Permissions", ""),
|
|
("Accept", ""),
|
|
("Dismiss", ""),
|
|
("Disconnect", ""),
|
|
("Enable file copy and paste", ""),
|
|
("Connected", ""),
|
|
("Direct and encrypted connection", ""),
|
|
("Relayed and encrypted connection", ""),
|
|
("Direct and unencrypted connection", ""),
|
|
("Relayed and unencrypted connection", ""),
|
|
("Enter Remote ID", ""),
|
|
("Enter your password", ""),
|
|
("Logging in...", ""),
|
|
("Enable RDP session sharing", ""),
|
|
("Auto Login", ""),
|
|
("Enable direct IP access", ""),
|
|
("Rename", ""),
|
|
("Space", ""),
|
|
("Create desktop shortcut", ""),
|
|
("Change Path", ""),
|
|
("Create Folder", ""),
|
|
("Please enter the folder name", ""),
|
|
("Fix it", ""),
|
|
("Warning", ""),
|
|
("Login screen using Wayland is not supported", ""),
|
|
("Reboot required", ""),
|
|
("Unsupported display server", ""),
|
|
("x11 expected", ""),
|
|
("Port", ""),
|
|
("Settings", ""),
|
|
("Username", ""),
|
|
("Invalid port", ""),
|
|
("Closed manually by the peer", ""),
|
|
("Enable remote configuration modification", ""),
|
|
("Run without install", ""),
|
|
("Connect via relay", ""),
|
|
("Always connect via relay", ""),
|
|
("whitelist_tip", ""),
|
|
("Login", ""),
|
|
("Verify", ""),
|
|
("Remember me", ""),
|
|
("Trust this device", ""),
|
|
("Verification code", ""),
|
|
("verification_tip", ""),
|
|
("Logout", ""),
|
|
("Tags", ""),
|
|
("Search ID", ""),
|
|
("whitelist_sep", ""),
|
|
("Add ID", ""),
|
|
("Add Tag", ""),
|
|
("Unselect all tags", ""),
|
|
("Network error", ""),
|
|
("Username missed", ""),
|
|
("Password missed", ""),
|
|
("Wrong credentials", ""),
|
|
("The verification code is incorrect or has expired", ""),
|
|
("Edit Tag", ""),
|
|
("Forget Password", ""),
|
|
("Favorites", ""),
|
|
("Add to Favorites", ""),
|
|
("Remove from Favorites", ""),
|
|
("Empty", ""),
|
|
("Invalid folder name", ""),
|
|
("Socks5 Proxy", ""),
|
|
("Socks5/Http(s) Proxy", ""),
|
|
("Discovered", ""),
|
|
("install_daemon_tip", ""),
|
|
("Remote ID", ""),
|
|
("Paste", ""),
|
|
("Paste here?", ""),
|
|
("Are you sure to close the connection?", ""),
|
|
("Download new version", ""),
|
|
("Touch mode", ""),
|
|
("Mouse mode", ""),
|
|
("One-Finger Tap", ""),
|
|
("Left Mouse", ""),
|
|
("One-Long Tap", ""),
|
|
("Two-Finger Tap", ""),
|
|
("Right Mouse", ""),
|
|
("One-Finger Move", ""),
|
|
("Double Tap & Move", ""),
|
|
("Mouse Drag", ""),
|
|
("Three-Finger vertically", ""),
|
|
("Mouse Wheel", ""),
|
|
("Two-Finger Move", ""),
|
|
("Canvas Move", ""),
|
|
("Pinch to Zoom", ""),
|
|
("Canvas Zoom", ""),
|
|
("Reset canvas", ""),
|
|
("No permission of file transfer", ""),
|
|
("Note", ""),
|
|
("Connection", ""),
|
|
("Share screen", ""),
|
|
("Chat", ""),
|
|
("Total", ""),
|
|
("items", ""),
|
|
("Selected", ""),
|
|
("Screen Capture", ""),
|
|
("Input Control", ""),
|
|
("Audio Capture", ""),
|
|
("Do you accept?", ""),
|
|
("Open System Setting", ""),
|
|
("How to get Android input permission?", ""),
|
|
("android_input_permission_tip1", ""),
|
|
("android_input_permission_tip2", ""),
|
|
("android_new_connection_tip", ""),
|
|
("android_service_will_start_tip", ""),
|
|
("android_stop_service_tip", ""),
|
|
("android_version_audio_tip", ""),
|
|
("android_start_service_tip", ""),
|
|
("android_permission_may_not_change_tip", ""),
|
|
("Account", ""),
|
|
("Overwrite", ""),
|
|
("This file exists, skip or overwrite this file?", ""),
|
|
("Quit", ""),
|
|
("Help", ""),
|
|
("Failed", ""),
|
|
("Succeeded", ""),
|
|
("Someone turns on privacy mode, exit", ""),
|
|
("Unsupported", ""),
|
|
("Peer denied", ""),
|
|
("Please install plugins", ""),
|
|
("Peer exit", ""),
|
|
("Failed to turn off", ""),
|
|
("Turned off", ""),
|
|
("Language", ""),
|
|
("Keep RustDesk background service", ""),
|
|
("Ignore Battery Optimizations", ""),
|
|
("android_open_battery_optimizations_tip", ""),
|
|
("Start on boot", ""),
|
|
("Start the screen sharing service on boot, requires special permissions", ""),
|
|
("Connection not allowed", ""),
|
|
("Legacy mode", ""),
|
|
("Map mode", ""),
|
|
("Translate mode", ""),
|
|
("Use permanent password", ""),
|
|
("Use both passwords", ""),
|
|
("Set permanent password", ""),
|
|
("Enable remote restart", ""),
|
|
("Restart remote device", ""),
|
|
("Are you sure you want to restart", ""),
|
|
("Restarting remote device", ""),
|
|
("remote_restarting_tip", ""),
|
|
("Copied", ""),
|
|
("Exit Fullscreen", ""),
|
|
("Fullscreen", ""),
|
|
("Mobile Actions", ""),
|
|
("Select Monitor", ""),
|
|
("Control Actions", ""),
|
|
("Display Settings", ""),
|
|
("Ratio", ""),
|
|
("Image Quality", ""),
|
|
("Scroll Style", ""),
|
|
("Show Toolbar", ""),
|
|
("Hide Toolbar", ""),
|
|
("Direct Connection", ""),
|
|
("Relay Connection", ""),
|
|
("Secure Connection", ""),
|
|
("Insecure Connection", ""),
|
|
("Scale original", ""),
|
|
("Scale adaptive", ""),
|
|
("General", ""),
|
|
("Security", ""),
|
|
("Theme", ""),
|
|
("Dark Theme", ""),
|
|
("Light Theme", ""),
|
|
("Dark", ""),
|
|
("Light", ""),
|
|
("Follow System", ""),
|
|
("Enable hardware codec", ""),
|
|
("Unlock Security Settings", ""),
|
|
("Enable audio", ""),
|
|
("Unlock Network Settings", ""),
|
|
("Server", ""),
|
|
("Direct IP Access", ""),
|
|
("Proxy", ""),
|
|
("Apply", ""),
|
|
("Disconnect all devices?", ""),
|
|
("Clear", ""),
|
|
("Audio Input Device", ""),
|
|
("Use IP Whitelisting", ""),
|
|
("Network", ""),
|
|
("Pin Toolbar", ""),
|
|
("Unpin Toolbar", ""),
|
|
("Recording", ""),
|
|
("Directory", ""),
|
|
("Automatically record incoming sessions", ""),
|
|
("Automatically record outgoing sessions", ""),
|
|
("Change", ""),
|
|
("Start session recording", ""),
|
|
("Stop session recording", ""),
|
|
("Enable recording session", ""),
|
|
("Enable LAN discovery", ""),
|
|
("Deny LAN discovery", ""),
|
|
("Write a message", ""),
|
|
("Prompt", ""),
|
|
("Please wait for confirmation of UAC...", ""),
|
|
("elevated_foreground_window_tip", ""),
|
|
("Disconnected", ""),
|
|
("Other", ""),
|
|
("Confirm before closing multiple tabs", ""),
|
|
("Keyboard Settings", ""),
|
|
("Full Access", ""),
|
|
("Screen Share", ""),
|
|
("Wayland requires Ubuntu 21.04 or higher version.", ""),
|
|
("Wayland requires higher version of linux distro. Please try X11 desktop or change your OS.", ""),
|
|
("JumpLink", ""),
|
|
("Please Select the screen to be shared(Operate on the peer side).", ""),
|
|
("Show RustDesk", ""),
|
|
("This PC", ""),
|
|
("or", ""),
|
|
("Continue with", ""),
|
|
("Elevate", ""),
|
|
("Zoom cursor", ""),
|
|
("Accept sessions via password", ""),
|
|
("Accept sessions via click", ""),
|
|
("Accept sessions via both", ""),
|
|
("Please wait for the remote side to accept your session request...", ""),
|
|
("One-time Password", ""),
|
|
("Use one-time password", ""),
|
|
("One-time password length", ""),
|
|
("Request access to your device", ""),
|
|
("Hide connection management window", ""),
|
|
("hide_cm_tip", ""),
|
|
("wayland_experiment_tip", ""),
|
|
("Right click to select tabs", ""),
|
|
("Skipped", ""),
|
|
("Add to address book", ""),
|
|
("Group", ""),
|
|
("Search", ""),
|
|
("Closed manually by web console", ""),
|
|
("Local keyboard type", ""),
|
|
("Select local keyboard type", ""),
|
|
("software_render_tip", ""),
|
|
("Always use software rendering", ""),
|
|
("config_input", ""),
|
|
("config_microphone", ""),
|
|
("request_elevation_tip", ""),
|
|
("Wait", ""),
|
|
("Elevation Error", ""),
|
|
("Ask the remote user for authentication", ""),
|
|
("Choose this if the remote account is administrator", ""),
|
|
("Transmit the username and password of administrator", ""),
|
|
("still_click_uac_tip", ""),
|
|
("Request Elevation", ""),
|
|
("wait_accept_uac_tip", ""),
|
|
("Elevate successfully", ""),
|
|
("uppercase", ""),
|
|
("lowercase", ""),
|
|
("digit", ""),
|
|
("special character", ""),
|
|
("length>=8", ""),
|
|
("Weak", ""),
|
|
("Medium", ""),
|
|
("Strong", ""),
|
|
("Switch Sides", ""),
|
|
("Please confirm if you want to share your desktop?", ""),
|
|
("Display", ""),
|
|
("Default View Style", ""),
|
|
("Default Scroll Style", ""),
|
|
("Default Image Quality", ""),
|
|
("Default Codec", ""),
|
|
("Bitrate", ""),
|
|
("FPS", ""),
|
|
("Auto", ""),
|
|
("Other Default Options", ""),
|
|
("Voice call", ""),
|
|
("Text chat", ""),
|
|
("Stop voice call", ""),
|
|
("relay_hint_tip", ""),
|
|
("Reconnect", ""),
|
|
("Codec", ""),
|
|
("Resolution", ""),
|
|
("No transfers in progress", ""),
|
|
("Set one-time password length", ""),
|
|
("RDP Settings", ""),
|
|
("Sort by", ""),
|
|
("New Connection", ""),
|
|
("Restore", ""),
|
|
("Minimize", ""),
|
|
("Maximize", ""),
|
|
("Your Device", ""),
|
|
("empty_recent_tip", ""),
|
|
("empty_favorite_tip", ""),
|
|
("empty_lan_tip", ""),
|
|
("empty_address_book_tip", ""),
|
|
("Empty Username", ""),
|
|
("Empty Password", ""),
|
|
("Me", ""),
|
|
("identical_file_tip", ""),
|
|
("show_monitors_tip", ""),
|
|
("View Mode", ""),
|
|
("login_linux_tip", ""),
|
|
("verify_rustdesk_password_tip", ""),
|
|
("remember_account_tip", ""),
|
|
("os_account_desk_tip", ""),
|
|
("OS Account", ""),
|
|
("another_user_login_title_tip", ""),
|
|
("another_user_login_text_tip", ""),
|
|
("xorg_not_found_title_tip", ""),
|
|
("xorg_not_found_text_tip", ""),
|
|
("no_desktop_title_tip", ""),
|
|
("no_desktop_text_tip", ""),
|
|
("No need to elevate", ""),
|
|
("System Sound", ""),
|
|
("Default", ""),
|
|
("New RDP", ""),
|
|
("Fingerprint", ""),
|
|
("Copy Fingerprint", ""),
|
|
("no fingerprints", ""),
|
|
("Select a peer", ""),
|
|
("Select peers", ""),
|
|
("Plugins", ""),
|
|
("Uninstall", ""),
|
|
("Update", ""),
|
|
("Enable", ""),
|
|
("Disable", ""),
|
|
("Options", ""),
|
|
("resolution_original_tip", ""),
|
|
("resolution_fit_local_tip", ""),
|
|
("resolution_custom_tip", ""),
|
|
("Collapse toolbar", ""),
|
|
("Accept and Elevate", ""),
|
|
("accept_and_elevate_btn_tooltip", ""),
|
|
("clipboard_wait_response_timeout_tip", ""),
|
|
("Incoming connection", ""),
|
|
("Outgoing connection", ""),
|
|
("Exit", ""),
|
|
("Open", ""),
|
|
("logout_tip", ""),
|
|
("Service", ""),
|
|
("Start", ""),
|
|
("Stop", ""),
|
|
("exceed_max_devices", ""),
|
|
("Sync with recent sessions", ""),
|
|
("Sort tags", ""),
|
|
("Open connection in new tab", ""),
|
|
("Move tab to new window", ""),
|
|
("Can not be empty", ""),
|
|
("Already exists", ""),
|
|
("Change Password", ""),
|
|
("Refresh Password", ""),
|
|
("ID", ""),
|
|
("Grid View", ""),
|
|
("List View", ""),
|
|
("Select", ""),
|
|
("Toggle Tags", ""),
|
|
("pull_ab_failed_tip", ""),
|
|
("push_ab_failed_tip", ""),
|
|
("synced_peer_readded_tip", ""),
|
|
("Change Color", ""),
|
|
("Primary Color", ""),
|
|
("HSV Color", ""),
|
|
("Installation Successful!", ""),
|
|
("Installation failed!", ""),
|
|
("Reverse mouse wheel", ""),
|
|
("{} sessions", ""),
|
|
("scam_title", ""),
|
|
("scam_text1", ""),
|
|
("scam_text2", ""),
|
|
("Don't show again", ""),
|
|
("I Agree", ""),
|
|
("Decline", ""),
|
|
("Timeout in minutes", ""),
|
|
("auto_disconnect_option_tip", ""),
|
|
("Connection failed due to inactivity", ""),
|
|
("Check for software update on startup", ""),
|
|
("upgrade_rustdesk_server_pro_to_{}_tip", ""),
|
|
("pull_group_failed_tip", ""),
|
|
("Filter by intersection", ""),
|
|
("Remove wallpaper during incoming sessions", ""),
|
|
("Test", ""),
|
|
("display_is_plugged_out_msg", ""),
|
|
("No displays", ""),
|
|
("Open in new window", ""),
|
|
("Show displays as individual windows", ""),
|
|
("Use all my displays for the remote session", ""),
|
|
("selinux_tip", ""),
|
|
("Change view", ""),
|
|
("Big tiles", ""),
|
|
("Small tiles", ""),
|
|
("List", ""),
|
|
("Virtual display", ""),
|
|
("Plug out all", ""),
|
|
("True color (4:4:4)", ""),
|
|
("Enable blocking user input", ""),
|
|
("id_input_tip", ""),
|
|
("privacy_mode_impl_mag_tip", ""),
|
|
("privacy_mode_impl_virtual_display_tip", ""),
|
|
("Enter privacy mode", ""),
|
|
("Exit privacy mode", ""),
|
|
("idd_not_support_under_win10_2004_tip", ""),
|
|
("input_source_1_tip", ""),
|
|
("input_source_2_tip", ""),
|
|
("Swap control-command key", ""),
|
|
("swap-left-right-mouse", ""),
|
|
("2FA code", ""),
|
|
("More", ""),
|
|
("enable-2fa-title", ""),
|
|
("enable-2fa-desc", ""),
|
|
("wrong-2fa-code", ""),
|
|
("enter-2fa-title", ""),
|
|
("Email verification code must be 6 characters.", ""),
|
|
("2FA code must be 6 digits.", ""),
|
|
("Multiple Windows sessions found", ""),
|
|
("Please select the session you want to connect to", ""),
|
|
("powered_by_me", ""),
|
|
("outgoing_only_desk_tip", ""),
|
|
("preset_password_warning", ""),
|
|
("Security Alert", ""),
|
|
("My address book", ""),
|
|
("Personal", ""),
|
|
("Owner", ""),
|
|
("Set shared password", ""),
|
|
("Exist in", ""),
|
|
("Read-only", ""),
|
|
("Read/Write", ""),
|
|
("Full Control", ""),
|
|
("share_warning_tip", ""),
|
|
("Everyone", ""),
|
|
("ab_web_console_tip", ""),
|
|
("allow-only-conn-window-open-tip", ""),
|
|
("no_need_privacy_mode_no_physical_displays_tip", ""),
|
|
("Follow remote cursor", ""),
|
|
("Follow remote window focus", ""),
|
|
("default_proxy_tip", ""),
|
|
("no_audio_input_device_tip", ""),
|
|
("Incoming", ""),
|
|
("Outgoing", ""),
|
|
("Clear Wayland screen selection", ""),
|
|
("clear_Wayland_screen_selection_tip", ""),
|
|
("confirm_clear_Wayland_screen_selection_tip", ""),
|
|
("android_new_voice_call_tip", ""),
|
|
("texture_render_tip", ""),
|
|
("Use texture rendering", ""),
|
|
("Floating window", ""),
|
|
("floating_window_tip", ""),
|
|
("Keep screen on", ""),
|
|
("Never", ""),
|
|
("During controlled", ""),
|
|
("During service is on", ""),
|
|
("Capture screen using DirectX", ""),
|
|
("Back", ""),
|
|
("Apps", ""),
|
|
("Volume up", ""),
|
|
("Volume down", ""),
|
|
("Power", ""),
|
|
("Telegram bot", ""),
|
|
("enable-bot-tip", ""),
|
|
("enable-bot-desc", ""),
|
|
("cancel-2fa-confirm-tip", ""),
|
|
("cancel-bot-confirm-tip", ""),
|
|
("About RustDesk", ""),
|
|
("Send clipboard keystrokes", ""),
|
|
("network_error_tip", ""),
|
|
("Unlock with PIN", ""),
|
|
("Requires at least {} characters", ""),
|
|
("Wrong PIN", ""),
|
|
("Set PIN", ""),
|
|
("Enable trusted devices", ""),
|
|
("Manage trusted devices", ""),
|
|
("Platform", ""),
|
|
("Days remaining", ""),
|
|
("enable-trusted-devices-tip", ""),
|
|
("Parent directory", ""),
|
|
("Resume", ""),
|
|
("Invalid file name", ""),
|
|
("one-way-file-transfer-tip", ""),
|
|
("Authentication Required", ""),
|
|
("Authenticate", ""),
|
|
("web_id_input_tip", ""),
|
|
("Download", ""),
|
|
("Upload folder", ""),
|
|
("Upload files", ""),
|
|
("Clipboard is synchronized", ""),
|
|
("Update client clipboard", ""),
|
|
("Untagged", ""),
|
|
("new-version-of-{}-tip", ""),
|
|
("Accessible devices", ""),
|
|
("upgrade_remote_rustdesk_client_to_{}_tip", ""),
|
|
("d3d_render_tip", ""),
|
|
("Use D3D rendering", ""),
|
|
("Printer", ""),
|
|
("printer-os-requirement-tip", ""),
|
|
("printer-requires-installed-{}-client-tip", ""),
|
|
("printer-{}-not-installed-tip", ""),
|
|
("printer-{}-ready-tip", ""),
|
|
("Install {} Printer", ""),
|
|
("Outgoing Print Jobs", ""),
|
|
("Incoming Print Jobs", ""),
|
|
("Incoming Print Job", ""),
|
|
("use-the-default-printer-tip", ""),
|
|
("use-the-selected-printer-tip", ""),
|
|
("auto-print-tip", ""),
|
|
("print-incoming-job-confirm-tip", ""),
|
|
("remote-printing-disallowed-tile-tip", ""),
|
|
("remote-printing-disallowed-text-tip", ""),
|
|
("save-settings-tip", ""),
|
|
("dont-show-again-tip", ""),
|
|
("Take screenshot", ""),
|
|
("Taking screenshot", ""),
|
|
("screenshot-merged-screen-not-supported-tip", ""),
|
|
("screenshot-action-tip", ""),
|
|
("Save as", ""),
|
|
("Copy to clipboard", ""),
|
|
("Enable remote printer", ""),
|
|
("Downloading {}", ""),
|
|
("{} Update", ""),
|
|
("{}-to-update-tip", ""),
|
|
("download-new-version-failed-tip", ""),
|
|
("Auto update", ""),
|
|
("update-failed-check-msi-tip", ""),
|
|
("websocket_tip", ""),
|
|
("Use WebSocket", ""),
|
|
("Trackpad speed", ""),
|
|
("Default trackpad speed", ""),
|
|
("Numeric one-time password", ""),
|
|
("Enable IPv6 P2P connection", ""),
|
|
("Enable UDP hole punching", ""),
|
|
("View camera", ""),
|
|
("Enable camera", ""),
|
|
("No cameras", ""),
|
|
("view_camera_unsupported_tip", ""),
|
|
("Terminal", ""),
|
|
("Enable terminal", ""),
|
|
("New tab", ""),
|
|
("Keep terminal sessions on disconnect", ""),
|
|
("Terminal (Run as administrator)", ""),
|
|
("terminal-admin-login-tip", ""),
|
|
("Failed to get user token.", ""),
|
|
("Incorrect username or password.", ""),
|
|
("The user is not an administrator.", ""),
|
|
("Failed to check if the user is an administrator.", ""),
|
|
("Supported only in the installed version.", ""),
|
|
("elevation_username_tip", ""),
|
|
("Preparing for installation ...", ""),
|
|
("Show my cursor", ""),
|
|
("Scale custom", ""),
|
|
("Custom scale slider", ""),
|
|
("Decrease", ""),
|
|
("Increase", ""),
|
|
("Show virtual mouse", ""),
|
|
("Virtual mouse size", ""),
|
|
("Small", ""),
|
|
("Large", ""),
|
|
("Show virtual joystick", ""),
|
|
("Edit note", ""),
|
|
("Alias", ""),
|
|
("ScrollEdge", ""),
|
|
].iter().cloned().collect();
|
|
}
|