mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
Merge branch 'master' of https://github.com/rustdesk/rustdesk
This commit is contained in:
@@ -38,6 +38,17 @@ pub fn core_main() -> Option<Vec<String>> {
|
||||
}
|
||||
i += 1;
|
||||
}
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(feature = "flutter")]
|
||||
{
|
||||
crate::platform::linux::register_breakdown_handler();
|
||||
let (k, v) = ("LIBGL_ALWAYS_SOFTWARE", "true");
|
||||
if !hbb_common::config::Config::get_option("allow-always-software-render").is_empty() {
|
||||
std::env::set_var(k, v);
|
||||
} else {
|
||||
std::env::remove_var(k);
|
||||
}
|
||||
}
|
||||
#[cfg(feature = "flutter")]
|
||||
if _is_flutter_connect {
|
||||
return core_main_invoke_new_connection(std::env::args());
|
||||
|
||||
@@ -885,9 +885,11 @@ pub fn session_send_mouse(id: String, msg: String) {
|
||||
}
|
||||
if let Some(buttons) = m.get("buttons") {
|
||||
mask |= match buttons.as_str() {
|
||||
"left" => 1,
|
||||
"right" => 2,
|
||||
"wheel" => 4,
|
||||
"left" => 0x01,
|
||||
"right" => 0x02,
|
||||
"wheel" => 0x04,
|
||||
"back" => 0x08,
|
||||
"forward" => 0x10,
|
||||
_ => 0,
|
||||
} << 3;
|
||||
}
|
||||
@@ -1111,6 +1113,10 @@ pub fn main_is_can_screen_recording(prompt: bool) -> SyncReturn<bool> {
|
||||
SyncReturn(is_can_screen_recording(prompt))
|
||||
}
|
||||
|
||||
pub fn main_is_can_input_monitoring(prompt: bool) -> SyncReturn<bool> {
|
||||
SyncReturn(is_can_input_monitoring(prompt))
|
||||
}
|
||||
|
||||
pub fn main_is_share_rdp() -> SyncReturn<bool> {
|
||||
SyncReturn(is_share_rdp())
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ mod sv;
|
||||
mod sq;
|
||||
mod sr;
|
||||
mod th;
|
||||
mod sl;
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
pub static ref LANGS: Value =
|
||||
@@ -63,6 +64,7 @@ lazy_static::lazy_static! {
|
||||
("sq", "Shqip"),
|
||||
("sr", "Srpski"),
|
||||
("th", "ภาษาไทย"),
|
||||
("sl", "Slovenščina"),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -120,6 +122,7 @@ pub fn translate_locale(name: String, locale: &str) -> String {
|
||||
"sq" => sq::T.deref(),
|
||||
"sr" => sr::T.deref(),
|
||||
"th" => th::T.deref(),
|
||||
"sl" => sl::T.deref(),
|
||||
_ => en::T.deref(),
|
||||
};
|
||||
if let Some(v) = m.get(&name as &str) {
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Password", "密码"),
|
||||
("Ready", "就绪"),
|
||||
("Established", "已建立"),
|
||||
("connecting_status", "正在接入RustDesk网络..."),
|
||||
("connecting_status", "正在接入 RustDesk 网络..."),
|
||||
("Enable Service", "允许服务"),
|
||||
("Start Service", "启动服务"),
|
||||
("Service is running", "服务正在运行"),
|
||||
@@ -138,13 +138,13 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Failed to make direct connection to remote desktop", "无法建立直接连接"),
|
||||
("Set Password", "设置密码"),
|
||||
("OS Password", "操作系统密码"),
|
||||
("install_tip", "你正在运行未安装版本,由于UAC限制,作为被控端,会在某些情况下无法控制鼠标键盘,或者录制屏幕,请点击下面的按钮将RustDesk安装到系统,从而规避上述问题。"),
|
||||
("install_tip", "你正在运行未安装版本,由于UAC限制,作为被控端,会在某些情况下无法控制鼠标键盘,或者录制屏幕,请点击下面的按钮将 RustDesk 安装到系统,从而规避上述问题。"),
|
||||
("Click to upgrade", "点击这里升级"),
|
||||
("Click to download", "点击这里下载"),
|
||||
("Click to update", "点击这里更新"),
|
||||
("Configure", "配置"),
|
||||
("config_acc", "为了能够远程控制你的桌面, 请给予RustDesk\"辅助功能\" 权限。"),
|
||||
("config_screen", "为了能够远程访问你的桌面, 请给予RustDesk\"屏幕录制\" 权限。"),
|
||||
("config_acc", "为了能够远程控制你的桌面, 请给予 RustDesk \"辅助功能\" 权限。"),
|
||||
("config_screen", "为了能够远程访问你的桌面, 请给予 RustDesk \"屏幕录制\" 权限。"),
|
||||
("Installing ...", "安装 ..."),
|
||||
("Install", "安装"),
|
||||
("Installation", "安装"),
|
||||
@@ -303,9 +303,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("In privacy mode", "进入隐私模式"),
|
||||
("Out privacy mode", "退出隐私模式"),
|
||||
("Language", "语言"),
|
||||
("Keep RustDesk background service", "保持RustDesk后台服务"),
|
||||
("Keep RustDesk background service", "保持 RustDesk 后台服务"),
|
||||
("Ignore Battery Optimizations", "忽略电池优化"),
|
||||
("android_open_battery_optimizations_tip", "如需关闭此功能,请在接下来的RustDesk应用设置页面中,找到并进入 [电源] 页面,取消勾选 [不受限制]"),
|
||||
("android_open_battery_optimizations_tip", "如需关闭此功能,请在接下来的 RustDesk 应用设置页面中,找到并进入 [电源] 页面,取消勾选 [不受限制]"),
|
||||
("Connection not allowed", "对方不允许连接"),
|
||||
("Legacy mode", "传统模式"),
|
||||
("Map mode", "1:1传输"),
|
||||
@@ -385,7 +385,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Wayland requires higher version of linux distro. Please try X11 desktop or change your OS.", "Wayland 需要更高版本的 linux 发行版。 请尝试 X11 桌面或更改您的操作系统。"),
|
||||
("JumpLink", "查看"),
|
||||
("Please Select the screen to be shared(Operate on the peer side).", "请选择要分享的画面(对端操作)。"),
|
||||
("Show RustDesk", "显示rustdesk"),
|
||||
("Show RustDesk", "显示 RustDesk"),
|
||||
("This PC", "此电脑"),
|
||||
("or", "或"),
|
||||
("Continue with", "使用"),
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", "被web控制台手动关闭"),
|
||||
("Local keyboard type", "本地键盘类型"),
|
||||
("Select local keyboard type", "请选择本地键盘类型"),
|
||||
("software_render_tip", "如果你使用英伟达显卡, 并且远程窗口在会话建立后会立刻关闭, 那么安装nouveau驱动并且选择使用软件渲染可能会有帮助。重启软件后生效。"),
|
||||
("Always use software rendering", "使用软件渲染"),
|
||||
("config_input", "为了能够通过键盘控制远程桌面, 请给予 RustDesk \"输入监控\" 权限。"),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Established", "Verbunden"),
|
||||
("connecting_status", "Verbinden mit dem RustDesk-Netzwerk..."),
|
||||
("Enable Service", "Vermittlungsdienst aktivieren"),
|
||||
("Start Service", "Starte Vermittlungsdienst"),
|
||||
("Start Service", "Vermittlungsdienst starten"),
|
||||
("Service is running", "Vermittlungsdienst aktiv"),
|
||||
("Service is not running", "Vermittlungsdienst deaktiviert"),
|
||||
("not_ready_status", "Nicht bereit. Bitte überprüfen Sie Ihre Netzwerkverbindung."),
|
||||
@@ -35,7 +35,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Export server configuration successfully", "Serverkonfiguration erfolgreich exportiert"),
|
||||
("Invalid server configuration", "Ungültige Serverkonfiguration"),
|
||||
("Clipboard is empty", "Zwischenablage ist leer"),
|
||||
("Stop service", "Vermittlungsdienst deaktivieren"),
|
||||
("Stop service", "Vermittlungsdienst stoppen"),
|
||||
("Change ID", "ID ändern"),
|
||||
("Website", "Webseite"),
|
||||
("About", "Über"),
|
||||
@@ -165,7 +165,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Local Port", "Lokaler Port"),
|
||||
("Local Address", "Lokale Adresse"),
|
||||
("Change Local Port", "Lokalen Port ändern"),
|
||||
("setup_server_tip", "für eine schnellere Verbindung richten Sie bitte Ihren eigenen Verbindungsserver ein."),
|
||||
("setup_server_tip", "für eine schnellere Verbindung richten Sie bitte Ihren eigenen Server ein."),
|
||||
("Too short, at least 6 characters.", "Zu kurz, mindestens 6 Zeichen."),
|
||||
("The confirmation is not identical.", "Die Passwörter stimmen nicht überein."),
|
||||
("Permissions", "Berechtigungen"),
|
||||
@@ -244,7 +244,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Are you sure to close the connection?", "Möchten Sie diese Verbindung wirklich trennen?"),
|
||||
("Download new version", "Neue Version herunterladen"),
|
||||
("Touch mode", "Touch-Modus"),
|
||||
("Mouse mode", "Maus-Modus"),
|
||||
("Mouse mode", "Mausmodus"),
|
||||
("One-Finger Tap", "1-Finger-Tipp"),
|
||||
("Left Mouse", "Linksklick"),
|
||||
("One-Long Tap", "1-Finger-Halten"),
|
||||
@@ -260,8 +260,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Pinch to Zoom", "2-Finger-Zoom"),
|
||||
("Canvas Zoom", "Sichtfeld-Zoom"),
|
||||
("Reset canvas", "Sichtfeld zurücksetzen"),
|
||||
("No permission of file transfer", "Keine Berechtigung für den Dateizugriff"),
|
||||
("Note", "Anmerkung"),
|
||||
("No permission of file transfer", "Keine Berechtigung für die Dateiübertragung"),
|
||||
("Note", "Hinweis"),
|
||||
("Connection", "Verbindung"),
|
||||
("Share Screen", "Bildschirm freigeben"),
|
||||
("CLOSE", "DEAKTIV."),
|
||||
@@ -278,7 +278,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Do you accept?", "Verbindung zulassen?"),
|
||||
("Open System Setting", "Systemeinstellung öffnen"),
|
||||
("How to get Android input permission?", "Wie erhalte ich eine Android-Eingabeberechtigung?"),
|
||||
("android_input_permission_tip1", "Damit ein Remote-Gerät Ihr Android-Gerät steuern kann, müssen Sie RustDesk erlauben, den Dienst \"Barrierefreiheit\" zu verwenden."),
|
||||
("android_input_permission_tip1", "Damit ein entferntes Gerät Ihr Android-Gerät steuern kann, müssen Sie RustDesk erlauben, den Dienst \"Barrierefreiheit\" zu verwenden."),
|
||||
("android_input_permission_tip2", "Bitte gehen Sie zur nächsten Systemeinstellungsseite, suchen Sie [Installierte Dienste] und schalten Sie den Dienst [RustDesk Input] ein."),
|
||||
("android_new_connection_tip", "möchte ihr Gerät steuern."),
|
||||
("android_service_will_start_tip", "Durch das Aktivieren der Bildschirmfreigabe wird der Dienst automatisch gestartet, sodass andere Geräte dieses Android-Gerät steuern können."),
|
||||
@@ -295,9 +295,9 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Succeeded", "Erfolgreich"),
|
||||
("Someone turns on privacy mode, exit", "Jemand hat den Datenschutzmodus aktiviert, beende..."),
|
||||
("Unsupported", "Nicht unterstützt"),
|
||||
("Peer denied", "Die Gegenstelle hat die Verbindung abgelehnt"),
|
||||
("Peer denied", "Die Gegenstelle hat die Verbindung abgelehnt."),
|
||||
("Please install plugins", "Bitte installieren Sie Plugins"),
|
||||
("Peer exit", "Die Gegenstelle hat die Verbindung getrennt"),
|
||||
("Peer exit", "Die Gegenstelle hat die Verbindung getrennt."),
|
||||
("Failed to turn off", "Ausschalten fehlgeschlagen"),
|
||||
("Turned off", "Ausgeschaltet"),
|
||||
("In privacy mode", "Datenschutzmodus aktivieren"),
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", "Manuell über die Webkonsole beendet"),
|
||||
("Local keyboard type", "Lokaler Tastaturtyp"),
|
||||
("Select local keyboard type", "Lokalen Tastaturtyp auswählen"),
|
||||
("software_render_tip", "Wenn Sie eine Nvidia-Grafikkarte haben und sich das entfernte Fenster sofort nach dem Herstellen der Verbindung schließt, kann es helfen, den Nouveau-Treiber zu installieren und Software-Rendering zu verwenden. Ein Neustart der Software ist erforderlich."),
|
||||
("Always use software rendering", "Software-Rendering immer verwenden"),
|
||||
("config_input", "Um den entfernten Desktop mit der Tastatur steuern zu können, müssen Sie RustDesk \"Input Monitoring\"-Rechte erteilen."),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -37,5 +37,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("wayland_experiment_tip", "Wayland support is in experimental stage, please use X11 if you require unattended access."),
|
||||
("Slogan_tip", "Made with heart in this chaotic world!"),
|
||||
("verification_tip", "A new device has been detected, and a verification code has been sent to the registered email address, enter the verification code to continue logging in."),
|
||||
("software_render_tip", "If you have an Nvidia graphics card and the remote window closes immediately after connecting, installing the nouveau driver and choosing to use software rendering may help. A software restart is required."),
|
||||
("config_input", "In order to control remote desktop with keyboard, you need to grant RustDesk \"Input Monitoring\" permissions."),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Change ID", "Cambiar ID"),
|
||||
("Website", "Sitio web"),
|
||||
("About", "Acerca de"),
|
||||
("Slogan_tip", ""),
|
||||
("Slogan_tip", "Hecho con corazón en este mundo caótico!"),
|
||||
("Privacy Statement", ""),
|
||||
("Mute", "Silenciar"),
|
||||
("Audio Input", "Entrada de audio"),
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", "Cerrado manualmente por la consola web"),
|
||||
("Local keyboard type", "Tipo de teclado local"),
|
||||
("Select local keyboard type", "Seleccionar tipo de teclado local"),
|
||||
("software_render_tip", "Si tienes una gráfica Nvidia y la ventana remota se cierra inmediatamente, instalar el driver nouveau y elegir renderizado por software podría ayudar. Se requiere reiniciar la aplicación."),
|
||||
("Always use software rendering", "Usar siempre renderizado por software"),
|
||||
("config_input", "Para controlar el escritorio remoto con el teclado necesitas dar a RustDesk permisos de \"Monitorización de entrada\"."),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", "Fermé manuellement par la console Web"),
|
||||
("Local keyboard type", "Disposition du clavier local"),
|
||||
("Select local keyboard type", "Selectionner la disposition du clavier local"),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", "Chiudi manualmente dalla console Web"),
|
||||
("Local keyboard type", "Tipo di tastiera locale"),
|
||||
("Select local keyboard type", "Seleziona il tipo di tastiera locale"),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the peer", "Закрыто удалённым узлом вручную"),
|
||||
("Enable remote configuration modification", "Разрешить удалённое изменение конфигурации"),
|
||||
("Run without install", "Запустить без установки"),
|
||||
("Always connected via relay", "Всегда подключён через ретрансляционный сервер"),
|
||||
("Always connected via relay", "Всегда подключается через ретрансляционный сервер"),
|
||||
("Always connect via relay", "Всегда подключаться через ретрансляционный сервер"),
|
||||
("whitelist_tip", "Только IP-адреса из белого списка могут получить доступ ко мне"),
|
||||
("Login", "Войти"),
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", "Закрыто вручную через веб-консоль"),
|
||||
("Local keyboard type", "Тип локальной клавиатуры"),
|
||||
("Select local keyboard type", "Выберите тип локальной клавиатуры"),
|
||||
("software_render_tip", "Если у вас видеокарта Nvidia и удалённое окно закрывается сразу после подключения, может помочь установка драйвера Nouveau и выбор использования программной визуализации. Потребуется перезапуск."),
|
||||
("Always use software rendering", "Использовать программную визуализацию"),
|
||||
("config_input", "Чтобы управлять удалённым рабочим столом с помощью клавиатуры, необходимо предоставить RustDesk разрешения \"Мониторинг ввода\"."),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
417
src/lang/sl.rs
Executable file
417
src/lang/sl.rs
Executable file
@@ -0,0 +1,417 @@
|
||||
lazy_static::lazy_static! {
|
||||
pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
[
|
||||
("Status", "Stanje"),
|
||||
("Your Desktop", "Vaše namizje"),
|
||||
("desk_tip", "Do vašega namizja lahko dostopate s spodnjim IDjem in geslom"),
|
||||
("Password", "Geslo"),
|
||||
("Ready", "Pripravljen"),
|
||||
("Established", "Povezava vzpostavljena"),
|
||||
("connecting_status", "Vzpostavljanje povezave z omrežjem RustDesk..."),
|
||||
("Enable Service", "Omogoči storitev"),
|
||||
("Start Service", "Zaženi storitev"),
|
||||
("Service is running", "Storitev se izvaja"),
|
||||
("Service is not running", "Storitev se ne izvaja"),
|
||||
("not_ready_status", "Ni pripravljeno, preverite vašo mrežno povezavo"),
|
||||
("Control Remote Desktop", "Nadzoruj oddaljeno namizje"),
|
||||
("Transfer File", "Prenos datotek"),
|
||||
("Connect", "Poveži"),
|
||||
("Recent Sessions", "Nedavne seje"),
|
||||
("Address Book", "Adresar"),
|
||||
("Confirmation", "Potrditev"),
|
||||
("TCP Tunneling", "TCP tuneliranje"),
|
||||
("Remove", "Odstrani"),
|
||||
("Refresh random password", "Osveži naključno geslo"),
|
||||
("Set your own password", "Nastavi lastno geslo"),
|
||||
("Enable Keyboard/Mouse", "Omogoči tipkovnico in miško"),
|
||||
("Enable Clipboard", "Omogoči odložišče"),
|
||||
("Enable File Transfer", "Omogoči prenos datotek"),
|
||||
("Enable TCP Tunneling", "Omogoči TCP tuneliranje"),
|
||||
("IP Whitelisting", "Omogoči seznam dovoljenih IPjev"),
|
||||
("ID/Relay Server", "Strežnik za ID/posredovanje"),
|
||||
("Import Server Config", "Uvozi nastavitve strežnika"),
|
||||
("Export Server Config", "Izvozi nastavitve strežnika"),
|
||||
("Import server configuration successfully", "Nastavitve strežnika uspešno uvožene"),
|
||||
("Export server configuration successfully", "Nastavitve strežnika uspešno izvožene"),
|
||||
("Invalid server configuration", "Neveljavne nastavitve strežnika"),
|
||||
("Clipboard is empty", "Odložišče je prazno"),
|
||||
("Stop service", "Ustavi storitev"),
|
||||
("Change ID", "Spremeni ID"),
|
||||
("Website", "Spletna stran"),
|
||||
("About", "O programu"),
|
||||
("Slogan_tip", ""),
|
||||
("Privacy Statement", ""),
|
||||
("Mute", "Izklopi zvok"),
|
||||
("Audio Input", "Avdio vhod"),
|
||||
("Enhancements", "Izboljšave"),
|
||||
("Hardware Codec", "Strojni kodek"),
|
||||
("Adaptive Bitrate", "Prilagodljiva bitna hitrost"),
|
||||
("ID Server", "ID strežnik"),
|
||||
("Relay Server", "Posredniški strežnik"),
|
||||
("API Server", "API strežnik"),
|
||||
("invalid_http", "mora se začeti s http:// ali https://"),
|
||||
("Invalid IP", "Neveljaven IP"),
|
||||
("id_change_tip", "Dovoljeni znaki so a-z, A-Z (brez šumnikov), 0-9 in _. Prvi znak mora biti črka, dolžina od 6 do 16 znakov."),
|
||||
("Invalid format", "Neveljavna oblika"),
|
||||
("server_not_support", "Strežnik še ne podpira"),
|
||||
("Not available", "Ni na voljo"),
|
||||
("Too frequent", "Prepogosto"),
|
||||
("Cancel", "Prekliči"),
|
||||
("Skip", "Izpusti"),
|
||||
("Close", "Zapri"),
|
||||
("Retry", "Ponovi"),
|
||||
("OK", "V redu"),
|
||||
("Password Required", "Potrebno je geslo"),
|
||||
("Please enter your password", "Vnesite vaše geslo"),
|
||||
("Remember password", "Zapomni si geslo"),
|
||||
("Wrong Password", "Napačno geslo"),
|
||||
("Do you want to enter again?", "Želite znova vnesti?"),
|
||||
("Connection Error", "Napaka pri povezavi"),
|
||||
("Error", "Napaka"),
|
||||
("Reset by the peer", "Povezava prekinjena"),
|
||||
("Connecting...", "Povezovanje..."),
|
||||
("Connection in progress. Please wait.", "Vzpostavljanje povezave, prosim počakajte."),
|
||||
("Please try 1 minute later", "Poizkusite čez 1 minuto"),
|
||||
("Login Error", "Napaka pri prijavi"),
|
||||
("Successful", "Uspešno"),
|
||||
("Connected, waiting for image...", "Povezava vzpostavljena, čakam na sliko..."),
|
||||
("Name", "Ime"),
|
||||
("Type", "Vrsta"),
|
||||
("Modified", "Čas spremembe"),
|
||||
("Size", "Velikost"),
|
||||
("Show Hidden Files", "Prikaži skrite datoteke"),
|
||||
("Receive", "Prejmi"),
|
||||
("Send", "Pošlji"),
|
||||
("Refresh File", "Osveži datoteko"),
|
||||
("Local", "Lokalno"),
|
||||
("Remote", "Oddaljeno"),
|
||||
("Remote Computer", "Oddaljeni računalnik"),
|
||||
("Local Computer", "Lokalni računalnik"),
|
||||
("Confirm Delete", "Potrdi izbris"),
|
||||
("Delete", "Izbriši"),
|
||||
("Properties", "Lastnosti"),
|
||||
("Multi Select", "Večkratna izbira"),
|
||||
("Select All", "Izberi vse"),
|
||||
("Unselect All", "Počisti vse"),
|
||||
("Empty Directory", "Prazen imenik"),
|
||||
("Not an empty directory", "Imenik ni prazen"),
|
||||
("Are you sure you want to delete this file?", "Ali res želite izbrisati to datoteko?"),
|
||||
("Are you sure you want to delete this empty directory?", "Ali res želite izbrisati to prazno mapo?"),
|
||||
("Are you sure you want to delete the file of this directory?", "Ali res želite datoteko iz mape?"),
|
||||
("Do this for all conflicts", "Naredi to za vse"),
|
||||
("This is irreversible!", "Tega dejanja ni mogoče razveljaviti!"),
|
||||
("Deleting", "Brisanje"),
|
||||
("files", "datoteke"),
|
||||
("Waiting", "Čakanje"),
|
||||
("Finished", "Opravljeno"),
|
||||
("Speed", "Hitrost"),
|
||||
("Custom Image Quality", "Kakovost slike po meri"),
|
||||
("Privacy mode", "Zasebni način"),
|
||||
("Block user input", "Onemogoči uporabnikov vnos"),
|
||||
("Unblock user input", "Omogoči uporabnikov vnos"),
|
||||
("Adjust Window", "Prilagodi okno"),
|
||||
("Original", "Originalno"),
|
||||
("Shrink", "Skrči"),
|
||||
("Stretch", "Raztegni"),
|
||||
("Scrollbar", "Drsenje z drsniki"),
|
||||
("ScrollAuto", "Samodejno drsenje"),
|
||||
("Good image quality", "Visoka kakovost slike"),
|
||||
("Balanced", "Uravnoteženo"),
|
||||
("Optimize reaction time", "Optimiraj odzivni čas"),
|
||||
("Custom", "Po meri"),
|
||||
("Show remote cursor", "Prikaži oddaljeni kazalec miške"),
|
||||
("Show quality monitor", "Prikaži nadzornik kakovosti"),
|
||||
("Disable clipboard", "Onemogoči odložišče"),
|
||||
("Lock after session end", "Zakleni ob koncu seje"),
|
||||
("Insert", "Vstavi"),
|
||||
("Insert Lock", "Zakleni oddaljeni računalnik"),
|
||||
("Refresh", "Osveži"),
|
||||
("ID does not exist", "ID ne obstaja"),
|
||||
("Failed to connect to rendezvous server", "Ni se bilo mogoče povezati na povezovalni strežnik"),
|
||||
("Please try later", "Poizkusite znova kasneje"),
|
||||
("Remote desktop is offline", "Oddaljeno namizje ni dosegljivo"),
|
||||
("Key mismatch", "Ključ ni ustrezen"),
|
||||
("Timeout", "Časovna omejitev"),
|
||||
("Failed to connect to relay server", "Ni se bilo mogoče povezati na posredniški strežnik"),
|
||||
("Failed to connect via rendezvous server", "Ni se bilo mogoče povezati preko povezovalnega strežnika"),
|
||||
("Failed to connect via relay server", "Ni se bilo mogoče povezati preko posredniškega strežnika"),
|
||||
("Failed to make direct connection to remote desktop", "Ni bilo mogoče vzpostaviti neposredne povezave z oddaljenim namizjem"),
|
||||
("Set Password", "Nastavi geslo"),
|
||||
("OS Password", "Geslo operacijskega sistema"),
|
||||
("install_tip", "Zaradi nadzora uporabniškega računa, RustDesk v nekaterih primerih na oddaljeni strani ne deluje pravilno. Temu se lahko izognete z namestitvijo."),
|
||||
("Click to upgrade", "Klikni za nadgradnjo"),
|
||||
("Click to download", "Klikni za prenos"),
|
||||
("Click to update", "Klikni za posodobitev"),
|
||||
("Configure", "Nastavi"),
|
||||
("config_acc", "Za oddaljeni nadzor namizja morate RustDesku dodeliti pravico za dostopnost"),
|
||||
("config_screen", "Za oddaljeni dostop do namizja morate RustDesku dodeliti pravico snemanje zaslona"),
|
||||
("Installing ...", "Nameščanje..."),
|
||||
("Install", "Namesti"),
|
||||
("Installation", "Namestitev"),
|
||||
("Installation Path", "Pot za namestitev"),
|
||||
("Create start menu shortcuts", "Ustvari bližnjice v meniju Začetek"),
|
||||
("Create desktop icon", "Ustvari ikono na namizju"),
|
||||
("agreement_tip", "Z namestitvijo se strinjate z licenčno pogodbo"),
|
||||
("Accept and Install", "Sprejmi in namesti"),
|
||||
("End-user license agreement", "Licenčna pogodba za končnega uporabnika"),
|
||||
("Generating ...", "Ustvarjanje ..."),
|
||||
("Your installation is lower version.", "Vaša namestitev je starejša"),
|
||||
("not_close_tcp_tip", "Med uporabo tunela ne zaprite tega okna"),
|
||||
("Listening ...", "Poslušam ..."),
|
||||
("Remote Host", "Oddaljeni gostitelj"),
|
||||
("Remote Port", "Oddaljena vrata"),
|
||||
("Action", "Dejanje"),
|
||||
("Add", "Dodaj"),
|
||||
("Local Port", "Lokalna vrata"),
|
||||
("Local Address", "Lokalni naslov"),
|
||||
("Change Local Port", "Spremeni lokalna vrata"),
|
||||
("setup_server_tip", "Za hitrejšo povezavo uporabite lasten strežnik"),
|
||||
("Too short, at least 6 characters.", "Prekratek, mora biti najmanj 6 znakov."),
|
||||
("The confirmation is not identical.", "Potrditev ni enaka."),
|
||||
("Permissions", "Dovoljenja"),
|
||||
("Accept", "Sprejmi"),
|
||||
("Dismiss", "Opusti"),
|
||||
("Disconnect", "Prekini povezavo"),
|
||||
("Allow using keyboard and mouse", "Dovoli uporabo tipkovnice in miške"),
|
||||
("Allow using clipboard", "Dovoli uporabo odložišča"),
|
||||
("Allow hearing sound", "Dovoli prenos zvoka"),
|
||||
("Allow file copy and paste", "Dovoli kopiranje in lepljenje datotek"),
|
||||
("Connected", "Povezan"),
|
||||
("Direct and encrypted connection", "Neposredna šifrirana povezava"),
|
||||
("Relayed and encrypted connection", "Posredovana šifrirana povezava"),
|
||||
("Direct and unencrypted connection", "Neposredna nešifrirana povezava"),
|
||||
("Relayed and unencrypted connection", "Posredovana šifrirana povezava"),
|
||||
("Enter Remote ID", "Vnesi oddaljeni ID"),
|
||||
("Enter your password", "Vnesi geslo"),
|
||||
("Logging in...", "Prijavljanje..."),
|
||||
("Enable RDP session sharing", "Omogoči deljenje RDP seje"),
|
||||
("Auto Login", "Samodejna prijava"),
|
||||
("Enable Direct IP Access", "Omogoči neposredni dostop preko IP"),
|
||||
("Rename", "Preimenuj"),
|
||||
("Space", "Prazno"),
|
||||
("Create Desktop Shortcut", "Ustvari bližnjico na namizju"),
|
||||
("Change Path", "Spremeni pot"),
|
||||
("Create Folder", "Ustvari mapo"),
|
||||
("Please enter the folder name", "Vnesite ime mape"),
|
||||
("Fix it", "Popravi"),
|
||||
("Warning", "Opozorilo"),
|
||||
("Login screen using Wayland is not supported", "Prijava z Waylandom ni podprta"),
|
||||
("Reboot required", "Potreben je ponovni zagon"),
|
||||
("Unsupported display server ", "Nepodprt zaslonski strežnik"),
|
||||
("x11 expected", "Pričakovan X11"),
|
||||
("Port", "Vrata"),
|
||||
("Settings", "Nastavitve"),
|
||||
("Username", "Uporabniško ime"),
|
||||
("Invalid port", "Neveljavno geslo"),
|
||||
("Closed manually by the peer", "Povezavo ročno prekinil odjemalec"),
|
||||
("Enable remote configuration modification", "Omogoči oddaljeno spreminjanje nastavitev"),
|
||||
("Run without install", "Zaženi brez namestitve"),
|
||||
("Always connected via relay", "Vedno povezan preko posrednika"),
|
||||
("Always connect via relay", "Vedno poveži preko posrednika"),
|
||||
("whitelist_tip", "Dostop je možen samo iz dovoljenih IPjev"),
|
||||
("Login", "Prijavi"),
|
||||
("Verify", ""),
|
||||
("Remember me", ""),
|
||||
("Trust this device", ""),
|
||||
("Verification code", ""),
|
||||
("verification_tip", ""),
|
||||
("Logout", "Odjavi"),
|
||||
("Tags", "Oznake"),
|
||||
("Search ID", "Išči ID"),
|
||||
("Current Wayland display server is not supported", "Trenutni Wayland zaslonski strežnik ni podprt"),
|
||||
("whitelist_sep", "Naslovi ločeni z vejico, podpičjem, presledkom ali novo vrstico"),
|
||||
("Add ID", "Dodaj ID"),
|
||||
("Add Tag", "Dodaj oznako"),
|
||||
("Unselect all tags", ""),
|
||||
("Network error", "Omrežna napaka"),
|
||||
("Username missed", "Up. ime izpuščeno"),
|
||||
("Password missed", "Geslo izpuščeno"),
|
||||
("Wrong credentials", "Napačne poverilnice"),
|
||||
("Edit Tag", "Uredi oznako"),
|
||||
("Unremember Password", "Pozabi geslo"),
|
||||
("Favorites", "Priljubljene"),
|
||||
("Add to Favorites", "Dodaj med priljubljene"),
|
||||
("Remove from Favorites", "Odstrani iz priljubljenih"),
|
||||
("Empty", "Prazno"),
|
||||
("Invalid folder name", "Napačno ime mape"),
|
||||
("Socks5 Proxy", "Socks5 posredniški strežnik"),
|
||||
("Hostname", "Ime gostitelja"),
|
||||
("Discovered", "Odkriti"),
|
||||
("install_daemon_tip", "Za samodejni zagon ob vklopu računalnika je potrebno dodati sistemsko storitev"),
|
||||
("Remote ID", "Oddaljeni ID"),
|
||||
("Paste", "Prilepi"),
|
||||
("Paste here?", "Prilepi tu?"),
|
||||
("Are you sure to close the connection?", "Ali želite prekiniti povezavo?"),
|
||||
("Download new version", "Prenesi novo različico"),
|
||||
("Touch mode", "Način dotika"),
|
||||
("Mouse mode", "Način mišle"),
|
||||
("One-Finger Tap", "Tap z enim prstom"),
|
||||
("Left Mouse", "Leva tipka miške"),
|
||||
("One-Long Tap", "Dolg tap z enim prstom"),
|
||||
("Two-Finger Tap", "Tap z dvema prstoma"),
|
||||
("Right Mouse", "Desna tipka miške"),
|
||||
("One-Finger Move", "Premik z enim prstom"),
|
||||
("Double Tap & Move", "Dvojni tap in premik"),
|
||||
("Mouse Drag", "Vlečenje z miško"),
|
||||
("Three-Finger vertically", "Triprstno navpično"),
|
||||
("Mouse Wheel", "Miškino kolesce"),
|
||||
("Two-Finger Move", "Premik z dvema prstoma"),
|
||||
("Canvas Move", "Premik platna"),
|
||||
("Pinch to Zoom", "Povečava s približevanjem prstov"),
|
||||
("Canvas Zoom", "Povečava platna"),
|
||||
("Reset canvas", "Ponastavi platno"),
|
||||
("No permission of file transfer", "Ni pravic za prenos datotek"),
|
||||
("Note", "Opomba"),
|
||||
("Connection", "Povezava"),
|
||||
("Share Screen", "Deli zaslon"),
|
||||
("CLOSE", "ZAPRI"),
|
||||
("OPEN", "ODPRI"),
|
||||
("Chat", "Pogovor"),
|
||||
("Total", "Skupaj"),
|
||||
("items", "elementi"),
|
||||
("Selected", "Izbrano"),
|
||||
("Screen Capture", "Zajem zaslona"),
|
||||
("Input Control", "Nadzor vnosa"),
|
||||
("Audio Capture", "Zajem zvoka"),
|
||||
("File Connection", "Datotečna povezava"),
|
||||
("Screen Connection", "Zaslonska povezava"),
|
||||
("Do you accept?", "Ali sprejmete?"),
|
||||
("Open System Setting", "Odpri sistemske nastavitve"),
|
||||
("How to get Android input permission?", "Kako pridobiti dovoljenje za vnos na Androidu?"),
|
||||
("android_input_permission_tip1", "Za oddaljeni nadzor vaše naprave Android, je potrebno RustDesku dodeliti pravico za dostopnost."),
|
||||
("android_input_permission_tip2", "Pojdite v sistemske nastavitve, poiščite »Nameščene storitve« in vklopite storitev »RustDesk Input«."),
|
||||
("android_new_connection_tip", "Prejeta je bila zahteva za oddaljeni nadzor vaše naprave."),
|
||||
("android_service_will_start_tip", "Z vklopom zajema zaslona se bo samodejno zagnala storitev, ki omogoča da oddaljene naprave pošljejo zahtevo za povezavo na vašo napravo."),
|
||||
("android_stop_service_tip", "Z zaustavitvijo storitve bodo samodejno prekinjene vse oddaljene povezave."),
|
||||
("android_version_audio_tip", "Trenutna različica Androida ne omogoča zajema zvoka. Za zajem zvoka nadgradite na Android 10 ali novejši."),
|
||||
("android_start_service_tip", "Tapnite »Zaženi storitev« ali »ODPRI« pri dovoljenju za zajem zaslona da zaženete storitev deljenja zaslona."),
|
||||
("Account", "Račun"),
|
||||
("Overwrite", "Prepiši"),
|
||||
("This file exists, skip or overwrite this file?", "Datoteka obstaja, izpusti ali prepiši?"),
|
||||
("Quit", "Izhod"),
|
||||
("doc_mac_permission", "https://rustdesk.com/docs/en/manual/mac/#enable-permissions"),
|
||||
("Help", "Pomoč"),
|
||||
("Failed", "Ni uspelo"),
|
||||
("Succeeded", "Uspelo"),
|
||||
("Someone turns on privacy mode, exit", "Vklopljen je zasebni način, izhod"),
|
||||
("Unsupported", "Ni podprto"),
|
||||
("Peer denied", "Odjemalec zavrnil"),
|
||||
("Please install plugins", "Namestite vključke"),
|
||||
("Peer exit", "Odjemalec se je zaprl"),
|
||||
("Failed to turn off", "Ni bilo mogoče izklopiti"),
|
||||
("Turned off", "Izklopljeno"),
|
||||
("In privacy mode", "V zasebnem načinu"),
|
||||
("Out privacy mode", "Iz zasebnega načina"),
|
||||
("Language", "Jezik"),
|
||||
("Keep RustDesk background service", "Ohrani RustDeskovo storitev v ozadju"),
|
||||
("Ignore Battery Optimizations", "Prezri optimizacije baterije"),
|
||||
("android_open_battery_optimizations_tip", "Če želite izklopiti to možnost, pojdite v nastavitve aplikacije RustDesk, poiščite »Baterija« in izklopite »Neomejeno«"),
|
||||
("Connection not allowed", "Povezava ni dovoljena"),
|
||||
("Legacy mode", "Stari način"),
|
||||
("Map mode", "Način preslikave"),
|
||||
("Translate mode", "Način prevajanja"),
|
||||
("Use permanent password", "Uporabi stalno geslo"),
|
||||
("Use both passwords", "Uporabi obe gesli"),
|
||||
("Set permanent password", "Nastavi stalno geslo"),
|
||||
("Enable Remote Restart", "Omogoči oddaljeni ponovni zagon"),
|
||||
("Allow remote restart", "Dovoli oddaljeni ponovni zagon"),
|
||||
("Restart Remote Device", "Znova zaženi oddaljeno napravo"),
|
||||
("Are you sure you want to restart", "Ali ste prepričani, da želite znova zagnati"),
|
||||
("Restarting Remote Device", "Ponovni zagon oddaljene naprave"),
|
||||
("remote_restarting_tip", "Oddaljena naprava se znova zaganja, prosim zaprite to sporočilo in se čez nekaj časa povežite s stalnim geslom."),
|
||||
("Copied", "Kopirano"),
|
||||
("Exit Fullscreen", "Izhod iz celozaslonskega načina"),
|
||||
("Fullscreen", "Celozaslonski način"),
|
||||
("Mobile Actions", "Dejanja za prenosne naprave"),
|
||||
("Select Monitor", "Izberite zaslon"),
|
||||
("Control Actions", "Dejanja za nadzor"),
|
||||
("Display Settings", "Nastavitve zaslona"),
|
||||
("Ratio", "Razmerje"),
|
||||
("Image Quality", "Kakovost slike"),
|
||||
("Scroll Style", "Način drsenja"),
|
||||
("Show Menubar", "Prikaži meni"),
|
||||
("Hide Menubar", "Skrij meni"),
|
||||
("Direct Connection", "Neposredna povezava"),
|
||||
("Relay Connection", "Posredovana povezava"),
|
||||
("Secure Connection", "Zavarovana povezava"),
|
||||
("Insecure Connection", "Nezavarovana povezava"),
|
||||
("Scale original", "Originalna velikost"),
|
||||
("Scale adaptive", "Prilagojena velikost"),
|
||||
("General", "Splošno"),
|
||||
("Security", "Varnost"),
|
||||
("Theme", "Tema"),
|
||||
("Dark Theme", "Temna tema"),
|
||||
("Dark", "Temna"),
|
||||
("Light", "Svetla"),
|
||||
("Follow System", "Sistemska"),
|
||||
("Enable hardware codec", "Omogoči strojno pospeševanje"),
|
||||
("Unlock Security Settings", "Odkleni varnostne nastavitve"),
|
||||
("Enable Audio", "Omogoči zvok"),
|
||||
("Unlock Network Settings", "Odkleni mrežne nastavitve"),
|
||||
("Server", "Strežnik"),
|
||||
("Direct IP Access", "Neposredni dostop preko IPja"),
|
||||
("Proxy", "Posredniški strežnik"),
|
||||
("Apply", "Uveljavi"),
|
||||
("Disconnect all devices?", "Odklopi vse naprave?"),
|
||||
("Clear", "Počisti"),
|
||||
("Audio Input Device", "Vhodna naprava za zvok"),
|
||||
("Deny remote access", "Onemogoči oddaljeni dostop"),
|
||||
("Use IP Whitelisting", "Omogoči seznam dovoljenih IP naslovov"),
|
||||
("Network", "Mreža"),
|
||||
("Enable RDP", "Omogoči RDP"),
|
||||
("Pin menubar", "Pripni menijsko vrstico"),
|
||||
("Unpin menubar", "Odpni menijsko vrstico"),
|
||||
("Recording", "Snemanje"),
|
||||
("Directory", "Imenik"),
|
||||
("Automatically record incoming sessions", "Samodejno snemaj vhodne seje"),
|
||||
("Change", "Spremeni"),
|
||||
("Start session recording", "Začni snemanje seje"),
|
||||
("Stop session recording", "Ustavi snemanje seje"),
|
||||
("Enable Recording Session", "Omogoči snemanje seje"),
|
||||
("Allow recording session", "Dovoli snemanje seje"),
|
||||
("Enable LAN Discovery", "Omogoči odkrivanje lokalnega omrežja"),
|
||||
("Deny LAN Discovery", "Onemogoči odkrivanje lokalnega omrežja"),
|
||||
("Write a message", "Napiši spoorčilo"),
|
||||
("Prompt", "Poziv"),
|
||||
("Please wait for confirmation of UAC...", "Počakajte za potrditev nadzora uporabniškega računa"),
|
||||
("elevated_foreground_window_tip", "Trenutno aktivno okno na oddaljenem računalniku zahteva višje pravice za upravljanje. Oddaljenega uporabnika lahko prosite, da okno minimizira, ali pa kliknite gumb za povzdig pravic v oknu za upravljanje povezave. Če se želite izogniti temu problemu, na oddaljenem računalniku RustDesk namestite."),
|
||||
("Disconnected", "Brez povezave"),
|
||||
("Other", "Drugo"),
|
||||
("Confirm before closing multiple tabs", "Zahtevajte potrditev pred zapiranjem večih zavihkov"),
|
||||
("Keyboard Settings", "Nastavitve tipkovnice"),
|
||||
("Full Access", "Poln dostop"),
|
||||
("Screen Share", "Deljenje zaslona"),
|
||||
("Wayland requires Ubuntu 21.04 or higher version.", "Wayland zahteva Ubuntu 21.04 ali novejši"),
|
||||
("Wayland requires higher version of linux distro. Please try X11 desktop or change your OS.", "Zahtevana je novejša različica Waylanda. Posodobite vašo distribucijo ali pa uporabite X11."),
|
||||
("JumpLink", "Pogled"),
|
||||
("Please Select the screen to be shared(Operate on the peer side).", "Izberite zaslon za delitev (na oddaljeni strani)."),
|
||||
("Show RustDesk", "Prikaži RustDesk"),
|
||||
("This PC", "Ta računalnik"),
|
||||
("or", "ali"),
|
||||
("Continue with", "Nadaljuj z"),
|
||||
("Elevate", "Povzdig pravic"),
|
||||
("Zoom cursor", "Prilagodi velikost miškinega kazalca"),
|
||||
("Accept sessions via password", "Sprejmi seje z geslom"),
|
||||
("Accept sessions via click", "Sprejmi seje s potrditvijo"),
|
||||
("Accept sessions via both", "Sprejmi seje z geslom ali potrditvijo"),
|
||||
("Please wait for the remote side to accept your session request...", "Počakajte, da oddaljeni računalnik sprejme povezavo..."),
|
||||
("One-time Password", "Enkratno geslo"),
|
||||
("Use one-time password", "Uporabi enkratno geslo"),
|
||||
("One-time password length", "Dolžina enkratnega gesla"),
|
||||
("Request access to your device", "Zahtevaj dostop do svoje naprave"),
|
||||
("Hide connection management window", "Skrij okno za upravljanje povezave"),
|
||||
("hide_cm_tip", "Dovoli skrivanje samo pri sprejemanju sej z geslom"),
|
||||
("wayland_experiment_tip", "Podpora za Wayland je v preizkusni fazi. Uporabite X11, če rabite nespremljan dostop."),
|
||||
("Right click to select tabs", "Desno-kliknite za izbiro zavihkov"),
|
||||
("Skipped", "Izpuščeno"),
|
||||
("Add to Address Book", "Dodaj v adresar"),
|
||||
("Group", "Skupina"),
|
||||
("Search", "Iskanje"),
|
||||
("Closed manually by the web console", "Ročno zaprto iz spletne konzole"),
|
||||
("Local keyboard type", "Lokalna vrsta tipkovnice"),
|
||||
("Select local keyboard type", "Izberite lokalno vrsto tipkovnice"),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", "ถูกปิดโดยเว็บคอนโซล"),
|
||||
("Local keyboard type", "ประเภทคีย์บอร์ด"),
|
||||
("Select local keyboard type", "เลือกประเภทคีย์บอร์ด"),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", "被web控制台手動關閉"),
|
||||
("Local keyboard type", "本地鍵盤類型"),
|
||||
("Select local keyboard type", "請選擇本地鍵盤類型"),
|
||||
("software_render_tip", "如果你使用英偉達顯卡, 並且遠程窗口在會話建立後會立刻關閉, 那麼安裝nouveau驅動並且選擇使用軟件渲染可能會有幫助。重啟軟件後生效。"),
|
||||
("Always use software rendering", "使用軟件渲染"),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -410,5 +410,8 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
||||
("Closed manually by the web console", ""),
|
||||
("Local keyboard type", ""),
|
||||
("Select local keyboard type", ""),
|
||||
("software_render_tip", ""),
|
||||
("Always use software rendering", ""),
|
||||
("config_input", ""),
|
||||
].iter().cloned().collect();
|
||||
}
|
||||
|
||||
@@ -717,3 +717,92 @@ pub fn get_double_click_time() -> u32 {
|
||||
}
|
||||
}
|
||||
|
||||
/// forever: may not work
|
||||
pub fn system_message(title: &str, msg: &str, forever: bool) -> ResultType<()> {
|
||||
if std::process::Command::new("notify-send")
|
||||
.arg(title)
|
||||
.arg(msg)
|
||||
.spawn()
|
||||
.is_ok()
|
||||
{
|
||||
return Ok(());
|
||||
}
|
||||
if std::process::Command::new("zenity")
|
||||
.arg("--info")
|
||||
.arg("--timeout")
|
||||
.arg(if forever { "0" } else { "3" })
|
||||
.arg("--title")
|
||||
.arg(title)
|
||||
.arg("--text")
|
||||
.arg(msg)
|
||||
.spawn()
|
||||
.is_ok()
|
||||
{
|
||||
return Ok(());
|
||||
}
|
||||
if std::process::Command::new("kdialog")
|
||||
.arg("--title")
|
||||
.arg(title)
|
||||
.arg("--msgbox")
|
||||
.arg(msg)
|
||||
.spawn()
|
||||
.is_ok()
|
||||
{
|
||||
return Ok(());
|
||||
}
|
||||
if std::process::Command::new("xmessage")
|
||||
.arg("-center")
|
||||
.arg("-timeout")
|
||||
.arg(if forever { "0" } else { "3" })
|
||||
.arg(title)
|
||||
.arg(msg)
|
||||
.spawn()
|
||||
.is_ok()
|
||||
{
|
||||
return Ok(());
|
||||
}
|
||||
bail!("failed to post system message");
|
||||
}
|
||||
|
||||
extern "C" fn breakdown_signal_handler(sig: i32) {
|
||||
let mut stack = vec![];
|
||||
backtrace::trace(|frame| {
|
||||
backtrace::resolve_frame(frame, |symbol| {
|
||||
if let Some(name) = symbol.name() {
|
||||
stack.push(name.to_string());
|
||||
}
|
||||
});
|
||||
true // keep going to the next frame
|
||||
});
|
||||
let mut info = String::default();
|
||||
if stack.iter().any(|s| {
|
||||
s.contains(&"nouveau_pushbuf_kick")
|
||||
|| s.to_lowercase().contains("nvidia")
|
||||
|| s.contains("gdk_window_end_draw_frame")
|
||||
}) {
|
||||
hbb_common::config::Config::set_option(
|
||||
"allow-always-software-render".to_string(),
|
||||
"Y".to_string(),
|
||||
);
|
||||
info = "Always use software rendering will be set.".to_string();
|
||||
log::info!("{}", info);
|
||||
}
|
||||
log::error!(
|
||||
"Got signal {} and exit. stack:\n{}",
|
||||
sig,
|
||||
stack.join("\n").to_string()
|
||||
);
|
||||
system_message(
|
||||
"RustDesk",
|
||||
&format!("Got signal {} and exit.{}", sig, info),
|
||||
true,
|
||||
)
|
||||
.ok();
|
||||
std::process::exit(0);
|
||||
}
|
||||
|
||||
pub fn register_breakdown_handler() {
|
||||
unsafe {
|
||||
libc::signal(libc::SIGSEGV, breakdown_signal_handler as _);
|
||||
}
|
||||
}
|
||||
|
||||
36
src/platform/macos.mm
Normal file
36
src/platform/macos.mm
Normal file
@@ -0,0 +1,36 @@
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
#import <AppKit/AppKit.h>
|
||||
#import <IOKit/hidsystem/IOHIDLib.h>
|
||||
|
||||
// https://github.com/codebytere/node-mac-permissions/blob/main/permissions.mm
|
||||
|
||||
extern "C" bool InputMonitoringAuthStatus(bool prompt) {
|
||||
if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_15) {
|
||||
IOHIDAccessType theType = IOHIDCheckAccess(kIOHIDRequestTypeListenEvent);
|
||||
NSLog(@"IOHIDCheckAccess = %d, kIOHIDAccessTypeGranted = %d", theType, kIOHIDAccessTypeGranted);
|
||||
switch (theType) {
|
||||
case kIOHIDAccessTypeGranted:
|
||||
return true;
|
||||
break;
|
||||
case kIOHIDAccessTypeDenied: {
|
||||
if (prompt) {
|
||||
NSString *urlString = @"x-apple.systempreferences:com.apple.preference.security?Privacy_ListenEvent";
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];
|
||||
}
|
||||
break;
|
||||
}
|
||||
case kIOHIDAccessTypeUnknown: {
|
||||
if (prompt) {
|
||||
bool result = IOHIDRequestAccess(kIOHIDRequestTypeListenEvent);
|
||||
NSLog(@"IOHIDRequestAccess result = %d", result);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -32,6 +32,7 @@ extern "C" {
|
||||
fn CGEventGetLocation(e: *const c_void) -> CGPoint;
|
||||
static kAXTrustedCheckOptionPrompt: CFStringRef;
|
||||
fn AXIsProcessTrustedWithOptions(options: CFDictionaryRef) -> BOOL;
|
||||
fn InputMonitoringAuthStatus(_: BOOL) -> BOOL;
|
||||
}
|
||||
|
||||
pub fn is_process_trusted(prompt: bool) -> bool {
|
||||
@@ -47,6 +48,13 @@ pub fn is_process_trusted(prompt: bool) -> bool {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_can_input_monitoring(prompt: bool) -> bool {
|
||||
unsafe {
|
||||
let value = if prompt { YES } else { NO };
|
||||
InputMonitoringAuthStatus(value) == YES
|
||||
}
|
||||
}
|
||||
|
||||
// macOS >= 10.15
|
||||
// https://stackoverflow.com/questions/56597221/detecting-screen-recording-settings-on-macos-catalina/
|
||||
// remove just one app from all the permissions: tccutil reset All com.carriez.rustdesk
|
||||
|
||||
@@ -556,27 +556,39 @@ pub fn handle_mouse_(evt: &MouseEvent) {
|
||||
en.mouse_move_to(evt.x, evt.y);
|
||||
}
|
||||
1 => match buttons {
|
||||
1 => {
|
||||
0x01 => {
|
||||
allow_err!(en.mouse_down(MouseButton::Left));
|
||||
}
|
||||
2 => {
|
||||
0x02 => {
|
||||
allow_err!(en.mouse_down(MouseButton::Right));
|
||||
}
|
||||
4 => {
|
||||
0x04 => {
|
||||
allow_err!(en.mouse_down(MouseButton::Middle));
|
||||
}
|
||||
0x08 => {
|
||||
allow_err!(en.mouse_down(MouseButton::Back));
|
||||
}
|
||||
0x10 => {
|
||||
allow_err!(en.mouse_down(MouseButton::Forward));
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
2 => match buttons {
|
||||
1 => {
|
||||
0x01 => {
|
||||
en.mouse_up(MouseButton::Left);
|
||||
}
|
||||
2 => {
|
||||
0x02 => {
|
||||
en.mouse_up(MouseButton::Right);
|
||||
}
|
||||
4 => {
|
||||
0x04 => {
|
||||
en.mouse_up(MouseButton::Middle);
|
||||
}
|
||||
0x08 => {
|
||||
en.mouse_up(MouseButton::Back);
|
||||
}
|
||||
0x10 => {
|
||||
en.mouse_up(MouseButton::Forward);
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
3 | 4 => {
|
||||
|
||||
@@ -582,6 +582,14 @@ pub fn is_installed_daemon(_prompt: bool) -> bool {
|
||||
return true;
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn is_can_input_monitoring(_prompt: bool) -> bool {
|
||||
#[cfg(target_os = "macos")]
|
||||
return crate::platform::macos::is_can_input_monitoring(_prompt);
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
return true;
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn get_error() -> String {
|
||||
#[cfg(not(any(feature = "cli")))]
|
||||
|
||||
Reference in New Issue
Block a user